Begin main content

I'm all ergonomic now!

After two years of desire, I have finally bought a kinesis ergo keyboard! The Contoured Essential is the cheapest in the contour range, but any mapping that i need to do i can do in software (the more advanced models have macros and re-mapping facilities).

Take a squiz at the excellent Kinesis ergo range here:

A word of warning to anyone having one delivered to Australia - the import duty came to about $AUS100, as did the shipping...

After re-capping some basics in an on-line typing tutor (, my tyoing is already at 26 wpm (30 wpm gross). My accuracy was only 85% (which the typing tutor called Intermediate) was mainly because my brain keeps forgetting which thumb has the space and whivh has the delete, combined with the fact that the program locked off a word once you typed a space.

My rythm, though, was only 43% which the program called Beginner - sheesh!

07:49 PM, 26 Jan 2005 by Mark Aufflick Permalink | Comments (0)

Ruby on Rails and postgres

Postgres is definately not the db of choice for Rails developers, or at least that's the impression I get.

That's a pity, because there is almost no real reason for the average application to use mysql over postgres and a lot of good reasons TO use postgres.*

There are some nice howto's on shoehorning some of postgresql's advanced features into Active Record - like this one : Howto Use Postgres Views As Tables

* For a dissertation on why MySQL is not a good database see this article on Note that this article is old and some of the misgivings are dealt with in current MySQL versions, but not all - and those that are mostly require you to use InnoDB tables which remove much the speed benefit MySQl is supposed to deliver.

More up to date "gripe-lists" about MySQL can be found easily, such as MySQL Gotchas.

My biggest issue that prevents me from using it (even when it might seem a good choice) is the way that it makes arbitrary changes and casts to your data without asking. That's just going to make a big mess one day that I would rather not debug!

People who enjoyed this blog entry also enjoy Ruby on Rails, Postgres & other musings!

10:07 AM, 26 Jan 2005 by Mark Aufflick Permalink | Comments (0)

Be Humerous

I think Tech Documentation has become more bland (and sometimes less useful) in recent years. As an example of really well written documentation, I was just leafing through the first edition of the Be Developers Guide (were there any other editions?). If you must know, I was having a tidy up of my apartment before an annual inspection ;o)

The Be API and it's documentation are phenominally well written. I also spotted the following amusing functions in the Kernel Kit:


int32 is_computer_on(void)

Returns 1 if the computer is on. If the computer isn't on, the value returned by this function is undefined.


double is_computer_on_fire(void)

Returns the temperature of the motherboard if the computer is currently on fire. Smoldering doesn't count. If the computer isn't on fire, the function returns some other value.

The documentation doesn't specify what type of sensor the Be hardware uses to detect combustion ;)

On the same page, the enum typedef for platform_type includes some unusual platforms ...

typedef enum {
} platform_type;

I haven't tried it, but I really don't think the BeOS would work at all well on a Timex Sinclair (see is_computer_on_fire()).

So can we deduce that the documentor HAS tried the other platforms? =)

01:16 PM, 24 Jan 2005 by Mark Aufflick Permalink | Comments (1)

Ruby's a gem

Well, prompted by the many of my friends researching or actively using Rails and Ruby, I thought I would start checking it out.

As with many nice book authors these days (eg. Matt Reilly, Dave Rolskey & Ken Williams), a version (first edition) of the Programming Ruby book is available for free online. There is a second addition for purchasing which apparently covers features and libraries of Ruby version 1.8.

From my reading so far, it will be a snap to pick up for an experienced Perl OO hack like myself. Of course similarity can often lead to frustration, but all the major nicities are there (albeit always in an OO form). Many of the core concepts are similar, yet are made available in a way that will be far more comfortable to newcomers than is Perl. For instance, every object inherits a .to_s() method—much simpler than explaining the ins, outs & special cases of Perl's stringification rules.

The OO nature goes right to the core of the Ruby (everything is an object). The descriptive OO concepts used are those of message passing from SmallTalk, which will also be familiar to Objective-C programmers. The "every call is a method" style will also be familiar to (very serious) JavaScript/ECMAScript programmers. The book authors also happily point out where Ruby adheres to true Object Oriented style where Java strays.

In short, it seems to combine all the good bits of the languages I love to use and love to admire.

When I have done more research I will deliver my verdict as to whether there is Ruby in my future or not.

Everything is an object?:

Literally everything is an object. There is no exception for strings or numbers (unlike some other OO languages), although you can use simple operators on objects (via operator overloading). For example, look at this example adapted from chapter two of the Ruby book

product1 = "Spam"
product2 = product1
product1[1] = 'h'
product1                    is: "Sham"product2                    is: "Sham"
product1 and product2 are local variables that each contain a reference to the same String object (which was magically brought into being by the double-quoted inline string literal. A lot like perl objects really.

The biggest thing that's NOT like perl is that data types don't automatically coerce based on context. So you can't, for instance, do something like 5 + "5" which really sucks for file handling etc.

Code blocks:

Gratifyingly, Ruby has a very clean implementation of code blocks/closures/anonymous subs (depending on your language speak). Once again, nothing that you can't do in Perl (and i'm not sure i like the do ... end syntax), but such a clean, genuine OO, implementation is an absoulte joy.


In Ruby, a range is not a list—it's, well, a Range. An object of type Range that is, and Ranges have some rather nice properties. Take the following code example adapted from this chapter of the Ruby book:

fileHandle.each do
    print if /start/../end/
It does what it looks like it's meant to do—prints any line in the input file that falls in between a line matching the regex /start/ and the one matching /end/. Not even Perl is that cool :) And if it was, Perl would call it DWIM—Ruby calls it the principle of least surprise...

Update: Of course Perl's flip flop operator can have the same effect - which should be no surprise to me ;)

09:48 PM, 22 Jan 2005 by Mark Aufflick Permalink | Comments (1)

Thinking of buying two mini's...

Just yesterday I was thinking of replacing my (5 year old) Honda S2000 with the new convertable Mini (Cooper S model of course...)

Now today after MacWorld SanFrancisco (having fun Tim?), It seems a Mac mini is in my future too. For AUD $799, it's a whole lotta Mac.

Good things come in small packages huh! Well, most good things...

Quote from

"The Mac mini is 2 x 6.5 inches. Your car stereo is 2 x 7 inches. Are you thinking what I'm thinking?"
- Matt Myers, System Administrator, Tru Playa

01:14 AM, 12 Jan 2005 by Mark Aufflick Permalink | Comments (0)

Gotta do something about this design

The brown was fun for a while, but the retro ascii art and square corners are grating even on me!

Does anyone have any favourite site deisigns they would care to offer as inspiration?

06:24 AM, 11 Jan 2005 by Mark Aufflick Permalink | Comments (0)

Peter Olufsen was the chairman of Bang & Olufsen from 1989 until last year and is the nephew of the B&O co-founder Svend Olufsen.

As if to show that a good mind can be turned to different things, his primary qualification is a degree in farming from the Agricultural University of Copenhagen. In London, he wrote papers on the effective marketing of Bacon!

You can never have too much bacon, and you can never have consumer electronic gear that is too sexy. Peter O excells in both things—running a pig farm that is 10 times the Danish average farm size and also having run one of the world's premier consumer audio brands.

It just makes me like the Danish people even more!

Of course there is a long history of people ignoring their degree. My old boss and friend Tim is very proud of his film making degree—it doesn't help his IT career much, but he's a great story teller!

08:42 PM, 07 Jan 2005 by Mark Aufflick Permalink | Comments (0)

Time to add another language/framework to my belt?

The Ruby on Rails Web application development framework ( ) looks really great. I have always liked the look of the ruby language, but never had reason to learn it (I already use too many!).

But as quoted on the homepage, "Rails may be the project to take Ruby mainstream".

From my cursory investigation, Rails looks like it would be very time effective from a developers point of view. I've also never regretted following Lars' lead on software (vis. emacs ;)

I'll let you know when I have a sample app done, but that will eb a while yet - Perl/mason and OpenACS are still filling my head :)

09:38 PM, 06 Jan 2005 by Mark Aufflick Permalink | Comments (1)

Wow, that was nerve wracking

In what turned out to be an exciting and reminiscing night, I upgraded the hard disk in my Color Classic (well - Performa 250) from 40MB to 1.2 Gb.

Luckily I had an old copy of service source 1.0 which happily ran on my G4 Powerbook under Classic. I safely navigated the CRT discharge procedure and reassembled it back to working order. I kept one hand behind my back just to be sure (keeping one hand behind your back minimises the chance of any electric shock passing through your heart).

I also swapped out the ethernet card in the LC PDS slot for the //e emulation card from my parent's old LC and now have a real (almost) hardware Apple //. It's actually even better than a real one because I can share some hard disk partitions under ProDOS for easy file transfer.

I have a UniDisk 5.25 drive as well, but I left the adapter cable for the drive at my parent's (hopefully they still have it).

So much fun :) Now I can get stuck into learning assembly programming the 6502 (it may have a 65C02 - I'm not quite sure).

The only downside is that my Color Classic has no ethernet card now, so I'm having to ferry files via a PowerBook 3400 that has ethernet and localtalk. If the person I lent my localtalk/Ethernet adapter to a few years ago reads this, can I have it back?!


Guess who forgot to put the self-termination jumper on the hard drive before re-assembling the Colour Classic...

I guess I'll just have to leave the long (and thus high-resistance) SCSI cable attached until I could be bothered fixing it.

On the plus side, I found the adapter cable, and so now I have an external platinum 5.25 floppy drive attached :) Pity I threw out all the disks years ago. Still, it sounds nice on the startup scan =)

11:27 PM, 02 Jan 2005 by Mark Aufflick Permalink | Comments (1)

What a difference a day makes

(With apologies to Jamie Cullum for the title)

A year is such a big thing, but so much can happen right at the end.

The tsunami in asia is well on it's way to being the second worst natural disaster this century (overtaking the 1/4 million deaths caused by an earthquake in China).

But good things can happen too, and I am very excited to be engaged to my best friend Kath :-)

11:16 PM, 02 Jan 2005 by Mark Aufflick Permalink | Comments (3)


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