Trains, Tracks and Times
After Transport For London released their new live departures API, and after Matthew Somerville made a Thing with it, I felt I had to have a go.
After Transport For London released their new live departures API, and after Matthew Somerville made a Thing with it, I felt I had to have a go.
For at least a year now, people have been suggesting to me that South should be in Django core.
The first bugfix release of South is now out, and there's plenty of fixes.
After months of hard work, refactoring, blood, sweat, tears, and improvement, South 0.7 is ready.
It's that time of the year again, when a new South release rears its well-refactored, database-independent head.
During the planning of our Christmas card at work this year, a mad idea came up. Do we ignore mad ideas? No, we tackle them head-on.
In my neverending quest to save the time of those using RDBMSen, South 0.6.2 is released.
In my opinion, there's just not enough Subversion servers on the internet.
South 0.6.1 is now available for public consumption; it fixes quite a few bugs.
It is with great pleasure (and a measurable sense of relief) that I announce the release of South 0.6, a new release bringing quite a few new features, although most of them aren't immediately obvious.
After a long few months, during which I've increased my recommendations to run off trunk, South 0.6 is almost here.
I had a lot of interesting chats with people about South last week at EuroDjangoCon, and several eyebrows have been raised at me both parsing models and then storing their definitions as dicts.
For those interested, the slides from my migrations talk at EuroDjangoCon are up. I believe the videos will be around soon.
I'm pleased to announce the release of South 0.5; this has been a long and exciting release, with many new features...
Have you ever felt the burning need to ride aimlessly aimfully around the London Underground? Well, then I have good news for you.
I've always been somewhat envious when seeing the various sites with nice maps of crime, prices and other things for non-UK regions.
Welcome to the new aeracode.org, now with a bit more blue, and added Unantistalker™ technology.
Today I took delivery of one USB Panic Button; I've been wanting one of these for a very long time, and so I'm pleased to finally have one. I don't necessarily have a need to panic a lot, but there's a lot of times a big red button is just so satisfying (launch events, test runs, and so on).
Unfortunately, it comes with a Windows driver CD and the only Linux script I could find was a Perl script. Since I'm not the greatest fan of Perl, and I wanted to try some USB code, I've made my own driver for them.
After far too many months of quiet feature development and bug fixing, we're happy to finally announce South 0.4, which has a whole host of new features to satiate your every migration need.
The list of new features alone really is quite long; you can see it at http://south.aeracode.org/wiki/ReleaseNotes/0.4, but I'll go through a few of them quickly:
Just a heads-up to any LastGraph users to let you know that, soon, I'll be implementing one-week graph storage expiry (but probably not for premium users). There's now 128GB of PDFs being stored on S3, and it's probably time I started not throwing money away.
One of the topics that popped up repeatedly at DjangoCon last weekend was how bad purely normalised table structures are, and how denormalisation is good for many things, including making your database cry less.
To that end, during the gaps in PyConUK this weekend, I decided to see how easy it would be to write a new Django field that will automatically denormalise a field in a related table across to another model.
There are not very many things that could tempt me to fly 10 hours twice for only a weekend, but DjangoCon was one of them, and I'm glad I went; it was one of the best weekends I've had for quite a while.
There were plenty of good talks; I can't mention them all here, since as we all know, bytes cost money, but in that vein I must at least mention Cal Henderson's talk 'Why I Hate Django' - a brilliantly done talk on the things Django's missing, as well as the fact we don't have a mascot (or do we?) and that we aren't smug enough.
The world of migrations in Django is definitely warming up now, and with that we're proud to announce the release of South 0.3, the 'intelligent django migrations app', available now from south.aeracode.org.
New in this release are the use of fields rather than dicts for specifying columns in migrations, so migrations now look cleaner, work with all the databases Django supports to a better extent, and even support custom fields.
Also new is dependencies between apps, for those situations where your forum app's Post depends on your accounts app's Profile; South will work out the right way to apply everything so foreign keys don't horribly break.
With the launch of its own site - south.aeracode.org - and Andy McCurdy jumping in to help out, South has been making some good progress. We've made a few backwards incompatable changes, which while annoying will hopefully make things much easier in future.
After the initial release some time last week, and a generally positive reaction, South now has a 0.2 release.
The most important (and only major) change is the addition of MySQL support, so the other section of Django users can finally give it a try. There's also the ability to create all models' migrations at once.
With the recent massive changes to Django trunk - newforms-admin being the biggest - I've found a need to run both oldforms-admin and newforms-admin versions in both development and production; here's a quick HOWTO on both.
Tired of having to drop tables to re-syncdb your django models? Django-evolution not working, or too magic? Then I have just the solution; my newest project, South; intelligent migrations for Django projects.
While I have been a happy user of Wordpress for many years, it was about time I jumped ship and moved my blog to something that let me manage things like project lists more sanely, and so welcome to my new Django-powered blog.
LastGraph has been fixed, at least as far as I can tell; the last.fm team fixed the API bug pretty quickly on Monday, so thanks to them.
It seems that the launch of last.fm's new site has strangely broken the older API that LastGraph uses. I knew I was going to have to update to the new API, but I didn't think it would be this soon!
Well, last night I gave a talk at one of the ever-brilliant Oxford Geek Nights, and in case you're baying for the slides I used (all seven of them), you can find them at this wonderful OGN7 LastGraph Slides link. If you live within punting distance of Oxford, you should really try to come to the next one on August 27th. If not; well, they put videos up on the site...
Yes, this is my new official term for the server going up and down. It seems that some part of the system causes 100% CPU usage on the box it's running on, and in fact is so nasty to the system that it even makes the serial console lag. This, for those who are not server geeks, is Bad.
After much work, lastgraph3's beta is now out. Please be warned that it may not work, may explode, and may abduct your cat, dog or goldfish in the process of failing.
It really isn't, honest. I'm working on the final part - the graph scheduler, which replicates the previous queued graph functionality - and I'll hopefully be pushing it all live soon.
LastGraph has been given a much needed refresh, including a tweak to the render nodes to stop them running out of file handles/memory/disk space, and the main site so it in fact remembers when it deletes XML caches to free up space rather than wandering around going "I'm sure I put that file somewhere...".
One of the overwhelming horrors of designing for the web (or so it would appear from a lot of the mockups I've seen) is that designers (and people who are just bored of Arial and Times New roman) want to make their titles on web pages using non-standard fonts. "But that's shockingly non-accessible and uses more bandwidth", I hear you cry; well, there's a reason the alt tag is around, and why broadband is much more common.
Yes, people of the internet, LastGraph has returned. After over two weeks of beta testing and bugfixing, it's finally in a useable state, and so I'm pushing it out to lastgraph.aeracode.org as I type this. If it doesn't work for you yet, wait for the DNS change to propagate.
LastGraph will be down for a few days while I sort out somewhere better for it to run. It's been using this servers' resources massively, and there's about 35GB of data now (over a gig of which is raw XML). The other sites on the server are suffering from the load, and we're down to Not Very Much diskspace.
The download queue is back in the hundreds for the first time since the initial launch, and to make things worse the poor Last.fm API server is being a bit unreliable again today.
After my first attempt at providing some way for people to style graphs in Graphication, which ended up being a rather ugly system with an odd set of nested dictionaries, a thought struck me; we already have a language for specifying presentation, and which has inheritance and other nifty time-saving shortcuts: CSS.
The n800 has quite a few media players already, and they all have their good points. None, however, seemed to be very useful, or indeed easy to use, while walking; if you want to change song, they all need you to get the n800 out of your pocket, unlock the screen, tap a button, lock the screen again, and put it back.
Well, it's been a few weeks since I released LastGraph upon the world, and around a week and a half since I posted it to the Stats group on last.fm in an attempt to get some users.
Yes, upgrades are continuing, and somewhat sporadic thanks to exams and a visit back home, but going nonetheless. Colouring now actually works quite well, and more as it does in Lee Byron's original idea, and the backend system is getting upgrades to support custom colour schemes and proper distributed rendering where nodes can specialise in tasks (because PDF conversion is very specialised, for example).
I'll be upgrading the LastGraph renderer today, which will involve some render node downtime (I'll attempt to keep the main site up, however).
After a day's work, I have an experimental web interface for lastgraph (my last.fm graph creator; see the previous post) up at lastgraph.aeracode.org.
<img id="image41" src="http://aeracode.org/blog/wp-content/uploads/2007/05/lastgraph_3.png" alt="Ooooh, pretty." title="Ooooh, pretty." />
I've given aeracode another makeover, this time to an interesting shade of blue and white. Comments are, of course, welcome, although please bear in mind that this is more an attempt to have my sites have themes that are at least slightly different from each other.
Occasionally, I'll think of something so good I have to rush and implement it on the spot. Last week I had one of those moments; Martin had mentioned to me that he'd bought a Wireless PC Lock, which is a little thing you plug into the USB port, and which locks your computer when you walk away with its 'key' transmitter.
Time to announce my latest diversion from real life: RMaze. It's a puzzle game, involving a maze (yes, really), marbles (good <em>and</em> bad), pits, lasers, mines, and some annoying hills and dimples. It's based on an old game called MegaMaze that had nearly exactly the same principle, albeit without 'good' graphics or expandability (like an open maze file format).
I'm terrible with focusing on one project, since I'll get bored after a few weeks of one, and so I need to change. Luckily, I'm overcoming this 'probem', but in the meantime, I have a good menagerie of projects to work on. I like to keep a few around since each is really a learning experience; ByteHoard is web programming, Aevolution is singleplayer games.
It's time I shared my experience of writing Micronatia's data model (well, this blog has got to have something in it).
It's horrible. Not because of the way it's not really a complete standard, but more because of the fact users get so much input into it and can screw things up so well. Trying to generate valid XML out of it isn't at all easy. Thankfully, Beautiful Soup, a wondrously lax HTML parser, came in and saved most of the day.
I both love and hate politics. It's humanity distilled right down to its core; power, tactics and feuds.