JSSpeccy v20091121

November 21st, 2009

Yesterday’s Full Frontal javascript conference turned out to be the ideal setting to compare notes with Ben Firshman of JSNES fame on the finer points of implementing emulators in Javascript – so this new release of JSSpeccy is the natural consequence of that. I’ve put in an optimisation which might possibly be a speed boost on Chrome (only writing bytes to ImageData when absolutely absolutely necessary), and the much-needed ability to load your own snapshot files, using the little-known getAsBinary method on file upload objects. (Unfortunately Firefox 3.5 is the only browser which supports it right now, but it looks like it may be in the process of getting the official W3C blessing right now.) And since I was on a roll, on the train back I implemented tape loading traps and the ability to load .TAP files (again, only on Firefox 3.5). Wahey!

@speccynews – ZX Spectrum news on Twitter

November 14th, 2009

Recognising that there was a gap to be filled in news reporting for the ZX Spectrum community (since other commitments have pulled icabod away from regularly updating raww.org, and other contributors – myself included – have not exactly rushed in with the same fervour), I’ve set up the Speccynews Twitter account.

The idea is that it’s a lower-maintenance way of keeping on top of developments in the Speccy world, as something that can be updated on the spot as and when you encounter a story, with no obligation (indeed, no way at all) to write a long erudite commentary on every news story. Following an encouraging call for volunteers on WOS forums, I set the service up through CoTweet, and it’s been running successfully for a couple of weeks now. More contributors would be very welcome, especially non-UK people who can share their perspective of those wonderful developments in Spain, Russia, Poland, the Czech Republic and elsewhere which are being overlooked by the English-speaking crowd. Drop me an email / tweet with your email address if you’re interested, and I’ll send a CoTweet invite in your direction. No previous Twitter experience necessary!

(And, of course, all feedback and story submissions will be gratefully received via Twitter itself – tweet them to @speccynews.)

Midibeep

October 29th, 2009

Last week I posted possibly the most tedious Basic type-in listing ever to World Of Spectrum:

5 BEEP 0.212765, 20; 10 BEEP 0.106383,19...
(continues for approx 1500 more lines)

Anyone typing it in in its entirety would be rewarded with this:

Download midibeep_minute_waltz.mp3

Not bad for an evening’s work. Mind you, I did take an ever so teeny shortcut, by writing a Ruby program to convert a MIDI file to BEEP format. (Any .mid file will do, although ones with a single instrument will survive the rather primitive selective-note-butchering process better. Oh, and anything much longer than this one will exceed the 48K Spectrum memory…) And now you can try it out too:

JSSpeccy v20090929 (Don’t-Mess-With-Geeks Edition)

September 29th, 2009

I wasn’t really planning on developing JSSpeccy further, because I didn’t consider it a serious project with a future. However, it turns out that someone else did. Enough to rip it off wholesale and pass it off as their own work on the iPhone app store for £1.29 a pop, no less. Yes, thanks to the detective work of Phil Kendall we now know that ZXGamer, the much heralded Spectrum emulator for the iPhone, was nothing more than JSSpeccy with a fancy title screen tacked on. (Which of course is a blatant violation of the GPL, and being pure Javascript, would explain why it ran at less than the speed of a real Spectrum on a 600 MHz device, and why it was overwhelmingly rated at one out of five stars. Epic fail.) It’s been pulled from the app store now – so while ZXGamer is gradually disappearing from the internet, it’s time to redress the balance a bit.

A new version of JSSpeccy is out. It doesn’t run at full speed on an iPhone either (although it positively speeds along on recent versions of Safari on real computers), but it does boast the following changes:

  • GPL v3 licenced, with prominent notices to make it clear that playing silly buggers like the above will not be tolerated (even if they do include source…)
  • A bit of speed optimisation (about 15% faster maybe)
  • A pimped-up user interface with shiny icons
  • And most relevantly, entirely controllable via iPhone / iPod Touch touchscreen. In principle. (If you’re expecting an immersive gaming experience, you’ll be disappointed.)

So there you go – probably the best Spectrum emulator for the iPhone ever. And it’s free.

Spectrumori-on

September 14th, 2009

This 1K intro for the Spectrum (which received 3rd place in the oldskool demo competition at Sundown 2009) was inspired by Bill Bailey. No, really. His current live show features a spot on the Yamaha Tenori-on, which through the medium of “getting someone in the audience to splurge their hand on it”, he demonstrates that it can’t fail to play something nice.

This makes it a good excuse for some experimentation with generative music. The secret is in the scale – it’s equivalent to playing only the black notes on a piano, and presumably has roots in oriental music (I previously rediscovered it while working on Haiku). To make it into something like a proper demo, rather than just a throwaway routine, I added a bit of subtle progression Cyberpunks Unity style, so it drifts in and out of randomness as the graphical effects change. It even has a proper ending…

In recent months Yerzmyey has been pushing for the revival of the 16K Speccy as a platform, so I’m pleased to announce that this demo is – so we believe – the third ever demo to run on it.

Sleeper – mapping European night trains

June 10th, 2009

It’s now been 10 months and 10 demo parties since I last saw the inside of an airport (with plenty more to come over the next couple of months… parties that is, not airports), and for any eco-conscious European traveller like me, knowing which sleeper trains to catch is the key to happy travels. So, it’s a bit of a shame that there’s no single website you can go to to find out the best sleeper train to get to European Destination X. Sure, Seat 61 is a fantastic resource for finding out how to get to your country of choice, but you can never be sure whether you’d get better results by heading just across the border, or tweaking your journey times slightly…

So, in a classic case of building a website to scratch a personal itch, and not wanting to let niggly licencing issues get in the way of a cool idea… Sleeper is my new website aimed at searching and mapping the European sleeper train network in its entirety. It’s been put together with Ruby, Rails (gosh, that’s rather apt isn’t it…), Geokit, Google Maps, Hpricot and my own freshly open-sourced Bahn library for snarfing data from Deutsche Bahn’s website, and hopefully it can give you a fuller picture than ever before of what actually exists in the wonderful world of sleeper trains. Right now it stops short of providing one overall definitive map of the network (it would probably crash your browser if I tried plotting it on Google Maps), but that’s on the todo list.

Ode To Claire / Snakebite

June 10th, 2009

A couple of fast-made Spectrum releases for last month’s most excellent Outline demo party. Ode To Claire is a curious little 128 byte intro, using a trick I’ve been wanting to try out for ages. It’s not exactly a fast-paced action extravaganza, but it does fit 150-odd characters of avant-garde poetry, the printing routine, and a demo effect into 128 bytes of code. Working out how is an exercise for the reader (and I’m quite interested to know whether the secret is immediately obvious to anyone who’s at all familiar with the Spectrum…)

On the musical front, Snakebite is a chiptune with a middle-eastern vibe, modelled after every Turkish Eurovision entry ever. It got third place in the competition, and originally they weren’t going to give out a third prize, but they had some spare food left over on the Saturday night, so I won a jar of sausages. Best. Prize. Ever.

Download gasman_-_snakebite.mp3

Goldfinch: an open software stack for mass storage on the Spectrum

May 29th, 2009

Yep, another pet project of mine to compete with all the others I’ve started. But hey, if I didn’t get distracted by things like this I’d just get distracted by Youtube and sudoku instead…

Goldfinch1 is an attempt at remedying the “walled garden” syndrome in the world of ZX Spectrum mass storage – there are plenty of software projects doing exciting things with IDE and CompactFlash and ethernet on the Speccy, on top of multiple competing hardware interfaces, and for one reason or another they end up having ‘baggage’ that prevents the casual tinkerer from properly harnessing that existing work for their own stuff – so writing a program that reads ’some file’ off ’some disk’ is a bigger deal than it ought to be. The reasons for this might be technical (the disk access code is too tightly coupled to a Basic extension, or an emulation layer, or something else, and only one person in the world understands the whole package), legal (licencing problems prevent the source code from being released), or the entire project being locked away in perpetual vapourware hell (ahem).
Read the rest of this entry »

We’re independent, honest

March 25th, 2009

McDonald’s courts long-term jobless

Spokesman for Leeds Metropolitan University on the radio: “Macdonalds paid us to perform an independent study…”

Bollocks they did.

If you were paid for it, it’s not independent. Getting money for something is the exact definition of “dependent”. Call it impartial, unbiased or neutral if you like. It might even be true. But “independent” actually means something real and verifiable that backs up your claim to be impartial. It doesn’t mean “we’re unbiased because we say so, honest”, and when you start using the word as a free pass to avoid scrutiny, you go from being possibly biased to actually lying about the fact. Which is not good for your credibility as a research group. Stop polluting our language, you tossers.

Deploying a Rails app without a database using Capistrano

March 5th, 2009

So you’ve got a simple-but-devastatingly-clever Rails app that doesn’t use a database, you’ve dutifully added the line to config/environment.rb to disable the ActiveRecord framework, and now you’re ready to unleash it to the world, using Capistrano for deployment. But when you run ‘cap deploy:cold’, it merrily tries to run database migrations and fails with “uninitialized constant ActiveRecord”. How do you make Capistrano behave?

A simple question, with a simple answer, but one which is curiously absent from the internet. Googlejuice ahoy!

Stick this at the bottom of config/deploy.rb:

namespace :deploy do
	desc "Override deploy:cold to NOT run migrations - there's no database"
	task :cold do
		update
		start
	end
end