FOSS

Fibo-what-i?

Just a minor puzzlement today. PC-BSD 7 has been released, and is apparently very good. I might even try it. What's perplexing me is that it's codenamed the "Fibonacci edition". 7 isn't even in the Fibonacci sequence ...

Mozilla launches Failfox 3

Tuesday 17th June was supposed to be a big day in Firefox history. The long awaited version 3 of the popular browser was to be released to record breaking numbers of downloads. The world would be in awe of the majesty of ... wait, maybe that's going a bit far.

Anyway, Tuesday came and went, and I didn't download it. I tried, but I failed. There were two things that stopped me in the end. First, the stability of the servers. All the various domains returned 'Http/1.1 Service unavailable' errors in the evening when I actually tried to get it. That didn't help.

The main thing that stopped me, though, was that it was released at 10am on the 17th. 10am PDT that is. California time. Those of us with a vague grasp of world geography will know that California is on the trailing edge of the world timezones. Indeed, by the time 10am PDT rolled around, it was already Wednesday the 18th at the international date line. Being sat there looking at the Firefox 2 link on the 17th didn't do wonders for the world at large's perception of the Mozilla organisation's ability to, well, organise.

In my mind, there were two possible things they could have done to make it not suck like it did. Either release it at midnight GMT (or UTC as people now like to refer to it), making sure that the two extreme timezones have at least 12 hours on the 17th where it is available. This would satisfy the world record download attempt's rules of it only being one day. The other way would be to launch at midnight on the 16th on the international date line, meaning it would require 48 hours before the whole world had seen midnight on the 17th.

Either way, the Firefox site gave no indication of intentions, fell over repeatedly and generally left those further east of California wondering what the hell was going on. Remember, Silicon Valley people, that most of the world sees the dawn long before you do. Without giving us more information than "the 17th" we'll all just get bored and wander off to the pub. Which, in fact, I did.

News just in: Team Foundation Server sucks. More at 11.

One of the banes of my current working life is the heaping mound of crud known as Team Foundation Server. I know I've ranted about it before, and I'm sure I'll rant again. Such is the heinous evil that is TFS.

This time, I'm going to list 4 things that TFS does (or doesn't) that means it's completely unsuited to modern development practice. I'll be comparing the functionality with that of Subversion, currently a very popular open source VCS that I like a great deal.

So, on with the rant ...

MegaHAL/Irssi - All new version 2.0!

I've just finished rewriting my MegaHAL/Irssi script to be a lot cleaner and a lot easier to configure. You can get it from the MegaHAL/Irssi page.

New features include:

  • Configurable using standard Irssi /set commands instead of hacking the script
  • Supports changing nick without hacking the script
  • Generally requires less hacking of the script ...

So, erm, yes. Enjoy!

VBA Unicode done right, redux

Some time ago I wrote a short article on forcing VBA to use some form of unicode to allow simple insertion of non-latin1 text into VBA modules. It sort of worked, for the most part, kind of. Well, it didn't. The problem is down to the VBA editor being locked to the local encoding of the machine it is running on. You can only type characters from BIG5 in China, Shift-JIS in Japan, and so on. If you have a need to make a VBA module that uses strings suitable for all locales ... you're pretty much stuffed.

Except you're not. If you do it properly, you can have any unicode character displayed in any VBA locale. So how do you do it properly? Well, you're supposed to use ChrW$() to generate unicode characters individually. Yes. Really.

Stop Patching Like Monkeys

It seems that my previous rant on the evils of runtime modification of types is no longer alone in this big wide world of hacks and bodges. No indeed, it seems there is even a semi-official name for this practice; Monkey Patching. How very appropriate.

The basic problems being highlighted in this post basically reiterate what I already said before. Monkey patching means that bugs are hard to find because you simply don't know what code is running at any point in time.

Now, I make my opinion of the blind Ruby-loving, Rails-abusing trend followers no secret. I think they're bad coders, for a start. That's not to say they're stupid, or don't understand the technology. I'm just saying that they're throwing away good practice in favour of little more than a quick fix. They're not engineering, they're bodging. I also think they're guilty of herd mentality. They are undoing years of software engineering to be in with the "it" crowd, and monkey patching is just one example of how this manifests.

With monkey patching, you get code that you simply can not debug. The best you can hope for is that you get lucky and happen to spot that some completely unrelated module is actually changing code you rely on at runtime. Why do they do this? Because it's hip, it's cool, it's what the "new wave" of developers are doing. The new wave of developers are wrong. Arguing for monkey patching against software engineering has as much merit as arguing creationism against scientific method. It's not good enough to simply believe you'll be smart enough to debug it when everything falls apart.

Just ... stop it.

Nokia 800^H^H^H770

Thanks to the sterling efforts of the chaps over at Maemo.org, I know have the ability to run the Nokia 800 OS, known as OS2007, on my Nokia 770. Flashing the new OS onto the machine was simplicity itself, given that a new FIASCO image is available and can be flashed in the usual manner.

So once it's all working, what can you expect? Well, my personal list of favourite new features is as follows:

  • Better look over all, especially the two on-screen keyboards
  • MUCH better Bluetooth support, including OBEX
  • Native support for Bluetooth keyboards and GPS devices
  • Automatic join of trusted networks on power on
  • Later versions of everything available
  • It might just be me, but it seems faster, too

There is rough to go with the smooth, though. One problem I've found is that the kernel included doesn't have smbfs support. If you use something like smbbrowser to connect to Samba shares on your network then you're stuck (at least, I think. I'll check for a solution.) There are also some battery life issues that might need sorting. The most major ones are the media metadata scanner going mad, and the internal alarm manager turning the device on at odd times.

If you notice, either through top or some other means, that metalayer-crawl is using up a lot of CPU time and draining your battery, then you might need to limit its scope somewhat. This is well described in bug 978. Metalayer-crawl is a simple program that indexes the identifying tags on media files stored on the system (e.g. mp3s), but it seems to get somewhat confused by symlinks and can easily end up recursively indexing the entire system forever. The fix for this bug simply causes it to only index files in the user's media directories.

Secondly, there is a strange problem with some devices that a 'hidden' alarm turns the device on at odd times. This simply needs the hidden alarm removing. First, become root, then run:

    $ /mnt/initfs/usr/bin/retutime -A ''

This simply removes all hidden alarm events. You could set custom alarm events with this utility if you wanted. I'll leave that as an exercise for the reader.

A final little tip that I quite like is the ability to use a long press of the power button to put the device into 'soft off' mode. This is basically the same mode as the device enters when the screen cover is put on, but sometimes it's nice to be able to access it without having to put the cover on. This is especially true if you're just temporarily putting it to sleep while you're otherwise engaged, and have power, USB or earphones plugged in.

To enable this feature, become root and edit the file /etc/mce/mce.ini. Find this line:

    PowerKeyLongAction=poweroff

and replace it with:

    PowerKeyLongAction=softpoweroff

Reboot the device and your new soft power off mode will work. Press and hold the power button in the usual way to turn it back on in a jiffy.

MegaHAL, Irssi, and very, very rude bots

One of the joys of IRC is the opportunity to write scripts, bots and toys that are not only entirely pointless, but also sometimes quite profane. A little AI script I knocked up to integrate MegaHAL with Irssi has gone through a number of lobotamies and now has the number of every regular member of the channel in which it is resident. Those members know who they are and what the bot in question thinks of them ...

Anyway, I put the script on my Irssi script page and it seems to be quite popular. Unfortunately, I hacked the AI::MegaHAL module from CPAN, installed only half the standard MegaHAL 9.1.1 distribution and generally made what can only be described as a one-of-a-kind bot. However, I decided to make it right, and the script now has some ... installation instructions!

So if you run Irssi and want to use an AI to provide fun and games in channel, or just to talk for you when you're too lazy even to spod, then grab the script and instructions from my megahal_irssi.pl page, install it, and have lots of fun.

MegaHAL/Irssi

Having an artificial intelligence in your channel is sometimes fun, so here's a way of integrating MegaHAL with Irssi for fun and games. It uses four major components.

First, you'll need the MegaHAL Perl module installing. Grab the megahal-9.1.1 source and untar it. Change to megahal-9.1.1/Megahal (the Perl module directory), build it and install it using the Makefiles provided. That's the only part of the MegaHAL distribution you'll need.

Týpïñg Àll Chäráçtêrs ìn Wiñdøws - Üpdátêd

Working at a company that produces software to assist in machine translation of documents, staffed by people from all over the world, it's sometimes handy to be able to type non-english characters. Windows doesn't exactly make that easy. If you have a keyboard for the language in question it is fine, because you can use various mode switch and shift keys to build up the keystrokes required to get the necessary characters.

Unfortunately, I don't have all those shift keys and switch modes and such. I'm English, and get lumbered with the most basic keyboard in the world. I have no extra keys. Now, on a Mac or Unix machine it's OK. The Mac uses option+key to create umlauts, graves and so on, and anything running X11 can use a compose key to make just about any character known to man. Windows is rather more ... arcane. You can press altGr+key and see what you get, but that seems to be pretty much random and changes system to system, or you can hold alt and type out the unicode number for the character you want.

Syndicate content