Good espresso in San Francisco chain coffee shop
As a good companion, the (badly spelt) SpecialtysDirect.com is a fine bakery on the corner of Bush and Market. Their Thai chicken sandwich is good although their rendition of a ciabata roll tastes rather bagel-like! I haven't tried their online ordering system yet.
04:28 PM, 13 Dec 2005 by Mark Aufflick Permalink | Comments (0)
San Francisco at night
On the way back I met Walter. Walter doesn't like alcohol, it makes people do bad things. He had a "particular agenda" that apparently required a five dollar bill - he even swapped me one of his one dollar bills in exchange.
Last night I met Michael "the map man". He gave me the good oil on what areas to avoid and where Tom Lee Hooker's old haunts are. He knows a thing or two about Australia ("@#$% Botany Bay man") and is mad as hell about T.J. Hickey. Now I know which weekly papers advertise the best gigs, and which combination travel tickets will save me the most money. That should help me save back the three dollar "tip" I gave him.
Tonight at the Golden Gate Perk I listened in to the table next to me discussing the business plan for a new travel website targetting "party travellers". Apparently they're going to "take it to the edge" and it's going to be "viral". It will feature a travel weblogging feature so that the public users will make them "mountains of content every day" which they plan to leverage by hosting Google ad's and cataloging email addresses.
Later on in the night, the Bay area's 137th homocide took place in Mission - shortly after the town hall cancelled a public meeting on violence.
David Letterman was just chatting with someone from San Francisco - according to Dave San Francisco is colder in the summer than the winter, I sure hope that's not true - it's not the height of winter yet and my hotel sheet tells me the temperature range tomorrow will be 30 to 60 (that's farenheit people).
This place sure runs to a different drum.
01:08 AM, 08 Dec 2005 by Mark Aufflick Permalink | Comments (0)
Flat Merangue Gate
So here I am in the Golden Gate Perk purveyors of fine Coffee, lemon merangue pie and free wireless access, attempting once again. After attempting to describe the milk/water/froth combination of a flat white, the simplest description we could agree on was "something between a capacino and a latté". After stirring in the foam a bit more I have to say it's not a bad attempt! Certainly better than the "Special Blend" filter coffee I've been drinking all day to try and stay awake. In the end, CA autosys documentation was too much for me and I needed some real coffee!
09:44 PM, 05 Dec 2005 by Mark Aufflick Permalink | Comments (0)
United we stand
The Optus wireless zone doesn't seem to quite reach this far, so you won't be reading this until I get stateside.
I also had a random bag search before checkin, which was new. Thankfully I didn't also have my checkin searched after the metal detectors. I have learnt by now not to take aerosol cans in my hand luggage. I'm not sure when that became an issue but it's probably a hazard just like smoking in the toilets. It always amuses me that you used to be able to smoke on the whole plane, but now it's a "fire hazard".
The other interesting United experience is that the flight is overbooked, and there was an announcement that if you were willing to wait for the flight the next day they would put you in a hotel and pay you 800 USD. If I didn't have to work on Monday it would be seriously tempting!!
Ok - flight boarding now.
Onboard United (which is where I am right now) is an unusual combination of experiences. Unusual isn't really the right word, but Tom Jones is singing "It's not unusual" on my iPod right now, so it's the word I'm stuck with.
The first thing that hit me was the seat. The best way I can describe it is as a silghtly upmarket version of the Qantas business class seat from 2 revisions ago. Not the one before the business bed - the one before that. Part of the seat makes the United website a lyer (on top of being disorganised) and that was the 15 vdc Empower power port. The United website told me that I would be able to use my laptop power supply without an adapter. That means I need to stop blogging and get coding because I still don't have the SkypeMenuX project linking under XCode 2.2 yet.
The second thing that hit my was a glass of water. My glass of water. Tim will be no doubt rolling around his government funded office guffawing with mirth, or perhaps a small smile will creep onto his face as he knows all is right in the world. I thought perhaps a new era had dawned as I successfully negotiated four international flights earlier this year without spilling a single drink but I returned to regular form when I managed to spill a glass of water on myself anD my seat before we disembarked from the gate.
I guess an airline that has filed for bankruptcy can't afford new seats. Ironically the things I am loving are probably what sent it bankrupt in the first place. In great contrast to the BCG-designed efficiency of Qantas, the onboard service is impossibly good. After the usual champagne/juice/water before takeoff and a really long taxi (thanks to Sydney's 34R runway) came a drink and nuts. That's pretty standard, but the bourbon and dry was mixed for me, very well too, and the nuts weren't in a cost effective foil pouch - they were in a small dish and warmed to perfection. I honestly don't think I have eaten better tasting nuts.
The rest of the food was nothing to rave about but the wine choices were above excellent (Australian, French and Californian) and the service was again well above par. I've probably never had better service on a flight. The detail and demeanor of the staff matched Qantas first class.
Back to the fitout, the tv screen is abysmally small (again comparable to Qantas business class screens from the early 90s). That doesn't matter because the only movies worth watching are all on ther return leg. Unfortunately the headphone jack is different to all of the airline headphone adapters I have so i can't use my noise cancelling headphones.
Which brings me to another great thing - I think the iPod and podcasting are probably the best thing to happen to air travel recently. I don't have to put up with the looped music channels and I can listen to both Adam Curry and Dr. Karl while well above the clouds.
So all in all a mixed bag. I really hope I will be able to swing Qantas or BA for my flight to London in January though.
I'm a good few hours into the flight now (sorry, I'm not tempted to use the in-seat phone to upload this blog, so you readers get this in one hit) and I have two things to rave greatly about. Well three really. The first is Aaron Hillegrass's book on Cocoa programming. The sort-of-third thing is that Cocoa programming is so cool in the first place, but then you already knew that ;) The book is well written, wastes few words or screenshots, and is massively helping my self-taught Cocoa programming no end, and I'm only up to chapter 5. The other thing I want to do is reiterate my earlier comments about the United crew's service. Every time my glass of Bourbon and dry becomes empty, my friendly cabin crew asks me if I want a refill and knows wxactlly what I am drinking. That would be easy on the upper deck but here in main cabin business class there are more seats per crew member and I am mightily impressed. I guess it's also a testament to the clarity of Aaron's technical writing that it is still making sense (and compiling) after quite a few Bourbons and some Savignon Blanc. Dehydration be damned ;) If I can add a fourth, the backlit keyboard on my Aluminium Powerbook is a lifesaver with the cabin lights out. I feel sorry for the sucker in 22H with a Lenovo laptop running Windows XP!
06:19 PM, 04 Dec 2005 by Mark Aufflick Permalink | Comments (1)
Tracking my cygwin emacs debugging
I am going to keep a track of my research here. First backtraces fingers the garbage collector which would explain why it is somewhat random. I am keeping track of the stacktraces and other useful verbose stuff in the previous blog entry (cygwin emacs cvs stack traces) I have had the same backtrace a number of times now.
The exit is caused by hitting the default clause of a case LispCons in alloc.c which I am now printing to stderr. I know nothing about cygwin api's, but here goes nothing!
Update: my c is rustier than an outback dunny! case is the match point of the switch construct (I was thinking the other way around) so my stderr print was silly! Of course since the breakpoint hits before the process exits I was able to just walk one level back up the stack and use pr to dump the lisp object. (If you're trying to debug emacs, make sure you at least browse etc/DEBUG in the emacs source). The problem is that the lisp datatype checker has no idea what it is:
(gdb) pr obj
#<EMACS BUG: INVALID DATATYPE (0x07) Save your buffers immediately and please report this bug>
So it's no wonder the garbage collector is having trouble.
Update: gdb + google = easy debugging! It seems to be the same problem as this thread: http://lists.gnu.org/archive/html/emacs-pretest-bug/2005-01/msg00301.html
and this one: http://lists.gnu.org/archive/html/emacs-pretest-bug/2005-09/msg00079.html
Update: well none of the threads I found helped me any, they are all inconclusive... Since it's *just* garbage collection, I can run crash free by just eliminating the abort, but that leads to a super phat memory leak. Open 20 frames and you've use 88Mb. Close 19 of them and you are still using 88 Mb!
Update: Seems ok in normal usage (and with plenty of VM to soak up the objects where garbage collection fails) but I would really like to get this bug fixed as I will be using emacs on cygwin for some time.
Update: Bug is still there as of 2006-12-15. See this entry for a current patch.
08:35 PM, 01 Dec 2005 by Mark Aufflick Permalink | Comments (0)
cygwin emacs cvs stack traces
461 kill (getpid (), SIGABRT);
(gdb) bt
#0 abort () at emacs.c:461
#1 0x200efb11 in mark_object (arg=536989607) at alloc.c:5613
#2 0x200f048f in Fgarbage_collect () at alloc.c:4955
#3 0x20104673 in Feval (form=541751997) at eval.c:2116
#4 0x20103398 in internal_condition_case_1 (bfun=0x201045d0 <Feval>,
arg=541751997, handlers=539968089,
hfun=0x200a2aa0 <menu_item_eval_property_1>) at eval.c:1506
#5 0x200a2b32 in menu_item_eval_property (sexpr=541751997) at keyboard.c:7176
#6 0x200aeece in get_keyelt (object=540125025, autoload=1) at keymap.c:811
#7 0x200af523 in access_keymap (map=539900333, idx=539933345, t_ok=2,
noinherit=0, autoload=1) at keymap.c:643
#8 0x200a37fc in tool_bar_items (reuse=566309892, nitems=0x22dcf8)
at keyboard.c:7631
#9 0x2001d18f in update_tool_bar (f=0x212c4400, save_match_data=0)
at xdisp.c:9193
#10 0x2002b080 in prepare_menu_bars () at xdisp.c:8899
#11 0x2002bd2e in redisplay_internal (preserve_echo_area=7) at xdisp.c:10584
#12 0x200a7011 in read_char (commandflag=1, nmaps=2, maps=0x22e920,
prev_event=539912193, used_mouse_menu=0x22e968) at keyboard.c:2535
#13 0x200a99f7 in read_key_sequence (keybuf=0x22eac0, bufsize=30,
prompt=539912193, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:8840
#14 0x200ab511 in command_loop_1 () at keyboard.c:1523
08:06 PM, 01 Dec 2005 by Mark Aufflick Permalink | Comments (0)
One million miles in 56 days - just in Canada!
I just sort of moved it to a new level
Marc Tacchi, part time commercial pilot, set about to clock up 1 million miles of air commuter travel armed only with a C$7,000 Air Canada North America Unlimited Pass that allowed him unlimited travel within Canada during October and November.
He did it literally with days to spare, as journalled in his blog Marc Tacchi - The Great Canadian Mileage Run 2005.
Reuters have a nice summary article Very, very frequent flyer hits 1 mln goal.
That guy is a legend! 1 million miles in a month - It's the stuff of dreams :) Although I would hate to do it on domestic flights!!
06:12 AM, 01 Dec 2005 by Mark Aufflick Permalink | Comments (0)
My first United flight
My first surprise (of the unpleasant variety) is that the United online system really sucks. It's called Ted (part of United) which is cool, but that's about where the coolness ends.
Searching for flights was confusing in a number of ways: does "2nd day" mean it lands the day after departing or 2 days after?; why can my travel agent book flights that don't even appear in a web search.
I have obviously signed up for the United Miles Plus program which was painless and free, but the Miles Plus website really makes me feel like a consumer not a member. I have been spoilt by the Qantas frequent flyer online system which lets you see your forward bookings (literally before you hang up your phone with the Qantas rep) and other fun stuff. Not only does the United Mileage Plus site not do much, you have to keep going backwards and forwards between "My Mileage Plus" and "Mileage summary" which involves a change from https to http (and a browser confirmation dialog) and a login check redirection page (with related delay).
Let's hope their service and lounges is better than their technology!
07:34 PM, 30 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Sun to integrate PostgreSQL into Solaris 10 [software.newsforge.com]
The sort of things that are implemented in MySQL or Sybase are much better (IMO) developed on Postgresql. The only impediment to being a total replacement for all enterprise DBMS products apart from Oracle is better replication support. Even many applications using Oracle would be excellent candidates for Postgres if they are not using Oracle's real winning features like the Media server.
10:14 PM, 23 Nov 2005 by Mark Aufflick Permalink | Comments (0)
del.icio.us uses perl/mason
System error
| error: | Can't call method "prepare" on an undefined value at /www/del.icio.us/comp/user/get line 13. |
||||||||||||||||||||||
| context: |
|
||||||||||||||||||||||
| code stack: |
/www/del.icio.us/comp/user/get:13 /www/del.icio.us/site/dhandler:194 /www/del.icio.us/site/autohandler:108 |
I'm surprised they don't use some sort of global cache for prepared statements - that query must get run a LOT.
06:50 PM, 23 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Reading Bill Atkinson Code
It's the software cool equivalent of Woz's disk drive controller :)
08:32 PM, 22 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Java, Ruby on Rails and Buzzword compliance
The real heart of it in my opinioin though, is eloquently summed up by this comment from James Duncan Davidson - author of the Java Servlet API.
... I think that's the real win from the recent attention on Ruby on Rails and the breakaway from viewing the world with Java-colored glasses. It's not that Ruby on Rails is going to be the next Java. Far from it. It's that Ruby on Rails helps to break this idea that there is "One True Way." There's not. There are many different ways to solve a problem. And really, none of them is the clear-cut winner. There's just places where one solution has advantages.
Hooray! Yes, Java is best of breed for some things (eg. cross platform sand-boxed gui's), but so is Ruby (Rails web apps). And so, for that matter is Perl (system glue, reporting); Objective-C (many things - if only Yellow Box was still available); etc.
It is an unfortunately popular belief that there can be a single language/framework that suits all (or even most) problem domains. If developers really believe that, why do their applications nearly always contain two languages? How's that? How about Java+SQL? or Perl+JavaScript? or PHP+ActionScript? The truth is that languages/frameworks tend to model some real world problems better than others.
Hilbert's Universal algorithm is unsolveable. Einstein wasn't able to find his Theory of everything. It's probably not possible to create a universal programming language that is best suited for all problem domains.
Perhaps the obscene difference in LOC (lines of code) between equivalent J2EE (Java) web-apps and equivalent RoR (Ruby on Rails) applications will be a clear way to explain these facts to business stakeholders. In case your particluar business stakeholders need an analogy, Davidson offers this:
It's like the structures that we work, eat, and live in. Some structures are best built with concrete and steel. Others with masonry. And yet others are best built with timber. Nobody has jumped up and said "All buildings must be built with bricks!" And there's a good reason for that. It'd be stupid. In a similar vein, not all web applications should be built with Ruby on Rails or Django or J2EE or Perl. There's a multitude of tools for any particular job. And there are new ones waiting to be discovered. The trick is determining the best one.
Will the days of buzzword-compliance one day be behind us? Perhaps we are entering a time of cool-compliance.
What irritates me is that in the "applet" space that Java invented, you look at Flash(plus Flex/Laszlo) and it crushes applets in both "cool" (get me to a good user experience quickly) and "powerful" (I get data binding/SOAP/XML-RPC/etc. for free). The fact that the "powerful" side of that isn't in the core JRE immediately kills the usefulness of applets, and if anyone can show me an applet that looks anywhere near as good as the Laszlo Dashboard demo in a similar number of lines of code, I might have a coronary on the spot. "Cool" counts for a lot, too.
Back in the day, an "Enterprise" executive would get back to his office from a trip and show you the in-flight magazine advertisment for Cisco routers, Java webstart or whatever, and ask "why aren't we using this - everyone else is". Now it's more like "My iPod is easy to use, and it looks great. Why doesn't our intranet work like an iPod".
While any form of artificial compliance is bad, I would much prefer being directed to be compliant with cool than the latest buzzword :)
10:17 PM, 21 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Why is large-scale code reuse still an unsolved problem ?
I have always been interested in the challenges of code reuse and lately have been thinking about my direction and the direction of the technology industry as a whole.
There has been some excellent commentary and discussion in Lars Pind's blog post Why Rails won't become OpenACS, or Rails is cool, but can we have a login system? which itself was a follow on from his post Reuse-in-the-large is an unsolved problem: Why I left OpenACS for Rails.
The thinking behind these posts came from this online sample chapter from Facts of Software Engineering Management by Robert Glass (in addition to Lars' experience). The sample chapter is an excellent and provocative read. It looks like an excellent book for anyone who is serious about furthering their understanding of the software development process. Time to track down those good technical book stores in Sydney (that I have been assured exist!).
04:18 AM, 17 Nov 2005 by Mark Aufflick Permalink | Comments (0)
SCO Asserts Its Rights to Almost Nothing [www.groklaw.net]
My prediction in that first posting was:
In the end, I suspect the whole thing will fizzle into an expensive bad idea hatched by some genius inside SCO who just didn't think the whole thing through very carefully.
And it looks like that's exactly what's happening. SCO is grasping at such thin straws now that their court submissions have the most basic of flaws in them.
Go read the Groklaw article, it's an amusing way to spend a few minutes :)
12:41 AM, 15 Nov 2005 by Mark Aufflick Permalink | Comments (0)
RIP Peter Drucker [news.com.com]
06:25 PM, 13 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Presentation Zen compares presentations by Bill Gates and Steve Jobs [presentationzen.blogs.com]
My point in comparing Jobs and Gates is not to poke fun but to learn.
In this nicely written piece, the author does this well. The negative effects of powerpoint on our presentations are well discussed elsewhere (such as in Tufte on Powerpoint), but applying the concepts of Zen to public presentation hits a true note.
Simplicity means the achievement of maximum effect with minimum means.
-- Dr. Koichi Kawana
Presentation Zen also has an earlier post discussing the negative sides to Bill Gate's presentations in Bill Gates and visual complexity.
Which reminds me that this site is in desperate need of a Zen-like overhaul. Maybe it's time to put Ascii-Art back into the 80s :)
09:06 PM, 10 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Cocoa and the emerging software market [blog.x180.net]
As my readers will know, I'm starting to dabble with Cocoa development in my spare time. I'm now learning to use Cocoa Bindings (and here) - truly inspiring stuff. I'd love to hang out with the framework designers at Apple :)
06:13 PM, 10 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Google Map Risk [www.ashotoforangejuice.com]
01:13 AM, 10 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Six Stages of Debugging [www.68k.org]
- That can't happen.
- That doesn't happen on my machine.
- That shouldn't happen.
- Why does that happen?
- Oh, I see.
- How did that ever work?
12:33 AM, 10 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Outlining
I got thinking about outliners today when I found the excellent articles on http://www.atpm.com/ :
- Outliner History
- Outliner Features-Part 1
- Outliner Features-Part 2
- Outliner User Interfaces
- There are more! Just search for "outliner" on http://www.atpm.com/
The problem is, no one thinks in quite the same way, so there is not really a one-size-fits-all outliner. Strangely, if you read around the web, most people's real favourite outliners are discontinued applications. Programs like MORE or NisusOutliner are very popular - and yet no longer sold! MORE is mercifully freely available, but as it is a Classic Mac application, using it is slightly frustrating and will be impossible on Intel Macs.
My problem is even tougher : I have never found an outliner that suits me as much as the standard outliner in the Apple Newton. There is something about the physical and tactile feel of holding a sizeable unit and using a pen to write and draw. The Newton enhances on the qualities of paper by letting you reorganise, edit, fold etc. Everything that outliner software does for you, but on a small tablet.
I still use my Newton, but the complexity in communicating between it and my Mac are too frustrating for normal use. If truth be told, the jeering I get when using it in public are probably more of a barrier!
I have often toyed with the idea of writing my own outliner application. Perhaps now is the time to actually do it. Maybe I will be lucky and Apple will release an OSX tablet soon, and I can Inkwell-enhance the outliner. Then, at last, my Newton can enter into a well deserved rest!
07:33 PM, 09 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Photo's now moved to 23 [www.23hq.com]
I'm glad I waited, because there is a new photo hosting site that I really like - 23. It's simple to use, I like the way they are trying to bring local photo printing companies online, and I like that it's based on OpenACS!
I have a lot more photo's to upload, and the dates/tags/titles are not up to date yet, but it's a start. The "Photos" tab on this site will currently just take you to my album on 23 but I plan to put my own front end on it using their RSS feed so that the user interaction remains on this site.
23 is great. It's totally free - no ads either. The sole limitation of the free account is that you are limited to 20Mb uploads a month. To upgrade to unlimited uploads is only 29 Euro for the year.
07:26 PM, 08 Nov 2005 by Mark Aufflick Permalink | Comments (0)
I decided it was time to get started into writing Mac Cocoa applications, but where to launch my software and keep people up to date with progress?
Mark's Software : http://mark.aufflick.com/software/
and
Mark's Software Blog : http://mark.aufflick.com/software/blog/
And to launch it, my first real MacOS X Cocoa application, SkypeMenuX. It's, like, a menu ... for Skype. Check it out.
01:43 AM, 01 Nov 2005 by Mark Aufflick Permalink | Comments (0)
Comparing Programming Languages
Here is some material that I have come across recently that strikes me as useful:
Colourfully titled essay discussing some flaws of comparing languages: The Computer Jihad
Insight into how and why a startup might choose a programming language: Beating the Averages
Two tables comparing the availability of selected features in a range of languages: 12
The final one is the report of some fascinating research. It attempts to allocate a level to a langauge based on the number of lines required to achieve certain Function Points:
http://www.theadvisors.com/langcomparison.htm
I find this last one particulary interesting because it looks at the effectiveness that a language delivers to the developer rather than a simple comparison of features. For example, the designers of Java and C++ chose to be strict about features for valid reasons, but it turns out that the result of that strictness is much more developer effort. Agile languages such as Perl, Ruby and Python score well on this metric as many would expect (Lisp didn't score well but Eiffel did). What I wouldn't have expected until recently was for Objective-C to score so well. While Objective-C relies on very simple extensions to the standard C syntax (which scored 2.5), the concept behind it is so powerfull that it scored 12. Almost as high as the agile languages at 15.
What this means is that you can write (a certain class of) programs in Objective-C with a similar number of lines to what would be needed in Perl or Ruby. Yet Objective-C is all the things that people say are missing in Agile languages (like the speed and obfuscation of native compiled code for example).
As Ovid said (see the first link), there are valid reasons to choose different languages in different situations. After browsing a lot of analysis of features and effectiveness, it is hard to see how Java or C++ could ever be the right choice (with the exception of Java for binary distributed cross platform gui applets).
I'm sure some readers have feedback to give on this post :)
11:43 PM, 20 Oct 2005 by Mark Aufflick Permalink | Comments (0)
How Apple Does It [www.time.com]
Grossman does give some good insight into Apple's current practises that enable this, which is worth the read, but the answer given in general is Steve Jobs. All the three innovations listed (the Apple II, the Mac and the iPod) are Steve's babys. The Apple II was Steve Jobs + Steve Wozniak, the Mac was Steve Jobs + Burrell Smith + Bill Atkinson + Jef Raskin + Andy Hertzfeld, the iMac was Steve Jobs + Jonathan Ive and the iPod was Steve Jobs + Jonathan Ive + PortalPlayer.
Let's look at those projects some more:
- The Apple II was Jobs taking Wozniak's brilliant machine, guiding it's development and identifying the market.
- The Mac was Jobs driving a project against the wishes of the (then) Apple management
- The iMac was Jobs dragging a (then) reluctant Apple corporate machine in yet another crazy scheme
- The iPod was Jobs obsessively refining a seemingly simple product into not a category killer, but a category definer
(Yes this is a simple and general discussion - if you want information to dispute this, you should read Insanely Great and Folklore.org).
Between the Mac and the iMac of course, there were some terrible times. Really the two good things to come from that time were the PowerPC changeover and the Newton. Of course as we all know, Apple botched the PDA market and Jobs canned the project when he came back. I wish he hadn't, but I understand why he did. And how did Apple make up for the years lost in aimless Copeland/Taligent/Pink development? By modifying NeXTstep - one of the companies that Steve built in his forced Apple exile.
Steve Jobs is not perfect, but he does some things well. And now we have the video iPod. As Adam Curry said in the Daily Source Code a few days ago, "f#$%ing brilliant Steve, f#$%ing brilliant".
So lets see what useful info did Grossman collect (other than being thoroughly charmed by the reality distortion field).
Steve Jobs told him a short story, the "Parable of the concept car":
You know how you see a show car and it's really cool, and then four years later you see the prduction car, and it sucks? And you go, What happened? They had it! They had it in the palm of their hands! They grabbed defeat from the jaws of victory!
That sounds a lot like the question addressed to Intel's CEO Paul Ottelini by a Wall Street Journal journalist:
Why are Intel's demo products always cooler than the actual products its customers make?
No wonder Apple and Intel are getting along.
Another thing that really caught my eye was when Grossman was comparing the "success" of Apple (Steve) with the "success" of Microsoft (Bill) he said this:
But Job's doesn't just care about winning. He's willing to lose. He has done it often enough. He's just not willing to be lame, and that may, increasingly, be the winning approach.
Always has been in my book.
My last quote (I promise) is this:
What Jobs has accepted—the truth that he's willing to face and others cower from—is that new things don't want to be born. Innovation causes problems, and it's much easier to avoid it.
Worth buying Time for just that article.
Update: More press is giving Steve a good time - an independant panel assembled by USNews voted Jobs among the top 25 "America's Best Leaders". Also honoured in the list were Bill & Melinda Gates, Condoleezza Rice and Oprah!
http://www.usnews.com/usnews/news/articles/051031/31intro.htm
08:46 AM, 20 Oct 2005 by Mark Aufflick Permalink | Comments (0)
Tate Salvation
This morning however, an entirely different story. I spent some time wandering around Tate Modern which thoroughly lived up to its reputation. Anyone with an interest in modern art must visit it at some time. If you are interested in architecture all the better, because the gallery is housed in a majestic old power station - the original architect was Sir Giles Gilbert Scott who also designed the iconic British red telephone box.
Then for a break I popped into the calm, cool & quite stylish Salvation Army Cafe where I paid an astoundingly cheap 80p for a 500ml bottle of vanilla coke (which is hard to come by in London at any price). It also claims an "internet hot spot", but I didn't have my laptop with me to test it out.
09:49 AM, 12 Sep 2005 by Mark Aufflick Permalink | Comments (0)
Foyled again
The coffee is undrinkable. I leave a coffee unfinished less often than a University student leaves a free beer unfinished (I only recall doing that once - and it was Swan Gold...), but after only three (3) sips I won't be drinking any more. The spirit of Rutho failed me and I couldn't be bothered complaining.
Furthermore, the free wifi doesn't work either. My Powerbook found the access point fine, but their DHCP server wasn't listening hard enough apparently, and OSX boldly, but in futility, self-assigned it's own 169 address.
05:07 AM, 08 Sep 2005 by Mark Aufflick Permalink | Comments (0)
In London, is a Mac a McIntosh?
It's also tempting to buy a new 15" Powerbook here. With the current exchange rates, they are quite a few hundred dollars cheaper than in Australia. The main reason I definately won't is because of the wacky UK keyboard layout. Not that I'm afraid of different keyboard layouts (every keyboard I use is different - especially my Kinesis-Ergo contour!), but the UK keyboard as implemented on Apple laptops has a horrendously hard to hit return key. The left shift is also smaller than normal. It's not as bad as the insane backspace key on some PC keyboards, but still offputting. I don't like the new-ish silver PB keyboards as it is.
On the plus side, the trackpads on the new PBs are MUCH better than on my original model Tibook.
Nothing too interesting in the genius bar either, so it's time for my next stop - let's see where I can get wireless next!
Update: I decided to go and checkout the training session anyway. The interesting thing is that of the probably 50 people there, I counted exactly two (2) listening to the session. Everyone else was just taking advantage of the comfy seats and free wireless. Maybe they were taking notes on their Powerbooks? Well, some were so blatant as to wear their iPod headphones, and I even spied one Windows laptop! I was grateful for the seat though, because my back was really sore from loads of walking with my Crumpler bag slung over one shoulder.
08:43 AM, 05 Sep 2005 by Mark Aufflick Permalink | Comments (0)
Free wireless & cheap Leica's in London [www.cameracafe.co.uk]
As you walk in you can browse the coolest of second hand Leica's, large format and regular SLR cameras.
Past them is the very friendly and helpful café staff who put up with me trying to describe how a "flat white" coffee should be made (a foreign name over here - does anyone know if it is specific to Australia?).
The coffee is good and the wireless is free :) They ask for a donation, which is more than fair since you can use it as long as you like and the drinks are well priced.
The perfect place to while away a few days teaching myself Cocoa development. (After I've visited the London Apple Store that is :)
07:48 AM, 05 Sep 2005 by Mark Aufflick Permalink | Comments (0)
London - Hot, Sunny, Humid!
Ironically, one of my first ever weblog posts (on my long gone first blog - I can't even find it on the wayback machine because I can't quite remember it's url...) was titled London, 6am, cold, raining!
Roaming on wireless over here, I have discovered how terrible IMAP (and OSX Mail.app in particular) is over high latency connections (may mail server is in Sydney).
High latency connections also make you do more than one thing at once (while you're waiting for a conneciton to open etc.) and that makes me realise how much I depend on virtual desktops X-Windows style. OSX-sexiness aside, boring old virtual desktops are my favourite - I get virtual desktop functionality in OSX from Desktop Manager, and I constantly wonder how I lived without it. Fortunately it is now (according to it's website) Tiger compatible, so all my pre-requisites are now met to allow me to upgrade. Not while I'm travelling though - I don't like to live quite that riskily! (is that a word?)
06:13 AM, 05 Sep 2005 by Mark Aufflick Permalink | Comments (0)
Off to the Motherland
I *really* hope we win this test, otherwise I will have to hide my Aussie accent in shame...
02:14 AM, 26 Aug 2005 by Mark Aufflick Permalink | Comments (1)
Social bookmarks as a Podcast [blog.del.icio.us]
dsl.icio.us is what powers my site's "Recent Links" box that you will see just to the left. You can see every link I have ever bookmarked with del.icio.us at http://del.icio.us/aufflick .
Well the del.icio.us guys have just had a brilliant idea, and added enclosure support to their RSS feeds where the enclosure is driven by the file extension of the bookmarked url (not foolproof, but very simple & intuitive). What does this mean for you? Well, take this example:
http://del.icio.us/rss/tag/system:filetype:mp3+mashups
That's an iTunes compatible Podcast reflecting every mp3 file that any del.icio.us user has bookmarked and tagged with the keyword mashup.
Pretty damn cool if you ask me!
02:18 AM, 22 Aug 2005 by Mark Aufflick Permalink | Comments (1)
Pretty Printing objective C with GNU a2ps
To have a2ps recognise and nicely print your Objective C source files, you just need to make the following changes to /usr/share/a2ps/sheets/sheets.map
Search for "octave" and comment out those lines like so:
# octave files #octave: /*.octavescript/ # /*.m/Then add a line for objective c like so:
# objective C objc: /*.m/If you also want your header files to be highlighted with the objective c stylesheet (instead of the default c stylesheet), use the following entry instead:
# objective C
objc: /*.m/
/*.h/
11:17 PM, 16 Aug 2005 by Mark Aufflick Permalink | Comments (0)
RAID1 Installation of an Apple XServe G5
I encouraged a friend to buy an XServe for his business, so it of course became my job to install it. I also told him to buy a second drive so we could set up drive mirroring.
So far so good. Connecting Point in Melbourne were able to ship an XServe G5 to Sydney faster than we could get one in Sydney, and it faithfully arrived a few days later.
All good so far.
I performed the very simple remote installation assistant/wizard - nice and easy. Except it didn't ask me about disk partitioning. Hmm. The supplied OSX Server manual (which is marked as for MacOS X Server 10.3 and above) was fairly useless for setting up a headless XServe G5 with OS 10.4 (supplied). It contained useful suggestions like "connect a monitor to your server" and "consult the XServe manual for instructions on how to boot your XServe from the internal optical drive". The (fairly thick) manual supplied contained very thorough information on booting from an external optical drive, but not the internal one.
I also couldn't install the OS X Server admin tools on my 10.3 Powerbook (which the manual promised that I could) - luckily my friend had 10.4 on his 12" Powerbook. That won't help his office once he goes overseas, but hopefully the iMac that we killed by running a 10.4 upgrade on it will be fixed soon!
Thankfully, AFP548.com have a great article called Headless Xserve G5 installation instructions.
The instructions are for 10.3, but the only difference in 10.4 was some slight name and location changes of the command line tools - otherwise it all worked perfectly.
One thing that did have me freaked for a little while was that the installer command line tool counts up to %1.0000 - when it only got to %0.0500 in 5 minutes I thougt I was in for a long night!
I still have to figure out how to do software updates and shutdowns remotely with an admin tool, since I don't want to ask my friend's staff to ssh in as root to their server...
All in all it was a little disappointing. By far the easiest commercial Unix installation I have ever done, but I was really hoping that it would be a Mac quality experience which it just wasn't.
07:03 PM, 15 Aug 2005 by Mark Aufflick Permalink | Comments (1)
Gustaf Neumann (also member of the OpenACS team) and Uwe Zdun present some fascinating ideas, which get to the heart of what has been troubling me for some months now. The driving force behind this paper, in a few nutshells, is:
"[Agile] languages provide features like dynamic extensibility and dynamic typing with automatic conversion that make them well suited for rapid application development.
and:
"Large applications typically entail complex program structures. Object-orientation offers the means to solve some of the problems caused by this complexity, but focuses only on entities up to the size of a single class. The object-oriented design community proposes design patterns as a solution for complex interactions that are poorly supported by current object-oriented programming languages.
and yet (generalising for all scripting languages):
Since [agile languages are] designed for glueing components together, [they are] equipped with appropriate functionalities, such as dynamic typing, dynamic extensibility and read/write introspection. Many object-oriented [Agile languages and extensions] do not support well these abilities in their language constructs. They integrate foreign concepts and syntactic elements (mostly adopted from C++). Even less appropriate is the encouraged programming style in structured blocks and the corresponding rigid class concept, which sees classes as write-once, unchangeable templates for their instances. This concept is not compatible with the highly dynamic properties of the underlying scripting language.
Taking Perl, which I do a lot of OO development with, I can agree completely. Perl gives you these amazing flexibilities with which to block together your requirements in double time. When you start to want to develop larger systems you turn to your abstraction of choice - mine is OO (for you it may be functional programming or somethig else).
Once you have signed on to the OO bandwagon, you get design patterns and all sorts of mental tools to help you, but you start to find that your flexible "agile" language of choice starts to become, well, less agile.
Allow me an example. On a large telco project, we wanted to introduce heavy-weight error handling, to allow full error detail to be passed around to logs, web front ends, SNMP traps, tyou name it. One of my (blog-less) colleagues, Ryan, came up with a good system that used source filters to take care of clearing the error stack so you didn't have to remmember to. Source filters are a great example of a flexibility that an Agile language can offer you, but they are a sledge hammer ill-suited to OO code. For example, how about automatically bubbling the error up from one method call to the next. We didn't want to use exceptions, because we wanted to be able to raise non-fatal errors that would not alter the flow of execution. We resorted to requiring the developer to remember to surface any errors that might have been generated by a method call, but this is error prone and nigh-impossible to test for.
What we really wanted in this case, was a way to hook into the inputs and output of every method call. I discovered that apparently people have thought of this before ;) and called it Aspect Computing. This turned out to be devilishly difficult to implement in OO Perl (and frustratingly it is apparently possible in Windows COM development).
It is exactly this filtering example that Uwe and Zdun describes in the whitepaper.
My example may not have made any sense to you - it is perhaps too specific. To make sure I haven't put you off reading the paper, allow me to paste in the paper's conclusion:
The intention of this paper is to show that object-oriented scripting languages and the management of complexity are not contradictory and that it is possible to handle complexity with a different set of advantages and tradeoffs than in ``systems programming languages''. Scripting is based upon several principles of programming, like using dynamic typing, flexible glueing of preexisting components, using component frameworks etc., that can lead towards a higher productivity and software reuse. We have introduced a new language construct, the filter, that offers a powerful means for the management of complex systems in a dynamic and introspective fashion. It would have been substantially more difficult to implement dynamic and introspective filters in a systems programming language. We believe that both scripting and object-orientation offer extremely useful concepts for a certain set of applications and that our approach is a useful and natural way to combine them properly.
But please do youself a favour and go read it yourself: Filters as a Language Support for Design Patterns in Object-Oriented Scripting Languages.
06:32 AM, 14 Aug 2005 by Mark Aufflick Permalink | Comments (0)
Adding C to your Perl is easy!
There is a CPAN module Inline that makes it easy to inline other languages inside Perl modules (or scripts). With Inline::C you can inline C code, and it will be wrapped, compiled and linked for you (it's only re-compiled if your source changes).
You can call C procedures from Perl, and Inline::C will translate simple scalars for you (int, char *, etc). Or you can use the perl api C macro's to realtively simply access arrays and hashes etc. You do need to increment and decrement the scalar reference counts your self, but if you've been a heavy Perl programmer for a while you probably are used to keeping reference counts in mind.
To whet your appetite, it goes something like this (example simplified from Inline::C-Cookbook
#!/usr/bin/perl
print "SQRT(9^2 + 5^2) = ", pyth(9, 5), "\n";
use Inline C => <'END_C';
double pyth(int x, int y) {
return sqrt((x * x) + (y * y));
}
END_C
03:00 AM, 12 Aug 2005 by Mark Aufflick Permalink | Comments (0)
Looking for new Noise Cancelling Headphones
But my Sony MDR-NC5 noise cancelling headphones are a little the worse for wear. The (non-replaceable) outer foam cover has all but disintegrated which makes them a tad uncomfortable. The noise-cancelling intermittently cuts out in the left channel and I need to jiggle the cable where it comes out of the right ear (where the battery is).
Does anyone have any recommendations? I'm sure one or both of the Tram Town boys have an opinion on noise cancelling audio equipment :)
Update: Unfortunately the RP-HC100 is a superceded product.
Update: It seems the updated Sony model (the MDR-NC6) has the same comfort issues as my old NC-5 (see user review on the Apple Store).
Update: The mid-range Sony MDR-NC20 cans are nearly universally loved (wheras most of the models get mixed reviews) - see the Amazon customer reviews.
Helpfully, Digital City here in Sydney has 10% off headphones at the moment, but Australian prices are inexplicably higher than overseas prices. The MDR-NC20s sell in the US for $USD77-119 (which translates to $AUD102-158), but even including the 10% discount we're talking $AUD269. That's 70% ON TOP! Sheesh.
I've emailed some outlets in Changi Airport to see what price they can do on the Sony MDR-NC20, JVC HA-NC100 and Panasonic RP-HC100 (since some online retailers are listing it as still in stock).
04:04 AM, 11 Aug 2005 by Mark Aufflick Permalink | Comments (2)
PDF Plugin's for Safari (plus a World Clock for good measure)
While Googling how to remove it, I came across an excellent Quartz based PDF plugin for safari from Schubert-IT. I'm not sure if I prefer it yet, but it seems pretty good.
While I'm plugging shareware Mac software, I think I love World Clock Deluxe from MaBaSoft enough to deploy some permanent disk and cpu to it (both scarce on my TiBook) and register it. It's great when you want to iChat/Skype someone overseas and want to be sure of the time.
12:06 AM, 11 Aug 2005 by Mark Aufflick Permalink | Comments (0)
Apple's Mighty Mouse [www.apple.com]
Apple has finally begun to apply a little bit of innovation to the humble mouse and the result is the (less humble) Apple Mighty Mouse!
In a sign of the influence Apple is regaining, the media lemmings have written a slurry of articles - all about a mouse! The New York Times published a remarkably well thought out article "Apple Offers a Mouse to Counteract the One-Button Blues".
10:49 PM, 02 Aug 2005 by Mark Aufflick Permalink | Comments (0)
Macy's Brand to replace Filenes [www.businessweek.com]
09:03 PM, 28 Jul 2005 by Mark Aufflick Permalink | Comments (0)
Lars Rasmussen - Google Maps
Google maps came from a startup acquisition where Lars worked with his brother and two other developers. They were developing a native windows map navigation application and had been looking for funding. There is an interesting story about how they ended up being acquired by Google rather than recieving wad loads of VC funding, but I will wait for Lars' approval before I post that one.
The thing is, Google is a web company so Larry Page (Google co-founder) asked what they could do with mapping on the web. In a way perhaps not dissimilar to "sound by monday", they had to come up with something fast. Split into two teams of two, while one pair investigated a plugin route, Lars and his brother investigated what could be done using DHTML and javascript. That prototype became Google maps as we know it today.
Out of that history, Lars has an interesting viewpoint on the difference between producing a native application versus a rich web application. Here are some bullet points paraphrased from his slides and talk:
- Consider integration between native app and web app to deliver both convenience and richness
- The native sexiness not available to web apps will shrink
- Explosive growth in 1 day is unlikely for downloadable applications
- Google: The only thing that is required is that something is useful to users
- If you can attract large numbers of users, there will always be a way to monetise it
- End user is royalty
- Go beyond the browser Lowest common denominator - the functionality and implementation doesn't have to be the same for all browsers
- eg: overlay direction lines: in firefox is a generated at the backend as a transparent png; in IE it is done with vml
- Do what it takes! Harness the power of optimism. If you're not crashing the browser, you're not pushing it hard enough.
- Launch early & often; harness the power of your users to get attention and market feedback - Google maps got around 5,000 emails a day when it launched
- Web applications allow rapid fault resolution
- The pain of cross platform/browser web development is still far less than the pain of cross platform native application development
- Web deployment allows rapid deployment of bug fixes which in turn allows earlier (ie. riskier) releases
Lars then gave us a short insight into some of the implementation details including the map tiling and hidden iframe based navigation.
- A problem is that you are doing things beyond the design intentions of the browser eg. forward/back/print buttons
- When you are implementing application sexiness, you need to be careful not to break the simplicity of the browsing experience.
- Harness/Link the forward and back buttons to what the user would expect - try it in IE/google maps. Removes the need for popups
- Google implementation: content navigation happens in an iframe - the iframe browsing history are recorded within the IE history, as does the content of edit fields (not true in all browsers)
- attached an event handler to the iframe, when it changes, put that content into the main page, hide the iframe (I assume the link still needs to target the iframe), also need handler to copy the input field from the copy back into the iframe
- when copying the content, the urls are rewritten to target the iframe
Lars also spoke about the rise of google map hacks, the problems that lead to with their content providers and, as we know, the happy ending that is the google map API. There are some interesting outcomes of public access to your code (which is unavoidable with a jaascript based product).
- www.busmonster.com
- bloggers will describe your design more accurately than your design document
- you WILL be reverse engineered - design your models and publish an API to avoid the pain & encoourage a community to build around you [Mark's thought, not from Lars' slides]
- rss feed to code.google.com featured project link
- after 3 weeks of the api being published, there are 2,500 developers in the discussion group
Future Gazing
Short term
- renewed interest in AJAX
Long term
- increased access to host machine resources
- better development tools
- secure 'greasemonkey' like extensions (loaded javascript has the same access as the viewed page eg. cookies) - the browser needs a richer security model
- need more flexibility to control the behaviour of the next/back/print/save buttons etc.
- But: need to maintain the simplicity of 'surfing' experience
- Choose a development model that suits your application
- demo's have a much bigger impact within google that requirements document
- the process becomes more formal as the product becomes more mature (& therefore has more to protect)
- Google mission statement: organising information.
Sorry for the unstructured nature of these notes - they are a copy/paste from my outliner - I will try to improve them soon!.
Update: CNet have posted an article on Lars' keynote ( Google mapper: Take browsers to the limit). It reads nicer, just like a real journalist wrote it (as opposed to me!). It always astounds me though, just how innacurate an image you can get of someone's message when it is wrapped with hyperbole like "As such, Rasmussen remains disappointed with Google Earth" (which he is not) and inserted words like "Google is looking for Web mapping experts to beef up its Sydney office" (all he said during the keynote is that they are hiring, and actually they are looking for machine learning and data mining experts).
05:15 PM, 28 Jul 2005 by Mark Aufflick Permalink | Comments (0)
Want to buy a Honda S2000 ? [drive.com.au]

As per my ad in drive.com.au, I am parting ways with my beloved car (sob)! I'm a sensible married man now, with no need for a sports car to heighten my attractiveness to the opposite gender ;)
Seriously though, it is a top car - if I get time I will link to some reviews of it - but this side of the Porsche Boxter S, it's only competitor is the Nissan Z convertable (which is nice too!)
It has a Totally rad (sorry for the 80s-ism there!) custom HKS Exhaust system and air filter. Not only does it sound really sweet (gets more positive comments than my friends Porches) but other S2000 drivers have commented that you can feel more pull when you accelerate :)
| Price: | $36,500 | Reg Exp: | Nov 2005 |
| Trans: | Manual | Reg No: | AKS82M |
| Year: | 1999 | Body: | 2D CONVERTIBLE |
| Engine Size: | 2l | Fuel Type: | Premium Unleaded |
| Km's: | 95494 | Colour: | Silver |
| Location: | Sydney | ||
Note: the car is sold
12:52 AM, 01 Jul 2005 by Mark Aufflick Permalink | Comments (0)
Dan Bricklin on the Gillmor Gang [www.itconversations.com]
As I remember, 1 hour is about 20 minutes too long and the conversation gets to be a bit rambling in the middle. To the point that I had to re-listen to the first 30 minutes to remember why I liked it so much!
Bricklin really adds some great conversation about universality of storage, mobility and processing power and provides some insight into his opinion that innovation in IT is pumping right now (as compared to the "Does IT Matter" question which, from memory, was popularised at around the same time (this podcast was released on February 4th). I was particularly interested to hear about some major innovators of his era who are getting back into IT.
Update: I hadn't realised how long it was since I listened to the Gillmor gang - it seems that Feb 4 was the last Gillmor Gang published/broadcast. I think the last time I listened in must have been on my honeymoon in Paris!
Update: The Gillmor gang is still making podcasts - just not on IT Conversations. Check out the podcast directory in iTunes.
11:18 PM, 30 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Michelin holds their ground [www.timesonline.co.uk]
It is nice of the FIA to have good ideas. It would have been interesting if they had that many ideas before the race in Indianapolis.
07:12 PM, 30 Jun 2005 by Mark Aufflick Permalink | Comments (0)
iTunes 4.9 Podcast suport [www.apple.com]
Finally I can do away with my cobbled together perl/Applescript solution because itunes does exactly what I want.
Being able to browse Apple's podcast directory is nice - all the podcasts I listen to are there, although the iTunes store interface is way too busy for my liking.
And since Podcasts are treated quite seperately t music tracks, I can set the preference to auto-sync them even though I have my music set to manual sync.
On the iPod (with the associated iPod software update), Podcasts appear as a sepatae entry under the Music menu. Each podcast feed gets a menu item, and behind that the actual sound files themselves are arranged. In iTunes, this is replicated by a triangle pop-down type list, keeping all your podcasts nicely organised.
I used to do this using Genre, Grouping and smart playlists allocated by my old perl/Applescript combo but this is much cleaner.
01:22 AM, 29 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Does Pi necessarily contain any sequence of numbers?
At work today, concerned about whether our new product release will actually work, we discussed the above question (totally unrelated to our product).More formally, is there any property of Pi (assuming an infinite level of precision) that means it must contain any (possibly infinite) sequence of digits. For example, does it (by it's nature) contain the sequence 123.
Pi in fact DOES contain the sequence 123 (see 10000 Digits of Pi) but that's not the point! Can we prove that a non-random number must contain it.
After much arguing about the interaction between probability theory and infinity, trancendental numbers entropy and other related concepts, we seem to have agreed (between a Maths major, a Computer Science major and an Archaeoloy major ;) that it can't be concluded from the obvious properties of Pi, but we didn't rule out that a rigerous attack of the various Pi algorithms might in fact be able to prove otherwise.
Google and Wikipedia haven't shed any further light on the subject - can anyone comment further? (Note to self: get Dad to read this blog entry).
Clarification: We are of course dealing with Pi in decimal form. And yes, it is a stupid question that is of interest purely because of our human interest in patterns and order!
Image courtesy of xkcdA webcomic of romance, sarcasm, math, and language.
01:37 AM, 28 Jun 2005 by Mark Aufflick Permalink | Comments (31)
Opensource Business & Customer Experience
First up is a keynote presentation by Larry Augustine at the Opensource Business conference titled "The next wave of Opensource: Applications".
It's an engaging keynote looking at the opensource implications for delivering major business apps (like CRM) to middle tier business.
Next is a discussion with Jeffrey Rayport - Harvard Business School's first e-commerce professor - talking about focussing on customer experience, how it impacts profitability and how technology might be involved in that.
The slightly amusing thing (for Australian viewers) is listening to Rayport talking to "Moira" about TV shopping :) It's a great discussion with big numbers and radical ideas, that are already happening.
Both podcasts come from IT Conversations.com (homepage currently sporting a post-affro Malcom Gladwell - I guess he got sick of it catching on fire).
06:45 PM, 27 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Mmm Kinesis
It's the first time i've done that since I got my Kinesis ErgoEssential and wow what a difference. The biggest thing I have noticed is that I never have any problems because my fingers are not homed properly thanks to the shape.
Big thanks to Lars for putting me onto Kinesis contour keyboards. Funny thing is, he is now getting into Dvorak in a big way. But after shelling out the exorbitant import duty I was slugged with to have this keyboard shipped over here, I won't be switching any time soon ;)
The typing tutor of choice is TypingMaster - the Mac version works anywhere you have a Java runtime (including linux), and it's actually quite good.
07:13 AM, 27 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Batman Begins - And it's actually damn good! [batmanbegins.com]
The only lame part was the car chase - it was way too slow to be a believable Batmobile car chase.
Gotham City was excellent - dark, dirty and very human. The characters were great - my favourite was Liam Neeson, but I can't tell you much about his character. Christian Bale does a fantastic job as Batman, his character has a perfect mix of dark and light. Katie Holms was easily the best female actress in the film (possibly with the exception of the two "European" chicks Bruce Wayne takes to a restaurant one night ;)
I hope we see more from Christopher Nolan (also the director of Memento) and Christian Bale.
07:15 PM, 22 Jun 2005 by Mark Aufflick Permalink | Comments (1)
Cisco AON - like database constraints for your network :)
A common example given is for a bank to do some validation on the customer and account ids at the router level for fraud prevention. Not that you couldn't do that know by writing code to do that on you firewall. In fact, firewall based intrusion detection has been doing in-packet protocl-aware data analysis for years.
It does seem like a useful technology however, to be able to specify in some sort of config syntax, how data should be structured, what should reference what, and have those rules executed very fast on a standard router platform.
Kind of like database constraints for your network. And everyone knows that I like database constraints!
Useful articles:
Cisco AON, "new" internet, fraud prevention, S&M, and more... [Computerworld]
Cisco's AON moves closer to apps [Australian IT]
11:52 PM, 21 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Sawfish X11 Desktop Pager now hosted on SourceForge (sawfish.wm.ext.pager) [sawfish-pager.sourceforge.net]
Since the demise of it's previous hosting, I have arranged for the source of Daniel Pfeiffer's excellent sawfish pager (sawfish.wm.ext.pager) to be hosted as a SourceForge project.
I have also set up a website and wiki for the project - please feel free to add content. Also, if anyone uses the pager and has patches, I will give basically anyone who asks cvs commit access.
For those interested, the wiki is dokuwiki and has anti-spam features. Write access is currently public, but if necessary I can change that to require registration (which in turn requires a functioning email address).
The website is:
http://sawfish-pager.sourceforge.net/
You will find cvs and download information there.
Thanks again to Daniel for his provision of all the source code so promptly.
07:32 PM, 21 Jun 2005 by Mark Aufflick Permalink | Comments (0)
The F1 story unfolds
sportsillustrated.com, in their article F1 drivers were desperate to race quote an interview with Frank Williams:
Indianapolis promoter Tony George and Formula One commercial supremo Bernie Ecclestone had both agreed to the chicane in a meeting with teams on Saturday night but FIA president Max Mosley had vetoed it."Bernie called (FIA race director) Charlie (Whiting) on Saturday night and said get on with it," said Williams, who pointed out several precedents including the 1994 Belgian Grand Prix at Spa-Francorchamps.
He said it was to be expected that the FIA would blame the teams, with all seven summoned to a World Motor Sport Council meeting on June 29 for acts prejudicial to the interest of the competition.
However, he pointed out that the teams did not make the tyres and said Michelin had informed them late in the day of the problems.
That sounds like dynamite to me - and Frank Williams isn't known for lying or mis-quoting.
Bernie must be steaming. The Guardian says Ecclestone could face £7.4m lawsuit. Normally it would be Bernie and the track owner exposed financially, but the FIA is about to feel it too with at least one lawsuit so far against the FIA (reported by indystar.com)
11:46 PM, 20 Jun 2005 by Mark Aufflick Permalink | Comments (6)
The chicane was not the answer
Barichello also suggested the most sensible option within the rules, that the teams could run through the pits every couple of laps to avoid turn 13, although a busier pitlane has it's own safety issues.
My mate Nick and I came up with probably half a dozen ways to solve the problem this morning. My favourite is to amend the rules to allow tyre change at any pitstop, each time incurring a 10 or 20 second penalty. You would never do it unless you really had to - but if all Michelin teams pitted 5 times for tyres (Michelin said it would be safe if they changed tyres every 10 laps) then they would have been racing each other for the minor points. This would also have legitimised the points haul by the Bridgestone teams as a reward for being well prepared.
Of course the problem is not that no options were given the go-ahead : no options were seriously entertained by Max or Bernie. In the words of Neil Crompton, "The answer is no - what's the question?". And that is the real problem. The Indianapolis owners were not asked about the feasability of the chicane, the FIA did not suggest any ideas to solve the problem, even their pseudo-suggestion of "drive slower" had no meat to it about how accidents might be avoided behind heavily breaking Michelin shod cars...
Now the FIA is blaming the teams and looking for a rule to penalise them under (Michelin teams summoned by FIA[f1.com]), Race boycotts are a realistic option (grandprix.com), and I don't want to have to wait for 2008 to see another F1 race!
07:33 PM, 20 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Well How wrong I was [f1.racing-live.com]
Maybe Paul Stoddart is in fact the only reasonable one there after all. So what does this mean?
Do we need more tyre manufacturers? Goes against all the const saving measures by the FIA.
One tyre manufacturer? Probably the most likely outcome - the tyre manufacturer would then be free to focus on safety and driveability.
Does this make the GPWC more likely? Well, it will certainly fire up the GPWC teams (all of whom a are michelin shod).
Not much to say really - I don't understand the some of the FIA's ways, I guess this is just one of them.
Not surprisingly the official f1 website is not responding.
02:02 PM, 19 Jun 2005 by Mark Aufflick Permalink | Comments (1)
They said they would be fast at Indianapolis [www.formula1.com]
This is going to be interesting.
11:48 PM, 18 Jun 2005 by Mark Aufflick Permalink | Comments (0)
There's a chip in there, and a bear as well... [www.apple.com]
Well blow me down with a heatsink fan - the rumours were true!
Apple Mac's with Intel processors. Unfortunately it means I will probably never get my G5 laptop, but I'm glad I haven't bought a new G4!
Check out Steve Job's key note speech. The highlight for me was when Paul Otellini from Intel played the "Toasted Bunnies" Apple ad.
Steve also demo's an Intel powered Mac - in true Steve style (I won't give it away in case you want to watch it) - and announced that intel-based development boxes (with OS) were available immediately.
Tum, ta tum ta tum :)
The OS includes on the fly binary re-writing for legacy PowerPC code (not dissimilar to the 68k/PPC migration) in a technology called "Rosetta". Rosetta won't run AltiVec/G4/G5 optimised code which is not really a big deal because if your code was optimised specially for speed, then you are not going to want it to run on an emulated cpu anyway. What IS sad is that it won't support Classic applications :( Not only do i still own a number of little-used classic applications that I have not needed to upgrade, I draw a perverse pleasure from running the likes of Font/DA mover on my G4 tibook :)
Remarkably though, you can debug a running emulated application using gdb - almost like normal. Now that's reality distortion stuff if ever I heard it.
I wonder how long it will take Vmware to support MacOS X/intel (Macos Xi ?) as a supported guest operating system. Conversly, Aqua implementations of WINE / CrossoverOffice for MacOS Xi will be nice as well.
It will also be interesting to see what boot loader/bios arrangement Apple goes for - It's not going to be Open Firmware, and it's probably safe to bet that it won't be the legacy PC Bios - at least I hope not!
Also unanswered is the 64 bit question. The Universal Binary Programming Guidelines only refer to IA32 in various places - never IA64. Hopefully that won't be a backwards step with the first batch of hardware next year. Ironically, I was just this afternnon watching a quicktime movie of Apple's 1984 shareholders meeting - including a radiant Steve Jobs effusing over the new Mac with it's "powerful 32 bit microprocessor"!
Update: Apple Press Release : Apple to Use Intel Microprocessors Beginning in 2006
The comments about the Intel compiler are interesting - I wonder if it will be offered as an alternative to gcc in a forthcoming Xcode release?
Update: Lack of Classic support discussed at eweek.com
Update: Here is a a very interestingWall Street Journal article from 2 weeks ago with very timely question/answers like:
WSJ: Why are Intel's demo products always cooler than the actual products its customers make?
Otellini [intel]:Part of the problem is today the desktop [computer] business is a zero margin business for many of our customers [ But not for Apple :) -- Mark]
WSJ: Pressed about security by Mr. Mossberg, Mr. Otellini had a startling confession: He spends an hour a weekend removing spyware from his daughter's computer. And when further pressed about whether a mainstream computer user in search of immediate safety from security woes ought to buy Apple Computer Inc.'s Macintosh instead of a Wintel PC
Not only would Otellini have been very happy to be able to leave that interview with a smile on the inside, it gives an insight into why intel views Apple as such a desiarble customer - Apple actually builds cool things with chips. And that's something no PC vendor has done in the last 10 years.
Update: I couldn't for the life of me remember where I had heard of a software technology code named Rosetta before - Russell and I presumed that Apple had bought some other binary rewriting technology off someone else, or perhaps it was in fact the same technology as used in the 68k/PPC migration (the caching sounds very similar).
Semi from Tram Town reminded me that Rosetta was the code name for the second generation printed-writing recognition in the Newton - how could I have forgotten that? In memeory, I am using a Newton 2000 as my morning alarm clock!
Wikipedia mentions Rosetta in a reasonably good Newton overview: Apple Newton
10:03 PM, 06 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Photo Essay : Space Debris in Kazakhstan [www.eurasianet.org]
And the photos are amazing because of their composition and colour as much as for the mind-bending content.
03:16 AM, 05 Jun 2005 by Mark Aufflick Permalink | Comments (0)
Losing my MS Mojo just a little bit more
Microsoft Excel has always been the best spreadsheet around - it's even slightly more warm and fuzzy due to the fact that it's roots are in Exel Macintosh v1.0 (which one of my friends at TramTown has in a still-shrink-wrapped box).
Microsoft Word has also been one of my long time favourite Microsoft applications. Many large documents have been effectively managed since Macintosh MS Word 4 (which was in around 1990 I think). I even didn't mind Word 6 on DOS. Macintosh Word 5 was a real winner because I could use the equation editor instead of the old school ./ equation commands in earlier versions (who else remembers those?!)
I don't write too many documents in word any more. I'm either composing text in Emacs or laying out complex pages in various Adobe products. On the odd occasions that I do myself, or help my wife, I am disgusted by how hard it is to do things that had such good user interface in Mac version 5. Mac version 5 was the high point. Subsequent to that, Microsoft merged their Mac and windows Office code base and released code that ran on their own virtual pcode machine. Needless to say, most of the inspiration came from the Windows Office, even though it was way behind in features and useability.
I do need to deal with Word documents though, and I don't like Open Office. Open Office is like the worst parts of MS Office without the good parts.
I was therefore very happy to discover that there is a MacOS native version of Abiword. ( http://www.abiword.com/ ). It's user interface reminds me a lot of Mac Word 5 - simple menus, clear (and large) toolbars with only genuinely commonly used tools. Some modern conveniences like inline spell checking is also welcome. I do still miss the customisable menus of Word 5, and non-typeable style and font drop-downs are a sore point. It doesn't support Applescript, but it does have it's own plugin api and some form of scripting support. According to top, it's using about 30 Mb of ram. A lot more than Word 5 (which used about 2Mb from memory), but not bad for a modern app.
So - what MS Applications do you have a soft spot for, and are they as good as they used to be or better? If you're weening off them, what do you use instead?
Please, be my guests and comment away!
02:10 AM, 30 May 2005 by Mark Aufflick Permalink | Comments (2)
iCon, uCon, we all Con!
Of course that means there's money to be made in publishing articles and books about him personally. Recently, a new biographical book titled iCon has been launched amid controversy. Form my understanding, the main controversy has been about the title - Steve didn't like it, John Wiley & Sons (publishers) refused to change it - Apple removed all Wiley published books from the shelves of their stores - Wiley got more publicity than it could have hoped for.
Nothing too new about that sequence of events, but Alan Deutschman, the author of another recent biography of Jobs, is claiming that vast swathes of iCon seem to come straight from his work. Now biographies are necessarily going to be similar - they are semi-factual representations of the same event - but Deutschman points to almost sentance by sentance similarities.
Whoever is on the con, the article itself is interesting:
The tight fist clenched around Apple
PS: Two Steve Jobs related posts in a row - that's some kind of blog record!
02:38 AM, 23 May 2005 by Mark Aufflick Permalink | Comments (0)
Steve Jobs buys a washing machine [www.wired.com]
08:28 AM, 19 May 2005 by Mark Aufflick Permalink | Comments (1)
Longhorn arrives with a whimper [blogs.law.harvard.edu]
Come on Microsoft, and Apple for that matter.
Oh yes - frequent readers will be surprised - I can find fault with Apple as well! While I LOVE having MacOS X based on Unix, it would not have been necessary had MacOS 8 worked (the real MacOS 8 - ie. Copland). Mmmm, OpenDoc...
And of course no-one would be using Unix at all if Apple and IBM had have actually pulled off Pink aka Taligent... sigh. At least my fonts are anti-aliased under X.org ...
08:48 AM, 18 May 2005 by Mark Aufflick Permalink | Comments (0)
Faster than a hunted fox, more powerful than a raging fire
Luckily I had a spare motherboard lying around (thank's Julian), unfortunately I only had a celeron processor. I also had to do some nifty soldering work to attach the right pentium power connector to the power supply ;)
I took the opportunity to install Fedora Core 3 - my first ever post-redhat installation. And I must say I am very impressed.
But of course I had to create a whole new set of settings. Thankfully I keep my emacs configuration in CVS, so that's most of my environment set up! I was lucky that the day after I installed, Firefox 1.0.4 hit the main Fedora repositary and was updated by up2date. I wanted to share with you some absolute essentials to a lovely firefox experience.
First is speed. I used to be disappointed that IE was always faster than Firefox, but not with the sweet performance tweaks I researched (see the recent links tab to your left). For your reference, I settled on the following changes in about:config ...
firefox
network.dns.disableIPv6: true
network.http.pipelining: true
network.http.pipelining.maxrequests: 8
I also can no longer live without Pimpzilla ;)
I was soon frustrated by the lack of standard unix keyboard shortcuts (ie. emacs/bash keys). I mean, MacOS X has them ... if one of the world's leaders in UI thinks they are ok, then why on earth would a primarily unix distribution disable them! They are the one consistent set of keys I can use on every platform (except windows). Fortunately you can still revert gnome/gtk applications to real unix behaviour. Run gconf-editor and navigate to the desktop/gnome/interface key (if gconf-editor makes you feel dirty, you've spent too long in regedt32 ;) and set it to "Emacs" (no quotes). The change is immediate - not even any need to restart applications which is quite amazing.
07:56 AM, 18 May 2005 by Mark Aufflick Permalink | Comments (0)
On Quality [perlmonks.org]
I used to think that my coding days would be numbered, but the art of software development becomes more intriguing the deeper you go.
My favourite new concept is Aspect Oriented Programming:
07:41 PM, 11 May 2005 by Mark Aufflick Permalink | Comments (0)
A History of the GUI [arstechnica.com]
If you have any involvement in the IT industry and names like Douglas Englebart and Xerox Parc mean nothing to you, you really *must* read this article.
Despite all my prior knowledge, I learnt some new tidbits from the arstechnica article. For instance: "The author of Bravo [the original Xerox Alto word processor program -- Mark], Charles Simonyi, would eventually join Microsoft and recreate his work as the original Word for DOS.
Addendum:
If you, like me, are fascinated by Bush's amazing foresight and innovation, From Memex to Hypertext: Vanevar Bush and the Mind's Machine is an amazing (albeit dry) read. It includes Douglas Englebart's letter to Vannevar Bush "On Human Effectiveness". No-one titles letters like that any more!
Addendum 2:
I have spotted a number of minor incorrect facts and anecdotes in the arstechnica article, so don't believe everything you read. It is notoriously hard to get some of those historical facts especially as sometimes the well known involved parties often have conflicting memories themselves.
10:50 AM, 10 May 2005 by Mark Aufflick Permalink | Comments (0)
Buffet and Munger on real estate, the economy and the auto industry
On the US trade defecit:
It seems to me that a $618 billion trade deficit, rich as we are, strong as this country is, well, something will have to happen that will change that. Most economists will still say some kind of soft landing is possible. I don't know what a soft landing is exactly, in how the numbers come down softly from levels like these....
On the American auto industry:
Some people seem to think there's no trouble just because it hasn't happened yet. If you jump out the window at the 42nd floor and you're still doing fine as you pass the 27th floor, that doesn't mean you don't have a serious problem. I would want to address the problem right now.
On the real estate bubble:
Buffett to Munger: "What do you think the end will be?"
Munger: "Bad."
On the NYSE's merger with (electronic exchange) Archipelago:
I think we have lost our way when people like the [board of] governors and the CEO of the NYSE fail to realize they have a duty to the rest of us to act as exemplars. You do not want your first-grade school teacher to be fornicating on the floor or drinking alcohol in the closet and, similarly, you do not want your stock exchange to be setting the wrong moral example.
With investment guru's talking like this, it might be time to buy gold bullion!
10:31 AM, 10 May 2005 by Mark Aufflick Permalink | Comments (0)
My Beta tolerance is back
I have grown far more pragmatic in my old age, and now only put up with Beta versions of the following software:
- Software I am developing (hard to avoid)
- Open source projects where I am either an involved developer or at least intimately familiar with the internals and don't mind getting into the code.
But egged on by the fact that current development builds of firefox have built in SVG (like I'll ever need that) and that my pre-1.0 firefox is way out of date, I downloaded and installed (to a different directory) the latest nightly build of firefox (for linux) onto my (relatively out of date) redhat 9 box.
Rarely are you rewarded by beta versions with greater speed, but it is noticeably much faster. Even on my PIII sgi, firefox is starting to approach the speed of Internet Explorer (ducks).
I'll let you know how stable it is and how the nightly build of thunderbird are go.
Update: I can't actually *start* firefox now, but if I run the installer every time (about 40 seconds), it automatically starts firefox for me ;) It's quirky, but installing and launching together is still faster than launching my Firefox 1.0!!
Oh, and the occasional segfault...
08:36 AM, 03 May 2005 by Mark Aufflick Permalink | Comments (0)
Tufte on powerpoint
Powerpoint makes you dumb -- [nytimes.com]
Edward Tufte : The Cognitive Style of Powerpoint -- [edwardtufte.com]
But his site runs AOLServer on linux server that hasn't been rebooted for nearly 400 days! Unfortunately linux uptime wraps at 497 (only the number - it doesn't randomly crash after 497 days, unlike the infamous Windows 95 and 98 bug that cause EVERY Win 95/98 box to crash after exactly 49 days, 17 hours, 2 minutes and 47.296 seconds of continuous operation - if you could keep it up that long ;)
http://uptime.netcraft.com/up/graph?site=http%3A%2F%2Fwww.edwardtufte.com%2F
08:34 AM, 03 May 2005 by Mark Aufflick Permalink | Comments (0)
Too Funny [www.microsoft.com]
I have lots of good stuff to post here (like le pouf), in my developer blog (like sorting out your iPod with perl and Mac::AppleScript::Glue) and photos (like Versailles and "Double Effect Beef®").
But I just couldn't let this Microsoft "Six Tips for Buying an MP3 Player with Flash Memory" go without comment! It's anti-iPod stance is so thinly veiled, it's list of "popular features" is composed entirely of features the iPod doesn't have...
But then can you blame the Microsoft Windows Media team from being a bit pouty, when over half of all Microsoft employees in Redmond own an Apple iPod (wired)?
And for balance : Too Scary
You Might Be a Mac Fanatic If... - I'm too scared to score.
07:20 AM, 28 Apr 2005 by Mark Aufflick Permalink | Comments (0)
The winner is Formula 1
I am definately not one of the "Ferrari is making F1 boring" naysayers, but the new strength of Renault and Red Bull is fantastic!
How about Coulthard's move into the first corner!! Last year he suffered from being too cautious - it seems that taking the position of elder F1 statesman at Red Bull has given him a new perspective. In yesterdays race he showed the best combination of his good traits with none of his bad ones.
Bring on Malaysia!!
08:42 PM, 06 Mar 2005 by Mark Aufflick Permalink | Comments (2)
"Good to Great" is, well, great!
Good to Great has been on my must-read list for some time since reading an interview with Jim Collins in Strategy & Business Magazine by Booz Allen. Thanks to Mike for lending me his copy :)
It is well-paced and well written. The findings are intriguing, even the descriptions of the analysis methods are informative and useful! Many of the principles are just as applicable to your life as your business.
I can see that I will be up late reading the next few nights...
08:42 AM, 22 Feb 2005 by Mark Aufflick Permalink | Comments (0)
Logging and our Environment
Then he sent me this SMH article about Australian agriculture:
The collapse of the wide, brown land
I need to be careful given who my friends and family are ;) but here is a quote from the article:
While 60 per cent of Australia's land area and 80 per cent of its human water use are dedicated to agriculture, the value of agriculture relative to other sectors of the Australian economy has been shrinking to the point where it now contributes less than 3 per cent of the gross national product. That's a huge allocation of land and scarce water to an enterprise of such low value. Furthermore, it is astonishing to realise that over 99 per cent of the agricultural land makes little or no positive contribution to Australia's economy. It turns out that about 80 per cent of Australia's agricultural profits are derived from less than 0.8 per cent of its agricultural land ...
Note that I have not tested or substantiated these figures, but assuming they are true then we are little better than the over-protective Europeans with their farmers.
Maybe we should just be paying the farmers in Asia and Africa a reasonable price for their produce - possibly introducing incentives for them to invest in eco-friendly farming.
Food for thought, so to speak.
Update: It occurs to me that the point about the water is a furfy - it's not water per se that is scarce, it's water in particular catchment areas. With the exception of a few particular river systems, rural and non-rural water usages are from different sources.
05:03 PM, 21 Feb 2005 by Mark Aufflick Permalink | Comments (3)
Ruby on Rails, Postgres & other musings
It always starts off innocently
It started, innocently enough, with a discussion about the way that Ruby on Rails does database persistance of Ruby objects. It's simple and clean, but one thing that had bothered us both was the way that ActiveRecord required a table to contain columns for every property of every subclass of a root class. It uses a type column to store what class a particlar serialized object is. This kinda sucks. It just doesn't seem right. While reading the ActiveRecord API docs, I noticed an offsite link about single table inhertance. This document starts with the statement "Relational databases don't support inheritance".
A good inheritance and a good relationship
Many relational databases do, however, support inhertiance - albeit in differing non-standard ways. Why, we thought, should an implementation be limited across all databases just because it wants to support MySQL and DB2. One nice solution that occurs to me is to use table inhertance in Postgresql. A child table inherits all the columns of it's parent but can also implement new columns of it's own. A table scan of the parent finds all the rows in the child, but introspection on the relevant tables will show the appropriate columns. It is also much more efficient if you have a lot of children with a lot of properties, since the parent table isn't clogged with all those empty columns. By better mapping reality (which is after all what OO is supposed to do), everything works better with implicit constraints on allowed properties etc.
As Rusty pointed out, it would make scaffolding pages much nicer too since the db table introspection would only show the relevant fields. Without investigating too hard, it would seem quite simple to implement this by sub-classing some parts of ActiveRecord, thus not breaking any existing code or db support. Careful note would probably need to be made of the Find method.
You don't want limitations in your scaffolding
Our thoughts then turned to the limitations of using the Ruby webserver WEBrick and the way that Apache rewrite rules are used to make the various controller url formats work. The thing that attracts me to WEBrick is one of the reasons I love AOLserver - that the webserver functionality is under the full control of an interpreted language which means you can literally do what you like. Want to implement a request processor right in the webserver? Go ahead! I contrasted this with the hoops of writing an advanced request processor in a traditional scripted web environment like PHP or Perl's mason or Template::Toolkit. mod_perl gives you much more ability to do what you want, but eventually you start asking the question "What is it that Apache is doing for me?" and the answer seems to be "not a whole lot". Which is particularly grating when it sometimes makes your life hard.
3 habits of highly effective servers
Sure performance could be an issue, but that leads to our next point of discussion - the division of labour between the web application server and the database server. We talked about implementing a Ruby/ActiveRecord object server that would connect to the database and dish up objects on request, sent over the network in some serialized form. I assume Ruby has an equivalent of Perl's Storable, I just don't know what it is.
And that about sums up our conversation until it was time to go and do some real work.
As I said, I hope to get time to write up something more formal and try to kick of some discussion. Of course it's highly likely these are not original thoughts. Someone probably already has a patent on them ;)
11:48 PM, 18 Feb 2005 by Mark Aufflick Permalink | Comments (2)
Bill Gates (& other communists) [news.com.com]
It has always seemed clear to me that anyone who supports patents that cover software is either naive or is happy to use a law past it's intent in order to hinder competition.
Now we know Bill Gates is not naive, and thanks to the historical context in the linked article we know that Bill Gates is well aware of the negative power of software patents.
Here's what Bill Gates told Microsoft employees in 1991:"If people had understood how patents would be granted when most of today's ideas were invented and had taken out patents, the industry would be at a complete standstill today...A future start-up with no patents of its own will be forced to pay whatever price the giants choose to impose."
Which makes it odd that Bill suggested that anyone opposing software patents must be a communist. Actually it's not odd—it's exactly what you expect since honesty and clarity aren't exactly hallmarks of Microsoft spin.
In fact what does surprise me is that Gates chose to backpedal furiously in an interview with Gizmodo. As summarized by Linuxworld:
Gates's point, he said, is that there's a spectrum of viewpoints on this issue, from the extreme of believeing that there should be no patent system at all to the opposite extreme (he didn't specify how that would be characterized).
More commentary of Bill's "Communist" outburst at Thinking Monkey.
10:58 PM, 16 Feb 2005 by Mark Aufflick Permalink | Comments (0)
Custom Apache logging with values from your mod_perl code
It turns out to be rather simple, using the Apache concept of notes.
Anywhere in your perl code, you need to add a snippet like this:
$r->notes( foo_log_info => $foo_value );
If you are using mod_perl your handler is a good places to do it, mason users could also use their autohandler, but you can really put it anywhere that you have access to the $rApache::Request object.
In your httpd.conf section, do something like this:
SetEnvIf Request_URI "\.html$" foo_log_this_page
SetEnvIf Request_URI "/$" foo_log_this_page
LogFormat "%h %{foo_log_info}n" foo_log_format
CustomLog foo_log foo_log_format env=foo_log_this_page
See the apache docs for info on what the other fields mean (
http://httpd.apache.org/docs/logs.html ), but the important things are these:
- The SetEnvIf directives, along with the env= tail to the CustomLogdirective make sure that you are only logging html files (or directory indexes). You may need to change this depending on what files are served by mod_perl in your setup.
- The %{foo_log_info}n is the note that you set in the perl code appearing in the LogFormat.
- CustomLog sets up a new log file based on our custom format (log file path is relative to your ServerRoot).
07:12 PM, 02 Feb 2005 by Mark Aufflick Permalink | Comments (0)
I'm all ergonomic now!
Take a squiz at the excellent Kinesis ergo range here: kinesis-ergo.com.
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 (typingmaster.com), 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
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 OpenACS.org. 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:
is_computer_on()
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.
is_computer_on_fire()
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 {
B_BEBOX_PLATFORM = 0,
B_MAC_PLATFORM,
B_AT_CLONE_PLATFORM,
B_ENIAC_PLATFORM,
B_APPLE_II_PLATFORM,
B_CRAY_PLATFORM,
B_LISA_PLATFORM,
B_TI_994A_PLATFORM,
B_TIMEX_SINCLAIR_PLATFORM,
B_ORAC_1_PLATFORM,
B_HAL_PLATFORM,
} 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
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.
Ranges:
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/
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...
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 gizmodo.com:
"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
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)
State of the art Audio and Makin' Bacon [www.theage.com.au]
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?
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
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?!
Update:
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
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)
Archive
| January 2005 | ||||||
| S | M | T | W | T | F | S |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 | |||||
March 2012
February 2012
November 2011
October 2011
April 2011
March 2011
January 2011
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
December 2003
November 2003
October 2003
September 2003
August 2003
Blog Categories
software (40)..cocoa (21)
..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)
..black and white (6)
..A day in Sydney (18)
..The Daily Shoot (6)
food (2)
Book Review (2)
Notifications
Request notifications






