30 May 2005

SproutLiner Open-Sourced

SproutLiner was designed and built one weekend when I was supposed to be doing something else for someone else. Like many of my projects, it was just an idea that I had to get out of my system.

Unfortunately, that mentality (and my schedule) doesn't lend itself towards constant maintenance of the software, so I've released everything under the CC-GPL licence. Partly this is to allow people to deploy SproutLiner on intranets and so on, and secondly it's to ensure that SproutLiner doesn't die a slow death because I keep kidding myself and my users that I'll find consistent blocks of time to update it.

So without further ado, if it tickles your fancy, please head to the currently rather plain SproutLiner Source page.

For much the same reason, I'm aiming to soon release Freelook in the same way.

UPDATE: It should be noted that the backend code (PHP) is tiny compared to the frontend code (JS) and is mostly just a bunch of SQL queries, so Sproutliner could be ported to other platforms quite easily, and I suppose it wouldn't be hard at all to make a standalone Python version if you used something like GadFly or SnakeSQL.

26 May 2005

Perry Bible Fellowship

Ugh, I entered the title for this post into Blogger just before I popped out a few days ago. Unfortunately, just like my real TODO list or items Starred in Gmail, I take that action as "Well, I've taken care of the hard part (remembering it), I guess I can just actually do it later".

A shame, because what I was trying to talk about was The Perry Bible Fellowship, a comic I found so immediately pleasant that it made me promptly forget about Wulffmorgenthaler for months.

19 May 2005

On Cursory Hits

As I move to bigger projects, bodytag sees far fewer updates than it used to. However, it recently passed the four-million pageviews mark, so it's about time I came clean.

Despite the presence of many other pieces, all of which took far longer to make, over two million of those pageviews are to cursory. What's mildly boggling about it is that cursory is popular only in Russia, as only one or two non-Russian sites have ever directly linked to it, and 95% of the Russian sites that link to bodytag only link to cursory and not the front page. It's not a fad thing either, as there have been a steady stream of hits from different and unique Russian websites in the four years since cursory went up.

It'd be interesting to see if there were any social/cultural reasons for this.

Also note that I've disabled the 'blogger users only' restriction on the comments. Amazing times.

18 May 2005

Point Grey Bumblebee Stereo Camera

Oh how I wish the title of this post were a lead-in to describing a recent purchase; the Bumblebee Stereo Camera promises to solve most all webcam stereo problems by providing a wide-angle (up to 100 degrees HFOV), hi-res (up to 640x480@30fps or 1024x768@15fps), calibrated (no barrel-distortion), synchronised stereo video input.

Unfortunately, as hinted at by the 'email us for a price' line, it's a little past even my reckless spending habits at ... US$1995. HNNGGG!!

Still, since people seem to be flocking here from Google searches for stuff about multiple webcams on one machine, I figured you might all be interested.

17 May 2005

Sigur Ros

My favourite band of the past two years, Sigur Ros, is touring Australia. I have my ticket, where's yours?

I have terrible luck with touring bands - I really got into Nirvana around 1994, at the same time they 'disbanded'. Following that, REM, Nine Inch Nails, Radiohead and Tori Amos all got loved within six months of their last Australian tour for years. So by the time Radiohead came out, I had lost most of my interest but still went as I was determined to finally see a popular band I had liked at some point. Tori Amos is also touring soon, but I've mostly gotten over that infatuation, too (especially when you take the ticket price into account). So you can now see why I'm super pleased as punch that a band I actually still LIKE is actually COMING HERE.

For what it's worth, I spent most of my time reading 'The Diamond Age' by Neal Stephenson while listening to Sigur Ros' '( )'; like Swedish twins, the combination and interplay lead me to fall in love with both.

PS I got the 'With Teeth' DVD, and it still sucks. The only difference is that the suckiness comes from all around you instead of from the front.

15 May 2005

Singularity Sky Impressions

After the 'ye olden dayes' slog of The Baroque Cycle, I decided it was time to get some more hardcore sci-fi, so I picked up Charles Stross' 'Singularity Sky' on the strength of the title; having lapped up all of Vernor Vinge's books and essays, I wanted more more more singularity-related fiction, and this proved to almost be the ticket.

Like almost everything in these information-saturated days, Singularity Sky starts off a little slow, and at no points does the sci-fi really grip you by the short and curlies - we read about the effects of a technological singularity on an unsuspecting population, but it's more of an unexplored aside to the main story, which is a nice old-school scifi adventure, with the relationship between the two protagonists providing most of the incentive to read on.

While Stross is great with words, it feels like he wrote with someone standing over his shoulder with a whip at the ready for any time he did something remotely unexpected; throughout the book you can see the hooks for clever little plot twists, but they're never reeled in, and so the story proceeds in a fairly straight line with no knock-you-on-the-floor suprises.

Here's where it gets difficult - Singularity Sky is a more than satisfactory read and I'll probably curl up with the sequel, 'Iron Sunrise', but I find it a hard book to gush about - sci-fi lovers may find it a little flat, and readers new to the genre are much better off with Asimov, Clarke, Vinge or Stephenson. You can probably best consider it 'easy-reading' sci-fi - suitable for a quick and dirty distraction without the mental work of some of the heftier novels out there.

Next book on the pile is another recommendation from Slashdot - Iain M. Banks' 'Look To Windward'. I've never read any of his work before, and I know it's not the first in the series, but the darn sleeve didn't mention which one was.

13 May 2005

Webcam Stereo Vision Pt. 2

After some more experimentation, it appears that framerate issues come from the image being too dark - doesn't matter if the image is dark because you've set gamma, exposure, brightness or gain, if the image has a very low average brightness, the framerate will plummet, even with 'auto' everything off. I don't recall this happening when I was using just one camera, but that was on a different machine a long time ago.

Because the framerate varies with brightness, and because the brightness changes all the time, the sync issues mentioned in Part 1 are not predictable. Fortunately, the good old "z += (newz - z) / filteramt" 'filter' came to the rescue, and for as long as the cameras maintain a reasonable framerate, things go well.

To be honest, this whole thing would be a bzillion times easier if TrackIR cameras (with their framerate and optics geared towards this task) could show up as VFW devices, but my questions to Naturalpoint regarding that got bounced around internally, then went unanswered. Then again, I suppose they really might not want to talk to me considering I kinda made a competing product. Doot de doo.

12 May 2005

Webcam Stereo Vision Pt.1

A pair of Quickcam Pro 4000s arrived yesterday, and despite the knowledge that they would work simultaneously, I spent most of last night grappling with them (in between reading bits from The System of The World).

After a bit of experimentation, I realise now that the 8.xx-series of Quickcam drivers are terrible; try as I might, I could not expose any controls other than 'auto'. I'm not sure if installing the whole Logitech suite would fix this, but there's no way I want all that junk on my system. So back to the good old reliable 7.30 drivers I went (nicely still available on Logitech's FTP server).

These drivers aren't without some problems - with the exposure set really low, bright colours and their surrounds become greyscale, whereas what surrounds that remains in colour. Probably not so great for colour tracking, but I'll worry about that later. Further, for some reason, at random, one of the cameras will drop to 2fps. Not that useful, and again I'll have to spend some time figuring out if that situation can be recovered from without a reboot as installation stuff generally has to be able to run for around 12 hours without breaking. For the moment it doesn't matter too much, as the shutter glasses tend to stop working after an even shorter interval, and that problem most definitely does require a reboot.

But when the suns and moons are aligned and things deem themselves fit to work properly, then it works even better than I'd hoped - with many thanks that the QCP4000 doesn't suffer from the same terrible barrel-distortion that afflicted its predecessors, as well as a bit of trigonometry, pretty accurate marker position estimations can be obtained. It's like System B1 but in 3D.

Unfortunately, it all falls to bits as soon as lateral motion is introduced; as I'd expected and forgotten a while ago, one camera almost imperceptably lags behind the other due to minute differences in startup time and so on. The end effect is that one image moves ahead of the other, the horizontal distance between the two marker images changes, and the depth estimate then borks up completely.

How this is counteracted will depend entirely on the nature of the sync issues - should it be constant, then our life is made easy as once the value is known, we can project backwards in time so that the image that is ahead is back where it should be. Should it be random, then we will yell and shout and probably use a whole bunch of smoothing 'til it works. Either way, it will be documented here.

Sidenote: everyone should all be getting full-feeds, if you're seeing truncated posts, it's possible that your feedreader (bloglines included) is subscribed to the old feed and is experiencing some problems with the redirection. Unsubscribing from that one and subscribing to the new one should fix it.

The Baroque Cycle

It is 02:10, and I've just finished the final book of The Baroque Cycle, Neal Stephenson's Political-Science-Commerce-History-Fiction Adventure 'trilogy'. While certainly not provoking the paroxisms of "I will have this man's babies" ecstacy induced by some of his other novels, I feel like a better person for having taken part in the imaginary (and not-so-imaginary) lives of its characters.

The first volume, Quicksilver, took me months to read; I was battered by its giant slabs of seemingly inconsequential descriptive text, and only picked up its sequel (The Confusion), on the strength of my love for the author's earlier work. This new book sat there until months later (three weeks ago), I finally started upon it and became so entrenched that the final volume, The System of The World, was purchased and devoured in a few red-eyed nights of marvellous sleeplessness.

It is, however, a hard series to recommend as it takes so long to get wound up in the world - I estimate that it is around the 1000th page, somewhere in the beginning of The Confusion, that the story starts to kick in. For this reason, anyone I recommend it to may end up beating me up if they make such a magnificent investment of time without the deliciousness taking hold. One should probably go and read Cryptonomicon as an entree to the series - it is to The Baroque Cycle as The Hobbit is to Lord of The Rings.

P.S. Go do that.

10 May 2005

Feed Weirdness

My apologies to anyone being hassled by the feed - I recently switched to using Feedburner, and while everything seems hunky-dory and old users are getting redirected correctly, some weirdness remains. If you just got jammed with a summarised post rather than full-text, then hopefully that should be fixed now.

In related news, at the same time I finally stopped using Outlook, I stopped using Newsgator and swapped to bloglines fulltime for my feed-reading fix; the combo of gmail and bloglines is working out great, although I do remember that the only reason I ever used Outlook was for its calendar and addressbook for syncing with my mobile, and now I have neither of those things. Doh.

Trip and Virus Scanners

For the longest time I couldn't figure out why Trip, which used to load instantly, was taking almost a second to load, making it totally useless. I tried many many things (mostly recompiling with combinations of switches I'd never heard of), until I finally realised, not 10 minutes ago, that the common item between the computers upon which it is slow is the presence of a virus scanner.

After some testing, it appears that the scanners (AVG and whatever the Symantec one is) scan Trip each and every time it's run, causing all sorts of bothersome delays. So if you're experiencing troubles, try turning virus scanning off for just the Trip file (if possible).

There's still a slightly odd bug where Trip randomly likes to take 10 seconds to start up. Suggestions appreciated.

I've also uploaded a new version to the Trip homepage, the only difference is that it's now static-linked, so it shouldn't require MSVCRT71.dll. EXCITING STUFF!

UPDATE: I have tracked the problem to MS Anti Spyware, although other 'realtime' spyware/virus scanners may also cause delays:

Microsoft antispyware's security agent causes intolerable delays to Trip's startup time, making it mostly useless - deactivating the agents one by one does not help - you have to disable all of them via the tray menu's 'Security Agents Status > Disable' option...

09 May 2005

innerHTML vs DOM

While we're on the subject of JS and speediness, quirksmode has a great article on comparative speeds of innerHTML and DOM methods in regards to creating new content on all modern browsers.

Quirksmode's test hits pretty close to home as it simulates a situation that is the biggest source of performance issues in Sproutliner (the creation of a single large table). The article's conclusion is that innerHTML is a whole lot faster, which thankfully somewhat validates the current use of innerHTML to create all elements in Sproutliner.

The article also compares two methods of using innerHTML, the results of which are consistent across all browsers and just a little bit suprising.

JavaScript Speederisation

In writing megs and megs of JS, you often come to a junction of two ways of doing things, and wonder 'mm, which is faster?'. For example - lookup tables vs recalcuating the desired value; we're taught that lookup tables are the right way to do things, but how can we be sure? JS is so high-level that all sorts of inefficiencies may exist, and for very large lookup tables, the increased load time may not be worth it.

Well, this is what Jeff Greenburg's JavaScript Optimization Guide addresses, and despite the fact that it's getting on a bit (Mozilla/FireFox is much much faster these days), it's still a required read for anyone into this sort of thing.

Further, if you feel like benchmarking your own JS functions, bodytag has a JS Benchmarker, built just for that purpose (well, that's not entirely true - originally I just wanted to see if i^2 was faster than i*i, but things sort of went out of hand).

08 May 2005

Google and Me

Yes, he does not lie.

Of course, given that he works on the product responsible for this blog, who can say what's tru3@1@!2.. Aaron is the bee's knees and I submit to his mighty hallway jousting skills!

Shadow Story

Our man in Korea, and Cory Feldman-level heart throb Charles Forman has recently created the superdelicious Shadow Story, a shadow-based projection artwork oriented towards kiddies.

I Love iRider (or: Why I Still Use IE)

It apparently gets otherwise smart people very riled up to learn that I still use an Internet Explorer shell as my primary browser, so here is my defense and explanation.

Desktop Screenshot

In the screenshot above, you see the top-left corner of my desktop - it establishes a simple hierarchy that moves diagonally (with a bit of wiggling) from top left to bottom right - Application Launcher > Application Chooser (taskbar) > Web App Chooser. Laid out as it is, the app list in the taskbar is far more expandable and useful than the default bottom-aligned taskbar, however it is the 'Web App Chooser' that is the most important, and is the core feature of the amazing iRider browser.

iRider is a tabbed browser, but tabs in iRider have two important properties - they can be pinned, and they are hierarchical. As an example of the former, see the slashdot, gmail and bloglines tabs - they are pinned, and will remain there even if I close iRider or drag-close all tabs (more on this later) - this is essential given that apps like gmail and bloglines are just as (or more) important to me as desktop apps, and I need them readily accessed at any time.

The heirarchical nature of the tabs can be seen below in the 'Cheese - Wikipedia' section - from here you can see that I've started reading the 'Cheese' entry, and have opened tabs for 'pasteurization' and 'home cheesemaking', and from there have dug deeper - the tree of tabs lets me know how each tab relates to the others, allowing me to maintain a tree of thought and to quickly switch contexts with minimal confusion and impact.

Opening multiple tabs at once from a page is a matter of selecting the text in the page that contains the links, and pressing the 'surf-ahead' button (normally right-mouse, but middle-mouse for me so as not to interfere with StrokeIt). This feature is especially handy for opening every image in one section of an online image gallery. Closing off or pinning a 'train of thought' is similarly easy - just click on the little 'x' or 'o', and drag upwards to close/pin as many windows as you want at once.

Once I got used to these features of iRider, I found that no matter how much I tried, I could never make FireFox my primary browser. I've stated that as soon as someone makes a FireFox extension that does it, I'll switch, but so far I've tried the various tab plugins, but they lamentably never came close. Perhaps I should do it to learn more about FF extension creation.

Of less import, below the apps in the taskbar, you can see a webpage I created and added to the taskbar that screenscrapes a few news and weather sources every 15 minutes and presents them in a format I like. It's not normally that high, giving more room for the app list, but I put it up there for the sake of the screenshot. It's a recent addition, and I'm currently testing various styles and types of information (eg latest forum post headlines), it's all very interesting trying to make things sit on the edge of cognition without interruption. Perhaps I should look further into the Longhorn Sidebar research that went on before the sidebar was scrapped.

FWIW, I ran into iRider a long time ago in this post on Scoble's weblog, which mentioned that one of the guys on the IE team really liked it, so I gave it a bash, didn't like it, then eventually gave it a longer and more thought-out go, after which I bought it and have never looked back.

Soon up: Fitts' Law, Dragging, and how they relate to the positioning of my desktop windows.

07 May 2005

SproutLiner Direct Linking

SproutLiner now supports direct linking - simply go to http://sproutliner.com/lists/[listname]. Like going in through the input field, if the outline you've specified doesn't exist, it'll create it automagically when you go to the page.

Next up, password protection and notes.

Nine Inch Nails' With Teeth Impressions

In terms of time, money and rampant fanaticism, Nine Inch Nails rates as my favourite band, ever. My first exposure was a blind purchase of 'The Downward Spiral' as I'd heard that this band with the funny name would be responsible for the audio in the then yet-to-be-released Quake. Within a week of first loading it into my discman, I had bought all albums I could lay my hands on.

0

Unfortunately, it was a long time between album releases, and by the time 'The Fragile' was released, NIN and I had moved in different directions - with a few exceptions, the slow, softer, pop-industrial songs never really struck a chord and it was only a bootleg copy of 'Closure' and the excellent 'And All That Could Have Been' DVD that kept me mildly interested in the latest Trent news.

Now we see the release of 'With Teeth', an album that sees a wide range of musical styles, and some suprising new vocals from Trent which stand out most in 'Only', and are hinted at in the 'The Hand That Feeds' single.

Unfortunately, I don't really like 'With Teeth' that much - it doesn't get the blood flowing - a lack of innovation, an abundance of repetitive screaming, and a strangely ever-changing intensity and tempo lead more to a sense of confusion than to the audio bliss we're used to from NIN. It's possible that some of these complaints are rendered void on the 5.1 DVD-A release, but I doubt it.

Not recommended.

As an aside, if you can, get the Japanese release, which has two half-decent bonus tracks that really deserve to be in the main album.

PSP Wipeout Pure Review

Unlike the extremely daft Ridge Racer, Wipeout Pure is a blessing, an amazing game that is somewhat marred by a lack of content.

I will admit that, being a PC owner, I only ever got to play the PC release of the original Wipeout; Wipeout 2097 refused to run, and Wipeout Fusion never made it past the PS2. However, the Wipeout 2097 soundtrack, won with a subscription to Hyper magazine, turned my life around - it gave me a love and appreciation of Electronic Music and alerted me to the existence of The Designers' Republic, an act that derailed my computer programming ways for a few years to pursue design.

So despite the fact that I never really played it much at all, Wipeout was a huge influence on my life, and when I purchased my PSP, I saw fit to trek all over California looking for a store who still had it on stock.

Loading the game is a somewhat tedious process of skipping over intro movies and 'press[ing] start to continue', but once you're in, you stay in - a variety of play modes, and a rather steep difficulty curve keep things interesting, though after coming from some of the bigger racing games, it does feel a little flat only having two unlockable ships and a handful of one-way tracks.

The racing itself is like Formula 1 Ballet - elegant and insanely fast. Success comes from smooth control and knowing the perfect racing line through corners and over the many boosts. Though (and I may be wrong) the game appears to cheat a little - on your first lap, the AI-controlled ships seem to have supercharged engines and all rapidly overtake you, forcing you to spend the rest of the race catching up.

Control with the D-pad works well, and although some users swear by the analogue controls, I found the nub useless for performing small course alterations on account of large amount of initial force required to overcome its static friction.

One small departure from most 'good' racing games comes from the speed of your ships and the massive acceleration and decceleration involved - you rarely get into furious neck and neck contests with other craft - more often than not, one of you is flying past the other at a rate of knots. It's not really a problem though, and helps conserve the flowing pace of the game.

Highly recommended.

Rating: 4/5

06 May 2005

Processing Beta

It is worth noting that after a lengthy Alpha period, the Beta of Processing was recently released. Processing is a fantastic environment for graphical programming, and serves as a great introduction to Java. About a third of the pieces on bodytag were built using Processing.

A testament to its power and ease of use came when we needed to develop a pie-chart visualisation of site usage for a major corporate client - we tried many many commercial and free Flash and Java solutions, but most produced charts too ugly for us to associate with, and the others mysteriously refused to work on the client's particular workstation configurations. Close to throwing in the towel, I gave Processing (then Proce55ing) a bash, and within 10 minutes I had exactly what we needed - another 10 minutes and we had frills like rollover interactivity and audio.

For me personally, perhaps the most important aspect was that Processing gives you access to the raw pixel buffer for the screen, something that many languages like to abstract away behind a useless collection of drawing functions.

I've since moved on to doing a lot of artwork in C++, but Processing remains as an important part of my arsenal, and like Python, it fills me with pure 'coding joy' each time I use it. Highly Recommended.

04 May 2005

Multiple Webcams On One Machine

After some time working on computer vision projects, most people get bored of using just one camera and decide to go for stereo-vision. Afterall, once you've gotten over the pain of getting a pixel array from your camera in your language of choice, how hard can it be to get arrays from multiple cameras?

UGH.

After ordering two of Creative's Live! Ultra webcams for their deliciously wide-angle lenses and tasty USB2 speeds, I found out that Creative's drivers don't allow the simultaneous use of multiple cameras. In fact, if you want to get input from multiple cameras you have two choices:

  1. Use cameras that have differing drivers (ie cams from different manufacturers). You then have to find a pair of cameras whose barrel distortion, mounting dimensions, field of view and framerate are all the same. Blech.
  2. Use Logitech Quickcams (their drivers let you do it in XP).

I suppose that this is my punishment for straying from Logitech (whose cameras I love) to Creative (whose past cameras have all sucked).

Update: In what may be a series, you can now read followup information on this.

Welcome

Hello.

Well, a few people were prodding me to get this thing back, and I was starting to feel the urge to write again, since my writing skills have taken a bit of a beating recently, and in the past I had found that regular personal writing was the best cure for NOT WRITE GOODER ENGLISH.

Quick background: I started with the 'online journal' thing in about 1996, then stopped around 2002ish, and now I'm back. For the longest time I really didn't like the term 'blog', but now I'm over my youthful 'I was into it before it was cool' indignance and am doing a good job of pretending to be a grownup.

... Although now I notice that 'blog' isn't even in the Blogger spellchecker. Weird.

PSP Ridge Racer Review

For the first half hour of Namco's Ridge Racer on the PSP, you gleefully wish all your mates were there to watch your most excellent powersliding skills - it seems you can do no wrong as you overtake even the beefiest of opponents through the tightest corners.

Ridge Racer Screenshot
At least it's pretty

After an hour of this you start to notice certain weirdnesses sticking out at you, and finally, hoping against all hope that your suspicions are incorrect, you fly into a tight corner and powerslide in the wrong direction. Dismay hits as you watch the outer edge of the corner pass by your front bumper, your car mysteriously floating itself through the turn. Yes, as soon as you put your car into a powerslide, Ridge Racer blesses it with magical powers to see it pass through the toughest turns without a scratch. Sure, it's an arcade racer, but Ridge Racer makes Daytona look like Falcon 4.0.

There's still some fun to be had despite all this - the 3d engine does a decent job and there's a tonne of races and vehicles to unlock. It makes a nice diversion from Wipeout Pure, and you'll find yourself picking it up every now and again for very cheap thrills - Ridge Racer is entertaining, but in no-way satisfying.

Rating: 2/5