Begin main content

Patent Office Orders Re-Examination of Blackboard Patent

Phew. At least the US patent system isn't totally broken. The re-examination was triggered by an official request of the Software Freedom Law Center:

SFLC, provider of pro-bono legal services to protect and advance Free and Open Source Software, had filed the request in November on behalf of Sakai, Moodle, and ATutor, three open source educational software projects. The Patent Office found that prior art cited in SFLC's request raises "a substantial new question of patentability" regarding all 44 claims of Blackboard's patent.


A re-examination of this type usually takes one or two years to complete. Roughly 70% of re-examinations are successful in having a patent narrowed or completely revoked.

Source: Groklaw

01:36 AM, 26 Jan 2007 by Mark Aufflick Permalink | Comments (0)

Agile contracts

mue has the seed of a great idea in his post How to get an agile contract?.

The key observation is that there can be a conflict between agile methodologies and traditional project based contracts.

Since most clients won't wear an infinitely open ended (by the hour) contract and most developers can't afford to iterate past the end of an agreed number of payments there needs to be some flexibility in the billing relationship.

How you codify that into a contract or set of contracts is an interesting challenge. I don't do too much freelance work these days - when I did it was either of two extremes: pre-agreed price per project or simple hourly billing.

Does anyone have any examples of agile project contracts that worked well (or didn't)?

11:36 PM, 24 Jan 2007 by Mark Aufflick Permalink | Comments (0)

MacOS X State of the Union

Last night I watched the OSX State of the Union presentation (on the ADC iTunes) from MacWorld. Nothing really new, but it was a good watch as per usual.
    * 64 bit to framework level in leopard
    o nothing new there

    * multicore
    o OS frameworks higly threaded with fine grained locking
    o cpu and i/o prioritisation support
    o new NSOperation and NSOperationQueue to provide OS support for simple concurrent processing

    * memory management
    o garbage collection added to the ObjC runtime - hooray! (although hardly breaking news)
    + garbage collection is opt in (at the application level)
    + all objects collected
    + release method is a noop!
    + not mark and sweep - generational, which makes use of the fact that new objects are more likely to be able to quickly be released than old long running objects

    * graphics
    o the buzzword is "cinematic experiences"
    o core animation looks pretty damn cool - it's even integrated with the new cocoa widgets
    o resoloution independant user interfaces by 2008 - hooray, just like X11 in 1988 ;)

    * developer tools
    o the new interface builder is also very cool :)

Update: Gah - now I realise why this doesn't sound new, because it's from August 2006 I assumed it was from Macworld, but it turns out that I just got an email because Apple decided to release it to all ADC members. At least they did I guess.

12:43 PM, 24 Jan 2007 by Mark Aufflick Permalink | Comments (0)

Apple feels compelled to charge you money

The charge for the forthcoming 802.11n wireless software by Apple has been discussed for a while. I have no problem with it - one thing Apple has consistently been ahead of the pack with is wireless technology, and being ahead of the pack costs money.

But the rationale offered as to why they are charging it is completely nonsensical:

The nominal distribution fee for the 802.11n software is required in order for Apple to comply with generally accepted accounting principles for revenue recognition, which generally require that we charge for significant feature enhancements, such as 802.11n, when added to previously purchased products
(Lynn Fox - Apple spokesperson)

I had to read that a few times. Firstly, when did a "generally accepted ... principle" require anyone to do anything? Secondly, since when did Apple start publicly admitting that it was doing something because "well that's what everyone else does"?? Perhaps Apple should start making OS X more complex so as to comply better with the generally accepted principle that computers are hard to use?

I'm speechless.

Update: Seems it is not going unnoticed by the press: WSJ: Apple Gets a Bruise by Blaming A $1.99 Fee on Accounting Rules

09:30 PM, 22 Jan 2007 by Mark Aufflick Permalink | Comments (0)

Sybase, ANSI compliant? Phooey.

As previously discussed in this blog, I don't enjoy having to program with Sybase.

Here's another nail in it's coffin in my mind - full join.

Appendix A: Compatibility with Other Sybase Databases.

So, Adaptive Server Anywhere supports Ansi full join, as does IQ (Sybase's data warehouse product), but their flagship Adaptive Server Enterprise (mmmm, Enterprise) doesn't?

Instead I have to distinct union together the left and right outer join...

Could be worse - I could be using Mysql (which also has no full join).

Of course, Postgresql does have full outer joins (so does Oracle 9i for the record).

Update: Oh, and a blank string coerces to a date of 1/1/1900. Brilliant.

Update: brillant. Like MySQL, Sybase would rather silently ignore your bugs than report them:

  • commit: If no transaction is currently active, the commit or rollback statement has no effect on Adaptive Server.

11:05 AM, 18 Jan 2007 by Mark Aufflick Permalink | Comments (0)

The Road to Enlightenment Is Littered with Irritating, Superfluous Parentheses

Arto Bendiken has posted a wonderful Q&A on how he got started with Lisp, with the same title as this post.

His path is not dissimilar to mine except that I had the good fortune to get hooked on dynamic languages early on, which is possibly why I have been slower to get from B to C with Lisp (less need when you can implement many list based and functional idioms in Perl).

I almost want to like Smalltalk more than Lisp, but I suspect that is because of the OO ingrained in me and also my worship of Xerox Parc, Douglas Engelbart, etc. My gut instinct, however, tells me that Lisp is just that one level higher.

I'm very interested in any languages/dialects that implement the power of Lisp with less noise. I'm sure it's possible, but it just hasn't been "discovered" yet. On the other hand, perhaps it's not. Perhaps the endless, nested, streams of braces and symbols are the purest representation of code. Like logic DNA.

Update: In Arto's post he mentions the Lisp machines. I would suggest that in a not dissimilar way that Squeak is a software embodiment of the Alto Smalltalk Machine, Emacs is a rough embodiment of a Lisp machine. Some people even use Emacs as their entire windowing system.

11:16 AM, 15 Jan 2007 by Mark Aufflick Permalink | Comments (0)

Einstein's Puzzle

I can't believe I've never come across this before. It took me a bit under 30 minutes using pen and paper (but I was distracted by work a few times...). Probably would have been quicker to write a Prolog program (but it's much more satisfying by hand :) See how you go:

The Brit lives in the red house.
The Swede keeps dogs as pets.
The Dane drinks tea.
The green house is to the left of the white house.
The owner of the green house drinks coffee.
The man who smokes Pall Mall keeps birds.
The owner of the yellow house smokes Dunhill.
The man living in the house right in the center drinks milk.
The Norwegian lives in the first house.
The man who smokes Blends lives next to the man who keeps cats.
The man who keeps horses lives next to the man who smokes Dunhill.
The man who smokes Blue Master drinks beer.
The German smokes Prince.
The Norwegian lives next to the blue house.
The man who smokes Blends has a neighbor who drinks water.

Who keeps the fish?

Email or meebo me for the answer (comments with the answer will be deleted!).

Wikepedia has some information on the history of this puzzle. Excerpt:

The Zebra Puzzle is a well-known logic puzzle.

It is often called "Einstein's Puzzle" or "Einstein's Riddle" because it is said to have been invented by Albert Einstein as a boy, with the common claim that Einstein said "only 2 percent of the world's population can solve this". It is also sometimes attributed to Lewis Carroll. However, there is no known evidence for Einstein's or Carroll's authorship.

There are several versions of this puzzle. The version below is quoted from the first known publication in Life International magazine on December 17, 1962. The March 25, 1963, issue contained the solution given below and the names of several hundred solvers from around the world.

The version of the puzzle given in Wikipedia is tougher because two pieces of information are missing. Naturally someone has already written Prolog and Lisp solutions for it :)

10:38 AM, 15 Jan 2007 by Mark Aufflick Permalink | Comments (0)

Great emacs blog

Someone asked me a while back to post more emacs tips. Well, I haven't posted much of anything over the summer break, but I did just find a new blog minor emacs wizardry by the author of a smalltalk/lisp blog that I read occasionally, programming musings.

I learned an amazing feature of the dired mode, that with the command wdired-change-to-wdired-mode command you can make the directory view editable. Eg. if you do a search and replace in the buffer (using normal commands), the files will be renamed. Cool!

There's also a neat emacs lisp fragment to keep an eye on open memory allocations in your Objective-C code (Define your own keywords). Mind you, I can't wait for the Objective-C garbage collector that will be standard in OSX 10.5 :)

Possibly the most useful productivity addition (especially for an emacs-using team - if I can find one these days...) is linkd.el which allows you to embed internal and external hyperlinks in emacs so you can, eg, put links in your code comments to relevant files, sections, or web pages.

Update: For GTD (Getting Things Done) fans out there, I linked through to a page on using the emacs org-mode for implementing GTD. By an Australian no less :)

12:39 AM, 15 Jan 2007 by Mark Aufflick Permalink | Comments (2)

Finer grained rss feeds

Well I'm nearly back from my blogging holiday (far too much cricket on TV for blogging ;) so in preparation I have turned off "link-splicing" in my rss feed which means that the rss feed for my blog ( ) will give you blog articles only.

You can separately subscribe to my bookmarking via's builtin rss feed:

11:49 AM, 13 Jan 2007 by Mark Aufflick Permalink | Comments (0)


Blog Categories

software (41)
..cocoa (23)
  ..heads up 'tunes (5)
..ruby (6)
..lisp (4)
..perl (4)
..openacs (1)
mac (21)
embedded (2)
..microprocessor (2)
  ..avr (1)
electronics (3)
design (1)
photography (26) and white (6)
..A day in Sydney (18)
..The Daily Shoot (6)
food (2)
Book Review (2)


Icon of envelope Request notifications

Syndication Feed


Recent Comments

  1. Mark Aufflick: Re: the go/Inbox go/Sent buttons
  2. Unregistered Visitor: How do make a button to jump to folder
  3. Unregistered Visitor: Note I've updated the gist
  4. Unregistered Visitor: umbrello is now an available port on macPorts
  5. Unregistered Visitor: Updated version on Github
  6. Unregistered Visitor: Modification request.
  7. Unregistered Visitor: Accents and labels with spaces
  8. Unregistered Visitor: Mel Kaye - additional info
  9. Unregistered Visitor: mmh
  10. Mark Aufflick: Thank you