Older blog entries for Michael (starting at number 29)

Firstly, I really need to tweak my Mozilla setup, as I do not like how Advogato looks under XFree86 4.1.0 with the Windows fonts installed when using Mozilla 0.93. The font is way too big. In addition the diary boxes on the home page are no longer all the same size. Oh for more hours in the day.

Trying to get more work done on my instruction scheduler simulator but lacking the motivation to really get into it. Trying to page in my Python knowledge, as after using it for a few days I was away for two weeks, so I need to sort of relearn it. Anyway, I should try and get the work done, as I want to submit a paper on the work I'm doing at the moment to ISCA 2002, should I have enough work done by early October (the paper deadline is early November).

Spotted a 25yo Glenfarclas for 35 UKP in a shop near here - very tempting :) Actually, if anyone here knows the answer to this I'd be grateful: I have a US keyboard, and want to find a way to map the UK pound sign to a key, such as the windows key, under X (mainly, though for the console I woundn't object either). Any suggestions?

At FPL I saw both Xilinx and Altera come up with some neat looking products. Both are doing processor/FPGA hybrids, with Xilinx putting 4 PowerPCs into a Virtex device and Altera putting ARM and MIPS cores (only one core but what seems to be a better interconnect and some RAM) into an Apex device. Very Sexy.

Long time no Advogato. Oh well. It's one of those things that's easy to put off then forget about once you get out of the habit.

What's changed? Well, I don't spend much time on SWARM these days. I've moved on to more OS research rather than low level processor stuff. I'm just back from FPL'01, where I presented a poster on my reconfigurable processor architecture. seemed to go down well, and had fun in Belfast.

Now I'm trying to write a simulator for the OS stuff in Python. I've only just learned Python, and I'm quite impressed. The simulator is essentially a list manager, so doing this sort of thing in Python is great.

Not done much on the OSS front I'm afraid. I did some hacking on VTWM to add GNOME compliance ;) I mailed off the source to the VTWM maintainer, but I doubt it made it into the source tree. I doubt there's much need for GNOME functionality in VTWM (I don't even use it, I just wrote it to prove a point :). I also wrote some XChat scripts (I've become an IRC user, sorry...) to implement part of the WimpCTCP stuff. At the moment clients that support the FACE CTCP can get my face image (it should return a 16x16 by 4 bpp grey image) and some other info, but I've not figured a neat way of using Perl/GTK from XChat scripts so that I can generate a face window. Anyway, what is there is up on the XChat scripts site. Not really rocket science I'm afraid.

Anyway, I'll try to keep this up to date for a while :)

Codewise I fixed numerous bits in SWARM. Matt, one of my fine office mates, is starting work on an embedded systems project. As part of this he's interested in writing a small RTOS aimed at the ARM, so he's using SWARM as his initial test platform. Over the weekend I added IRQ/FIQ support. All it really needs is some form of timer and it should be enough for a small multitasking OS to run on it.

This is actually of some use to me, as I'll need to use an OS at one point. I'm thinking of using Nemesis as my starting point. Wish me luck :0)

Oh, and I ache today as I fell quite a bit whilst snowboarding yesterday (it was on a dry slope I should point out). Had been doing quite well until yesterday - guess it was overdue pain.

Okay, okay, so my diary entries have been a bit spartan to say the least. Today some fun bits:

  • My DES source code is here.
  • Some nice humour for you to read: Red Meat, Snail Dust, and Bad Tech (though thank goodness Bad Tech finished its Matrix parody - too long).
  • Music madness: new albums out from Blur and U2. Bought the former, the latter will have to wait. The live CD with the Blur SE is cool.
  • Read, if you haven't already, Lingua::Romana::Perligata. Has a coolness to usefulness ratio of way more than one, and also has a point.

Phew. Anyway, SWARM work today - I need to get more done on the copro front. My office mate, Cheese Boy, is starting to learn ARM assembly, so is using SWARM now - useful feedback and feature requests ahoy.

Saw Blur play live on ...Later (BBC live session program hosted by Jules Holland) where they played "Music Is My Radar", "Girls and Boys", and "Song 2". I wasn't that impressed with the single of MIMR, but live it sounds really good. Need to get my hands on Graham Coxon's new album. His first was good, but not something to listen to repeatedly. Apparently the second one is better and more accessable.

For the LettuceHead groupies out there, Adam and I played at the Halt bar last Saturday, and managed not to be thrown out (though we did go under false names just in case...). We played "Their Goes God" by Crowded House and "Misshapes" by Pulp.

Today's gratuitous mention: Hi Neil!

DES

Fixed the bugs in my DES implementation (with some much appreciated help from John) - so now it works correctly. I'll put both the naive version and the optimised version on the web at some point.

DES

Managed to get my software implementation of DES down to have a cycle count per block of 3.3% the naive implementation, and a key setup time 40% of the original. Optimising code is fun :-) By the same BOE calculation I used before, my implementation would achieve a theoretical 2.8 Mbytes/sec on a 1GHz processor. There are no 64 bit values used at all in this implementation now. I ran it on a real StrongARM and the speedup is very noticable.

More PhDs

Congrats to Ian who has submitted his draft dissertation and is heading of to work for Altera next week.

25 Oct 2000 (updated 25 Oct 2000 at 23:39 UTC) »

DES

Been, amoungst other stuff, optimising my DES implemenation today. The key setup time has tripled at the moment (though I have an idea how to get that down), but the number of cycles taken to process a 64 bit block is down to 12% of the original. This was achived by a mixture of static preprocessing, preprocessing the key setup, removing most uint64_t values and using two uint32_t values where possible (my target plaform is the ARM, so 32 bit operations are a Good Thing(tm)), and applying some human optimisation to the bit permutations. So far this has been just using C - I've not needed to use any asm - I've managed to express everything I want so far in C.

Next a little more optimisation of the C version, before I try and apply hardware to some parts of the algorithm (mainly the bit swizling). I have two hardware versions in mind - one a plain partial hardware/software implementation, and one which uses partial evalution to put the key into the round calculations.

Update

Managed to half the key setup time. I've completely removed 64 bit values except as the inputs to the algorithm. By a BOE calculation, it can now process about 0.8Mbytes/sec on a 1GHz XScale/StrongARM, but that's not including cache-misses. Not particularly impressive.

Other

Had to reboot a keyboard today. I think the microcontroller inside had got confused, and the PC it was attached to refused to acknowledge it until I powered off the machine (rebooting it didn't help).

Installed GNAT (the gnu Ada compiler) today - scary. I got flashbacks to when I was being taught Real Time Systems in Ada.

Learned how to use a diablo.

Oh, and I forgot to say congrats to adamd who submitted his PhD dissertation last week. He now seems to have a perpetual smile on his face :-)

D35

Still got a broken DES implementation. Tried various kludges to see if I could get it to work with the test vectors I'd found, but to no avail. But it has the correct timing properties, which is what I'm interested in, so for now I'll just go with what I've got (pressing deadlines...).

Music

iain: Placebo dull? I guess Brian Malco's voice is something you like or hate - forages I couldn't stand Brett Anderson's voice, but eventually came round. I don't think Placebo qualify for boring though. When I say them live the other week the momentum of the show was really good. It dipped a bit with too many slow songs strung together, but came out tops again finishing with Pure Morning, Taste in Me, and Nancy Boy.

On a side note, Lettucehead will hopefully be playing on Saturday - nothing spectacular, just an open stage affair, but it'll be good to play again.

WebCam

Hmmm. Fixed itself - this, of course, just means it will go wrong again. Went through our second power-supply unit too - I think being continuously plugged in to power the camera overheats the wee things. Now our second camera is without power.

23 Oct 2000 (updated 23 Oct 2000 at 22:25 UTC) »

DES

Yeah, yeah - DES is old news, but I wanted to start simple, so DES it is. I've written a naive DES implementation, optimisation comes next, then the software/hardware hybrid. Then something more whizzy like Rijndael.

But... there's always a but isn't there? I have got my DES implementation to a stage where:

D(E(x)) = x

However, when I run the test cases I've found on the web, they don't show the correct ciphertext for a given plaintext/key combination. I've got a feeling that it lies in the bit ordering - all the documentation starts with the LSB on the left - but they continue this notation down to the hex values - to decimal five would be written in hex as A - because the binary is 1010. I'm confused. I can't really find documentation to back up this suspition, but the blank key with the parity bits every eigth bit is written 0x0101010101010101, rather than 0x8080808080808080 as I'd expect.

I'll try munging some things tomorrow to try and fix it, but as I'm doing it as an academic exercise - i.e. I need the general alg, and something which will do D(E(x)) = x, but I don't need to interface with other DES software, I think I'll leave it if there is no obvious solution. Perhaps I can call it D35 :-)

Music

Generally I try and keep it just coding up here, but seeing as Kid A generated so much traffic on here, I thought I'd add a couple of recommendations. First is Black Market Music by Placebo and the second is Showbiz by Muse. Saw Placebo live last weekend in Glasgow. Really good show. The album is more pop than there last album (which I think is the best they've done). Muse are new to me, but I keep seeing them live on tele and they're really good.

Misc

The webcam is broken, but I've just not had time to look into the why yet - been too busy.

18 Oct 2000 (updated 18 Oct 2000 at 23:35 UTC) »

SysAdmin

Dipped my fingers into the messy world of ad hoc distributed sys admin today. I got using my NetBSD enabled shark so much (see previous episodes for details :-) that I wanted to mount my home space there. Being a largish dept we have a central place for such things. However, to access this a machine needs to be "trusted" by the dept. The first stage of reaching this was teaching master about both NetBSD and sharks.

Master is what we use as a centralised point of configuration for (almost) all our unix boxen (it originated from cl.cam.ac.uk, but came up Glasgow via a couple of people we hired from there). Master is responsible for distributing standard files (such as those in /etc), tools (our version of arch), setting up the automount maps etc., and it does this for a hetrogenous collection of machine types and Unix types. Anyway, breaking this would not make me popular.

Thus I spent a while understanding how a NetBSD machine is setup (who stole tcpd? :-) on both ix86 and the sharks. I then compiled up the correct version of essential binaries for both platforms (e.g. rdist), secured the boxes with hosts.[allow|deny] and inetd, plus all the other magic the department requires, and distilled it all into master, along with the documentation of what I'd done.

And it looks like it works. The proof will be when I come in tomorrow morning and the nightly dist has happened with no errors. Now adding a new NetBSD box to the dept should be real easy.

Now I can go back to real work...

Update

All seemed to go well with master - phew!

Went juggling with Greg -- first time in an age I've been. Good fun.

20 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!