No more pink walls

    Still kickin

    Today, whilst in the Christchurch International airport, I needed to do what I thought was a fairly standard kind of task. Access the internet. Basically every international airport I’ve ever been to (which granted hasn’t been that many) has had wifi available, sure they know how to charge for it, but in this case I didn’t really mind.

    So anyway, I fire up to the laptop and look around, nothing. Nada. Not a thing. The wardriving app on the DS showed a bunch of APs, all with WEP or WPA switched on though. OK, that’s fine, no using my laptop. Frustrating as it meant I probably wasn’t going to be able to use VOIP, but you can’t have things everytime right?

    So we follow the helpful signs saying ‘www’ to a (very) small internet ‘kiosk’ made up of two coin operated machines. The keyboards were filthy and the old monitors had been stuck in on a less than ergonomic angle, but hey, it was connectivity. So I put in my $2 and the counter winds up to 10 minutes, then starts ticking its way back down. Screen wise, I don’t get a desktop as such, just an application offering to start a browser for me, no other apps available. By this stage I’m a little frustrated, no VOIP and now no IM meant that getting the message through that I needed to was going to be difficult. I tried a third option and went for Microsoft’s browser based WebMessenger.

    Big Mistake.

    Not only did this fail to load, but it actually crashed the IE4 based browser causing the whole kiosk to lock up. Well not quite the whole thing, the timer was still counting down, but it was game over for me and I had no option other than to just watch my money literally tick away.

    Where am I going with all this I hear you screaming? What I want to know is why the hell is it so hard to make a useable but secure internet kiosk?!!!? This technology isn’t exactly bleeding edge. Not trying to reignite the OS war or sound like a fanboy, but the first thing I notice is that all these systems are based on Windows, easily the least secure of all the major OS’s. Vendors are forced to lock the machines down, crippling it for the end-user, in an attempt to create some small amount of security when a comparable linux box would allow for greater functionality without nearly as many exploits. By the way, when I say that things are locked down, I don’t just mean that we’re forced to used IE and can’t open an Explorer window, I mean that little, useful things, such as JAVASCRIPT (!!) have been disabled. I’m not sure if anyone’s tried recently but its actually impossible to browse these days without javascript, not just ugly, impossible. Then of course you get things like today when the whole crappy box just packs up and takes you money.

    Any people wonder why I hate Windows.

    SCUMM

    1 comment

    Following up on last nights showing of the DS with linux… I’d like to show the following:

    Yes, that’s right, its Day the the Tentacle on the DS. Well actually (and obviously) its SCUMM VM running on the DS :)
    The Ds is bascially the perfect mobile SCUMM platform, its great! Its got the touch screen which gives a pretty reasonable interface and if I ever get some better hardware for storage I can even run the talkie versions.
    Gold

    Well seeing as how I’m at lca 2006, aaaand I’ve recently purchased a Nintendo DS, I thought it only fitting thaty I combined the two.
    The result…? I hideous mutation that I finally got running this afternoon. Here’s the obligatory blurry photo:

    It wasn’t the easiest thing to do, especially considering the limited hardware I had to work with (No CF or SD!!!) but its done.

    Here’s an interesting conversation that Linus decided to dip his toes in. Whilst he raises some good points I think that, like on other occasions, his comments are based heavily around his own preferences and maybe do not reflect a wider audience. Some of Jeff’s responses are very well thought out and explain with a little more clarity where GNOME is coming from.

    Well I’ve finally finished the write-up for my Altivec vs SSE testing. Believe it or not its quite an interesting read (Even if I do say so myself) and if you’ve ever wondered about what exactly SIMD is then its not a bad place to start.

    The report is available here

    This is purely for my own personal reference as its a bugger of a thing to find a solution to when you have the problem.

    The issue I had was with GRUB dual booting linux + windows (+OSX), which should never be difficult. The problem came about apparently because linux is on the primary drive while Windows the secondary. The error received when booting a ‘standard’ GRUB configuration is this:
    “Filesystem type unknown, partition type 0x7″
    When I say standard I mean somethng like the following:
    title Windows XP Professional
    root (hd1,4)
    savedefault
    chainloader +1

    The fix is to change the GRUB setting to the following:
    title Microsoft Windows
    map (hd1) (hd0)
    map (hd0) (hd1)
    rootnoverify (hd1,0)
    savedefault
    makeactive
    chainloader +1

    Which makes sense I guess, but I still think its an unnecesary step.

    IM Tales

    2 comments

    As much as it pains me to admit this so unequivocally, the Frog was right. I’m referring to the MacOS multi protocol messenger, AdiumX. This product is simply amazing. Everything is infintely customisable and tweaking it into the perfect, unobtrusive IM client that still provides the necesary notifications is not only possible, its made to look gorgeous at the same time.

    If anyone out there is using a Mac and IM without AdiumX then you are missing out big time. Like the Frog said in his own post, Fire was good, but this is so much better.

    Now if only there was a linux equivalent that was even in the ballpark.

    AS promised here are the results from the testing with the SIMD code. If you have no idea what I’m talking about see my previous entry here

    Results 1
    and
    Results 2

    As can be seen there was quite a bit of variance accross the different systems. The P4 2.80 really seems to come out on top everywhere and I can only put it down to the fact that it was the only system in the group that has SSe3 capabilites. I also wish to run the tests on this machine underclocked to 1.4Ghz under linux as I believe it will yeild slightly different results.

    Also I’ve recently learned that the speed of SSE on a chip is largely independant of its core clock speed, hence the similarities thats can be seen between SSE scores.

    Stay tuned for more details

    [Update]: The final results from this work can be found at http://noisymime.org/blog/?p=20 

    For the last few weeks I’ve been playing around using Single Instruction Multiple Data (SIMD) instruction sets. More specifically I’ve been trying to do a very high level, basic comparison of Altivec and SSE as it seems like something that is both intersting and relevant considering Apples imminent move to Intel.

    However, this seemingly simple comparison has a number of problems at the practical level. Firstly, there is no chip in production that supports both Altivec and SSE, nor does it appear as if there ever will be. This immediatly rules out a direct comparison. Secondly, and this is obvious but still a necesary point, there is no single architecture (ie x86, ppc etc) that has Altivec and SSE chips, making comparison even trickier.
    Finally thie clincher, I’m an impoverished uni student so any grand hopes of testing accross many different setups was always going to be impossible.

    The Plan
    Write a simple program that serves very little purpose other than to stress the SIMD units of various chips. Obviously repetitive is the name of the game here as SIMD units come into their own when dealing with unrolling loops. In this case a pi generator was chosen and all compiling would be done in gcc-4.0, no direct ASM code was to be written.

    The Hardware
    Obviously I needed test beds capable of running Altivec and SSE. Altivec was covered with both my Mac Mini (G4 1.4ghz) and the iMac (G5 1.8ghz). SSE was taken care of by my trusty P4 2.8 (Prescott). There was, unforunately a significant clock speed difference but it was unavoidable as I do not have access to faster ppc machines or a slower x86 (with unix)

    What does it do?
    OK so I wrote a little pi generator that uses basicly the most inneficient method of calculating pi, the series 1-1/3+1/5-1/7 … ~= pi/4. Initially I wrote up a version that uses the CPU alone. No unrolling of loops, no ‘normal’ optimisations, just basic, raw CPU grunt. I then wrote up versions of this that do their work with Altivec and SSE packed vectors. These two are almost identical except for the intrinsic names (These vary between Altivec and SSE) and 1 other, probably important detail. The SSE instruction set contains a hardware divide function whereas Altivec relies upon a software implementation of this.
    The Macs were both running OSX 10.4 (Tiger) whilst the P4 has been tested in linux (Ubuntu, Hoary) and the hacked Intel version of OSX.
    The pi generator itself performs a 128,000 iteration loop 1000 times in order to complete this testing.

    The results
    OK, the results amazed, confused and annoyed me. Instead of getting the nice spread of results I was hoping for, I came out with 1 clear leader. The P4 blew the other two machines apart, both in linux and OSX. By blew away, I mean the other two couldn’t even come close. The raw CPU time for the P4 was nearly twice as fast as the Altivec enhanced time of the Mini. Of course I expected the P4 to be faster in raw CPU due to its higher clock speed, but I did NOT expect it to be faster than the Altivec version, at least not by such a significant margin.
    Unfortunately the G5 decided to pack it in during testing. It gave results that were (considerably) slower than the mini and then crapped itself. Its back with Apple as I write this.
    I will be posting ‘exact’ results tomorrow for this, though roughly this is how it broke down:
    G4 1.4 PPC Raw CPU: 7 seconds
    G4 1.4 PPC Altivec: 2.5 seconds
    P4 2.8 Raw CPU: 1.5 seconds
    P4 2.8 SSE: 0.8 seconds

    There was practically no difference between the P4 in linux and OSX (They use the same header files etc so no real surprises). The difference between the Altivec and SSE times really amazed me though. The code is practically the same in each case (just changed for the platform) and yet the difference is more than would be expected from the clock speed difference alone.
    It should also be noted that the code on the P4 was using SSE2, NOT SSE3.

    So in the hope of getting some results that are even slightly comparable, the next step is to underclock the P4 and try again. I also wish to try some older, slower x86 CPUs if I can get a hold of them.

    Notes
    OK, this whole thing was aimed at being a programming learning experience rather than a comparison. These are my major notes:
    – Documentation for SSE is _terrible_! I’m sure its out there somewhere but I could find very little. Apple provide a small amount but even that is more related to migrating code (Altivec -> SSE) and there is not much on the additional features of SSE (ie the divide intrinsic and double precision variables)
    – Altivec is a ‘nicer’ interface than SSE. I’m sure this is due to Apples influence but there is a lot less ‘ugliness’ about it compared to SSE.
    – Its quite easy to get good improvement using both Altivec and SSE
    – I’ve really only scratched the surface of SIMD and its something I’d like to play with more down the line. Adding to my list of things to play with when I’ve finished this damn year.

    Impressed

    13 comments

    Well I’ve been having problems with the Mac. Disapointing I know. Its especially difficult trying to convince people how good the system is when it dies.

    Anyway I decided that the only step forward (Other than sending the damn thing back to Apple again) was to reinstall OSX. So I start doing all the things I normally do when reinstalling an OS. I copy my data. I make backups of all the application installers I can find. I backup all the data from the other userID on this PC. It takes a while.

    Eventually I stick in the OSX install disc and boot to it. I select the option to use existing user profiles on the new install and progress through normally. When the thing finishes and boots up I am blown away to find that the system is exactly as it was before! Not in the sense that it crashes all the time (This is still yet to be seen) but in the sense that my profile, the profile of the other user, applications and configs are all exactly the same! 90% of applications are still there are working without the need for a reinstall. At first glance I would swear that the installer didn’t actually do anything except for the fact that it actually boots up again.

    I know this is what a modern operating system SHOULD do, but I was blown away by the fact that this actually did it. More impressed with Apple, now if only it doesn’t start crashing again I’ll be positively delighted.

    Edit: OK the problem began reoccuring. bugger. Anyway long story short, and this will sound stupid, but I think its possible that it might be gcc-4.0 causing the problem.
    no I don’t have any technical reason to back this up (Maybe someone can help here) but after installing it the problem began again, after removing it and replacing it with gcc 3 I haven’t excperienced a single crash. I’ve fired up a heap of memory/CPU intensive apps and pushed pretty hard, but no crashes. If anyone can provide a reason for this I would love to hear it. Does gcc-4.0 replace any system files when its installed? its hard to imagine but its the only thing that even remotely makes sense.