FAWM 2011 retrospective / Geek Pop

March 2nd, 2011

February has been and gone, bringing with it my now customary jaunt into the world of February Album Writing Month. I fell some way short of the 14 song target this time, which I’ll blame on considerably increasing my production values this year, and not at all on being a lazy git.

I’m holding back a few of the songs from general release, because they’ll be going towards this month’s exciting musical happening: the Geek Pop virtual festival! Yes, all the greatest musical minds from the worlds of science and technology will be gathered in one place on the internet – and somehow I’ve ended up being one of them, performing on the Comical Flask stage alongside such luminaries as MJ “Hey Hey 16K” Hibbett. And because it’s a virtual festival, you don’t even need to drink beer out of a nasty plastic beaker or walk two miles to the nearest shower. Hurrah! Keep your browsers peeled (or something) at the Geek Pop website for the big unveiling on March 11th, or mosey on down to Wilton’s Music Hall, London on the 10th for the live launch gig.

In the meantime, here’s some almost-as-good-or-equally-good-but-not-as-geeky music I also wrote last month…

Avogadro’s Number by Matt Westcott

Big Conversation by Matt Westcott

In The Future by Matt Westcott

(Looking for the lyrics? Get them at my FAWM profile page)

The Speccy2010: A Complete Guide For Non-Russian-Speakers

February 26th, 2011


2011-03-10: Have had a report that Syd is no longer able to send boards outside the Ukraine due to a change in the law which came in this week. Trying to confirm the details right now, but clearly this is a major downer if it is indeed true :-( Obviously, Syd is the best person to advise on the current state of orders. (And if you have any more news on the situation, please pass it on to me via comments or email)

2011-03-11: A later report from gringo128 (comment below) suggests that this only affects the EMS delivery service – Syd is now sending boards by standard mail, which is a bit slower (two weeks rather than 5-10 days) but still offers online tracking (and is hopefully adequately insured too, but please check before ordering). Hoping I can bring you news of their successful arrival some time soon…

2011-03-16: The good news: Another Speccy2010 board has safely arrived in the UK by DHL, and Craig, the lucky recipient, has made a follow-up video of unboxing number two. The bad news: The current batch has now sold out, and Syd has stated that he’s decided not to send boards abroad in future, due to the complications this time round. For now all we can do is wait for the situation to change, or someone to step in to take on the role of international distributor (could that be you, dear reader…?). In the meantime, keep an eye on zx.pk.ru and here for news of any new developments.

Updated 2011-03-04: English translation of the Speccy2010 FAQ published

Updated 2011-03-05: Added info about troubleshooting over the serial port.

This is the story of how I got hold of a Speccy2010 board, one of the most exciting developments to hit the Spectrum world in recent times. It’s a Spectrum clone developed in the Ukraine, which replicates the original 48 and 128K Spectrums, along with the Pentagon and Scorpion models popular across Russia. It connects to a TV or monitor by composite video, S-Video or VGA, and lets you load emulator images (tape, snapshot, or TR-DOS disk) from an SD card. The whole thing is the size of a packet of crisps, and is built around an FPGA programmable logic chip which can be reflashed with new firmware versions (again via the SD card) to gain new capabilities as and when they are developed. In short, it’s exactly what people are asking for whenever they post to a Spectrum web forum asking “Why doesn’t someone build a next-generation Spectrum?” And you can buy one, today.

Tempted? Well, here’s the deal. This isn’t mass-produced commodity hardware – Syd, the developer, is building these by hand in small runs – so don’t expect any formal commercial support or handy “enter your credit card details here” online order forms. (Don’t worry – ordering isn’t difficult, just… different.) The boards are fully tested before despatch, and Syd will try to help with any issues you have with it (as will I), but beyond that, it’s sold “as is” – there’ll be no refund if it turns out to be incompatible with your monitor, or doesn’t run your favourite game or whatever. The whole thing cost me £150 (175 EUR, 240 USD) including all delivery / transaction fees, and on top of that you might pay something like £20-30 for the power supply, keyboard, cables, SD cards and other accessories, depending on what you have lying around already. So, it’s somewhere above the “geeky impulse purchase from Firebox” price range you may have been hoping for, but still a very decent price for a piece of kit for a hobby you’re half-way serious about. If your sense of adventure doesn’t stretch this far, stop reading now. For the rest of us, here’s what you have to do…

Read the rest of this entry »

London Spectrum meetup, 12 February 2011

January 5th, 2011

It’s time once again for the denizens of comp.sys.sinclair and World Of Spectrum (along with anyone else with an unhealthy obsession with Sinclair ZX Spectrums) to meet up to discuss new developments, old games, nostalgia, crisps, beer and everything else in the world of retro-computing.

The date: Saturday 12th February 2011, from 2pm. The venue: The Gypsy Moth, Greenwich. Come along one and all!

Burton’s Wagon Wheels (Are Smaller Than They Used To Be)

December 14th, 2010

In one of my rare non-FAWM outings, I’ve written a new song. A protest song. About biscuits.

Burton’s Wagon Wheels (Are Smaller Than They Used To Be) by Matt Westcott

Read the rest of this entry »

jasmid – MIDI synthesis with Javascript and HTML5 audio

November 19th, 2010

The executive summary: At last weekend’s Barcamp London 8, I presented a talk entitled “Realtime audio generation for the web (because there’s not enough MIDI on webpages these days”. In it, I went over the current options for generating audio within the browser, and presented my latest hack in that direction, jasmid: a Javascript app that can read standard MIDI files, render them to wave audio (with, at present, some very simple waveforms) and play them directly from the browser, completely independently of your OS’s MIDI support.

Read on for the complete notes/transcript of the talk (in hopefully more coherent form than the talk itself – next time I promise to spend less time on the flashy demo and more time figuring out exactly what I’m going to say…)
Read the rest of this entry »

Fake Plastic Cubes

September 13th, 2010

It was internally nagging me all summer that I ought to release something at Sundown, but apart from some brief excitement around a brainwave I had involving three iPhones, Javascript and some cardboard (which sadly didn’t work out in practice), it didn’t really amount to much. Then Evoke happened, and inspired me to decide that, in the words of Haujobb’s invitation, I should make a demo.

Or, to be precise, a Javascript 64K intro. Unfortunately, there was only one week to Sundown by that point, and in a classic case of demoscene project management fail, I spent most of that week building an audio framework, leaving about 24 hours to write the actual demo. The end result is 9K of rather-flaky-performing code, hastily improvised plinky ambient music, and dreadful coder art (except to the extent that I’ve ripped it off from Fairlight demos).

Still, even if the execution this time didn’t work out, I think it’s been a worthwhile exercise in bringing pieces together. Jacob Seidelin’s PNG compression hack (where JS code is stored in a PNG image to take advantage of the compression, then unpacked on a canvas using getImageData) has created a bit of a buzz in the JS development world, but this is the first time it’s been used in an actual demoscene production (which is surprising, given how the demoscene is the spiritual home of size-coding hacks). Ben Firshman’s JSNES has been dynamically generating audio for some time now, ardently chasing the moving target that is Mozilla’s Audio Data API (with a trusty Flash snippet as a fallback), and Mathieu ‘p01′ Henri was experimenting with softsynths long before then. Not even my own code is safe from this cherry-picking exercise of doom – the 3D routines are a mishmash of Gallions Reach / Canvastastic (for the lighting model) and Antisocial (for the full scene / movable camera handling). Finally, node.js makes a cameo appearance, because having an actual web server on hand makes development go a lot smoother.

Put them all together and you have the ingredients for a delicious 64K Intro cake. This time it came out a bit half-baked, but I’m passing on the recipe in the hope that someone else can make it work:

Migrating Ruby Twitter apps to OAuth

August 14th, 2010

Migrating Twitter API apps from basic authentication to OAuth is up there with hoovering the bathroom and taking out the recycling in the “irritating chores to put off for another day” stakes. However, Twitter’s announcement that they’re dropping basic authentication support at the end of this month has made this task altogether more urgent, like an unexpected visit from the mother-in-law.

If you’re using the Ruby Twitter gem by John Nunemaker, you’ll be happy to learn that it supports OAuth. You’ll be less happy to see that the example code on the homepage merrily omits the difficult part:

# NOT SHOWN: granting access to twitter on website
# and using request token to generate access token

If your Twitter app is of the simple ‘bot’ variety, with a single dedicated account where everything happens, and no need for end users to authenticate against it, then most of the example code and documentation floating around the internet is overkill, sending you down the path of sessions and callback URLs, when all you really want to know is: what do I put in the ‘register an application’ form? How do I get hold of these tokens? And what do I do with this PIN code it’s just given me?

I eventually found a blog post at BeefyApps which cleared things up immensely, and so I’ve now reshuffled their code snippet into a mini command line utility which will spit out those all-important tokens and tell you how to use them.

twitter_oauth_setup.rb on gist.github.com

Oh hai, I’m WordPress 3.0.

June 30th, 2010

We offer instructions for upgrading your 2.x WordPress install via Subversion, so we certainly wouldn’t do anything silly between versions like deleting the entire directory that contains the ‘default’ theme, leaving your blog as a blank page with no indication of what’s gone wrong.

Oh, you found the ‘appearance’ tab in the admin backend? Ah, that’s my cue to notice that your website is broken, and instantly replace it with a nice picture of some trees. You like trees, don’t you? They’re very pretty, and I think sometimes you’ve got to put that above more practical concerns like not suddenly breaking everyone’s website.

What, you want your old theme back? Aww. OK, here it is in our themes repository. Oh, sure, I could just tell you where you can download it, but I have a better idea. Let me install it automatically for you instead! Just give me your FTP password, and everything will be juuuuust fine.

No, I don’t think there’s a plugin that will let you punch programmers in the face. Why do you ask?

Date Horse, 24th June

June 21st, 2010

A quick heads-up that I’ll be playing my first ever proper not-just-an-open-mic gig this Thursday night as part of the Date Horse comedy and music night at the Vauxhall Griffin, London. Come along for some silly songs about Paris Hilton’s pet monkey and much more (and RSVP on the Facebook event)…

JSModPlayer – a Javascript .MOD player

May 23rd, 2010

The epic Pacman 30th anniversary Google Doodle, along with Ben Firshman’s dynamicaudio.js library for dynamically generating audio, collectively persuaded me that I haven’t done any mad Javascript hacking for far too long. My response to this state of affairs is JSModPlayer, a player for .MOD music files (the mainstay of Amiga and PC sample-based music circa 1990).

So far it only implements a subset of the possible sample effects, and it demands a very fast Javascript engine – luckily all the new breed of browsers are pretty competitive at that now. Even so, unless your CPU is an absolute behemoth, it’ll probably struggle to keep up – the audio output is fixed at 44100Hz, and that’s rather a lot of numbers for Javascript to crunch, especially when the MOD file gets up to 16 or more channels. Which, amusingly enough, is exactly the situation we had back when we were using Gravis Ultrasounds on 386es. Hurrah for progress!

Update 2010-06-08: Oops. In the process of testing how Safari 5 shapes up, I discovered a rather silly oversight: the audio buffering routine was set up to never use more than 10% of CPU. Now that I’ve fixed it, it turns out that Chrome and Safari (at least) have no trouble at all playing Jugi’s Dope theme in its 28-channel glory. (However, taking the brakes off the buffering does mean that we can’t reliably pause the audio any more. A small price to pay, I think you’ll agree.)