.Net 4 is not .Net 3.5 or newer (If you’re going to be strict about it)

Recently I installed Windows XP in a VM for some Pinta-related work, and started by installing Visual Studio 2010 and .Net 4. When I then tried to install a couple of necessities like Git Extensions and GTK#, the installers errored out telling me that I did not have .Net 3.5 or greater installed. This surprised me, because last time I checked four was greater than three and a half.

However, it turns out that you can have .Net 4 installed completely independently of .Net 3.5, so .Net 4 does not set the registry keys for .Net 3.5. And since WiX-based installers check those registry keys, they think there is no .Net at all. (WiX is an open source installer framework for Windows, and therefore is very popular for open source projects.) The easy fix is simply to install .Net 3.5 alongside, for a more complicated version you can always try some trickery.

Ubuntu either doesn’t know how important they’ve become, or they don’t care.

So recently a lot of dust hs been kicked up over the fact that Ubuntu at UDS recently decided to take Banshee and Tomboy Notes off the default CD image. I won’t speak to the technical reasons other than to say that I feel they are rather weak, especially since the exact same reasoning was used to switch Rhythmbox with Banshee last time around. (Full disclosure department: being a Tomboy contributor it’s pretty obvious that I think Tomboy’s the best thing since sliced bread and grilled cheese and that removing it sucks.) What I am going to talk about is the total lack of communication and transparency in the decision-making process. Obviously I’m not the first to have opinions on this: Go to Jo Shield’s blog for a long and well-argued comment on the subject.

Now, what I have to add is this: Ubuntu either doesn’t know how important they’ve become, or they don’t care. Developers in upstream apps know that getting exposure in Ubuntu means an incredible influx of new users, which in turn leads to new bug reporters, which finally means new contributors. It’s well known that each of these groups is an order of magnitude smaller than the last, so making sure the user group is as big as possible is vital for an application. And because upstream knows this, they are willing to bend over backwards to accommodate Ubuntu’s wishes. Banshee added the U1 music store as core feature rather than a community extension, while when Tomboy was informed that they were temporarily off the Oneric CD due to Tomboy being the only app dependent on gnome-sharp early in the release cycle the developers dropped just about everything to get that fixed sharpish. How was Tomboy informed? One helpful soul forwarded an email that had been posted to the ubuntu-desktop mailing list announcing that Tomboy was being dropped until the dependency was removed. Evidently nobody on the desktop team thought it was worth taking the time to ask the Tomboy developers if it was an easy fix. (Which it turned out to be.)

Upstreams would be more than happy to do a lot of stuff for Ubuntu if only Ubuntu actually let them know what they wanted in some sort of predictable fashion. The trouble is, I’m not even sure that Ubuntu has a predictable system for making such decisions, much less communicating them. Listening to the recording from the relevant UDS session, it seems like it’s a bunch of guys larking about and having laughs while they make up the agenda as they go along. I’m also given to understand that there was in fact no official mention of the now controversial plans before the session started, and the record-keeping, a rather thin etherpad, just doesn’t cut it.

OK, I get it. Formalities are boring. But formalities tend to go hand in hand with responsibility. When Ubuntu wields such incredible clout over upstream development (and also so many people use Ubuntu and are interested in how it develops), they really should get bit more boring by properly formalizing procedures for things like this. They also need to make sure it all gets communicated to the people who need to know about it before it’s too late, so that they can help resolve any issues that might arise. After all, Ubuntu is Linux for human beings. And I hear that developers are human beings too.

Video Game Review – Ace Combat: Assault Horizon

Disclaimer: This review is written by a longtime Ace Combat fanboy.

Here’s a trailer of the game in order to set the stage and give you a little on what to expect:

Second disclaimer: If this trailer full of awesome explodeyness and allround adrenalin-pumping didn’t get you interested, you probably have no interest in the rest of this review.

Ace Combat has always been about flying awesome planes around in awesome aerial combat whilst shooting down others in at fist-pumpingly awesome manner, and this game is no different. However, they’ve had a go at spicing it all up with some new stuff that wasn’t in previous games and shaking it all about. Gritty dark reboot type thing, like Batman Begins.

Here’s some of the new stuff:

  • Moving from a parallel dimension to more or less our dimension. Previously, all AC games were on a sort of parellel earth with different geography and countries (although always vaguely reminiscent of real countries), but all the same plane manufacturers as we have in our world. That allowed us to have great mixes of planes without having to think over why someone had Russian and American planes in the same air force. Since they had developed it over several games, I felt a rather strong attachement to it and was concerned that putting things in the real world would make things more boring. However, they avoided this by completely disregarding boring stuff like politics, economy and logistics which is a bit silly at times but generally rather fun. Also, doing battle over cities you recognize from the real world is kinda awesome and gets automatic bonus points from me since I study geomatics.
  • Helicopters! (Aw hellyeah-acopters.) For the first time in AC you get to hover if you want to, but then you’ll probably get shot down by a PRG-toting maniac on the ground. Quite fun, but some issues with control and general playability. Still, it’s fun to ambush armoured columns by waiting for them to drive onto the Moscow boulevard you’re hovering at the end of.
  • Miniguns! You get to stand behind a minigun and blast the hell out of people on the ground. Makes for a nice distraction, but glad it’s not the entire game.
  • Strategic bombers and AC-130s ! What’s not to like? Eminently satisfying one-off missions, just the right amount of this kind of gameplay.
  • Dogfight mode. As seen in the trailer, you can initiate dogfights where you get up close and personal. To begin with I thought it was kinda silly, but by the end I had really warmed to it. Adrenalin-pumping excitement which really gives life to encounters with enemy aces and lets you fly through some ridiculous setpieces.

The new stuff is generally good, and the old stuff is classic Ace Combat, the kind of game where when you get shot down you pound the sofa pillows and shout “I’ll get you next time, Markov! AGAIN!”.

Third disclaimer: This kind of behaviour may worry girlfriends, boyfriends or anyone else within hearing distance.

Also, there’s a bunch of online stuff which I haven’t tried yet, but it’s probably a bit less off the hook and considerably harder. (But still fun, no doubt.) I would recommend this game to anyone has enjoyed previous Ace Combats and anyone who thinks a video game directed by a Japanese Michael Bay sounds fun. All in all, I give this game fanboy/10.

Book review: The Pragmatic Programmer

The Pragmatic Programmer

The short version: Buy it, read it, and do what they say!

The long version: This book is well written, easy to read and very convincing. The authors lay down a number of simple rules for you to follow in order to create the best programs possible. When you read the advice, you’ll see how much sense they make and you’ll probably hear this book in your head the next time you sit down to write a program.

After reading this book, I made a conscious effort to follow their advice on my next big programming project. As time has passed and changes needed to be made, I am very glad I managed to follow as much of the advice as I could, because it really become a lot easier. For my next large programming project I’m definitely going to try to follow these rules as properly as I can. As an added bonus, telling other people the rules you’ve read in this book makes you look smart and experienced. Buy this book and thank me later.

What happens when a Linux server fills up the HD

Surprisingly little, actually. Recently I had the experience of working on a server where the hard drive went past 99% full and all the way to 100%. The first thing I knew about it was when I was trying to start a Java process and it gave me this incredibly obtuse error:

# A fatal error has been detected by the Java Runtime Environment:
#  SIGBUS (0x7) at pc=0x00007f3e0c5aad9b, pid=17280, tid=139904457242368
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libc.so.6+0x7ed9b]  memset+0xa5b

It turns out that this error shows up when the there is not enough space in the temp area to write anything. (Less than 32 KB left, I think it was.) See more about this problem here.

Apart from that, the server was fine. Everything was chugging away and responding nicely. Somehow I have my doubts that would work on a Windows box.

Hello, world of WordPress

Version 2 is here.

I decided to get back in to the blogging business. All this Twittering has made me realize that I sometimes have useful stuff to share with the world that requires more than 140 characters, so here goes!

Previous attempts at blogging by me have been somewhat pretentious, so this time I’m going to try for pragmatic. I plan to write my first series of posts by going back through my Twitter timeline and seeing what I would have liked to write more about, and take it from there. In the pragmatic vein I decided that a) a meticulously handcrafted web site may be cool, but it’s also time consuming, and b) I hate the thought of the blog and the rest of the website not matching, so I’ve moved all the website content on to WordPress.

Wish me luck!

The internet does not have corners, yet this one is mine.