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


Thu, 30 Dec 2004



Bulk transfer dumping

    I'm just finishing up integrating and testing the bulk transfer decode patch from Hin-Tak Leung, which will mean that the next version of usblogdump will include decoding for interrupt and bulk transfers, which will be nice. That means that it has all the decoding smarts it needs for the USB stepper motor I am playing with at the moment. I'll give more details on that later, as having a decoded dump is just a step along the way to understanding how the device works.

    I've also pulled the regression test suite out of the main download, which will make that a lot smaller. I've also started compressing the regression output, which is something that I should have been doing all along.

    If anyone has usblog files their having trouble decoding, now is the time to let me know while I'm on a roll...

posted at: 21:25 | path: /usblogdump | permanent link to this entry


Does this mean I beat you Andrew?

posted at: 17:16 | path: /diary | permanent link to this entry


How to consume all your bandwidth in one easy step

    When I restart Mozilla Firefox, it loads all the tabs I had loaded before (did you know you can set your homepage to a set of tabs, not just one page? How do I get Mozilla to auto-magically remember which tabs I had opened last time?). For the G'Day world pod-cast, I get:

      Bandwidth Limit Exceeded



      The server is temporarily unable to service your request due to the site owner reaching his/her bandwidth limit. Please try again later.


    So I guess the way to use up all your bandwidth is to start a pod-cast. Heh.

posted at: 14:42 | path: /diary | permanent link to this entry


Is Andrew hypoglycemic?

    This is the question for the day, for which he is having a urine test and a blood test. The symptoms seem to point in that direction -- he's happy in the mornings when he wakes up, but some afternoon naps (perhaps half to a third of them?) he wakes us screaming irrationally, and wont settle down until we given him some sugar of some form, for example a lolly, candy, or fruit juice. I guess we'll find out the answer soon enough...

posted at: 12:41 | path: /andrew | permanent link to this entry


Hacking on usblogdump again

    Well, I've spent some of the evening mostly ignoring Happy Gilmore and hacking away on usblogdump. The motivation? Well, I needed bulk and interrupt transfers to work better to help me analyze a USB stepper motor I'm playing with at the moment. Anyways, I've got that working but it has introduced some fairly significant regressions in the rest of the parsing test suite. I'll look into those hopefully tomorrow, and then have something more worth talking about here.

    Anyways, just wanted y'all to know there is movement at the station.

posted at: 03:45 | path: /usblogdump | permanent link to this entry


Fri, 24 Dec 2004



scp oddness for the day

    -C (compress data stream) and -l (limit bandwidth used) conflict with each other? How? Well, I was copying a very compressible file, in fact, I was transferring 200 k-bytes per second on a link capable of 25 k-bytes per second when I noticed this. scp is using the actual delta on disc as the metric for bandwidth used, so when I ask for it to limit the bandwidth, it gets real confused by the 200 k-byte speed, and ends up tapering to a tenth of the request bandwidth.

    Interesting.

posted at: 03:56 | path: /diary | permanent link to this entry


Going quiet for a little while

    So, with rather good timing, my RSI has started acting up again. I suspect it has something to do with spending two solid days typing XML comments into C# code -- those angle brackets are a killer. Anyways, luckily it's the holiday season, so I don't have to be back in the office until Thursday next week. That will give my anti-inflamatories (something called Mobic) time to kick in. They've previously been very good, so I have hopes for them this time too.

posted at: 03:52 | path: /diary | permanent link to this entry


Wed, 22 Dec 2004



I'm going to the Goodies!

posted at: 16:29 | path: /diary | permanent link to this entry


Cheap wine and a three headed goat

    I am extremely disappointed to learn that I've had the lyrics wrong all this time.

posted at: 14:51 | path: /diary | permanent link to this entry


XML documentation comments

    I spent the morning hacking on XML documentation comments for the web service I have been working on for the last six months. The goal is to have user documentation for the API auto-magically generated from XML comments in the code. Remembering that this is all being done with Visual Studio 2003, I must say that I am finding the XML documentation comment support a little half baked. There's no support for C++. You can't get to the XML comments content via reflection. There doesn't seem to be a way to add a seealso to a different method in a class (just members as best as I can tell from the documentation).

    I'm told a bunch of this gets better in Whidbey. Here's hoping.

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


Tue, 21 Dec 2004



Heh

posted at: 20:05 | path: /diary | permanent link to this entry


Silly question for the day

    If people are concerned about the amount of bandwidth that is being used by RSS feeds being downloaded every hour or whatever to check for changes, then why doesn't the next version of the RSS specification just implement a "ask me again in x minutes" field? I've read the RSS spec a while ago, and I don't remember anything like that being there, although I might just be senile (I haven't checked that it really isn't there before writing this).

    It just strikes me as silly that my aggregator pulls updates for every feed every 90 minutes (that's what I configured it to) when some feeds clearly change every 10 minutes, all day (think news sites), some feeds update a lot during business hours (think of those corporate bloggers out there -- even I don't tend to write much when I'm asleep), and other sites only update every couple of days. Surely the only person who knows how often they're likely to update their blog is the person writing it? Also, it would mean that people who are concerned about bandwidth usage, but do update often (like Robert Scoble) could just implement some form of tapering by telling people to not download a new copy of the XML file every 12 nanoseconds.

    Then we could wait a couple of years. And then punish the aggregators who don't respect our wishes like Slashdot does now.

posted at: 19:58 | path: /diary | permanent link to this entry


New obsession -- collecting GPS data for Canberra roads

    I've been finding recently that I've been getting a bit bored with life recently. Only some bits of it though, like my daily commute. This maps nicely with my new obsession, which is collecting GPS data for Canberra's roads. I've therefore been doing funny things like driving home in different ways, and driving down every street in my suburb.

    I have data for about half of the streets in my neighborhood now, and lots of the linking roads which join the various areas of Canberra together. Now I just need to work out what to do with this data. So far I graph it, but that's not very exciting. Any suggestions? Ultimately I'll make it available online for free, although I want more data before I make that step.

    Speaking of which -- do you have data you would like to donate? I'll anonymize the data for you, so that your wife doesn't know why you were driving around Turner at 4am, and at what speed you specifically were travelling (although that is easy to infer, and my graphing app uses it at the moment to help you draw congestion conclusions), but no one will know it was you, so that's ok. I currently have a parser for NMEA commands, but I can work out other formats if you do want to donate.

    If you're interested, drop me a line.

posted at: 19:35 | path: /gps | permanent link to this entry


Self-referential back slapping

    In the vein of the self-referential, and self-congratulatory tone that some bloggers seem to feel is the mark of status for us online diarizers, I apologize to Steven for misinterpreting the gist of his post. By the way, is anyone else rubbed the wrong way by the implication that having an online diary will somehow solve world hunger?

    Sure, it's nice to know what people are doing. Sure, it's kinda cool. However, a lot of people seem to spend a lot of time just discussing the discussion with each other. Lots of people have had online diaries going back a long way after all, well before blogging was an interesting term. This diary has posts going back to 2000 after all.

    The most useful thing I've found with blogging? It creates a huge database on Google available content (it's the technical stuff I care about there, but I imagine there are lots of other forms of content as well out there). Now, that's something which makes the world a better place. That's why I keep an online diary by the way -- so I can find things I learnt two years ago again when I need them.

posted at: 03:54 | path: /diary | permanent link to this entry


It's a bloody penguin!

    Just heard that through my open front door. It seems that some people take a little while to work out what Christmas lights are all about. I didn't have enough time / inspiration to decide what to make this year, so I'm just running with last years. I'm thinking of perhaps something USB controlled next year, as I had difficulties working out how to solve some control problems until I happened upon a copy of the excellent USB Complete. If you care about how USB works (including high speed 2.0) I recommend it.

    Perhaps something a little more vendor neutral is in order next year? Or perhaps not. It depends on if Microsoft has stomped on Mono by then...

posted at: 03:44 | path: /diary | permanent link to this entry


Ocean's 11

    Well, I just finished watching the DVD of Ocean's 11 in order to study up for seeing Ocean's 12. I must say that 11 was quite good, although not the greatest film I have ever seen. Now to see 12...

posted at: 03:37 | path: /diary | permanent link to this entry


Sun, 19 Dec 2004



Over analyzing music

    Steve comments on Brick. He suggests that while the song is depressing, perhaps I'm over analyzing the words. Perhaps it's a personality flaw of mine or something, but I find it very hard tog get past the lyrics to songs. I don't spend hours googling to determine what each word means, but I am certainly listening to the words. To me I guess the lyrics are a specialized form of poetry.

    There are certainly bands I don't like because the lyrics are boring. Even worse are the lyrics which I would describe as whiny.

    Different strokes for different folks?

posted at: 16:42 | path: /diary | permanent link to this entry


Brick

posted at: 14:26 | path: /diary | permanent link to this entry


Sat, 18 Dec 2004



Compiling SnoopyPro

    Once again I had a need to compile SnoopyPro, and once again after about 45 minutes of effort I gave up. I came to the simple conclusion that because I have the log files already, and just want to step through the analysis of those, I have no real need to almost all of the code in the project... I just need the SnoopyPro bit to compile so I can run it in the debugger.

    To get SnoopyPro itself to compile, all I needed to do was edit the resource file so that there were no references to the .sys files which the driver builds. You can put anything here really, so long as it is a real file on disc... I used readme.txt.

    Magically, now I have a Visual Studio 2003 solution with just SnoopyPro, which compiles nicely for me. I've made it available for download here in case I need it again.

    (You'll still need the device driver kit from MSDN installed, as you need usbioctl.h. For Windows Server 2003, this is in the c:\winddk\3790\inc\wnet directory, and needs to be added to the list of directories found at Tools / Options / Projects / VC++ Directories / Include files.)

posted at: 14:19 | path: /snoopypro | permanent link to this entry


Fri, 17 Dec 2004



TOWER Kid's Christmas party

    The TOWER kid's Christmas party was this afternoon. Basically, Rohan took the profit from the drinks fridge that he and Anthony have kindly run for a while and spent it on an afternoon at the movies for all the corporate kids (and some ring ins), including ice cream, popcorn, coke, and lollies. It was a good time, and the boys survived a lot better than I expected a two year old and a one year old to manage. Andrew got bored about 15 minutes from the end, and needed to go to the toilet three times -- but he didn't wet his nappy!

    The underlying premise of the movie was a little weird though... Do Americans really take Christmas so seriously? I didn't think cancelling Christmas cause your kid had moved away and going on a holiday instead was that weird at all -- I kinda like the idea.

posted at: 23:30 | path: /diary | permanent link to this entry


Sick Twinkle Tux

    Herm. Twinkle Tux just had one of it's transformers fail. I'm not sure if it was because of temperature (it was a warm day and I had left Twinkle Tux on all day as I got slack), or if it was just due to fail. Luckily I had a hot spare, so Twinkle Tux is back online once more.

posted at: 02:46 | path: /christmas | permanent link to this entry


Wed, 15 Dec 2004



Partial classes are really useful

    Alex Hoffman comments that as best as he can determine partial classes are only useful for tool developers. That's not quite true.

    Consider my current project. We have a COM SDK to our product which has something in the order of 80 first class objects, many (over a hundred?) enumerations, and a lot of methods. To get around the fairly massive amount of leg work which needed to be done to expose the relevant bits of that, I wrote a generator. The generator can take a enum (for example), and expose the values in the right way for a web service, with the right names, and arrange the casting back to the original COM data type when needed. Now, with Everett (Visual Studio 2003) I need to copy that code into the class which uses it using cut and paste. With partial classes it can sit in a file of generated bits, and the hand tooled parts of the class are elsewhere.

    Now that I've done it for real, I've fallen in love with code generation. It meant that I could take a death march project and turn it into something much more relaxing in this instance, whilst knowing with greater certainty than before that everything really is exposed right and that I haven't missed an argument to a function or a enumeration entry. My boss wonders how come I am so efficient now I suspect.

    I'll be using code generation techniques more in the future, and I'll therefore love partial classes when they come along.

posted at: 13:22 | path: /dotnet | permanent link to this entry


Doh!

    I think I'm going to have the flu tomorrow. I have a headache, a sore throat, and I've just started coughing. Did I mention that I feel a little out of it? Hurrah for illness!

    On other news, I'm battling the .NET XML serializer. Oh, and Catherine's dad is in town.

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


Mon, 13 Dec 2004



SnoopyPro vs Sniff 2000

    I've been playing with SnoopyPro again, after having put it on the shelf for about six months. Anyways, I needed to compile it again to make usblogdump work with some URBs I hadn't implemented the first time around. I can't get it to compile with the latest version of the Windows Device Driver toolkit. Now I'm playing with Sniff 2000, which seems to be the next iteration of the code base. I'll let you know how things go...

posted at: 02:26 | path: /phd | permanent link to this entry


Started writing up my compression stuff

    Well, I finally started writing up my compression stuff the other day. It's a little bit exciting, as there are a bunch of tools to learn on the way. I've conquered gnu plot, resizing eps (try hacking the postscript with a sed script is my advice), and now I'm onto an extended battle with latex. My newfound ACM membership helps here though -- there are a bunch of latex tutorial articles from Linux Journal in the ACM archive.

posted at: 02:24 | path: /phd | permanent link to this entry


Sun, 12 Dec 2004



Microsoft Natural Keyboard vs Logitech Cordless Desktop Pro

    I love natural keyboards (those ones with the funny split in the middle). I've been using a Microsoft natural keyboard for the last two years or so (after a bout of RSI or whatever it's called this week forced me to relearn how to type). They're ok, although there doesn't seem to be a wireless option, or one which does USB, which have been annoying factors recently. Especially when my new machine didn't have any PS2 shaped holes in the case.

    Anyways, my reward for asking for a virus scanner update at work was a new Logitech wireless keyboard and mouse combo. It's wireless. It's natural. It's USB. It's great. I have a new favorite keyboard. the multimedia keys even work with iTunes (which isn't true of the MS keyboard).

    Even better! No function lock key!

    Microsoft -- USB is a spec you wrote! Get on with it!

posted at: 20:24 | path: /diary/toys | permanent link to this entry


Dog fooding

    I've spent some time over the last couple of weekends scanning documents, ripping data CDs, and entering in meta data for things to big to scan or rip, and then dumping the originals in a big box. The plan? Well, I thought it was time to get some serious dog fooding in, so I've been adding these things to TRIM. It's kinda cool -- TRIM manages what folder the bit of paper is in, in which box, in room. Hopefully I'll never wonder where on earth the documentation for the purchase of our current house is again.

    It's not perfect. The next step is to write a scanning application for my scanner so that I don't have to use it's sucky TWAIN drivers any more...

posted at: 17:10 | path: /diary | permanent link to this entry


Thu, 09 Dec 2004



Not waving, drowning

    I can't keep up with all the email I'm getting, as well as doing my job, playing with my kids, doing a PhD, and helping organize a conference. I hereby resolve to trial reading my email only twice daily, and unsubscribing from some mailing lists.

posted at: 03:35 | path: /diary | permanent link to this entry


Wed, 08 Dec 2004



I still can't join ACM

    Updated update: Ahhh, the URL on the form is wrong. https://campus.acm.org/public/QuickJoin/qj_control.cfm?form_type=Student seems to work...

    Update: This still doesn't work, and no one has contacted me with a suggestion. Does ACM still exist?

    So, as a part time postgraduate student I decided it was time to join the ACM. I've been trying all of this week, and I still get this error message on the sign up form:

      Error Diagnostic Information
      
      QUERY
      
      The QUERY attribute of the tag does not specify the name of an available query
      
      The error occurred while processing an element with a general identifier of (CFSELECT), occupying 
      document position (871:10) to (871:90) in the template file 
      F:\INETPUB\WWWROOT\PUBLIC\QUICKJOIN\QJ_PERSONAL_INFO.CFM.
      
      Date/Time: 12/01/04 17:46:13
      Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20041105 Firefox/1.0RC1 (Debian 
      package 0.99+1.0RC1-4)
      Remote Address: 203.17.68.254
      Query String: form_type=Student/
      


    I tried emailing the address in the error message, with no luck. Does anyone out there know someone from the ACM who can get this fixed so I can join?

posted at: 23:10 | path: /diary | permanent link to this entry


Wed, 01 Dec 2004



I can't join ACM

    So, as a part time postgraduate student I decided it was time to join the ACM. I've been trying all of this week, and I still get this error message on the sign up form:

      Error Diagnostic Information
      
      QUERY
      
      The QUERY attribute of the tag does not specify the name of an available query
      
      The error occurred while processing an element with a general identifier of (CFSELECT), occupying 
      document position (871:10) to (871:90) in the template file 
      F:\INETPUB\WWWROOT\PUBLIC\QUICKJOIN\QJ_PERSONAL_INFO.CFM.
      
      Date/Time: 12/01/04 17:46:13
      Browser: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20041105 Firefox/1.0RC1 (Debian 
      package 0.99+1.0RC1-4)
      Remote Address: 203.17.68.254
      Query String: form_type=Student/
      


    I tried emailing the address in the error message, with no luck. Does anyone out there know someone from the ACM who can get this fixed so I can join?

posted at: 14:55 | path: /diary | permanent link to this entry


Tue, 30 Nov 2004



Another thing which rocks...

    These guys really deserve some linkage love. Every time I need to find a quick and dirty primer for some random technology that I am going to only care about for the next hour (until next time I need it), a Google shows up w3schools for webish stuff. For example, this second I care about xpath, but only for about two lines of code. This page meets my needs nicely.

    Blogvertising over.

posted at: 14:26 | path: /diary | permanent link to this entry


Splitting up the archives

    I know that this will break some threading in archives, and make Google searching a little harder, but given the index page for the current list archive is now 1.4 megabytes of text, and there are nearly 10,000 messages in that directory, I have split the archive off into another directory as well. I'll keep doing this (and posting something here about it) whenever this happens.

    The new archives can be found here, and cover from the morning of 1 December 2004.

posted at: 14:17 | path: /aus-dotnet | permanent link to this entry


Synergy2 rocks my world

    So, I finally got the heebies with sitting in front of two laptops at home with two keyboards and two mice. It made me very sad. Luckily, Synergy came to the rescue. Now I have a Linux and a Windows box next to each other, with one wireless keyboard and mouse, and I can control both machines as if they were two heads of a dual head machine. Check it out (insert noises of rapid mouse movement between two monitors). See? It's cool.

    Anyways, I've used it for 10 minutes and am therefore and expert. Go forth and download!

posted at: 13:01 | path: /diary | permanent link to this entry


Mon, 29 Nov 2004



Libusb

    I had a little spare time the other day (which is relatively rare for me at the moment -- we're set to have a major release of the product I work on in the next couple of weeks and that's been taking a lot of attention recently). So I thought that I should have a play with libusb and see what the story is. Where to start? Well, as someone who has never used the library before, it was a little unfriendly.

    Google reports this tutorial on the front page of the search I did, and it's a little help. The project homepage at SourceForge is extremely terse. Debian has a package for 0.1.8, so I installed that. If you look in /usr/local/share/doc/libusb-dev, you get the documentation which is on the libusb website.

    If you look at the CVS repository, basically the only thing which has changed in the last nine months is a include error. Even the website for libusb says that it's early alpha.

    Even better, the articles from Linux Journal that used to cover this stuff are now not available for free on the web.

    I give up for now.

posted at: 23:09 | path: /diary | permanent link to this entry


Long time no write

    Well, I've had a busy time recently. I went to an AUUG board meeting in Sydney, and a Microsoft ISV day in Sydney -- making it two day trips to Sydney in one week. To round that off, I drove down to the coast with the family on the weekend, which was kinda nice. I took some pictures, but I havne't got around to emptyin my camera yet, so you'll just have to wait for those.

posted at: 22:56 | path: /diary | permanent link to this entry


Wed, 17 Nov 2004



In reply to Martin

    In reply to Martin's comments on the conference paper scoring process, especially in regard to inadequate abstracts. I have to agree that I can't give a high rating to someone who can only provide two sentences about their chosen topic. Especially when they're asking for travel assistance, as well as an hour of 500 people's time.

    On the other hand, I like the funny ones. When it's three hours after bed time, the best thing in the world is to read an abstract which explains that object orientated people should attend a given talk as they have been historically show to be upset easily.

    It doesn't change the rating I give a paper, but it sure makes the job easier.

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


Help! Help! I'm being held prisoner in a systems software factory

    (This post might turn into hours of distraction from the task in hand, so I will try to be brief).

    Way back when I was a Macintosh user. It was about the time that Apple switched to the PowerPC CPU series (System 7 I believe, I assume all of us here remember fat binaries?). The gossip in the halls, and I recall verifying it myself, was that there was an ASCII string in the code for System 7 which said something along the lines of "help! help! we're being held prisoner in a systems software factory" and was signed the blue meanies. I always assumed that they were called that as a reference to those nice folk at IBM who provided the CPUs for the machines, but apparently that's not the reason for the name.

    Anyways, I'm spending the evening attending a school play (which was really quite good, and involved some nice product placement for my employer without any input from me [1]), and reviewing the 1.4 billion paper proposals for LCA. Yes, there is a constant scaling factor applied to that number, but I am sure you can work out to an order of magnitude what I am talking about. Anyways, there's some really good stuff there. I'm impressed. I sure hope I get to actually see some of the conference, as well as panicking and being grumpy.

    1: There was a hobo character in the play. Apparently these school kids decided the best way of conveying hobo hood was to ware a cap from my employer. How very flattering. :)

posted at: 03:05 | path: /diary/lca2005 | permanent link to this entry


Sun, 14 Nov 2004



Bug fix!

    I've only verified this with .NET languages, but it works in 1.1 and 2.0 (beta 1). Anyways, this code b0rks the .NET runtime so that things stop working properly until the next reboot (as per the previous post):

      using System;
      using System.Diagnostics;
      
      namespace ConsoleApplication1
      {
      	class Class1
      	{
      		[STAThread]
      		static void Main(string[] args)
      		{
      			EventLog log = new EventLog("Application", ".", "Breaker");
      			log.WriteEntry("This is a string: %1%");
      		}
      	}
      }
      


    Which produces the following log message:

      This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: This is a string: %1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


    And the runtime corruption. Herm. Anyone wanna write the .NET killer virus?

posted at: 16:32 | path: /dotnet | permanent link to this entry


Fri, 12 Nov 2004



Visual Studio 2003 appears to be punishing me for my sins

    I have a a project that I've been working on for the last several months which has about 20,000 lines of code in it. The project all just worked the other day, but when I got to work yesterday morning I was suffering from what I can only describe as pointer corruption in the .NET runtime. I'd ask for a string to be written to the event log, and an entirely different string would be written. I'd pass a variable back to the client, and it would be null by the time it got there.

    This is a big deal -- this has to be fixed in the next couple of days, or it's possible that we'll have to can the project, which is not an attractive solution.

    Perhaps it's time for some prescription blogging.

posted at: 13:02 | path: /dotnet | permanent link to this entry


Thu, 11 Nov 2004



Brilliant CVs

    Heh. The Scobleizer put me onto this. It's funny that people in the office are now walking around singing someone's resume.

posted at: 15:58 | path: /diary | permanent link to this entry


Wed, 10 Nov 2004



The Scobleizer asks Why can't we all just be friends?

    "No one said I couldn't write about companies that use Linux, but it was implied in how they asked the question. I say hogwash. Go back to my corporate weblogger manifesto. If a competitor is doing something interesting, you might as well talk about it. My readers are smart. Smarter than I am, certainly. They all know how to use Google and Yahoo and MSN. Some even know how to use all three together." -- Robert Scoble

    As a person with a foot firmly in both camps (I've been hacking on Unices of various forms since year 11 in 1994, but I write commercial Windows code for one of the most successful ISVs in Australia) I can see what he's trying to say. Having recently been in Seattle, it was interesting to note how insulated the Microsoft people are: they are all colocated on a couple of campuses; they have their own hotel near the campus I was on; their own restaurants for during lunch; their own bus system (including transit center); their own store; their own museum; the list goes on. I imagine it would be possible as a Microsoft employee to come close to never meeting someone who uses a competitors product. The only obvious exclusion to that is the various properties on the web that everyone uses -- like Google.

    That attitude hurts Microsoft. A lot. I'm coming to suspect that it's why they're suffering from this us vs them image as well. Let's pick on a couple of examples to expand my point:

    ADAM. ADAM is Active Directory, Application Mode. It's an instance of Active Directory that stands alone, and doesn't have a footprint on the network. Now, I can think of lots of places where an LDAP like database of user accounts and attributes is useful, but I don't have control of the network to install one. Surprisingly, people don't like having to re-engineer their entire enterprise just because they bought another enterprise product. It makes the infrastructure guys grumpy. As an ex-infrastructure guy, I can sympathize with that standpoint. Anyways, so ADAM would let me write code which does the LDAP thing, and still work on a network which doesn't do LDAP. Those people could just run ADAM on the local box which my application is using. When told about the new version of ADAM recently at an Ascend love-in, I started thinking about how we could use this thing all over the place.

    And then we stopped thinking about it, and abandoned all of those plans. Why? Well, ADAM requires a SQL server instance to run. Those same customers who don't like re-engineering their world also don't like running another database. Lots of them are Oracle or DB2 shops, and don't have any SQL server skills. moreover, they don't want those skills as they're not relevant to the rest of their environment.

    Another example...

    Microsoft's history as a poor corporate citizen: it's nice that people think that business is war. I'm happy for them. However, business is really about value to the customer. Without customers, we're all hobos in the street. When Microsoft admitted that they had behaved in a manner which breaches anti-trust law earlier this week they should have been hi-lighting to themselves that acting in a manner which isn't aligned with what is best for the customer hurts in the long run. Sure, Microsoft made way more than half a billion from that behavior, but it's also a reputational thing. This linux thing wouldn't be so popular if people weren't so upset with Microsoft in general.

    I think the turning point was about the time of the South Park movie. If a popular movie can make a joke about executing Bill Gates, and expect the world to understand, then you'd have to think that perhaps you have a PR problem. Lots of the people I know who use Linux and open source do so because of a lack of trust of Microsoft.

    The corporate blogging policy of Microsoft is certainly helping with that trust restoration. At least things seem a little more open now (more on that in a second). They need to go further though. perhaps some sort of 12 step program -- the first step is to publically admit that you've made mistakes in the past. Not individually -- at a corporate level.

    Another example...

    File formats: I live in the ACT, which is the Australian equivalent of the District of Columbia (almost exactly). There the local government passed an open source preference law for government acquired software a year or so ago. I went to a couple of the public meetings about this law, and the logic behind the decision wasn't about hating Microsoft. It was much more about wanting to be able to read their own files in a few years, if not 200 years. Think about it. Governments are in the business of producing data. Just data. Another perhaps I should include roads and schools there as well. Anyways, you get the idea. They're really worried about the file format bit rot that happens at the moment. How is it acceptable to create millions of Word documents, and not even know if you'll be able to open them reliably in 20 years? Worse than that, the format isn't documented (unlike PDF for instance), so they can't even write their own data extraction tool in 20 years. 20 years is a short time. Imagine the legal history of the UK for instance -- they refer to documents which are hundreds of years old.

    Stop changing the damn format just to stop open competition. How about competing on your merits for a bit? Competing on any other basis is merely an admission that you don't think that those other merits exist. They do -- trust them. People are actually capable of making a rational purchasing decision for themselves.

    My final example...

    (I'll never be a baptist minister -- I made four points, not three)

    Coding for Windows is harder than for the competition: huh? Well, having done a lot of both, it's a lot more work coding for Windows. Even with tools like C# and .NET. Why? Well, Microsoft doesn't document the things they didn't expect you to do (probably because they didn't realize that you would want to do them). With open source I can always go and read the code to work out what is happening under the hood. Additionally, MSDN is horrible to search. I use Google in preference, and have for some time (about 4 years?!?). Having hundreds of random hackers blog about things is good, but it doesn't add value to MSDN, I still need Google to search all of that. What happens when I am coding off line, on a plane or something?

    My brain is now empty.

posted at: 14:35 | path: /diary | permanent link to this entry


Mon, 08 Nov 2004



Debian Unstable is punishing me for my sins

    Herm. I just did a dist-upgrade, and now the clock on my machine is wrong. I've managed to repeat the process on another machine, and now that one is wrong too. The machines still both believe that they're in the right timezone (Australia/Canberra), but are running an hour late. It's kinda like the machine has forgotten that there was a daylight savings change a week or two ago. Anyone got a hint as to how to fix that?

posted at: 22:45 | path: /diary | permanent link to this entry


Wed, 03 Nov 2004



Pictures!

    Here are some pictures of the little man...



    And another set taken later that day...



posted at: 19:13 | path: /diary/puppy | permanent link to this entry


The ultimate business use for a phone with a camera

    I hear a lot of poeple around me say that SmartPhones are crap, but now that I own one, I thought I would reserve that judgement for now.

    I can tell you about one useful feature though. I was doing the food shopping last night, and saw the following image in the display at the local butcher. I needs to be publicized I think, and the SmartPhone allows me to take a picture and email it to myself so that I remember to deal with it later.

    Anyways, the picture?



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


20041104-puppy

posted at: 16:28 | path: /events/pictures/20041104-puppy | permanent link to this entry


Tue, 02 Nov 2004



20041103-puppy

posted at: 19:47 | path: /events/pictures/20041103-puppy | permanent link to this entry


I didn't vote today

    Nobody cares what my opinion on the American election is anyways -- I'm not a citizen.

posted at: 19:28 | path: /diary | permanent link to this entry


A puppy!

    Puppy (our new dog) arrives on a Qantas flight from Sydney to Canberra about 1pm today. I am tasked with collecting him from the airport, and bringing him home. I'll then be working from home for the afternoon, supervising him.

    What!?! A Puppy? Yes. We puppy sat for Grant and Lindsay a couple of times in the last six months, and the boys liked the experience so much that we decided to acquire our own Labradoodle (Labrador, Poodle cross) in a hostile takeover. We've bought from Kate, who is the person who has sold five Labradoodles in the office so far.

    Why a Labradoodle? Well, it's what we puppy sat and liked, they're hypo allergenic, small, have a good temperament, and are cute. Also, Burke's Backyard (a garden show here in Australia) recommends them for people with kids.

    Anyways, I'll keep y'all informed, and of course post pictures when I have actually met him.

posted at: 14:22 | path: /diary/puppy | permanent link to this entry


Mon, 01 Nov 2004



Too many PocketPC devices

    Herm. Work issued me a mobile phone yesterday. It's an i-mate SmartPhone 2, which is a PocketPC among other things. Interestingly, ActiveSync 3.7 doesn't support syncing more than one device at a time... This makes me sad.

    There's a reference to the problem in one of the Microsoft expertzone chats, but all they say is that if you unplug one of the devices, then you can sync the other. That's correct, but a pain in the rear. I can't find anyone else offering a solution to the problem either.

    I would have thought it would be a fairly common scenario -- I have a PocketPC for stuff which I want to take mobile, and now I have a PocketPC based phone, but I can only be syncing one at once. I'm disappointed. Even the Open Source equivalent SynCE suffers from the same problem.

posted at: 14:14 | path: /diary/toys | permanent link to this entry


Sun, 31 Oct 2004



"The URI scheme is not valid" when using XML diff (for .NET)

    Well, when I try to take the following code, the compare method throws an exception with the message "The URI scheme is not valid". Following the theory outlined here, perhaps the argument to the Compare() method should be a filename?

    In fact, when I look at the help (which isn't on the web, and installed on the local machine), then I find the following: "A file name or URL containing the original source XML document or fragment to be used in the comparison.". Ah ha!

    So, instead of this:

      string xml = "...";
      Microsoft.XmlDiffPatch.XmlDiff diff = new Microsoft.XmlDiffPatch.XmlDiff();
      diff.Compare(xml, xml, false);
      


    I should have had:

      string xml = "...";
      Microsoft.XmlDiffPatch.XmlDiff diff = new Microsoft.XmlDiffPatch.XmlDiff();
      			
      byte[] data = new byte[xml.Length];
      System.Text.Encoding.ASCII.GetBytes(xml, 0, xml.Length, data, 0);
      
      MemoryStream mstream1 = new MemoryStream();
      mstream1.Write(data, 0, xml.Length);
      mstream1.Position = 0;
      
      MemoryStream mstream2 = new MemoryStream();
      mstream2.Write(data, 0, xml.Length);
      mstream2.Position = 0;
      
      diff.Compare(new XmlTextReader(mstream1), new XmlTextReader(mstream2)); 
      


    You need the weird GetBytes() call to convert from char[] to byte[] (what encoding are you going to use? ASCII makes sense here, but might not in other cases). Then you need to make not one, but two memory streams. If you only use one, then it will be positioned incorrectly from the first use, and the read of the root element will fail for the second caller.

    Finally, you can compare your XML.

posted at: 20:02 | path: /dotnet | permanent link to this entry


Thu, 28 Oct 2004



Updating a web reference in a build step

    I asked a week or so ago on the aus-dotnet mailing list if it was possible to update a web reference as a pre build step. The short answer is yes, and it's not that hard.

    wsdl.exe is the tool used to generate the web references by Visual Studio. The only hard part of the equation is getting the paths in the pre build step right -- and that's not very hard either.

    Here's what I ended up with. The name of the web reference is trimws, and the URL is the URL to the web service:

      "\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\wsdl" 
      	/language:CS /namespace:test.trimws 
      	"/out:$(ProjectDir)\Web References\trimws\Reference.cs" 
      	http://localhost/trim/trim.asmx
      


    The line breaks and indent are to make this readable, and shouldn't be included in the pre build step.

posted at: 17:44 | path: /dotnet | permanent link to this entry


Tue, 26 Oct 2004



20040909-tuf17

posted at: 22:15 | path: /events/pictures/20040909-tuf17 | permanent link to this entry


Mon, 25 Oct 2004



Back from Americania

    ...and to continue the tradition, Catherine broke her arm while I was away. It's good to be back.

posted at: 13:28 | path: /diary | permanent link to this entry


Thu, 21 Oct 2004



A four day SharePoint, BizTalk and Live Communications Server seminar, and physically meeting Robert Scoble

    So, the event in Building 20 was a four day long course on SharePoint (specifically Windows SharePoint Services, WSS), BizTalk and Live Communications Server. The course was ok, although none of technologies are of core interest to the stuff that I am doing at the moment, and it was more of a background briefing than anything else for us.

    It was interesting to meet Robert Scoble in person, although I was expecting a lot more people at the geek dinner. Robert and I didn't talk much, which was a shame as Longhorn directly affects the company that I work for. Oh well, perhaps next time.

    The best bit of the week in Seattle was the five incidental meetings we held on our spare day on the Microsoft campus. We went to buildings 18, 36, 40, 41 (I think, it's a blur now). I can't really say any more about it now, but you should see some pretty cool things out of TOWER soon.

posted at: 11:24 | path: /diary/building20 | permanent link to this entry


Wed, 20 Oct 2004



20041016-seattle

posted at: 12:49 | path: /events/pictures/20041016-seattle | permanent link to this entry


Wed, 13 Oct 2004



20041011-seattle

posted at: 09:42 | path: /events/pictures/20041011-seattle | permanent link to this entry


Tue, 12 Oct 2004



20041010-seattle

posted at: 08:07 | path: /events/pictures/20041010-seattle | permanent link to this entry


Sun, 10 Oct 2004



A bit of a catch up on Seattle

    I was waiting for my picture upload before I made this post about how Frank and I spent Saturday in Seattle. We wandered into the city, and decided to have a look around Pike market, before walking across town to the Space Needle (it's easy to navigate to it, it's kinda tall). After that we went up the needle, and I took heaps of photos of surrounding Seattle. I'm surprised that the city isn't more built up -- it's kinda like a bigger Canberra, instead of being crowded and dirty like Sydney or Melbourne. All the vegetation here is really green too, except for the trees which are starting to change colour for the fall.

    We spent the afternoon going on a "duck" tour of the town, which included a quick sail around the harbor. The highlight of that had to be taking a bunch of photos of the house featured in Sleepless in Seattle.

    Finally, dinner in the food court, which featured a live blue grass band.

    Photos here.

posted at: 18:24 | path: /diary/building20 | permanent link to this entry


20041009-seattle

posted at: 15:53 | path: /events/pictures/20041009-seattle | permanent link to this entry


Programming by accident

    Andrew seems to be having some troubles with recursion. The important thing to remember here is that recursive algorithms need you to implement two cases -- the end condition (terminal), and everything else. Let's take a simple case, and use C to avoid all the extra syntactic sugar which would otherwise get in the way:

    Let's write a recursive function to find the factorial of a number. That's what you get if you take a number, and multiply it with every number smaller than itself, but greater than zero. So 3 factorial is 3 x 2 x 1 = 6. Remember -- no sane person would do it this way in real life...

    First, the end case is when the number gets to 1:

      if(num == 1) return 1;
      


    The other case, is that we need to multiply by all the numbers smaller than us:

      else return num * factorial(num - 1);
      


    To put it all together, we have:

      int factorial(int num)
      {
        if(num == 1) return 1;
        else return num * factorial(num - 1);
      }
      


    One of the languages I did in first year, many years ago, was called Gopher, which is a variant of Haskell. Haskell is a functional language, which means everything is expressed in the form of mathematical functions. That means that there are no looping constructs for instance, which means you have to do everything using recursion. You get used to recursion real quick that way. What Gopher actually did under the hood was expand out all the function calls into one big formula, which it then executed. Let's do that for the 3 factorial case using our function. We get something like:

      factorial(3) = 3 * 2 * 1;
      


    Which is right. Doing that kind of thing is a good sanity check if you're not too confident with recursion. So, how's that for an attempt to explain recursion?

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


Sat, 09 Oct 2004



What's pod casting?

    The Scobleizer talks about podcasting. What's podcasting I ask myself? Well, having poked around at the engadget feed for a little while, it's an online MP3 file, and then an associated RSS feed which people can aggregate. I haven't downloaded any podcasting aggregators, but I imagine a good one might download all the MP3s, and download them to your MP3 player.

    It occurs to me that this isn't really a new idea. That doesn't make podcasting bad per se, but it should be recognized that it's been around for a while. For example, The Linux Show has been putting MP3 shows online for years, conversations in IT is another good example, an interesting use which I think more people should pursue is that some of the Linux conferences (including linux.conf.au) have been putting online audio of their talks on the web. I'm not aware of any Microsoft conferences doing this, but it would be cool if they did.

    Hey, and why aren't there any Australian user groups putting their content online with this kind of stuff? There must be heaps of content out there just waiting. Web casts are cool, but the applications tend to be a pain, a lot of them make it hard to download the content for off line viewing, and I can listen to an MP3 in my car, at the gym, or whilst working, all of which are hard with a web cast.

posted at: 10:30 | path: /diary | permanent link to this entry


Big sleep in

    I guess I must be pretty much over the jet lag now, as I slept in this morning. A total of 11 hours sleep in all, which is a lot more than I usually get, and a lot more than when I normally sleep in. I actually feel really good this morning, which is nice.

    I've had breakfast (toast, coffee, special K which is more like rice bubbles than what we get back home, and bacon). We were going to do bacon and eggs, but it's too scary to try and flip an egg using two forks while frying. We'll see if we can find an egg flip while we're in Seattle today.

posted at: 10:14 | path: /diary/building20 | permanent link to this entry


Fri, 08 Oct 2004



Where are all the cheap PocketPCs?

    When Catherine (my wife) saw my Ipaq for the first time she wasn't all that interested. She's been a long time Palm organizer user, and is happy with my Palm III from six years ago. All she uses is the calendar and the address book.

    Then she saw me using the Bible reader application I downloaded at church. This was her killer application -- the thing which made her want to own an Ipaq.

    She doesn't need anything as meaty as my HP 2210, all she needs is a modest PocketPC with enough storage (on an external stick?) to hold the Bibles she wants. I'm thinking that a model which was good a couple of years ago would do. The bit that prompts me to write this entry is the total lack of an Ipaq model under $200 US. Or at least that I can find. There are lots of Palm options under that price, so why aren't PocketPC vendors recycling old revisions of hardware in different casing for a lower price? They've already paid to setup the factory, so surely it can't be that big a deal.

    I know that these older devices can't run the latest version of Windows for PocketPC, but then again having these less functional devices gives people some choice at that price point in the market. Also, people get hooked on the device type they had before. Catherine needed something amazing before she would consider having something other than a Palm. Because that's what she was used to.

    People tend to get used to what they first bought, and people tend to make small exploratory purchases before jumping in the deep end. Is there some compelling reason I am missing for people not making a lower end PocketPC?

posted at: 22:12 | path: /diary/toys | permanent link to this entry


Shopping in Seattle

    Well, we're in Seattle and it's no surprise that it's raining. Everything is so green over here compared with Canberra, which has been dought declared for something like two or three years now (we're about to enter summer again, and we're already living under water restrictions on things like watering plants and washing cars. There's just so much water here...

    Frank and I went out shopping. I failed to find a blue tooth keyboard, but I did pick up a cool charger for my mobile (more on that in the toys page in a little bit), a USB game pad which I want to play with (it was only $20), a cheap USB finger print reader, a calling card for international calls which doesn't work (the radio shack guy forgot to activate it), and a heap of food shopping for breakfasts. Frank has also agreed to take the squeezy tube margarine challenge (to eat some and not die), if I will take the huge can of beer challenge. More on those once we've done some more scientific research.

    Given that we're on the edge of the Microsoft campus, I was expecting more corporate logos to be floating about. I have only seen a couple of building labels, and one t-shirt. I've actually seen more Linux shirts in the US so far than Microsoft ones, which was unexpected. Then again, it was a very scientific survey of LA airport, Seattle airport, the inside of a cab and wandering around a local mall.

    Hey, given that I might be excommunicated from my local Linux users group for coming here, I was expecting to see more horns and cranial implants. Heh, only kidding. I guess I'll find out who from Microsoft reads this from that comment.

posted at: 21:24 | path: /diary/building20 | permanent link to this entry


The package has been delivered

    The package is me, and the destination was Seattle. I'm no in the hotel, which has wireless coverage (all you can eat for $4 US for the entire stay), which is nice. The wired Internet access is quite expensive by comparison -- $7 a day, so Frank and I are about to head out and see if we can find him a cheap wireless card.

    That's probably a good thing, as the external keyboard I brought turns out to not have a switch mode power supply, which is something I didn't think to check before I left, and I packed the wrong charger for my mobile phone. All up a little embarrassing, but not terminal.

    Now Frank and I need to kill two days in Seattle before turning up to Building 20.

posted at: 16:45 | path: /diary/building20 | permanent link to this entry


Thu, 07 Oct 2004



stillhq.com offline

    Goldweb moved their servers from one colo facility to another today, and it seems to have broken pretty much everything associated with this domain... I can't send email, I'm not getting mail, and if you hit www.stillhq.com with a browser, you get the Goldweb mirror server instead. I assume that if you're reading this that things are back online once more, but you might want to consider resending mail to me if it was something important.

    They're not happy....

posted at: 03:32 | path: /diary | permanent link to this entry


Improved log reporting on my domain produces unexpected results

    I recently put some effort into improving the log reporting on stillhq.com, and the results are quite surprising... I didn't realize how much people are using the various images on my site. For example:



    The moral of the story is that having meaningful filenames such as Washington_dc_smithsonian_air_space_dulles_hangar-dsc08131.jpg for my own benefit has had the side effect of leaving me with quite a useful site on the Internet as well. Cool.i

    Here is a list of all the images on stillhq.com, as indexed by Google.

posted at: 01:12 | path: /diary | permanent link to this entry


Wed, 06 Oct 2004



20030214-emilybirthday

posted at: 19:07 | path: /andrew/pictures/20030214-emilybirthday | permanent link to this entry


20030214-emilybirthday

posted at: 19:07 | path: /events/pictures/20030214-emilybirthday | permanent link to this entry


20030214-emilybirthday

posted at: 19:07 | path: /diary/pictures/20030214-emilybirthday | permanent link to this entry


Heading off to the US tomorrow

    So I'm running around like a headless chook. I have a few things tee'd up for my trip, such as four days in Building 20, a dinner with the Scobleizer, and some time in the DC office. Now I just need to get around to packing my bags before going.

    To add to the fun I am joint running a guest lecture at University of Canberra on project and product management this afternoon.

posted at: 17:27 | path: /diary | permanent link to this entry


Mon, 04 Oct 2004



Moving my mail to Windows

    I leave for the US on Friday, and I really want to only take one laptop with me. That's a little painful, as I normally use my Linux laptop for all of my email reading. Searching for a replacement for my offlineimap / dovecot / leafnode / thunderbird mail combination with Linux has left me with Thunderbird on Windows using the off line extension which comes bundled with the mail reader now. There was momentary confusion as I tried to work out how to go off line -- there's a little icon in the bottom left of the window. I think I have it working now, but I really should give it a try for a while before declaring success.

posted at: 19:14 | path: /diary | permanent link to this entry


Sun, 03 Oct 2004



ICM532

    Interesting. Today during some random public holiday web surfing, I came across some people working on an ICM532 driver for Linux (something I am interested in for my doctorate). Here's some linkage to keep you going:



    They're both pretty beta, and neither seem to have the compression worked out, which is interesting to me because it was the compression on the ICM532 which sent my PhD off on a compression analysis tangent from which it might not return. Anyways, I'm downloading the drivers now and might have a play with them...

posted at: 22:45 | path: /linux | permanent link to this entry


Trying out a referrer spam blocking patch

    I hacked up a patch to Blosxom to stop refer spam, as it was starting to eat my site. Hopefully I have broken anything in the process..

posted at: 18:32 | path: /diary | permanent link to this entry


Tue, 28 Sep 2004



Funny spam

    I've been getting some pretty funny spam recently, which I thought I should share:

      Welcome to our web site www.xxxxxxxxxx.com/phpBB2/index.php
      
      Please use http://xx.xxx.xx.x in case of our domain outage.
      
      You\'re invited to shop for large selection of bombs and different
      kinds of rockets such as surface-to-air,
      surface-to-surface and weaponry available at reduced price. With the
      following types of rockets you will be
      able to commit terrorist attacks, destroy buildings, electric power
      stations, bridges, factories and anything
      else that comes your mind. Most items are in stock and available for
      next day freight delivery in the USA.
      Worldwide delivery is available at additional cost. Prices are
      negotiable.
      
      Please feel free to inquire by ICQ # xxxxxxxxx or contacting us
      directly:
      
      +x-xxx-xxx-xxxx
      +x-xxx-xxx-xxxx
      +x-xxx-xxx-xxxx
      
      Today special:
      
      ******* AIR BOMBS *******
      OFAB-500U HE fragmentation air bomb 
      Fuel-air explosive air bombs -Not in stock
      BETAB-500U concrete-piercing air bomb 
      ZB-500RT incendiary tank 
      500-KG SIZE RBK-500U unified cluster bomb 
      RBK-500U OAB-2.5PT loaded with fragmentation submunitions 
      RBK-500U BETAB-M loaded with concrete-piercing submunitions-Not in
      stock
      RBK-500U OFAB-50UD loaded with HE fragmentation submunitions 
      
      ******* UNGUIDED AIRCRAFT ROCKETS  *******
      Main-purpose unguided aircraft rockets 
      S-8 unguided aircraft rockets 
      S-8KOM 
      S-8BM-Not in stock 
      S-13 unguided aircraft rockets 
      S-13, S-13T, S-13-OF, S-13D, S-13DF 
      S-25-0 
      S-25-OFM 
      S-24B -Not in stock
      RS-82
      RS-132-Not in stock
      
      ******* ROCKET PODS   *******
      B-8M pod for S-8 rockets 
      B-8V20-A pod for S-8 rockets 
      B-13L pod for S-13 rockets
      
      Recently received *NEW*
      
      Hydra 70 2.75 inch Rockets
      Air-Launched 2.75-Inch Rockets
      FIM-92A Stinger Weapons System 
      Stinger 101: Anti-Air
      
      Our clients are well known Al-Qaida, Hizballah, Al-Jihad, HAMAS, Abu
      Sayyaf Group and many other terrorist groups. We are well known
      supplier in the market and looking forward to expand our clientage
      with assistance of Internet.
      
      Do not hesitate to contact us via ICQ # xxxxxxxx
      
      Impatiently awaiting for your orders,
      xxxxxxxxxx
      


    Ok, so that's a little weird. How's this for a email to get a couple of days later?

      Welcome to www.xxxxxxxxxxx.ws
      Here you can buy stolen passports, counterfeit dollars and all other things you are in
      want of. If you need, we would provide you with the info about the bank account of a
      person who you are interested in. Also there are credit cards dumps of US and Europe
      residents. Your faithfully,panther aka xxxxx.
      


    And then to round it all off:

      Welcome to  www.xxxxxxxx.com, www.xxxxxxxx.cc, www.xxxxxxxxxxxx.biz.
      Best credit cards, cashing of dirty money, stolen paypal accounts, access to the bank
      accounts of UK and USA residents - all this you will find only on xxxxx.su
      Come now and you will receive 10 credit cards with cvv2 code for free. 
      


    I wouldn't normally share spam with you, but I do wonder what, if anything, I should do with these three. Are they some weird attempt at untargetted humor? Is someone on drugs? Should I forward them to the FBI? Herm.

posted at: 18:54 | path: /diary | permanent link to this entry


Michael Davies' bad day

    Michael referred to a bad day earlier today. Here's why. What a bummer -- Motorola has fired 120 people from their Adelaide software center. If you're after a .NET programmer, then you should advertise in Adelaide sometime real soon, as the people I've met from here are very capable.

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


Hey Robert, Microsoft's DRM'ed emails break TRIM

    Robert Scoble mentions Microsoft's DRM'ed privacy protected emails for Outlook. I think there are a couple of points that he should be aware of here:

    • They don't work with other mail applications -- the Internet is all about open standards and the free interchange of information (like the web, blogging protocols, and email). People are unlikely to adopt a technology which isn't compatible with those ideals.
    • They break third party corporate applications like TRIM -- which is kinda a tweak on the point above. TRIM is a corporate repository of documents of importance. Like the confidential email Robert refers to. TRIM is also about being able to get that data back in many years, when Outlook has moved on from that DRM standard, and all of the people who know the passwords are long dead. EDM is also about searchability, which we can't implement with DRMed documents, as we can't build our indexes.


    Has Microsoft instead considered using an open standard like PGP, with the email encrypted for the recipients who are entitled to it? TRIM could then just be another recipient, and decrypt the data before indexing it. That would work with lots of other mailers too.

posted at: 01:49 | path: /diary/TRIM | permanent link to this entry


Mon, 27 Sep 2004



Ahhh, the onion

      "The release has been eagerly awaited by Matchbox Twenty's enormous fan base, composed of American record buyers who have a limited interest in music but enjoy the act of shopping. In order to satisfy the undemanding non-tastes of this lucrative market, Matchbox Twenty has made every effort to create what record-industry insiders say is the band's least distinctive album yet." -- The Onion"


    That's pretty funny.

posted at: 18:54 | path: /diary | permanent link to this entry


Linux.conf.au conference bags again

    Well, I found a bag which is close to what I have in mind for the conference, but it's way too expensive (about twice what I want to pay). Perhaps that's because our budgeting for the conference bag is totally wrong, but I suspect it's more likely to be because the bag is particularly expensive. It's a nice enough bag too, although not perfect. Ahhh well, bag to the drawing board.

posted at: 18:32 | path: /diary/lca2005 | permanent link to this entry


Book writing

    Proudly Serving My Corporate Masters has a brief discussion of how to go about finding a topic for a technical book. The advice is sound, in that I imagine that it would be a lot harder to pitch a book on a topic that is well covered. Then again, not all topics are covered well even years after they became main stream. For example, there still seems to be a lot of confusion out there are image processing fundamentals, and I am not aware of a book that covers the standard open source tools -- libtiff, libpng, libjpeg, libgif, and ImageMagick. I have thought for a while that my various articles on this sort of thing would form the basis for a nice book.A

    Which brings me to the reason I've never done anything about it. I'm a technical person, I'm not in marketing, and I'm quite uncomfortable with the idea of doing a pitch for a book proposal. Does anyone out there have advice on how to approach that sort of thing?

posted at: 17:29 | path: /diary | permanent link to this entry


Kate Lundy's website defaced

    So, I went to Kate Lundy's website (she's the Australian Labour Party Senate candidate for my physical region of the country) to try to find out where to pre poll before flying off the the US. What I found was the text:

      Simiens Crew 2004, enquanto hover fome guerra morte simiens existira


    I gave Kate's office a call, and they're aware of the problem and don't sound very happy about it. So what the hell does that text mean? Google's translation page assures me that it translates from Portuguese to English as:

      Simiens Crew 2004, while to hover hunger war death simiens exists


    Whatever that means.

    Oh, and she's running IIS 6. Lots of sites seem to have been hit.

posted at: 16:26 | path: /diary | permanent link to this entry


Building 20 again

    Attendance confirmed, flights booked (ticketed at the end of the week), meditating on a hotel. Is it ironic that this is post 666 in my blog?

    One week in Seattle, one week in Washington DC.

posted at: 16:11 | path: /diary | permanent link to this entry


Scobleizer's blog roll

    Ahhh, isn't that sweet?!? Robert has been kind enough to add me to his blog roll. I wonder if that will noticably affect traffic to here? I note that after about a week or giving it a go, using ping services and checking my referrer list hasn't had a noticeable affect on traffic here. The referrer logging is interesting though, as I didn't realize how much of my traffic comes from quite targeted Google searches. That's cool, because it means that I should keep going with the technical content when I have some worth mentioning. I don't think there's a lot of value in just astroturfing random technical thoughts which have been documented a million times before.

    I wonder how I explain the discrepancy between the 50 or referrers in the log, and the 500,000 "hits" the server services a month? There aren't really that many graphical elements on each page, so it's not 30 hits being one page load or something like that. I suspect some of the traffic is goggle crawling the site, but I can't imagine their hitting over a quarter of a million pages.

posted at: 15:47 | path: /diary | permanent link to this entry


Thu, 23 Sep 2004



Yowzer!

posted at: 18:53 | path: /diary | permanent link to this entry


Wed, 22 Sep 2004



Building 20

    The Scobleizer mentioned Building 20 a while ago, as has Channel 9. Now it looks like it's my turn to go, along with another fellow from the office. I'm not really sure what's happening at the moment, and in fact it might not happen, but the trip is in about two weeks, so I should probably find out more sooner.

    Anyone in Redmond want to give me a tour? ;) Oh, and what is the weather like in Seattle in October?

posted at: 01:18 | path: /diary | permanent link to this entry


Tue, 21 Sep 2004



Dealing with referrer spam

    One thing I hadn't thought through when the Scobleizer convinced me to turn on referrer display was referrer spam. I was just looking at the referrer list, and there is at least one spam site there now (adminshop.com, you suck). I'm thinking that perhaps the answer is some scripting which hits each of those pages and makes sure that they contain the text "stillhq.com" before adding them to the list. That should be a fairly easy tweak on the Blosxom referrer plug in I am using now.

    I'll look into it in my copious spare time...

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


Mon, 20 Sep 2004



A simple inheritance example

    Perhaps this is obvious to everyone else, but I wasn't entirely sure of the syntax to have a class which inherits from a class which in turn inherits from another class, with virtual methods at the base level, and a non-virtual help in the intermediate class. So I spent a little time and came up with this example:

      private void button1_Click(object sender, System.EventArgs e)
      {
      	AddNumbers adder = new AddNumbers();
      	adder.arg1 = 1;
      	adder.arg2 = 2;
      	MessageBox.Show("1 + 2 = " + adder.Execute());
      
      	SubtractNumbers suber = new SubtractNumbers();
      	suber.arg1 = 1;
      	suber.arg2 = 2;
      	MessageBox.Show("1 - 2 = " + suber.Execute());
      }
      
      // ...
      
      abstract public class Operation
      {
      	public double arg1;
      	public double arg2;
      
      	abstract public double Execute();
      }
      
      abstract public class AdditionOperation : Operation
      {
      	public double Inverse(double arg)
      	{
      		return -arg;
      	}
      }
      
      public class AddNumbers : AdditionOperation
      {
      	override public double Execute()
      	{
      		return arg1 + arg2;
      	}
      }
      
      public class SubtractNumbers : AdditionOperation
      {
      	override public double Execute()
      	{
      		return arg1 + Inverse(arg2);
      	}
      }
      


    No one would implement addition in this way in the real world though...

    So what we have here is a base class which knows that mathematical operations take two arguments. Then we have a mid level class which knows how to provide the inverse of some numbers, and then a final set of classes which does addition and subtractions. Note that if we had division, then that would just inherit from Operation, as it doesn't care about inverses.

posted at: 16:36 | path: /dotnet | permanent link to this entry


God bless the Capitol Steps

    I know I promised to get technical, but I can't stop myself from writing this. When I was in Washington DC recently, I went to see a group called the Capitol Steps after hearing one of their CDs in the car with my brother. I thought it was a little expensive to get in, but the live show was fantastic (if you're in DC sometime, you really should go and see it). I also bought five CDs on an impulse.

    The show was funny to even us Australians, even though there are bits of American current affairs that I had simply never heard of -- like for instance whoever Tom Ridge is. A lot can be inferred from the context. Tom Ridge for instance sings songs about imminent terrorist attack, so you don't have to be a rocket scientist to work out that he's somehow associated with the Department of Homeland Security.

    Anyways, those five CDs sat in my suitcase and then on a shelf until the other day. I happened to be in a music mood, and pulled one of them down and started listening again. I love these guys. I've now listened to all five of those CDs in the car to and from work this week, and laughed most of the way. It's surprising because some of their music is actually quite beautiful too.

    Now I just need an excuse to get back to DC to go to another live show. I might have to subsist on mail ordered CDs until then.

    Can I just say by the way that the word "Homeland" just gives me the willies? It sounds like it has Fascist overtones or something. I would much rather words like "Internal" or just "Department of Security". Hey, why not "Department of Defense"? Surprisingly, they didn't consult me before selecting the name. Perhaps next time?

    On, and while we're on the topic, the ignorance of local politics goes both ways. The guy sitting next to me at the Capitol Steps concert asked where I was from (I apparently have quite a broad Australian accent, but have never assaulted a Crocodile). We go onto talking about politics in general, and he didn't realize that Australia has troops in Iraq. And Afghanistan. And that we fought in Vietnam. Oh well.

posted at: 15:51 | path: /diary | permanent link to this entry


Blog discoverability yet again

    I've known Willian Luu for a while from the aus-dotnet mailing list, but he now comments on the thread I participated in with Robert Scoble. I think it's interesting that people were asking how I could get more traffic, when I am actually happy with my current traffic level (about 500,000 hits a month, but who is counting?). I intended the discussion to be more theoretical than that, which some poeple have followed through on.

    I've now linked to William, it will be interesting to see if my traffic levels go up, and if his do.

    Looking back at that last bit, it's a bit pathetic. It's kinda like the Google version of comparing various macho measurements. Oh well. It's interesting to me that I have posted here more in the last two days than I think I ever have before. Unfortunately not much of it has been technical. I will now go and meditate on something more technical in order to be able to rant in public again soon.

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


Sun, 19 Sep 2004



Conference bags anyone?

    So, I have on my TODO list to go off and talk to some merchandise vendors about conference bags. That makes me wonder -- I go to a fair few conferences, and I almost never use the bags which come back from the conference, except to take stuff home from the conference itself. The big exception to that rule is the bag which came back from linux.conf.au 2001 in Sydney which is a backpack with a Everything Linux logo on it. Andrew uses that one as a bag to take stuff to daycar in because it's big enough for a change of clothes, lunch, nappies, and his asthma stuff. Am I a representative sample of the people out there who go to conferences?

    If you are thinking about coming to linux.conf.au 2005, what do you want in a conference bag, if anything? I have a few ideas that I'll keep close to my chest for now so that people can be surprised, but I'll factor in any feedback I get from folks out there. Let me know at michael.still@lca2005.linux.org.au (that's my conference address, if you're reading this in 100 years, then you should try me at mikal@stillhq.com).

    Do you even want a bag at all? Would you rather something else? What?

posted at: 22:14 | path: /diary/lca2005 | permanent link to this entry


Adding more disc to a machine with lots of SATA orifaces

    So, I spent some time on the weekend adding disk to Homebrew, which is a NAS / DB server at work. This was interesting because it was coupled with an upgrade to a 2.6 Debian stock kernel. Initally I wondered what the hell those Debian people were smoking when they built an initrd that made me change from treating my IDE disks as IDE to making me treat them as SCSI. What a pain in the arse I thought to myself.

    I went off half cocked to be honest. There is a reason for the change. It turns out that only older SATA controllers are supported by IDE style drivers, and that they are considered flakey (I had noticed some flake with SATA and my 2.4.23 kernel, which is why the kernel upgrade was happening in the first place). The new drivers all treat the SATA controller and disk as SCSI, which means that Debian really has to do the same.

    The confusion during upgrade stemmed from not really knowing how the IDE names would map to the SCSI ones. The SCSI disks are named in detection order (I think, I haven't verified this), and the IDE ones are named for controller / chain location. As it turns out the mapping was pretty easy (hde to sda, hdg to sdb), so that wasn't too bad.

    Now to work out why the upgraded box wants to boot into an interactive version of GRUB, instead of the menu...

posted at: 17:19 | path: /linux | permanent link to this entry


Steven, you're not a real blogger...

    Ahhh Steven (who lives quite close to Marinetti) tells me that Damian, the waiter I encountered the other night, has been like that for years. I must admit that I kinda liked the change of attitude -- there is only so much sucking up you can put up with.

    Steven of course didn't respond on his blog though -- he emailled me. How last century is that?!?

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


Ahhh, if only Pia and I were both single, and I wasn't so ugly...

posted at: 16:29 | path: /diary | permanent link to this entry


Blog discoverability

    Further to my previous comment on blog discoverability, the Scoblizer wrote a post in his blog about the topic. He makes interesting points about the pinging services. I must admit that I wasn't previously aware of those. I have also installed the referer logging plugin for Blosxom as a bit of an experiment. I'm never bothered before to work out who reads this site, and where they come from (I don't have access to the server logs on this hosted machine, and the ISP provide aggregate statistics only).

    Robert is right -- without pinging and tracking refers, what I have had for the last five or so years is a website that just happens to be published using a blogging tool (first my own, and now recently Blosxom). That would explain why in those five years I've got lots of traffic, but never once ended up in the sort of inter-blog conversation which I'm having now.

    I haven't had a chance to read Biz's post on the whole blog discoverability thing yet, but it certainly looks like it's worth the time. I have plugged him into my aggregator though, anf will catch up on reading when I have more coffee in my system. I do wonder if that is a factor -- I live in Australia, which is really the wrong timezone to be talking to Americans much. It's a bit of a pain, as I work for a company with quite a vibrant US office and my borther lives in Washington DC as a third of the US presence for annother Australian ISV. If I want to call them, then I have to ring at 11pm to get them at 9am, and I've never really been a big night person. Luckily my brother is a night owl at least.

posted at: 16:11 | path: /diary | permanent link to this entry


Argh!

    I just installed Cliprex lite in my quest for a Windows video player which doesn't suck... I should have read the reviews. DNS resolution doesn't work with Windows 2003 any more. I would highly recommend staying well clear of this piece of s**t.

    I ran adaware et al, but in the end this fantastic page had the fix. I had to be kinda trusting to just randomly run it, but I was getting a little desperate...

    By the way, Cliprex never did work... It just GPFed immediately. I don't even know if there is any video code in there...

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


A video player for Windows which doesn't suck?

    I've been using Xine under Linux for a while as my video player of choice, and it's nice. Really nice. My linux laptop is in for repair at the moment however, so I'm using my Windows (Server 2003) laptop instead. Yes, I do actively use two laptops. Anyways, I'm having troubles finding a Windows video player which doesn't suck. Windows Media Player can't play a MPEG file of all things, VLC has trouble with the interlacing used on the TiVo recordings, and the other couple I have downloaded have sucked equally. Does anyone have any hints?

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


Sat, 18 Sep 2004



On the Scoblizer and blog discoverability

    Robert Scoble's comments on blog fame are interesting, but I still think he's left out a factor -- discoverability. I could have the best blog on the planet (I don't but you can judge for yourself at http://www.stillhq.com/cgi-bin/blosxom), but if no one has linked to it, then it might take Google forever to find it. Or am I missing some obvious form of blog discovery that people are using?

posted at: 23:33 | path: /diary | permanent link to this entry


I will now commence being increasingly erratic

    So, mum and dad have decided to separate (at least for now). I'm not sure what the long term plan is. I will now become increasingly erratic in my behaviour...

posted at: 23:11 | path: /diary | permanent link to this entry


Fri, 17 Sep 2004



Another good place to eat in Canberra

    Thursday night was Marinetti Resturant in O'Connor. It's Italian, and excellent. I had the fresh sardines, and then pork fillets. The "boing boing" (chocolote profiteroles) was good too. I think the best bit has to be the waiter / owner, who is possibly the rudest service industry worker I have ever met. I would have been horrific if it wasn't so funny -- if you go there, then just expect him to try to rev you up a little...

    For example, we had a couple of people arrive late, and he then picked on them dfor the rest of the night.

    There were some sad looking people in research and development Friday morning however. That might have had something to do with the 12 bottles of red wine, and 8 people who were drinking. I've learnt not to try to keep up with a Irishman, who switched to double gins at 1am to sober up.

    Best effort has to go to Simon, who didn't make it into work until 3pm the next day...

posted at: 14:58 | path: /diary | permanent link to this entry


Wed, 15 Sep 2004



Hey, I got my LCA 2004 DVD / CD

    Ahhhh, delicious...

posted at: 03:23 | path: /diary/lca2005 | permanent link to this entry


Tue, 14 Sep 2004



If you're looking for somewhere to eat out in Canberra, try Debacle

    In Braddon. It's about a 15 minute relaxed walk from ANU, about a 10 minute walk from my work, and has Leffe. I recommend the beer battered chips as a side dish to your beer main course. We went there for lunch today to say goodbye to a visitor from the UK, and a good time was had by all (I hope). Anyways, back to work for little old me.

posted at: 22:31 | path: /diary | permanent link to this entry


Feeling a little tired

    So, I'm in at the ANU working on my PhD at the moment, and I'm feeling a little tired. That's mainly because I only got 6 hours sleep (I normally need 8) because I was on the phone for about an hour with our developer relations guy in the US office. It was worth feeling tired now though because I think we got some useful stuff done. One of the harder aspects of the Web Service project I am working on at the moment is the logisitics of working out how best to get the various support staff around the world trained, and on the same page as the research and development team. I think the call was a good start, but I suspect that some travel for the foreigners to head quarters might be a good idea too. We shall see...

posted at: 16:21 | path: /diary | permanent link to this entry


Staying up to talk to colleagues in America

    La la la, nothing to see here...

    (22:04:08) bob2: you should look into girls
    (22:04:21) mikal: bob2: You should ask their permission first
    


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


Hurrah for planet LCA 2005

    Which is now online...

posted at: 02:56 | path: /diary/lca2005 | permanent link to this entry


WSE 2.0 SP1

    I've been running the Microsoft web service extensions 2.0 technology preview for a while, and decided it was finally time to jump right into the full 2.0 service pack 1 release. What did I need to change in my code to get this to work again? Well, nothing.

    Ahhh, but then I get keen and change the reference to point at the 2.0.0.1 version of the DLL. Now I get:

      download.cs(8,21): error CS0234: The type or namespace name 'Services' does not exist in the class or namespace 
         'Microsoft.Web' (are you missing an assembly reference?)
      download.cs(9,21): error CS0234: The type or namespace name 'Services' does not exist in the class or namespace 
         'Microsoft.Web' (are you missing an assembly reference?)
      trim.asmx.cs(11,21): error CS0234: The type or namespace name 'Services' does not exist in the class or namespace 
         'Microsoft.Web' (are you missing an assembly reference?)
      Upload.cs(6,21): error CS0234: The type or namespace name 'Services' does not exist in the class or namespace 
         'Microsoft.Web' (are you missing an assembly reference?)
      Upload.cs(7,21): error CS0234: The type or namespace name 'Services' does not exist in the class or namespace 
         'Microsoft.Web' (are you missing an assembly reference?)
      


    Heh, it makes me look more efficient if I put effectively the same error message here 5 times. That's because Microsoft changed the namespace from Microsoft.Web.Services to Microst.Web.Services2. Subsequently I discovered that they've renamed DimeAttachment to just plain old Attachment. Incidentally, the constructor for a DimeAttachment (now Attachment) changed as well, so I had to rewrite that line of code too.

    All together not too painful...

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


Mon, 13 Sep 2004



LA doomed to success

    (Hopefully this wont be quoted out of context anywhere). I just got off the phone from the fortnightly LA teleconference. All seems to be going well...

posted at: 01:40 | path: /diary | permanent link to this entry


More on this jagged type thing

      Wierd web service error messages on invokation So, I have an ASP.NET web service that used to just work. Now I get the following when I try to invoke it:

        An unhandled exception of type 'System.Web.Services.Protocols.SoapException' 
        occurred in system.web.services.dll
        
        Additional information: System.Web.Services.Protocols.SoapException: Server was 
        unable to process request. ---> System.IO.FileNotFoundException: File or 
        assembly name hoddbscm.dll, or one of its dependencies, was not found.
        File name: "hoddbscm.dll"
           at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, 
        Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, 
        Assembly locationHint, StackCrawlMark& stackMark)
           at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, 
        Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)
           at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence 
        assemblySecurity)
           at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
           at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
           at System.Xml.Serialization.Compiler.Compile()
           at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings)
           at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings)
           at System.Web.Services.Protocols.SoapServerType..ctor(Type type, 
        ProtocolsEnum versionsSupported)
           at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
           at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, 
        HttpContext context, HttpRequest request, HttpResponse response, 
        Boolean& abortProcessing)
        
        === Pre-bind state information ===
        LOG: Where-ref bind. Location = C:\WINDOWS\TEMP\hoddbscm.dll
        LOG: Appbase = file:///C:/home/towersoft/documents/t523/trim
        LOG: Initial PrivatePath = bin
        Calling assembly : (Unknown).
        ===
        
        LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
        LOG: Attempting download of new URL file:///C:/WINDOWS/TEMP/hoddbscm.dll.
        
           --- End of inner exception stack trace ---
        


      I'm officially wierded out by the fact that the dll name changes each time. The only thing I can think of is that the .NET framework is generating this file when the web service call is recieved. Perhaps it's part of the JITing?

      An initial search at Google made it clear that the XML serialization engine seems to be involved here, but the suggestion of giving everyone permissions to c:\windows\temp as per this page doesn't achieve anything of interest. Finally I find it: apparently jagged types can cause this problem too. Removing the location searching stuff I wrote yesterday fixes the problem for now...

      I wonder what a jagged type is?


    So, I got my code working in the end. In my case it was that I was inheriting from a class which clearly was the wrong one to inherit from. This didn't fail at compile time becuase the type cast wasn't verified until the actual call over the Web Service boundary.

    I've read of it happening to other people because they forgot to make their type public or something like that. I guess in summary a "jagged type" is just one which makes the XML Serializer sad...

    If you're still having pain with your types of the jaggy variety, why not give Chris Sell's precompiler a try?

    Here's some sample output from the precompiler (reformatted a little to make it readable here):

      ...\Temp\9zileshz.0.cs(39,38): warning CS0184: 
         The given expression is never of the provided ('trimws.LocationSelect') type
      ...\Temp\9zileshz.0.cs(40,82): error CS0030: 
         Cannot convert type 'trimws.Operation' to 'trimws.LocationSelect'
      ...\Temp\9zileshz.0.cs(1674,72): error CS1502: 
         The best overloaded method match for 
         'trimws.OperationsList.Add(trimws.Operation)' has some invalid arguments
      ...\Temp\9zileshz.0.cs(1674,80): error CS1503: 
         Argument '1': cannot convert from 'trimws.LocationSelect' to 
         'trimws.Operation'
      


    Now, that's not the most helpful error output in the world, but it does at least confirm that it's not a permissions or disc problem with the server (which seems to be the problem in some cases). The precompiler gets better though -- it twiddles the thingie (that's a technical term) which makes the generated code not be deleted. In the example above, the code was stored at: C:\Documents and Settings\mikal\Local Settings\Temp\9zileshz.0.cs. Now, the code generated looks like it was written by someone on crack (well it was generated):

                  if (!needType) {
                      System.Type t = o.GetType();
                      if (t == typeof(trimws.Operation))
                          ;
                      else if (t == typeof(trimws.Upload)) {
                          Write54_Upload(n, ns, (trimws.Upload)o, isNullable, true);
                          return;
                      }
                      else if (t == typeof(trimws.Download)) {
                          Write53_Download(n, ns, (trimws.Download)o, isNullable, true);
                          return;
                      }
                      else if (t == typeof(trimws.Fetch)) {
                          Write51_Fetch(n, ns, (trimws.Fetch)o, isNullable, true);
                          return;
                      }
                      else if (t == typeof(trimws.RecordSearch)) {
                          Write14_RecordSearch(n, ns, (trimws.RecordSearch)o, isNullable, true);
                          return;
                      }
                      else if (t == typeof(trimws.CheckIn)) {
                          Write13_CheckIn(n, ns, (trimws.CheckIn)o, isNullable, true);
                          return;
                      }
                      else if (t == typeof(trimws.LocationSearch)) {
                          Write2_LocationSearch(n, ns, (trimws.LocationSearch)o, isNullable, true);
                          return;
                      }
                      else {
                          throw CreateUnknownTypeException(o);
                      }
                  }
      


    Now we can look at the line number of the error message and work out what is broken:

      if ((object)(a_0) == null) Reader.Skip(); else a_0.Add(Read50_LocationSelect(false, true));
      


    Ahhh, it's all clear now.

    Notes to any Microsoft employees who end up on this page:
    • Why are you here? Do some Work! Remember you're competing with thousands of open source people...
    • Why can't you catch that exception and return an error message which isn't as wierd?
    • Please send vendor crap to me ;)


posted at: 01:26 | path: /dotnet | permanent link to this entry


Sun, 12 Sep 2004



Inserting messages into the MSN Messenger world using .NET

posted at: 23:45 | path: /dotnet | permanent link to this entry


Blosxom doesn't do RSS feeds properly without tweakage

    There are issues with the dates in RSS feeds generated with Blosxom, unless you configure the story.rss file to contain the right markup. That was easy to fix, but it took a couple of days to realise there was a problem (thanks Steven).

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


Catherine's year 10 10 year reunion

    Catherine and I went to her 10 year reunion on Saturday night. Catherine seemed to have a good time, which is what it is really about. I must admit that I was a little bored being in a room where I didn't know anyone (although I did actually know a couple of people who I had met through Catherine earlier). The food also left a little to be desired, but that's life.

    It's a good thing that I went, becuase now Catherine owes me a reunion boredom session next year, when it will be 10 years since I finished secondary schooling.

posted at: 16:58 | path: /diary | permanent link to this entry


Fri, 10 Sep 2004



Planet LCA skin

    Working on it now, although I don't know much PHP, so it's fun... I've got something which works with a basic skin, which I am now uploading to the lca2005 machine. Then I'll need to work out how to have the template generate the PHP for that page for me, which I don't think will be too hard. I suspect it's just a case of cutting and pasting to my hearts content. Then I need to learn arch so I can commit the changes. Then I need to commit the changes. Then I need more coffee... You get the idea.

posted at: 22:15 | path: /diary/lca2005 | permanent link to this entry


Steven's comments on great hackers

    My friend Steven Hanley comments on the "Great Hackers" essay, and how the really smart people often don't much care about the software that their employer ships. I can find parallels between TOWER and this train of thought. Not that the smartest people in research and development at TOWER don't care about the product or the users, they care a lot. It's more that they tend to focus on what I would call bang for the buck programming, for instance the generators that Steven mentions.

    We often use code generators to help us develop TRIM. Often this will start out as a generation of a lot of the "leg work" code, and then that code will be then tweaked to actually meet the needs of the project in hand. An example is my current Web Service project. There are about 70 ways you can search for a record in TRIM, and there was simply no way that I was going to hand code those 70 search methods for the Web Service version of the SDK. Instead, we used .NET reflection to iterate through the methods and generate a bunch of the code. That code can then be tweaked (if needed) to produce what we actually want.

posted at: 21:40 | path: /diary | permanent link to this entry


More site transition

    I'm now working on reskining the output of the various planet scripts, as well as returning cvsweb to something a little closer to the original default.

posted at: 21:20 | path: /diary | permanent link to this entry


Hey, it's going to rain again!

    So, it's started spitting. This is a big deal, as the last couple of weeks are the first time that we've had a good couple of wet weeks in literally years. I don't think it's going to be enough to stop the official water restrictions that we've been living under for the last couple of years, but it's certainly a nice change from wondering if it's ever going to rain again.

posted at: 17:30 | path: /diary | permanent link to this entry


New site look and feel

    So, welcome to the new site look and feel. I've transitioned to generating the entire site via Blosxom as a bit of an experiment. We'll see how we go. There are quite possibly broken links still -- I'm running a link validator as we speak which will help me fix those...

posted at: 16:34 | path: /site | permanent link to this entry


Converting to blosxom

    TODO list:
    • foot.html for each sub area
    • list of open source projects
    • site map
    • republish my photo collection


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


20040801-geneva

posted at: 00:13 | path: /events/pictures/20040801-geneva | permanent link to this entry


Thu, 09 Sep 2004



Home sick today

    So, I'm home sick today, after catching whatever virus Andrew seems to have been brewing for me. It's quite nice -- gut cramps and nausea...

posted at: 23:37 | path: /diary | permanent link to this entry


Wed, 08 Sep 2004



Wierd web service error messages on invokation

    So, I have an ASP.NET web service that used to just work. Now I get the following when I try to invoke it:

      An unhandled exception of type 'System.Web.Services.Protocols.SoapException' 
      occurred in system.web.services.dll
      
      Additional information: System.Web.Services.Protocols.SoapException: Server was 
      unable to process request. ---> System.IO.FileNotFoundException: File or 
      assembly name hoddbscm.dll, or one of its dependencies, was not found.
      File name: "hoddbscm.dll"
         at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, 
      Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, 
      Assembly locationHint, StackCrawlMark& stackMark)
         at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, 
      Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)
         at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence 
      assemblySecurity)
         at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
         at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
         at System.Xml.Serialization.Compiler.Compile()
         at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings)
         at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings)
         at System.Web.Services.Protocols.SoapServerType..ctor(Type type, 
      ProtocolsEnum versionsSupported)
         at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
         at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, 
      HttpContext context, HttpRequest request, HttpResponse response, 
      Boolean& abortProcessing)
      
      === Pre-bind state information ===
      LOG: Where-ref bind. Location = C:\WINDOWS\TEMP\hoddbscm.dll
      LOG: Appbase = file:///C:/home/towersoft/documents/t523/trim
      LOG: Initial PrivatePath = bin
      Calling assembly : (Unknown).
      ===
      
      LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
      LOG: Attempting download of new URL file:///C:/WINDOWS/TEMP/hoddbscm.dll.
      
         --- End of inner exception stack trace ---
      


    I'm officially wierded out by the fact that the dll name changes each time. The only thing I can think of is that the .NET framework is generating this file when the web service call is recieved. Perhaps it's part of the JITing?

    An initial search at Google made it clear that the XML serialization engine seems to be involved here, but the suggestion of giving everyone permissions to c:\windows\temp as per this page doesn't achieve anything of interest. Finally I find it: apparently jagged types can cause this problem too. Removing the location searching stuff I wrote yesterday fixes the problem for now...

    I wonder what a jagged type is?

posted at: 02:54 | path: /dotnet | permanent link to this entry


Off visiting

    This morning Steven, Tony, Kristy and I went off the see a possible venue for the professional delegate's networking session. I wont mention where it is, as these things are traditionally kept secret until just before the event, but it was a nice venue, and I think it will keep people interested. There is more to do there than just eat and talk to people, which means that people wont be forced into an awkward social situation. Having intesting things around you also gives some sort of common ground to start off a conversation with.

    The only problem is that if too many people are professionals, the venue might not hold us all...

    Then after that off to a Canberra mechandise company to talk about some nice Chambre shirts for people who need to go out places representing the conference. The people involved will have to pay for their own shirts, much like the promotional ones, but it still makes us seem a lot more professional.

posted at: 02:38 | path: /diary/lca2005 | permanent link to this entry


TUF

    Tomorrow is TUF, the user conference for people who use my employer's product -- TRIM. I'm speaking about the web service project which I am working on at the moment, which is pretty cool stuff. I'll mention more here when I've given the talk, as I don't want to steal my own thunder.

posted at: 02:34 | path: /diary/TRIM | permanent link to this entry


Mon, 23 Aug 2004



Visual Studio 2003 and 2005 on the same machine?

    Someone asked on a mailling list I am on if this works. The only problem I have had is that I can no longer debug web projects with Visual Studio 2003. This sounds like it might be a common complaint. Then the mailling list came to the rescue:

      William Luu wrote:
      
      > As mentioned in another post, to get debug working in VS.NET 2003 all you
      > need to do is set ASP.NET from 2.0 to 1.1 using the IIS Management Console.
      >
      > There's a properties tab called "ASP.NET", it will say "ASP.NET Version: "
      > and there is a drop down list of diffrent versions installed on your
      > computer.
      >
      > This is because VS.NET 2003 will only debug ASP.NET 1.1 [and probably lower]
      > Applications.
      
      
      Ah yes. Although I also needed to creat an application pool for the 
      1.1 code which was separate from the application pool for the 2.0 
      code. That's because you can only have one version of ASP per 
      application pool.
      
      Thanks for the tip,
      Mikal 
      


posted at: 19:08 | path: /dotnet | permanent link to this entry


Tue, 17 Aug 2004



Setting up a file type association with .NET

    Isn't as evil as I initially thought. Here's what I ended up with. It's still pretty evil though...

      public class RegisterAssociation
      {
      	private RegistryKey m_shell;
      
      	public RegisterAssociation(string extn, string name, string description, string defaultverb)
      	{
      		RegistryKey extnkey = Registry.ClassesRoot.CreateSubKey(extn);
      		extnkey.SetValue(null, name);
      
      		RegistryKey key = Registry.ClassesRoot.CreateSubKey(name);
      		key.SetValue(null, description);
      		m_shell = key.CreateSubKey("Shell");
      		m_shell.SetValue(null, defaultverb);
      	}
      
      	public void AddVerb(string verb, string commandline)
      	{
      		RegistryKey verbkey = m_shell.CreateSubKey(verb);
      		RegistryKey cmd = verbkey.CreateSubKey("Command");
      		cmd.SetValue(null, commandline);
      	}
      }
      


posted at: 20:08 | path: /dotnet | permanent link to this entry


Sitting on a couch

    In the only inane post in a while, I would just like to say that I am sitting here on my couch at home posting this with my new Ipaq h2210. I like being back in the land of the handheld and will write more about getting it to work when I have some spare time.

posted at: 14:08 | path: /diary | permanent link to this entry


Sun, 15 Aug 2004



It never rains, it pours

    During the last wek of my trip, Catherine was driven into whilst giving way at an intersection. She sustained whiplash, and the Lancer is in for $3,500 worth of panel beating. Luckily we're insured.

    Now, a garbage truck just drove into me. It was low speed, and we're all ok, but the driver of the truck has to pay $163 for a new passenger side mirror for the Falcon. I think I might have a little lie down now...

posted at: 19:08 | path: /diary | permanent link to this entry


Fri, 13 Aug 2004



Process.Start in the .NET Compact Framework

    It isn't there, which made me sad. Open source made me happy again -- the OpenNetCF has an implementation of the process namespace which makes this possible. Excellent...

posted at: 21:08 | path: /dotnet | permanent link to this entry


Thu, 12 Aug 2004



NTLM authentication with the .NET Compact Framework

    If you want your NTLM code to work with the .NET Compact Framework, then you're going to need to upgrade to at least version 2.0 of the compact framework for it to be implemented. This includes when you call a Web Service from your C# code with a server which requires NTLM authentication.

posted at: 03:08 | path: /dotnet | permanent link to this entry


Back in Australia

    I got back into Australia on the morning of Friday 6 August. Singapore seemed to be all about shopping, which was nice for about a day, and after which I became bored -- I don't much like shopping.

    Catherine had someone drive into the back of her car the Monday of the week I came back, so she needs lots of help with the boys again. The car went into the panel beaters, and will apparently take until the end of the month to fix. Lovely.

posted at: 02:08 | path: /diary | permanent link to this entry


Wed, 11 Aug 2004



Geneva and Gex

    Paul and Sheila are friends of Catherine and myself, who live in Gex which is just outside of Geneva. Sheila works for the WHO, which is why they're in Geneva. I liked the alps -- it was nice. It's hard being in a country in which you don't speak the language however.



    There are more pictures, checkout the events page for more information.

posted at: 22:08 | path: /diary | permanent link to this entry


20040731-frenchalps-paul

posted at: 17:10 | path: /events/pictures/20040731-frenchalps-paul | permanent link to this entry


20040730-interlaken

posted at: 15:02 | path: /diary/pictures/20040730-interlaken | permanent link to this entry


20040730-interlaken

posted at: 15:02 | path: /events/pictures/20040730-interlaken | permanent link to this entry


20040729-geneva

posted at: 14:51 | path: /events/pictures/20040729-geneva | permanent link to this entry


Sun, 01 Aug 2004



London

    Well, the plane to London was delayed for three hours, so I got into the airport about 10:30 in the morning. Customs and immigration were a breeze, and I was soon on my way via the tube to the hotel.

    The tube with luggage isn't too bad, but having only one suitcase instead of two would have made it nicer. In the end I got lost on the way to the hotel and called a cab. Cabs in London are expensive, in fact, everything in London is expensive.

    I was a little underwealmed with the hotel (the Hyde Park one), as the rooms were very small, and I got charged $300 Australian for one night. The TV didn't work, and a phone call cost one pound fifty in connection fee. They adverstied a wireless hotspot, but I certainly couldn't find it. The staff didn't even know what a computer was. They thought I was looking for a phone. I would recommend avoiding the Ramamda Jarvis Hyde Park.

    Breakfast was funny. I shouwd up 10 minutes after the advertised opening time, and the staff were still getting dressed. It was quite exciting, you had to guess what big of clothing they would have on next each time they walked out. The food also took ages to appear.

    Coffee in England is crap. At least coffee in the US is only weak.

    The train to Wokingham was nice, the people in the UK office lovely, and the Thai resturant in Wokingham whose name escapes me delightful. The porsche ride to the Radisson Edwardian at Heathrow was fun too. The Radisson Edwardian was much nicer than the previous night, for the same price and in a very expensive location...

    I was surprised by how brown Kensington Gardens were, but the Diana memorial children's playground looked like a lot of fun. It was chockers.



posted at: 11:08 | path: /diary | permanent link to this entry


Transcoding a MPEG video into Divx, whilst shrinking it to 320x240 (on linux)

    Easy!

    transcode -i /cdrom/backyard.mpg -Z 320x240 -o small.avi -V -y xvid4 -b 32,0,4,2
    


posted at: 10:08 | path: /diary | permanent link to this entry


Sat, 31 Jul 2004



Great hackers

    Steven Hanley pointed out this article to me. It's a good read.

posted at: 11:08 | path: /diary | permanent link to this entry


Fri, 30 Jul 2004



American politics

    When I was visiting my brother in DC I commented that on the walk home one night I had passed in front of the heavily guarded, but otherwise identical building to his in the office complex, as I did every morning and evening. As I passed by it became obvious why there were so many rent-a-cops hanging around all the time -- they hadn't turned the inside lights off, and it was dark inside. The bottom floor was littered with TVs showing news coverage, re-elect Bush posters, and a a few stressed looking staffers.

    It's nice to have one's suspicions confirmed.

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


Mon, 26 Jul 2004



20040724-ottawa

posted at: 06:44 | path: /events/pictures/20040724-ottawa | permanent link to this entry


Free wifi hotspots in Canberra

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


Sun, 25 Jul 2004



London Hotels

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


Fri, 23 Jul 2004



OLS 2004

    So, OLS 2004 happened. It was good, and my tutorial went ok. It finished 15 minutes early, but it's really hard to judge how many questions you're going to get in a two hour talk. Now I should just write up the slides into some sort of tutorial document while I still remember what questions people asked...

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


20040723-boypicdaddyaway

posted at: 07:53 | path: /matthew/pictures/20040723-boypicdaddyaway | permanent link to this entry


20040723-boypicdaddyaway

posted at: 07:53 | path: /andrew/pictures/20040723-boypicdaddyaway | permanent link to this entry


Thu, 22 Jul 2004



20040505-cebit

posted at: 12:54 | path: /events/pictures/20040505-cebit | permanent link to this entry


Damien Conway's Perl 6 talk

    Martin is right -- Damien Conway is a fantastic speaker. The new perl 6 actually cleans up a lot of the ugliness I see in perl 5, although I do have to agree that the obsession with making every operator a single character (and therefore using unicode) is evil.

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


Wed, 21 Jul 2004



20040720-ottawa

posted at: 14:57 | path: /events/pictures/20040720-ottawa | permanent link to this entry


Bus tour of Ottawa (20 July 2004)



    Today I went on a bus tour of Ottawa. Some things to note -- the downtown area near the Rideau center is no where near as neat and clean as it was in DC, which isn't unexpected. There's rust everywhere, probably because of the salt they use to melt the snow on roads in the winter. The architecture also strikes me as kinda French too.

    A nice town though, worth a visit, although there isn't masses to see -- kinda like Canberra.

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


Flying to Ottawa

    ...nothing meaningful achieved...

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


Ottawa (19 July 2004)



    Spent the day wandering around the bits of Ottawa near the hotel, including the Rideau mall, and finding the conference center. I must admit I watched a bit of TV too...

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


Tue, 20 Jul 2004



20040619

posted at: 15:44 | path: /andrew/pictures/20040619 | permanent link to this entry


20040619

posted at: 15:44 | path: /matthew/pictures/20040619 | permanent link to this entry


20040619

posted at: 15:44 | path: /events/pictures/20040619 | permanent link to this entry


20040719-ottawa

posted at: 10:37 | path: /events/pictures/20040719-ottawa | permanent link to this entry


First full day in Washington (14 July 2004)

    (This post overlaps a little with the previous one)

    First day in DC. I spent the day catching the Orange line metro to Vienna station, where one of the folks from the office kindly picked my up. It was nearly lunch time by the time we'd made the drive into the office (it's about 30 or 40 minutes drive from the station), so we had a quick chat, and then went off for lunch. After lunch we had a chat with a couple of partners, both of who are involved with different parts of the NMCI project.

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


Touring with Peter and Jasmine (17 July 2004)



    So, given this was the first weekend day of my stay in DC, it was my big chance to do some touring with Peter and Jasmine, who had been at work all week. We made it out to the Smithsonian Air and Space hangar at Dulles. The people in the US office were right, whilst it was wonderful, I think the one on National Mall was better, and because all the exhibits are so big it doesn't take long to see them all. They were also still building stuff, so it's the sort of thing that I am going to need to visit again.

    I don't regret going though. As a kid I really wanted to be an astronaut, until I worked out that I wasn't American. Seeing a shuttle was very cool.

    After that we went out to a waterfall whose name I have forgotten. It was on the Pontomac river though, and some of the houses near the national park were amazing.

    Went out to see the Capitol Steps after that in the evening, which was a little expensive by Australian standards, but well worth it. What we need to develop in Australia is some tradition of political satire as an art form.

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


Wandering on National Mall (15 July 2004)



    So, I caught the metro across to National Mall this morning and had a bit a look around. I must say that I am very impressed with the DC metro -- it's clean, fast, cheap, and I haven't had to wait yet. Admittedly I haven't caught a metro train in peak hour yet -- that's on the cards tommorrow when I have to go from the Courthouse station to Vienna on the orange line at about 8 am.

    Anyways, I went to the Smithsonian Air and Space museum, which was fantastic. I also dropped in to the Capitol building, the Whitehouse, the George Washington monument, and the Smithsonian Natural History museum. I am definitely going to have to bring Catherine and the kids back to here. I think Andrew and Matthew would love it.

    Americans seem to be very friendly, and a lot of the things I was expecting haven't happened -- I've only met two beggers, and I have felt physically safe the entire time. I have also only been asked once where my accent is from (a security guard at one of the Smithsonians). I do feel a little self conscious having such an obvious accent here, or at least I assume it is obvious.

    The security is a little bit over top, but it does result in me feeling very safe.

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


US BAP Conference (16 July 2004)



    Went out to the Business Alliance Partners Conference at Landsdown Resort. This is what the US office calls their Value Added Resellers (VARs).

    It was a useful experience. It looks like Web Services are really big here, and I fielded quite a few questions about our offering in that area. That made me think about the open source Web Services offerings out there. I'm not really aware of anything which makes writing a Web Service on Linux trivial, but then again I haven't looked. I should change that sometime soon.

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


Sun, 18 Jul 2004



20040716-dc

posted at: 04:45 | path: /events/pictures/20040716-dc | permanent link to this entry


20040714-dc

posted at: 04:40 | path: /events/pictures/20040714-dc | permanent link to this entry


Wed, 14 Jul 2004



Washington DC

    So, I'm now in Washington DC and missing the boys and Catherine. No pictures yet, because I've either been flying, or at the office in DC. Yesterday (my personal timezone) looked something like:

    • Get up a 4:30 am
    • Flight to Sydney at 6:50
    • Flight to LA at 12:50 (it was a 12 hour 50 minute flight too)
    • Four hour layover
    • Five hour flight to DC
    • Trip in a wierd moving room
    • Back to my brothers house
    • Sleep (I'd been up and going for about 35 hours)


    Today I went into the office and had a chat to our developer relations guy over here, as well as a couple of partners working on NMCI. I took the orange line of the DC metro -- I must say I was impressed. It was clean, fast, and not at all scary. The weather is nice here, but very humid. I'm not too badly jet lagged, probably because I didn't get much sleep on the plane, so I slept pretty well this morning. I got only 6 hours sleep, but I am used to that because of the boys.

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


Sun, 11 Jul 2004



Bio for AUUG 2004

    Michael is an ordinary committee member on the AUUG board, as well as serving in a similar position with Linux Australia. He has been administering networks, systems, or writing code professionally since 1996, and currently works for a major Australian ISV. He is also extremely active in his local LUG.

posted at: 19:07 | path: /bio | permanent link to this entry


Bio for OLS 2004

    Michael Still released his first Open Source project in July 2000, and has been actively developing ever since. He has had a variety of articles published by IBM DeveloperWorks, and once made a Tux out of fairy lights. Michael has focused recent efforts on janitorial patches to the kernel, as well as the mandocs build target. His gym program states his exercise goal as "develop laser death vision". Michael lives in Australia with his wife, two kids, and a cat.

posted at: 19:07 | path: /bio | permanent link to this entry


Bio for TUF 2004

    Michael has worked on large scale image processing and storage for several years, including a couple of years managing and developing large image databases for an Australian government department. He works within the Research and Development division of TOWER Software, mainly focusing on server side software. He is currently responsible for the Web Service project, as well as a variety of other .NET tasks. He has been with TOWER for three years.

    Michael has extensive experience developing on Windows platforms, as well as various forms of Unix, including AIX, FreeBSD, and Linux. Michael holds a Bachelor of Computer Engineering from University of Canberra, and is currently studying towards his PhD on operating systems implementation from ANU. Michael holds committee positions with two national professional IT associations.

    Michael’s gym program states his exercise goal as “develop laser death vision”. You should show caution if you find him staring at you, because he’s probably trying to set you on fire. He once made a penguin out of fairy lights.

posted at: 19:07 | path: /bio | permanent link to this entry


Bio for LCA 2004

    Michael has been working in the image processing field for several years, including a couple of years managing and developing large image databases based on Open Source for an Australian government department. He currently works for TOWER Software, who manufacture a world leading EDMS and Records Management package named TRIM. Michael is also the developer of Panda, an open source PDF generation API, as well as a bunch of other Open Source code.

    Michael has a web site at http://www.stillhq.com

posted at: 19:07 | path: /bio | permanent link to this entry


Leaky showers

    I noticed on Sunday that despite the incompetent attentions of Mega Sealed to my leaky shower (they've had three attempts now), I ended up pulling off the shower screen investigating why the leaks continued. I told the man from the company that I thought the silicone around the shower screen needed love, and the pictures I took seem to agree with me. I'll let you draw your own conclusion:



    That green stuff is algae. It was very alive still, and the whole area was quite damp.



    The damage to the cupboard in the master bedroom which backs onto the leak is quite extensive. The hole in the back of the cupboard was me chasing the water... I don't mind fixing the joinery, but am worried by the damage to the frame of the house:



    The only thing which makes me a little happier about the whole thing is that I want to tear down that wall in about 5 years anyways, and it's not structural.

    So why did I pull down the shower screen two days before going away for three weeks? Well, I wanted to let things dry out, and now the screen is back on and siliconed properly. Hopefully things will be able to dry out while I am away and then I can fix the cupboard. Catherine and the boys will still be using the bathroom while I am away of course.

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


Canberra

    Today is my last full day in Canberra for a while. We went out to the New Parliament House open day the other day, which was nice as that's where Catherine works now. I think it is good for the boys to see where mummy works. The oddest thing about the whole day was that the security guards wouldn't let us take pictures of the cabinet room or the Prime Minister's office -- despite media pictures from those locations being quite common. Apparently it's something to do with security, but the logic certainly escapes me.



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


20030723

posted at: 00:09 | path: /matthew/pictures/20030723 | permanent link to this entry


Thu, 08 Jul 2004



20040702

posted at: 21:21 | path: /diary/pictures/20040702 | permanent link to this entry


Wed, 07 Jul 2004



Getting ready to head overseas

    Well, I'm putting the finishing touches on getting ready to leave on my trip... Little things like packing my bag, and making sure I have foreign currency. The currency issue is interesting in that there are some really crap currencies out there. If you're not paying attention, then US and Canadian dollars certainly look a lot alike to me, for example.

    There's a CLUG programmers SIG tonight which is about the recent GCC summit in Ottawa -- that should hopefully be an interesting talk.

    Catherine seems to be having a ball at New Parliament House. It sounds like a really good place to work, if a little detached from reality. Little things like there is a bank on the inside of the security, so the bank doesn't bother having flyup screens.

    Paul Boutin has an interesting story about a local government who has been sending internal private email to Sweden accidentally for years.

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


Tue, 06 Jul 2004



Transcoding a DVD to xvid with Linux

    So, we have this promotional video at work which we own the copyright to, and we needed a copy as an XVID encoded AVI file for some of our sales people to wander around the countryside with. It turns out that most of the documentation I read was just plain wrong, so I thought I would document what I have to do to get it to work here...



    Because the video was PAL, I needed the -V option to transcode, and because the audio was LPCM, I needed a -d option as well. The final command line was:

    transcode -i TOWER_SOFTWARE_DVD/VIDEO_TS/VTS_01_1.VOB -x vob,vob -o tower.avi -d -V -y xvid4
    


    Use vobcopy to rescue the content from the DVD in the first place.

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


Sun, 04 Jul 2004



FUSE userspace filesystem performance

    I am pleasantly surprised with how fast user space filesystems using FUSE are. Here are some preliminary results:

    Straight ext3:
      1145.69user 70.27system 20:33.32elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
      1146.23user 69.63system 20:39.99elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
      1145.61user 69.97system 20:34.23elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
      1145.90user 70.19system 20:35.62elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
      1146.22user 69.99system 20:39.80elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
      


    Userspace write through to ext3:
      1151.70user 78.65system 22:07.49elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
      1151.59user 78.30system 22:13.22elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
      1151.40user 78.46system 22:17.37elapsed 91%CPU (0avgtext+0avgdata 0maxresident)k
      1151.48user 78.88system 22:13.04elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
      1150.97user 78.53system 22:18.70elapsed 91%CPU (0avgtext+0avgdata 0maxresident)k
      


    So, going through a userspace filesystem which does nothing apart from rewrite the request added two minutes to my kernel compile. That's not too shabby in my opinion. I'll have more conclusive results by the time I present my FUSE tutorial at OLS.

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


Why is today going so slowly?

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


Wed, 30 Jun 2004



Your daily wierd update

    Further proof that the world is weird:



    “SUV takes plunge: Pat Campanella, left, and Affordable Towing and Recovery owner Devin Statts discuss how to get Campanella's SUV out of Katherine Peacock's pool in Hawai'i Kai. Campanella was giving his wife a driving lesson when she overcompensated and drove into the pool.” http://www.livejournal.com/users/jwz/361079.html



    "The fish was totally exhausted from trying to dive but unable to because the ball would always bring him back up to the surface." http://www.livejournal.com/users/jwz/360938.html

    Further weird will be provided as it occurs.

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


Tue, 29 Jun 2004



And then I needed an indexer for my type safe collection

    Todays task was to export the type safe collection over a web service boundary. This means that the XmlSerializer needs to be able to run on the collection. Initially I got this error message:

      You must implement a default accessor on 
      xxxWebService.Service1+ThingieCollection because it inherits from 
      ICollection. 
      Description: An unhandled exception occurred during the execution of 
      the current web request. Please review the stack trace for more 
      information about the error and where it originated in the code. 
      
      Exception Details: System.InvalidOperationException: You must 
      implement a default accessor on 
      xxxWebService.Service1+ThingieCollection because it inherits from 
      ICollection.
      


    The solution was to add an "indexer" to the collection implementation, as so:

    public class ThingBase
    {
    }
    
    public class Thingie : ThingBase
    {
    	public string m_val;
    	public Thingie(string val)
    	{
    		m_val = val;
    	}
    }
    
    public class OtherThingie : ThingBase
    {
    	public int m_val;
    	public OtherThingie(int val)
    	{
    		m_val = val;
    	}
    }
    
    public class NotAThingie
    {
    }
    
    public class ThingieCollection : CollectionBase
    {
    	public void Add(ThingBase a)
    	{
    		List.Add(a);
    	}
    
    	public ThingBase this [int i] 
    	{
    		get                               
    		{
    			return (ThingBase) List[i];         
    		}     
    		set
    		{
    			if ( i >= Count )
    			{
    				Add(value);
    			}
    			else
    			{
    				List[i] = value;
    			}
    		}
    	}
    }
    


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


Mon, 28 Jun 2004



A type safe C# collection

    This is just a simple example from me exploring how to build a type safe collection which can store more than one type. It's really very simple -- all you have to do is overload the Add() method, and ensure that only the types that you want to get added to the collection have an Add() method. Everything else will then get a compilation error.

    using System;
    using System.Collections;
    
    namespace typesafeCollection
    {
    	/// 
    	/// Demo of a type safe collection
    	/// 
    	class Tester
    	{
    		[STAThread]
    		static void Main(string[] args)
    		{
    			ThingieCollection myThingies = new ThingieCollection();
    			Thingie a = new Thingie("a");
    			Thingie b = new Thingie("b");
    			OtherThingie c = new OtherThingie(1);
    			OtherThingie d = new OtherThingie(2);
    			NotAThingie e = new NotAThingie();
    
    			myThingies.Add(a);
    			myThingies.Add(b);
    			myThingies.Add(c);
    			myThingies.Add(d);
    			// myThingies.Add(e); Compile error for wrong type
    
    			// Iterate through the thingies printing them out
    			foreach(Object thing in myThingies)
    
    			{
    				try
    				{
    					Console.WriteLine("Type is: " + thing.GetType());
    					if(thing.GetType().ToString() == "typesafeCollection.Thingie")
    					{
    						Thingie tempThingie = (Thingie) thing;
    						System.Console.WriteLine("String thingie: " +
    							tempThingie.m_val);
    					}
    					else
    					{
    						OtherThingie tempOtherThingie = (OtherThingie) thing;
    						System.Console.WriteLine("Integer thingie: " +
    							tempOtherThingie.m_val);
    					}
    				}
    				catch(Exception except)
    				{
    					Console.WriteLine("Exception: " + except.Message);
    				}
    			}
    		}
    	}
    
    	class Thingie
    	{
    		public string m_val;
    		public Thingie(string val)
    		{
    			m_val = val;
    		}
    	}
    
    	class OtherThingie
    	{
    		public int m_val;
    		public OtherThingie(int val)
    		{
    			m_val = val;
    		}
    	}
    
    	class NotAThingie
    	{
    	}
    
    	class ThingieCollection : CollectionBase
    	{
    		public void Add(Thingie a)
    		{
    			List.Add(a);
    		}
    
    		public void Add(OtherThingie a)
    		{
    			List.Add(a);
    		}
    	}
    }
    


    On further inspection we can simplify this a little by having all the object types we want to store in the collection inherit from a base class. For example:

    using System;
    using System.Collections;
    
    namespace typesafeCollectionWithInheritance
    {
    	/// 
    	/// Demo of a type safe collection
    	/// 
    	class Tester
    	{
    		[STAThread]
    		static void Main(string[] args)
    		{
    			ThingieCollection myThingies = new ThingieCollection();
    			Thingie a = new Thingie("a");
    			Thingie b = new Thingie("b");
    			OtherThingie c = new OtherThingie(1);
    			OtherThingie d = new OtherThingie(2);
    			NotAThingie e = new NotAThingie();
    
    			myThingies.Add(a);
    			myThingies.Add(b);
    			myThingies.Add(c);
    			myThingies.Add(d);
    			// myThingies.Add(e); Compile error for wrong type
    
    			// Iterate through the thingies printing them out
    			foreach(Object thing in myThingies)
    			{
    				try
    				{
    					Console.WriteLine("Type is: " + thing.GetType());
    					if(thing.GetType().ToString() == "typesafeCollection.Thingie")
    					{
    						Thingie tempThingie = (Thingie) thing;
    						System.Console.WriteLine("String thingie: " +
    							tempThingie.m_val);
    					}
    					else
    					{
    						OtherThingie tempOtherThingie = (OtherThingie) thing;
    						System.Console.WriteLine("Integer thingie: " +
    							tempOtherThingie.m_val);
    					}
    				}
    				catch(Exception except)
    				{
    					Console.WriteLine("Exception: " + except.Message);
    				}
    			}
    		}
    	}
    
    	class ThingBase
    	{
    	}
    
    	class Thingie : ThingBase
    	{
    		public string m_val;
    		public Thingie(string val)
    		{
    			m_val = val;
    		}
    	}
    
    	class OtherThingie : ThingBase
    	{
    		public int m_val;
    		public OtherThingie(int val)
    		{
    			m_val = val;
    		}
    	}
    
    	class NotAThingie
    	{
    	}
    
    	class ThingieCollection : CollectionBase
    	{
    		public void Add(ThingBase a)
    		{
    			List.Add(a);
    		}
    	}
    }
    


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


A little less busy again

    So, I've been very busy recently becuase of the various things one needs to do for the end of the financial year. This has included stuff for work, marking of university assignments, a report and plan for my PhD, and preparing for several talks that I am giving overseas in the next month or so. It's nice that things are starting to settle down again, but I think it's not going to get much quieter until I actually leave to go overseas...

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


A type safe C# collection

    This is just a simple example from me exploring how to build a type safe collection which can store more than one type. It's really very simple -- all you have to do is overload the Add() method, and ensure that only the types that you want to get added to the collection have an Add() method. Everything else will then get a compilation error.

    using System;
    using System.Collections;
    
    namespace typesafeCollection
    {
    	/// 
    	/// Demo of a type safe collection
    	/// 
    	class Tester
    	{
    		[STAThread]
    		static void Main(string[] args)
    		{
    			ThingieCollection myThingies = new ThingieCollection();
    			Thingie a = new Thingie("a");
    			Thingie b = new Thingie("b");
    			OtherThingie c = new OtherThingie(1);
    			OtherThingie d = new OtherThingie(2);
    			NotAThingie e = new NotAThingie();
    
    			myThingies.Add(a);
    			myThingies.Add(b);
    			myThingies.Add(c);
    			myThingies.Add(d);
    			// myThingies.Add(e); Compile error for wrong type
    
    			// Iterate through the thingies printing them out
    			foreach(Object thing in myThingies)
    
    			{
    				try
    				{
    					Console.WriteLine("Type is: " + thing.GetType());
    					if(thing.GetType().ToString() == "typesafeCollection.Thingie")
    					{
    						Thingie tempThingie = (Thingie) thing;
    						System.Console.WriteLine("String thingie: " +
    							tempThingie.m_val);
    					}
    					else
    					{
    						OtherThingie tempOtherThingie = (OtherThingie) thing;
    						System.Console.WriteLine("Integer thingie: " +
    							tempOtherThingie.m_val);
    					}
    				}
    				catch(Exception except)
    				{
    					Console.WriteLine("Exception: " + except.Message);
    				}
    			}
    		}
    	}
    
    	class Thingie
    	{
    		public string m_val;
    		public Thingie(string val)
    		{
    			m_val = val;
    		}
    	}
    
    	class OtherThingie
    	{
    		public int m_val;
    		public OtherThingie(int val)
    		{
    			m_val = val;
    		}
    	}
    
    	class NotAThingie
    	{
    	}
    
    	class ThingieCollection : CollectionBase
    	{
    		public void Add(Thingie a)
    		{
    			List.Add(a);
    		}
    
    		public void Add(OtherThingie a)
    		{
    			List.Add(a);
    		}
    	}
    }
    


    On further inspection we can simplify this a little by having all the object types we want to store in the collection inherit from a base class. For example:

    using System;
    using System.Collections;
    
    namespace typesafeCollectionWithInheritance
    {
    	/// 
    	/// Demo of a type safe collection
    	/// 
    	class Tester
    	{
    		[STAThread]
    		static void Main(string[] args)
    		{
    			ThingieCollection myThingies = new ThingieCollection();
    			Thingie a = new Thingie("a");
    			Thingie b = new Thingie("b");
    			OtherThingie c = new OtherThingie(1);
    			OtherThingie d = new OtherThingie(2);
    			NotAThingie e = new NotAThingie();
    
    			myThingies.Add(a);
    			myThingies.Add(b);
    			myThingies.Add(c);
    			myThingies.Add(d);
    			// myThingies.Add(e); Compile error for wrong type
    
    			// Iterate through the thingies printing them out
    			foreach(Object thing in myThingies)
    			{
    				try
    				{
    					Console.WriteLine("Type is: " + thing.GetType());
    					if(thing.GetType().ToString() == "typesafeCollection.Thingie")
    					{
    						Thingie tempThingie = (Thingie) thing;
    						System.Console.WriteLine("String thingie: " +
    							tempThingie.m_val);
    					}
    					else
    					{
    						OtherThingie tempOtherThingie = (OtherThingie) thing;
    						System.Console.WriteLine("Integer thingie: " +
    							tempOtherThingie.m_val);
    					}
    				}
    				catch(Exception except)
    				{
    					Console.WriteLine("Exception: " + except.Message);
    				}
    			}
    		}
    	}
    
    	class ThingBase
    	{
    	}
    
    	class Thingie : ThingBase
    	{
    		public string m_val;
    		public Thingie(string val)
    		{
    			m_val = val;
    		}
    	}
    
    	class OtherThingie : ThingBase
    	{
    		public int m_val;
    		public OtherThingie(int val)
    		{
    			m_val = val;
    		}
    	}
    
    	class NotAThingie
    	{
    	}
    
    	class ThingieCollection : CollectionBase
    	{
    		public void Add(ThingBase a)
    		{
    			List.Add(a);
    		}
    	}
    }
    


posted at: 17:06 | path: /dotnet | permanent link to this entry


Sun, 27 Jun 2004



Playing with .NET listboxes

    I just dug this out of my old mail, as someone asked how to do it, and I thought I should put it somewhere I could remember it...

    I needed to be able to have arbitrary data associated with a line of text in a standard .NET listbox. So here’s what I did:
    public class listBoxItem
          {
                string m_display;
                object m_backingItem;
    
                public listBoxItem(string display, object backingItem)
                {
                      m_display = display;
                      m_backingItem = backingItem;
                }
    
                public override string ToString()
                {
                      return m_display;
                }
    
                public object GetBacking()
                {
                      return m_backingItem;
                }
          }
    
    This is now what you put in the listbox. Here’s an example of adding an item:
    listBoxItem item = new listBoxItem(className, fullName);
    lstClass.Items.Add(item);
    
    Because of the ToString() override, this will still use the className text as the display string. To get the backing data out of a row, just do something like:
    listBoxItem item = (listBoxItem) lstClass.Items[lstClass.SelectedIndex];
    Type type = m_assembly.GetType(item.GetBacking().ToString());
    
    Get I use the backing data to get a class handle using .NET reflection. Because the backing data is an object, and everything is an object, the backing data could be anything (including a TRIM Record object for instance).

posted at: 23:06 | path: /dotnet | permanent link to this entry


Playing with .NET listboxes

    I just dug this out of my old mail, as someone asked how to do it, and I thought I should put it somewhere I could remember it...

    I needed to be able to have arbitrary data associated with a line of text in a standard .NET listbox. So here’s what I did:
    public class listBoxItem
          {
                string m_display;
                object m_backingItem;
    
                public listBoxItem(string display, object backingItem)
                {
                      m_display = display;
                      m_backingItem = backingItem;
                }
    
                public override string ToString()
                {
                      return m_display;
                }
    
                public object GetBacking()
                {
                      return m_backingItem;
                }
          }
    
    This is now what you put in the listbox. Here’s an example of adding an item:
    listBoxItem item = new listBoxItem(className, fullName);
    lstClass.Items.Add(item);
    
    Because of the ToString() override, this will still use the className text as the display string. To get the backing data out of a row, just do something like:
    listBoxItem item = (listBoxItem) lstClass.Items[lstClass.SelectedIndex];
    Type type = m_assembly.GetType(item.GetBacking().ToString());
    
    Get I use the backing data to get a class handle using .NET reflection. Because the backing data is an object, and everything is an object, the backing data could be anything (including a TRIM Record object for instance).

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


Tue, 22 Jun 2004



Talk for OLS

    So, it's night time here, and I'm in my office at university working on a talk this Thursday. It's going to be a dry run of my talk for OLS, but I'm starting to think that I wont be able to have all the content ready by then, so it might also be a best effort kind of affair. I think I'll give this another hour here, and then head home.

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


Mon, 21 Jun 2004



Too much marking

    It's hard to believe, but I'm still marking Comp 3310 assignments. I'm not allowed into the office today because I have a medical certificate covering me until the end of today for my weekend illness, so I've spent a bunch of today getting as much marking as possible out of the way. I think I should have them all done by the end of the weekend. Hopefully.

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


Sun, 20 Jun 2004



Diffie Hellman key exchange using Microsoft's CryptoAPI

    I mentioned a while ago that I was working on implementing Diffie Hellman key exchange using the Microsoft CryptoAPI. It turns out that despite the mightly strong drugs that the Microsoft hackers who wrote the API were snorting, I managed to prevail...

    If you want to know how to do this yourself, I recommend that you start off by trawling the Microsoft MSDN Newsgroups. Unfortunately, I don't think I can show you my code, what with it being proprietary and all.

    The hard bit is, how do you test something like this? Sure, the encrypt routine produces something interesting looking when you've exchanged keys, but there's no gaurantee that it's not just using the default encryption key or something. I'll need to think about that bit some more.

    (I've developed a new way of working at home which is very nice. I leave the work laptop and external hard disk on my desk, and then I can wander around the house with my personal laptop. The personal laptop has wireless and runs at a much higher resolution, which means I get more screen space for hacking. I use remote desktop protocol to get to the work machine so that I am still using the right version of the compiler and everything. It's quite liberating.)

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


The A team

    One of the delights of pay TV is that occassionally they dig up an old show I used to love. As a kid, I was totally enarmoured by the A-Team. Mr T was just so cool. Anyways, Foxtel is reairing the series on TV1, so I couldn't resist having the TiVo record one for me.



    Now, it turns out that like every other show I've watched recently which I liked as a kid, it's crap. Very crap. It did provide an interesting demonstration of how the video player software I am using works though... Initially I just did a screen dump to get the frame above. Here's what I got:



    Note the blank spot where Mr T should be. That's because the video player is getting the video card to overlay the video, instead of doing it all at the X Window level.

    How about some more A team goodness...








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


Microsoft Security Symposium



    Went to the second Microsoft Security Symposium and developer thingie on Friday last week. To be fair, I must say that they're still the only major vendor who has booked out the national convention center for a day (twice) to tell people that their products are insecure, and how they're working on it.

    It's a pleasant breeze of corporate honesty. I think Robert Scoble needs to realize that when a company has acted in a manner so hostile to other companies (for example crushing Netscape), it might take some time for people to trust them again.

    It would be nice if there was more of a focus on non-web developers at the Microsoft developer events though. Apparently there will be slides online sometime, but I can't find them on the event page.

    That Dr Jesper dude in the photo above was cool. Mainly because he clearly knew his stuff, and still had a sense of humour about securing your network -- anyone who calls HTTP the "universal firewall traversal protocol" has to be good.

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


Foxtel digital

    Well, Foxtel Digital finally got installed after a six month wait on Thursday last week. The installer was really nice (apparently the delay in install is because they only have 13 people doing installs in Canberra), and the install took about an hour and a half.

    The problem is now I have to relearn what my favourite channels are. The Nick Jr channel looks to be a winner though.

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


Sat, 19 Jun 2004



20040618

posted at: 01:20 | path: /events/pictures/20040618 | permanent link to this entry


Wed, 16 Jun 2004



The win32 API is dead

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


Tue, 15 Jun 2004



Playing with gradients with libmplot

    I need to paint some gradients for some code I'm playing with at the moment, so I've been trying to decide how to tweak libmplot to do gradients. I think Bezier curves might be working for me. Whatcha think?













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


Mon, 14 Jun 2004



How many news stories about breasts can you read in one day?

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


The things I aim to finish this week

    COMP3310 marking continues -- I'm most of the way through looking at people's part one implementations. I'll then move onto looking at everyone's part two implementation. Thankfully most people didn't do part three, which will make that a lot easier to mark. I still haven't come up with a list of criteria that I will be marking for with parts two or three. I'll let you know when I have one.

    OLS 2004 are currently working out the schedule for the conference and it's looking pretty sweet. It looks like my tutorial on userspace filesystems using FUSE will take about two hours of talking, which is less time that I asked for. That's probably a good thing, because I was starting to get worried that people might get bored with the tutorial if I waffled on for three hours. It also means that there is less content for me to write :).

    They are insane though. The programme starts at ten in the morning, and runs through until nine at night. That's 11 hours with only two hours of breaks in the day. Wow. It is consistent with last year though...

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


Java has lost it's way

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


Sun, 13 Jun 2004



Another reason to dislike gmane

    I just found this in one of my spam buckets:
      Michael Still <mikal-XfxbtgnDfV9BDgjK7y7TUQ@public.gmane.org> writes:
      
      
      >> The June CLUG programmers SIG meeting is next Thursday night (10
      >> June 2004) at 7pm in room N101, on the ground floor of the Computer
      >> Science and Information Technology building at the ANU.
      
      
      How many people typically turn up?
      


    This annoys be because I feel that gmane has no right to rewrite my email address like this. As the administrator of stillhq.com, I get a lot of dictionary attack email, which all gets marked as spam. Basically, any email delivered to me from an email address I don't know about, is marked as spam.

    I can't think of any technically valid reason that gmane would want to be mangling my email address like this. If you're wanting to email me. Use my real email address please.

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


Sat, 12 Jun 2004



COMP3310 assignment two marking

    So, I've spent a lovely couple of days marking the COMP 3310 assignment two submissions in my bundle. The assignment was to write a proxy for PostgresSQL (a relational database) in java. This proxy is to be used for firewalling of users from the database server, and access control list style control of what SQL commands a user is allowed to execute on the server. It was to be implemented in Java (I've never been a big fan of Java, I just don't see the point in the language -- I'm happy for you to try to convince me of it's worth though).

    So far I've only looked at part one, but here's some things I expected people to have done:
    • The proxy to run without a configuration file using those defaults
    • A small simple select to work
    • The proxy to not crash if the user gives a bad password
    • A large select (5.5 million rows returned) to work
    • Three simultaneous large selects to work
    • The coding style used not to horrify me
    • Some form of commenting


    That's not everything, but it's a set of hints however. I'll let you know my thoughts about marking part 2 when I have some.

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


Will went wireless

    I note a blog post from Will about having gone wireless. I wonder how he's going to deal with the security aspects. My personal solution is something along the lines of sticking my head in the sand. I don't pay for Internet traffic, so I route web and ssh traffic out from my wired network to the Internet without any attempt to control it. Effectively the wireless traffic is as trusted as traffic which came from the Internet.

    You have to be running a VPN client to get onto my wired network however.

    The logic behind this is that WEP and MAC address locking are both so hideously broken that they just bring a false sense of security. It's better to know that you're at risk, than to feel safe when you're not.

    If this slowed down my own surfing I might reconsider, but I don't think anyone has ever noticed the free wireless in my little part of Canberra.

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


Fri, 11 Jun 2004



Are you email bankrupt?

    Lessig has just declared himself email bankrupt. I have to sympathise with him... It feels really wrong to have someone go to the effort of emailling you, and then not taking the time to reply. The problem being of course that I have no hope of replying to all the mail I get each day, and still getting anything productive done.

    I'm sorry if you've mailed me an been ignored. Sometimes it's because I forgot to, didn't notice your mail, my spam filters ate it, or you really should Google before mailling me.

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


Referrer spam

    So, if you're bored, checkout the referrer spam on Rasmus Lerdorf's toys page. It's pretty blatant when the top half of the referrer list are porn sites of one form or another. I've never looked at the referrer logs for this site. I wonder if I'm experiencing some sort of attempt at this too?

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


Wed, 09 Jun 2004



Don't share your experiences

    So, I've been getting a bunch of mail from shareyourexperiences.com, claiming that someone is offering to bad mouth me. It turns out that this is a scam. My spam filters have been tweaked accordingly -- perhaps you should consider doing the same.

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


Mail still constipated, COMP 3310 marking

    Well, mail still appears to be constipated. The ISP is looking into it, but they don't seem to be having a lot of joy. On another note I really have to start thinking about marking COMP 3310 assignments. I've been distracted with Matthew being in hospital with asthma. The kids seem to be taking it in turns at the moment to have asthma attacks...

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


Tue, 08 Jun 2004



Outgoing mail constipated

    It would appear that my ISP is having some troubles delivering mail, as their virus scanner keeps locking up. I just looked, and they have something like 23,000 emails in their queue waiting to be delivered. Apparently there is yet another Windows virus going around which is hitting them pretty hard.

    If you're expecting mail from me and it hasn't got through, patience is probably advised for the moment. Sorry for any inconvenience.

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


There's something about Japanese

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


Mon, 07 Jun 2004



Siemens SL42

    I picked up my Siemens SL42 in September 2002 (ish). At the time it was attractive because of the MMC slot which meant that the built in MP3 player could have some space to store music. The screen was never very special, but apart from that it was a nice phone. I have a policy of not buying Nokia or Ericcson any more, as I have always found them unreliable, and the manufacturers appear to have no pride in their products. Take the Nokia 8210 for instance -- mine went through three screens, and everyone I know with one had similar experiences, but there was never a product recall.

    The SL42 finally gave up the ghost earlier this year, so I just bought a new phone, which I'll discuss in a later entry once I've charged the battery and had an initial play.

    I also need to learn how to extract the phone book data of my MMC card without being able to power up the phone any more.


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


Sat, 05 Jun 2004



Saturday happened

    For once I got a fair bit done yesterday. It ranged from hanging a new curtain in the boy's bed room to working on the tutorial for OLS (which I am starting to feel a little tension over), to looking at some code I wrote ages ago and which needs more love.

    Now, if only I can keep on some sort of productive roll all weekend. It might not be helped by the funky gastro bug which Matthew pickup up last night.

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


Tue, 01 Jun 2004



MSDN Connection

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


Microsoft's CryptoAPI implements Diffie Hellman Key Exchange

    So, my task for the day is to implement Diffie Hellman Key Exchange. Despite not being inadequate, I am having a lot of trouble finding examples of how to use the PROV_DSS_DH provider to implemented CALG_DH_EPHEM... I figure that only mugs implement their own implementation of such things if they can humanly avoid it (that seems to be asking for a security bug later), so I really want to use the OS services which implement this.

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


Sun, 30 May 2004



Snowy Hydro SouthCare rescue helicopter fundraising dinner

    Catherine and I went to the SouthCare fundraising dinner on Saturday night on the TOWER Software table. It was fun, although the Las Vegas theme with an Elvis impersonator was a little over the top...



    They ended up raising heaps of money for the SouthCare helicopter, and as Matthew was a candidate for it's services that seemed like a good thing to happen. There was one particular painting which I would have liked to win at the auction, but someone from work's wife won it instead... Perhaps I can ask for visitation rights.

posted at: 23:05 | path: /diary | permanent link to this entry


20040529

posted at: 22:20 | path: /diary/pictures/20040529 | permanent link to this entry


20040529

posted at: 22:20 | path: /matthew/pictures/20040529 | permanent link to this entry


20040530-southcare

posted at: 16:49 | path: /events/pictures/20040530-southcare | permanent link to this entry


Mon, 17 May 2004



Variable argument lists in C#

    These would be called varargian functions in C... It turns out they're possible with C#. Check it out:

      using System;
      using System.Text;
      
      namespace varargs
      {
      	class Class1
      	{
      		[STAThread]
      		static void Main(string[] args)
      		{
      			Console.WriteLine(printf("This %s a %s string", "is", "format"));
      		}
      
      		// The worst printf ever written
      		static string printf(string format, params object[] args)
      		{
      			int idx = 0;
      			bool insideFormatChar = false;
      			StringBuilder result = new StringBuilder();
      
      			for(int i = 0; i < format.Length; i++)
      			{
      				if(insideFormatChar)
      				{
      					if(format[i] == '%') result.Append("%");
      					else result.Append(args[idx++].ToString());
      					insideFormatChar = false;
      				}
      				else if(format[i] == '%') insideFormatChar = true;
      				else
      				{
      					result.Append(format[i]);
      				}
      			}
      
      			return result.ToString();
      		}
      	}
      }
      


posted at: 23:05 | path: /dotnet | permanent link to this entry


Variable argument lists in C#

    These would be called varargian functions in C... It turns out they're possible with C#. Check it out:

      using System;
      using System.Text;
      
      namespace varargs
      {
      	class Class1
      	{
      		[STAThread]
      		static void Main(string[] args)
      		{
      			Console.WriteLine(printf("This %s a %s string", "is", "format"));
      		}
      
      		// The worst printf ever written
      		static string printf(string format, params object[] args)
      		{
      			int idx = 0;
      			bool insideFormatChar = false;
      			StringBuilder result = new StringBuilder();
      
      			for(int i = 0; i < format.Length; i++)
      			{
      				if(insideFormatChar)
      				{
      					if(format[i] == '%') result.Append("%");
      					else result.Append(args[idx++].ToString());
      					insideFormatChar = false;
      				}
      				else if(format[i] == '%') insideFormatChar = true;
      				else
      				{
      					result.Append(format[i]);
      				}
      			}
      
      			return result.ToString();
      		}
      	}
      }
      


posted at: 23:05 | path: /diary | permanent link to this entry


Back in the land of the bandwidth

    After a six month trip in the land of the 56k modem, I have DSL again. This is after Telstra kindly agreed to increase the range of the ADSL kit their using so that I could get coverage. How nice of them to let me buy a product!

posted at: 22:05 | path: /diary | permanent link to this entry


Who would you send to dog island?

    I found the following whilst surfing trying to find out what on earth the lyrics to "Who Let the Dogs Out" by the Baha Men is talking about...

    "...For years human beings have owned other human beings. This was called slavery. During times of slavery, slave owners talked about the difference between treating their slaves in a "good" way and in a "bad" way. The issue was never, should we or should we not own slaves. For a more detailed discussion of this notion, see Valerie Martin's book Property. You'll find it to be an eye-opener.

    The same issues apply to us, in this 21st century. We have conditioned our lovely canine friends to live under our rules. They are used to it, yes. They have learned to love us anyway, yes. But it is not right, no. Dogs should live free, should live lives unfettered by humiliation due to forced public defecation and having to walk on a leash."


    Should we send you to Dog Island?

posted at: 22:05 | path: /diary | permanent link to this entry


Sat, 15 May 2004



DSE WebCam with Microphone

    Bob Edwards picked up a Dick Smith web cam a little while ago. It was interesting because we've both been looking for OV511 based web cams for a while after I picked up a nice on on holidays in Perth -- I haven't been able to find a supplier since. This new camera is an interesting one for a couple of reasons:

    • It's OV519 based
    • It speaks JPEG natively (and therefore doesn't work with video4linux)
    • It's cheap (about $60 Australian)
    • The driver only works with Linu 2.4 kernels at the moment
    So here I am on a Sunday evening, in my office at ANU fiddling away. I've had this camera on my TODO list for a little while, so I have some code already. The basic approach I am taking is to take the 2.4 driver which outputs JPEG files, and write a little user space daemon which decompresses these, and then reinserts the images into the video4linux system so that other applications can still use the camera.

    I'm standing on the shoulders of giants here, because there is already a driver, there is sample code for the reinjection (from the dude who wrote Motion), and JPEG decompression still pretty well understood. So far I have a user space application which reads a frame from the camera and sticks it in a file on disc. I just have to solve the reinjection problem now...

    The images aren't too amazing. Here's a sample:



    It's pretty hard to focus at the moment because it's getting dark outside. This might not be the best image quality the camera is capable of...

    Playing with vloopback, the following sites are of interest:



    To be continued...

posted at: 23:05 | path: /diary/toys | permanent link to this entry


Mon, 10 May 2004



The pain of productivity

    So, with my ISP offline, a bunch of my distractions for the day just went away. This is a good thing, because it means that I have to get more work done. I've been feeling a little how Joel describes recently. I suspect that the problem for me is that the Open Source world doesn't seem to be moving as fast as it was a couple of years ago, and the honeymoon is over to a certain extent.

    I'm kinda slipping into the daily grind at work as well. It's easier to predict now what a given day will bring, which reduces the excitement one can throw at a new problem.

    I think part of the problem for me is that I entered the industry in 1996 -- during the recent unpleasantness called the "dotcom". This is my first industry downturn, which make it a little harder than it actually was. Now that things seem to be picking up a little, hopefully the world will get a little more fun again.

posted at: 13:05 | path: /diary | permanent link to this entry


Offline

    My ISP was lucky enough to have one of their machines taken by a hacker, which has resulted in incoming email, outgoing email, and the webserver which serves this site from being offline. Oh well.

    If you mailed me after 3pm AEST (GMT + 10) Monday, and your mail didn't get through, then you should try again once this website works better.

posted at: 13:05 | path: /diary | permanent link to this entry


Sat, 08 May 2004



Read me

    I have to close my browser, but want to remember to read these:

    • http://www.opticsexpress.org/abstract.cfm?URI=OPEX-11-5-460
    • http://www.space.com/scienceastronomy/planetearth/astrobio_rocks_030331.htm


posted at: 16:05 | path: /diary | permanent link to this entry


libmplot tweaks

    For my PhD I'm playing with methods of determining what compression algorithm is applied to raster image data algorithmically. For that I needed to generate a bunch of test images. I've put some performance enhancements into the CVS version of libmplot to assist with that.

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


Fri, 07 May 2004



New laptop (an IBM R51)

    I'm writing this on my new IBM ThinkPad R51, which arrived about half a week before they said it would, and only about 10 days after I ordered it. I thought that was pretty impressive service for a model so new that they didn't have any of them in the country yet when I ordered it. Anyways, some dirt on the machine... It's an 1829-EBM, which is distracting to anyone who has two young children -- EBM is short for "Expressed Breast Milk" to parents of young children. It's got a 1.7Ghz Pentium M (Centrino), a gig of RAM, and a 60 GB hard disk. There's 802.11a, 802.11b, and 802.11g, all done with an "IBM miniPCI card, which reports itself as a "Atheros Communications, Inc. AR5212 802.11abg NIC" in the lspci output below:
      challenger:/home/mikal# lspci
      0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03)
      0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03)
      0000:00:1d.0 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #1 (rev 01)
      0000:00:1d.1 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #2 (rev 01)
      0000:00:1d.2 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #3 (rev 01)
      0000:00:1d.7 USB Controller: Intel Corp. 82801DB (ICH4) USB2 EHCI Controller (rev 01)
      0000:00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 81)
      0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01)
      0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
      0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBM (ICH4) SMBus Controller (rev 01)
      0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 01)
      0000:00:1f.6 Modem: Intel Corp. 82801DB (ICH4) AC'97 Modem Controller (rev 01)
      0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 Lf [Radeon Mobility 9000 M9] (rev 02)
      0000:02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
      0000:02:00.2 FireWire (IEEE 1394): Texas Instruments: Unknown device 802a (rev 01)
      0000:02:01.0 Ethernet controller: Intel Corp. 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
      0000:02:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
      challenger:/home/mikal# 
      


    Let's work through the features of the laptop, and I'll tell you if they work yet...

    Video

    The machine has an amazing 1400 x 1050 LCD display. I've been used to the micro-laptops that I've been using for the last few years, and this is the first laptop I've ever owned which can do more than 1024 x 768. It's taking a little time to get used to my eye having to move horizontally to see an entire line of text. The display is amazingly crisp, and X worked almost instantly (Debian Unstable) without any fiddling. I'm using version 4.3.0.dfsg.1-1 of XFree86, where I suspect that the dfsg is a Debianism. I've put the XF86Config-4 file online for other people's reference. I used the ATI driver.

    Xine produces very nice output in fullscreen mode -- it's a lot nicer than my Grundig TV.

    Audio

    I use 2.6, so I've got ALSA configured on the machine. This machine uses the same sound driver as the Dell D400 I was using before this machine. Select "Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111" from the ALSA PCI drivers menu in the kernel config.

    Sound just works. Remember that ALSA defaults to all the volume levels being turned down at first, so you'll need to turn the sound up for noise to come out of the machine. The best feature of the Intel AC97 sound chipset is that finally I can control the headphone volume separately from the speaker volume. That's very handy, as I hardly ever use the speaker.

    Unfortunately, the ThinkPad displays the same behaviour as my old X21 -- plugging in the headphones disabled the speakers, and the headphone volume control seems to be ignored.

    There is no line out jack, but I never use that anyway.

    Networking

    The wired network card is a an Intel Pro 1000 gigabit card. Use the e1000 driver, and all is good. I haven't got the wireless network card working yet, as I've only owned the machine for a day... I'll let you know when I have more to say on that point.

    Update: There is a driver for the wireless card called "madwifi"... It just works.

    Modem

    I don't use it, so I don't know.

    Expansion

    2 USB 2.0, Firewire, 2 PCMICA slots, S Video, parallel port (that one surprised me), external VGA, and docking station hole.

    DVD / CD / CD-ROM

    I've only used this to install the system, so I don't know if it works well yet. I'll get back to you on that one.

    Other stuff

    Well, I can't think of anything else about the machine to mention, apart from the fact that the machine ships with a nipple (which I've always prefered, and is the normal ThinkPad thing to do), but it's bigger and rubbery. It's actually a lot nicer to use. It also comes with a touchpad like the Apple and Dell machines. I hate these, but I know other people like them, so it's worth mentioning. I must also say that the keyboard is very nice, much better than the Toshiba, Acer, and Dell keyboards I've used recently. It's also very close to full size because there is a lot of space for a keyboard for once. Very nice to type on.

    The battery is huge (it protrudes out the back of the machine), and the machine is a little heavy at 3.147 kilos. It doesn't fit in my old laptop bag, but IBM gave me a new one in their wisdom. I don't know about my backpack yet.

    Update: ACPI S3 hybernation (suspend to RAM) now works for me, even in X Windows! (23 July 2004)

    So, after a very satisfying session with Len Brown from Intel at OLS, S3 suspension of the machine now works. What did I need to do to make it happen? Well, I used the latest 2.6 kernel bitkeeper snapshot (which will become 2.6.9, which isn't out yet), and applied this patch, which will make it into the mainline kernel sometime soon, and then just compiled.

    Everything just worked then if I do a:

      echo 3 > /proc/acpi/sleep
      


    ...and wakeup works by default. All you need then is a script in /etc/acpi/ to do the echoing when you shut the lid. I used these dodgy scripts:



posted at: 23:05 | path: /diary/toys | permanent link to this entry


Wed, 05 May 2004



CeBIT

    My employer had a stand at CeBIT Sydney, so a car full of us developer types went up to have a sticky beak. It wasn't really what I was expecting -- the only other similar thing I had been to was MacWorld about 10 years ago -- but was quite worthwhile. It's amazing the amount of wireless hardware out there that people are pushing. It felt like about a quarter of the vendors there were selling wireless hardware of some form. I didn't count the stands, but the telecomms area of the show was huge.

    There were a lot of Windows machines there too. The only obvious Linux vendor I could find was a little booth in one of the corners. It was good though, it's the first time I've seen Lindows / Linspire in the flesh. It's a pretty blatant clone of Windows if you ask me.

    My travel for OLS has been approved. Now to book some flights.

posted at: 17:05 | path: /diary | permanent link to this entry


Tue, 04 May 2004



I have so been saying this since Fedora was announced...

    Seen on a Debian mailling list, copied from a RedHat list.
      --- BEGIN IRC LOG ---
           <rh_pr> We are announcing Red Hat Project! A community-based
                   distribution!
       <oss_crowd> rh_pr: Neat.
          <rh_dev> rh_pr: Uh... I'm not ready.
                 * rh_pr is away: promoting rhel
       <oss_crowd> rh_dev: what do we do?
          <rh_dev> oss_crowd: I'm not sure.
        <rh_legal> rh_dev: don't do anything until I say it's ok.
       <oss_crowd> rh_dev: what can we do to help with Red Hat Project?
          <rh_dev> oss_crowd: uh... file bugs and help test things.
       <oss_crowd> rh_dev: didn't we always do that?
        <rh_sales> hey, all, if you really want a stable system, don't use
                   fedora project. It will eat your brane. Buy RHEL instead.
          <rh_dev> rh_sales: stfu
               --- rh_pr removes voice from rh_sales
       <fedora_us> hey, all, check out our neat community-driven system for
                   red hat development
       <oss_crowd> fedora_us: ooooh!
           <rh_pr> fedora_us: I like your name
               --- fedora_rh joined the channel
        <rh_legal> much better
           <rh_pr> We are announcing Fedora Project! A community-driven
                   distribution!
       <oss_crowd> rh_pr: Neat!
                 * fedora_rh waves
       <fedora_us> I'm not dead yet.
       <fedora_rh> fedora_us: don't confuse things.
       <fedora_us> fedora_rh: does this mean we're merging?
       <fedora_rh> fedora_us: maybe
        <rh_legal> fedora_rh: don't do anything until I say it's ok.
               --- fedora_us joined #limbo
       <oss_crowd> fedora_rh: so, what can we do to help?
       <fedora_rh> oss_crowd: uh... file bugs and help test things.
       <oss_crowd> sigh... didn't we always do that?
       <fedora_rh> oss_crowd: I know, let's all go in the circle and say our
                   names.
                 * oss_crowd goes in the circle and says their names. This
                   lasts several months.
       <fedora_rh> So, there will be the following features in the next
                   release of Fedora Core.
       <oss_crowd> Uh... Hold on. Who gets to decide?
        <rh_sales> We do. That stuff will be neato for RHEL-4.
       <oss_crowd> MMkay, then. When do _we_ get to suggest things?
       <fedora_rh> oss_crowd: feel free to talk among yourselves.
                 * oss_crowd talks among themselves about new features.
       <fedora_rh> btw, feature X will be disabled in the release.
                 * oss_crowd glares at fedora_rh
       <oss_crowd> fedora_rh: nice of you to tell us while we were sitting
                   here talking.
          <rh_dev> oss_crowd: sorry, it's just not happening.
       <oss_crowd> rh_dev: when do we get to decide what's happening?
          <rh_dev> oss_crowd: Dunno, I'll ask rh_legal
        <rh_legal> rh_dev: ugh, /msg me
        <rh_sales> rh_dev: let's not do anything rash here.
                 * fedora_us gets tired of sitting in #limbo
       <oss_crowd> fedora_rh: I want to see more of the "community" part of
                   the whole "community-based" thing
       <oss_crowd> rh_dev: how about at least a publicly accessible CVS/SVN
                   tree?
          <rh_dev> oss_crowd: Yeah, that would be cool.
       <oss_crowd> rh_dev: finally, some movement. When is that going to be
                   up?
                 * rh_dev is away: talking to rh_legal
                 * oss_crowd tries to occupy themselves and do things like
                   fedoranews and fedorapeople.
       <oss_crowd> Uh... ping?
       <fedora_uh> oss_crowd: what's up?
       <oss_crowd> fedora_rh: We're feeling kinda useless. What exactly is our
                   role, again?
       <fedora_rh> oss_crowd: well, it would be really helpful if you could
                   test some things and file the bugs.
       <oss_crowd> fedora_rh: ugh. We ALWAYS did that.
                 * oss_crowd begins to wonder what exactly is the purpose of
                   fedora_rh
       <fedora_rh> oss_crowd: it's the open-development, proving-grounds for
                   new technology component of Red Hat, as opposed to RHEL.
        <rh_sales> Told ya it'll eat your brane.
               --- rh_pr kicks rh_sales from the channel (you're a dolt)
       <oss_crowd> fedora_rh: so, let me get this straight. Effectively, you
                   want us to download the packages you release, test things,
                   file bugs, and submit patches.
       <fedora_rh> oss_crowd: Sure, why not?
       <oss_crowd> ...but when it comes to things like features, direction of
                   the project, and which software to include in the
                   distribution, it's the decision of Red Hat?
                 * fedora_rh is away: I AM RH
       <fedora_us> I'm still not dead.
       <oss_crowd> fedora_rh: How is that different from how things were
                   before the whole "publicly-supported distribution" thing?
       <oss_crowd> rh_dev: where is that long-promised public CVS/SVN repo?
          <rh_dev> dunno, talk to fedora_rh
       <fedora_rh> oss_crowd: look, such things don't happen in a week, ok?
       <oss_crowd> IT'S BEEN A YEAR!
               --- rh_sales joined the channel
        <rh_sales> EAT YOUR BRAAAAAANE.
       <oss_crowd> /mode +b rh_sales
               --- You're not ops in here.
       <oss_crowd> figures
      --- END IRC LOG ---
      


posted at: 03:05 | path: /diary | permanent link to this entry


Great moments in parenting

    Brushenator the tooth Cleanser and Mr Scrubby just helped Andrew clean his teeth. He enjoyed it.

    On the parenting front, Kristy, a friend of mine is starting a parenting information website. I put in a suggestion that more Bananarama quotations were needed on the site (I'm that kind of helpful guy). Here's the response I got:

      Dear Mikal
      
      Thank you for contacting the Baby Steps customer service team through our
      feedback option.  We have spent considerable time deliberating how to include
      your suggestion into a web site created for meeting the needs of babies who
      will never really comprehend the life impact that Bananarama had on the lives
      of their parents.  
      
      It has also been suggested that bringing child to a level where they relate to
      their parent's experience could be dangerous and will affect natural
      communication development.  This is particularly so in the case of adolescent
      behavioural tendencies.  Who know's what may happen when a teenager no longer
      feels that they can yell, "You don't understand me!" at their parents?
      
      However, should there be further feedback from others on this need for more
      Bananarama content we will be sure to revisit the matter and seek futher input
      from our resident psychologist.
      
      Thank you for your feedback.
      
      
      With kind regards from
      The Baby Steps Customer Service Team
      


    Finally! Someone willing to listen to my suggestions! When the site is finished, it will be www.babysteps.com.au.

posted at: 03:05 | path: /diary | permanent link to this entry


Sun, 02 May 2004



So much hardware goodness

    So, my TiVo arrived today. Sweet. I've also been thinking about my disc problems, and how to get a lot more disc onto my NAS machine at home without spending rediculous amounts of money. I ended up decided that external firewire was the way to go. I'm thinking an external mini tower case, with a bunch of something like this, or something from here might be the go.

posted at: 22:05 | path: /diary | permanent link to this entry


Tue, 27 Apr 2004



Back into image coding

    It's been a long time since I have written any serious imaging code -- basically since I started my current job I simply haven't had the time, and have found other coding persuits to be more interesting. Hence the handover of Panda to Evan.

    This last weekend though I had a good reason to start caring about images again. The experimental ov519 driver for Linux which is out there is a bit odd because the driver delivers JPEG compressed data through the /dev/video[0-9]+ device file. This is because that's what the underlying hardware does. This doesn't match the requirements of the published video4linux interface however.

    I've therefore whipped up a minimal video4linux application which twiddles the ioctls, reads the JPEG compressed data, and then decompresses it. Well, that's the theory at least -- the in-memory decompression is this afternoon's task, and I haven't finished it yet.

    The next step after that is a simple kernel module which takes the decompressed data from user space, and offers it back up via a video4linux device file. That means that all the video4linux applications which you have grown to love will continue to work, new applications can be written that know about JPEG, and the decompression doesn't have to be done in kernel. It appears that the dude who wrote motion has a simple kernel module which I can leverage as well.

    Very cool, and it's nice to make some visible progress for once.

    On the work front, we've stopped design on my latest project, and started coding. It feels really good to actually get to write some code for once, and my moral is improving. The first milestone was met today, basically on time...

    On the organizations front, LCA 2005 seems to be progressing well (given that we're just less than a year out from the conference now), there's lots happening with Linux Australia regarding the Free Trade Agreement with the US and other things, and AUUG is progressing with getting their annual conference under way. I need to chase some AUUG issues up regarding contacting Australian computer science departments to let them know about the conference, but I'll be looking into that this evening.

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


Back into image coding

    It's been a long time since I have written any serious imaging code -- basically since I started my current job I simply haven't had the time, and have found other coding persuits to be more interesting. Hence the handover of Panda to Evan.

    This last weekend though I had a good reason to start caring about images again. The experimental ov519 driver for Linux which is out there is a bit odd because the driver delivers JPEG compressed data through the /dev/video[0-9]+ device file. This is because that's what the underlying hardware does. This doesn't match the requirements of the published video4linux interface however.

    I've therefore whipped up a minimal video4linux application which twiddles the ioctls, reads the JPEG compressed data, and then decompresses it. Well, that's the theory at least -- the in-memory decompression is this afternoon's task, and I haven't finished it yet.

    The next step after that is a simple kernel module which takes the decompressed data from user space, and offers it back up via a video4linux device file. That means that all the video4linux applications which you have grown to love will continue to work, new applications can be written that know about JPEG, and the decompression doesn't have to be done in kernel. It appears that the dude who wrote motion has a simple kernel module which I can leverage as well.

    Very cool, and it's nice to make some visible progress for once.

    On the work front, we've stopped design on my latest project, and started coding. It feels really good to actually get to write some code for once, and my moral is improving. The first milestone was met today, basically on time...

    On the organizations front, LCA 2005 seems to be progressing well (given that we're just less than a year out from the conference now), there's lots happening with Linux Australia regarding the Free Trade Agreement with the US and other things, and AUUG is progressing with getting their annual conference under way. I need to chase some AUUG issues up regarding contacting Australian computer science departments to let them know about the conference, but I'll be looking into that this evening.

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


Wed, 21 Apr 2004



My poor TiVo

    The three week old Seagate disk in my TiVo died yesterday. I'm picking up the replacement disk today:

    Apr 21 17:52:57 (none) kernel: IDE: calling handler with 
    dma_running, altstat=0x51
    Apr 21 17:52:57 (none) kernel: IDE: read command for sector 3299234 
    bailed with DMA running
    Apr 21 17:52:57 (none) kernel: hda: unexpected_intr: status=0x51 { 
    DriveReady SeekComplete Error }
    Apr 21 17:52:57 (none) kernel: hda: unexpected_intr: error=0x40 { 
    UncorrectableError }, secCnt=26, LBAsect=3299336
    Apr 21 17:52:57 (none) kernel: Stopping immediate on Ide
    Apr 21 17:52:57 (none) kernel: hda: tivo_dma_intr_direct: status=0x51 
    { DriveReady SeekComplete Error }
    Apr 21 17:52:57 (none) kernel: hda: tivo_dma_intr_direct: error=0x40 {
     UncorrectableError }, secCnt=26, LBAsect=3299336
    


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


Tue, 20 Apr 2004



AU / US FTA

    Had a very productive meeting with a gentleman from the Department of Communications, Information Technology and Arts about the intellectual property provisions of chapter 17 for the free trade agreement. It seemed to be quite a worthwhile meeting, which was nice.

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


Sun, 18 Apr 2004



A busy few days

    Well, I've had a busy few days. I had breakfast with the Australian olympic men's hockey team, had a paper accepted for OLS, and finished building the pantry in my kitchen. More details as they come to hand.

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


Sat, 17 Apr 2004



video4linux

    Playing with my own video4linux image displayer so that I can twiddle ioctls with devices I am testing.

posted at: 03:04 | path: /linux | permanent link to this entry


CVS repository

posted at: 02:04 | path: /panda/panda-development | permanent link to this entry


Wed, 14 Apr 2004



Panda 0.5.4 released

    (Evan has taken over maintaining Panda, although I will be dropping in from time to time to add code still)

    Subject: [panda-development] Panda-0.5.4 Released
    Date: Monday 12 April 2004 11:28 pm
    From: Evan Nemerson 
    To: panda-development@lists.sourceforge.net, panda-users@lists.sourceforge.net
    
    Hi everyone,
    
    I've just released Panda-0.5.4 via Savannah and SourceForge. I will make an
    announcement via Freshmeat as soon as the files are available via stillhq.com
    
    The release can currently be downloaded from:
    	https://savannah.nongnu.org/projects/panda
    	http://www.sourceforge.net/projects/panda
    
    As you may already be aware, the most important change in 0.5.4 is that the
    library is now available under the terms of either the GPL or LGPL (your
    choice). In order to accomplish this, the TDB code was removed, and either
    Enlightenment DB or Berkeley DB (version 4) must be linked to in its place.
    
    Other changes include the addition of link annotations (internal and
    external), pkg-config support, and an RPM. The main point of this release,
    however, was the licensing issue.
    
    The time has begun to begin thinking about the next release of Panda, and
    though I do not have a time frame, I do have a few features I'd like to
    implement:
    
    *	Improved font handling, using FreeType. I would like to be able to embed
     and use arbitrary fonts, supporting line and page wrapping of text boxes.
     *	Support XMP metadata, noteably Creative Commons licensing data.
    *	Bindings for different languages, such as PHP, Python, etc.
    *	Comprehensive documentation, using DocBook XML
    *	Stronger Windows support
    
    If you have any other ideas you would like to see integrated within the
    library, please send a message to panda-development@lists.sourceforge.net
    


    The files for this release can be found at:



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


Panda 0.5.4 released

    (Evan has taken over maintaining Panda, although I will be dropping in from time to time to add code still)

    Subject: [panda-development] Panda-0.5.4 Released
    Date: Monday 12 April 2004 11:28 pm
    From: Evan Nemerson 
    To: panda-development@lists.sourceforge.net, panda-users@lists.sourceforge.net
    
    Hi everyone,
    
    I've just released Panda-0.5.4 via Savannah and SourceForge. I will make an
    announcement via Freshmeat as soon as the files are available via stillhq.com
    
    The release can currently be downloaded from:
    	https://savannah.nongnu.org/projects/panda
    	http://www.sourceforge.net/projects/panda
    
    As you may already be aware, the most important change in 0.5.4 is that the
    library is now available under the terms of either the GPL or LGPL (your
    choice). In order to accomplish this, the TDB code was removed, and either
    Enlightenment DB or Berkeley DB (version 4) must be linked to in its place.
    
    Other changes include the addition of link annotations (internal and
    external), pkg-config support, and an RPM. The main point of this release,
    however, was the licensing issue.
    
    The time has begun to begin thinking about the next release of Panda, and
    though I do not have a time frame, I do have a few features I'd like to
    implement:
    
    *	Improved font handling, using FreeType. I would like to be able to embed
     and use arbitrary fonts, supporting line and page wrapping of text boxes.
     *	Support XMP metadata, noteably Creative Commons licensing data.
    *	Bindings for different languages, such as PHP, Python, etc.
    *	Comprehensive documentation, using DocBook XML
    *	Stronger Windows support
    
    If you have any other ideas you would like to see integrated within the
    library, please send a message to panda-development@lists.sourceforge.net
    


    The files for this release can be found at:



posted at: 19:04 | path: /panda | permanent link to this entry


Fri, 09 Apr 2004



TiVo video extraction

    I found that the OzTivo 3.0 1.3 release didn't work out of the box, and that I had to upgrade the versions of the mfsstream and mfscat modules that I had installed with TiVoWeb. Then it all just worked. You can find more instructions here.

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


Thu, 08 Apr 2004



Nigerian 419 scam

    Last time I asked Kristy over for dinner, the email started with the subject line "Wanna come over for a hot date?", fear not for my marriage, Catherine was there too. Apparently this nearly set off Kristy's spam filter. Therefore, the only logical conclusion is to try to draft an invitation to dinner which would set off the spam filter. I therefore present:

      ATTN.: President / CEO
      
      SIR,
      
      CONFIDENTIAL PROPOSAL FOR TRANSFER OF TANDORI CHICKEN FROM FEDERAL 
      GOVERNMENT OF NIGERIA THROUGH NCTC ACCOUNT
      I presume this letter will not be of a surprise to you.
      
      Your company was introduced to me by International Chambers of 
      Commerce and Industries, but this business was not disclosed to 
      Chambers of Commerce and Industires.
      
      I am LARRY TOFUALOTOYOU an employee of Federal Government of Nigeria 
      owned Coporation, Nigeria Chicken Tandori Corporation (NCTC).
      
      Few years ago, the Federal Government of Nigeria instructed the 
      corporation (NCTC) to award contracts on behalf of Government for 
      building of a Refinery in the Northern part of Nigeria. In respect of 
      the above, I and three of my co-employee of Nigerian Chicken tandori 
      Corporation was appointed as the contract awarding committee of the 
      corporation (NCTC) to deliberate on the best foreign companies to 
      handle the building of the Refinery, after much deliberations within 
      the members of the committee, the contracts was awarded to some 
      foreign firms to carry out execution of the projects, but before 
      awarding this contracts, the four members of the contracts awarding 
      committee have secretly agreed to over-inflate the actual contract 
      value with the tune of ONE DINNER AT MY HOUSE which we shall use a 
      reliable foreign company to claim.
      
      Now, the contract are complete and the actual value has been paid off 
      to the original contractors that executed the building of the 
      Refinery, we have decided to choose your company to act as the actual 
      beneficiary of the over-inflated sume of ONE DINNER AT MY HOUSE. 
      Secondly, your compnay will be front to get all nessesary approvals 
      and formalities that justifies you as the actual beneficiary for the 
      concerned Government Ministrires before the fund will be transferred 
      into your account.
      
      1. You will retain 20% of the total sum transferred into your account 
      for your contribution towards the business.
      
      2. 70% will be for the four Government officials that originated the 
      business.
      
      3. 10% will be set aside for deduction of all the expenses which will 
      be encountered by you and us during the cause of proceszing the 
      nessesary approvals from the Government Ministries for the transfer of 
      the fund into your account.
      
      In you are interested in this transaction, kindly handle the matter 
      with SECRECY and ask for more details by contacting us through the 
      email address is message was sent from.
      
      Best regards,
      
      
      LARRY TOFUALOTOYOU
      


    Hmmmmmmm? The other intesting thing is that I couldn't find a 419 email in my archive of recent spam, I had to web surf to find a sample of the offer and grammar... What happened to them all?

    Next time a Viagra spam!

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


Wed, 07 Apr 2004



Minding the kids at home

    It's pretty hard to get much done when chasing the kids around the house. My big achivement, apart from playing with klife a little is to rediscover frozen yoghurt... It's yummy.

    I'm writing this whilst listening to MP3's in an effort to avoid having to be in the same room as Seventh Heaven. It's just way too cutsey for me. I'm listening to Du Hast. I don't speak German, so I had to surf to find out what on earth I was listening to.

    Lots of interesting things seem to be happening at the moment:

    • The free trade agreement that the Australian government entered into without considering open source at all seems to suck, but there are things you can do about it.

    • There are Microsoft employee blogs popping up all over the place. It makes me wonder if there was an official edict to start blogging, or if a blanket ban was just lifted or something. An example is the Channel 9 blog, which seems to be trying to make Microsoft seem a little more caring and personal. To whit:

        "Channel 9 started as a personal story from one of us about fear of flying. Lenn realized after years of dealing with it, that it was actually a fear of the unknown. The fear was conquered through learning. The more transparency into what it took to fly a plane, the more the fear went away. Lenn got to know pilots who flew planes everyday, and every time he flew he turned on Channel 9 on the in-flight audio system to listen in to the cockpit.

        We think developers need their own Channel 9, a way to listen in to the cockpit at Microsoft, an opportunity to learn how we fly, a chance to get to know our pilots. Five of us in Redmond are crazy enough to think we just might learn something from getting to know each other. Were we wrong? Time will tell.

        Join in, and have a look inside our cockpit and help us fly the plane.

        Welcome to Channel 9.
        "


      It's a pity about all that video on the site. The site seems to have happened because of the how to hate Microsoft from Robert Scoble.

    • Some analysis of what Google appears to be up to. A couple of things occur to me here. I'm told that Google keeps their web search database basically in RAM (cause that was it's nice and fast), and that they have 100,000 machines. The smallest disc you can get these days is around a 20gb, and a Linux install takes around a gig (probably less for a secure machine with everything turned off, but this is back of an envelope maths). That means Google must have around 1,900,000 gig of spare storage to throw at the email storage problem. Wow.


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


Tue, 06 Apr 2004



Playing with Klife

    I've been playing with Mulix's klife code... The talk that goes with the code is here.

    I had to do some hacking to get the code to compile. After that it just worked... The code is nice and clean too, quite readable.

posted at: 19:04 | path: /linux | permanent link to this entry


Mon, 05 Apr 2004



MRD on the FTA

    In the words of MRD:

    "The US-Australia "Free" Trade Agreement (FTA): Linux Australia just released its position paper on the FTA and the negative effect it will have on Open-Source in Australia. This is a very important issue, so if you are in Australia, consider writing a letter to your local member of parliament, submitting something to the senate committee considering this treaty, or raising awareness of the issues in your local IT community. Our mailing list will soon provide details on how you can get involved - but don't wait - the senate committee submission period closes soon."

    Rusty and our independant legal advice think you should care about this issue too.

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


Spending a day at home

    Catherine tore a stomach muscle yesterday afternoon, which means she can't lift the kids -- if she's not careful, she'll end up with a hernia. I taking today off work to look after her and the kids...

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


Sun, 04 Apr 2004



Critical path

    For someone on the critical path I sure don't feel very motivated.

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


Sat, 03 Apr 2004



TiVo!

    Well, a pretty productive day all around. I picked up another workbench for the garage, which brings me to three benches (printer, electronics, and wood working). I also have four full height shelves sets in there now. Once I've got around to putting everything away, I might post some pictures here. I need more storage yet though.

    Had enough free time at last to build a TiVo serial cable, and it's downloading the guided setup schedual information via the wireless card as we speak. I need to remember to buy a solder sucker sometime. I haven't soldered in a while, so I'm pretty happy with how it turned out.

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


Thu, 01 Apr 2004



A day long meeting with a dude from Microsoft, and an essentially useless Slashdot

    Yesterday was spent in a day long meeting with a dude from Microsoft Melbourne named Mark. He was nice, a lot nicer than most of the other people from Microsoft that I've me, who have always struck me as being overly compeditive. We had a good chat about web services and how to implement the one I am working on now.

    Unfortunately, he recommended that using reflection on a COM object to emit code to run based on the users request was not a goer. Basically, it's impossible to test well.

    I've known in my heart of hearts for a while that it was going to have trouble flying, but it's just such an elegant solution to the problem in hand. I would have meant a complete implementation would take about a thousand lines, and adapt automagically to new releases of the product with no effort on my part.

    Instead it looks like we'll go with the thousands of lines of generated code route, which is a shame, but a much lower risk strategy.

    Lunch was at the First Floor, which was fantastic. The best bit is the architecture, which was like being in an artist's impression of a warehouse. I can't find any pictures of it online, and I didn't have a camera with me, but if you're in Canberra, it's worth a look.

    Is it just me, or is reading Slashdot on April the first essentially a complete waste of time?

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


A day long meeting with a dude from Microsoft, and an essentially useless Slashdot

    Yesterday was spent in a day long meeting with a dude from Microsoft Melbourne named Mark. He was nice, a lot nicer than most of the other people from Microsoft that I've me, who have always struck me as being compeditive to the exclusion of all else. We had a good chat about web services and how to implement the one I am working on now.

    Unfortunately, he recommended that using reflection on a COM object to emit code to run based on the users request was not a goer. Basically, it's impossible to test well.

    I've known in my heart of hearts for a while that it was going to have trouble flying, but it's just such an elegant solution to the problem in hand. I would have meant a complete implementation would take about a thousand lines, and adapt automagically to new releases of the product with no effort on my part.

    Instead it looks like we'll go with the thousands of lines of generated code route, which is a shame, but a much lower risk strategy.

    Lunch was at the First Floor, which was fantastic. The best bit is the architecture, which was like being in an artist's impression of a warehouse. I can't find any pictures of it online, and I didn't have a camera with me, but if you're in Canberra, it's worth a look.

    Is it just me, or is reading Slashdot on April the first essentially a complete waste of time?

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


Tue, 30 Mar 2004



Sleep at last!

    We were pathetic last night and went to bed at about 8:30 pm... It was nice, because I feel human again today. We think we have an explaination of why Matthew was so upset the other night... We found blood in his right ear this morning, which implies that he might have been lucky enough to burst an ear drum (for some value of lucky). That would certainly make me scream. Matthew is off to the doctor this morning to see if that's what happened.

    Listening to Mr Jones and Rain King on the drive into work. I really like that album...



    I was reading Don Box's blog when I found this this morning. Not only is the article an interesting read from the graphics perspective (remembering that I wrote a lot of graphics code before moving to my current job), it's also a rare glimpse of Microsoft humour. Well, I say it's rare. I'm sure that they've overcome being business people enough to actually have a sense of humour, just not in public.

    Oh, and I'm still the high bidder for the BSD beard. I think I'll have it framed.

posted at: 14:03 | path: /diary | permanent link to this entry


Mon, 29 Mar 2004



The next step with mandocs

    So, it turns out that my original mandocs patch for the 2.6 series of kernels was flawed. This isn't really all that surprising, as it was my first patch which introduced new functionality to the kernel (even if it was a little userspacy, and not a required part of the build processes).

    It's flawed because it turns out that there are a large number of kernel-doc comments at the start of functions which are never used in any of the SGML documentation. I'm therefore hacking up some tweaks to the build process to go trawling through the code for all of the documentation comments before building the man pages. This will make the build process much slower, but a lot more complete. Given that people will rarely use the build target (comments don't change that often), the slowness is acceptable in return for the better documentation coverage.

    In my opinion at least.

    Anyways, here's a first attempt at some sample output.

posted at: 19:03 | path: /diary | permanent link to this entry


The next step with mandocs

    So, it turns out that my original mandocs patch for the 2.6 series of kernels was flawed. This isn't really all that surprising, as it was my first patch which introduced new functionality to the kernel (even if it was a little userspacy, and not a required part of the build processes).

    It's flawed because it turns out that there are a large number of kernel-doc comments at the start of functions which are never used in any of the SGML documentation. I'm therefore hacking up some tweaks to the build process to go trawling through the code for all of the documentation comments before building the man pages. This will make the build process much slower, but a lot more complete. Given that people will rarely use the build target (comments don't change that often), the slowness is acceptable in return for the better documentation coverage.

    In my opinion at least.

    Anyways, here's a first attempt at some sample output.

posted at: 19:03 | path: /linux | permanent link to this entry


Beardy beardy beard

posted at: 14:03 | path: /diary | permanent link to this entry


Very tired

    Matthew didn't sleep much last night. He just kept screaming, and we're not really sure why. In the end Catherine and I each got about four hours sleep, which is about half of what we normally get. It was lovely I tell you.

posted at: 12:03 | path: /diary | permanent link to this entry


Sun, 28 Mar 2004



Back in the office

    Well, I'm now back in the office after Catherine's surgery (which went well by the way). This means I have to get back into ping-pong practise. It's a hard life.

posted at: 18:03 | path: /diary | permanent link to this entry


Wed, 24 Mar 2004



20040131

posted at: 12:23 | path: /matthew/pictures/20040131 | permanent link to this entry


20040131

posted at: 12:23 | path: /events/pictures/20040131 | permanent link to this entry


20040131

posted at: 12:23 | path: /andrew/pictures/20040131 | permanent link to this entry


20040121

posted at: 12:21 | path: /events/pictures/20040121 | permanent link to this entry


20040116-adl

posted at: 12:21 | path: /events/pictures/20040116-adl | permanent link to this entry


20040115-adl

posted at: 12:21 | path: /events/pictures/20040115-adl | permanent link to this entry


20040114-adl

posted at: 12:21 | path: /events/pictures/20040114-adl | permanent link to this entry


20040113-adl

posted at: 12:20 | path: /events/pictures/20040113-adl | permanent link to this entry


20040112-adl

posted at: 12:20 | path: /events/pictures/20040112-adl | permanent link to this entry


20040111-adl

posted at: 12:20 | path: /events/pictures/20040111-adl | permanent link to this entry


20031202

posted at: 12:20 | path: /events/pictures/20031202 | permanent link to this entry


20031204

posted at: 12:20 | path: /andrew/pictures/20031204 | permanent link to this entry


20031204

posted at: 12:20 | path: /matthew/pictures/20031204 | permanent link to this entry


20031111

posted at: 12:17 | path: /andrew/pictures/20031111 | permanent link to this entry


20031111

posted at: 12:17 | path: /events/pictures/20031111 | permanent link to this entry


20031111

posted at: 12:17 | path: /matthew/pictures/20031111 | permanent link to this entry


20030716

posted at: 12:14 | path: /matthew/pictures/20030716 | permanent link to this entry


20030716

posted at: 12:14 | path: /andrew/pictures/20030716 | permanent link to this entry


20030709

posted at: 12:14 | path: /andrew/pictures/20030709 | permanent link to this entry


20030709

posted at: 12:14 | path: /matthew/pictures/20030709 | permanent link to this entry


20030703-33fredlanecres

posted at: 12:13 | path: /events/pictures/20030703-33fredlanecres | permanent link to this entry


20030705

posted at: 12:13 | path: /andrew/pictures/20030705 | permanent link to this entry


20030705