It's Been A Long Time...

But I’ve not just been sitting on my arse playing GTA IV, oh no. Well, not all the time anyway. The reason I’ve not posted anything (or been particularly active on the web in general) is that I’ve been damn busy. Most importantly, Catherine kindly gave birth to our first son, Max, back in March which has been quite a change and sapped a lot of my hacking time. I have to say though, despite the horror stories that many veteran parents like to feed you, our experience has only been good. In fact, not good, great. I recommend this reproducing lark.

Secondly, I’ve been hacking away nearly full time on one of my favourite projects to date, Peoples Music Store with LRUG stalwart and renowned anarchist, James ‘Bringing London To Its Very Knees’ Darling which is maturing nicely under private beta as we speak. Peoples Music Store is a great idea from some of the guys behind whereby users can construct and customise their very own download store from the music they love then get free music themselves if people buy from their store. It’s a great way to both promote and show off you’re own music taste or in depth genre knowledge and find new music from stores you trust while getting some free digital swag along the way. I’m probably not explaining it well so just drop me a line if you want and invite and the site will explain itself. Public launch is coming in a month or so.

Building Peoples Music Store has been a great learning experience. We run the site on a cloud computing platform and from content ingestion to audio preview delivery to application servers to download packaging and delivery everything has been designed to scale horizontally – and I’m pretty proud of it. Thin, Rack, Sphinx, God, Starling and a whole load more cool open source gear is all running in there. I really need to get to blogging some of what I’ve discovered about working with Rack. It simply is the dog’s bollocks.

So, enough of the excuses. What’s on the horizon?

Speaking and Conferences

I’ve taken some time of speaking and conferencing in general so as to spend lots of time with Catherine and Max but come September I’m restarting the conference trail. Firstly, I’m doing a presentation and a tutorial (with Jarkko Laine) at RailsConf Europe all about JavaScript related Rails stuff and I’m likely to have a slot at @media Ajax as well. Also, I’ll be heading to dConstruct as is the tradition.

Hacking and Open Source Business

Although I’ve not commited to Low Pro or Low Pro JQ for a good while now they are both very much alive. I’ve simply not come across anything that I’ve felt the need to add for a while. If you have any suggestions or patches do let me know. I’ve actually got time to commit them at the moment. Another little project that I’m hoping to get off the ground is called Evil which is going to contain lots of Merb/Rack goodness. The first by-product of which is the merb_openid gem for consuming OpenID in Merb apps (it’s still not quite production ready though so don’t go using it just yet). I’ll let you know what Evil actually does when (or if) I actually get something working.

So, that’s all for now. Just a bit of a status report. I promise I’ll get some useful content written that you actually care about very soon. Dunk Low Dunks

Thanks Catherine! The real things are on there way in a couple of weeks. Happy Christmas, Peeps.

Flash vs. Ajax: It's time to expand your toolbox

Flash has some really quite incredible features that we struggle with implementing with HTML/CSS/JS: Sound, Dynamic vector drawing, Sockets, local storage, video. I could go on. Why the hell are we struggling with <canvas> and VML? Comet is essentially a hack while XMLSockets are built in to Flash…and then you have Red 5. To add to this, Apollo has just been released which is looking pretty interesting. See what I mean?

The sweet spot for JavaScript and Ajax has always been for those small, progressive enhancements rather than for creating rich interfaces. It seems to me that the more you head in that direction with JavaScript the more serious limitations you encounter. Browser JavaScript is never fast, has memory leak issues, browser bugs, CSS bugs and all manner of other tom foolery that, when you get to the stage of building something like for Google Maps get’s really time consuming and messy. There are many efforts (WHATWG, Tamarin etc etc) that are working toward solving many of these problems but for now and for the foreseeable future we are stuck with em. This, I think, is when it’s time to bring out Flash. Not for the whole app of course, but used in conjunction with HTML/CSS/JS. Flash however is not without it’s problems.

I lost interest with Flash mainly for these reasons:

  • Monolithic applications: Flash apps tend to exist at one URL, fail to respond to the back button well and generally work within their own environment in the browser rather than working with the browser.
  • Bad programming environment: Working on a Flash app with more than one person was always a pain in the arse. Because a lot of the app was contained inside one or more FLA files which could only be opened by one person at a time and it was a binary file version control was a pain.
  • Controls didn’t work enough like browser controls: The in-built components helped a bit but Flash select boxes, scroll bars and other widgets just didn’t look or act the same. Bad for usability.
  • Accessibility no-no: Previously SWFs where essentially a black box to assistive technologies and event MX components seemed to have trouble with keyboard focus and tabbing. * Limited and tedious interface with JavaScript: Getting data in and out of the SWF was possible but never easy.
  • ActionScript is heading toward Java: Oh man, don’t get me started. As ActionScript develop it becomes less and less dynamic. `You get native classes and packages but type annotations? I suppose you get a performance boost but really. Static types are for stupid people…we don’t need em
  • It’s not open source

After re-examining these many are solvable, avoidable or have been solved recently. Solving the first problem is probably the most interesting of the lot. We all know the internet works best when it’s used as a linked web of resources. To do this each resource in the flash application needs it’s own URL even if these all just point to the same SWF. I’ve not seen this done but I’ve got some ideas on how this could be achieved. What I’m thinking is that rather than a Flash app having one end point, eg. it can have an end point for each document that can be favourited, linked to and all that shit eg: If we architected an application like this it would be easy to use the end point to provide different formats eg. etc.

The bad programming environment problem is solved for us. Flex 2 is all text based and although a bit XMLy for my liking isn’t bad. You can even get a Textmate bundle for it. Most importantly you can lob it all in version control. Better. Accessibility has also been greatly improved of late, I don’t yet know the details, but I do know it’s no longer a black box.

The interface to JavaScript has been improved too with the Flash/Ajax bridge (stupid name aside) but I think this can be improved further. It’s all a bit heavy on code and complex but sure it can be streamlined some. Unfortunately though, ActionScript continues it’s journey away from the land of dynamism but on the upside you do get E4X and all kinds of other nice stuff and we can’t do much about it. Even JS 2 is going this way.

Then finally, there’s the whole open source thing. Where do we start? I’ll start by saying that I’m not a religious person neither spirtually or technically. I’m a pragmatist and while I normally work in open source with its many benefits I can take a bit of proprietary action if need be. I’ve heard many members of the web standards and ajax communities basically strike Flash off on this point alone which to me is just insane. It may be proprietary but it’s got a great community around it (and a great OS community for that matter) so that works for me. No, it’s not a standard, but really, what have standards done for us anyway? The power of the ‘web standards’ movement was, in my opinion, more about moving back to semantic HTML and the separation of content and presentation rather than about valid code and standards anyway. I say drop your prayer book and use the best tool for the job.

So yeah, I’ll be looking in to Flash and Flex then. I might even write about it. But then it seems other people already are which is cool. So what do y’all reckon? Am I barking up the wrong tree?

PS. That comment about Static typing was totally unqualified and slightly stupid statement. I like it though. It’s the kind of thing you’ll catch me saying after 5 pints at Pub Standards.

Coding Like A Bitch: Mephisto Plugins Upgraded and Fridaycities/EventWax Beta Biznizz

Just a quick note to say that I’ve just upgraded to the newest version of Mephisto which has forced me to update my Mephisto plugins to work with the new updates to Liquid. Sorry for being slack on that. I’ve had a ton of email about it but hadn’t had the chance to fix these since my new venture into the freelance world has started.

In unrelated news, most of my coding effort has been going into a site called Fridaycities which is a cool site where Londoners ask questions and get insider info about all things London-ish. It’s great to browse around…Apparently there’s an Elvis Chinese restaurant on Old Kent Rd and a naked disco in Vauxhall. Who’d a thunk it? It’s still in very early stages at the moment but the FC people have got big plans and myself and Mr Tanner are beavering away on it as we speak. It’s invite only but you can check out the posts without registering so go have a squizz.

Finally, EventWax has been going great guns. It’s great to see a load of events running on there including @media2007 and BarCampLondon2. We been collecting lots of feedback and slowly introducing features but there’s going to be some cool changes in the near future so keep an eye out there.

Finally, I’m stacking up a few patches for Prototype and Rails that I need to finish up. Hopefully I’ll get chance to do that soon. Writing patches for Rails is weird. I tend to find myself spending 20 seconds on getting the patch done and 3 hours trying to bash tests together. Does anyone else find writing tests for the Rails core a bit of a pain in the arse?

Misc Archive RSS Feed

Misc Linkage