Additions to my holiday reading list
Some additions to my holiday reading list:
I'm a little disappointed the last didn't explicitly require Chess since Kath gave me an awesome Kasparov Chess set for Christmas :) 11:30 AM, 30 Dec 2007 by Mark Aufflick Permalink | Comments (0) Accessible Spam
Perl hacker Schlomi Fish recently published an article about the need for accessible Spam, "Spam for Everyone" - The International Campaign for 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! 04:40 PM, 29 Dec 2007 by Mark Aufflick Permalink | Comments (0) Holiday reading
I have a few flights and trips over the Christmas week, so I thought I'd compile some reading material for those spare hours. If you're looking for some light ;) reading I thought you might be interested also:
12:20 PM, 21 Dec 2007 by Mark Aufflick Permalink | Comments (0) Red letter day for Perl
Well it's the 20th anniversary of when Larry Wall first released Perl to the world and to celebrate the Perl community has announced the release of perl 5.10, the biggest new perl release in 5 years.
May we happily program so pragmatically for another 20 :) 11:50 AM, 19 Dec 2007 by Mark Aufflick Permalink | Comments (0) Email is for old peopleOutside 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. 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. 03:11 PM, 18 Dec 2007 by Mark Aufflick Permalink | Comments (1) Parallel list processing module for Erlang
While reading the erlang mailing list I came across a (fairly) new module plists containing parallel versions of the erlang lists module and a few throwins (like a mapreduce implementation). The functions operated just like the standard variants plus an optional parameter that allows you to tune how many parallel processes are run and whether to use remote nodes or not.
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. Nice. 03:32 PM, 12 Dec 2007 by Mark Aufflick Permalink | Comments (0) Serve pre-compressed content with ApacheI 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*:
Voila, correctly served pre-compressed static files. Just be sure to update your compressed versions whenever you update the content. * ``The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail.'' -- Brian Behlendorf, Apache Group
11:04 PM, 06 Dec 2007 by Mark Aufflick Permalink | Comments (0) Australian IT job marketI 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. 12:51 PM, 05 Dec 2007 by Mark Aufflick Permalink | Comments (0) Parallel sorting in Erlang
Of course super-light threads for parallel programming is Erlang's killer feature, so let's apply that to a simple merge sort. Erlang's spawning and message passing interface is fairly straightforward, but a lot of parallel tasks are simple start -> process -> return type tasks, so we can simplify our syntax even further by using some nice helper functions such as Joe Armstrong's parallel map pmap or Anonymous Matthew's parallel eval pareval (via Philip Robinson's blog).
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. 03:58 PM, 03 Dec 2007 by Mark Aufflick Permalink | Comments (0) |
Archive
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 Notifications Request notifications
Recent Comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Request notifications