Content here is by Michael Still mikal@stillhq.com. All opinions are my own.
See recent comments. RSS feed of all comments.


Tue, 30 Dec 2003



31 December 2003

    Apt (debian) cheat sheet

    So here's the same thing I did for RPM, but for the Debian apt stuff:

      apt-get
         -s        simulate
         install   install the named package
         (apt.conf defines commonly used options)
         
      apt-setup    sets up /etc/apt/sources.list
    
      dselect      select packages to install
      apt-get dselect-upgrade
                   actually install those packages
    
      dpkg-reconfigure
         --all     make sure all packages have been configured
    
      dpkg
         -s        get status of a package
         -L        list files from a package
         -S        who owns this file?
         -i        install this .deb file
    


posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 29 Dec 2003



30 December 2003

    Hmmmmmmmmmmm

    One of those days when it's hard to motivate myself. Three coffees for breakfast haven't helped. I guess I'll just plod along. It didn't stop me from getting things done though -- I finished my review of Just for fun for instance. You'll have to wait for the next AUUGN to see what I think though.

    RPM cheat sheet:

    Cause I am bored...

      -i          install
      -U          upgrade (or install it not currently installed)
      -e          erase
      -v          verbose
      -h          display progress hash marks
      -V          verify an installed package
      -q          query for installed packages matching the specified search term
         -i          display lots of information about an installed package
         -p          display lots of information about a raw RPM file
         -l          list files owned by the packed
            -c          configuration files
            -d          documentation files
         -a          list all installed packages
         -f          who owns this file 
    
      --force     force an installation
      --nodeps    don't care about dependancies when installing
      --checksig  check package integrity (uses GPG, you might need to import a public key)
    


posted at: 04:00 | path: /diary | permanent link to this entry


Sat, 27 Dec 2003



28 December 2003

    Nice vs renice

    So, I'm paging through a bunch of LPI study material, and it strikes me that the nice and renice man pages disagree on what the meaning of process priorities is. This could mean that the commands do different things with the number, or that the documentation needs love. Anyone out there got a suggestion?

    I've put it on my todo list to look at the code, but that will take a while to get around to. I don't want to get to distracted.

posted at: 04:00 | path: /diary | permanent link to this entry


Fri, 26 Dec 2003



27 December 2003

    So, that was Christmas

    Pretty good really, the kids certainly had a good time.

    ImageMagick vs GraphicsMagick

    Hmmmm, I hadn't noticed the fork take place. It seems to have been mostly amicable, although not all of it.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 22 Dec 2003



23 December 2003

    Bad compiler error messages suck

    This one is from visual studio:
    C:\home\mikal\webservice-statepersistance-xmlmagic\wwwroot\Service1.asmx.cs(329): ) expected
    
    The problem?
    [WebMethod]
    public string RecordSave(string	instate)
    {
    	// TODO
    }
    
    Should have read:
    [WebMethod]
    public string RecordSave(string	instate)
    {
    	// TODO
    	return "";
    }
    
    A more helpful error message would have saved me some significant time looking for orphan brackets.

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 21 Dec 2003



18 December 2003

    New work machine

    An interesting little box. For a start, it has two serial discs, which is the first time I had had to deal with SATA before. Also, the ethernet on the motherboard was gigabit.

    Booting with an unsupported network card on the Debian install: The secret here is to build a module, hit the virtual console of Alt-F2 during the install, mount the floppy disc, and then insmod the module yourself. You are of course going to be building a custom kernel once the box is built anyways.

    Interrupt problems with SATA: I got lots of the following with Debian stable (2.4.18):
    Dec 17 10:01:06 homebrew kernel: ide2: unexpected interrupt, status=0xd0, count=634
    Dec 17 10:01:08 homebrew kernel: ide2: unexpected interrupt, status=0xd0, count=675
    Dec 17 10:01:12 homebrew kernel: ide2: unexpected interrupt, status=0xd0, count=707
    Dec 17 10:01:18 homebrew kernel: ide3: unexpected interrupt, status=0xd0, count=759
    Dec 17 10:01:23 homebrew kernel: ide2: unexpected interrupt, status=0xd0, count=778
    Dec 16 23:01:28 homebrew kernel: ide3: unexpected interrupt, status=0xd0, count=800
    Dec 16 23:01:32 homebrew kernel: ide2: unexpected interrupt, status=0xd0, count=827
    Dec 16 23:01:38 homebrew kernel: ide3: unexpected interrupt, status=0xd0, count=909
    
    It turns out that was fixed by building the latest 2.4 kernel (2.4.23).

posted at: 04:00 | path: /diary | permanent link to this entry


19 December 2003

    CLUG Christmas BBQ

    Has been moved, due to an outbreak of childhood chicken pox at my house.

posted at: 04:00 | path: /diary | permanent link to this entry


22 December 2003

    Distracted

    I've been distracted by Andrew's chicken pox (which is well and truely on the mend now), so I haven't been doing much else in the last week or so now. It was a little exciting for a bit there -- he even had a chicken pock on his eye. Apparently that could have been a blindness thing, but he got lucky and it missed by a couple of millimeters. Perhaps $DEITY is looking out for him...

    Now we just have to wait and see if Matthew gets the chicken pox. It would be lovely (sarcasm), we've already cancelled most of Christmas anyways.

    Another article about ImageMagick

    So, I'm thinking about another article about ImageMagick, to answer some of the questions raised by people who read the first article. Here's your big chance -- what would you like to know about ImageMagick?

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 15 Dec 2003



16 December 2003

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 10 Dec 2003



11 December 2003

    Playing with lirc

    Hmmmm. Very distracting. Nearly working though.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 08 Dec 2003



09 December 2003

    CVS for Windows developers

    So, I've been looking into CVS options for Windows developers, and I am thinking that CVS over SSH with public keys is pretty sweet. I think that Tortoise CVS is probably the nicest CVS implementation for Windows I have seen so far, but it doesn't provide the IDE integration which the Windows people are used to.

    On the IDE side of things, source control in Visual Studio goes through this particularly broken API called SCC, which isn't publically documented. This is why the Igloo source code isn't available. SCC also only supports one source control system at a time -- there is no way to say that today you're using Visual Source Safe, and tomorrow CVS.

    Problems problems problems.

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 07 Dec 2003



Read about my Christmas lights

posted at: 04:00 | path: /site | permanent link to this entry


Mon, 01 Dec 2003



02 December 2003

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 24 Nov 2003



25 November 2003

    Final year project talks
    Didn't get a good nights sleep last night because of the boys, so ended up at the University of Canberra final year project presentations. The most interesting was the one which extended on the final year project I was involved in last year, but there was also some work on mobile phone transmission simulation, a playstation 2 game (using the amateur Linux developer's kit), and a remote robot control system.

    LCA2004
    Thinking about the conference paper I have to give.

    PDF conferences
    Trying to decide if I should apply to present something at a local PDF conference next year.

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 23 Nov 2003



24 November 2003

    Another weekend
    Installed the oven and cooktop. Now I just need to install and duct the rangehood...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 18 Nov 2003



The making of Twinkle Tux

    This page documents how I built a penguin out of fairy lights...

    Tux is the official mascot of the Linux operating system, to which I have made various contributions over the years. Tux was originally drawn by Larry Ewing, and looks something like:



    The goal was to turn this into something which worked well with fairy lights poked through holes in a piece of MDF. I guess I was thinking of pointillism when I originally came up with the idea.

    It seemed like a good idea, but the bit which worried me the most was to ensure that the image was clearly a penguin at the end of drilling several hundred holes in a big bit of dead tree. Being a software engineer, the obvious solution was to whip up something which could simulate Twinkle Tux.

    Taking the image that I had in mind, I first needed to force it into the colors which were available to me from fairy lights (red, green, blue, and yellow in the set I wanted to use). I therefore wrote a program which generated a false color Tux, in my restricted palette. This is the code I came up with, if you care about such things. You should note that it's a quick and dirty, not an example of good coding style.

    My false color Tux looked like:



    You can see that he's clearly still a penguin. Next, this image is too big, so I used a command line tool called convert, from the ImageMagick suite, to shrink it. If you're interested in ImageMagick, you should checkout my IBM DeveloperWorks article on the issue.

    Here's the tiny penguin I ended up with:



    Now, this is not so clearly a penguin, so I used the GIMP to touch up the image. Here's the small version, and a bigger one so you can see what I was doing...

     


    You can see that this is where the border got added as well. Now, this doesn't look all that impressive, but it looks better with fairy lights because they're not square. The final coding step was to decide if this was going to be clearly a penguin when do with fairy lights. I therefore whipped up a fairy light simulator, complete with alpha blending. You can get the code here, with the same proviso as above, and noting that this code also needs my libmplot graphics library.

    Here's the simulation:



    We should note that it's mildly deceptive because it assumes that all colors of fairy lights are equally bright. This simulation also looks better if you step back from your monitor, which is a lot like standing at the far end of my driveway.

    So, how many lights am I going to need? The simulation assures me:

    Number of lights used: 707 (146 red, 178 green, 184 blue, 199 yellow)
    


    That's a lot of lights. 240 colored lights (60 of each color) costs $14.95 at Woolworths, but I need the right number of each color. In total, I need to buy 4 sets of colored outdoor fairy lights.

    Finally, I needed a computer generated image to serve as the cutting pattern. A simple hack to the lights code gave me:



    Now I could move onto the dead tree part of the process. To get the cutting pattern onto the wood, I used a mate's video projector to project the picture above onto a big bit of paper taped to an old door in my garage.





    I then laid this over a pre painted bit of MDF, and could start cutting. It became pretty clear that I needed to drill small pilot holes with the bit of paper -- the larger holes destroyed the paper too quickly. After a couple of hours of drilling, and several worn out drill bits, I ended up with the finished wooden sheet.









    You can see in the next pictures that I had some problems with the MDF flaking away on the back side of the wood. This caused some concern for a while, but it doesn't seem to have been a major issue. Next time I wont use MDF.







    Next I inserted the fairy lights, minus their globes. The lights are siliconed into place, which should hold them in nicely.

    Next I inserted the globes, using the simulation above as a reference to what color to use where.

    A last, I could actually see what the finished product would look like:





    That picture was taken with Twinkle Tux on my workbench in the garage, with one of my sister in laws holding it up. Now to hang Twinkle Tux.

    I ended up bolting Twinkle Tux to the front of the garage, which gives us the following pictures of it at it's final resting place.











posted at: 05:00 | path: /christmas/twinkletux | permanent link to this entry


The making of Twinkle Tux

    As a hobbyist Linux kernel hacker, it struck me as obvious that the first thing I should make is a Tux made out of fairy lights. Tux is the official Linux mascot.

    There's a page documenting how I made Twinkle Tux if you're interested.

posted at: 05:00 | path: /christmas | permanent link to this entry


19 November 2003

    stillhq.com down
    My ISP, Goldweb has suffered some form of catastrophic failure, and is offline (they have been for nearly 24 hours at this point). I'll wait to see what the damage is.

    Update: they're back, and they even managed to not lose any data. Well done guys. It turned out to be a disc failure.

    Twinkle Tux
    So, I've been playing with something I call twinkle tux. I don't want to say any more just yet.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 17 Nov 2003



Asia BSDCon 2004 (March 12-15 2004, Taipei, Taiwan)

    Language: English
    Focus: BSD Unices
    Willing to pay speakers costs: Unknown
    Submissions due: November 30, 2003
    Speakers informed: January 31, 2004
    
    URL: http://www.asiabsdcon.org/cfp.shtml
    


posted at: 04:00 | path: /cfp | permanent link to this entry


The Fifth LCI International Conference on Linux Clusters: The HPC Revolution 2004 (May 18-20 2004, Austin, Texas, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


18th Large Installation System Administration Conference (November 14–19 2004, Atlanta, Georgia, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


13th USENIX Security Symposium (August 9–13 2004, San Diego, California, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


Samba Experience (April 5th - 7th 2004, Göttingen, Germany)

    Language: English (but other languages possible)
    Focus: Samba
    Willing to pay speakers costs: Unknown
    Submissions due: February 14, 2004
    Speakers informed: March 1, 2004
    
    URL: http://sambaxp.org/call_for_papers/
    


posted at: 04:00 | path: /cfp | permanent link to this entry


2004 USENIX Annual Technical Conference: Free and Open Source Software (June 30–July 2 2004, Boston, Massachusetts, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


PyCon 2004 (March 24-26 2004, Washington DC, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


18 November 2003

    kfree()ing a vmalloc()ed buffer
    Crashes. Don't do it. Use vfree().

posted at: 04:00 | path: /diary | permanent link to this entry


2004 USENIX Annual Technical Conference (June 27–July 2 2004, Boston, Massachusetts, USA)

posted at: 04:00 | path: /cfp | permanent link to this entry


Sun, 16 Nov 2003



17 November 2003

    Back at work
    After my three weeks leave. Doh! To make it worse, the hard disc in my Toshiba blew up just before I left (it was an IBM disk, say no more), so now I need to spend most of today rebuilding my world.

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 13 Nov 2003



14 November 2003

    Cooking salmon
    Last night I cooked with fresh salmon for the first time. I did it on the barbeque. The basic method was:
    • Preheat the barbie on low
    • Lightly butter the side of the salmon you're going to cook first
    • Chuck the salmon steaks onto the grill part of the barbie
    • Wait three minutes
    • Rotate 90 degrees
    • Wait two minutes
    • Lightly butter the side that is facing you
    • Flip
    • Wait two minutes
    • Eat


    Here's a sample of how mine turned out:



    Syncing FAT filesystems of MMC cards via USB
    Why does it take so long? A 64 MB change took in the order of minutes to respond to a sync command.

    Siemens SL42 MP3 playlist format
    Creating the playlists for the inbuilt MP3 player for my Siemens SL42 is painful at best when you try to use the phone keypad. Basically, there's no way to say "randomly play everything" unless you use a playlist, and to create a playlist with the phone you need to select each song individually. Anyways, so I mounted the MMC on my trusty laptop, and it turns out the playlist format is trivial. Here's what I did:

    mount /mnt/mmc
    cd /mnt/mmc/mp3
    rm aaa.mpl
    for item in `ls *.mp3`
    do
      echo $item >> aaa.mpl
    done
    unix2dos aaa.mpl
    


    In other words, all you need is a DOS line ending file which lists the MP3 files to play.

    AUUG National Committee meeting
    In Sydney...

    Tags for this post: blog cooking food auug fat_filesystem mmp flash storage
    Related posts: Chocolate fudge self saucing pudding; Open Computing in Government; Dinner; AUUG 2006 NSLU2 hacking talk; The first press coverage of the actual conference?; Dishwasher Trout

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 11 Nov 2003



12 November 2003

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 06 Nov 2003



07 November 2003

    On holidays... Installed powerpoints, a shade sail, roof fans, and the like. No code written. Please leave a message after the tone.

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 29 Oct 2003



29 October 2003

    PhD
    Well, I got the application in, after having taken into account some comments from Eric. I guess I now wait. Getting the actual bit of paper in took all afternoon...

posted at: 04:00 | path: /diary | permanent link to this entry


30 October 2003

    Matthew
    Had a shocker last night. He was running a quite impressive fever (or so I thought) of 38.9 degrees celcius, under the arm, after Panadol which normally takes the temperature down by about a degree. It wasn't dangerous, just warm.

    Understandibly, he wasn't very happy, and screamed most of the night. By morning he seems to have broken the fever though. This is a good thing, because Catherine and I must have got about four hours of sleep each.

    Reading
    ...Because it's better than marking...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 28 Oct 2003



28 October 2003

    Powerpoints
    I added six to the house today. That took all afternoon to cable, and a couple of hours in the evening with my sparky mate to connect up... It rained all morning, and the kids needed to go to the doctor, so I didn't get much else done.

    PhD
    Eric, my prospective PhD supervisor, came back with some comments on my PhD application, which I need to spend some time digesting.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 27 Oct 2003



27 October 2003

    Busy, busy, busy
    Well, I've started my three weeks leave, and I seem to be busier than I was before... I must admit that there's less work to be doing though.

    PhD application
    Well, the draft is finalized, and off with the prospective supervisor for review. This is a good thing because the actual finished applications are due in at ANU at the end of the week.

    This also leaves me some more time to focus on the exploratory coding I need to do.

    COMP 2110 (Software Design)
    We had a tutors meeting, and now I need to mark a huge mound of final assignments. There is a moderation meeting on Friday, so I need to put some effort into this sooner rather than later...

    Handyman stuff
    Did some basic handyman stuff as well, like fixing a gate, and getting some electrical stuff done with a Friend.

    Kids
    I even found some time to play with the kids.

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 23 Oct 2003



24 October 2003

    ODMA
    TRIM implements the ODMA 1.0 specification. This works with a bunch of authoring applications, and has for many years. Yesterday, we got a call from someone implementing ODMA in their authoring application and having troubles with TRIM. It turns out that they were lucky enough to have stumbled on a behaviour which is allowed by the ODMA specification, but not done by any one else, and specifically stopped by TRIM because it makes little sense.

    The behaviour? They create a blank document, and then ask for it to be opened. TRIM doesn't like doing this, because we don't know enough about the file at the time of the newdoc() call to be able to give it a meaningful filename (for instance the extension which the user expected for the document).

    Luckily the authoring app guys are reasonable, and we'll be able to sort it out...

    For the benefit of Google users who end up here (and me for when I forget), here are the ODMA specifications which are relevant:

    Specification version
    Original MS Word
    PostScript
    PDF
    1.0
    odma10.doc
    odma10.ps odma10.pdf
    1.5
    odma15.doc odma15.ps odma15.pdf
    2.0
    odma20.doc odma20.ps odma20.pdf


posted at: 07:00 | path: /diary | permanent link to this entry


23 October 2003

    CLUG
    Well, CLUG last night seemed to have a small turnout, which was a little sad. Then again, I can understand why Tridge was the only Ozlabs guy who turned up.

    Darren gave an interesting talk about the raidtools which implement software RAID. I donated a box with a couple of hard discs and a couple of floppy drives for the demo. Anyone feel the need to a mirror across two floppies?

    On the way home, I had to change my route because of a certain US President's motorcade.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 21 Oct 2003



22 October 2003

    Rest in peace, Will Johnathon Russell


    Notice from The Canberra Times:
    WILL JOHNATHON RUSSELL Stillborn October 18, 2003 So dearly wanted - 
    so sadly missed We will remember you always May you always watch over 
    us and know how much you are loved Mum and Dad love you Alli and Paul 
    would like to invite family and friends to attend a service for their 
    son Will to be held in the Chapel of the Norwood Park Crematorium, 
    Sandford St, Mitchell tomorrow WEDNESDAY October 22, 2003 commencing 
    at 10am. Lots of bright colourful flowers most welcome WILLIAM COLE 
    FUNERALS Canberra 6253 3655
    


    My soul finds rest in God alone;
       My salvation comes from him.
    He alone is my rock and my salvation;
       he is my fortress, I will never be shaken
    ...
    My salvation and my honor depend on God
       he is my fortress, I will not be shaken
    Trust in him at all times, O people;
       pour out your hearts to him,
       for God is our refuge.


    Psalm 62:1-2, 7-8

    Will Johnathon Russell, son of Rusty and Alli -- died 18 October 2003. You're with God now.

    What can I say? Nothing will ever give me the right to say that I understand what Rusty and Alli are feeling. Whilst Catherine and I lost our first, it was very early on in the pregancy, when we hadn't fully come to terms with being parents yet, and when these things are much more common (and more expected).

    I understand fear of losing someone, having nearly lost Catherine and Matthew at the same time at the start of this year, but I've never lost someone so very close to me.

    It really makes me appreciate Andrew and Matthew. I just pray that I'll be able to see how to help Rusty and Alli if they need that help.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 14 Oct 2003



15 October 2003

    On leave soon
    In Australia, you get four weeks recreation leave a year. My time this year has snuck up on me, and now I have to find some stuff to do for the three weeks I just decided to have off in a couple of weeks.

    Chasing down kernel bugs
    Well, I've been looking at the OSDL bug reports, and I can replicate a 2.4.22 bug there. I thought I had it nailled, but I'm wrong. Anyways, now I need to determine which of the changes between 2.4.21 and 2.4.22 introduced the change.

    While we're talking about the kernel
    What is it about open source which brings out the lozer in some people? Do people think that because the code is free they also have a right to everyone else's time for free as well? This guy would have been well served with a google before opening his mouth.

    J2EE
    So, the boss says "think about J2EE". So I do.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 07 Oct 2003



08 October 2003

    Running out of PCI slots
    Doh! One of my machines has an integrated, all in one, everything on the board, no more to buy, motherboard and I have managed to run out of PCI slots on it (there were only two to start with). I learnt this the trying to find a hole to plug the card into way.

    Is monetize a real word?
    Cause Grant just coffeetized the floor...

    PhD application
    Progresses.

    Reading up on design patterns
    For a tutorial I have to run tonight. The standard one that everyone seems to be taught is Model-View-Controller, but Observer seems to have been mentioned in the lectures as well.

    LCA 2004


    There have been heaps of updates to the page -- you can even see when I am presenting...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 06 Oct 2003



07 October 2003

    I now understand what's wrong with my resume...
    I haven't been lying enough. I'm glad that's cleared up.

    Other stuff
    Working on my PhD application. It's due in at the end of this month. I wonder if they'll accept me?

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 01 Oct 2003



02 October 2003

    A modest proposal for micropayments
    I've been running this site for many years, and it takes a lot of work on my part to develop all of the open source software that I do. Why do I do it? Because I believe in open source. However, the costs of hosting build up over time, as I am sure if the case for many people. This is why popular sites sometimes drop off the air.

    In the past people have made proposals for complicated micropayment systems to help keep sites running. These have ranged from subscriptions, to credit cards, to whatever. Let's face facts for a second though -- these plans are flawed.
    • Anything involving subscriptions wont work because the Internet is about hitting new sites every day, and you might never return to that site -- if the content was useful once, then that's cool. A subscription is based on the concept of you returning all the time. It simply doesn't work for the person who Googled, and found your useful page.
    • Anything involving credit cards is going to make people concerned about the safety of their personal data, and whether their credit card will then be fraudulently used.
    • Finally, micropayment systems based on changed to the protocol layers will take a long time to be adopted (if ever) because of the large installed base of client who miss out on upgrades. When was the last time you grand mother upgraded her machine to the latest version of Mozilla?


    I therefore humbly propose the following. Pages, if they feel the need for some form of micropayment, should display unobtrusive advertising (down the right hand side of the page, or a small banner perhaps). Google adsense, which is what I have been using for the last couple of days, is good for this. The other advantage of adsense is that the adverts are targetted to the content of the page, which increases the chances of it actually being a useful service for clients.

    Then, if you like a page, or it helped you, then click on an advert. Read the stuff at the other end. Don't just click because you can, make sure that you understand that in return for the content you just read, you agree to be advertised to. Don't click spam though (repeatedly clicking on ads) -- the advertising providers can detect that, and will punish the content provider, which is probably not what you intended.

    If you don't like the content, don't click on an advert. If you don't like advertising, don't click on an advert. If you can't see an advert which is of interest to you, don't click on an advert.

    However, don't pretend we're ever going back to an adverting free Internet. The dot com world changed all of that, be it a change for good or bad.

    Dot NET ate my code
    Where once my web service used to run, I now get:
      A potentially dangerous Request.Form value was detected from the client (txtChartData="

      Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.


    The answer is that Microsoft is seeking to solve insecurity by better validation testing of inputs to your web services. However, they're doing it in such a draconian way, that everyone immediately turns it off. Checkout this page for more information.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 29 Sep 2003



30 September 2003

    Google Adwords
    So, there are now Google adwords on these pages. The interesting thing is how targetted the ads are -- there have been a couple of instances where I am looking at a page I wrote a while ago, and the ad points to a page I find interesting. Very cool.

    On the Google cool front
    This paper discussing their filesystem is pretty sweet too.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 28 Sep 2003



Mandocs for linux 2.6.0-test6

    I thought I would regenerate the mandocs for 2.6.0-test6, as there has been a bit of change in the last few releases. Checkout the man pages here.

posted at: 07:00 | path: /linux | permanent link to this entry


Thu, 25 Sep 2003



26 September 2003

    CLUG last night
    We had Roslyn Dundas come in and have a chat about Open Source legislation last night. She seems to have her head screwed on, and certainly listened to what people had to say. I was surprised by her age (she's quite young), but that was a plesant thing in that I was expecting someone 100 years old...

posted at: 07:00 | path: /diary | permanent link to this entry


26 September 2003

    CLUG last night
    We had Roslyn Dundas come in and have a chat about Open Source legislation last night. She seems to have her head screwed on, and certainly listened to what people had to say. I was surprised by her age (she's quite young), but that was a plesant thing in that I was expecting someone 100 years old...

    No source code?
    You need to read this article.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 24 Sep 2003



25 September 2003

    Blogging
    So, one of the guys at work wonders why this blog doesn't mention how angry I am with my boss... Herm... Is Google Cache a big enough answer?

    Then again, I should make it clear that I am not actually angry with my boss...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 23 Sep 2003



24 September 2003

    KernelTrap interview with Rusty
    It's nice to see people based in Canberra (and who regularly come to the local LUG) featured on sites like this. The interview is also an interesting read.

    Rusty mentions a paper on futexes, which I will one day get around to reading...

    Also, he mentions: I wrote the Unreliable Guide To Kernel Hacking and the Unreliable Guide to Kernel Locking (which require updating for 2.6) which sit in the kernel sources under Documentation/DocBook/ -- which sounds like an interesting task for someone.

    Saturation coding
    I'm pushing a deadline at work, we're nearing the 5.2 release of the product, and I've been burning the midnight oil a little to get a nice feature ready in time for it to get into the product, having been QA'ed properly. I think I'm nearly ready now though. I think I'll need to have Friday off to see this year's Floriade though.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 22 Sep 2003



23 September 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 21 Sep 2003



22 September 2003

    Weekend
    A big weekend, I don't know where to start. I put up the shelf I had painted for Catherine, got a migrane, recovered, did some gardening, cut down a tree, and a little bit of this and that.

    Like I said, a big weekend.

    Fiction
    Perhaps I'm slow on the uptake, but I've just discovered Cory Doctorow, who is a really good science fiction author -- checkout 0wnz0red for a sample.

    In at work late tonight
    Doing some stuff which matters...

    Stuff from LWN I want to read when it's free
    Being too poor at the moment to front a subscription and all...

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 18 Sep 2003



19 September 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 17 Sep 2003



18 September 2003

    Kernel scripts
    Well, I now have scripts which automate keeping me up with the latest of Linus' change sets, which hopefully means that Andrew Morton et al wont have troubles applying my patches any more. This is a good thing.

    Understanding .NET streams
    There are just so many classes exposed. You need to read: http://www.ondotnet.com/pub/a/dotnet/2003/04/14/streams.html

    Understaning interrupts
    Ok, I know that ISRs are an over discussed concept in introductory Linux kernel books, but here's the whole thing in a couple of paragraphs.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 16 Sep 2003



17 September 2003

    The kernel-doc never ends (again)
    Well, I forward ported those patches from yesterday, and will resubmit them tonight. I also fixed the pdfdocs make target while I was at it so that I now compiles. I'll also resubmit the ignore case makeman patch.

    The warning squelching continues...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 15 Sep 2003



16 September 2003

    The kernel-doc never ends
    I submitted mandocs_tweaks 1 thru 15 today. Unfortunately, the mailer I was using corrupted the tabs etc, so I had to post a URL to the mega patch. Then, it turns out that Linus' tree has move too much underneath me, and I need to redo them anyways.

    Doh!

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 14 Sep 2003



15 September 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 11 Sep 2003



12 September 2003

    Listening to: Beautiful (featuring Katie Underwood) - Disco Montego

    Gordon says hello to Linus
    Gordon says "hi" -- isn't Gordon nice?

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 10 Sep 2003



10 September 2003

    Work
    A very productive day getting bug fixes done. We're allegedly 16 days away from a release.

    Horde
    Finally got horde webmail working. I had pain with imap authentication that took a tcpdump to fix. It all works now though...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 09 Sep 2003



8 September 2003

    One of those days
    When someone out there is trying to tell me something...

    Work
    So, I'm at work for an hour in the morning, and I'm just starting to get into things, and the fire alarm goes off. Here's some of us getting no work done:



    Then I get back inside in time to find that Catherine has lost her voice so badly that she can't talk. Andrew finds this quite amusing, and is being naughty, just so she has to try to yell at him. He then laughs...

    So I head home.

posted at: 07:00 | path: /diary | permanent link to this entry


9 September 2003

    Sick at home
    So, I'm home sick all day with a migrane. Horray!

    Emptying the digitial camera
    I did however find the courage to empty the digital camera... Here's a little gem from when I was painting the new house:

    Before


    After


    Matt seemed to enjoy himself.

posted at: 07:00 | path: /diary | permanent link to this entry


Fri, 05 Sep 2003



06 September 2003

    Listening to: The sound of hack saws through gyprock

    Head ache
    I woke up this morning with my neck cramping, and a massive migrane. It took me most of the day to get worked up to do anything at all...

    Data cabling
    In the afternoon, kept working on the data cabling around the new house. That got slowed down the by rain in the afternoon.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 03 Sep 2003



04 September 2003

    Listening to: The sound of breaking up (paulmac's afterdark mix)

    Debian still unstable
    Now it's gconf's fault.

    LCA 2004


posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 02 Sep 2003



03 September 2003

    Debian unstable
    KDE3 broke on my laptop today, 30 seconds before I was to chair a session at AUUG 2003. It turns out that the cron package was broken, which broke PAM, which broke KDE. This bug really sums it up.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 01 Sep 2003



02 September 2003

    XSP
    Still trying to get XSP to work. I was distracted by physical existance stuff in the morning, so I spent a little while looking at it this afternoon. I am still trying to work out why I get a TypeLoadException somewhere in the configuration file stuff.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 31 Aug 2003



01 September 2003

    Weekend
    Busy as usual. Basically finished cleaning and painting the rental house, and then helped the new tenants move in. Aren't I nice?

    Monolog
    I finally got around to making another post to my list of sample programs over on my monolog page. I'm now playing with ASP.NET web services using mono's XSP. It doesn't work out of the box (although it does compile at least). I'll have to keep playing for a little bit more I think...

    Hail storms


    Traffic shaping
    I'm starting to think about traffic shaping for my home connection as a way to give interactive traffic such as HTTP and SSH a higher priority than boring things I do in the background like rsync and FTP. We will have to wait and see how I go, wont we?

posted at: 07:00 | path: /diary | permanent link to this entry


Recursively determining the size of the directory (including all contents)

    A tweak on the recursive listing of a directory is a recursive determination of the amount of space on disc the directory takes.
      using System;
      using System.IO;
      
      // This example traverses a path, and states the size of the contents
      // in bytes
      namespace traverse
        {
        class dirtrav
          {
          static void Main(string[] args)
            {
            if(args.Length == 0)
      	{
      	Console.WriteLine("You need to specify a path to a directory to list");
      	return;
      	}
      
            m_files = 0;
            m_directories = 0;
            Console.WriteLine("Total size: {0} bytes", traverse(args[0]));
            Console.WriteLine("File count: {0}", m_files);
            Console.WriteLine("Directory count: {0}", m_directories);
            }
      
          private static long traverse(string path)
            {
            string[] dirs = Directory.GetDirectories(path);
            string[] files = Directory.GetFiles(path);
            long dirtotal = 0;
      
            m_directories++;
            for(int i = 0; i < dirs.Length; i++)
      	{
      	long subdir = traverse(dirs[i]);
      	dirtotal += subdir;
      	}
      
            for(int i = 0; i < files.Length; i++)
      	{
      	FileInfo fi = new FileInfo(files[i]);
      	m_files++;
      	dirtotal += fi.Length;
      	}
      
            return dirtotal;
            }
      
          private static long m_directories;
          private static long m_files;
          }
        }
      
      
    This code runs through the contents of the directory, as determined by the recursion code presented here earlier. It adds up those sizes, and reports back to the user.

    What's this code do? Well, here it is line by line...
      using System; using System.IO; // This example traverses a path, and states the size of the contents // in bytes namespace traverse { class dirtrav { static void Main(string[] args) { if(args.Length == 0) { Console.WriteLine("You need to specify a path to a directory to list"); return; } m_files = 0; m_directories = 0; Console.WriteLine("Total size: {0} bytes", traverse(args[0])); Console.WriteLine("File count: {0}", m_files); Console.WriteLine("Directory count: {0}", m_directories); } private static long traverse(string path) { string[] dirs = Directory.GetDirectories(path); string[] files = Directory.GetFiles(path); long dirtotal = 0; m_directories++; for(int i = 0; i < dirs.Length; i++) { long subdir = traverse(dirs[i]); dirtotal += subdir; } for(int i = 0; i < files.Length; i++) { FileInfo fi = new FileInfo(files[i]); m_files++; dirtotal += fi.Length; This block of code gets the size of the file in question, and then adds it to the tally. } return dirtotal; } private static long m_directories; private static long m_files; } }
    Here's the code running:
      Compilation succeeded
      deathstar:csharp-dirsize# ./dirsize.exe .
      Total size: 27919 bytes
      File count: 14
      Directory count: 1
      
      deathstar:csharp-dirsize# ./dirsize.exe ..
      Total size: 1526282640 bytes
      File count: 25557
      Directory count: 1658
      





    You can download the source code for this entry from: http://www.stillhq.com/extracted/csharp-dirsize/ or http://www.stillhq.com/extracted/csharp-dirsize.tgz.

posted at: 07:00 | path: /dotnet | permanent link to this entry


Panda is now available under the GPL and the LGPL

    The next release of Panda, which is imminent, is released under both the GPL, and the LGPL, which will make it much easier for some users to use the code...

posted at: 07:00 | path: /panda | permanent link to this entry


Navigation

posted at: 07:00 | path: /panda/panda-nav | permanent link to this entry


ASP.NET Web Services with Mono

    When you want to use ASP.NET web services with Mono, you have two options:
    • Use a standalone server called XSP
    • Use the Apache module (mod_mono)
    I chose to use the XSP stand alone server, as it seemed easier for the trivial testing that I'm interested in doing. So, I downloaded XSP, compiled it and installed it as documented in the INSTALL file. When I hit http://localhost:8080, I got the following error message:

      Error in '/' Application


      Error

      Description: Error processing request.

      Error Message:

      Stack Trace:

      System.TypeLoadException: A type load exception has occured.
      in (unmanaged) /usr/local/lib/libmono.so.0(mono_raise_exception+0x20) [0x4008cb10]
      in (unmanaged) /usr/local/lib/libmono.so.0 [0x4008fd56]
      in <0x00056> 00 System.Type:GetType (string,bool)
      in <0x00034> 00 System.Web.Configuration.ModuleItem:.ctor (string,string)
      in <0x00320> 00 System.Web.Configuration.HttpModulesConfigurationHandler:Create (object,object,System.Xml.XmlNode)
      in <0x00159> 00 System.Configuration.ConfigurationData:GetConfig (string)
      in <0x00025> 00 System.Configuration.DefaultConfig:GetConfig (string)
      in <0x0003d> 00 System.Configuration.ConfigurationSettings:GetConfig (string)
      in <0x0000d> 00 System.Web.HttpContext:GetAppConfig (string)
      in <0x00025> 00 System.Web.HttpApplication:InitModules ()
      in <0x0005b> 00 System.Web.HttpApplication:Startup (System.Web.HttpContext,System.Web.HttpApplicationState)
      in <0x00111> 00 System.Web.HttpApplicationFactory:GetPublicInstance (System.Web.HttpContext)
      in <0x00118> 00 System.Web.HttpApplicationFactory:GetInstance (System.Web.HttpContext)
      in <0x00142> 00 System.Web.HttpRuntime:InternalExecuteRequest (System.Web.HttpWorkerRequest)


    This happens regardless of the file I try to access...

    Obviously, the first step is to turn on tracing, to try to see what the server is doing. Unfortuately, the documentation I could find in the Makefile is wrong about how to turn tracing on. The short answer is that you need to add:

      /d:WEBTRACE


    to the CSCFLAGS in server/Makefile. Now, when a request is made, a trace is output to the console. Here's the trace for the request which failed above:

      Accepted connection.
      verb: GET
      path: /mono.png
      queryString: 
      protocol: HTTP/1.1
      Connection: keep-alive
      Accept-Encoding: gzip,deflate
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
      Keep-Alive: 300
      Cache-Control: max-age=0
      Host: 127.0.0.1:8080
      Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
        text/plain;q=0.8,video/x-mng,image/png,image/jpeg,
        image/gif;q=0.2,*/*;q=0.1
      User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030714 Debian/1.4-2
      GetFilePath()
      SendStatus() -> HTTP/1.0 200 OK
      
      SendUnknownResponseHeader (X-Powered-By, Mono)
      SendUnknownResponseHeader (Date, Mon, 1 Sep 2003 01:11:01 GMT)
      HeadersSent() -> False
      SendUnknownResponseHeader (Content-Type, text/html; charset=utf-8)
      SendUnknownResponseHeader (Content-Length, 3113)
      GetHttpVerbName()
      SendResponseFromMemory ()
      CloseConnection()
      


    There's not really a lot to go on there.

    After tracking the error through a little more, I find that Mono is actually a C# wrapper over a C core. The exception shown here is in the Mono core C library (as shown by the /usr/local/lib/libmono.so.0 bit). This is failling because it can't parse the type Mono.Http.AcceptEncodingModule for some reason.



posted at: 07:00 | path: /dotnet | permanent link to this entry


Panda is now available under the GPL and the LGPL

    The next release of Panda, which is imminent, is released under both the GPL, and the LGPL, which will make it much easier for some users to use the code...

posted at: 07:00 | path: /site | permanent link to this entry


Thu, 28 Aug 2003



29 August 2003

    .NET
    We had a .NET consultant in today to talk about some of the remoting issues that we care about for the next release. It's interesting watching people get used to having to write stateless servers -- it's quite painful for some people, and even for some application domains.

    Life
    I'm really tired. I've been getting four or five hours sleep a night for about two weeks now because of the houses. I'm normally an eight hour a night kinda guy, so that's not a lot. I'm starting to have a lot of trouble concentrating, which is making things harder.

    The rental house has to be finished by Sunday though, so I just have to get through the next few days, and then I should be done and able to catch up on sleep.

posted at: 07:00 | path: /diary | permanent link to this entry


28 August 2003

    Life
    Well, Catherine was sick today, so I didn't get much done.

    Rental house
    Spent a bunch of the evening painting.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 26 Aug 2003



27 August 2003

    Trades people suck
    Well, today was our first plesant experience with a trades person for the whole house move exercise. Morgans Carpet Cleaning were on time, polite, and did a good job.

posted at: 07:00 | path: /diary | permanent link to this entry


26 August 2003

    Listening to: Utah Saints -- Something Good

    Why you shouldn't give to the Salvation Army as a charity
    An important part of being a workable charity is leaving donors with a good feeling about helping people out. The second you start treading on people's toes, then you risk not having a viable charity any more.

    Two weeks ago my wife Catherine rang the Salvation Army. In our home town they offer a service where they collect your unwanted furniture, sell it, and then use the money for people who are less fortunate. Or so the theory goes. Anyways, Catherine rang and explained that because we were going to move house, we would like to give away our perfectly servicable water bed.

    Let's get this clear -- the bed works. The bed is fine. The bed doesn't leak. Am I making my point? In fact, the bladder is only a couple of years old -- it's still under warranty. We just wanted a slightly smaller bed than the King size hard sided water bed we currently had. When you're moving house is the right time to replace a water bed, given the large amount of effort involved with setting up a water bed in the first place.

    The Salvos said fine, and that they would collect the water bed on the 26th. We hired the equipment to packup the bed properly (you have to be careful about how you pump out the water to not damage the bladder), and disassembled everything ready to go.

    Yesterday Catherine waiting for most of the day for the truck which was meant to come in the morning to arrive. Eventually she rang to ask how much longer it would be, as she was stuck in an empty house with a crying baby. She was told that the driver had decided that he didn't pickup water beds, and therefore had not come. When she pointed out that we had kinda relied on them showing up (the carpets were set to be cleaned on the 27th), they said they didn't really care.

    After more agitation from the long suffering Catherine, they agreed to collect the bed. However, when the particularly difficult driver arrived, he still refused to take the bladder (the bit worth the most money), and said that the rest of the bed would be going directly to the tip.

    Catherine was left in tears...

    This raises the question of why you would give to the Salvation Army as a charity -- especially when donations go straight to the tip. From now on we'll be giving to charities which actually care. I'll also never recommend the Salvation Army again.

    I did ring the divisional head quarters, but the summary is that the people there couldn't understand why it is important for the donor to walk away having had a good experience from their charitible activities, and why we might even be upset.

    Now I have to work out how to get the bladder off my driveway.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 24 Aug 2003



21 August 2003

    Painting the new house

posted at: 07:00 | path: /diary | permanent link to this entry


23 August 2003

    Moving into the new house in driving cold rain and gusty winds.

posted at: 07:00 | path: /diary | permanent link to this entry


22 August 2003

    Painting the new house

posted at: 07:00 | path: /diary | permanent link to this entry


24 August 2003

    Trying to work out what goes where in the new house. No data connectivity.

posted at: 07:00 | path: /diary | permanent link to this entry


25 August 2003

    Work
    Back at work, despite the new house...

    New house
    No data connectivity yet. I think I am lucky and might have bought a dud modem. Luckily the nice people from AB&T systems are willing to go out of their way to help me debug the problem... I'm picking up the new test modem tonight, and then I'll give it a try. I spent a bunch of today moving the pay TV connection, turning off DSL, which isn't available at the new location, and getting a second phone line connected.

    So tired
    The new bed hasn't shown up, so we're sleeping on an air bed. I am so tired.

    Back online
    It turns out I was the victim of a bad modem...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 19 Aug 2003



20 August 2003

    Listening to: Groove Armada - Madder

    New house
    Well, I've been sitting inside the new house for about an hour now. I can confirm that the central heating works, the dishwasher works, and that the back screen door doesn't. Unfortunately, Telstra want a bunch of money to play with phone lines, so I wont be able to put in my DSL application for the new house until the weekend. This means I will be without connectivity for a while me thinks.

    It feels very strange having a new house. At least we have our prorities straight -- the only things which have been moved into the new house so far are two laptops. We don't have beds yet.

    Now I wait for the shower repair dude to come and stop the shower from leaking into one of the cupboards in the master bedroom.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 18 Aug 2003



19 August 2003

    Listening to: Sneaker Pimps - Think Harder, Think Dumb

    New house
    It looks like the new house will settle tomorrow, which will be nice. I then have like two days to paint, and cleanup ready for the family to move in on the weekend.

    Enimem
    This is very funny, but so true.

    Destiny's Child
    This is pretty close to the mark too...

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 14 Aug 2003



15 August 2003

    Chicken
    Lennard's mustard chicken mini-roast is yummy. I think I'm going to have to reverse engineer the recipe so I can have it more often. It would seem that most of the recipes that Google can find include honey, which matches the taste I experienced the other day. Now I need to go into experimental cookery mode -- run for cover!

    Kernel documenation
    Well, it strikes me that now that my mandocs patch is in, the next step is to document how it works before I forget. I therefore started whipping up some kernel-doc discussing that. Then I'm going to need to battle to get that into the kernel source tree as well I imagine. Perhaps there is a documention maintainer / lieutenant?

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 13 Aug 2003



Mandocs for linux 2.6.0-test3-bk1

posted at: 07:00 | path: /linux | permanent link to this entry


13 August 2003

    New house
    It gets even better. The current owners of the new house are now bickering over who owns what of the crap in the house, and have engaged family lawyers to slug it out at 30 paces. They also haven't come up with a list of people who cheques need to be made payable for us to actually pay for the house.

    It's annoying, especially given how much they hassled us to get ready for the 15th, and now they're making no attempt to hit that date themselves.

    It's going to cost me money too. It turns out that they have seven days after 15th to settle, and then we can issue "notice to complete ", which has a 14 day period. The problem is that ends up in three weeks, whereas our new tenants are moving into the current house in two weeks. Not happy.

    Oh, and to recover the costs of us having to move out into a U-Stow-It and a hotel, we have to sue the current owners.

    Stair masters
    So, I'm on the stair master at the Gym, and I'm feeling sweaty but otherwise fine. Then I throw up. Then I don't feel fine. Now I whinge.

posted at: 07:00 | path: /diary | permanent link to this entry


Mandocs for linux 2.6.0-test3-bk1

posted at: 07:00 | path: /site | permanent link to this entry


14 August 2003

    Home sick
    Because of the stair master incident last night. I do feel a lot better now though...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 11 Aug 2003



12 August 2003

    New house
    Argh! The current owners of the new house still haven't taken their stuff out of the house, and we're meant to take possession on Friday... The garage is so full that it isn't possible to fit anything more into it, and most of the cupboards in the house still have stuff in them. The kitchen is full of baking tins, and the oven and shower look like they haven't been cleaned in quite some time. This is going to get stressful me thinks.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 10 Aug 2003



11 August 2003

    New house
    Catherine and I spent the weekend packing up more of the house. We're nearly there now, which is good as we move in a little under two weeks. The study, which is a three meter by three meter room, is now almost entirely full of boxes with stuff in them. It's a little depressing when your entire house (not including furniture) fits into one truck load -- I thought we had accumulated more stuff than that.

    Red bull
    Red bull is one of those caffeine enhanced energy drinks you see around now. It's the first time I've had one -- it tasted like liquid nerds (little hard candy thingies). Yum. I should be careful around this stuff...

    Mandocs
    An older version of the mandocs patch got picked up by Linus, and was released in 2.6.0-test3. This means that I now have my name in the Linux kernel CREDITS file. Hurrah for me! Anyways, now I need to chase getting the new improved version into the kernel before people hunt me down and harm me.

    Mono
    A little late on the next monolog entry, which isn't up yet, as I think I might have found a bug...

posted at: 07:00 | path: /diary | permanent link to this entry


Mandocs included in linux kernel 2.6.0-test3

    The mandocs patch from myself has been included in kernel 2.6.0-test3. Sample man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


Mandocs included in linux kernel 2.6.0-test3

    The mandocs patch from myself has been included in kernel 2.6.0-test3. Sample man pages are here.

posted at: 07:00 | path: /site | permanent link to this entry


Wed, 06 Aug 2003



Man pages for linux 2.6.0-test2

    Man pages are here. This version was generated by the latest tweak of the scripts, which ignores the date and edition tags -- I feel that the version version number should be good enough for most people...

    Interestingly, Linus' Bitkeeper tree actually has an older version of the patch applied -- perhaps I wasn't being ignored as much as I thought. It produces man pages which Alan Cox thought could use some work.

posted at: 07:00 | path: /linux | permanent link to this entry


07 August 2003

    Home from work today
    Catherine was throwing up all night last night, so I got up to the kids a lot. Just one of those things. I'm home from work today to help mind the little people whilst Catherine continues to feel sick.

    Mandocs
    The patch has made it into Linus' 2.5 BitKeeper tree, which I guess means it will be in 2.6.0-test3 when it is released. The next step is to verify that all the changes in the most recent version of the patch made it into the tree, because I am not sure what version Linus accepted.

    Then there's keeping track of new functionality, and actually keeping it working. I might keep generating man pages and putting them online for the next few months as a way of making sure that they still generate properly. Hopefully someone out there might find them useful as well...

    Later...

    Ahhh, it's an older version of the mandocs patch, the one where Alan Cox thought the format could do with some work. I'll have to see what I can do about getting the new version into the kernel now...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 05 Aug 2003



06 August 2003

    House
    Nine days until we pickup the keys to the new house, 17 days until we move. Should I panic yet?

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 04 Aug 2003



04 August 2003

    Stuff
    One of those days when you're in and out of the office so often that it's hard to get anything done. Held a Systems Software tutorial in the evening. Is it a bad sign when the students are in the third week and haven't done any of the homework yet?

    Gorilla Grams
    Andrew, one of our sales people is turning 50. So he got a gorilla gram...



posted at: 07:00 | path: /diary | permanent link to this entry


05 August 2003

    Windows XP filename sorting
    I don't know if you've noticed, but Windows XP's Windows Explorer sorts filenames differently from previous versions. I certainly hadn't noticed until someone pointed it out to me...

    Let's say for example we have filenames which look like:

      filename 1
      filename 2 foo
      filename 10
      filename 11 foo
      filename 0
      filename -42
      


    In a normal sort, and in fact in older versions of Windows Explorer, the sorted output would be:

      filename -42
      filename 0
      filename 1
      filename 10
      filename 11 foo
      filename 2 foo
      


    Whereas with Windows XP you get:

      filename -42
      filename 0
      filename 1
      filename 2 foo
      filename 10
      filename 11 foo
      


    Notice how the numbers are now sorted in a little more sensible an order? I suggest that this has been done internally by expanding the numbers out to an arbitrary length, sorting, and then displaying the version from before expansion. My sample implementation is something along the lines of:

      #include <stdio.h>
      
      // Expand numbers in strings so that numberic sorting is sexy
      
      int main(int argc, char *argv[])
      {
        char input[1024];
        int i, num, numvalid;
      
        // We read strings in from stdin, and assume that each string is less
        // than 1024 characters long. Expanded strings are written to stdout
        while(fgets(input, 1024, stdin) != NULL)
          {
            numvalid = 0;
            num = 0;
            for(i = 0; i < strlen(input); i++)
      	{
      	  if(!isdigit(input[i]))
      	    {
      	      if(numvalid != 0)
      		{
      		  printf("%08d", num);
      		  numvalid = 0;
      		  num = 0;
      		}
      	      printf("%c", input[i]);
      	    }
      	  else
      	    {
      	      num *= 10;
      	      num += input[i] - '0';
      	      numvalid = 1;
      	    }
      	}
            
            // We don't need to do any cleanup, as we know each line ends with a \n
            // if this wasn't the case, we'd include a test for num != 0 here...
          }
      }
      


    Which gives the following output:

      filename -00000042
      filename 00000000
      filename 00000001
      filename 00000002 foo
      filename 00000010
      filename 00000011 foo
      


    You can find this example code here.

    Feel like you're working with monkeys?
    You might be.

    SCO
    I've so far stopped myself from commenting on the who SCO thing because it went rapidly from being funny, so just annoying. I will however back down a little, and say that GROKLAW has a nice comment to make now that RedHat has stepped in.

posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 02 Aug 2003



Recursively traversing a directory structure

    It seems useful to discuss how to recurse through a filesystem with C#. That's what this code below does.
      using System;
      using System.IO;
      using System.Collections;
      
      // This example traverses a directory, and lists the contents recursively
      namespace traverse
        {
        class dirtrav
          {
          static void Main(string[] args)
            {
            if(args.Length == 0)
      	{
      	Console.WriteLine("You need to specify a path to a directory to list");
      	return;
      	}
      
            traverse(args[0], 0);
            }
      
          private static void traverse(string path, int lvl)
            {
            string[] dirs = Directory.GetDirectories(path);
            string[] files = Directory.GetFiles(path);
            SortedList all = new SortedList();
            String indent = new String(' ', lvl * 2);
      
            // Add all the directories to the list
            for(int i = 0; i < dirs.Length; i++)
      	{
      	all[dirs[i]] = "d";
      	}
      
            // Add all the files to the list
            for(int i = 0; i < files.Length; i++)
      	{
      	all[files[i]] = "f";
      	}
      
            // For each item in the directory, display it and possibly recurse
            foreach(string key in all.Keys)
      	{
      	Console.WriteLine(indent + key + " (" + all[key] + ")");
      	if(all[key] == "d")
      	  {
      	  traverse(key, lvl + 1);
      	  }
      	}
            }
          }
        }
      
    I'm a little disappointed with the API presented by .NET here to be honest. It would seem to me that if I ask for a listing of a directory that contains many items, then the return of a string array containing all the items in the directory might be a little inefficient. If I was only looking for one specific item, then I stand a 50% chance of finding the item without having to go through all of the items in the directory. It would be much nicer to have an interface where I could ask for a block of items from the directory, and the come back for more later. If you've seen a .NET interface like this, then please do let me know.

    What's this code do? Well, here it is line by line...
      using System; using System.IO; Needed to be able to get directory listings. using System.Collections; Needed to create the sorted list of directory items. // This example traverses a directory, and lists the contents recursively namespace traverse { class dirtrav { static void Main(string[] args) { if(args.Length == 0) { Console.WriteLine("You need to specify a path to a directory to list"); Usage messages are good style. return; You can see I'm a Unix hacker here. I spent quite some time trying to find an exit() equivalent before I just ended up doing a return here. } traverse(args[0], 0); Traverse is the name of the recursive function which produces the listing. The second arguement is the level of indenting to apply to this call. } private static void traverse(string path, int lvl) { string[] dirs = Directory.GetDirectories(path); Get a list of all the directories at this path. string[] files = Directory.GetFiles(path); And get all the files. SortedList all = new SortedList(); String indent = new String(' ', lvl * 2); The indent string to output at the start of each line. Note the use of a string constructuor which takes a character, and the number of times to repeat the character. // Add all the directories to the list for(int i = 0; i < dirs.Length; i++) { all[dirs[i]] = "d"; } // Add all the files to the list for(int i = 0; i < files.Length; i++) { all[files[i]] = "f"; } I want to have all the directories and files in one list, as well as being sorted in alphabetical order. I therefore have to build a SortedList. // For each item in the directory, display it and possibly recurse foreach(string key in all.Keys) Now work through each item in that sorted list. { Console.WriteLine(indent + key + " (" + all[key] + ")"); if(all[key] == "d") { traverse(key, lvl + 1); If it's a directory, then recurse into it, having increased the indent level by one. } } } } }
    I wont describe again how to compile and run C# code using mono. I will however show you some sample output from this program:

      deathstar:csharp-dirtraverse#
      top/dirone (d)
      top/dirtwo (d)
        top/dirtwo/dirtwofileone (f)
        top/dirtwo/dirtwofilethree (f)
        top/dirtwo/dirtwofiletwo (f)
      top/fileone (f)
      top/filethree (f)
      top/filetwo (f)
      deathstar:csharp-dirtraverse# 
      


    You'll note the identation to show levels of structure, and the fact that files are marked with the letter f, and directories with the letter d.




    You can download the source code for this entry from: http://www.stillhq.com/extracted/csharp-dirtraverse/ or http://www.stillhq.com/extracted/csharp-dirtraverse.tgz.

posted at: 07:00 | path: /dotnet | permanent link to this entry


02 August 2003

    Written from a room in the Duxton Hotel, Milson's Point, Sydney

    AUUG National Committee
    A good meeting, even if it did go for about six hours. We got a lot done in that time. Then a good flight home with a little 10 month old in the seat next door. Henry was good enough, if a little tired.

posted at: 07:00 | path: /diary | permanent link to this entry


03 August 2003

    Confusing web traffic
    The 23rd was two days after my Slashdotting. Why did I get hit so hard then?



    Monolog
    There's a new article in my Monolog as promised.

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 31 Jul 2003



01 August 2003

    Written from a room in the Duxton Hotel, Milson's Point, Sydney

    The Duxton
    I couldn't see it last night, but the view from my room this morning is fantastic. I don't have a memory stick for my camera (but I do have the camera), so I'll see what I can organise today so I can post a picture here later. And here one is...



    I have a runny nose
    Not that I imagine that you care.

    My boys rock
    Catherine has the boys by herself by virtue of me being away. She only got woken once last night, and that was by the 5 month old. My boys (Andrew and Matthew) are good little people.

    AUUG Chapter Council meeting
    I met Greg Lehey and David Purdue at about 9:30 in the lobby, and we proceeded to the chapter council meeting. I wont diarize what happened there until I have had a chance to come up with a report for the Canberra AUUG committee. Let's just say that GST complicates the world a lot, and that it was a good, productive, meeting.

    Reviewage
    I'm currently reading Google Hacks for review. Not too bad so far...

    Mexican for dinner
    My first margaritas ever tonight at this Tex Mex place called Had to happen -- it didn't seem like anything special, especially once I had to pay for a $45 meal of dip and fajitas.

    Here's proof that Greg is always sensible:



posted at: 07:00 | path: /diary | permanent link to this entry


31 July 2003

    Written from a room in the Duxton Hotel, Milson's Point, Sydney

    Graduation
    Up early for the graduation ceremony. We got to parliament house at about 9:00am, in time to find that it was going to take about half an hour to clear security. I think this was more to do with the simultaneous arrival of a couple of sets of school groups than it was about over reaction to September 11.

    Once we were inside, I basically had time to don a gown and go and wait in the great hall for the ceremony to start. This ended up being about a 45 minute wait, as the ceremony was delayed so that more people could get through security.

    Then I graduated. I am now officially a Bachelor of Engineering (Computer Engineering), which took seven years of study to complete. It should be noted that I started with a double (with Law), and the university nearly graduated me accidentally from both today. Being too honest for my own good, I talked them out of it. It would appear I was also one of only two people to get first class honours from that ceremony -- the other won the university medal. I didn't bother to check the other two ceremonies held today.

    I know everyone is entitled to their moment in the sun, but gosh darn the ceremony dragged on.

    Lunch with the family at the Hyatt afterwards. I like the Hyatt resturant.

    AUUG
    I then went and packed my bags for my AUUG trip. Then, having spent a couple of hours with my sons, it's off to Syndey for the chapter and national council meetings. Got to Sydney uneventfully, waited for a cab at the airport (the longest wait ever, they used to be much better), and to the hotel. Watched a DVD in my room, and went to bed.

    Reviews
    I'm current reading Google Hacks from O'Reilly for review in AUUGN. I'll let you know my thoughts later.

    Article
    Linmagau published by JPEG to MPEG howto. It doesn't appear to have been Slashdotted, so clearly my coolness has evaporated as quickly as it materialized.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 28 Jul 2003



29 July 2003

    Mandocs
    It looks like Andrew Morton might take my mandocs kernel patch. We shall see...

    QA people
    Why would you employ a QA person who believes it's cool to not want to test parts of the product?

    Satellite phones
    Here I was thinking that Iridium was a thing of the past, and the head of the research and development section at work brings one in. It turns out that he's going for a long driving holiday in the middle of the Australian desert, and feels that one of these things might be a good idea.

    The user interface leaves a little to be desired -- you have to have a clear sky for the phone to work, which in my case today meant going down into the car park, and walking about 50 meters away from the building. This means that if my boss is to collect voicemail, or even know that we've called, then he'll need to go outside and turn the phone on.

    He also spent a bunch of time thinking the phone didn't work. That's because many Iridium phones, including this one, have a GSM SIM card in the phone, and he had the phone set to prefer GSM over satellite -- unfortunately his model (the Motorola 9505) doesn't actually support the GSM option.

    Despite having a SIM slot, a SIM installed, and having a bunch of GSM menu options. A bit weird that me thinks.

    Anyways, so I got all of that sorted out, configured his voicemail, collected some voicemail, and then rang Catherine to prove that the phone works. That's my experience with a satellite phone.

posted at: 07:00 | path: /diary | permanent link to this entry


28 July 2003

    Back at work
    ... Yeah, you get the idea ...

    Tutoring
    Meeting for ANU tutorial today, they're really well organised. Ran the first Systems Software tutorial at Univeristy of Canberra as well.

posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 26 Jul 2003



Your first C# program

    Well, all web pages about a language need to start with a hello world example, so here's mine using mono.
      using System;
      
      namespace hello
        {
        class helloworld
          {
          static void Main(string[] args)
            {
            Console.WriteLine("Hello world");
            }
          }
        }
      
    What's this code do? Well, here it is line by line...
      using System; We need to include System, as we're going to use Console.WriteLine, which is actually System.Console.WriteLine namespace hello Applications normally implement a namespace as a way of separating your classes from other peoples { class helloworld This is the main class for the program { static void Main(string[] args) Main is the first function called by the .NET runtime environment { Console.WriteLine("Hello world"); Say hello world (the newline is added because this is a WriteLine, not a Write } } }
    To compile this, you execute the mono C# compiler:
      mcs hello.cs
      
    Which should give us a file named hello.exe -- it's interesting to note that because this file is in IL, it can be run on Windows as well.

    Now you can just run the exe:
      csharp-helloworld# ./hello.exe 
      Hello world
      
    Which implicitly executes mono because my Linux environment has setup a new binary executable type within the kernel. If you Linux box has this turned off, then you can just do what is happening under the hood:
      csharp-helloworld# mono hello.exe 
      Hello world
      
    Aint that cool?




    You can download the source code for this entry from: http://www.stillhq.com/extracted/csharp-helloworld/ or http://www.stillhq.com/extracted/csharp-helloworld.tgz.

posted at: 07:00 | path: /dotnet | permanent link to this entry


27 July 2003

    Course
    Last day of the course. Finally no more ASP.NET, and now we can talk about databases.

    C# blog
    I thought I would start blogging my C# using mono adventures over here. I'll try to remember to add a code sample per week. The first one is a simple hello world in C#.

    Systems Software, University of Canberra
    I'm tutoring in the systems software unit this semester at University of Canberra, so I spent some time whipping up some answers to the tutorial questions for the week. I haven't had to explain assembly to people in a while -- I had forgotten how much fun it can be being this close to the machine. I wonder if the second year bachelor of information technology students have really been taught this stuff?

posted at: 07:00 | path: /diary | permanent link to this entry


Fri, 25 Jul 2003



25 July 2003

    New house
    Got approved for the deposit bond yesterday.

    Course
    My brain is full, but there's two more days. The trainers claim that they have taken four weeks of Microsoft Official Curriculum and turned it into four days. I would believe them, there is certainly almost no wasted time in the course -- unlike most other courses I have been on.

    Sleep
    Matthew has the flu, so none of us got more than a few hours sleep last night. Oh well...

    Article
    Finishing up an article for linmagau -- it's an update of the jpeg2mpeg conversion howto. When it's published, I'll wait a few weeks and then put it on this site as well.

posted at: 07:00 | path: /diary | permanent link to this entry


26 July 2003

    Course
    Back at the course again. Why is it every Microsoft course I go on seems to want to teach me ASP.NET, a language I will almost certainly never ever ever use?

    Sleep
    Catherine's mother took the boys last night, which means we got some sleep for once. I feel much more human now...

    Usblogdump
    To keep my sanity during the ASP.NET stuff, I hacked usblogdump some more. The setup packet decoding is looking quite nice now. It even dumps the names of the Linux kernel defines which a given field equates to (with the -l command line option).

    The output now looks something like:

      URB 0, number 0, offset 7904, sequence 1, time 10, allocs 1
      MD5 hash: a3 3b cf 8f 3f 3e 6e 0c c5 0c ca 59 c2 00 b2 a4 
      
      Function: GET_DESCRIPTOR_FROM_DEVICE (0x000b)
      Endpoint: 0 (default)
      Pipe handle: 0x00000000
      Flags: 4
      Status: 0
      Link: 0
      
      Length: 96
      Direction: to
      
      URB header:
      Length: 80
      Status: 0
      Flags: 34
      
      ---------------------------------------------------------
      URB 1, number 1, offset 7994, sequence 1, time 10, allocs 2
      MD5 hash: ae 81 2d ac 27 91 84 d9 8e a5 0e 57 84 4f 38 6e 
      
      Function: CONTROL_TRANSFER (0x0008)
      Endpoint: 0 (default)
      Pipe handle: 0x82af53d8
      Flags: 6
      Status: 0
      Link: 0
      
      Length: 120
      Direction: from
      
      URB header:
      Length: 80
      Status: 0
      Flags: 34
      Transfer size: 18
      Data: 0x12 0x01 0x10 0x01 0xff 0xff 0xff 0x08 0x23 0x09 0x0f 0x01 0x01 0x00 0x00
       0x00 0x00 0x01 
      URB control transfer:
      Transfer flags: 11
      Transfer buffer length: 18
      
      Setup packet:
        bmRequestType: 0x80 (device-to-host standard device)
        Linux kernel: USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE
      
        bRequest: 0x06 GET_DESCRIPTOR [standard]
        Linux kernel: USB_REQ_GET_DESCRIPTOR
      
        wValue: 0x0100 (256)
        wIndex: 0x0000 (0)
        wLength: 0x0012 (18)
      


    What I don't understand, is where are the outgoing (i.e. host-to-device) arguements to the GET_DESCRIPTOR request in all of this?

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 23 Jul 2003



24 July 2003

    Training course
    This time it is one titled ".NET Essentials", from a company called Monash.NET. It's basically like two weeks of training squished into four days. I wonder if I'll see any examples of public urination this time, because I'm at the same training center as I was a couple of weeks ago.

    CLUG
    CLUG meeting tonight.

    Usblogdump
    Working on setup packet decoding in some idle moments during the day. I am not 100% confident I have got it right just yet though...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 22 Jul 2003



22 July 2003

    New house
    Finance approved. Deposit bond applied for. Exchange hopefully late this week, and collecting the keys mid August. Kinda cool that it's all happening...

posted at: 07:00 | path: /diary | permanent link to this entry


23 July 2003

    Ebay
    I am now the proud owner of an NCD ThinStar 200 thin client. Now I just have to arrange pickup and collection...

    Real men use man pages
    Tweaked my mandocs patch in the ways which were suggested on the weekend. I have intended to do it sooner, but got distracted by other things like paid employment.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 20 Jul 2003



21 July 2003

    Winterms
    I won a Wyse 3350SE winterm on ebay the other day, which I collected today. It's very cool, even for a Windows gadget. It turns out that I have to pay for a firmware upgrade to WinCE .NET before I get sound support in RDP though. Oh well, I guess I just smile and front the money.

posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 19 Jul 2003



20 July 2003

    Article
    Well, a google search now comes up with 45 pages with the title of my Slashdotted article on them...

    Back to things which matter...
    Thinking about a new version of my mandocs kernel patch, and spending a day going to the markets instead of playing with computers. I also won a Wyse Windows thin terminal on ebay, which will be cool...

posted at: 07:00 | path: /diary | permanent link to this entry


Command line image procesing article Slashdotted

    Graphics Tricks from the Command Line
    Graphics
    Posted by michael on Thursday July 17, @11:36AM
    from the thumbnails-galore dept.
    An anonymous reader writes "There's nothing quite like command-line tools for handling large batches of tasks, and image manipulations are no exception. Web developers and administrators will appreciate the ability to handle large numbers of files easily, either at the command line or in scripts. This article presents the ImageMagick suite, a Linux toolkit for sizing, rotating, converting, and otherwise manipulating images, in a huge number of formats, whether one or a hundred at a time."

    And before you ask, no, I'm not the anonymous reader...

posted at: 07:00 | path: /site | permanent link to this entry


Fri, 18 Jul 2003



19 July 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 17 Jul 2003



18 July 2003

    Article
    My article (the one I have been talking about here for a little while) got published today, which is a little odd. It's odd because the last two I have had published with DeveloperWorks bounced a couple of times with editorial comments before they got to print, whilst this one went straight through with no complaints. A very pleasant experience.

    http://www-106.ibm.com/developerworks/linux/library/l-graf/ is the secret hiding place for the article.

    And then the article got Slashdotted.

    Picnics
    Had a quite pleasant picnic lunch this afternoon at the Australian National Botanic Gardens.

    House
    We have one last inspection of the new house this afternoon. I hope we don't see anything we suddenly hate...

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 16 Jul 2003



Man pages for linux 2.5.73

    Man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


Man pages for linux 2.5.75

    Man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


Man pages for linux 2.5.71

    The patch needed to be updated for this version. The new patch is here, with the man pages here.

posted at: 07:00 | path: /linux | permanent link to this entry


Man pages for linux 2.5.74

    Man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


Man pages for linux 2.6.0-test1

    Man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


17 July 2003

    House
    Changed the curtain in the bedroom into something which is not so horrible. That means we're finally rid of the stupid verticals that the house had when we moved in, just in time to move out. Also working on the wall in the kitchen at lunch. It should be ready to paint sometime today or perhaps tomorrow at the latest.

    Kernel hacking
    I would still like someone to take my mandocs patch. The realization that the patch is not applying against the latest development kernel has given me impetus to bother to rebuild it againast the various kernel versions that have come out since it was released. Checkout http://www.stillhq.com/linux/mandocs/ for a complete list of the kernel versions I have done, and the output from the patch. You can see the various patches themselves with my patch tracker.

    PandaLex
    The Internet seems to go in cycles. People have noticed PandaLex again, and now I have a bunch of new PDFs to add to the test suite. Unfortunately that means getting off my bum and actually making them work.

    Moving my xterm
    Things worked much nicer after I had commented this line out of xdm-config:
      ! SECURITY: do not listen for XDMCP or Chooser requests
      ! Comment out this line if you want to manage X terminals with xdm
      #DisplayManager.requestPort:    0
      


posted at: 07:00 | path: /diary | permanent link to this entry


Man pages for linux 2.5.72

    Man pages are here.

posted at: 07:00 | path: /linux | permanent link to this entry


Tue, 15 Jul 2003



Graphics from the command line

posted at: 07:00 | path: /article | permanent link to this entry


16 July 2003

    Call me 3l3t3 h4x0r d00d
    Mikal, bringer of SQL injection attacks.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 14 Jul 2003



15 July 2003

    Ebay
    Lost my first auction on ebay. I was sniped.

    House improvements
    Today is plastering in the kitchen day. We had some broken tiles on one wall in the kitchen, and as it isn't a wet area we figured that we may as well just pull the tiles off and go with a painted wall there instead. The tiler guy at work seemed to think that it was kocher, which made me feel better about it as well... Anyways, it seems the secret to successful plastering is to have the right tools. It's the second semi-major job in the kitchen which I am pretty happy with -- the first being the window.

    I even glued up a replacement tile for one I broke whilst trying to steal the one spare I needed from behind the stove. I sure hope it sticks to the wall properly. Apparently I now need to wait 48 hours before I can grout the tiles.

    DNS
    Howto lookup a DNS entry in C code.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 13 Jul 2003



14 July 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 10 Jul 2003



11 July 2003

    AUUG
    Booked the hotel...

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 09 Jul 2003



10 July 2003

    House
    Well, the valuer has been and gone, we'll presumably hear back from the bank sometime soonish.

    Need more sleep
    Matthew kept us up heaps last night. I'm so tired I'm having troubles concentrating. Yay! At least Andrew wasn't too bad.

    Another article
    Working on an article for Linmagau, a online startup Linux magazine for Australia.

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 08 Jul 2003



09 July 2003

    AUUG
    Booked my flights for the AUUG committee meeting in Sydney at the end of the month.

    Uni
    Results should be announced tomorrow, which normally means that they're actually available online sometime today. Checking regularly, as it will be nice to find out if I have finally finished my Engineering degree. Update: I got a credit and a distinction. I guess that makes me a real Engineer now...

    New house
    The valuer comes tomorrow to confirm the value of the current house before we can refinance. Talked to my family's tame builder this afternoon and the concensus is that we can't expand the current house sensibly, so that rules out that option anyway.

    Article
    Some feedback from the editor on my latest article. It's pretty minor stuff, so things seem to be going ok there, I've revised the article and sent it back.

    Mandocs
    I picked up my mandocs patch again today, and this time tried to convince Andrew Morton to accept it. We'll have to wait and see if I have any joy.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 07 Jul 2003



CDs currently available -- Suse 8.2, Knoppix 3.2 v2, OpenOffice 1.0.3, NetBSD 1.6.1

    Caldera OpenLinux (NB this should now be avoided)
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)
  • 3.0 release 1 PPC (1 CD)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)
  • 4.7 (4 CDs)
  • 5.0 (2 CDs)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)
  • 3.2 (1 CD)
  • 3.2 v2 (with OpenOffice in English) (1 CD)

    Suse
  • 8.2 x86 (5 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Bootable Business Card
  • If you want these on a business card CD, you'll need to give me blanks first...
  • 1.618 (1 CD)

    linux.conf.au
  • 2003 Proceedings CD (1 CD)
  • 2003 Talks as MP3s (2 CDs)

    Linux from scratch
  • 4.0 tarball on CD (1 CD)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - March 2003 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 8.2 PPC (2 CDs)
  • 9.0 x86 (3 CDs)
  • 9.1 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)
  • 1.6.1 x86 / macppc / sparc / sparc64 (1 CD)m

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    OpenOffice
  • 1.0.2 -- for Linux, FreeBSD, MacOS X, Solaris, and that W thing (1 CD)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)
  • 9.0 x86 (3 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)
  • 8.1 (1 CD)
  • 9.0 (1 CD)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)
  • 8.1 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 07:00 | path: /cdr | permanent link to this entry


08 July 2003

    New house
    Met with the lawyer about the new house. It seems to be such a pain in the bum that we might yet end up throwing our hands up in the air and declaring it to be too hard...

    AUUG
    It seems that I have been elected to the AUUG national committee. Horray for me.

    Spot the difference
    Which one is which?

      

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 06 Jul 2003



07 July 2003

    Excessive
    Excessive downloading at work has been banned. Without defining excessive. Wow.

    That window
    Has now been primed and had the first coat of paint:



posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 05 Jul 2003



06 July 2003

    Finished my article! I'm free. I also finished off the servery window I've been building in the kitchen for quite some time. It's not painted yet, as I'm waiting for the putty to dry before I prime it.



posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 03 Jul 2003



04 July 2003

    Back in the office
    Well, I'm back in the office again today. I wish people wouldn't rearrange my desk whilst I am away. Anyways, nothing interesting to report really.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 02 Jul 2003



02 July 2003

    Why I don't like the city
    I always feel uncomfortable in CBDs. I think it's all the homeless guys wandering around. In this country we have pretty good social welfare (compared with say the Americans), so there's often no reason for them to be homeless. They do it by choice. Also, why do there never seem to be any female homeless people on the streets in Canberra?

    Perhaps I'm wrong about the whole thing. I dunno.

    The house
    I think we've decided to do the propery rental thing ourselves, instead of getting an agent to do it. It would cost a couple of grand a year for the agent to do it, and I don't think that's value for money given they do two inspections in that time, and accept no responsibility for the state of the property.

    That MS course
    Gee, they have got keen on security. Today they demonstrated buffer overruns, stack smashing, SQL injection, and cross site scripting to the class. It's interesting. I think I was the only student in the room who had heard of such things before. Some of the others looks worried...

posted at: 07:00 | path: /diary | permanent link to this entry


03 July 2003

    Why I don't like the city (again)
    The old guy deliberately wetting himself on the sidewalk outside the training room today really summed up why I feel uncomfortable in the city. Especially given there was at least four public toilets within about a 50 meter radius. Hmmmmmmmmmm.

    On the walk back to the car was the guy who crapped his pants, and was then just wandering around.

    Oh, and every tried killing time in Civic? All the interesting stores became coffee shops, seemingly overnight. It's a bit like that Simpsons episode where the whole mall is full of nothing but Starbucks shops.

    SnoopyPro log dumper (usblogdump)
    Got the ac3 log that a kernel hacker sent me working last night. I now just need to work on actually decoding the contents of the URBs a little bit better, but I'm getting there slowly. You can checkout the code here.

    Article
    Have an article due at the end of the week, and I'm having troubles making it look good... Something about Matthew keeping me up all night. Not that Catherine is any better off...

    Car crashing
    I didn't get much article done tonight. On the way home I noticed that a bunch of the vertical rails holding the side rail of the bridge were missing. At the time I thought that some kid had vandalised them by driving into them deliberately.

    Then we saw trhis quite attractive girl park her car and run across the road in a panic. She seemed really distraught, so we pulled up. It turns out that this old dude in a van had knocked down the poles with his van, then hit a gate and gone off the road. Doug talked to the guy in the van whilst I russled up an ambulance. He was awake, but puking, and unable to talk. We think he had had an epileptic fit.

    The really impressive thing was that the gate went through the front of the van, and through the front passenger seat. He was really lucky to be fine, and really lucky he didn't have a passenger.

    A bit wierd that. I have deliberately not gone any further with this discussion, and deliberately didn't take any pictures. I didn't seem right. The people who came up just to see, and in one case laugh, make me sick.

posted at: 07:00 | path: /diary | permanent link to this entry


01 July 2003

    Microsoft course in the city
    Well, Microsoft is sending me on this course to tell us how to better integrate our product with Windows Server 2003. Apart from the standard Microsoft schmooze (free food, clothes, et cetera), the course content was interesting too.

    Ignoring the stuff which was a little MS centric for this site, they seem to really be paying attention to security for the first time. I know they're saying they are in public, and that we're all cynical, but they've done things like started installing services disabled, and locking down what an anonymous user can do on the filesystem, and things like that.

    There was also an Intel dude who came in and talked about their compilers. This was interesting in that he talked about how slow and ugly the output of gcc and g++ was, as well as being a little rude about the MS compilers (it's hard to be too rude when they're funding your presence). I didn't realise that x86 processors have accounting statistics on the CPU. This bears further examination methinks.

    House
    It looks like it will happen after all. The estimated rental on the current place is $250 a week, which strikes me as a lot of money for a little place on the edge of town. I know people pay a lot more in Sydney and Melbourne, but I'm not sure I could have afforeded that when I moved out, and that's the sort of person who would be renting our current house.

    Lots of work
    And not enough time.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 29 Jun 2003



30 June 2003

    So very, very stressed
    Well, it looks like our offer on the house has been accepted, but now we have to go through the stressful organizing the money thing. Because this was quite unplanned, we don't have preapproval for anything, so now we need to rush.

    And people keep not returning my calls.

posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 28 Jun 2003



29 June 2003

    usblogdump
    Well, my first bug report today. I've whipped up a fix I think should work, and it's online on the usblogdump page now. The problem was that the fellow had an unknown URB, and the code didn't abort, it just went off into the sun set...

    Housing
    Argh! I drove past a friend's house yesterday to borrow a multimeter, and saw that their front neighbour's house is for sale (they live in a battle axe block). This is of interest because it would be cool to live near them (free child care?), its a bigger house the growing kids would fit better in, and because last time that house was on the market it got us looking at buying our first home. We couldn't afford that house then, but we should be able to now.

    Not sure what will happen, we'll just have to wait and see. I'm taking Catherine and the kids through it today.

posted at: 07:00 | path: /diary | permanent link to this entry


Bug fix

    It turns out that the initial version of the code had a bug when an unknown URB could cause a segmentation fault. This has been fixed in the version of the code available on this website, and usblogdump should now just abort...

posted at: 07:00 | path: /usblogdump | permanent link to this entry


Fri, 27 Jun 2003



28 June 2003

    In the words of the annoucement email:
      To:  linux-usb-devel@lists.sourceforge.net
      cc:  linux-kernel@vger.kernel.org
      Subject: [Announce] Linux command line Snoopy Pro logfile dumper
      
      I had two maths exams last week. This of course means that I had to find 
      something to distract me. That thing was whipping up a SnoopyPro logfile 
      dumper for the command line. This was motivated by generalised frustration 
      with the SnoopyPro user interface.
      
      For those wondering, SnoopyPro is a Source Force hosted USB traffic dumper
      for Windows. It's useful when reverse engineering USB device drivers.
      
      This version of the dumper only implements the URB types which I 
      immediately needed. Adding additional URBs isn't hard, but I didn't have 
      any samples. Feel free to mail me usblogs, and I'll add them to the 
      decoder.
      
      The only really cool feature in this version is that it implements 
      "repeated URB sequence suppression", so if the Windows driver says to the 
      USB device "hey, you still there" every second for 60 seconds, and there 
      is no other traffic between the machine and that device, then the output 
      will only show one of those interactions, and let you know it hid 59 more. 
      This feature can be turned on and off with the -r command line option.
      
      You can get the GPL'ed CVS version of the source code from:
      http://www.stillhq.com/extracted/usblogdump.tgz
      
      There is sample output et cetera at:
      http://www.stillhq.com/cgi-bin/getpage?area=usblogdump
      
      The next step is to modify the display of the URBs so that they're closer 
      to the Linux data structures.
      
      Cheers,
      Mikal
      
      -- 
      
      Michael Still (mikal@stillhq.com) | Stage 1: Steal underpants
      http://www.stillhq.com            | Stage 2: ????
      UTC + 10                          | Stage 3: Profit
      


posted at: 07:00 | path: /diary | permanent link to this entry


usblogdump Released

    In the words of the annoucement email:
      To:  linux-usb-devel@lists.sourceforge.net
      cc:  linux-kernel@vger.kernel.org
      Subject: [Announce] Linux command line Snoopy Pro logfile dumper
      
      I had two maths exams last week. This of course means that I had to find 
      something to distract me. That thing was whipping up a SnoopyPro logfile 
      dumper for the command line. This was motivated by generalised frustration 
      with the SnoopyPro user interface.
      
      For those wondering, SnoopyPro is a Source Force hosted USB traffic dumper
      for Windows. It's useful when reverse engineering USB device drivers.
      
      This version of the dumper only implements the URB types which I 
      immediately needed. Adding additional URBs isn't hard, but I didn't have 
      any samples. Feel free to mail me usblogs, and I'll add them to the 
      decoder.
      
      The only really cool feature in this version is that it implements 
      "repeated URB sequence suppression", so if the Windows driver says to the 
      USB device "hey, you still there" every second for 60 seconds, and there 
      is no other traffic between the machine and that device, then the output 
      will only show one of those interactions, and let you know it hid 59 more. 
      This feature can be turned on and off with the -r command line option.
      
      You can get the GPL'ed CVS version of the source code from:
      http://www.stillhq.com/extracted/usblogdump.tgz
      
      There is sample output et cetera at:
      http://www.stillhq.com/cgi-bin/getpage?area=usblogdump
      
      The next step is to modify the display of the URBs so that they're closer 
      to the Linux data structures.
      
      Cheers,
      Mikal
      
      -- 
      
      Michael Still (mikal@stillhq.com) | Stage 1: Steal underpants
      http://www.stillhq.com            | Stage 2: ????
      UTC + 10                          | Stage 3: Profit
      


posted at: 07:00 | path: /linux | permanent link to this entry


usblogdump Released

    In the words of the annoucement email:
      To:  linux-usb-devel@lists.sourceforge.net
      cc:  linux-kernel@vger.kernel.org
      Subject: [Announce] Linux command line Snoopy Pro logfile dumper
      
      I had two maths exams last week. This of course means that I had to find 
      something to distract me. That thing was whipping up a SnoopyPro logfile 
      dumper for the command line. This was motivated by generalised frustration 
      with the SnoopyPro user interface.
      
      For those wondering, SnoopyPro is a Source Force hosted USB traffic dumper
      for Windows. It's useful when reverse engineering USB device drivers.
      
      This version of the dumper only implements the URB types which I 
      immediately needed. Adding additional URBs isn't hard, but I didn't have 
      any samples. Feel free to mail me usblogs, and I'll add them to the 
      decoder.
      
      The only really cool feature in this version is that it implements 
      "repeated URB sequence suppression", so if the Windows driver says to the 
      USB device "hey, you still there" every second for 60 seconds, and there 
      is no other traffic between the machine and that device, then the output 
      will only show one of those interactions, and let you know it hid 59 more. 
      This feature can be turned on and off with the -r command line option.
      
      You can get the GPL'ed CVS version of the source code from:
      http://www.stillhq.com/extracted/usblogdump.tgz
      
      There is sample output et cetera at:
      http://www.stillhq.com/cgi-bin/getpage?area=usblogdump
      
      The next step is to modify the display of the URBs so that they're closer 
      to the Linux data structures.
      
      Cheers,
      Mikal
      
      -- 
      
      Michael Still (mikal@stillhq.com) | Stage 1: Steal underpants
      http://www.stillhq.com            | Stage 2: ????
      UTC + 10                          | Stage 3: Profit
      


posted at: 07:00 | path: /site | permanent link to this entry


usblogdump Released

    In the words of the annoucement email:
      To:  linux-usb-devel@lists.sourceforge.net
      cc:  linux-kernel@vger.kernel.org
      Subject: [Announce] Linux command line Snoopy Pro logfile dumper
      
      I had two maths exams last week. This of course means that I had to find 
      something to distract me. That thing was whipping up a SnoopyPro logfile 
      dumper for the command line. This was motivated by generalised frustration 
      with the SnoopyPro user interface.
      
      For those wondering, SnoopyPro is a Source Force hosted USB traffic dumper
      for Windows. It's useful when reverse engineering USB device drivers.
      
      This version of the dumper only implements the URB types which I 
      immediately needed. Adding additional URBs isn't hard, but I didn't have 
      any samples. Feel free to mail me usblogs, and I'll add them to the 
      decoder.
      
      The only really cool feature in this version is that it implements 
      "repeated URB sequence suppression", so if the Windows driver says to the 
      USB device "hey, you still there" every second for 60 seconds, and there 
      is no other traffic between the machine and that device, then the output 
      will only show one of those interactions, and let you know it hid 59 more. 
      This feature can be turned on and off with the -r command line option.
      
      You can get the GPL'ed CVS version of the source code from:
      http://www.stillhq.com/extracted/usblogdump.tgz
      
      There is sample output et cetera at:
      http://www.stillhq.com/cgi-bin/getpage?area=usblogdump
      
      The next step is to modify the display of the URBs so that they're closer 
      to the Linux data structures.
      
      Cheers,
      Mikal
      
      -- 
      
      Michael Still (mikal@stillhq.com) | Stage 1: Steal underpants
      http://www.stillhq.com            | Stage 2: ????
      UTC + 10                          | Stage 3: Profit
      


posted at: 07:00 | path: /usblogdump | permanent link to this entry


Sample output

posted at: 07:00 | path: /usblogdump | permanent link to this entry


Thu, 26 Jun 2003



Patching your kernel

    An interesting thread on the DCLUG mailling list. The thread started with a reply from Meg Larko:


      On Tue, Jun 24, 2003 at 01:07:22PM -0400, mp3t wrote:
      > Hey all!
      > 
      > I've been digging for an answer to this for some time. The HOWTOs on
      > patching for the most part are either esoteric or assume that patching is a
      > skill mastered long ago, and only include the syntax which hasn't worked
      > for me.
      > 
      > The way I understand it, a patch describes the difference between an
      > original file and a new one, all generated by diff. When you apply a patch
      > to the old version, you get the new version. A patch will be successfully
      > applied if and only if the version you are patching is identical to the
      > original version of the file against which the patch was created.
      
      Basically yes.
      > 
      > Now for a real world example:
      > I have kernel version 2.4.20. I want kernel version 2.5.73, and I want to
      > patch, not just download the full kernel. I need a patch that was built for
      > 2.5.73 against 2.4.20, not just any old version. In other words, I'm
      > looking for a patch whose source version is 2.4.20 and target version is
      > 2.5.73, right? The initial state of the file being patched must be
      > identical to the original file against which the patch was created, because
      > diff can only find the differences between exactly two files, not more. All
      > this makes logical sense to me. So why, when I grab a patch from
      > kernel.org, does it not indicate the assumed initial state of the patch?
      > 
      > With 2.4.20 in /usr/src/linux, when I run patch -p1 < patch-2.5.73, I get a
      > whole bunch of errors, asking for the "File to patch:". The only
      > explanation I can come up with is that the initial state against which the
      > patch was built is some version other than 2.4.20. How am I to go about
      > resolving this ?
      
      You would need to apply the patch for each and every version between 2.4.20 
      and 2.5.73.  That can be alot.  My usual solution is to take the .config
      file I created for my 2.4.20 kernel and copy that into the /usr/src/linux-2.5.72
      dir as orig.config (or some such similar).  Then run "make xconfig" or
      "make config"--whatever be your preference and load the orig.config file.
      That will provide the same base as your 2.4.20 in the 2.5.73.  I would
      strongly suggest that you just click through and see that nothing too
      significant has changed (or take advantage of new things).  Finally you
      save and exit from xconfig and rebuild the kernel as usual (make dep; make
      clean; make bzImage; make modules; make modules_install).  Copy the 
      appropriate files into /boot partition as per usual and go.
      
      Good luck,
      megan
      



    Here's my first reply:
      On Tue, 24 Jun 2003, Meg Larko wrote:
      
      > On Tue, Jun 24, 2003 at 01:07:22PM -0400, mp3t@m.mail.virginia.edu wrote:
      > > The way I understand it, a patch describes the difference between an
      > > original file and a new one, all generated by diff. When you apply a patch
      > > to the old version, you get the new version. A patch will be successfully
      > > applied if and only if the version you are patching is identical to the
      > > original version of the file against which the patch was created.
      >
      > Basically yes.
      
      Sorta.
      
      Let's imagine we have a file. Let's call it one. One looks like:
      
      a
      b
      c
      d
      e
      
      We then edit one so it looks like:
      
      a
      b
      c
       ca
       cb
       cc
      d
      e
      
      And take a universal diff of the change (which is the prefered diff format
      for the kernel). The diff looks like:
      
      --- one	Wed Jun 25 18:41:53 2003
      +++ two	Wed Jun 25 18:42:12 2003
      @@ -1,5 +1,8 @@
       a
       b
       c
      + ca
      + cb
      + cc
       d
       e
      
      The added lines have a leading plus. Now edit one so it looks like:
      
      a
       aa
       ab
       ac
      b
      c
      d
      e
      
      And apply the patch that we made earlier:
      
      mikal@wayne demo]$ patch < one.patch
      patching file `one'
      Hunk #1 succeeded at 4 with fuzz 1 (offset 3 lines).
      
      We still get as a file version of one:
      
      a
       aa
       ab
       ac
      b
      c
       ca
       cb
       cc
      d
      e
      
      Sorry for the long winded example, but this is why contextual diffs are so
      cool, and therefore used in the kernel. The underlying file is allowed to
      change, but you'll only get merge failures if you really need to.
      
      Cheers,
      Mikal
      



    This was followed up with this subsequent email.
      On Wed, 25 Jun 2003, mp3t@m.mail.virginia.edu wrote:
      
      > Michael,
      >    Thanks for your reply. I understand your analogy, and thanks for
      > providing me with an example. However, I fail to see why this is a method
      > oft used in the kernel. Suppose 'one' is c code. What if the code which is
      > the second change to 'one' conflicts with the first change to 'one'? Then
      > applying the said patch would create a conflict.
      
      Perhaps, although it is considered uncool to change the inner workings of
      a function in a way which breaks the callers without going and changing
      all of those calls. Let's look at the possible scenarios:
      
       - a different function (body) is changed. They're good people, and don't
      change the interface that the callers use (arguements, return code, side
      effects). It doesn't matter to our patch to another bit of the file, as
      the interface is unchangeed.
      
       - they change a function, and are uncool and change the inner workings of
      the function. They audit all callers. Our patch no longer applies, because
      some of the code we overwrote will have changed. I must now manually fix
      my patch.
      
       - they change a function, and it's interface, and audit all callers, but
      magically miss the new call I'm inserting. My patched code will no longer
      compile, and I therefore know to fix it.
      
       - they change a function, are uncool and don't audit or change the
      interface. We might have a bug, but the patch making the uncool change is
      much less likely to get accepted into the kernel in the first place, as it
      is uncool.
      
      On the why is it done front -- there are literally thousands of kernel
      coders. From newbies like me writing silly little return code checking
      patches, to people like Rusty changing the way modules work cause he can.
      If we insisted that the underlying file couldn't have changed before patch
      application, then Rusty's important module patch would fail because of my
      little return code check patch. This would cost developers heaps of time,
      whereas bugs because of this stuff are rare.
      
      [ Sidenote. This patches on top of patches system is pretty much how CVS
      works (by default). M$' VSS on the other hand locks files, and only lets
      one change through at a time. This is why big development teams hate VSS.
      ]
      
      > A previous reply to the post noted that a patch, let's say 'patch-2.5.73',
      > is meant to upgrade kernel version 2.5.72 and 2.5.72 only, up to 2.5.73. If
      > we were to apply this patch to a kernel of version other than that which
      > the patch was created against, we would have a problem, would we not?
      > Directory structures may have changed, or worse yet, it would insert
      > conflicting or redundant code.
      
      For sure, this is the case with these mega patches, but most patches are
      very small. For instance Greg KH (the usb dude) issues a bunch of USB
      patches every now and then. He'll usually send about 70, most with less
      than 10 lines of change. They're all meant to be independant of each
      other.
      
      That's done to minimise the chance of one big mega patch causing pain.
      
      > Likewise, I understand that a patch like '2.4.21-preempt' is only to be
      > applied to kernel 2.4.21, to add the preemption option. It wouldn't add
      > such an option to any other version.
      
      Well, it might. The reason for the name is because they have made
      assumptions about the shape of the underlying code. If the underlying
      subsystems haven't changed, then the same patch _will_ work for 2.5... The
      version number is just to let people know that's the platform it is known
      to work on.
      
      This is often how backporting is done. A new cool feature is added to 2.5.
      Someone wants it in 2.4. They take the 2.5 patch, apply it, and then hand
      audit the changes to make sure that they're sane in 2.4 as well.
      
      Does that clarify?
      
      Cheers,
      Mikal
      
      PS: This is basically now a discussion of optomistic locking versus
      pessimistic locking me thinks.
      


posted at: 07:00 | path: /linux | permanent link to this entry


Interesting links

posted at: 07:00 | path: /linux | permanent link to this entry


27 June 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 24 Jun 2003



25 June 2003

    A simple script to squelch repeated sequences of characters. Input of:
    ./repeats a b c a b c d d d e f g g h
    
    Will give something like:
    abc abc
    d d d
    e
    f
    g g
    h
    


posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 23 Jun 2003



24 June 2003

    Stats exam
    Well, I had my stats exam, and let's just say I hope to pass the unit.

    SnoopyPro log dumper
    My SnoopyPro log dumper is finished (or at least the bits I need for ICM 532 work). You can find the dumper online and as a tarball. This input currently gives this text output -- beware, those files are a little big.

    I'll announce it more formally soon, and see who yells for features. The current storage format is also so inefficient that I am tempted to come up with a new file format...

    Are all secondary students this dumb?
    My mother in law came over quite upset last night -- she thought she might have found some plagarism in year 12 student's work. Within about 30 minutes with google, I had prooven at least five of these people (out of about 40) had plagarised. How can you be that stupid? In year 12?!?

    Some talk of automating the googling for this sort of thing. I will think about this some more when I have more time, and it sounds like a good excuse to have a play with the relatively recent google SOAP interface.

    One more exam to go
    Assuming I pass everything, the next exam on Thursday should be my last ever (unless I go and do another degree by coursework, which I think is unlikely at this stage). I really should study for it now...

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 22 Jun 2003



23 June 2003

    Stats exam tomorrow, abstract algebra two days after that.

    There was some discussion on the Link mailling list about how many Australian government sites fail Bobby accessibility and w3c validity checks. So I automated it. The Bobby results are here with the w3c checks here.

posted at: 07:00 | path: /diary | permanent link to this entry


Fri, 20 Jun 2003



21 June 2003

    SnoopyPro logfile dumper has stalled -- I am theoretically studying for my statistics exam at the moment. It's very hard to motivate myself though. I'm hoping excess quantities of coffee will help.

    Tandy Tuggeranong is closing down. I'm amazed it took that long for people to work out they were being ripped off.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 18 Jun 2003



19 June 2003

    SnoopyPro logfile dumper progresses. The format is quite inefficient -- some data is stored up to three times. A sample of what I have so far:
        Value might be a short: (short) 1970 [2 bytes]
      Number of packets: 1970
      1970 URB pointers skipped
        Value might be a short: (short) 65535 [2 bytes]
        Value might be an integer: (int) 17147967 [4 bytes]
      Plugin timestamp: 17147967
        Value might be a short: (short) 1 [2 bytes]
      Timestamp is relative (1 == true): 1
      
      -----------------------------------------------
      URB 0 starts at 7890 within file
      
      Sequence: (unsigned short) 1 [2 bytes]
        Length might be a short: (short) 4 [2 bytes]
      SnoopyPro URB object name: CURB
      Unknown: (int) 1 [4 bytes]
      
      Function: GET_DESCRIPTOR_FROM_DEVICE (0x000b)
      Time relative to start of dump: 10
        Value might be a short: (short) 0 [2 bytes]
      Endpoint: 0
      Pipe handle: 0x00000000
      Flags: (unsigned int) 4 [4 bytes]
      Status: (int) 0 [4 bytes]
      Link: (unsigned int) 0 [4 bytes]
      
      Length: (unsigned int) 96 [4 bytes]
      Direction (0 to, 1 from): (int) 0 [4 bytes]
      Sequence number: (unsigned int) 1 [4 bytes]
      Timestamp: (unsigned int) 17147977 [4 bytes]
      
      URB header:
      Length: (unsigned short) 80 [2 bytes]
      Function: (unsigned short) 11 [2 bytes]
      Status: (unsigned int) 0 [4 bytes]
      Skipped device handle pointer
      Flags: (unsigned int) 34 [4 bytes]
      
      -----------------------------------------------
      URB 1 starts at 7964 within file
      
      Sequence: (unsigned short) 1 [2 bytes]
        Length might be a short: (short) 20 [2 bytes]
      SnoopyPro URB object name: CURB_ControlTransfer
      Unknown: (int) 1 [4 bytes]
      
      Function: CONTROL_TRANSFER (0x0008)
      Time relative to start of dump: 10
        Value might be a short: (short) 0 [2 bytes]
      Endpoint: 0
      Pipe handle: 0x82af53d8
      Flags: (unsigned int) 6 [4 bytes]
      Status: (int) 0 [4 bytes]
      Link: (unsigned int) 0 [4 bytes]
      


    ...And so on...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 16 Jun 2003



17 June 2003

    Because I have two maths exams next week, I spent some time working on a command line dumper for SnoopyPro log files (SnoopyPro is used to dump the USB traffic between a device and it's driver on a Windows machine, and is very useful for reverse engineering).

    This happened because I have three USB dumps of interest, but not the tools to be able to correlate them conveniently. SnoopyPro does XML export, but it is evil.

    I should one day study for those exams.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 11 Jun 2003



12 June 2003

    A simple example of how to use execvp().

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 10 Jun 2003



11 June 2003

    Uni

    Well, I'm graduating again.

    Ouch!

    Hmmm. The meta-carpal in my right hand is acting up again...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 09 Jun 2003



PandaScript 0.5 Released

    PandaScript 0.5 has been released. PandaScript 0.4 was skipped to keep the version numbers inline with Panda. The cool bit about this release is that PandaScript is now automatically generated by Objectify, which means it should always be up to date with the latest Panda version. You can download the latest source from here and a signature from here.

posted at: 07:00 | path: /panda/pandascript | permanent link to this entry


Objectify 0.3

    Objectify 0.3 can now generate command line interfaces based on a flex lexer, and a yacc grammar. Sorta cool. You can grab the sourcecode from here and a signature from here.

posted at: 07:00 | path: /site | permanent link to this entry


Objectify 0.3

    Objectify 0.3 can now generate command line interfaces based on a flex lexer, and a yacc grammar. Sorta cool. You can grab the sourcecode from here and a signature from here.

posted at: 07:00 | path: /objectify | permanent link to this entry


10 June 2003

    How incompetent can one university be? I strongly recommend that future students avoid University of Canberra. Having studied the program for this year negotiated with the head of school, they have just refused to graduate me (for a second time). It strikes me as fairly fundamental for a university to be able to keep track of their student's studies.

    Oh, that and all the good teachers left years ago. If they need hints as to why people aren't enrolling in their engineering degrees any more, I would be happy to provide hints.

posted at: 07:00 | path: /diary | permanent link to this entry


PandaScript 0.5 Released

    PandaScript 0.5 has been released. PandaScript 0.4 was skipped to keep the version numbers inline with Panda. The cool bit about this release is that PandaScript is now automatically generated by Objectify, which means it should always be up to date with the latest Panda version. You can download the latest source from here and a signature from here.

posted at: 07:00 | path: /site | permanent link to this entry


Mon, 02 Jun 2003



03 June 2003

    Bizarre. Yesterday was the last lecture I intend to attend for my undergraduate degree, and today is the last tutorial. For some wierd emotional reason, I don't feel ready to stop studying yet.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 28 May 2003



Panda 0.5.3 Release

    This version has heaps of bug fixes, as well as a compilation fix.

    Source (with examples) (signed)
    Source (without examples) (signed)
    Source (with MS Windows stuff) (signed) Quite big


posted at: 07:00 | path: /panda/panda-download | permanent link to this entry


Panda 0.5.3 Release

    This version has heaps of bug fixes, as well as a compilation fix.

    Source (with examples) (signed)
    Source (without examples) (signed)
    Source (with MS Windows stuff) (signed) Quite big


posted at: 07:00 | path: /site | permanent link to this entry


mandocs and mandocs_install

    This is the announcement email I sent to LKML:
    Hey,
    
    this patch adds two new targets to the 2.5 makefiles -- mandocs, and 
    mandocs_install. The targets require two new perl scripts in the scripts/ 
    directory, but in return we get a series of man pages for kernel 
    functions, which are installed in man section 9. This is a good thing, as 
    many programmers expect documentation to be available with man, and 
    hunting through various PS or PDF documents to find the documentation for 
    the function you want can be quite frustrating.
    
    The man pages are just extracted from the various existing DocBook SGML 
    documents, which are generated by kernel-doc. You also need to have 
    docbook2man installed on your machine.
    
    Note that the two scripts (makeman and split-man) need executable 
    permissions, and I couldn't work out how to make this happen in a mere 
    diff. Also please note the formatting is not perfect, but I will tweak 
    other stuff later with further patches -- this is just an initial 
    implementation.
    
    Sample output (HTMLised) can be found at 
    http://www.stillhq.com/linux/mandocs/2.5.70/
    
    Linus, please consider applying.
    
    Thanks,
    Mikal
    
    
    The patch can be found here, and the sample output is here.

posted at: 07:00 | path: /linux | permanent link to this entry


mandocs and mandocs_install

    This is the announcement email I sent to LKML:
    Hey,
    
    this patch adds two new targets to the 2.5 makefiles -- mandocs, and 
    mandocs_install. The targets require two new perl scripts in the scripts/ 
    directory, but in return we get a series of man pages for kernel 
    functions, which are installed in man section 9. This is a good thing, as 
    many programmers expect documentation to be available with man, and 
    hunting through various PS or PDF documents to find the documentation for 
    the function you want can be quite frustrating.
    
    The man pages are just extracted from the various existing DocBook SGML 
    documents, which are generated by kernel-doc. You also need to have 
    docbook2man installed on your machine.
    
    Note that the two scripts (makeman and split-man) need executable 
    permissions, and I couldn't work out how to make this happen in a mere 
    diff. Also please note the formatting is not perfect, but I will tweak 
    other stuff later with further patches -- this is just an initial 
    implementation.
    
    Sample output (HTMLised) can be found at 
    http://www.stillhq.com/linux/mandocs/2.5.70/
    
    Linus, please consider applying.
    
    Thanks,
    Mikal
    
    
    The patch can be found here, and the sample output is here.

posted at: 07:00 | path: /site | permanent link to this entry


Tue, 27 May 2003



Libmplot 0.6.1

    This release fixes a couple of minor problems with the library.

posted at: 07:00 | path: /site | permanent link to this entry


A Ruby wrapper for Panda

    I was catching up on my email backlog today, and discovered that there is a Ruby wrapper for Panda. Cool, although a little out of date now...

posted at: 07:00 | path: /panda | permanent link to this entry


A Ruby wrapper for Panda

    I was catching up on my email backlog today, and discovered that there is a Ruby wrapper for Panda. Cool, although a little out of date now...

posted at: 07:00 | path: /site | permanent link to this entry


Libmplot 0.6.1

    This release fixes a couple of minor problems with the library.

posted at: 07:00 | path: /libmplot | permanent link to this entry


28 May 2003

    There is a Ruby wrapper for Panda. How wierd is that?

    Hacked up a variety of bug fixes today for Panda, including adding a bunch of patches from very cool people.

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 26 May 2003



27 May 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Building Snoopy Pro from the source distribution

    Unfortunately, I couldn't get Snoopy Pro to always work for me. It would say that the device was being sniffed, but no traffic would be logged. Obviously, the thing to do was download the source code, and run it in a debugger. Here's the steps I went through to get the code to compile on my Windows XP machine running Visual Studio .NET...

    • Download the source package from http://sourceforge.net/projects/usbsnoop
    • Open it in Visual Studio. Depending on the version of the IDE you're using, you might be asked to upgrade the project files. I certainly was.
    • The project complained about a missing header wdm.h when I tried to compile. It turns out that WDM is a Windows device driver abstraction layer. I downloaded the Windows XP device driver kit (130 MB) from the MSDN subscriber downloads page. If you're not a subscriber this might be a little hard. Microsoft isn't freely distributing this, and you wont be getting it from me. I guess that's one of the reasons Open Source is better -- it seems a little wierd that you have to pay to write drivers to support someone's platform.

        Order the Windows DDK. The Microsoft® Windows® Driver Development Kit (DDK) is available now. We will not be offering this kit as a download on this Web site. However, it is part of the standard MSDN® subscription download and ships with the standard edition.
        http://www.microsoft.com/whdc/ddk/winddk.mspx
    • Wait for the 130 mb download
    • Install the DDK. This takes a long time.
    • TODO ADDING LIBARY AND INCLUDE PATHS
    • Now I did a build within Visual Studio .NET, and got:
      (Indents show where I have manually broken lines)
      
      UsbSnoop error LNK2001: unresolved external symbol __RTC_CheckEsp
      UsbSnoop error LNK2001: unresolved external symbol __RTC_CheckEsp
      UsbSnoop error LNK2001: unresolved external symbol __RTC_InitBase
      UsbSnoop error LNK2001: unresolved external symbol __RTC_InitBase
      UsbSnoop error LNK2001: unresolved external symbol __RTC_InitBase
      UsbSnoop error LNK2001: unresolved external symbol __RTC_Shutdown
      UsbSnoop error LNK2001: unresolved external symbol __RTC_Shutdown
      UsbSnoop error LNK2001: unresolved external symbol __RTC_Shutdown
      UsbSnoop error LNK2019: unresolved external symbol @__security_check_cookie@4 
         referenced in function "long __stdcall AddDevice(struct _DRIVER_OBJECT *,
         struct _DEVICE_OBJECT *)" 
         (?AddDevice@@YGJPAU_DRIVER_OBJECT@@PAU_DEVICE_OBJECT@@@Z)
      UsbSnoop error LNK2019: unresolved external symbol @_RTC_CheckStackVars@8 
         referenced in function "long __stdcall GetRegistryDword(unsigned short *,
         unsigned short *,unsigned long *)" (?GetRegistryDword@@YGJPAG0PAK@Z)
      UsbSnoop error LNK2019: unresolved external symbol ___security_cookie 
         referenced in function "long __stdcall AddDevice(struct _DRIVER_OBJECT *,
         struct _DEVICE_OBJECT *)" 
         (?AddDevice@@YGJPAU_DRIVER_OBJECT@@PAU_DEVICE_OBJECT@@@Z)
      UsbSnoop error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in 
         function "long __stdcall GetRegistryDword(unsigned short *,unsigned short *,
         unsigned long *)" (?GetRegistryDword@@YGJPAG0PAK@Z)
      UsbSnoop fatal error LNK1120: 6 unresolved externals
      UsbSnoop warning LNK4075: ignoring '/INCREMENTAL' due to '/RELEASE' 
         specification
      
    • CheckEsp() is something which the debug builds do for you so that you're aware when you have mucked up a call. ESP is the stack pointer on the x86 CPU.
    • Changing to a release build (that was a debug build obviously), got this error list down to:
      UsbSnoop error LNK2019: unresolved external symbol @__security_check_cookie@4 
         referenced in function "long __stdcall AddDevice(struct _DRIVER_OBJECT *,
         struct _DEVICE_OBJECT *)" 
         (?AddDevice@@YGJPAU_DRIVER_OBJECT@@PAU_DEVICE_OBJECT@@@Z)
      UsbSnoop error LNK2019: unresolved external symbol ___security_cookie 
         referenced in function "long __stdcall AddDevice(struct _DRIVER_OBJECT *,
         struct _DEVICE_OBJECT *)" 
         (?AddDevice@@YGJPAU_DRIVER_OBJECT@@PAU_DEVICE_OBJECT@@@Z)
      UsbSnoop fatal error LNK1120: 2 unresolved externals
      
    • A little big of grepping later, and I have:
      ./wxp/i386/BufferOverflow.lib: [ 92](sec 21)(fl 0x00)(ty  20)(scl   2) (nx 1) 
         0x00000000 @__security_check_cookie@4
      ./wxp/i386/BufferOverflow.lib: @__security_check_cookie@4 :
      
    • This is objdump output, and it tells me that the call I need is in the library called BufferOverflow.lib, in wxp/1386. Wow, I didn't know there was a need to implement buffer overflows in a separate library, I thought you got the for free with most code!
    • TODO ADDING LIBRARY
    • It never ends, because then we get (I'm compiling this on a Windows XP machine):
      UsbSnoop error PRJ0019: A tool returned an error code: "Performing Custom Build 
         Step"
      UsbSnoop warning LNK4096: /BASE value '0x10000' is invalid for Windows 95 and 
         Windows 98; image may not run
      UsbSnoop warning LNK4210: .CRT section exists; there may be unhandled static 
         initializers or terminators
      


posted at: 07:00 | path: /snoopypro | permanent link to this entry


Sun, 25 May 2003



26 May 2003

    One of those weekends. There were two birthday parties, as well as the dedication for Matthew. Got no work done, although did manage some housework in there.

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 22 May 2003



23 May 2003

    Argh! There's an American walking around the office video taping us!

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 21 May 2003



22 May 2003

    CLUG tonight, where I might give a completely unprepared talk about PandaEdit (unprepared becuase of the Uni workload this week). I also have a maths test today, and an assignment due tomorrow. On top of that, I need to do my normal paid work, and copy CDs for the CLUG tonight.

    Anyway, I'm sure you don't really care about my stress levels, so I'll be quiet now...

posted at: 07:00 | path: /diary | permanent link to this entry


Tue, 20 May 2003



21 May 2003



    One of those days when I didn't get enough maths homework done...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 19 May 2003



20 May 2003

    AUUG
    I got my copy of the AUUG voting papers today. Voting for or against the people I have met is easy, but a bunch of people nominated for ordinary committee positions who I had never heard of before. It's really hard to decide to vote for based on a one paragraph statement in the election materials, especially when some didn't even bother to provide that. I ended up using the Google method of determining who to vote for. This involved searching for their email address, and then seeing if they were a regular contributor to the community. It's amazing how many people had less than 20 hits for their email address in Google.

    Work
    I don't normally talk about work stuff here much, but I thought I should say that I spent some time yesterday fixing a problem where a window handle was being cache incorrectly, and am spending today writing conversion code for one of the internal databases.

    Open Source
    Still chasing a silly bug in PandaEdit. I will one day find it I imagine. It has to do with the fact that there are many items of type object, and a bunch of them happen to refer to each other.

    Uni
    18 contact hours, one in class test, two assignments, and two exams before I graduate. Not that I'm counting.

    Home
    Andrew has started chasing me around saying "Michael" and waving his arms... A constant demand for cuddles. Quite strange.

posted at: 07:00 | path: /diary | permanent link to this entry


Sat, 17 May 2003



PandaLex 0.5.1

posted at: 07:00 | path: /site | permanent link to this entry


18 May 2003

    Freshmeat frenzy
    Released the new versions of Panda, PandaLex, and libmplot on freshmeat.net in the last couple of days.

    School
    21 contact hours, two assignments, and two exams before I am hopefully eligible to graduate... Hurrah!

posted at: 07:00 | path: /diary | permanent link to this entry


PandaLex 0.5.1

posted at: 07:00 | path: /panda/pandalex | permanent link to this entry


Thu, 15 May 2003



Panda 0.5.2 Release

    Panda 0.5.2 release is now available. It has a slight include file bug fix compared with 0.5, and a couple of other bug fixes...

    Source (with examples) (signed)
    Source (without examples) (signed)
    Source (with MS Windows stuff) (signed) Quite big


posted at: 07:00 | path: /panda/panda-download | permanent link to this entry


Panda 0.5.2

    Panda 0.5.2 release is now available. It has a slight include file bug fix compared with 0.5.1, and a couple of other bug fixes... Downloaded from the Panda download page.

posted at: 07:00 | path: /panda | permanent link to this entry


16 May 2003

    PandaLex bug squishing extravaganza. There is also some talk about possible GPL violations by SCO on the linux-elitists mailling list. This picture caused some interest:



    This CD is in my collection, was issued in 2002, and includes a URL for the source code for GPL source which is now inaccessible. Nice camera and keyboard huh?

posted at: 07:00 | path: /diary | permanent link to this entry


Panda 0.5.2 Release

    Panda 0.5.2 release is now available. It has a slight include file bug fix compared with 0.5, and a couple of other bug fixes...

    Source (with examples) (signed)
    Source (without examples) (signed)
    Source (with MS Windows stuff) (signed) Quite big


posted at: 07:00 | path: /site | permanent link to this entry


Libmplot 0.6

    I have been using libmplot extensively for a PDF project I have been working on, and have therefore found and resolved several important bugs in the line stroking implementation. You can download the latest version if you would like.

posted at: 07:00 | path: /libmplot | permanent link to this entry


Libmplot 0.6

    I have been using libmplot extensively for a PDF project I have been working on, and have therefore found and resolved several important bugs in the line stroking implementation. You can download the latest version if you would like.

posted at: 07:00 | path: /site | permanent link to this entry


Wed, 14 May 2003



15 May 2003

    Spent some time this evening getting PandaLex to work better on some of the regression tests which used to fail. The results of the regression tests are available online.

posted at: 07:00 | path: /diary | permanent link to this entry


LSE 2.6 todo meeting

posted at: 07:00 | path: /linux | permanent link to this entry


Mon, 12 May 2003



13 May 2003

    Is it just me, or has the rate of change of the places I visit on the 'net significantly decreased? It makes for a much more boring place when you're taking a break from coding, and all the interesting sites are exactly as they were two hours ago...

    Perhaps I've been spoiled by Internet time.

posted at: 07:00 | path: /diary | permanent link to this entry


Wed, 07 May 2003



08 May 2003

    3 am phone calls
    My little brother has been in Germany for a month on a school trip. He lost his mobile phone, and the dude who found it tried to return it by ringing all of the numbers in the address book (all back in AU), and asking if anyone spoke German. None of us do. This resulted in the "Is David dying in hospital?" conversation. All good in the end though. A little tired as a result.

    Gastro
    The whole family had it yesterday, and I don't feel too crash hot today. Another day off work me thinks.

    PDF DB
    Has been getting a bit of attention. Very wierd.

    Kernel pain
    Is it a bad sign when tracking a kernel bug leads you to start wondering what that schedule() function does?

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 05 May 2003



06 May 2003

    Hmmm. What have I been up to? Well, I've been hacking on PandaEdit, I've made public my test database of PDFs, and I done a bunch of paid work. At the insistance of the project manager at work, I have also whipped up some code in c# to prove that I can.

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 04 May 2003



PDF testing database online

posted at: 07:00 | path: /site | permanent link to this entry


Mon, 28 Apr 2003



29 April 2003

    How flattering! My first invitation to talk at an Open Source conference (this one was in Singapore). I'll be no because of the kids though. Perhaps next year...

posted at: 07:00 | path: /diary | permanent link to this entry


Fri, 25 Apr 2003



26 April 2003

    Hey! 25,000 lines of code (PandaEdit, Panda, PandaLex, and libmplot), and I can now draw a bad freehand stick figure...

    The cool bit of course being that it's stored in a PDF, which can be opened and displayed within the application as well. The next step is to be able to edit lines once drawn.

posted at: 07:00 | path: /diary | permanent link to this entry


Thu, 24 Apr 2003



25 April 2003

posted at: 07:00 | path: /diary | permanent link to this entry


Autotools implementation patch

    Here's a patch for x86info which implements autotools.

posted at: 07:00 | path: /x86info | permanent link to this entry


Wed, 23 Apr 2003



24 April 2003

    Well, Dave Jones mentioned the stuff I did for x86info building a wxwindows GUI interface in his diary. He didn't like it very much:
    Someone got creative, and sent me a diff for GUI frontend for x86info.
    Unfortunatly using wxWindows, which I've various objections to. I'd
    much rather a simple toolkit like GTK or QT be used. (Those libs are 
    far more likely to be installed on a users box, and asking someone to 
    install a new widget toolkit for x86info is a bit silly IMO). Nice try 
    though. The diff also did some other things I'm not too sure about. 
    Replacing printf's with output_text() calls which are defined as 
    printf for textmode, and widget_render or whatever for the GUI is one 
    way of doing things, but how I had things in my head was x86info 
    becoming a shared lib, and sprintf'ing to a buffer.
    
    Then again, he never responded to my queries about alternatives to the sprintf thing, which strikes me as a large parsing overhead.

    On a personal front, spent three days in the hospital with Matthew. Apparently all 8 weeks olds with a fever get admitted. They never did find what was wrong with him...

posted at: 07:00 | path: /diary | permanent link to this entry


24 April 2003

    Well, Dave Jones mentioned the stuff I did for x86info building a wxwindows GUI interface in his diary. He didn't like it very much:
    Someone got creative, and sent me a diff for GUI frontend for x86info.
    Unfortunatly using wxWindows, which I've various objections to. I'd
    much rather a simple toolkit like GTK or QT be used. (Those libs are 
    far more likely to be installed on a users box, and asking someone to 
    install a new widget toolkit for x86info is a bit silly IMO). Nice try 
    though. The diff also did some other things I'm not too sure about. 
    Replacing printf's with output_text() calls which are defined as 
    printf for textmode, and widget_render or whatever for the GUI is one 
    way of doing things, but how I had things in my head was x86info 
    becoming a shared lib, and sprintf'ing to a buffer.
    
    Then again, he never responded to my queries about alternatives to the sprintf thing, which strikes me as a large parsing overhead.

    Here's the patch I sent him. Watch out! It's big...

posted at: 07:00 | path: /x86info | permanent link to this entry


Mon, 21 Apr 2003



22 April 2003

    The straight line works!

posted at: 07:00 | path: /diary | permanent link to this entry


Sun, 20 Apr 2003



21 April 2003

    I am close enough to the world least usable PDF viewer / editor to think about mentioning it here. 8,000 lines of code, and you can nearly draw a straight line...

posted at: 07:00 | path: /diary | permanent link to this entry


Mon, 14 Apr 2003



15 April 2003

    Resolved not to say anything here until I had got something useful done. Gave up on that idea today... I have been hacking on x86info though.

posted at: 07:00 | path: /diary | permanent link to this entry


Fri, 04 Apr 2003



CDs currently available -- LCA 2003, Knoppix 3.2, LFS, LNX BBC, Mandrake, Redhat, Slackware

    Caldera OpenLinux
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)
  • 3.0 release 1 PPC (1 CD)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)
  • 4.7 (4 CDs)
  • 5.0 (2 CDs)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)
  • 3.2 (1 CD)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Bootable Business Card
  • If you want these on a business card CD, you'll need to give me blanks first...
  • 1.618 (1 CD)

    linux.conf.au
  • 2003 Proceedings CD (1 CD)
  • 2003 Talks as MP3s (2 CDs)

    Linux from scratch
  • 4.0 tarball on CD (1 CD)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - March 2003 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 8.2 PPC (2 CDs)
  • 9.0 x86 (3 CDs)
  • 9.1 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    OpenOffice
  • 1.0.2 -- for Linux, FreeBSD, MacOS X, Solaris, and that W thing (1 CD)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)
  • 9.0 x86 (3 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)
  • 8.1 (1 CD)
  • 9.0 (1 CD)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)
  • 8.1 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 06:00 | path: /cdr | permanent link to this entry


Wed, 02 Apr 2003



03 April 2003

    Doing battle with real mode interrupt handlers on x86. Getting closer, although not having written assembler in years, let alone never having written x86 assembler doesn't help. This segmented architecture is evil.

posted at: 06:00 | path: /diary | permanent link to this entry


Tue, 01 Apr 2003



CDs currently available

    Caldera OpenLinux
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)
  • 3.0 release 1 PPC (1 CD)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - March 2003 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 8.2 PPC (2 CDs)
  • 9.0 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    OpenOffice
  • 1.0.2 -- for Linux, FreeBSD, MacOS X, Solaris, and that W thing (1 CD)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)
  • 8.1 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 06:00 | path: /cdr | permanent link to this entry


CDs currently available -- Yet more FreeBSD

    Caldera OpenLinux
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)
  • 3.0 release 1 PPC (1 CD)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)
  • 4.7 (4 CDs)
  • 5.0 (2 CDs)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - March 2003 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 8.2 PPC (2 CDs)
  • 9.0 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    OpenOffice
  • 1.0.2 -- for Linux, FreeBSD, MacOS X, Solaris, and that W thing (1 CD)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)
  • 8.1 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 06:00 | path: /cdr | permanent link to this entry


Mon, 31 Mar 2003



01 April 2003

    Why am I web surfing at 3am? The short answer, young children.

posted at: 06:00 | path: /diary | permanent link to this entry


Fri, 28 Mar 2003



Shdns released

    The shdns code can be found here.

posted at: 04:00 | path: /shdns | permanent link to this entry


Connected sockets

    This patch implements connected sockets for inetd servers. This was required for my to implement a UDP service using shell script -- for example shdns, my DNS server written in bourne again shell.

posted at: 04:00 | path: /netkit | permanent link to this entry


shdns, a DNS server written in bourne again shell

    I've just released the first cut of shdns, my DNS server written in bash...

posted at: 04:00 | path: /site | permanent link to this entry


29 March 2003

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 26 Mar 2003



27 March 2003

    Well, I've got that maths test this afternoon, and then the local LUG meets tonight. Apart from that, not much on. It will be good to have the test out of the way, because it will free up some time for more interesting coding again. I have an assignment due next week (and a test the week after), but they're for Statistics, so I am not too worried about them.

    The other hard thing is deciding which thing to work on next. I think I might finish playing with my first x86 assembly project, because it is interesting, and easy to get out of the way.

    Then probably back to FAT filesystem parsing code.

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 25 Mar 2003



26 March 2003

    Well, with the article out of the way I am meant to be worrying more about studying for this maths test. It's not too bad -- group theory isn't too ugly (except for calculating inverses in some instances), and GCD stuff is ok once you get your head around some of the funny table representations they use for stuff.

    On the new maths front, we were playing with decrypting messages in the number theory class today. Very cool.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 24 Mar 2003



25 March 2003

    Doing one last final proof read on the article now, then I'll send it. This will be a good thing, because it will mean that I can then move on and start studying for the maths test I have in three days from now. I don't think the test is too bad though -- it's on group theory, with a bit of greatest common divisor theory thrown in for good luck.

posted at: 04:00 | path: /diary | permanent link to this entry


CDs currently available

    Caldera OpenLinux
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)
  • 3.0 release 1 PPC (1 CD)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - March 2003 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 8.2 PPC (2 CDs)
  • 9.0 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    OpenOffice
  • 1.0.2 -- for Linux, FreeBSD, MacOS X, Solaris, and that W thing (1 CD)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 04:00 | path: /cdr | permanent link to this entry


Sun, 23 Mar 2003



24 March 2003

posted at: 04:00 | path: /resume | permanent link to this entry


24 March 2003

    Wow! I'm still fussing over that article. It's due in two days time (US time). I need to get it out of the way so I can study for my maths test. I vow to have it finished by bed tonight, dispite having to work through a Law and Order backlog.

posted at: 04:00 | path: /diary | permanent link to this entry


Sat, 22 Mar 2003



23 March 2003

    More work on the article. Also had a play with a simple hello world linux kernel module. I can't get it to compile because of MODVERSIONS though. I am going to have to think about it more...


posted at: 04:00 | path: /diary | permanent link to this entry


Fri, 21 Mar 2003



21 March 2003

    Vasantha's farewell at work today -- it took the vast majority of the afternoon... Hopefully she'll get well soon and her urge to go to the UK will subside. For those interested, the the pictures are here. Higher resolution copies are available on request.


posted at: 04:00 | path: /diary | permanent link to this entry


22 March 2003

    Well, working at home on a Saturday again. I'm still finishing off the article for the unnamed journal, I should be studying for a maths test I have next week, and generally procrastinating. Utah Saints still rock too...

    I also downloaded heaps of free TrueType fonts, in order to assist my wife with her cross stich endevours.

    Suffered through a bush dance because it one of those things we do to stay happily married. In actual fact, it wasn't as bad as I first thought it would be...


posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 19 Mar 2003



20 March 2003

    Wrote my first x86 assembly last night (I've only done M68000 until now). It's nothing special, it just calls the CPUID instruction, which is available from kernel and userspace, and decodes one of the possible outputs:
    #include <stdio.h>
    
    /*
     * Generic CPUID function (stolen from Linux 2.5.59)
     */
    static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx)
    {
           __asm__("cpuid"
                  : "=a" (*eax),
                    "=b" (*ebx),
                    "=c" (*ecx),
                    "=d" (*edx)
                  : "0" (op));
    }
    
    void registerToAscii(int reg)
    {
      printf("%c", reg);
      reg = reg >> 8;
      printf("%c", reg);
      reg = reg >> 8;
      printf("%c", reg);
      reg = reg >> 8;
      printf("%c", reg);
    }
    
    int main(int argc, char *argv[])
    {
      int a, b, c, d;
    
      printf("Calling cpuid with an input operand of zero\n\n");
      cpuid(0, &a, &b, &c, &d);
    
      printf("Got back: 0x%08x 0x%08x 0x%08x 0x%08x\n", a, b, c, d);
      printf("This decodes to: ");
      registerToAscii(b);
      registerToAscii(d);
      registerToAscii(c);
      printf("\n");
    }
    
    This gives the following on my Pentium III laptop:
    #./cpuid
    Calling cpuid with an input operand of zero
    
    Got back: 0x00000002 0x756e6547 0x6c65746e 0x49656e69
    This decodes to: GenuineIntel
    
    I had no trouble finding instruction references for the Intel x86 chips. Where do I find the same documentation for the various AMD, Via, Cyrix et al chips floating around?

    All of this was prompted by having a look at the x86info code, and the cpuid function in the 2.5.59 kernel tree I have been poking around in and deciding that I would like to understand at least a little more about what was happening. The hardest bit (and it isn't very hard) is to determine what the GCC inline assembly syntax means. I recommend this IBM DeveloperWorks article...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 18 Mar 2003



19 March 2003

    Listening to Blur in my study at home. Work's Internet feed has ben intermittent at best for nearly a week now -- ouch!

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 17 Mar 2003



18 March 2003

    In the office.

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 16 Mar 2003



17 March 2003

    Well, spent most of yesterday doing family things -- church, lunch with my parents, visiting a friend who has just had a baby (cache manager for Telstra's Internet backbone), and then to an old boss' house for dinner. A good but busy and tiring day all around.

    Trying to spend some time today on that article, but having rediscovered the Utah Saints has proved distracting.

posted at: 04:00 | path: /diary | permanent link to this entry


Fri, 14 Mar 2003



15 March 2003

    Well, once more doing stuff of interest to the real world -- things are starting to settle into a routine at home.

    Spent the morning working on an article for a certain journal which is due soon.

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 11 Mar 2003



12 March 2003

    Well, it's been a while since I've had any time to write stuff here... I haven't got much coding done in that time, but I've got a whole lot of fathering done.

    Did heaps of coding for work, got up to date with the CAUUG committee meeting minutes, and did some open source stuff as well. I'm a good boy really. On the open source front, I am thinking of changing my tack with PandaEdit. I have decided the way to progress is to work on individual parsing / generation features, and get those working, instead of going for the big bang approach to the whole thing...

    JWZ's livejournal pointed me at this, for which I am forever grateful.

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 06 Mar 2003



Installing Mono

    There are lots of mono RPMs and stuff on the web, but I wanted something which integrates nicely with Debian's apt packaging system... It turns out that someone has already done all the leg work. Simply include this in /etc/apt/sources.list:
    # For MONO
    deb http://www.debianplanet.org/mono unstable main
    deb-src http://www.debianplanet.org/mono unstable main
    
    Now we just need to install mono:
    apt-get install mono
    
    And then it all just works.

posted at: 04:00 | path: /dotnet | permanent link to this entry


Mon, 03 Mar 2003



04 March 2003

    Hmmmm. NFS exports under linux are wierd. I have a box whose IP is 172.31.0.160, and it's name is wired-dhcp160.stillhq.com. To get the export from the fileserver to work, I needed the DNS name, the IP address alone wasn't sufficient.

    Wierd.

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 02 Mar 2003



Matthew born

    Our second son, Matthew, has come into the world...



posted at: 04:00 | path: /site | permanent link to this entry


Fri, 28 Feb 2003



01 March 2003

    Well, a long time no blog. I've been to Dubai and Abu Dhabi (for three hours each), after which I returned home to a sick wife and a new son. I have been told I have graduated from my engineering degree, and then told that was wrong. I have also started investigating my PhD options...

    More when I have more spare time in my life...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 18 Feb 2003



19 February 2003

    Well, I'm now sitting on Emirates flight EK 405 to Singapour and Dubai from Melbourne -- in other words on my way to the Middle East, which is why I haven't been writing much here recently. I must say I like the Emirates in flight service, although my seat doesn't have a power outlet in it, which is a bit of a let down... Especially after the STA travel lady had assured me that it would have one. Oh well.

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 13 Feb 2003



14 February 2003

    Well, I had a busy day yesterday... I went out a picked up a set of Koss Portapros (why do vendor websites refuse to show the URLs which they use for products? Perhaps it is to stop deep linking) for the long flights next week. I think they'll come in handy in general as well. The bass response is amazing.

    Emily's birthday dinner last night, Andrew and I have a great time.

    There was also a CAUUG committee meeting yesterday. There's lots for me to chase up there for the coming technical symposium. This is complicated by me leaving the country for a week for one of the two weeks before the symposium is meant to run. I'll do the best I can and then hand the chasing onto someone else.

    Some thought on how to make my bison / flex parse for PDF faster.

    Oh, and I went to work in there somewhere as well.




    Well I'm a real blogger now, cause this diary entry has links up the wazoo...

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 12 Feb 2003



13 February 2003

    My wxWindows problems ended up being fixed by downgrading to GCC 2.95...

    Uni enrollment junk, and then on with the project I am working on for my paid employment. There is a bug, and I am stuffed if I can find what it is causing it...

    In the evening, onto playing with PandaEdit some more. It's not yet ready for an announcement, because it is still at the point where more renders fail than pass. I am thinking that by the time AOSS comes up in July, then it might be ready for a bit more public attention. We shall see...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 11 Feb 2003



12 February 2003

    Getting the wxWindows packages for Debian working seems not to be as easy as it should be. I am not sure if it is because of the new compiler version or not, but the compile dies quite quickly. In addition, I had to use the 2.2 packages, as 2.4 has a file missing. In the end I simply removed all the Debian packages, grabbed the wxWindows source, fixed the single compile error it had with gcc 3.2, and installed that instead.

    It's one of those days when nothing works. I bring my work Windows box home with me all the time, and this is the first time in 18 months that it has failed to log me on from home... There is a message about the domain not being available, but this used to work only last week. I suspect that someone has changed something they didn't really understand on the network configuration side of the fence.

    Lots of CAUUG discussion about the next symposium, local politicians, and what to do next.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 10 Feb 2003



11 February 2003

    Well, I've been having a frustrating time compiling a custom kernel for my Debian unstable laptop which actually works. I'm probably just showing my lack of expertise now...

    Spent lots of time with a script I wrote describing pictures for this site so that later I can search based on these descriptions.

    Finishing off all the stuff which is due before the AUUGN deadline.

posted at: 04:00 | path: /diary | permanent link to this entry


Thu, 06 Feb 2003



07 February 2003

    Hmmm. Catherine has the flu, so I am home minding Andrew and Catherine today. Catherine also wants me to do some stuff with fonts and rendering to help her come up with cross stich patterns -- she just doesn't know it yet...

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 05 Feb 2003



06 February 2003

    Day long design meeting for the next release of the commercial product I work on. What fun.

    Upgraded to Debian unstable today. We'll see how bad it really is...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 04 Feb 2003



05 February 2003

    Well, the latop (and therefore my willingness to update this site) is back online with a new IBM hard disk. I've returned the old broken hard disk (minus all of my data, and full of random characters to IBM within the specified seven days, which hopefully means they will stop threatening me now. It turns out that Li-Ion batteries only have a rated life of 18 months, which is why I am going to have to wait four weeks for IBM to get another one in for me.

    That sucks, as it means I wont have a laptop battery which works whilst overseas. Oh well, there's nothing I can do about it now...

    In the evening I got some interesting email from the linux elitists mailling list I am subscribed to. It turns out that a lawyer in the US who happens to blog has been asked to provide an opinion on whether MS Word is a better format than PDF for online publishing of legal opinions. I hope my response wasn't too rude...
        From mikal@stillhq.com Wed Feb  5 20:07:42 2003
        Date: Wed, 5 Feb 2003 19:53:39 +1100
        From: Michael Still <mikal@stillhq.com>
        To: Jay Sulzberger <jays@panix.com>
        Cc: linux-elitists@zgp.org, appellateblog@hotmail.com
        Subject: Re: [linux-elitists] Suggestion to publish court opinions in
            secret Microsoft word processor format
        
        On Wed, 5 Feb 2003, Jay Sulzberger wrote:
        
        >    Since you recommend PDF, I am wondering how you suggest courts
        >    deal with accessibility issues. As I am sure you know, PDF is not
        >    considered an accessible format, as a PDF document is essentially
        >    an image.
        
        What can I say? This is simply wrong in so many ways. PDF is a page markup
        format. It can contain text, images, sounds, annotations, and multimedia
        thingies. The reason that many PDFs viewed by the public are images is
        because they are scanned before PDF generation as they come from dead tree
        form.
        
        You can test this for yourself -- turn on the text tool in Adobe Acrobat
        (the T), and select some text. If it's an image, then that wont work.
        
        >    While I realize that Adobe has recently come out with a
        >    version of PDF that is supposed to be able to be read by screen
        >    readers, my understanding is they are not very good and that
        >    documents have to go through an extraordinary conversion process.
        
        Checkout the PDF specifications at http://developer.adobe.com -- there has
        been no change like this that I have seen reference to. There is a plugin
        for Acrobat (the reading application), which aids accessibility, but there
        are many longstanding tools to extract textual content from PDF documents.
        
        >    When attending an accessibility seminar for Government employees
        >    held recently in Washington, the recommendation was to avoid the
        >    use of PDF unless an alternative version of the same document
        >    could also be provided.
        
        Is there any online documentation about this seminar? I am sure Adobe
        would have something to say about this FUD (fear, uncertainty and doubt).
        The specifications for PDF are also freely available at
        http://developer.adobe.com, for those who would like to research further
        before making incorrect statements in public.
        
        Most electronic document management vendors would strongly recommend PDF
        for this sort of activity.
        
        >    Do you know if most courts that provide
        >    PDF versions also provide an alternative format? If so what
        >    format seems to be the primary choice?
        
        Australian legal documents are provided in PDF, HTML and text. Checkout
        http://www.austlii.edu.au for more information. Patents and Trade Marks
        are made available primarily in PDF format.
        
        >    Thanks for your time and thoughts on this matter.
        
        Another thing to bear in mind is that PDF is an excellent archival format
        because the specification is open, well known, and understood. There are
        many open source applications which implement the specification, including
        xpdf, ghostscript, and panda. There are hundreds of commercial tools as
        well -- checkout places like http://www.pdfzone.com for more information.
        
        On the other hand, MS Word is effectively a single vendor format, which is
        not well documented, and changes with each release. Having worked on some
        Word format hacking, the format is rife with embedded COM objects, which
        are non trivial to parse.
        
        > If any of my technologically proficient readers have thoughts to offer in
        > response to the questions posed in this email from the Webmaster for the
        > Washington State Courts Internet site, please send me an email, and I will
        > collect and forward on to the Webmaster of the Washington State Courts
        > system the most useful comments that I receive.
        
        [ I wouldn't normally include something like this, but credentials might
        help with the discussions with court officials ]
        
        Former imaging specialist for the Australian Patent, Trade Marks and
        Designs offices, software engineer at a leading electronic document
        management software vendor, author of a PDF generation libary, a PDF
        parsing library, and a (soon to be announced) PDF editor and viewer.
        
        Cheers,
        Mikal
        
        -- 
        
        Michael Still (mikal@stillhq.com) | Stage 1: Steal underpants
        http://www.stillhq.com            | Stage 2: ????
        UTC + 11                          | Stage 3: Profit
        
    Well, it's long, but I was trying to make a point...

    Catching up on my shameful email backlog...

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 27 Jan 2003



28 January 2003

    Bad sectors on my laptop hard disk. Luckily, IBM will spring for a new one... I think the battery has developed a "memory" as well, but I'll play with that more before I complain too loudly...

    Hacking pandaedit.

posted at: 04:00 | path: /diary | permanent link to this entry


Fri, 24 Jan 2003



25 January 2003

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 22 Jan 2003



23 January 2003

    Went to 2.5.59 on my laptop. Now I just need to get it to work... First step, get all the modules I need for day to day life compiled and installed. I started with the USB stuff, and now I need to worry about the wireless networking.

    The USB hub seems to crash when I remove devices:
    [c1520240] link (01520032) element (01521030)
    0: [c1521030] link (00000001) e0 SPD IOC Stalled CRC/Timeo Length=7ff MaxLen=0 DT1 EndPt=1 Dev=2, PID=69(IN) (buf=12262ca4)
    
    [c1520270] link (01520032) element (01521030)
    0: [c1521030] link (00000001) e0 SPD IOC Stalled CRC/Timeo Length=7ff MaxLen=0 DT0 EndPt=1 Dev=2, PID=69(IN) (buf=12262ca4)
    
    Over and over again...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 21 Jan 2003



22 January 2003

    In an inexplicable fluke, I am through to the next round of the company ping pong competition!

posted at: 04:00 | path: /diary | permanent link to this entry


Sun, 19 Jan 2003



20 January 2003

    Canberra Bushfires



    Well, here's a summary of my weekend. I spent Saturday afternoon hosing down my house and watch flames about 3 - 4 times the height of the trees approaching the edge of the suburb. We didn't end up having anything in the street burn, but we were listed as a suburb under threat, and we did have burning embers falling out of the sky at one point.



    Catherine and Andrew evacuated because of asthma, and me not wanting a pregnant woman and a 11 month old in danger.

    I guess we were lucky, because the suburb is new enough to have very few large trees -- so gutters didn't have leaf litter in them and stuff.

    My pictures are by no means the most amazing, but these show what an average Canberra person saw on the weekend. Note that I didn't always have time to take photos -- we spent a lot of time with a hose.

    It is still raining burnt leaves and at the worst bits of branch and stuff were falling on us. These must have been lifted into the air by convection currents, and must have travelled some distance.

posted at: 04:00 | path: /diary | permanent link to this entry


20 January 2003

    Canberra Bushfires



    Well, here's a summary of my weekend. I spent Saturday afternoon hosing down my house and watch flames about 3 - 4 times the height of the trees approaching the edge of the suburb. We didn't end up having anything in the street burn, but we were listed as a suburb under threat, and we did have burning embers falling out of the sky at one point.



    Catherine and Andrew evacuated because of asthma, and me not wanting a pregnant woman and a 11 month old in danger.

    I guess we were lucky, because the suburb is new enough to have very few large trees -- so gutters didn't have leaf litter in them and stuff.

    My pictures are by no means the most amazing, but these show what an average Canberra person saw on the weekend. Note that I didn't always have time to take photos -- we spent a lot of time with a hose.

    It is still raining burnt leaves and at the worst bits of branch and stuff were falling on us. These must have been lifted into the air by convection currents, and must have travelled some distance.

posted at: 04:00 | path: /site | permanent link to this entry


Sat, 18 Jan 2003



18 January 2003

    Hosing down my house to stop it spot burning from the bushfire. More details later.

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 15 Jan 2003



16 January 2003

    LZW decompression pain related to the STRING+CHAR+STRING+CHAR+STRING special case... This doesn't seem to be working for me. The hardest part with this is that I don't know exactly what the decompressed stream I am playing with looks like, so I am not sure what is missing. The next logical step is for me to implement a short LZW compressor (which creates PDF compatible streams), and then try to decompress that and see if the results are right...

    This is of course dangerous, because compression is the bit covered by the patents (although those patents don't exist in my country).

    Started thinking about my UDP shell script article. I think I am going to have to write the two hundred word intro to TCP as a first step...

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 14 Jan 2003



15 January 2003

    The CVS version of libmplot now supports a quick and dirty raster scaling... Looking at LZW compression because my PDF code needs it. It would appear that the Patent expires mid this year, and no Australian patent was every issued.

    Like all good inventions, it's obvious once you understand it.

    Based on http://dogma.net/markn/articles/lzw/lzw.htm, the following string
    /WED/WE/WEE/WEB/WET
    
    Compresses to:
    [/][W][E][D][256][E][260][261][257][B][260][T]
    
    Where I have used the []'s to indicate code boundaries. The problem from an implementation point of view is that each code entry might flow across a byte boundary. In fact, in PDF 1.3, the codes can be 9 to 12 bits long, depending on the size of the codebook.

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 13 Jan 2003



14 January 2003

    So busy! The flights to Abu Dhabi are now booked, but I still need to apply for a passport et cetera -- that's down for this afternoon.

posted at: 04:00 | path: /diary | permanent link to this entry


Fri, 10 Jan 2003



11 January 2003

    Hacked kernel janitor patches all afternoon after having organized passport stuff. Fun fun fun.

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 08 Jan 2003



09 January 2003

    I got an email this morning from the conference people in Abu Dhabi saying that they are happy for me to come over for the conference and give a talk. University of Canberra has also said that they are happy to apy for the flights and stuff, and now work has said that they will give me time off to go over.

    Much travel organization to do.

    Hacked out a fix for people's comments on cli_sti_removal-002 (a kernel patch). It is compile tested, but until I get Rusty's userland module code installed, it doesn't get through depmod... I'll submit it Friday night my time (all things being equal).

posted at: 04:00 | path: /diary | permanent link to this entry


Tue, 07 Jan 2003



08 January 2003

    My desk seriously needs a tidy. Playing with static configuration classes within the commercial codebase I work on. It should save me from having to pass a bunch of boring parameters around. Ended up deciding it was a bad idea though -- it stops the code from being obvious in it's behaviour. When I am next in the office I should try to remember to scout out some of the c++ gurus and see if they hate the idea or not.

    It looks like Tridge might have found work -- he is no longer advertising for employment on his home page. Long conversation online with Martin Schwenke ranging over many topics, hardly any of which are actually computing related.

    I think it is time for me to change MUA. I have been using Pine for years now (about eight to be exact), but it doesn't do some of the things I want -- maildirs for instance. I am aware that there are patches, but a change is as good as a holiday. I also don't like the discussion thread support (I would like to be able to ignore further posts in a given thread), and the GPG integration is pretty dodge as well.

    First step, investigate conversion to maildirs.

    I have a patch most of the way there for wget where you can limit the file extensions which it will download (so for instance you can say "I only want files ending in .mp3 from this site"). The next step is to turn this into a command line specified list of regular expressions, and then I will release the patch. It is very useful though, and wasn't too hard to implement.

    I now also have all the basic building blocks to be able to easily implement the raster overlay functionality in libmplot, which will bring it closer to a release. Hurrah!

posted at: 04:00 | path: /diary | permanent link to this entry


Mon, 06 Jan 2003



Want a copy of a distro?

    Caldera OpenLinux
  • eServer 2.3 (3 CDs)
  • Server 3.1.1 (1 CD)

    Clark Connect
  • 1.0.2 (1 CD)

    Cygwin
  • Cygwin as at 1 September 2002 (2 CDs)

    Debian
  • 1.2 (1 CD)
  • Woody -- an early candidate for 3.0 (8 CD set)
  • 3.0 release 1 (7 CD set)

    FreeBSD
  • 2.2.6 (4 CDs)
  • 2.2.7 (4 CDs)
  • 2.2.8 (4 CDs)
  • 3.1 (4 CDs)
  • 3.2 (4 CDs)
  • 3.3 (4 CDs)
  • 3.4 (4 CDs)
  • 4.0 (4 CDs)
  • 4.6 (4 CDs)
  • 4.6.2 (1 CD)

    Gentoo
  • 1.2 x86 (1 CD)

    Knoppix
  • 3.1 (1 CD)

    TurboLinux
  • 6.0 Server (4 CDs)

    Linux Kernel Summit MP3s
  • 2002 Ottawa Linux Kernel Summit, MP3s of talks (1 CD)

    Linux Show (www.thelinuxshow.com)
  • June 2002 - December 2002 MP3s

    Lycoris
  • Redmond Linux 1.0 RC2 (4 CDs)

    Mandrake
  • 9.0 x86 (3 CDs)

    Minix
  • 2.0.3 (1 CD)

    NetBSD
  • 1.4.2 (1 CD)
  • 1.5 Sparc (1 CD)

    OpenBSD
  • 2.5 (2 CDs)
  • 3.1 (3 CDs)

    RedHat
  • 1.0 x86 (1 CD)
  • 1.1 x86 (1 CD)
  • 4.0 x86 (1 CD)
  • 5.1 x86 (2 CDs)
  • 6.0 x86 (1 CD)
  • 6.1 Sparc (1 CD)
  • 6.1 x86 (1 CD)
  • 6.2 Sparc (1 CD) -- I could never get this to work
  • 6.2 x86 (1 CD)
  • 7.0 x86 (4 CDs)
  • 7.1 x86 (3 binary CDs)
  • 7.3 x86 (3 binary CDs)
  • 8.0 x86 (5 CDs)

    Slackware
  • 96 (1 CD)
  • 2.1 (2 CDs)

    Suse
  • 6.1 Evaluation version (1 CD)
  • 8.0 (7 CDs)

    TurboLinux
  • 6.0 Server (4 CDs)

    YellowDog
  • 2.3 (1 CD)

posted at: 04:00 | path: /cdr | permanent link to this entry


PNGtools 0.2

    pngtools is a suite of commands that I needed to make PNG easier to use in my own development. I have been coding TIFF images with libtiff for some time, and the tiffinfo, tiffdump, and tiffcp commands are quite useful for that code. I have therefore implemented similar commands for libpng.

    Version 0.2 is now available. This implements the pngcp command, which can be used to edit the characteristics of PNG files. You can download the source from here.

posted at: 04:00 | path: /site | permanent link to this entry


07 January 2003

    More work on the HTML template processing system at work. It's not open source, so I wont discuss it any further here.

    Lots of email today. It would seem that Linus has included a patch of mine in his bitkeeper tree which isn't as correct as it might otherwise be. The interesting emails look something like this.

    Played with pngtools again, after an email from someone asking after the status of the pngcp command that I had never written. Got off my bottom and started thinking about it. There were also some things in pnginfo (likes it's assumption that images were always RGB and had only one byte per sample) that I didn't like and have now fixed.

    I released a new version today.

    Now I can get back to the project which prompted the PNGcp coding -- I want to be able to overlay a raster of any bitdepth and sample rate onto a 8 bit per sample, 3 sample per pixel raster for use in libmplot. This can then the used in yet another of my projects.

    A friend of mine who will remain anonymous had to write a letter kicking herself out of home the other day so that she could get government housing benefits.

posted at: 04:00 | path: /diary | permanent link to this entry


PNGtools 0.2

    Version 0.2 is now available. This implements the pngcp command, which can be used to edit the characteristics of PNG files. You can download the source from here.

posted at: 04:00 | path: /pngtools | permanent link to this entry


Thu, 02 Jan 2003



03 January 2003

    Jade was dying on me today with a out of memory error in tex (whilst formatting my DocBook).
    ! TeX capacity exceeded, sorry [grouping levels=255].
    
    The answer as stated in an email, was to increase the pool size in /usr/share/texmf/web2c/texmf.cnf and then run 'fmtutil --all', which didn't work for me. There is some suggestion that it might be caused by an out of date DSSSL stylesheet, I don't want to lose my modifications to /usr/share/sgml/docbook/utils-0.6.9/docbook-utils.dsl however. The install instructions for the new DSSSL stylesheets are also not very helpful -- this is going to need more research.

posted at: 04:00 | path: /diary | permanent link to this entry


Wed, 01 Jan 2003



01 January 2003

    Happy new year! I have just watched the worst rental DVD ever produced -- don't ever hire Slackers. You have been warned.

posted at: 04:00 | path: /diary | permanent link to this entry


02 January 2003

    Back onto my SIGABORT pain. I am starting to think that it looks like an uncaught c++ exception, which would explain things. My current theory is that it is an out of memory error...

posted at: 04:00 | path: /diary | permanent link to this entry