<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:archaelus</id>
  <title>archaelus</title>
  <subtitle>archaelus</subtitle>
  <author>
    <name>archaelus</name>
  </author>
  <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom"/>
  <updated>2008-05-20T05:08:20Z</updated>
  <lj:journal username="archaelus" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://archaelus.livejournal.com/data/atom" title="archaelus"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:20003</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/20003.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=20003"/>
    <title>iCal, iSync, displayAlarms, so much hate</title>
    <published>2008-05-20T05:08:20Z</published>
    <updated>2008-05-20T05:08:20Z</updated>
    <category term="isync"/>
    <category term="rant"/>
    <category term="ical"/>
    <category term="applescript"/>
    <content type="html">tell application "iCal" you FAIL AT LIFE!!!!111!!!one&lt;br /&gt;end tell.&lt;br /&gt;&lt;br /&gt;So. iCal refuses to sync properly, saying:&lt;br /&gt;&lt;pre&gt;
2008-05-20 17:02:17:870|iCalExternalSync|945|10a640|Miscellaneous| SyncServices precondition failure in [ISyncInstrumentedSession pushChangesFromRecord:withIdentifier:]: you can't change the record's entity name from com.apple.calendars.DisplayAlarm to com.apple.calendars.AudioAlarm in {
    "com.apple.ical.sound" = Basso;
    "com.apple.syncservices.RecordEntityName" = "com.apple.calendars.AudioAlarm";
    owner =     (
        "Event/p146"
    );
    sound = Basso;
    triggerduration = -1200;
}
&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;As far as I can tell, all my display alarms are FUBAR and need to be purged.&lt;br /&gt;&lt;br /&gt;Violently.&lt;br /&gt;&lt;br /&gt;And believe me I've tried every icbu backup/restore, synchrospector munging, pull the truth, sync forcing trick I can think of.&lt;br /&gt;&lt;br /&gt;Applescript to the rescue:&lt;br /&gt;&lt;pre&gt;tell application "iCal"
	repeat with myevent in every event in every calendar
		set dispAlarms to count of display alarms in myevent
		if (dispAlarms) &amp;gt; 0 then
			log "Found event with display events"
			log (get summary of myevent)
			log dispAlarms
			delete display alarms in myevent
			log (get count of display alarms in myevent)
		end if
	end repeat
end tell&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
tell off corporation "Apple"
     if (you can't let me recover from sync errors without writing applescript) then
         castigate "Apple" with "You fail at life too."
     end if
end tell off
&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:19725</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/19725.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=19725"/>
    <title>Tracking Erlang/OTP</title>
    <published>2008-02-07T22:58:42Z</published>
    <updated>2008-02-07T22:58:42Z</updated>
    <category term="upstream"/>
    <category term="erlang"/>
    <category term="git"/>
    <content type="html">I'm going to try tracking the Erlang/OTP source tree and the helpful posts on &lt;a href="http://www.nabble.com/Erlang-Patches-f14098.html"&gt;erlang-patches&lt;/a&gt; in &lt;a href="http://git.erlang.geek.nz/?p=erlang-otp.git;a=summary"&gt;my git repository&lt;/a&gt;. I already have to do this for macports - odbc still doesn't really build out of the box on Mac OS - and the main configure script needs a few --with-gd=/Library/DarwinPorts arguments for my idiosyncratic macports installation.&lt;br /&gt;&lt;br /&gt;I also have a few odd patchsets, such as &lt;a href="http://svn.ulf.wiger.net/gproc/"&gt;Ulf Wiger's gproc&lt;/a&gt; - an &lt;a href="http://www.erlang.se/workshop/2007/proceedings/02wiger.pdf"&gt;extended process registry&lt;/a&gt; for OTP systems that I hope will one day be included in the standard distribution.&lt;br /&gt;&lt;br /&gt;Maybe I could add the &lt;a href="http://www.erlang.org/eeps/"&gt;EEPs&lt;/a&gt; as branches too.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:19470</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/19470.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=19470"/>
    <title>2007-05-03 When should I write a gen_server?</title>
    <published>2008-02-07T21:14:49Z</published>
    <updated>2008-02-07T21:14:49Z</updated>
    <category term="erlang"/>
    <category term="guidelines"/>
    <category term="longtimeinthemaking"/>
    <content type="html">I’ve been writing Erlang code for a little while now and generally stick to OTP style systems. I find that I have a subconcious set of rules for deciding what kind of process to build for particular tasks - below are some of the guidelines I’ve come up with. This list is incomplete and I’d greatly appreciate feedback on it.&lt;br /&gt;&lt;br /&gt;Signs you should write a gen_fsm:&lt;br /&gt; * Your process responds to the same message in (radically?) different ways depending on the current state.&lt;br /&gt; * You need to manage a collection of timers that depend on what state the process is in.&lt;br /&gt;&lt;br /&gt;Signs you should write a gen_server:&lt;br /&gt; * Your process always reponds to the same message in the same way.&lt;br /&gt; * You mainly do a request-reply (call) style operations&lt;br /&gt; * You're going to give the process a registered name.&lt;br /&gt; * Your process is not going to trap exits&lt;br /&gt; * Your process will be long lived&lt;br /&gt; * Your process will be started by a supervisor&lt;br /&gt;&lt;br /&gt;Signs you should write a gen_event:&lt;br /&gt; * You want to modify SASL log handling.&lt;br /&gt; * ???&lt;br /&gt;&lt;br /&gt;Signs you should write a plain old process:&lt;br /&gt; * You don't listen for requests from other processes (except perhaps replies)&lt;br /&gt; * You don't fit neatly into any of the other boxes&lt;br /&gt; * You are a worker process that makes blocking requests to other processes&lt;br /&gt; * The rules for starting or restarting the process are complicated.&lt;br /&gt; * The process does a number of different activities during its lifetime</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:18823</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/18823.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=18823"/>
    <title>2007-06-23 lolcat</title>
    <published>2007-06-23T04:27:02Z</published>
    <updated>2007-06-23T04:27:02Z</updated>
    <content type="html">Ok, fine - I too have succumbed to &lt;a href="http://myskitch.com/archaelus/img_2671-20070623-160802.jpg"&gt;lolcat&lt;/a&gt; syndrome....&lt;br /&gt;&lt;div class="thumbnail"&gt;&lt;a href="http://myskitch.com/archaelus/img_2671-20070623-160802/"&gt;&lt;img src="http://myskitch.com/archaelus/img_2671-20070623-160802.jpg/preview.jpg" alt="IMG_2671" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:18525</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/18525.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=18525"/>
    <title>Posted using LJ Talk...</title>
    <published>2007-06-13T08:34:26Z</published>
    <updated>2007-06-13T08:34:26Z</updated>
    <content type="html">There's a cat licking my head. (It's certainly weird, but oddly not as distracting from &lt;a href="http://git.erlang.geek.nz/?p=erlirc.git;a=summary"&gt;erlirc&lt;/a&gt; hacking as I thought it would be :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:14873</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/14873.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=14873"/>
    <title>2007-03-30 Age Pryor: Shank's Pony</title>
    <published>2007-03-29T12:19:14Z</published>
    <updated>2007-03-29T12:22:40Z</updated>
    <content type="html">&lt;a href="http://www.agepryor.co.nz/index.html"&gt;Age Pryor&lt;/a&gt; just played a gig at &lt;a href="http://www.wellingtonnz.com/RestaurantsAndShopping/Restaurants/MightyMighty/MightyMighty.htm"&gt;Mighty Mighty&lt;/a&gt; to celebrate the release of his new album Shanks' Pony.&lt;p&gt;&lt;img src="http://farm1.static.flickr.com/179/418295264_58e63e19ac.jpg?v=0" /&gt;&lt;/p&gt;Age and co. played all the songs from the new album, some old favourites from &lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=54528581"&gt;Fly My Pretties&lt;/a&gt; and coaxed &lt;a href="http://www.nzgirl.co.nz/articles/5805"&gt;Tessa Rain&lt;/a&gt; up on stage for their ever amazing &lt;a href="http://www.last.fm/music/Fly+My+Pretties/_/King+of+You+All"&gt;King Of You All&lt;/a&gt;. Go buy Shank's Pony - King of you all is worth it alone :)&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:14758</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/14758.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=14758"/>
    <title>Posted using LJ Talk...</title>
    <published>2007-03-23T04:14:42Z</published>
    <updated>2007-03-23T04:14:42Z</updated>
    <content type="html">It would appear you can post via jabber - neat :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:11666</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/11666.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=11666"/>
    <title>2007-03-13 Spreadsheets - not for banking</title>
    <published>2007-03-13T03:41:03Z</published>
    <updated>2007-03-13T03:41:03Z</updated>
    <content type="html">“Many see computing as word processing and spreadsheets. Sure, you can use a spreadsheet to build a financial module but not to build a networking system or a banking database.“ -- &lt;a href="http://www.theage.com.au/articles/2007/03/12/1173548107417.html?page=fullpage#contentSwap2"&gt;The Age&lt;/a&gt;&lt;br /&gt;Yeah... &lt;a href="http://www.killnine.com/comics/19.php"&gt;you'd be surprised&lt;/a&gt;.&lt;br /&gt;By way of explanation for the amount of spreadsheet ranting, I once had a job which involved spreadsheet archaeology - the reverse engineering of spreadsheet systems in order to turn them into web based systems. I had no idea a network drive full of linked spreadsheets could do so much.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:9455</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/9455.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=9455"/>
    <title>2007-03-08 Privilege</title>
    <published>2007-03-08T04:56:24Z</published>
    <updated>2007-03-08T04:56:24Z</updated>
    <content type="html">I was recently invited to attend the inaugural &lt;a href="http://linuxchix.org.nz/"&gt;Linux Chix NZ&lt;/a&gt; meeting and find &lt;a href="http://blog.shrub.com/archives/tekanji/2006-03-08_146"&gt;this article on privilege&lt;/a&gt; very apropos. &lt;p&gt;&lt;/p&gt;It's a difficult article to read as a person who has many privileges, as it calls on you to think deeply about them and what you personally are doing to and for those without. I need to reread it, internalise it and do something about it.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:8024</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/8024.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=8024"/>
    <title>2007-03-05 Neologism of the day</title>
    <published>2007-03-05T02:20:04Z</published>
    <updated>2007-03-05T02:20:04Z</updated>
    <content type="html">Oarsuk (adj): something that ceases to be impressive just as its impressiveness is being commented on.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:7720</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/7720.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=7720"/>
    <title>2007-03-05 Google SoC Deadlines</title>
    <published>2007-03-05T02:03:23Z</published>
    <updated>2007-03-05T02:03:23Z</updated>
    <content type="html">Google have a &lt;a href="http://code.google.com/support/bin/answer.py?answer=60325&amp;amp;topic=10729"&gt;list of deadlines&lt;/a&gt; for the 2007 Summer of Code:&lt;p&gt;&lt;/p&gt;	•	March 5: Mentoring organizations can begin submitting applications to Google&lt;br /&gt;	•	March 12: Mentoring organization application deadline&lt;br /&gt;	•	March 13: Google program administrators review organization applications&lt;br /&gt;	•	March 14: List of accepted mentoring organizations published on code.google.com; student application period opens&lt;br /&gt;	•	March 24: Student application deadline&lt;br /&gt;	•	Interim Period: Mentoring organizations review and rank student proposals; where necessary, mentoring organizations may request further proposal detail from the student applicant&lt;br /&gt;	•	April 9: List of accepted student applications published on code.google.com&lt;br /&gt;	•	Interim Period: Students learn more about their project communities&lt;br /&gt;	•	May 28: Students begin coding for their GSoC projects; Google begins issuing initial student payments&lt;br /&gt;	•	Interim Period: Mentors give students a helping hand and guidance on their projects&lt;br /&gt;	•	July 9: Students upload code to code.google.com/hosting; mentors begin mid-term evaluations&lt;br /&gt;	•	July 16: Mid-term evaluation deadline; Google begins issuing mid-term student payments&lt;br /&gt;	•	August 20: Students upload code to code.google.com/hosting; mentors begin final evaluations; students begin final program evaluations&lt;br /&gt;	•	August 31: Final evaluation deadline; Google begins issuing student and mentoring organization payments&lt;p&gt;&lt;/p&gt;So to the NYC Lispers, the Yaws and ejabberd teams, and erlang hacking organisations in general: please submit mentoring organisation proposals - there are mentors and students who can't wait to hack neat code for you :)&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:7460</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/7460.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=7460"/>
    <title>2007-03-05 Programming Erlang</title>
    <published>2007-03-04T21:24:02Z</published>
    <updated>2007-03-04T21:24:02Z</updated>
    <content type="html">&lt;a href="http://armstrongonsoftware.blogspot.com/"&gt;Joe Armstrong&lt;/a&gt; is writing the &lt;a href="http://www.erlang.org"&gt;Erlang&lt;/a&gt; book I've been looking to buy since I started learning Erlang - &lt;a href="http://pragmaticprogrammer.com/titles/jaerlang/index.html"&gt;Programming Erlang&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;The other Erlang books are older and while they cover basic Erlang concepts well, they don't address programming with the Open Telephony Platform - the OTP in Erlang/OTP.&lt;p&gt;&lt;/p&gt;Joe's book sounds like it'll cover a very interesting set of topics:&lt;br /&gt;	1.	Getting Started (&lt;a href="http://media.pragprog.com/titles/jaerlang/GettingStarted.pdf"&gt;extract&lt;/a&gt;)&lt;br /&gt;	2.	Sequential Programming&lt;br /&gt;	3.	Advanced Sequential Programming&lt;br /&gt;	4.	Compiling and Running your Program&lt;br /&gt;	5.	Concurrent Programming (&lt;a href="http://media.pragprog.com/titles/jaerlang/Concurrent.pdf"&gt;extract&lt;/a&gt;)&lt;br /&gt;	6.	Errors in Concurrent Programs&lt;br /&gt;	7.	Distributed Programming&lt;br /&gt;	8.	IRC Lite&lt;br /&gt;	9.	Interfacing Techniques&lt;br /&gt;	10.	Programming With Files&lt;br /&gt;	11.	Programming With Sockets&lt;br /&gt;	12.	Ets and Dets--Large Data Storage Mechanisms&lt;br /&gt;	13.	Programming Techniques&lt;br /&gt;	14.	Introduction to OTP&lt;br /&gt;	15.	Advanced OTP&lt;br /&gt;	16.	OTP Templates&lt;br /&gt;	17.	Web server built with the OTP scaffolding&lt;br /&gt;	18.	Mnesia--The Erlang real-time database.&lt;br /&gt;	19.	Programming Multi-core CPUS&lt;br /&gt;	20.	Reference Material&lt;p&gt;&lt;/p&gt;I'm especially interested in the chapters on Mnesia and ETS/DETS. Time to preorder I think :)&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:6497</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/6497.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=6497"/>
    <title>2007-02-20 Mac OS X otool</title>
    <published>2007-02-20T01:10:52Z</published>
    <updated>2007-02-20T01:10:52Z</updated>
    <content type="html">checking for XML_ParserCreate in -lexpat... no sayeth configure, but libexpat is installed, so now I need to find out if the symbol is in libexpat or whether I have a different problem.&lt;p&gt;&lt;/p&gt;I know I need to use otool, but which incantation is a mystery and google is being less friendly than I'd like. Looks like time to read the manpage.&lt;p&gt;&lt;/p&gt;otool -vT seems to do what I want - and there it is: xmlparse.o _XML_ParserCreate. Still no joy.&lt;p&gt;&lt;/p&gt;Ahh, configure is looking at a different (or missing) expat location. --with-expat=/Library/DarwinPorts to the rescue.&lt;p&gt;&lt;/p&gt;Today's lession: otool -vT &amp;lt;/path/to/libfoo.dylib&amp;gt; -- lists the symbols in the dynamic library foo.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:4626</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/4626.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=4626"/>
    <title>2007-02-05 IRC Protocol</title>
    <published>2007-02-06T05:40:54Z</published>
    <updated>2007-02-06T05:42:56Z</updated>
    <content type="html">I'm not loving the IRC protocol. Fortunately I only have to fool undernet's ircd into believing I'm a valid server.&lt;p&gt;&lt;/p&gt;&amp;lt;hack, hack, hack&amp;gt;&lt;p&gt;&lt;/p&gt;Oh so it's not RFC2813 I have to implement... it's that plus &lt;a href="http://www.xs4all.nl/~carlo17/irc/P10.html"&gt;P10&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;&amp;lt;hack, hack, hack&amp;gt;&lt;p&gt;&lt;/p&gt;“a server has a “max client numeric“, this is sent in SERVER messages. a client numeric on a server, ANDed with the max server numeric, must be unique. for example if server YY's max client numeric is YYA]] (4095), clients YYBXX and YCXX can't exist at the same time, doing this would cause a “numeric collision“, which is in this a protocol violation. but such numerics which occupy the same “slot“ are not identical - a message sent to user YYBXX in this example must not reach user YYCXX.” --p10&lt;p&gt;&lt;/p&gt;What does  that even mean? Still,&lt;br /&gt;&lt;pre&gt;
=INFO REPORT==== 5-Feb-2007::23:58:40 ===
(&amp;lt;0.252.0&amp;gt; irc_server_session:122) Got event
{cmd,
 ":scrubbed.server 461 * SERVER :Not enough parameters\r\n",
 {user,
     "scrubbed.server",
     undefined,
     undefined},
 error,
 [{code,needmoreparams},
  {target,"*"},
  {command,"SERVER"},
  {text,
      "Not enough parameters"}]}
&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;probably means I'm on the right track.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:3488</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/3488.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=3488"/>
    <title>There is an easy way to</title>
    <published>2007-02-01T20:49:26Z</published>
    <updated>2007-02-01T20:49:26Z</updated>
    <content type="html">“There is an easy way to get a new entry into Journler from any app. Use the service menu, which is already assigned a hotkey of shift cmd J.” -- &lt;a href="http://journler.com/community/forums/viewtopic.php?t=1520&amp;amp;sid=96813b9998ff989385b1e8b45f3a6e2e"&gt;journler forums&lt;/a&gt;&lt;p&gt;&lt;/p&gt;Wow, that is pretty easy :)&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:3089</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/3089.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=3089"/>
    <title>2007-02-02 RabbitMQ</title>
    <published>2007-02-01T20:30:06Z</published>
    <updated>2007-02-01T20:30:06Z</updated>
    <content type="html">Oooh, &lt;a href="http://www.rabbitmq.com/"&gt;shiny&lt;/a&gt;. LShift just &lt;a href="http://www.lshift.net/blog/2007/02/01/rabbits-rabbits-rabbits"&gt;released&lt;/a&gt; a queuing system written in &lt;a href="http://www.erlang.org"&gt;Erlang&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;I'm in the process of writing some kind of queuing system for SMS transport - maybe &lt;a href="http://www.rabbitmq.com/"&gt;RabbitMQ&lt;/a&gt; will let me avoid all that.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:2949</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/2949.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=2949"/>
    <title>2007-02-02 Scheme vs. Common Lisp</title>
    <published>2007-02-01T20:06:57Z</published>
    <updated>2007-02-01T20:06:57Z</updated>
    <content type="html">This &lt;a href="http://groups.google.com/group/comp.lang.scheme/msg/18d1d6d4f84e70e3"&gt;article&lt;/a&gt; gives a very good explanation of some of the philosophical differences between &lt;a href="http://schemers.org"&gt;Scheme&lt;/a&gt; and &lt;a href="http://www.lisp.org"&gt;Common Lisp&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:2002</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/2002.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=2002"/>
    <title>2007-01-31 HashDot</title>
    <published>2007-01-31T08:38:42Z</published>
    <updated>2007-01-31T08:38:42Z</updated>
    <content type="html">&lt;p style="font: 14.0px Georgia"&gt;&lt;a href="http://franz.com"&gt;Franz&lt;/a&gt; have just posted a very interesting &lt;a href="http://www.franz.com/support/tech_corner/usgs-011207.lhtml"&gt;article&lt;/a&gt; demonstrating the&lt;span class="Apple-converted-space"&gt;  &lt;/span&gt;#. (sharpsign dot or hash dot)&lt;span class="Apple-converted-space"&gt;  &lt;/span&gt;&lt;a href="http://www.lisp.org/HyperSpec/Body/chap-23.html"&gt;reader macro&lt;/a&gt; in &lt;a href="http://www.lisp.org"&gt;CommonLisp&lt;/a&gt;.&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;(defvar *zipcode-data*&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span class="Apple-converted-space"&gt;    &lt;/span&gt;#.(let ((zips&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt; &lt;span class="Apple-converted-space"&gt;    &lt;/span&gt;(prog2&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt; (progn (format t “reading zips.cvs...“)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;(force-output))&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt; (read-zips-csv&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;  &lt;/span&gt;(merge-pathnames “zips.csv“ *compile-file-pathname*))&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt; &lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(format t “done~%“))))&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;(list 'list&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(vector-of zips #'zip-code)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(vector-of zips #'zip-state-abbrev)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(vector-of zips (lambda (zip)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;(let ((loc (zip-location zip)))&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;  &lt;/span&gt;(cons (location-latitude loc)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;(location-longitude loc)))))&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(vector-of zips #'zip-city)&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span style="white-space:pre"&gt;	&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;(vector-of zips #'zip-state))))&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;This snippet reads zipcode data into the variable *zipcode-data*. The sneaky bit is that it does this at read/compile time.&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;When the compiler comes to create the special variable *zipcode-data* (think static variable in javalike languages) the #.( .... ) macro is expanded, calling code that reads the zipcode CSV file into a list of vectors (zip code, state abbreviation, (latitude, longitude), city, state).&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;After the reader has performed its #. magic, the compiler sees:&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;(list #&amp;lt;...vector of zip codes...&amp;gt;&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;...&lt;/p&gt;&lt;p style="font: 12.7px Courier; background-color: #ddffff"&gt;&lt;span class="Apple-converted-space"&gt;      &lt;/span&gt;#&amp;lt;...vector of states...&amp;gt;)&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;Which the compiler then writes out to the compiled lisp file as static data.&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;Essentially common lisp reader magic has allowed us to easily turn a startup cost (initialising *zipcode-data*) into a compile-time cost. Now to find a problem to apply this to :)&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:1552</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/1552.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=1552"/>
    <title>2007-01-29 GPG and the web of *snore*</title>
    <published>2007-01-29T07:59:16Z</published>
    <updated>2007-01-29T07:59:16Z</updated>
    <content type="html">&lt;p style="font: 14.0px Georgia"&gt;&lt;a href="http://www.gnupg.org/"&gt;GPG&lt;/a&gt; is a really neat crypto system that allows you to encrypt and sign data without requiring a central key granting authority. It relies on trust relationships between people's keys - I sign Joe Bloggs' key to indicate that a particular key for joe@bloggs.com is the key he uses. Why is that important? Well it lets you trust keys that you don't know about directly.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;For instance I might receive an email GPG-signed by Jane Doe (jane@doe.com). Joe has signed Jane's key and as I trust Joe and his key, I can trust Jane's key because Joe has effectively vouched for her.&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;At least this is the theory about how it all works. People are busy going to conferences and signing eachother's keys to build up a global web of trust. I trust you, you trust him, he trusts someone else and so on. Sadly this trust data is badly under-used. Try using any GPG-enabled application (of which there are precious few) and doing anything with all those trust entries you've created. Yeah... that's what I thought. If you're lucky you might get some kind of &lt;a href="http://www.chaosreigns.com/code/sig2dot/debian.html"&gt;pretty graph&lt;/a&gt; or a really low &lt;a href="http://en.wikipedia.org/wiki/Mean_Shortest_Distance"&gt;MSD&lt;/a&gt; score.&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;Don't even get me started on actual &lt;a href="http://www.keysigning.org/methods/sassaman-projected"&gt;keysigning events&lt;/a&gt; -- I know you hate spammers, but would you really do this to your parents in the name of securing email?&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;&amp;lt;/curmudgeon&amp;gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia; min-height: 16.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 14.0px Georgia"&gt;The less crotchety side of me is really waiting for a nice GPG UI and deep and thoughtful integration into the apps I use to communicate with people. iGPG anyone?&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:1210</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/1210.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=1210"/>
    <title>2007-01-29 Where oh where have my megs gone?</title>
    <published>2007-01-28T21:58:35Z</published>
    <updated>2007-01-28T21:58:35Z</updated>
    <content type="html">&lt;p style="font: 12.0px Helvetica"&gt;pmTool was using about 350M of resident RAM this morning and causing lots and lots of wonderful swapping (complete with attendant interactivity problems). I always thought this was just some essential Mac OS X power management daemon that couldn't be killed without causing trouble. In the past I've just rebooted every week or two to keep pmTool consuming only an unreasonable amount of RAM.&lt;/p&gt;&lt;p style="font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 12.0px Helvetica"&gt;Turns out that pmTool is actually part of Activity Monitor... the program I run to find out what processes are eating all my RAM and causing all the swapping. GAH. At least I can avoid a few reboots now - just restart Activity Monitor and you get all of pmTool's RAM back.&lt;/p&gt;&lt;p style="font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 12.0px Helvetica"&gt;*head asplode* :)&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:815</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/815.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=815"/>
    <title>2007-01-27 Mac OS X Swapping</title>
    <published>2007-01-27T06:27:31Z</published>
    <updated>2007-01-27T06:27:31Z</updated>
    <content type="html">&lt;p style="font: 12.0px Helvetica"&gt;I'm quite a fan of Mac OS X (Tiger) - great UI, great apps, unixy underneath etc, but its interactive performance with a high IO load (like when it decides to swap) is awful. Though I haven't used Linux on my desktop for a long while, but I sure don't remember interactivity just &lt;b&gt;going away&lt;/b&gt; for minutes while it did something memory/swap intensive.&lt;/p&gt;&lt;p style="font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 12.0px Helvetica"&gt;&lt;i&gt;Grubles&lt;/i&gt;&lt;/p&gt;&lt;p style="font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font: 12.0px Helvetica"&gt;Small number of points awarded for none of the interactivity problems affecting iTunes playback.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:archaelus:545</id>
    <link rel="alternate" type="text/html" href="http://archaelus.livejournal.com/545.html"/>
    <link rel="self" type="text/xml" href="http://archaelus.livejournal.com/data/atom/?itemid=545"/>
    <title>2007-01-27 Music of the Week -- Uncertain Girl</title>
    <published>2007-01-27T03:18:00Z</published>
    <updated>2007-01-27T03:31:03Z</updated>
    <content type="html">I'm continually amazed by the sheer number of really great artists there are around the place in Wellington. Last weekend I got a copy of &lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=87396093"&gt;Sarah Wiig's&lt;/a&gt; first album, "Uncertain Girl" and I've been listening to it in iTunes pretty much all week. My favourite tracks so far are Peat Street, Uncertain and Empty, though the others are great too.&lt;br&gt;&lt;journler info="link" note="journler://resource/2/IMG_7518.JPG"&gt;&lt;journler info="rtfd" note="insert image here"&gt;&lt;img src="http://pics.livejournal.com/archaelus/pic/00001h82/s640x640" alt="Uncertain Girl" /&gt;&lt;/journler&gt;&lt;/journler&gt;&lt;br&gt;&lt;a href="http://www.agepryor.co.nz/"&gt;Age Pryor&lt;/a&gt;, &lt;a href="www.thephoenixfoundation.co.nz"&gt;The Phoenix Foundation&lt;/a&gt;, &lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=87396093"&gt;Sarah Wiig&lt;/a&gt; -- I wonder what bands I haven't found out about yet...</content>
  </entry>
</feed>
