Wed, 11 Nov 2009 16:34:07 +0000
A year after the third moment of project-size zen comes the fourth, celebrating the 2.1.0 release -- and my birth year!
[javac] Compiling 1974 source files to /home/mquail/work/crucible/2.1/output/classes
The Buddha feels bloated.
Tue, 09 Dec 2008 20:49:42 +0000
Two meta blog posts in a row is a sure sign of a blog in peril, but I'd thought I'd give Alastair a nod regarding customizing the Sandbox theme.
My last attempt at a custom theme resulted in a great deal of bit rot, so when looking for a new theme I really shied away from anything that required any maintenance effort on my part. I thought that meant I had to find a theme that meet all my functional and visual requirements at once -- seemingly a tall order.
Until I discovered child themes.
Great googamooga -- child themes for the win. I recommend reading through Demetris' How to make a “child theme” for WordPress post for all the gory details, but my resulting
wp-content/themes/ directory looks like this:
themes/sandbox/the standard Sandbox theme, unmodified. (Sandbox 1.6 as of this post.)
themes/sandbox-madbean/my child theme.
themes/sandbox-madbean/style.css(copy as of this post).
themes/sandbox-madbean/functions.phpan override to add my own footer (copy as of this post).
display:noneto hide sections I didn't want. In the past this is what would have prompted me to make a full custom theme. But I can live with just hiding the divs.
add_action()in functions.php to add my own footer text.
Demetris has another excellent post An easy style-switcher for WordPress on using Theme Switcher Reloaded. After disabling WP Super Cache, Theme Switcher Reloaded allows you to override the theme used in a session-sticky manner.
However, I couldn't get it to work with a child theme. So I developed my theme in a copy of Sandbox, then converted that diff to a child theme.
Wed, 26 Nov 2008 23:25:03 +0000
In the absence of regular blogging, I present to you this series of random updates. We will then return you to your regularly scheduled silence. Do not adjust your TV.
madbean.com has dutifully been wearing the same theme I whipped up when I originally installed WordPress in 2005. It had really started to show its age, so I decided it was time for a cleanup.
WordPress themes serve two (related) functions: templates for turning data into HTML, and visual styling (CSS). While I wanted to improve the visual styling, my main pain-point was the HTML generation: my theme was a copy of a very old example theme, and couldn't support any of the new fancy WordPress features like Widgets. I went shopping for a new theme, but I couldn't find anything that really hit my two requirements:
I almost gave up with shopper fatigue, but then I discovered Sandbox. It supports all the fancy WordPress features, outputs richly structured HTML (lots of orthogonal CSS classes), and doesn't override any of the Browser's default visual style -- that is up to you.
So now we have what you see today (which is not perhaps what you might be seeing in the future). Here are screenshots of the three main themes madbean.com has worn over time:
Did you know I have a new baby son Benjamin? Now three months old, he joins Joshua (nearly four) as one of my main time sinks (which, truth be told, I don't mind so much).
I recently got my nerd game on and wiped up Wiki4k. This is a fully featured Wiki (with embedded HTTP server) delivered in a 4KB jar file.
Having moved to Sydney then spending 12 months renting, we bought a nice little apartment withing walking distance of the city. The building has some very nice views of the harbour, but we are on the ground floor (sacrificing views for a large outdoor area).
Tue, 25 Nov 2008 09:30:21 +0000
[javac] Compiling 1337 source files to /Users/mquail/work/crucible/trunk/output/classes
That's right, we are now officially so very 1337!!1!
Tue, 04 Nov 2008 20:55:23 +0000
My three year old -- I mean three and a half year old -- son Joshua loves everything spacey. In fact, one of his favorite cardboard boxes is the cardboard box we turned into a rocket ship.
On the weekend we took that rocket out to the local cosmodrome for a test run. The following is the result:
If, like Nick, you think I left poor little Joshy in the middle of a big car park, rest assured that the whole shot is a green screen effect. He never left the safety of our kitchen and Final Cut Express' Chroma Key filter:
The green screen setup turned out to be reasonably simple: one king-size green bed sheet and a 500W work-light from the local hardware store. What took the longest (about 3 hours) was the motion tracking -- making sure it looked like the rocket ship was sitting still on the ground while the hand-held camera jumped about. I started out reasonably fussy with the motion tracking, but got quite sloppy at the end (not that you can tell thanks to the soft-focus that is Youtube). Next time I'll either try out some of the motion-tracking plugins you can buy, or just use a tripod.
Mon, 05 May 2008 10:55:45 +0000
It is JavaOne time again, and I arrived in San Francisco this morning. I'm finally getting used to the 13 hour flight from Sydney to SF. I don't know if that is a good thing.
It is going to be a busy year this year. Some highlights below. If you are in San Francisco note that the Lightning Talks and Javabloggers meetup are tomorrow.
We are running a Lightning Talk session at Community One (12noon I think). I'm one of the speakers, my title is "You suck at webapps" (or will be if I can finish it between now and then). It should be fun. Be there, or ... be one of the less square people in SF at the moment.
Conor and I are speaking at JavaOne on Thursday 4:10pm. "Pimp My Build: 10 Ways to Make Your Build Rock". Come along, you'll learn a little, cry a little, and come away feeling full of hope.
I'll be at the Atlassian booth, come say hello, watch a demo and get an awesome t-shirt.
Thu, 03 Apr 2008 21:44:47 +0000
Fri, 07 Mar 2008 22:11:50 +0000
They are "the Oscars of our industry" which -- for better or for worse -- is about right. But I still I have a fondness for the Jolt awards. The first time I saw the awards in Dr Dobbs Journal, I remember thinking how nice it was that this caffeinated beverage company targets us sleep-deprived code monkeys, and gets us enough to award us for our deeds. And fondness for the Jolt awards certainly has something to do with my fondness for Dr Dobbs Journal.
I've poured a lot of code into FishEye over the years. And we are still working quite hard at improving it, so it is sometimes hard to keep at the top of the stack the fact that a lot of people use it and think it is awesome. When non-nerds ask me what I do I give a standard response of "I develop tools for other software developers", which most people seem to grok reasonably easily. This response took me a few years to refine and means such lines of conversation quickly get to the point where a change of subject is needed (to the relief of both parties). Conversations with other nerds run a little different. We can either be rather evasive, or overly detailed -- seeing a fellow nerd's face gloss over is a bad sign. It is a balancing act that I don't always get right. But now, if someone's curiosity matches my current grandiosity, I might just say:
I've won a Jolt.
Wed, 30 Jan 2008 23:21:56 +0000
Via the teaparty:
10:49:42 PM spud: it's finally being pooped out http://paulgraham.com/arc0.html
10:52:58 PM michael: @spud: gentlemen, start your parentheses!
10:59:10 PM spud: "Arc only supports Ascii. I realize that supporting only Ascii is uninternational to a point that's almost offensive ... But the kind of people who would be offended by that wouldn't like Arc anyway." Well, now I don't like it... shesh!
11:00:23 PM adrian: Ewwww.
11:00:37 PM conor: too full of himself
11:00:49 PM spud: that's paul g all over
11:01:11 PM spud: I like the direction erlang went, it doesn't have a char type, just uses lists of ints
11:01:17 PM conor: probably only 7bit ASCII
11:01:27 PM * adrian likes the name Erlang.
11:01:39 PM conor: Having done traffic engineering, I find it difficult to use a language called Erlang
11:01:48 PM spud: ?
11:02:10 PM adrian: Erlang is the unit of measurement of telecommunications traffic.
11:03:28 PM adrian: 1 erlang = 100% occupancy
11:02:57 PM spud: wow didn't know that
11:03:07 PM michael: so it's for stupid mono-lingual programmers writing software for other stupid mono-lingual programmers without funny accents in their names? please!
11:03:57 PM spud: I'll wait for Erlang 2.0 then
11:04:02 PM peter: Riley (read any 2 yearold) = 2 erlang
11:04:09 PM conor: I'm a .5 Erlang developer
11:04:11 PM spud: @peter lol
11:05:49 PM spud: meh fuck lisp
11:06:18 PM spud: that took 16 mins
Fri, 07 Dec 2007 13:47:40 +0000
So I'm off to JavaPolis 07. If you -- my trusted readers -- are going to be there, drop me a line or pop in to the Atlassian booth and say hello.
Tue, 27 Nov 2007 22:39:57 +0000Apparently, Wordpress is famous for its 5 minute install procedure, and claims upgrading Wordpress is even easiier. And to be fair, it is a reasonably straightforward three (four?) steps: Step 0: Before You Get Started: Backup and deactivate plugins. Step 1: Replace WordPress files: Extract the new tarball over your existing installation. With special notes about what files you need to be careful to preserve. Step 2: Upgrade your installation: Hit your wp-admin/upgrade.php URL, which nicely upgrades your DB. Step 3: Do something nice for yourself. My problem is I'm always, always recalcitrant in upgrading Wordpress, because I cannot help but shirk at Step 1. Have I preserved the correct files (I have a whole lot of custom static content that sits alongside Wordpress)? Did I make any changes anywhere that I need to keep (I once change a core Wordpress file to work around a bug)? How do I even tell if I've accidentally overwritten the wrong file? And at about this stage it gets thrown into the too-hard basket, to be retried next weekend. But not anymore! Thanks to funionfs I no longer have first-step fear. And while some of you may think that fiddling with /etc/fstab and yum is a level of complexity well beyond Step 1, I can honestly say that this is what I consider an elegant solution. funionfs funionfs is a union filesystem, and sits on top of FUSE (Filesystems in Userspace). A union filesystem is something I've pondered the existence of before (and trust Ivan to know exactly what I wanted). They allow you to fold up a set of separate directory trees and have them appear as one. One of the directories is usually read-write (with copy-on-write), while the others are read-only. I recently moved madbean.com to a new FC8 box, and low and behold -- sudo yum install funionfs just worked! What's in my docroot? I have a reasonable chunk of static content (images, flash animations, software archives, movie downloads, etc) that I keep in a Subversion repository and deploy to this website via rsync. This content existed before I started using Wordpress, and will exist if I ever stop using Wordpress, so it is not appropriate content for Wordpress to own. I have Wordpress, which is a whole bunch of .php and what-not. I have my all my files that sit on top of Wordpress. My wp-config.php config file, the .htaccess file that Wordpress generates so my URLs look cool, some plugins and my theme. It is these files that cause my Step 1 fears. (And in fact, these fears prevent me from making some much needed changes to my theme, too). All these files, with their different sources and different life-cycles used to be clumped into the one scary directory. What's where now? Now, I have three different directories: /home/matt/madbean.com/static: My rsync-ed static content. /home/matt/madbean.com/wordpress-2.1-orig: An extracted wordpress-2.1.tar.gz with no modifications. /home/matt/madbean.com/wp_data: my Wordpress config, plugins, themes, etc. /home/matt/madbean.com/wordpress_all: An empty directory. After a bit of fiddling with funionfs options, I settled on a mount like this: sudo funionfs -o dirs=\ /home/matt/madbean.com/wordpress-2.1-orig=RO:\ /home/matt/madbean.com/static=RO:\ /home/matt/madbean.com/wp_data=RW:\ NONE /home/matt/madbean.com/wordpress_all After running that, wordpress_all contains exactly what Wordpress wants to see: a big mishmash. Any writes Wordpress makes (e.g. to configuration or .htaccess) get written through to wp_data. Each time I rsync my static content to static it is automatically visible in wordpress_all. And as you will see below, upgrading is a scream. To ensure this union mount exists next time the box reboots, I converted the above funionfs instruction into an /etc/fstab entry: funionfs#/home/matt[...]
Wed, 21 Nov 2007 23:46:12 +0000
There used to be an SBS program that aired late Saturday nights called Eat Carpet (on wayback). It featured a handful of short films each week and was standard viewing for me for quite a few years after I finished Uni.
I don't know exactly when it was, but it was on Eat Carpet that I saw the best animated short I had ever, and still have ever, seen. After that I would often watch Eat Carpet just on the hope they would show it again. The animation itself was good -- the movement, sound and mood where all perfectly matched -- but I think it stuck in my mind mostly because of its poignant comment on the human condition.
For some reason that animation popped into my head today, so it was time to stretch my Google-search skills and see if I could find it. The combo of "short film animated four men box" finally did it. Which is lucky because it turns out it contain five men, not four.
Good old internet. And on You Tube too, so without further ado:
Tue, 13 Nov 2007 16:53:11 +0000
Atlassian has a rich and vibrant technical culture -- the internal blogs are pure bliss. And there is always room for a bit of fun, which lead to the following little video blog:
(Apologies if the sound is a little off. It's not too bad considering it was all done with the movie-mode on my digital camera.)
Tue, 13 Nov 2007 10:28:49 +0000
Once again, I forgot to renew my DNS hosting this year, so apologies to any problems that caused. It's not like my DNS hosting provider didn't send me enough warning emails (actually they rock) -- I just didn't read them.
This time I renewed for 5 years, so you won't experience this problem again until late 2012.
Tue, 09 Oct 2007 22:39:21 +0000
My parent is PZ Myers.
1) The best time travel novel in SF/Fantasy isâ€¦
Dirk Gently's Holistic Detective Agency, by Douglas Adams.
2) The best romantic movie in historical fiction isâ€¦
Erik the Viking.
3) The best nerd song in rock isâ€¦
Code Monkey, by Jonathan Coulton.
The Pharyngula mutating genre meme
There are a set of questions above that are all of the form, "The best [subgenre] [medium] in [genre] isâ€¦". Copy the questions, and before answering them, you may modify them in a limited way, carrying out no more than two of these operations:
You can leave them exactly as is.
You can delete any one question.
You can mutate either the genre, medium, or subgenre of any one question. For instance, you could change "The best time travel novel in SF/Fantasy isâ€¦" to "The best time travel novel in Westerns isâ€¦", or "The best time travel movie in SF/Fantasy isâ€¦", or "The best romance novel in SF/Fantasy isâ€¦".
You can add a completely new question of your choice to the end of the list, as long as it is still in the form "The best [subgenre] [medium] in [genre] isâ€¦".
You must have at least one question in your set, or you've gone extinct, and you must be able to answer it yourself, or you're not viable.
Then answer your possibly mutant set of questions. Please do include a link back to the blog you got them from, to simplify tracing the ancestry, and include these instructions.
Finally, pass it along to any number of your fellow bloggers. Remember, though, your success as a Darwinian replicator is going to be measured by the propagation of your variants, which is going to be a function of both the interest your well-honed questions generate and the number of successful attempts at reproducing them.
Wed, 01 Aug 2007 22:02:54 +0000
Today, Atlassian acquired Cenqua. More details here.
Kinda seems surreal typing that in. But without a doubt exciting. Certainly seems surreal that I'll be moving to Sydney, but that is real exciting too.
Not much more to say than that at the moment, other than it is full steam ahead on making FishEye, Crucible and Clover kick more arse than ever before. And looking forward to catching up with a lot of the Sydney crowd.
Tue, 24 Jul 2007 12:16:27 +0000
Creationism vs. Evolution is a hot topic at the moment. A common criticism (or more often: slur) against Evolution is that it is "just" a theory. It is so easy to roll your eyes at this, but it is a criticism that is not without merit if only because the word has an overloaded meaning:
To any slur against Evolution on its basis as a "theory", you need to shift the person from the common usage of the word to the scientific. My problem is I've often found explaining the scientific method to a novice very hard. A slippery-slope of "weak" prepositions that seems a far cry from the popular view of science and scientific certainty.
So it was nice to find this quote today that I think sums it up quite well (via about.com):
â€œA theory is a meta-scientific elaboration, which is distinct from, but in harmony with, the results of observation. With the help of such a theory a group of data and independent facts can be related to one another and interpreted in one comprehensive explanation. The theory proves its validity by the measure to which it can be verified. It is constantly being tested against the facts; when it can no longer explain these facts, it shows its limits and its lack of usefulness, and it must be revised.â€
This is from a 1996 writing by Pope John Paul II to the Pontifical Academy of Sciences (full text).
I like this quote because it moves a "weakness" of scientific theories -- a theory is not a truth but merely something that matches the facts -- to a strength: their explanatory power.
Scientific theories are not truths.
Or rather, they may be true but we don't care about that so much. We only care a) if they are demonstrably not true, and more importantly b) that they are useful. There is no better example of this than Newtonian physics, which is a theory of how objects should move. Newtonian physics is demonstrably false. But the predictions (explanations) it makes for every-day sized objects are very very very close to correct. In addition, Newtonian calculations are much easier to do than the calculations of Relativistic physics (which is the rival theory). So Newtonian theory is useful.
And many other things being equal, useful trumps truth.
Well, perhaps that is a bit hyperbolic. Maybe it just trumps being false.
Anyway, and going back to the late Pontiff's quote, we must keep these two things separate:
The first of these is the domain of the scientific method. Which is a very interesting domain, and one I have had fair exposure to.
The second of these is the domain of philosophy, epistemology (study of knowledge) and belief. Which is also very interesting, but one to which I am new.
Wed, 23 May 2007 16:29:23 +0000Some of you may say "whytf umofo", and some may say "I've always wanted to be able to do that!". This hack is for the later, but I will try below to explain to the former why it is useful. If anyone knows of an easier way to do it, please let me know. Apache httpd serves static content out of its DocumentRoot : DocumentRoot /usr/local/apache/htdocs
Sun, 13 May 2007 09:32:29 +0000I'm now back here in Sydney waiting for my connecting flight back to Canberra. Great-googamooga the last few days have been a whirl, and hence a lack of blogging. Day Two (Wednesday) (I didn't have my camera with me this day.) A good day at the booth. I had a couple of Technical Sessions on my schedule, but it was a busy day on the floor. The Java Posse was walking around interviewing the vendors, I'm sure it is going to be a very interesting podcast. They stopped by our booth, so listen in to that podcast if you want to find out what code-coverage our Clover product achieves. The first event of the evening was the Adobe party, at the poolroom in Jillian's (in the Metronone). Open bar, good food, lots of nerds, pool tables. What more could you want. Joe Nuxoll taught us how to play "cut throat", which is an awesome 3-player (or 3 teams of 2) game. Kind of a cross between billiards, Risk and Diplomacy. Next was the Google party, and while at a much swisher location, didn't quite achieve the same vibe. But full of interesting people. I spent a lot of the night chatting with this very nice chap from the Google-mobile team in London. Day ended around 3pm after a quick trip to Loui's Diner for some pancakes. Day Three (Thursday) (I didn't have my camera this day either... perhaps a good thing.) This was the last day on the booth. Didn't get to any technical session but spoke to a heap of interesting punters. In previous years, I was a reasonably dedicated schwag hunter, but there are only so many flashing buttons and mouse-pads that you need. I picked up a Duke plush doll, and a couple of Sun mugs with funny phrases on them (the details of which allude me right now, blame it on the timezone shift). One of the coolest schwag items (beside our own t-shirts, of course, of which we ran out earlier that day) was a cool blue/pink ball (from Terracotta I think). It was blue, and if you threw it up it would kind of turn inside out and when you caught it it would have turned pink. I suppose you had to be there. Later that afternoon we decided to organize what will hopefully become the Inaugural Cenqua Just-In-Time JavaOne party. To protect the innocent, and perhaps not so innocent, I won't go into too much details about who we managed to drag along. Let's just say it involved a little obfuscation. There were some abstractions in the design that definitely did not leak, no matter how hard we looked. The day ended again around 3pm, with another trip to Loui's. Well, for some of us it ended at 3pm: some were still arriving back at the hotel when I was getting up for the General Session on day 4. Day Four (Friday) The last day. Fighting a hangover that was much smaller than it deserved to be, I headed out for the "Toy Show" General Session. This was pretty fun, and like each year James makes a great host. (I should really try getting to the other General Sessions and Keynotes next year.) The show started with a set of "tycho" (spelling?) drummers, which was really fun. Roman Sholopsk showed the "DTrace Light" / "DLight" visualizer. This would actually be really really useful if dtrace ran on something other than Solaris. Tor Norbye a gave "mashup" presentation showing off the new Netbeans. I can't say that the refactorings and tools on show in Netbeans were anything I hadn't seen before in IntelliJ IDEA, aside perhaps from the great JRuby support. Tor's style and presentation was top notch: even though he talked fast, [...]
Thu, 10 May 2007 03:13:32 +0000
Woi, and intense, exhausting, exciting day yesterday.
In typical form, we managed to setup our booth (above) and demos just moments before the Exhibitor's Pavilion opened. The first day on the floor is always a killer: 11:30am to 8:30pm. I was wise and kept up my sustenance over that period; an apple for breakfast and an Oreo for lunch.
It was my turn to be the media whore today. Lucky I had had a shave. First up was an interview with SYSCON-TV http://soa.sys-con.com/read/372918.htm (the title is a little OT, and I'm pretty sure I didn't use any of those exact words, but the gist is right). I was also interviewed by Frank and Bill for an Artima podcast. They both ask great questions and it was a lot of fun chatting to them.
Against one of the far wall in the Pavilion is one of those Sun datacenters-in-a-cargo-box thingies on the back of a huge semi trailer. High candy value, I'll try and take some internal photos tomorrow.
I managed to sneak away from the Cenqua booth to go see Neal Grafter's Closure technical session. He does a lot of pointing.
Neal's explanation of his Closure proposal is thorough and clear. I got up and asked him a question during the Q&A, but managed to completely dilute my real question with qualifications. I'll try and write more about that later, if I can get my head together.
At the end of the day I hit the Closure and Java Posse BOFs. The Closure BOF ended up as mostly a re-cap of the previous technical session. The Posse's BOF was great, though not all of us found it enthralling as others:
After that some of the people at the Posse BOF went to the pub for a few well-desereved coldies.
phew now starts Day Two...