Additions to my holiday reading list
- John Backus's Turing Award Lecture from 1977, Can Programming be Liberated from the Von Neumann Style? (via)
- Science is linguistic as well as numerical (just ask Larry Wall!)
- 10 Habits of Highly Effective Brains
I'm a little disappointed the last didn't explicitly require Chess since Kath gave me an awesome Kasparov Chess set for Christmas :)
07:30 PM, 29 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Accessible Spam
The "Spam-for-Everyone" campaign aims to convince spammers that they shouldn't send spam that makes it harder or impossible for disabled people to understand it
Brilliant!
12:40 AM, 29 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Holiday reading
08:20 PM, 20 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Red letter day for Perl
May we happily program so pragmatically for another 20 :)
07:50 PM, 18 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Email is for old people
Outside of work, SMS and instant messaging are fast becoming the writing tools of choice. Indeed, South Korea - that crystal ball of all our digital tomorrows - has even seen a report that many teenagers have stopped using email altogether. "It's for old people," they say....
According to the poll, mobile texting, instant messaging and the perception that email is "a lot of bother" are all contributing to the end of the email era. Other factors, say the report, are the difficulty of ascertaining if an email has arrived and the lack of immediate response. One young Korean said that texting felt like a ping-pong game and that email was more "like doing homework".
Source: Sydney Morning Herald
There's an opportunity in here somewhere - it shouldn't be too hard to merge IM, SMS and email into one seamless communication. Unfortunately Facebook/Cyworld etc. are always going to be a proprietary impediment.
11:11 PM, 17 Dec 2007 by Mark Aufflick Permalink | Comments (1)
Parallel list processing module for Erlang
plists is a drop-in replacement for the Erlang module lists, making most list operations parallel. It can operate on each element in parallel, for IO-bound operations, on sublists in parallel, for taking advantage of multi-core machines with CPU-bound operations, and across erlang nodes, for parallizing inside a cluster. It handles errors and node failures. It can be configured, tuned, and tweaked to get optimal performance while minimizing overhead....
This module also include a simple mapreduce implementation, and the function runmany. All the other functions are implemented with runmany, which is as a generalization of parallel list operations.
Nice.
11:32 PM, 11 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Serve pre-compressed content with Apache
I wanted to serve compressed static js and css content from an Apache server. I also wanted to pre-compress the files to save time/cpu, and the particular Apache 2 instance had no mod_deflate or mod_gzip installed (dynamic content was being compressed at the application layer).
Serving pre-compressed content turned out to be incredibly easy using mod_rewrite*:
- Create a compressed copy of each .js & .css file with a .jsgz/.cssgz extension
find . -name '*.js' -or -name '*.css' -exec sh -c 'gzip -c {} > {}gz' \;
- Add the following to a relevant part of your Apache config file:
RewriteEngine on RewriteCond %{HTTP:Accept-Encoding} gzip RewriteRule (.*)\.css$ $1\.cssgz [L] AddType "text/css;charset=UTF-8" .cssgz AddEncoding gzip .cssgz RewriteCond %{HTTP:Accept-Encoding} gzip RewriteRule (.*)\.js$ $1\.jsgz [L] AddType "text/javascript;charset=UTF-8" .jsgz AddEncoding gzip .jsgz
- Test & reload your apache config
httpd -t httpd -k graceful
Voila, correctly served pre-compressed static files. Just be sure to update your compressed versions whenever you update the content.
07:04 AM, 06 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Australian IT job market
I took part in my first ever podcast last week on a panel discussing the Australian IT job market. Mark Jones hosts the weekly MIS Australia podcast for the AFR and invited me to represent the IT candidate market.
Also on the panel was Jane Bianchini, COO of Candle ICT (which seems to have changed it's name to Clarius in the last week - Moof ;), Carl Sjogreen, senior product manager at Google Australia and Peter Sheahan, an entrepreneur and author about Gen Y.
It was a good experience - I did just manage to get a few words in edgewise!
Use the embedded player or why not visit The Scoop and enjoy weekly panels talking about issues affecting the Australian IT industry.
08:51 PM, 04 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Parallel sorting in Erlang
Parallel map makes light work of a massively parallel merge sort:
-module(mergesort). -export([msort/1]). %% terminal cases for list of less than 2 entries msort([]) -> []; msort([A]) -> [A]; % split list into 2 & mergesort them msort(L) -> Mid = trunc(length(L) / 2), {A, B} = lists:split(Mid, L), lists:umerge( pmap(fun(I) ->msort(I) end, [A, B]) ).This gets really interesting in certain cases eg. where acquisition of the data is expensive but randomly accessible.
Instead of passing in a simple list, our sort function could accept a future that would promise to return any requested linear subset of the data. Assuming we know the total length of the source list, no data is needed until we reach the merge phase at the bottom of the recursion stack, and incrementally more data is required as we bubble back up to the final result.
In this example we are doing our network retrieval in parallel with our sorting (which itself is happening in parallel). If the remote data comes from multiple hosts we could parallelise the retrieval by using multiple port instances.
11:58 PM, 02 Dec 2007 by Mark Aufflick Permalink | Comments (0)
Archive
| December 2007 | ||||||
| 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






