Last week I released an open source project: ArgKit. It’s the synthesis of some work that I’ve been doing in the last couple of years and I’m very pleased with it. I’ve released early (ish) on this one, so there is more work to come in the same vein, time and attention allowing. One thing that ArgKit’s website misses is some background on “what is argumentation?” so I thought I’d just blog something about Dungine – the only tool in the toolkit at the moment, based on an email I sent to a friend recently (thanks for the question Steve).
Last week I spent a day interviewing candidates for a programmer position. One of the candidates discussed things that he looked for in an organisation. Two things in particular struck me: He wanted to work in an organisation that, if he was making good progress, didn’t slow him down and that, if he asked a stupid question, didn’t call him stupid. The first question revealed the candidates lack of experience (not a problem in this case btw) but the second one is very important to a career in software engineering.
I configured my docked Ubuntu laptop with an external screen to have an extended desktop using Xinerama. It works (almost) nicely. I have a wide desktop that I can drag screens around on now, but unfortunately the pointer isnt rendering properly on the external screen – instead of a clean pointer I have a 2cmx2cm square on the external monitor. Even with a clumsy mouse pointer, this is an improvement on my previous dual monitor setup which used aticonfig’s bigdesktop setting. I found that bigdesktop configured two separate desktops which meant that I was unable to run firefox/thunderbird on both desktops, or drag windows from one screen to another.
These two references were useful:
In the last two years I have come across several long articles by John Sowa. What I’ve read of them has been of very high quality, but towards the edge of my radar. Thus they are still in my in-pile. Today I came across a short, recent article that is a pure gold antidote to some of the extremely drawn out and ongoing discussions in the semantic web communities: Fads and Fallacies about logic.
Cargo cults are a delightful new concept to me, from the excellent and thought provoking blog entry, internal code re-use considered dangerous, which in turn was a link from another blog entry, is your code worthless? which in turn was a link from theserverside.com. Now that’s provenance baby. Too much information?
On Friday the excellent information aesthetics feed pointed me to wikimindmap.org, an Adobe Flash visualisation of a wikipedia topic as a mind map. The image above shows the wikimindmap visualization for Sweeney Todd – the main character in the musical/opera of the same name by Steven Sondheim (chosen for it’s compact size, and because I’ve just been to see it performed at the Royal Festival Hall). This is very nice. It combines the “at a glance” loveliness of mind mapping with the collective wisdom of wikipedia. It may provide a way for humans (as opposed to machines – that is another story) to scan topics more quickly than scan-reading them.
This link is hot right now on del.icio.us (thanks to bluga.net for the thumbnail). It’s a site that shows a whole bunch of scanned business cards and assorted pictures in a grid. The grid is pretty to look at and could potentially contain a large amount of information. It reminds me of an idea I have for archiving greetings cards.
Its the end of the Yahoo/BBC hackday weekend. The atmosphere at the beginning of the first day was really good and the weekend looked promising. But I left that day early and frustrated. I wanted to try out some of the cool tools being talked about but I couldnt get started because the network was too unreliable. It was a shame. I did meet some interesting people and I saw a great talk on machine tags by Aaron Straup Cope and Dan Catt though. I hope they got the network stabilised later on for the die hards and I’m intrigued to find out more about the final submitted hacks. It was always going to be difficult for me to attend the second day, due to family commitments, and I suppose this means I didnt fully prepare or get into the spirit of things. Looking at the blogs, the vast majority of the attendees got a lot out of it, and only a few lightweights who left early, like me, felt let down. If there is a next time I will both prepare more in advance and ensure I can attend the whole event. Oh, and come with a 3G card in my back pocket.
A Dutch colleague introduced me to plasmasturm.org a while ago – an excellent software engineering resource. I hadnt noticed it before* but today I was most tickled by a quote he has on his code page:
A friend of mine in a compiler writing class produced a compiler with one error message ‘you lied to me when you told me this was a program’
* Maybe I did notice it before and didnt get it. Since I first looked at that site I’ve done some work with the RACC, JACC and JavaCC compiler compilers (of the two Java compiler compilers, I prefer JavaCC).
This might save someone else a little bother. I’ve been building Java Swing demo’s in the last few months and one thing that has slowed me down is building a status bar. A status bar is the strip at the bottom of a window that contains useful information about the status of an application.
There is no standard swing control (container) to do this so you must roll your own. Searching for “java status bar” didnt get me very far. Initially I just used a JLabel, but this is too simple. I really wanted something with multiple recessed panels (as in the skype example). I considered using an unfloatable JToolBar but I dropped this idea because a toolbar’s default background doesnt look like a status bar and because its not easy to make the recessed panels this way. Finally I realised that the best way to build my status bar is to nest JPanels.
Now it’s a little tricky to get the status bar behaving correctly on resize, but if you use a GridBagLayout for your top level JPanel then it’s doable. However, a GridBagLayout is pretty horrible to use so I constructed two helper classes, StatusBar and StatusBarPanel to make things eaiser. A StatusBarPanel is simply a JPanel extended with two extra attributes: an integer panelWidth and a boolean fixedWidth. Thus you can define the width that you wish for your panel and whether or not it can stretch on resize. The StatusBar class also extends JPanel and has an array of StatusBarPanel objects. A StatusBar object configures the GridBagConstraints for you when you give it the array of panels.