Off to the Motherland
Well I'm off to the motherland for a quick trip. Kath is presenting at an education conference and I'm tagging along as a conference-spouse.
I *really* hope we win this test, otherwise I will have to hide my Aussie accent in shame... 04:14 PM, 26 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (1) Social bookmarks as a Podcast [blog.del.icio.us]
For those of you who don't know, del.icio.us is a free bookmarking service where you can keep your bookmarks well organised, and browse through other people's bookmarks. You can do neat stuff like see who else bookmarked the same thing that you did, or see what people are bookmarking with particular tags. (For instance if you're a Ruby programmer, following http://del.icio.us/tag/ruby gives you an insight to whats new & happening on the web with regards to Ruby.
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! 04:18 PM, 22 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (1) Pretty Printing objective C with GNU a2ps
a2ps includes a stylesheet for objective c, but it's not mapped to anything. Plus, the .m extension is mapped to "octave" files (which I guess is some music notation format system...).
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/
01:17 PM, 17 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (0) RAID1 Installation of an Apple XServe G5
This is a re-post (an accidental click lost my last post), so it's shorter and less entertaining that it otherwise would have been.
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. 09:03 AM, 16 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (1) Language Support for Design Patterns in Object Oriented Agile Languages [www.usenix.org]
This technical whitepaper presented to the 5th USENIX Conference on Object Oriented Technologies way back in 1999 has prompted something of a renaissance in my thinking towards OO programming in scripting or "agile" languages such as Perl, Ruby and Tcl.
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. 08:32 PM, 14 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (0) Adding C to your Perl is easy!
Looking for optimisation options for a client Perl project, I starting thinking about implementing some of the tight loops in C instead of Perl.
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
05:00 PM, 12 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (0) Looking for new Noise Cancelling Headphones
Well I'm preparing for another overseas trip, this time to London - Kath is presenting at a conference and I'm just a passenger!
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). 06:04 PM, 11 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (2) PDF Plugin's for Safari (plus a World Clock for good measure)
I made the mistake of installing Adobe Acrobat Reader 7 on my mac which also installed a safari Plugin. In principal this is great, because I prefer pdf's to open in browser tabs than in an external app, but on my original model titanium G4 powerbookk, it's a tad slow to say the least.
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. 02:06 PM, 11 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (0) Apple's Mighty Mouse [www.apple.com]
I have a love for input devices: mice, trackballs, touch screens, (remember light pens?), and for the Macontosh.
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". 12:49 PM, 03 Aug 2005 by Mark Aufflick Permalink | Short Link | Comments (0) |
Archive
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 Categoriessoftware (39)..cocoa (21) ..heads up 'tunes (5) ..ruby (6) ..lisp (3) ..perl (4) ..openacs (1) mac (20) embedded (2) ..microprocessor (2) ..avr (1) electronics (3) design (1) photography (25) ..black and white (6) ..A day in Sydney (18) ..The Daily Shoot (6) food (2) Book Review (2) Notifications Request notifications
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||








Request notifications