Archive for February, 2009

Senuti goes payware

Saturday, February 28th, 2009

Sigh. Another one bites the dust. As of version 0.50.3, Senuti, the popular iPod retrieval program, has gone payware, despite previous versions being GPL-licensed. The Google Code repository has disappeared.

I can’t really get angry at the author, although the temptation is there. I haven’t paid him a cent. He can do what he likes really. He’s obviously put a lot of work into the software, who could blame him for trying to get some reward for his efforts? It was licensed under the GPL, though, and it’s extremely bad form to “disappear” it. I don’t have a copy of the source, so I can’t distribute the 0.50.2 binary I have.

This pisses me off, yes – but it’s not even really anything to do with Senuti. It’s the fact that I can’t copy songs off MY FUCKING IPOD that I OWN. While there was a free program that worked so well, it was easier to ignore. Now that program demands payment and Apple’s contempt for its paying customers is rubbed in my face.

I hate this fucking shit, and the worst thing is that there’s no current acceptable alternative to iTunes/iPod. Maybe soon. Anyway, I will hang on to my copy of 0.50.2 until it stops working – no doubt, planning commercialisation, the author slipped a cutoff date in there somewhere.

For reference, the sha1 hexdigest for the last free release of Senuti (senuti_0.50.2.dmg) is b7c4121e5fbdd96aae1a483311d0fb7ea1915689.

Update: It is somewhat possible the author of Senuti is in breach of the GPL (Senuti uses several GPL libraries – gtkpod (corrected – it’s actually the LGPL libgpod, thanks Wincent) and Adium (stripped from latest distribution) for starters).

Update 2: It seems the offending GPL libraries have been stripped from the current payware distribution, possibly making the software able to be legally distributed after all. All contributors have been removed from the About screen of the new version and the Adium library has disappeared. Still pretty sleazy, but probably not illegal.

Apparently Every Single European Shaves

Saturday, February 28th, 2009

Click the images. That is certainly less hair than I expected to see. Possible selection bias at work.

The Day My Brain Stood Still

Thursday, February 19th, 2009

If you haven’t seen the craptacular new remake of “The Day The Earth Stood Still”, congratulations! You’re smarter than me. Hoping for a spectacular big-budget robots-and-aliens movie, I subjected myself to it not long ago, and boy do I regret it.

Let’s see. What does this movie contain?

  • Keanu Reeves’ horrific acting? Check
  • A fucking annoying token black kid a la Little Miss Fucking Gymnastics in Jurrasic Park 2? Check! Note to producers: I would pay good money to see this little shit burnt alive. Contact me.
  • Manhattan in danger? Check! Wow, what a new and innovative plot device. Imagine .. a movie about some kind of disaster in New York? Who could conceive of such a thing!
  • A lame-ass tacked-on environmental theme? Check!
  • Keanu Reeves speaking stilted Chinese? Oh yes.
  • Reverent fascination with the US Government, US Army, and US Office of the President? Check.
  • A lot of “staring in awe” scenes, ie. characters getting out of their stopped cars and staring around them in wonder, or a woman, child in hand, slowly walking towards, and gazing awestruck at, foreign objects? Check and boy it’ll make you puke.
  • Ridiculously blatant product placement, including a stupid Microsoft “table” computer complete with Vista logo and spurious animations and sounds? Check
  • Attempts at “moving” scenes which are laughably un-moving but also so annoying that you can’t laugh and instead want to just club the characters to death with a baseball bat? Check.

Actually, I think I’m onto something with that last point. There are very few scenes in this movie which would not be infinitely improved by someone walking on mid-scene and beating one or all of the characters to death, or even just shooting them. Especially that god damn kid with dreadlocks who is nothing but trouble and deserves to be pushed off a bridge, but pretty much everyone in it really. If I was an omnipotent alien, and I saw this movie, I’d want to get rid of humanity too just for the sheer veangeful pleasure of it.

Rating: 1/5

PS At no point does the earth stand still.

This is what I hate about Rails

Tuesday, February 17th, 2009

This is what I hate about Rails:

  1. New feature added to Rails 2.3.0RC1 allowing simple localisation by template naming convention – ie, if locale is set to :ja and an index.ja.html.erb file is present, that gets rendered in preference to any other index files. Cool!
  2. New feature doesn’t work properly and exhibits an insidious bug where it manages to set a wrong Content-type in the HTTP headers, causing all sorts of nasty, hard-to-troubleshoot problems
  3. Problem is reported
  4. Rails Core replies “wontfix”

The “fix” Josh suggests, needless to say, doesn’t fix anything.

That is utter bullshit. A major new feature of Rails 2.3.0, as reported in Ruby Inside and the Riding Rails blog itself, doesn’t work. Has no-one else tried it? Has anyone used this at all? Are me and the other commenters on this ticket the only 3 people in the world who ever tried to use this feature?

There is no fucking excuse in the world for Rails to silently be sending a wrong Content-Type, no matter what.

Scale Rails so your website loads in just 9.13s

Wednesday, February 11th, 2009

Imagine! If you watch all of Gregg Pollack’s Scaling Rails tutorials on how to performance tune your rails website, one day you could be the proud owner of a website with performance like this:

OPTIMIZED!

Pretty impressive, I’m sure you’ll agree.

DISCLAIMER: This is from Australia on an otherwise decently fast 24Mbps connection. A single page load means nothing, and to be fair, it usually averages around 8 seconds. To be even more fair, this blog takes 12 or 13 seconds to load. Please Gregg, tell me how I can scale PHP!

Wednesday, February 11th, 2009

I’d been blissfully ignorant of Gregg “I don’t have enough G’s in my name” Pollack’s latest yawn-cast until the inimitable Wincent Colaiuta brought it to my attention. I’ve been unimpressed in the past by Mr Pollack’s shaky grasp of what he’s talking about, not to mention his nasty money-grubbing antics surrounding RubyConf 2008. However, I am but a (highly immature) man, and so similarly tantalised by the promise of a “rant”, I grabbed episode 5 and gave it a look.

My first thought is that Mr Pollack doesn’t really know what the phrase “scaling rails” means – no surprises there, since he didn’t know what “scaling ruby” meant either – ie. nothing, since you can’t “scale” a god damn language. He seems to be confusing it with performance and responsiveness – desirable attributes for sure, but not what I understand “scaling” to mean. The first few episodes do not even mention scaling, focussing on client-side perception of page load speed. Indeed, his first mention of “scaling” in the “Scaling Rails” series is this:

Before you attempt to Scale your Rails application, you need to know where and how to scale it.

Surely an insight for the ages there. I would write that down right now, if I could figure out what the hell it is supposed to mean. Apparently in Gregg’s world, “scaling” is something you do on a lark, just for fun, maybe on a rainy day or if you’re just plain bored. Hm, I don’t have anything much to do today – I think I might scale my websites! Before I attempt that though, I’d better learn up on where and how to scale them. Take it away Gregg!

Unfortunately, Gregg isn’t interested in, or aware of, any “how” that isn’t “caching” and any “where” which isn’t “uh, in the bits which will be cached”. Every single episode of the series so far focuses on caching strategies. Again, HTML caching is a useful and important tool to improve performance and efficiency but that’s merely one variable in the scaling equation. It’s a “vertical” optimisation, not a horizontal strategy, which is what my conception of the art of scaling is all about.

However, even Pollack’s advice on HTML caching leaves a lot to be desired. As Wincent points out:

Next up, he shows how you can include dynamic content on a statically cached paged. This is where he goes off the rails. His recommendation is that you use an AJAX callback to pull down the dynamic data. So let me get this straight: you’re caching the page to avoid hitting the Rails stack, but then you do a request that does exactly that (hits the Rails stack) to fill in the dynamic content…

It’s important to note that there’s nothing wrong with this technique per se. If a page is very expensive to generate, but just needs one little piece of dynamic content, this kind of thing can be very useful.

However, I think Pollack is barking up the wrong tree with the use he’s considering – a dynamic log in/log out link. His suggestion as written is to use AJAX to write in the login status, on every page in the site regardless of whether it’s cached or not. In fact, as written, if the page doesn’t get cached, the login status will be written twice! Not to mention that he’s forcing users to pull down the entire Prototype JS library just to implement this one little thing.

I suspect Mr Pollack is really just speaking about his own experiences here. His sites tend to be very content-heavy, very static, and it’s fairly obvious by looking at, say, EnvyCasts, that his experiences there have informed the strategies he passes on in the screencast. However, I would submit that his site is actually a fairly niche example. It’s a highly cacheable, rarely-changing site which indeed only really requires a single little bit of dynamic content – the login.

Which brings me to my main dispute with Pollack’s screencast. No, login status is not overrated. It’s highly useful to be able to check at a glance if you’re logged in to a site – especially with many sites’ less than perfect autologin functionality. It’s equally useful to be able to log out with a single click, especially if you have multiple accounts on a site. Forcing your users to click through a “my account” page – which may or may not even take you to your account, if you’re not logged in, that is if you have an account at all – is just lazy.

Especially since, as Wincent points out, it’s trivial to simply implement the login status client-side, using cookies and a bit of javascript:

I for one really appreciate the visual feedback that shows me whether I’m logged in or not; and given that implementing it is basically zero-cost using the method I’ve just described, I don’t see any reason why not to.

Indeed not.

The rest of the screencast is more of what we’ve come to expect from Mr Pollack & co. – a superficial treatment of things you probably already knew, or could easily find out. If you’re such a beginner that you don’t know anything about page caching, I recommend heading over to railscasts, starting from the beginning, and then just watching them all.

This video might be of some interest as a kind of summary, if you can sit through it – not only do you get to stare at Mr Pollack’s annoying face the whole time, the sound is totally out of sync, making it even more annoying. Pollack has an irritating habit of favouring the camera with a “knowing look” whenever he imagines he is making a particularly profound revelation, which is sure to have you searching frantically for the “press here to electrocute presenter” button:

One way we can do it, is by adding an … AJAX callback (long, tension-filled pause)

At least, though, Mr. Pollack has finally settled on the right price for his screencasts.

PS. As an aside, I thought the name of the company sponsoring Pollack’s latest effort, New Relic, was kind of ironic. A third party website trying to charge money for app monitoring? That does seem like a relic of a bygone age. And the service does seem to be new, hence a New Relic. I wonder if that was intentional. The name certainly makes no fucking sense at all elsewise. UPDATE: Their service actually does look pretty good. Good luck to them. Still a ridiculous name but hell, what isn’t.

Don’t wake the programmer

Tuesday, February 10th, 2009

I absolutely hate, hate, HATE being disturbed when I am working, but it’s hard to explain why to non-programmers. I’ve read some great analogies to help people understand but this is one of the best yet.