Recent blog entries for jml

Heartbeats and Sails

Mark Shuttleworth:

What’s good enough performance? Well, I like to think in terms of “heartbeat time”. If the major operations which I have to do regularly (several times in an hour) take less than a heartbeat, then I don’t ever feel like I’m waiting. Things which happen 3-5 times in a day can take a bit longer, up to a minute, and those fit with regular workbreaks that I would take anyhow to clear my head for the next phase of work, or rest my aching fingers.

Take this rule of thumb and apply it to unit tests:

  • Tests for whatever chunk of code you are working on should take “less than a heartbeat”.
  • Your entire testing suite (that you run 3-5 times in a day, right?) can take longer to run, up to a minute.

Authors of tests and testing frameworks, there’s your challenge.

Tests that take too long to run just won’t get run. Programmers will postpone running the suite until the last possible moment. When using something like PQM or Buildbot, this can be disastrous. Other developers might have to wait hours for their code to land on trunk.

Gerard Mezsaros’s new book, xUnit Test Patterns has some good ideas about what to do and what not to do to make your tests run in a couple of heartbeats.

Syndicated 2007-08-04 03:49:03 from awesome radtastic ninjacore!

OK. I got some marks back. I only failed one subject, which was a surprise. A bigger, and slightly less pleasant surprise was that I got a credit (68%) for a subject that I thought I'd do very well at. Alas, such is life. I should really investigate ways of making up for this.

Never working on an issue tracker ever again.

Still doing uni. Actually interested in starting AND finishing my thesis, and also doing some very interesting courses. One of them is on commutative rings -- it feels so good to be doing algebra again.

Prospect of commercial work coming up. Apparently it's either going to use Twisted or .NET. Either way, it'll be interesting.

Feel afraid that I have bitten off more than I can chew this semester.

Also, some friends of mine are starting a new share house. The place they've got is great, and really conveniently located. I'll be moving there ASAP (although moving is hellish)

And, finally, nerdishly, I am joining a D&D game. Haven't done that in a while.

For people rating my diary for interest, my apologies. Navel-gazing malaise is extremely tedious -- for both the players and the spectators.

In the future, I shall strive to post when driven by some other emotion more conducive to creativity.

Well, it has been a long time since I've posted here.

While you've all been sadly pining away in my absence, I have been up to sundry and divers things.


This has had an alpha released. Sadly, it seems that my main potential user base, viz Twisted itself, has started a flirtacious affair with Roundup.


Did a 50% load on the coursework in first semester, leaving me little time to do any work or reading for my thesis.

Thus, I had five exams to do. The first exam and the final exam were disasters. The first was worth 100% for that unit, Catastrophe Theory. The unit was taught in a much less formal manner than most of my other maths courses in the past (e.g. it wasn't made clear where proofs started and ended), which made it less grippy in my brain. While it seems a fairly simple branch of maths to get ones head around, I think I went extremely poorly in the exam.

The second disaster was a course on Transform Methods and Complex Variables. After taking a bit of time at the start of the semester, to start thinking in applied maths terms once again, I found it pretty manageable, although it required more work in understanding than my other pure units. However, on the day of the exam, and on the day before, I was sick, and unable to focus in the slightest.

So, this all has resulted in a fair bit of consideration about my plans for next semester: especially, whether I should continue my course in honours, given that getting "first class" appears hopeless. Especially, on top of the somewhat anti-climactic release of Issues.

[Aside: Without first class honours, it will be highly impractical for me to do a PhD, as I will not be able to get a scholarship. In the past, I have been particularly driven to do one, but have wanted to have the option open.]


Reading "The Structure and Interpretation of Computer Programs". The amount of stuff I am learning is quite disgusting in its enormity. 13 years of programming, a degree and 3 years of commercial experience, and I am learning much about the fundamentals of my trade from what I am told is a first-year text book. (Note that this is also my first serious non-emacs exposure to lisp)


This book totally rocks. Hard work, but well worth it. Up to the bit where this priest walks through town and there are all these different POVs. Amazing.

Twisted / Python

I've been doing this sort of stuff for a while. Python rocks, I love it. Twisted has it's probs, but is always getting better and is still The Framework of My Internet.

However, I'm feeling more and more like a one-trick pony. And not a very good one at that.

Dedicated to Antonio Salieri, the patron saint of second-class honours students.

Twisted Issues

Got a demo of Issues (as it stands) up and running on a public server. It's great to have something tangible for other people to see and touch. There's still a long way to go yet, but I reckon it can be done.


I didn't move house. Very frustrating. The university agency didn't have the keys ready, so everything is postponed until I can get my shit together.


My thesis is on formal languages and logic and how they interact. Lot's of work to do here, as I need to sit down and work through the basic concepts (from semigroups up). I've chosen 5 courses and been to lectures for three of them. Hopefully this will make second semester much easier.


As of last week, I am no longer working full-time. Have spent the last couple of weeks revelling in my free time and preparing for university.

Moving house again this week. Evil horrid job. The new place is a little bit run down, but it's only for a year.


Still haven't picked a thesis topic, or any courses. Hopefully I can deal with the latter conclusively this Monday, at the staff-honours meeting. Thesis will probably have something to do with semigroups.


Nothing much happening. Hope to resume work on Issues soon.


Right. Back in sunny Hobart. Christmas and New Year rocked, in a chilled out sort of way.

Am now living in a share house that looks like a white castle with some awesome flatmates. Only temporary though, gotta move out in March.

Have quit office job to go back to university and do maths honours. (i.e. more free software hacking).


I'm a Journeyer now. Cool. Thanks glyph and exarkun.

Since I last posted, Twisted has moved over to an in-house unit test framework called Trial. I wrote the base bit, and it's been improved in lots of ways by the rest of the crew. I hope to play around with it and add some funky features when I get some spare time.

Also working on an issue tracking system called Issues. It's using a Twisted framework and it's distorting my mind.

That's it for now. Until next time, remember the words of the Happy Mondays: "You talk so hip man, you're twisting my melon man."

Finishing things up in Canberra. Moving back to Hobart on Saturday. Way too much packing and cleaning to do.

Fixed the test stuff (it was my abuse).

Looks like enterprise init has no need to be deferred after all (yay!).

Initial Free Software impressions

Recently, I've started hacking on Twisted. Not in a big way, just nipping at the edges.

I'm struck by the many differences between my experiences on Twisted, and my experiences as a commercial software developer.

I suppose the biggest difference is that of relative competence. I'm used to being the most technically competent person on a project. The guy that sets up cvs and the makefiles and who people consult when they complex or obscure programming questions. In Twisted, I am a very long way away from that. I am unfamiliar with the development process, and I am reasonably new to the language. Also, there are some really, really smart people there.

Not being in charge is harder in some ways. I tend to ask for approval before I do things, and ask for advice a lot more. It also means that when I want to do something, I have to justify why it should be done. Oh, and I become mildly nervous when my finger hovers over the "commit" key.

However, the great thing about this is that I am learning a lot. Especially about design and code-craft. It's a real pleasure.

Distributed development is also pretty interesting. Things have to be expressed in a much clearer fashion, and much more work has to go into communicating ideas. I suppose this is an obvious truth. I find the discipline required unusual, but worth working on.

I've never done product development before, only doing bespoke work. Having to think about API changes and backwards compatibility and so forth isn't something I've had to do.

I still find it hard to get the time to do much productive work on Twisted, as I have only the evenings and the weekends to contribute, and focussing and concentrating after spending all day at work can be hard. Especially when you are an IRC monkey like me.

Working on Twisted has been a great learning experience. I look forward to further hacking.

4 older entries...

New Advogato Features

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

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

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