<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>unflyingobject.com</title>
    <link>https://unflyingobject.com/</link>
    <description>Recent content on unflyingobject.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 04 Feb 2020 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://unflyingobject.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Movie Review: Late Phases (2014)</title>
      <link>https://unflyingobject.com/posts/late-phases-2014/</link>
      <pubDate>Tue, 04 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/late-phases-2014/</guid>
      <description>Director: Adrián García Bogliano. Starring: Nick Damici, Ethan Embry, Lance Guest. Running time: 95 minutes.
Ambrose McKinley - a blind war veteran - moves into a retirement community. He gets attacked by a werewolf. Then he buys some silver bullets and kills all the werewolves.
Sorry for spoiling the movie, but I&#39;m honestly doing you a favor.
I used to love werewolf movies as a kid. The suspense of not knowing who it was, the anticipation of the next full moon, the origin story of the beast, chases in creepy woods, villagers with pitchforks.</description>
    </item>
    
    <item>
      <title>Of Lice and Men</title>
      <link>https://unflyingobject.com/posts/of-lice-and-men/</link>
      <pubDate>Sun, 26 Jan 2020 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/of-lice-and-men/</guid>
      <description>A louse demands an audience!
A Man asks for attention
A Man smiles
A louse grins
A Man hugs
A louse
 shrugs
 A Man looks at beauty
and sees Beauty
 A louse looks at Beauty
and sees property
 A Man looks at Weakness
and sees Beauty
A louse looks at Weakness and sees
opportunity
 A Man looks at Love
and sees Life
A louse looks at his dick</description>
    </item>
    
    <item>
      <title>Movie Review: A Cure for Wellness (2016)</title>
      <link>https://unflyingobject.com/posts/a-cure-for-wellness-2016/</link>
      <pubDate>Thu, 23 Jan 2020 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-cure-for-wellness-2016/</guid>
      <description>Director: Gore Verbinski Starring: Dane DeHaan, Jason Isaacs, Mia Goth Running time: 146 minutes
Lockhart - a New York banker is sent to the Swiss alps to retrieve the company&#39;s CEO from a mysterious wellness spa to &amp;ldquo;sign off on some legal matters&amp;rdquo;&amp;hellip;
I really enjoyed it. The cinematography was stunning, the locations and sets breathtaking. It&#39;s not particularly original - this is all material we&#39;ve seen somewhere in some form before and you can see many of the plot twists coming from a mile away, but it&#39;s all so well put together and visually mesmerizing that it never manages to get old, especially considering the hefty running time.</description>
    </item>
    
    <item>
      <title>Remembering mcare</title>
      <link>https://unflyingobject.com/posts/remembering-mcare/</link>
      <pubDate>Mon, 13 Jan 2020 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/remembering-mcare/</guid>
      <description>The word for &amp;ldquo;business&amp;rdquo; and &amp;ldquo;attempt&amp;rdquo; are homonyms in the Finnish language - &amp;ldquo;yritys&amp;rdquo;. I&#39;ve always liked how that goes right to the heart of entrepreneurship - it&#39;s always little more than an attempt at something. Not just the founding of a business, but also its everyday operation - every day you simply try to do something better.
Mcare had been my third attempt at working for myself. With the company turning ten, I thought it&#39;s time to look back at this incredible learning experience in both good and bad.</description>
    </item>
    
    <item>
      <title>Upgrading Nextcloud Server to 15 and PHP 7.2</title>
      <link>https://unflyingobject.com/posts/upgrading-nextloud/</link>
      <pubDate>Sat, 26 Jan 2019 10:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/upgrading-nextloud/</guid>
      <description>Just a quit update on a previous howto I wrote on installing Nextcloud from scratch on a FreeBSD 11 server - for PHP 7.2 and Nextcloud 15.
The basic procedure is the same, with some minor differences - you no longer have to compile the Redis module yourself and there are a couple of extra PHP extensions that Nextcloud 15 recommends:
$ pkg remove php71 $ pkg install php72 php72-{ftp,ctype,dom,gd,iconv,json,xml,mbstring,posix,simplexml,xmlreader,xmlwriter,zip,zlib,session,hash,filter,opcache,pdo_pgsql,curl,openssl,fileinfo,pcntl,intl,pecl-redis3,memcache,bz2,pecl-memcached} If you&#39;re upgrading from the console, don&#39;t forget to run all the necessary OCC commands next:</description>
    </item>
    
    <item>
      <title>Faceoff</title>
      <link>https://unflyingobject.com/posts/faceoff/</link>
      <pubDate>Thu, 10 Jan 2019 11:34:29 +0200</pubDate>
      
      <guid>https://unflyingobject.com/posts/faceoff/</guid>
      <description>To the three other people on the planet still not on Facebook - here&#39;s a quick hack to get rid of that annoying login/signup form splash screen that Facebook plops in your face whenever you&#39;re forced to browse a page there. For people who don&#39;t know what I&#39;m talking about because they&#39;re always logged into Facebook, here&#39;s what I mean:
I&#39;ve been clicking the &amp;ldquo;Not now&amp;rdquo; button for years, but noticed recently that Facebook&#39;s been removing that option, at random.</description>
    </item>
    
    <item>
      <title>Using Certbot with DNS Made Easy</title>
      <link>https://unflyingobject.com/posts/certbot-dns-dnsmadeeasy/</link>
      <pubDate>Mon, 10 Sep 2018 20:40:31 +0300</pubDate>
      
      <guid>https://unflyingobject.com/posts/certbot-dns-dnsmadeeasy/</guid>
      <description>Let&#39;s Encrypt (LE) is an awesome project and a boon for the entire internet community. Not only have they made HTTPS accessible to everyone, but the whole process of creating and renewing certs is much more user-friendly and thought-through than any commercial certificate authority I&#39;ve dealt with in the past.
&amp;hellip; but If you&#39;ve ever had to manage a larger number of certs, for different services, you may have noticed that the default challenge and verification method on FreeBSD, when using nginx (webroot) can become a bit messy and fragile.</description>
    </item>
    
    <item>
      <title>The Curious Case of cd</title>
      <link>https://unflyingobject.com/posts/the-curious-case-of-cd/</link>
      <pubDate>Tue, 09 Jan 2018 22:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-curious-case-of-cd/</guid>
      <description>Did you know that /usr/bin/cd is a shell script? I didn&#39;t, but it makes perfect sense when you think about it. Here&#39;s what it looks like on macOS:
#!/bin/sh# $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $# This file is in the public domain.builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+&amp;#34;$@&amp;#34;}And here&#39;s the original from FreeBSD:
#!/bin/sh# $FreeBSD: releng/11.0/usr.bin/alias/generic.sh 151635 2005-10-24 22:32:19Z cperciva $# This file is in the public domain.</description>
    </item>
    
    <item>
      <title>ArchiCAD BIMcloud SSL Proxy Howto</title>
      <link>https://unflyingobject.com/posts/archicad-bimcloud-ssl-proxy-howto/</link>
      <pubDate>Mon, 08 Jan 2018 20:41:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/archicad-bimcloud-ssl-proxy-howto/</guid>
      <description>Ingredients  A BIMcloud manager running on http://bim.example.com:19000 (A) A BIMserver ArchiCAD 19 module running on http://bim.example.com:19001, paired with A A BIMserver ArchiCAD 21 module running on http://ac21.example.com:21001, paired with A nginx installed and running in your DMZ  Secret names In BIMcloud 21 it&#39;s possible to define multiple URLs to access a given BIM server. We will take advantage of this feature to map our public hostnames and secure URLs with our private names and insecure URLs.</description>
    </item>
    
    <item>
      <title>Twelve on Eleven - Installing Nextcloud 12 on FreeBSD 11, from scratch</title>
      <link>https://unflyingobject.com/posts/nextcloud-12-from-scratch-with-freebsd-11/</link>
      <pubDate>Mon, 02 Oct 2017 18:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/nextcloud-12-from-scratch-with-freebsd-11/</guid>
      <description>Getting Started Let&#39;s begin by installing our web and database servers. Notice we&#39;re installing Postgres 9.5, not 9.6 - this is because, at the time of this writing, the PHP PDO module for Postgres requires version 9.5:
$ sudo -sPassword:# pkg install nginx postgresql95-serverUpdating FreeBSD repository catalogue...FreeBSD repository is up to date.All repositories are up to date.Updating database digests format: 100%The following 4 package(s) will be affected (of 0 checked):New packages to be INSTALLED:nginx: 1.</description>
    </item>
    
    <item>
      <title>Mattermost - a review</title>
      <link>https://unflyingobject.com/posts/mattermost-a-review/</link>
      <pubDate>Wed, 08 Feb 2017 20:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mattermost-a-review/</guid>
      <description>Messages.app sucks Let&#39;s get this out of the way - if you think you&#39;re happy with just using Jabber then you&#39;ve either not tried anything else or are not paying attention to your users. Although Jabber (either with macOS Server or other) + Messages.app could be considered &amp;ldquo;better than nothing&amp;rdquo;, it is actually worse:
 Cannot use server accounts in mobile app Cannot share files with a chat room No easy way to browse chat rooms No support for private rooms No way to link to chat messages No reliable way to search the messages Cross-platform Jabber clients suck  Most of those can be blamed on poor clients, but some I believe are shortcomings of the XMPP protocol itself.</description>
    </item>
    
    <item>
      <title>Upgrading PostgreSQL on FreeBSD</title>
      <link>https://unflyingobject.com/posts/upgrading-postgresql-on-freebsd/</link>
      <pubDate>Wed, 07 Dec 2016 09:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/upgrading-postgresql-on-freebsd/</guid>
      <description>In addition to the standard pg_dumpall/restore procedure when moving from one major PostgreSQL version to another, we also need to take care of 2 changes that happened in the FreeBSD package between 9.3 and 9.6. Namely, the datastore location and postgres username.
Please note that I&#39;m upgrading the pkg-version of postgres 9.3 with all stock options (pgsql user, data store at /usr/local/pgsql/data).
First, stop all apps and services that are using the postgres DB to avoid any changes between the backup and service shutdown</description>
    </item>
    
    <item>
      <title>The Guardian Is Cool</title>
      <link>https://unflyingobject.com/posts/the-guardian-is-cool/</link>
      <pubDate>Mon, 18 Apr 2016 18:54:32 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-guardian-is-cool/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Say Hello to Servo</title>
      <link>https://unflyingobject.com/posts/say-hello-to-servo/</link>
      <pubDate>Sun, 06 Dec 2015 22:23:09 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/say-hello-to-servo/</guid>
      <description>I had written my first Service Management System (SMS) for Humac back in 2008 and Servo was, in many ways the &amp;ldquo;2.0 version&amp;rdquo; of that. In true 2.0 fashion, getting it out the door proved to be orders of magnitude more difficult than I could ever have imagined.
What does it do? Servo is basically an ERP for service providers. It will do everything except pay your bills and salaries. At the center, you have the service order which contains customer data, the serviceable device(s) and service parts, products and services you want to sell.</description>
    </item>
    
    <item>
      <title>My Stove Goes to 11</title>
      <link>https://unflyingobject.com/posts/my-stove-goes-to-11/</link>
      <pubDate>Sat, 25 Jul 2015 16:15:58 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/my-stove-goes-to-11/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Create Your Own CopyPath</title>
      <link>https://unflyingobject.com/posts/create-your-own-copypath/</link>
      <pubDate>Sat, 25 Jul 2015 16:00:29 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/create-your-own-copypath/</guid>
      <description>Open /Applications/Automator, create a new Service &amp;ldquo;Service receives selected files or folders in Finder Add a &amp;ldquo;Run AppleScript&amp;rdquo; action:  on run {input, parameters}set the clipboard to (posix path of input)end run Save as Copy Path (or whatever you like) Open Systerm Preferences &amp;gt; Keyboard &amp;gt; Shortcuts &amp;gt; App Shortcuts Add a new one &amp;gt; Application: Finder, Menu Title: Copy Path (or whatever you saved it as), shortcut Ctrl-Cmd-C (or whataver you like)  Update: You can now do this directly in the Finder with Alt+Cmd+C</description>
    </item>
    
    <item>
      <title>Installing lxml on 10.9</title>
      <link>https://unflyingobject.com/posts/installing-lxml-on-109/</link>
      <pubDate>Fri, 17 Jan 2014 07:39:18 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/installing-lxml-on-109/</guid>
      <description>That&#39;s because 10.9 doesn&#39;t come with libxml, but rather libxml2. Luckily the latter also includes the headers for libxml under
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2/libxml So we can easily solve the problem by modifying our pip command:
$ CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 pip install -U lxml </description>
    </item>
    
    <item>
      <title>Dark Souls Quote</title>
      <link>https://unflyingobject.com/posts/dark-souls-quote/</link>
      <pubDate>Mon, 13 Jan 2014 15:49:11 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dark-souls-quote/</guid>
      <description>What it should really say on the box:
 What kills you, makes you stronger.
 </description>
    </item>
    
    <item>
      <title>Banks</title>
      <link>https://unflyingobject.com/posts/banks/</link>
      <pubDate>Mon, 06 Jan 2014 21:48:43 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/banks/</guid>
      <description> &amp;ldquo;A bank is a place where they lend you an umbrella in fair weather and ask for it back when it begins to rain.&amp;rdquo;
 </description>
    </item>
    
    <item>
      <title>Phishers should spellcheck too.</title>
      <link>https://unflyingobject.com/posts/phishers-should-spellcheck-too/</link>
      <pubDate>Thu, 02 Jan 2014 23:37:25 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/phishers-should-spellcheck-too/</guid>
      <description></description>
    </item>
    
    <item>
      <title>iSeeYou</title>
      <link>https://unflyingobject.com/posts/iseeyou/</link>
      <pubDate>Thu, 19 Dec 2013 21:40:24 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/iseeyou/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Spotlight Does Math Too</title>
      <link>https://unflyingobject.com/posts/spotlight-does-math-too/</link>
      <pubDate>Tue, 17 Dec 2013 21:19:15 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/spotlight-does-math-too/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Preview Has Page History</title>
      <link>https://unflyingobject.com/posts/preview-has-page-history/</link>
      <pubDate>Tue, 17 Dec 2013 21:04:46 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/preview-has-page-history/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Neighbours having sex</title>
      <link>https://unflyingobject.com/posts/neighbours-having-sex/</link>
      <pubDate>Mon, 09 Dec 2013 20:33:36 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/neighbours-having-sex/</guid>
      <description>Tried to give a subtle hint to the neighbours. Didn&#39;t work.
![I Can Hear you having sex](uploads/Screen_Shot 2013-12-09_at_20.31.26.png)</description>
    </item>
    
    <item>
      <title>Don&#39;t mess with Time Machine</title>
      <link>https://unflyingobject.com/posts/dont-mess-with-time-machine/</link>
      <pubDate>Mon, 09 Dec 2013 11:53:42 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dont-mess-with-time-machine/</guid>
      <description>My backup setup is of pretty much your typical “slightly more techie mac geek” -variety, combining the ease-of-use of Time Machine (TM) with the awesome power and versatility of FreeNAS. Both my machines are backed up this way - my main 27” iMac (mid 2011) and my (t)rusty 2008 MacBook Pro, both running 10.9. I had been planning to give the iMac a much-needed IO boost by replacing the optical drive with an SSD and setting up a home-brew Fusion Drive setup.</description>
    </item>
    
    <item>
      <title>Hinode</title>
      <link>https://unflyingobject.com/posts/hinode/</link>
      <pubDate>Sun, 08 Dec 2013 23:55:17 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/hinode/</guid>
      <description></description>
    </item>
    
    <item>
      <title>10.7: System Information</title>
      <link>https://unflyingobject.com/posts/107-system-information/</link>
      <pubDate>Mon, 01 Aug 2011 18:21:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/107-system-information/</guid>
      <description>One cool addition to Lion, at least from a techie&#39;s perspective is System Information (previously known as System Profiler). On the outside it looks pretty much like System Profiler, with all it&#39;s categories:
&amp;hellip; but, hit Cmd-I and voila:
Notice the title of the window. I&#39;m guessing this will one day replace the venerable &amp;ldquo;About This Mac&amp;rdquo; under the Apple menu. This thing could be pretty useful since it tells you how you&#39;re hard drive space is distributed:</description>
    </item>
    
    <item>
      <title>Auditron</title>
      <link>https://unflyingobject.com/posts/auditron/</link>
      <pubDate>Sun, 17 Jul 2011 23:27:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/auditron/</guid>
      <description>I&#39;ve started a pretty useful little project over at Github, called Auditron. It&#39;s essentially a wrapper for System Profiler that you can easily preconfigure and then distribute, say via email.
Very often you have to audit a bunch of totally unmanaged Macs and I know from personal experience that touching every machine yourself either doesn&#39;t work very well (&amp;ldquo;Umm, does anyone know the password to Joe&#39;s workstation?&amp;quot;) or is simply impossible (&amp;ldquo;Umm, does anyone know where Joe&#39;s workstation is?</description>
    </item>
    
    <item>
      <title>Mediator</title>
      <link>https://unflyingobject.com/posts/mediator/</link>
      <pubDate>Sun, 10 Jul 2011 19:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mediator/</guid>
      <description>Back from our trip to NYC with my sister, we had a whole bunch of AVCHD material in MTS format that I just couldn&#39;t get into iMovie. So the idea was to first convert them to QuickTime. Turns out there&#39;s no shortage of &amp;ldquo;mts2mov&amp;rdquo; utilities out there but they&#39;re all crapware. Horrible Windows-look-alike contraptions with ridiculous pricetags and big honking &amp;ldquo;try now for free&amp;rdquo;-signs&amp;hellip; yuck.
But then I turned to my old friend ffmpeg, downloaded, compiled and, as usual, had a fresh batch of QuickTime files ready for editing in no time at all.</description>
    </item>
    
    <item>
      <title>cpu2asr</title>
      <link>https://unflyingobject.com/posts/cpu2asr/</link>
      <pubDate>Fri, 10 Jun 2011 17:32:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cpu2asr/</guid>
      <description>There&#39;s one more new tool in MTK that I thought was worth a quick shout-out, namely cpu2asr. While netbless has turned out to be pretty useful, restoring entire CPUs with it has two drawbacks:
 You have to create a user account to install the bundled applications (the second disc) It&#39;s slow. While an installer-based workflow is great for doing &amp;ldquo;archive &amp;amp; install&amp;rdquo; — type installations, restoring a brand new drive with this method is much slower than a simple ASR restore.</description>
    </item>
    
    <item>
      <title>asd2nb</title>
      <link>https://unflyingobject.com/posts/asd2nb/</link>
      <pubDate>Tue, 07 Jun 2011 16:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/asd2nb/</guid>
      <description>A word of warning - ASD OS tests are not currently designed to be run over NetBoot. In our testing we&#39;ve seen several false positives and some tests (like NIC tests) even seem to hang. But considering the benefits, this is definitely something to try out and maybe even implement, once you know how to work around a few known issues.
Also, the EFI tests seem to work just fine.</description>
    </item>
    
    <item>
      <title>AST &amp; DeployStudio</title>
      <link>https://unflyingobject.com/posts/ast-deploystudio/</link>
      <pubDate>Fri, 03 Jun 2011 09:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ast-deploystudio/</guid>
      <description>In AST version 1.0.6 (?) Apple added the &amp;ldquo;Other NetBoot&amp;rdquo; option to boot other NBI:s hosted on the same server. This is great, except I think there&#39;s a bug that makes it incompatible with DeployStudio.
DeployStudio creates root images with the name &amp;ldquo;DeployStudioRuntime.sparseimage&amp;rdquo;. It also says so in the NBImageInfo.plist&#39;s RootPath key. For some strange reason, using the &amp;ldquo;Other NetBoot&amp;rdquo; command sets the root path to &amp;ldquo;NetInstall.dmg&amp;rdquo;. You can see it clearly by starting up in verbose mode or reading setenv.</description>
    </item>
    
    <item>
      <title>gsxcl</title>
      <link>https://unflyingobject.com/posts/gsxcl/</link>
      <pubDate>Sun, 29 May 2011 18:15:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/gsxcl/</guid>
      <description>Just wanted to give a quick shoutout to gsxcl. It started out as a simple test tool for gsxlib, but has now evolved into a pretty useful replacement for GSX&#39;s web UI. Currently it supports the following operations:
 Warranty status Part lookups Checking repair details and status Downloading part return labels  That&#39;s right - you can even use this to quickly download the return label of a part as a PDF:</description>
    </item>
    
    <item>
      <title>NetBless &amp; DeployStudio</title>
      <link>https://unflyingobject.com/posts/netbless-deploystudio/</link>
      <pubDate>Tue, 10 May 2011 18:46:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/netbless-deploystudio/</guid>
      <description>It turns out that NetBless works really well together with DeployStudio. All that was needed was a simple change while checking for $USER.
This is actually pretty cool - it gives you access to all your installation media, right within DeployStudio, your users don&#39;t have to &amp;ldquo;learn Terminal&amp;rdquo; and you no longer have to worry about individual diagnostics OS being up to date - it&#39;s all in NetBoot.
For our environment, I created 3 workflows:</description>
    </item>
    
    <item>
      <title>gsxlib</title>
      <link>https://unflyingobject.com/posts/gsxlib/</link>
      <pubDate>Fri, 29 Apr 2011 13:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/gsxlib/</guid>
      <description>Noticed I have several web apps all using their own GSX code, so the idea is to refactor them all under this one library.
Very simple to use, you don&#39;t even have to know the WSDL URL:
&amp;lt;?phpinclude &#39;gsxlib/gsxlib.php&#39;;$gsx = new GsxLib(&#39;your sold-to account&#39;, &#39;gsx user&#39;, &#39;password&#39;);$info = $gsx-&amp;gt;warrantyStatus(&#39;serialnumber&#39;);echo $info-&amp;gt;productDescription;?&amp;gt;MacBook Pro (15-inch 2.4/2.2GHz) Currently it only has a shortcut for warranty status checks, more to come soon.</description>
    </item>
    
    <item>
      <title>IT Tip Of the Month - Change Your Managed Switch&#39;s Default IP</title>
      <link>https://unflyingobject.com/posts/it-tip-of-the-month-change-your-managed-switchs-default-ip/</link>
      <pubDate>Tue, 19 Apr 2011 09:50:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/it-tip-of-the-month-change-your-managed-switchs-default-ip/</guid>
      <description>But which switch are you actually connecting to?
I assumed it was the one on the other end of the Ethernet cable. Checking the VLAN configuration revealed there were none so I assumed this switch was only part of the network I was deleting (I was combining two networks) and then just connected this switch to the other network.
And then nothing worked. And I spent the next 3 hours fixing things and got home around 2 AM&amp;hellip;</description>
    </item>
    
    <item>
      <title>Some Things</title>
      <link>https://unflyingobject.com/posts/some-things/</link>
      <pubDate>Tue, 12 Apr 2011 00:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/some-things/</guid>
      <description>Some random updates:
  PHP&#39;s gettext support made me want to smoke crack so I ported the entire servo localisation to one based on JSON. Also, POEdit is rubbish so I feel much better now. Also wrote a simple tool to convert existing PO files to JSON.
  The only thing I was missing from POEdit was the ability to quickly scan the sources for updated strings. So I wrote this thing which actually works pretty well.</description>
    </item>
    
    <item>
      <title>Virtualmin RC Script for FreeBSD</title>
      <link>https://unflyingobject.com/posts/virtualmin-rc-script-for-freebsd/</link>
      <pubDate>Fri, 04 Feb 2011 11:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/virtualmin-rc-script-for-freebsd/</guid>
      <description>Virtualmin&#39;s in ports, but I liked it so much that we decided to buy the pro version, which of course, isn&#39;t. Unfortunately, the latest FreeBSD version the installer script officially supports is 7.x, so I guess that&#39;s why some of the system setup didn&#39;t go quite as planned.
I&#39;m happy to report that the system seems to be running fine (for a few months now), the only thing that didn&#39;t work at all was the startup script, so I had to create one from scratch:</description>
    </item>
    
    <item>
      <title>NetBoot Over OpenVPN</title>
      <link>https://unflyingobject.com/posts/netboot-over-openvpn/</link>
      <pubDate>Tue, 01 Feb 2011 10:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/netboot-over-openvpn/</guid>
      <description>NetBooting over VPN isn&#39;t anything new or that complicated - just set up a tunnel and use bless with the slightly more elaborate arguments to set the boot parameters, as in Mr. Bombich&#39;s example:
sudo bless --netboot --booter tftp://server.apple.edu/NetBoot/NetBootSP0/NetInstall.nbi/i386/booter \\--kernel tftp://server.apple.edu/NetBoot/NetBootSP0/NetInstall.nbi/i386/mach.macosx \\--options &amp;quot;rp=nfs:server.apple.edu:/private/tftpboot/NetBoot/NetBootSP0:NetInstall.nbi/NetInstall-Restore.dmg&amp;quot; Where the IP of server.apple.edu would be at the other end of the tunnel. The problem is, this requires a working system and isn&#39;t particularly &amp;ldquo;user firendly&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>netbless</title>
      <link>https://unflyingobject.com/posts/netbless/</link>
      <pubDate>Fri, 07 Jan 2011 10:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/netbless/</guid>
      <description>In my previous post, I alluded to a tool that we use to make NetBooting different machines with their correct OS quite a bit simpler. Here&#39;s what it is and how to use it. But first a few words about my workflow:
The Setup   We collect CPU installation media from customers and resellers and then rip them to the file server. I rip both disks into a folder named after the &amp;ldquo;mnemonic&amp;rdquo; name of that machine.</description>
    </item>
    
    <item>
      <title>NetBoot on FreeBSD</title>
      <link>https://unflyingobject.com/posts/netboot-on-freebsd/</link>
      <pubDate>Thu, 23 Dec 2010 15:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/netboot-on-freebsd/</guid>
      <description>The Specs  I built this system for our Authorized Apple Service Provider where we use it primarily for NetInstalling machines after a hard drive replacement. Getting the right system on the right machine is crucial and NetBoot provides the best platform to do so, in my opinion (as opposed to, say having dozens of drives and/or partitions of installers for every possible Intel Mac, for each of your technicians). We don&#39;t need diskless support (something I&#39;ll probably have to address sooner or later).</description>
    </item>
    
    <item>
      <title>Me Thinks So Too</title>
      <link>https://unflyingobject.com/posts/me-thinks-so-too/</link>
      <pubDate>Thu, 25 Nov 2010 23:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/me-thinks-so-too/</guid>
      <description>but still, the most heartfelt spam email ever:</description>
    </item>
    
    <item>
      <title>BatchDMG Updated</title>
      <link>https://unflyingobject.com/posts/batchdmg-updated/</link>
      <pubDate>Sun, 14 Nov 2010 20:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/batchdmg-updated/</guid>
      <description>A while back I wrote a little utility to ease imaging large collections of discs. I had to use it recently only to discover that it didn&#39;t work anymore. Don&#39;t know why - the mount notifications just weren&#39;t firing. Tired of fussing around with PyObjc, I rewrote the whole thing in clean Objective C and everything seems to work fine again.
There are also some improvements - you can now specify the output path (defaults to the current directory) as the first argument as well as run it with any number of optical drives (I tested it with 2).</description>
    </item>
    
    <item>
      <title>Still Different?</title>
      <link>https://unflyingobject.com/posts/still-different/</link>
      <pubDate>Sat, 13 Nov 2010 16:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/still-different/</guid>
      <description>The quote from old the Crazy Ones-ad in TextEdit&#39;s icon still carries some emotional weight, but does it apply to the Apple of today?</description>
    </item>
    
    <item>
      <title>aptest</title>
      <link>https://unflyingobject.com/posts/aptest/</link>
      <pubDate>Wed, 10 Nov 2010 20:34:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/aptest/</guid>
      <description>This is where iperf comes in:
 Iperf was developed by NLANR/DAST as a modern alternative for measuring maximum TCP and UDP bandwidth performance. Iperf allows the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.
 In other words it can do a hell of a lot more than just generate traffic, but that&#39;s what we&#39;ll use it for this time. iperf consists of two parts - a client and a server.</description>
    </item>
    
    <item>
      <title>Building a Software Update Server Replica with FreeBSD</title>
      <link>https://unflyingobject.com/posts/building-a-software-update-server-replica-with-freebsd/</link>
      <pubDate>Thu, 04 Nov 2010 23:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/building-a-software-update-server-replica-with-freebsd/</guid>
      <description>A short intro One of the interesting facets of starting a business is that you don&#39;t have any money. This forces you to find creative, and most importantly, cost-effective (i.e. free) solutions to problems. For example, our service center is divided into two networks - the &amp;ldquo;office&amp;rdquo; network (employee&#39;s machines, printers, servers) and the &amp;ldquo;service&amp;rdquo; network (customer machines).
The only server license we could afford is being used by the Mac mini server in the office network, providing mail, wiki, calendar and chat services.</description>
    </item>
    
    <item>
      <title>iTunes Plus &amp; Personal Info</title>
      <link>https://unflyingobject.com/posts/itunes-plus-personal-info/</link>
      <pubDate>Mon, 04 Oct 2010 01:19:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/itunes-plus-personal-info/</guid>
      <description>iTunes Plus is awesome, however there&#39;s one thing that hasn&#39;t been discussed much - namely that the purchased songs are all laced with the customer&#39;s personal information (such as their full name and Apple ID). I do think this is a good way to fight piracy but does present some problems in the event of the files leaking from the machine.
This isn&#39;t totally new - some guys made a tool to strip the info, way back in 2007.</description>
    </item>
    
    <item>
      <title>SPPC</title>
      <link>https://unflyingobject.com/posts/sppc/</link>
      <pubDate>Mon, 27 Sep 2010 11:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sppc/</guid>
      <description>Service Part Price Calculator is a handy little widget I wrote for calculating prices of Apple&#39;s service parts. It works with the XLS file you can download from GSX after which it will work without an internet connection. It&#39;s especially useful since GSX has been so incredibly slow for quite a while now.
It&#39;s really simple to use - just download the pricelist from GSX (Parts Lookup &amp;gt; Download Complete Service Parts Price List) and unzip.</description>
    </item>
    
    <item>
      <title>Son of September</title>
      <link>https://unflyingobject.com/posts/son-of-september/</link>
      <pubDate>Wed, 22 Sep 2010 23:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/son-of-september/</guid>
      <description>I turned 0x1E today.
When I went to high school, to study Japanese, my mother bought me a book about Japanese culture. This small book talked about, among other things, the Japanese astrological calendar, including brief descriptions of how each sign will live their lives. It sounds ridiculous, but so far pretty much everything the book predicted has come true. Especially the part about the late twenties of the monkey being full of ups and downs and many failures.</description>
    </item>
    
    <item>
      <title>Collect iTunes Playlist</title>
      <link>https://unflyingobject.com/posts/collect-itunes-playlist/</link>
      <pubDate>Fri, 10 Sep 2010 21:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/collect-itunes-playlist/</guid>
      <description>[Here&#39;s][1] a handy AppleScript for anyone who occasionally needs to collect all the files of a given playlist into one folder. The only silly requirement is that a track in the playlist must be playing while it&#39;s run (it&#39;s the only way I found how to refer to a &amp;ldquo;selected&amp;rdquo; playlist).
So just play a song in the list, run the script and it will prompt you for a destination into which it&#39;ll create a folder named after the playlist and copy all the files into it.</description>
    </item>
    
    <item>
      <title>pingraph</title>
      <link>https://unflyingobject.com/posts/pingraph/</link>
      <pubDate>Thu, 19 Aug 2010 22:41:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/pingraph/</guid>
      <description>I am troubleshooting some network issues and was trying to find an automated way to continuously monitor connectivity between a host and a server. On thing that sprang to mind was to run ping in the background, with a reasonable interval, in the hopes of perhaps narrowing down the network issues to a particular time frame.
This resulted a ping dump with over 30 000 &amp;ldquo;samples&amp;rdquo; which weren&#39;t that useful as such.</description>
    </item>
    
    <item>
      <title>A Script for Remote Desktop</title>
      <link>https://unflyingobject.com/posts/a-script-for-remote-desktop/</link>
      <pubDate>Wed, 18 Aug 2010 17:57:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-script-for-remote-desktop/</guid>
      <description>One silly feature omission in Apple Remote Desktop is the lack of a &amp;ldquo;Open SSH connection&amp;rdquo; command. To be able to open a Terminal window with a connection to the currently selected machine. Luckily we can create this ourselves pretty easily:
applescripttell application &amp;quot;Remote Desktop&amp;quot;set theIp to Internet address of selectionset defaultUser to current user of selectionset theUser to text returned of (display dialog &amp;quot;&amp;quot; default answer defaultUser)tell application &amp;quot;Terminal&amp;quot;activatedo script &amp;quot;ssh -l &amp;quot; &amp;amp; quoted form of theUser &amp;amp; &amp;quot; &amp;quot; &amp;amp; theIpend tellend tellSave that as a script with AppleScript Editor named &amp;ldquo;Open SSH connection&amp;rdquo; under ~/Library/Scripts/Applications/Remote Desktop and now you have way to do just that straight from the menu bar.</description>
    </item>
    
    <item>
      <title>Not Very Helpful</title>
      <link>https://unflyingobject.com/posts/not-very-helpful/</link>
      <pubDate>Fri, 30 Jul 2010 20:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/not-very-helpful/</guid>
      <description>This still cracks me up when I see it:</description>
    </item>
    
    <item>
      <title>FreeBSD Software Update Server</title>
      <link>https://unflyingobject.com/posts/freebsd-software-update-server/</link>
      <pubDate>Fri, 30 Jul 2010 19:18:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/freebsd-software-update-server/</guid>
      <description>One of the cool things about starting a business is that you don&#39;t have any money. This forces you to find creative solutions to problems you might otherwise just throw money at. For instance, we needed a server to host all our ASR images, to do NetBoot and Software Update and perhaps one day to run somekind of preinstallation system. The one server we already had, a Mac mini was set to to email, calendaring and collaboration services so we didn&#39;t want to overburden it.</description>
    </item>
    
    <item>
      <title>Bug. Report. Can&#39;t.</title>
      <link>https://unflyingobject.com/posts/bug-report-cant/</link>
      <pubDate>Wed, 28 Jul 2010 11:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/bug-report-cant/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Toot That Horn!</title>
      <link>https://unflyingobject.com/posts/toot-that-horn/</link>
      <pubDate>Wed, 23 Jun 2010 13:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/toot-that-horn/</guid>
      <description>One of the weirdest bugs I have ever come across.
After spending hours in the network closet, systematically unplugging each device to see if it had any effect on the issue, I finally found it - it was a printer who&#39;s Bonjour name was &amp;ldquo;Mörkö&amp;rdquo;. The problem disappeared after renaming it to &amp;ldquo;Morko&amp;rdquo;. So I filed a bug report.
It turned out Apple saw this as a security issue and so they took it very seriously and I&#39;m happy to report that it&#39;s been resolved in 10.</description>
    </item>
    
    <item>
      <title>Kannel Installer</title>
      <link>https://unflyingobject.com/posts/kannel-installer/</link>
      <pubDate>Mon, 21 Jun 2010 10:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/kannel-installer/</guid>
      <description>Kannel is a great platform for all things mobile. We use the SMS gateway feature with our service management system to notify customers when their machines are ready for pickup. All you basically need is a mobile phone which you can connect to your Mac via USB and Kannel.
Surprisingly, it&#39;s not available through MacPorts or Fink and compiling it from source has been rather tricky in the past. Through some experimentation I found that the CVS version works better on 10.</description>
    </item>
    
    <item>
      <title>Resizing RAID Volumes</title>
      <link>https://unflyingobject.com/posts/resizing-raid-volumes/</link>
      <pubDate>Sat, 24 Apr 2010 09:28:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/resizing-raid-volumes/</guid>
      <description>First off, beware - there are two documents on apple.com, both titled &amp;ldquo;RAID Utility User Guide - Instructions for setting up RAID volumes on a computer with a Mac Pro RAID Card or Xserve RAID Card&amp;rdquo; (here and here.
The first was created in 2007, the second in 2009. I would assume the latter is more relevant. On page 10 of that document we find the following statement:
 Expanding a Volume</description>
    </item>
    
    <item>
      <title>Seeing Double</title>
      <link>https://unflyingobject.com/posts/seeing-double/</link>
      <pubDate>Sat, 10 Apr 2010 09:14:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/seeing-double/</guid>
      <description>There&#39;s a bug in iCal that in some situations will show every name twice when adding attendees to an event. Adding one of them will always give an error (the oh-so-not-helpful tiny exclamation mark next to the name). iCal will still add that &amp;ldquo;ghost&amp;rdquo;, but the invitation will obviously never be sent.
At first this looked a bit like the proxy bug, but since this isn&#39;t about delegates, but actual user accounts (and since running proxyclean didn&#39;t find any errors) I turned my attention to Open Directory.</description>
    </item>
    
    <item>
      <title>Nokia Phones and Your Server</title>
      <link>https://unflyingobject.com/posts/nokia-phones-and-your-server/</link>
      <pubDate>Sat, 10 Apr 2010 08:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/nokia-phones-and-your-server/</guid>
      <description>If your organisation uses Nokia phones, then by default, a stock 10.6 mail server will be pretty much useless. Even with some fairly recent hardware (E72), the phones won&#39;t be able to send or receive any mail. Here&#39;s how to make it work:
  Enable PLAIN authentication for IMAP, POP and SMTP. This isn&#39;t such a big issue if you&#39;re using SSL. Some Nokia&#39;s might actually do CRAM-MD5 off the bat, but sooner or later you will run into a user who can&#39;t log in.</description>
    </item>
    
    <item>
      <title>They Never Use SSL?</title>
      <link>https://unflyingobject.com/posts/they-never-use-ssl/</link>
      <pubDate>Thu, 25 Mar 2010 18:43:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/they-never-use-ssl/</guid>
      <description>OS X Server just makes me want to smoke crack sometimes. Dealing with SSL certs is one of those cases. At first, everything is peachy:
 Create your self-signed cert in Server Admin, sans passphrase Have it signed by a Certificate Authority Import the signed cert, verify that all works.  Great. Now you want to install Rumpus and the WFM and use SSL for that too. First, let&#39;s try to just paste the PEM file:</description>
    </item>
    
    <item>
      <title>Went Indie</title>
      <link>https://unflyingobject.com/posts/went-indie/</link>
      <pubDate>Mon, 15 Mar 2010 19:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/went-indie/</guid>
      <description>R&amp;amp;D at mcare  It&#39;s the third startup I&#39;ve been involved in, but this one is very different. This one will actually fly. After a month and a half, we know it can. The biggest difference is that for the first time, we have actual employees and the company is our only source of income. This not only motivates you, but also allows you to focus much better.
I&#39;ll probably age six years this year, but I must say, even when things are really tough, and with some weeks constantly re-defining the meaning of mental anguish, there are moments when I feel truly happy.</description>
    </item>
    
    <item>
      <title>PHP and Mac line endings</title>
      <link>https://unflyingobject.com/posts/php-and-mac-line-endings/</link>
      <pubDate>Mon, 04 Jan 2010 16:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/php-and-mac-line-endings/</guid>
      <description>ini_set(&amp;lsquo;auto_detect_line_endings&amp;rsquo;, TRUE);</description>
    </item>
    
    <item>
      <title>Keychain Access... Dancing?</title>
      <link>https://unflyingobject.com/posts/keychain-access-dancing/</link>
      <pubDate>Wed, 16 Dec 2009 21:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/keychain-access-dancing/</guid>
      <description>Keychain Access went into a weird &amp;ldquo;trance&amp;rdquo;-like state today when I tried to import a Cisco VPN certificate:
It&#39;s like it&#39;s afraid of the impending Force Quit that happened shortly after.</description>
    </item>
    
    <item>
      <title>Deploying Final Cut Studio</title>
      <link>https://unflyingobject.com/posts/deploying-final-cut-studio/</link>
      <pubDate>Tue, 15 Dec 2009 16:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/deploying-final-cut-studio/</guid>
      <description>I (and every other sysadmin who&#39;s had to deal with this) often bash Adobe for creating &amp;ldquo;enterprise-unfriendly&amp;rdquo; installers but when you think about it, Apple is just as bad with Final Cut Studio (i.e. &amp;ldquo;their Creative Suite&amp;rdquo;). It may come as a pkg but that doesn&#39;t mean you can automate the installation any better. The main reason seams to be that FCS packages refer to each disc using a x-disc URL scheme which installer seems to ignore.</description>
    </item>
    
    <item>
      <title>Validating Finnish Social Security Numbers</title>
      <link>https://unflyingobject.com/posts/validating-finnish-social-security-numbers/</link>
      <pubDate>Tue, 15 Dec 2009 13:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/validating-finnish-social-security-numbers/</guid>
      <description>Just in case someone else needs this - here&#39;s one, fairly elegant and succinct way to validate Finnish SSN&#39;s, in JavaScript:
/*** Check Finnish social security number* @return true if correct, false if incorrect, -1 if malformed*/function checkSsn(ssn){ssn = ssn.toLowerCase();m = ssn.match(/(\d{6})-(\d{3})(\w){1}/);if (!m) {return -1;}c = Array(); base = 35;n = parseInt(m[1] + m[2], 10) % 31;for (i = 0; i &amp;lt; base; i++) {e = parseInt(i, 10).</description>
    </item>
    
    <item>
      <title>Makes Sense?</title>
      <link>https://unflyingobject.com/posts/makes-sense/</link>
      <pubDate>Tue, 15 Dec 2009 13:28:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/makes-sense/</guid>
      <description>Yeah, that&#39;s what I thought too. This happens every time I tried to create a NetRestore image using Apple&#39;s System Image Utility. Clicking &amp;ldquo;OK&amp;rdquo; just brings the same dialog back after some time.
This reminds me of how a customer brought me his PowerBook with the classic &amp;ldquo;Document was not saved&amp;rdquo; dialog in Excel 2004, with only one button - &amp;ldquo;OK&amp;rdquo;. &amp;ldquo;No, it&#39;s not OK&amp;rdquo;, he said. :-)</description>
    </item>
    
    <item>
      <title>Reinstalling Final Cut Server.app</title>
      <link>https://unflyingobject.com/posts/reinstalling-final-cut-serverapp/</link>
      <pubDate>Thu, 10 Dec 2009 14:35:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/reinstalling-final-cut-serverapp/</guid>
      <description>If you ever find yourself being unable to re-install Final Cut Server.app, then open/Applications/Utilities/Java Preferences &amp;gt; Network and click on the &amp;ldquo;Delete Files&amp;hellip;&amp;rdquo; button and re-download.</description>
    </item>
    
    <item>
      <title>Punk Widget Update</title>
      <link>https://unflyingobject.com/posts/punk-widget-update/</link>
      <pubDate>Sat, 14 Nov 2009 20:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/punk-widget-update/</guid>
      <description>I was cleaning up log files on our web server and noticed I was getting quite a few hits on the script that acts as the backend for the IMDB widget that me and Martin created. Then I tried using it and noticed there were some parse errors with weird numbered lists showing up after a search result. I guess IMDB had tweaked their layout again.
Anyways, the script&#39;s been fixed now.</description>
    </item>
    
    <item>
      <title>Relocating SUS on 10.6 server</title>
      <link>https://unflyingobject.com/posts/relocating-sus-on-106-server/</link>
      <pubDate>Wed, 11 Nov 2009 08:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/relocating-sus-on-106-server/</guid>
      <description>This might actually be in the new documentation, I haven&#39;t checked, but when you rsync your SUS catalog to another volume and set it to use it, you will see a similar error in the logs:
Symbolic link not allowed or link target not accessible /Volumes/data/SoftwareUpdate/html/index.sucatalog This will probably only happen if you remove the original swupd datastore. The fix is to clear out all the index files:
serveradmin stop softwareupdaterm -rf /Volumes/data/SoftwareUpdate/html/index*serveradmin start softwareupdate IIRC, this wasn&#39;t necessary in 10.</description>
    </item>
    
    <item>
      <title>BatchDMG</title>
      <link>https://unflyingobject.com/posts/batchdmg/</link>
      <pubDate>Wed, 21 Oct 2009 22:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/batchdmg/</guid>
      <description>BatchDMG is a handy utility for times when you have to image large collections of disks (like installation media etc). Just run it (as root, to avoid an authentication dialog) and start feeding your machine with media.
The imaging starts automatically when a volume is mounted. Should also work with multiple DVD drives. The images are bzip compressed (UDBZ, need 10.4 or later to open) and are named after the volume name.</description>
    </item>
    
    <item>
      <title>MediaRelay</title>
      <link>https://unflyingobject.com/posts/mediarelay/</link>
      <pubDate>Tue, 20 Oct 2009 14:56:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mediarelay/</guid>
      <description>MediaRelay is a little Python tool I wrote that transfers new items from one FTP server to another. It can be useful when combined with a timer or possibly a folder action.
To use it, just modify config.yaml. Multiple sources and destinations can be defined under their own &amp;ldquo;name&amp;rdquo;. Anonymous connections haven&#39;t been tested, but should be in the form &amp;ldquo;:@server/path&amp;rdquo;.
$ python relay.py -- checking default&amp;lt;- getting Untitled_2.wmv-&amp;gt; sending Untitled_2.</description>
    </item>
    
    <item>
      <title>Integrating a Forum with Your Wiki</title>
      <link>https://unflyingobject.com/posts/integrating-a-forum-with-your-wiki/</link>
      <pubDate>Sun, 18 Oct 2009 12:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/integrating-a-forum-with-your-wiki/</guid>
      <description>Some weeks ago Jussi asked about how to go about intagrating a forum with one&#39;s WikiServer. I thought this was a brilliant idea - a forum is actually much more useful for many environments than a blog or even a wiki. I think the concept of collaborative editing is quite foreign for the majority of existing companies and blogs are very often just silly. A discussion however is something that everyone is used to with email and group addresses yet everyone knows how painful it is to create &amp;ldquo;workgroups&amp;rdquo; - a group of people working on the same thing - which is exactly what a discussion group/forum is meant for.</description>
    </item>
    
    <item>
      <title>Mail.app Attachments</title>
      <link>https://unflyingobject.com/posts/mailapp-attachments/</link>
      <pubDate>Mon, 12 Oct 2009 08:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mailapp-attachments/</guid>
      <description>In my experience the thing that Mail users have the most problems with (even before the confusion about how IMAP folders are organized compared to Outlook) is how it handles attachments. Or rather how incompatible the default behaviour is with a lot of Outlook clients out there. A couple of preferences that I&#39;ve found improve things quite a bit are:
defaults write com.apple.com SendWindowsFriendlyAttachments -bool Yes defaults write com.apple.com AttachAtEnd -bool Yes  It&#39;s the second one, disabling inline attachments, that really makes a difference.</description>
    </item>
    
    <item>
      <title>10.6 Mail Migration Bug Workaround</title>
      <link>https://unflyingobject.com/posts/106-mail-migration-bug-workaround/</link>
      <pubDate>Sun, 11 Oct 2009 10:27:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/106-mail-migration-bug-workaround/</guid>
      <description>There&#39;s a small bug in the Mail migration script (/System/Library/ServerSetup/MigrationExtras/65_mail_migrator.pl) if your mail server also happens to be an OD replica. Namely it tries to set the correct ownership of mailboxes right after the upgrade but the binding has not been set up at that point yet. Come to think of it, this should happen to non-OD-master mail server, but I&#39;m not sure.
The point is, chown will not be able to set the permissions since it won&#39;t have any idea of who those users actually are, so after upgrading and re-binding, one should do something like this (as root):</description>
    </item>
    
    <item>
      <title>DIY IO Benchmarking</title>
      <link>https://unflyingobject.com/posts/diy-io-benchmarking/</link>
      <pubDate>Sun, 11 Oct 2009 09:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/diy-io-benchmarking/</guid>
      <description>Here&#39;s a totally unscientific and potentially extremely flawed tool for measuring IO performance. It grew out of the frustration of not being able to at least roughly estimate and compare the performance of different disks when dealing with different file sizes. Most benchmarking tools out there seem to focus on large files, but for mail and iCal servers this information is basically useless.
So I hacked together this thing in like 10 minutes.</description>
    </item>
    
    <item>
      <title>That Newline Thing</title>
      <link>https://unflyingobject.com/posts/that-newline-thing/</link>
      <pubDate>Thu, 08 Oct 2009 13:34:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/that-newline-thing/</guid>
      <description>I finally figured out why I was never able to create matching encrypted passwords for my PHP apps from the command line. For instance:
$ echo abc | shasum03cfd743661f07975fa2f1220c5194cbaff48451 -$ php -r &#39;echo sha1(&amp;quot;abc&amp;quot;);&#39;a9993e364706816aba3e25717850c26c9cd0d89d Not quite the same. The reason is of course totally obvious, just not visible - echo puts a newline after everything by default, so instead of the previous, one should use:
$ echo -n abc | shasuma9993e364706816aba3e25717850c26c9cd0d89d - Duh.</description>
    </item>
    
    <item>
      <title>Python vs PHP</title>
      <link>https://unflyingobject.com/posts/python-vs-php/</link>
      <pubDate>Tue, 22 Sep 2009 08:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/python-vs-php/</guid>
      <description>Python pros:
 Comes with built-in documentation Named parameters Threads PyObjc, AppScript plistlib  Python cons:
 No bundled imaging library No SOAP Inconsistent support (2.3 on 10.4) mod_python not very widespread  PHP cons:
 No threads  PHP pros:
 Documentation comes with plenty of examples PHP Function Index mod_php Can use backticks to call external tools  Django: Mac running Mac vs Mac running Linux (Python)</description>
    </item>
    
    <item>
      <title>Accessing Keychain from PyObjC</title>
      <link>https://unflyingobject.com/posts/accessing-keychain-from-pyobjc/</link>
      <pubDate>Sun, 20 Sep 2009 10:42:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/accessing-keychain-from-pyobjc/</guid>
      <description>10.5 came bundled with PyObjC, but in 10.6 it&#39;s actually usable since we now have Python 2.6.1 (with &amp;ldquo;batteries included&amp;rdquo;). This makes Python more and more the language of choice for your everyday Cocoa hacking needs.
One of the problems you&#39;ll run into quite early on is accessing the Keychain which is still firmly in Carbon aka procedural C land. Maybe the PyObjC bridge also allows calling C stuff, I don&#39;t know, but lucky for us, we don&#39;t have to.</description>
    </item>
    
    <item>
      <title>SOUP Kitchen</title>
      <link>https://unflyingobject.com/posts/soup-kitchen/</link>
      <pubDate>Tue, 15 Sep 2009 08:50:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/soup-kitchen/</guid>
      <description>SOUP (SOftware UPdate) Kitchen is a little web front end I wrote for Software Update Server (SUS). It allows you to download individual packages from the server which can be really handy in some situations. The obligatory screenshot:
There&#39;s a number of things I would like to do with it, like have proper version strings displayed for starters. All the metadata on the SUS could also be linked to the packages so that one could get pretty detailed information on what a package actually installs.</description>
    </item>
    
    <item>
      <title>Wikid Problems</title>
      <link>https://unflyingobject.com/posts/wikid-problems/</link>
      <pubDate>Mon, 14 Sep 2009 18:15:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/wikid-problems/</guid>
      <description>I saw a server (build 9L34) with an odd TeamsServer (wikid) problem. Users could log in correctly, but every time they tried to write to the wiki a login dialog would pop up and the popup would only accept an admin&#39;s credentials. This entry would just show up in /Library/Logs/wikid/error_log:
[WebDAVProtocol,client] &amp;quot;[Failure instance: Traceback: &amp;lt;class &#39;zanshin.http.HTTPError&#39;&amp;gt;: &amp;lt;&amp;lt;class &#39;zanshin.http.HTTPError&#39;&amp;gt; (404) Not Found&amp;gt;\n/usr/share/caldavd/lib/python/twisted/internet/defer.py:304:_startRunCallbacks\n/usr/share/caldavd/lib/python/twisted/internet/defer.py:317:_runCallbacks\n/usr/share/caldavd/lib/python/twisted/internet/defer.py:239:callback\n/usr/share/caldavd/lib/python/twisted/internet/defer.py:304:_startRunCallbacks\n--- &amp;lt;exception caught here&amp;gt; ---\n/usr/share/caldavd/lib/python/twisted/internet/defer.py:317:_runCallbacks\n/usr/share/wikid/lib/python/apple_calendar/CalendarReportUtilities.py:135:handleReportResponse\n]&amp;quot; with a sprinkle of these here and there:</description>
    </item>
    
    <item>
      <title>Passgen Update</title>
      <link>https://unflyingobject.com/posts/passgen-update/</link>
      <pubDate>Sat, 29 Aug 2009 12:32:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/passgen-update/</guid>
      <description>I&#39;ve updated my little password generator with a web interface. I think this makes this thing much more useful and usable.
Other improvements include defaulting the wordlist to /usr/share/dict/web2 which means you can run your scripts against it without any arguments and still get something out of it:
&amp;gt; curl http://unflyingobject.com/passgen/passgen.phpProp3ll4Ph4rm4CoHydroPluTh4Lth4nSupr4oRbSc4bB3DM3roG3n1!ROQUO1SHYPOTH3C If you want to use Webster&#39;s from the web interface, just leave the URL field blank.</description>
    </item>
    
    <item>
      <title>Desklabel</title>
      <link>https://unflyingobject.com/posts/desklabel/</link>
      <pubDate>Sat, 29 Aug 2009 12:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/desklabel/</guid>
      <description>Just a little something I needed for work - a simple and consistent way to set the desktop backround of a server. Specs were simple - should be a solid color, with the same resolution as my display and should have some way to help me identify the host in question (like the DNS name or any arbitrary text).
So I wrote Desklabel. The interface is so straight-forward that it doesn&#39;t make any sense to waste time explaining it.</description>
    </item>
    
    <item>
      <title>Weird Spam</title>
      <link>https://unflyingobject.com/posts/weird-spam/</link>
      <pubDate>Fri, 17 Jul 2009 19:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/weird-spam/</guid>
      <description>Just received one of the weirdest/cutest spam messages ever:
The text says something like &amp;ldquo;I need spam right away!&amp;rdquo; in Russian.
Oh, and that fancy zoom effect is FancyZoom</description>
    </item>
    
    <item>
      <title>phpshell 0.1</title>
      <link>https://unflyingobject.com/posts/phpshell-01/</link>
      <pubDate>Fri, 17 Jul 2009 16:26:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/phpshell-01/</guid>
      <description>This is kind of weird, but maybe somewhat useful some day. Looking for a quick way to test out PHP code, I ended up writing a small PHP &amp;ldquo;shell&amp;rdquo; (i.e. like IRB):
It comes with some useful shortcuts:
 e() print&#39;s anything to the screen, including arrays (through print_r()) man() prints the entire manual page of a function. This requires that you have PHP Function Index installed. fi() opens a command in PHP Function Index d() reads stuff from the defaults database Entering a function name without the paranthesis gives a short 20 line explanation of the command from the manual  There are some limitations - it requires PHP with readline support (which MAMP doesn&#39;t have, not to mention Apple&#39;s stock PHP) and links to render the HTML pages.</description>
    </item>
    
    <item>
      <title>Sift 0.1</title>
      <link>https://unflyingobject.com/posts/sift-01/</link>
      <pubDate>Mon, 13 Jul 2009 11:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sift-01/</guid>
      <description>A while back I got really frustrated with the belly dance one has to go through to get vacation messages going on OS X server. And even after that you have to leave your users with Squirrelmail as the UI which get&#39;s impossibly slow if they have a lot of messages in their inbox.
So the idea was to write a full-blown Sieve script GUI, which would also allow for easy OOF message creation.</description>
    </item>
    
    <item>
      <title>Site Upgrade</title>
      <link>https://unflyingobject.com/posts/site-upgrade/</link>
      <pubDate>Sun, 12 Jul 2009 20:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/site-upgrade/</guid>
      <description>Well, as excited as I was about running this blog from text files, I used a few hours today to created a &amp;ldquo;proper&amp;rdquo; admin interface for it as well as move the contents to SQLlite (which, btw is a totally kickass project).
Perhaps the biggest new &amp;ldquo;feature&amp;rdquo; is that the search field actually works now. It gave results before (using grep, no less!), but was unable to link to the actual stories because the files had no notion of what the story ID&#39;s were.</description>
    </item>
    
    <item>
      <title>Sending mail from launchd jobs</title>
      <link>https://unflyingobject.com/posts/sending-mail-from-launchd-jobs/</link>
      <pubDate>Sun, 12 Jul 2009 20:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sending-mail-from-launchd-jobs/</guid>
      <description>In case you&#39;ve ever wondered why your launchd scripts are not sending mail (even though they seem to be running), it&#39;s probably because of a silly incompativiliy between launchd and mail, described in more detail here.
To work around this, always include the following in your job&#39;s plist:
&amp;lt;key&amp;gt;AbandonProcessGroup&amp;lt;/key&amp;gt;&amp;lt;true/&amp;gt; and then just reload the plist. I find myself doing that quite often, so this Bash alias helps cut down on typing:</description>
    </item>
    
    <item>
      <title>Caldavd vs DirectoryService</title>
      <link>https://unflyingobject.com/posts/caldavd-vs-directoryservice/</link>
      <pubDate>Thu, 02 Jul 2009 20:42:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/caldavd-vs-directoryservice/</guid>
      <description>Has your OD master began to run really slow, with DirectoryService taking over 100% of your CPU? Running iCal server on the same machine? Deleted any accounts recently?
Then you might be bitten by the same bug I finally figured out, thanks to the AFP548 forum.
When you delete a user, the delegates are not deleted, which, depending on the number of delegates you have (we have quite a few as all group members are set as RW delegates for the group account in addition to personal delegations), puts a tremendous burden on DirectoryService as caldavd pounds it with questions it doesn&#39;t know how to answer, ala:</description>
    </item>
    
    <item>
      <title>GetIcon.m</title>
      <link>https://unflyingobject.com/posts/geticonm/</link>
      <pubDate>Tue, 26 May 2009 20:55:14 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/geticonm/</guid>
      <description>Shell scripting is awesome, but there are situations where it just won&#39;t help you. Like when you&#39;re supposed to save the full-res icon of any file as a PNG image.
Luckily it&#39;s quite easy with a bit of ObjC. This is what I threw together for this particular problem:
#GeIcon.m#Save icon of given path as a PNG image#import &amp;lt;AppKit/AppKit.h&amp;gt; int main (int argc, const char * argv[]) { if (argc &amp;lt; 2) { printf(&amp;#34;Usage: GetIcon input output&amp;#34;); return 1; } NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSString *imgPath = [NSString stringWithCString:argv[1]]; NSString *outPath = [NSString stringWithCString:argv[2]]; NSWorkspace *ws = [NSWorkspace sharedWorkspace]; NSImage *img = [ws iconForFile:imgPath]; NSData *data = [img TIFFRepresentation]; NSBitmapImageRep *bits = [NSBitmapImageRep imageRepWithData:data]; NSData *imgData = [bits representationUsingType:NSPNGFileType properties:nil]; [imgData writeToFile:outPath atomically:NO]; [pool drain]; return 0; } If anyone know how to do this using shell tools, please let me know.</description>
    </item>
    
    <item>
      <title>GetHelper.m</title>
      <link>https://unflyingobject.com/posts/gethelperm/</link>
      <pubDate>Tue, 26 May 2009 20:42:58 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/gethelperm/</guid>
      <description>I needed a reliable way to find out a user&#39;s default email client. After being fed up with monkey around with launchservice defaults and awk, I turned to XCode, and wrote this Foundation tool:
# GetHelper.m# Return the helper app for a URL scheme#import &amp;lt;Foundation/Foundation.h&amp;gt;int main (int argc, const char * argv[]){ if (argc &amp;lt; 2) {printf(&amp;quot;Usage: GetHelper scheme&amp;quot;);return 1;}NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];NSString * s = [NSString stringWithCString:argv[1]];id helper;NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];[defaults addSuiteNamed:@&amp;quot;com.</description>
    </item>
    
    <item>
      <title>class PropertyList</title>
      <link>https://unflyingobject.com/posts/class-propertylist/</link>
      <pubDate>Thu, 30 Apr 2009 12:13:28 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/class-propertylist/</guid>
      <description>Something for people who use PHP for Mac OS stuff - a class wrapper for Theo Hultberg&#39;s nice PLIST parsing implementation. Usage example:
include &amp;#34;plist.php&amp;#34;;$plist = new PropertyList(&amp;#34;/Users/filipp/Music/iTunes/iTunes Music Library.xml&amp;#34;);$array = $plist-&amp;gt;toArray();echo count($array[&amp;#39;Tracks&amp;#39;]);6670Great for building reports from System Profiler dumps and all sorts of cool stuff. Download here.</description>
    </item>
    
    <item>
      <title>Spotlost</title>
      <link>https://unflyingobject.com/posts/spotlost/</link>
      <pubDate>Wed, 29 Apr 2009 16:52:22 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/spotlost/</guid>
      <description>A customer was having problems with server-side Spotlight searching in Finder giving inaccurate results - basically using a partial file name would give less results than using the whole name. When rebuilding the index didn&#39;t help I began to study this problem closely&amp;hellip;
&amp;hellip; which lead me to the discovery of yet another &amp;ldquo;undocumented (bad) feature&amp;rdquo; in Finder and more importantly, Spotlight. When you use the built-in search field, the search term is not &amp;ldquo;any name that contains this&amp;rdquo; or even &amp;ldquo;any name that starts with this&amp;rdquo;, but rather &amp;ldquo;any *word within a name* that contains this&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>Diskspacemonitor Hack</title>
      <link>https://unflyingobject.com/posts/diskspacemonitor-hack/</link>
      <pubDate>Sat, 14 Mar 2009 08:59:14 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/diskspacemonitor-hack/</guid>
      <description>Diskspacemonitor is a nice feature and something I try to remember to activate on all servers I manage, but unfortunately it&#39;s missing the ability to choose which volumes you actually want to monitor. So whenever someone sticks a CD in or mounts a disc image, your helpdesk inbox will be flooded with messages, every 10 seconds.
I looked into it and could&#39;t find any hidden variable to change this, but being a nicely written shell script, diskspacemonitor is easy to customize.</description>
    </item>
    
    <item>
      <title>get_email_addresses_hook</title>
      <link>https://unflyingobject.com/posts/get_email_addresses_hook/</link>
      <pubDate>Mon, 02 Mar 2009 07:39:40 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/get_email_addresses_hook/</guid>
      <description>SmartSieve is something one can use to set up server-based mail filtering, including vacation messages. It has a nice feature which enables it to fetch any list of email addresses for a user account. The default hook for this uses LDAP, but unfortunately does not work with OS X server. Here&#39;s a modified get_email_addrsesses_hook that works on both 10.4 and 10.5:
function getEmailAddresses() { $server = &#39;localhost&#39;; $baseDn = &#39;cn=users,dc=pretendco,dc=com&#39;; $addresses = array(); if (extension_loaded(&#39;ldap&#39;)) { $ds = ldap_connect($server); // To avoid protocol error ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if ($ds) { // Anonymous bind.</description>
    </item>
    
    <item>
      <title>Hansakicker</title>
      <link>https://unflyingobject.com/posts/hansakicker/</link>
      <pubDate>Tue, 24 Feb 2009 06:18:58 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/hansakicker/</guid>
      <description>HansaWorld Enterprise is probably the most used enterprise-level business software for the Mac in Europe (maybe because it&#39;s the only one). It&#39;s been around for ages and so has picked up a bit of cruft along the way (I hear there&#39;s a native Cocoa port in the works, but we&#39;ll see). This means that when it works, it works, but when it starts to crash, you&#39;re options are to try what little tricks you may know yourself, pay an insane amount of money to have some guy look at it, or just restart it.</description>
    </item>
    
    <item>
      <title>Xbox 360 vs PS 3</title>
      <link>https://unflyingobject.com/posts/xbox-360-vs-ps-3/</link>
      <pubDate>Wed, 18 Feb 2009 21:51:21 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/xbox-360-vs-ps-3/</guid>
      <description>Instead of doing something useful, here I am, writing about what could be the most pointless subject ever. LOL. As if the millions of screaming teenagers weren&#39;t enough, I&#39;m going to chime in on this subject and say it: the Xbox 360 is a better gaming system than the PlayStation 3. Here&#39;s why:
###Graphics### First impressions are important here. From the moment I saw Resistance 2 on the PS3, I realized that the 360 is graphically more capable.</description>
    </item>
    
    <item>
      <title>TVIX HD M-6500A Review</title>
      <link>https://unflyingobject.com/posts/tvix-hd-m-6500a-review/</link>
      <pubDate>Sun, 15 Feb 2009 14:16:48 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/tvix-hd-m-6500a-review/</guid>
      <description>Not much info out there on this device, especially from a Mac user&#39;s perspective, so here goes. I&#39;ve used this thing for about 4 months now so this &amp;ldquo;review&amp;rdquo; might have some points that some others might miss. I usually just skip to the conclusion, so:
The Good  Really does support a wide range of video formats. Haven&#39;t run into a file that it couldn&#39;t handle. They&#39;re of course out there (QuickTime comes to mind), but for all intents and purposes, I&#39;d say the format support is more than adequate.</description>
    </item>
    
    <item>
      <title>DVR-106D Patch</title>
      <link>https://unflyingobject.com/posts/dvr-106d-patch/</link>
      <pubDate>Sun, 15 Feb 2009 12:23:59 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dvr-106d-patch/</guid>
      <description>This one&#39;s a bit of a &amp;ldquo;blast from the past&amp;rdquo;, but I found so much confusing and contradictory information on the subject that I decided to write down the exact steps myself.
To region unlock, and get rid of the crippling 4x ripping speed of a Pioneer DVR-106 DVD writer (a very popular SuperDrive Apple used in many G4 towers and iMacs back in the day), complete these easy steps:</description>
    </item>
    
    <item>
      <title>Happy 1234567890!</title>
      <link>https://unflyingobject.com/posts/happy-1234567890/</link>
      <pubDate>Fri, 13 Feb 2009 23:36:31 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/happy-1234567890/</guid>
      <description>Today&#39;s the big day, or more exactly, today at 01:31:30 is the big second:
filipp@Vorchan.local [~] &amp;gt; date -r 1234567890 laupäev, 14. veebruar 2009. 01:31:30 EET  &amp;hellip; when the Unix timestamp hits the magical 1234567890 number!
And here it is:
Thanks to Jens for bringing this up&amp;hellip;
Oh, and to any friends reading this - happy Valentine&#39;s. ;-)</description>
    </item>
    
    <item>
      <title>Mail.app Delivery Receipts</title>
      <link>https://unflyingobject.com/posts/mailapp-delivery-receipts/</link>
      <pubDate>Thu, 05 Feb 2009 13:57:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mailapp-delivery-receipts/</guid>
      <description>Everybody hates delivery receipts, but who cares when the customer needs them. Mail.app doesn&#39;t support them, but does have the hidden preference UserHeaders which can include any additional headers, including Disposition-Notification-To.
Here&#39;s a very simple AppleScript I wrote that toggles the header. When not set, it allows you to select a receipt address (from every address of every account) and when set, deletes the preference (the whole key, including any other custom headers you might have defined!</description>
    </item>
    
    <item>
      <title>Zend_Db_Table Autoincrement ID</title>
      <link>https://unflyingobject.com/posts/zend_db_table-autoincrement-id/</link>
      <pubDate>Wed, 04 Feb 2009 08:19:21 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/zend_db_table-autoincrement-id/</guid>
      <description>The otherwise excellent Zend Framework manual unfortunately doesn&#39;t mention how to get the auto-incremented ID of a Zend_Db_Table. Luckily this is pretty simple when we know that Zend_Db_Table uses the same Zend_Db adapter mechanism.
In your Zend_Db_Table_Abstract subclass, just override the insert method:
public function create(array $data) { parent::insert($data); return parent::getDefaultAdapter()-&amp;gt;lastInsertId(); }  Not sure if that&#39;s the best way of doing it, but it works and makes sense.</description>
    </item>
    
    <item>
      <title>Server Backup Script</title>
      <link>https://unflyingobject.com/posts/server-backup-script/</link>
      <pubDate>Tue, 03 Feb 2009 08:44:03 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/server-backup-script/</guid>
      <description>Here&#39;s a server backup script that someone else might find userful as well. By &amp;ldquo;server backup&amp;rdquo; I mean configuration (/etc and serveradmin) and Open Directory as well as calendar and wiki data.
The OD backup is the entire archive which also includes user passwords. Very handy in case you have to re-od-master a server.
#!/usr/bin/env bash # serverbackup.sh ODPASS=somepass	# Password used to encrypt the OD archive CALDATA=/Library/CalendarServer/Documents WEBDATA=/Library/Collaboration BACKUP_DST=/Volumes/BackupRAID/backup/server SERVICES=&#39;mail afp calendar dirserv swupdate web dns radius dhcp&#39; logger -p local0.</description>
    </item>
    
    <item>
      <title>iCal Server Backups</title>
      <link>https://unflyingobject.com/posts/ical-server-backups/</link>
      <pubDate>Mon, 02 Feb 2009 10:09:12 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ical-server-backups/</guid>
      <description>As with any backups, simply taking them is only half the work - you should also make sure you can restore them. Unfortunately that&#39;s not as straight-forward as you would think with iCal Server.
Say one of your users has accidentally deleted a group calendar (R/W permissions mean the user can delete, but not create cals under a group delegate). This happened yesterday so you know you should have the calendar in last week&#39;s snapshot.</description>
    </item>
    
    <item>
      <title>Syncing Notes to Your iPod</title>
      <link>https://unflyingobject.com/posts/syncing-notes-to-your-ipod/</link>
      <pubDate>Sun, 25 Jan 2009 13:57:57 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/syncing-notes-to-your-ipod/</guid>
      <description>Syncing notes from Mail.app to your iPod touch is not as bad as it may seem. I wanted to put a shopping list on mine, and almost joined the angry hordes when I couldn&#39;t find a &amp;ldquo;Notes&amp;rdquo; checkbox in the syncing prefs, but it turns out all you have to do is save the note on any IMAP account (must have &amp;ldquo;Store notes in Inbox&amp;rdquo; option checked under Mailbox Behaviours) and then check your mail on the iPod.</description>
    </item>
    
    <item>
      <title>Networked Syslog</title>
      <link>https://unflyingobject.com/posts/networked-syslog/</link>
      <pubDate>Wed, 21 Jan 2009 11:17:48 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/networked-syslog/</guid>
      <description>Centralized logging can be a Really Good thing and something that I think every SA should consider if they have more than 1 system to look after. Unfortunately Apple&#39;s documentation on the subject is only correct for the client side, however:
 &amp;quot;To configure Mac OS X Server as a log server that accepts log messages from other systems on the network: 1 Open /etc/rc and locate the following line: /usr/sbin/syslogd -s -m 0&amp;quot; .</description>
    </item>
    
    <item>
      <title>Twenty Hours of Risk</title>
      <link>https://unflyingobject.com/posts/twenty-hours-of-risk/</link>
      <pubDate>Thu, 15 Jan 2009 21:49:17 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/twenty-hours-of-risk/</guid>
      <description>As I understand, my biggest gripes with the Drobo (noise, heat, slow speed, no FireWire) have been fixed in the 2.0 version. However there&#39;s one thing that is not mentioned anywhere on the product pages:
&amp;hellip; namely the insane amount of time it takes to rebuild the set. I just thought it would be nice to upgrade the last 300 GB drive to 500 GB. It&#39;s been doing that for the past 4 hours and by the looks of it I&#39;ll be sleeping with earplugs tonight.</description>
    </item>
    
    <item>
      <title>Generating Passwords</title>
      <link>https://unflyingobject.com/posts/generating-passwords/</link>
      <pubDate>Wed, 07 Jan 2009 08:32:52 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/generating-passwords/</guid>
      <description>There&#39;s no shortage of ways to generate passwords on a Mac. I used to like Xyzzy, until I realised it&#39;s really not that good. Keychain Access is fine for quickly generating one random password for, say a MySQL account, but isn&#39;t really appropriate for creating password lists. There&#39;s also plenty of cool tricks to generate them from within &amp;ldquo;the BSD subsystem&amp;rdquo;, but I always seem to forget them when the need comes.</description>
    </item>
    
    <item>
      <title>Mail.app From Menu</title>
      <link>https://unflyingobject.com/posts/mailapp-from-menu/</link>
      <pubDate>Sun, 04 Jan 2009 21:58:34 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mailapp-from-menu/</guid>
      <description>To cut a long story short - how do you define multiple &amp;ldquo;From:&amp;rdquo; addresses for an email account in Mail.app?
I always thought you&#39;d just have to create a separate account. But what if the 2 accounts are actually on the same server? Mail.app won&#39;t allow you to create two account with the same incoming server host name.
It turns out this is all very simple - just add the From: addresses to the Email Address: field in the Account Information tab, separated by commas.</description>
    </item>
    
    <item>
      <title>More on iCal Server</title>
      <link>https://unflyingobject.com/posts/more-on-ical-server/</link>
      <pubDate>Tue, 30 Dec 2008 18:12:47 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/more-on-ical-server/</guid>
      <description>I would like to take this opportunity to vent some steam over Apple iCal Server. I was going to simply file a bug about this, but even that didn&#39;t work. :-/
Yeah, that&#39;s what I get for some groups after the 10.5.6 server update. &amp;ldquo;domain CalDAV No Calendar Home Error / code 1&amp;rdquo; - WTF!!!! And the web is full of these reports. I can browse the principal just fine from a web browser at https://server:8443/principals/groups/whatever/ but iCal just won&#39;t work.</description>
    </item>
    
    <item>
      <title>Antivirus Is the Virus</title>
      <link>https://unflyingobject.com/posts/antivirus-is-the-virus/</link>
      <pubDate>Thu, 11 Dec 2008 20:35:23 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/antivirus-is-the-virus/</guid>
      <description>Today I was reminded again of the fact that the only current virus-related threat on OS X are the antivirus software themselves:
That&#39;s 442 different VirusBarrier processes spawned off for no apparent reason in a totally normal user environment (Mail, Safari, TextMate etc). I noticed the problem when I tried to open an SSH connection but got the following error instead:
-bash: fork: Resource temporarily unavailable That means the system has exceeded the limit of processes per user, which in Leopard is already pretty generous:</description>
    </item>
    
    <item>
      <title>A Deployment Plan</title>
      <link>https://unflyingobject.com/posts/a-deployment-plan/</link>
      <pubDate>Wed, 10 Dec 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-deployment-plan/</guid>
      <description>I&#39;m just finishing up my biggest deployment project yet - 72 Macs (70 iMacs and 2 Mac Pro&#39;s). 21 iMacs got new 1TB drives, all were upgraded to 4GB RAM and all of them went out in 4 different software configurations. With this sort of job, it really helps to have a plan. Here&#39;s one:
Planning and preparation  Determine how many different software configurations you have and how they relate to each other; name them.</description>
    </item>
    
    <item>
      <title>Deploying Lightroom 2</title>
      <link>https://unflyingobject.com/posts/deploying-lightroom-2/</link>
      <pubDate>Wed, 10 Dec 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/deploying-lightroom-2/</guid>
      <description>I was pleasently surprised with Adobe today. Turns out Lightroom 2 is really simple to deploy:
 Download and install Adobe Photoshop Lightroom 2.1 Launch the app and when prompted, enter you Volume License number. Open /Library/Application Support/Adobe/Lightroom copy &amp;ldquo;Lightroom 2.0 Registration&amp;rdquo; to some shared storage. Drop the registration file in the same place on any deployment target.  I think I like Lightroom even more now. :P</description>
    </item>
    
    <item>
      <title>Got ACSA</title>
      <link>https://unflyingobject.com/posts/got-acsa/</link>
      <pubDate>Tue, 09 Dec 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/got-acsa/</guid>
      <description>Passed the final exam in Apple&#39;s ACSA certification trail today and thought I&#39;d write down some thoughts.
First of all, I&#39;m really glad that the ACSA cert exists. It gives working geeks something to strive for, something meaningful to show when applying for a job and not to mention some much-needed leverage for negotiating a raise. It&#39;s also just a great way to learn new stuff, which becomes harder and harder as you become the &amp;ldquo;go-to-guy&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>The Ramp Movie</title>
      <link>https://unflyingobject.com/posts/the-ramp-movie/</link>
      <pubDate>Tue, 09 Dec 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-ramp-movie/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Monitoring Load Average</title>
      <link>https://unflyingobject.com/posts/monitoring-load-average/</link>
      <pubDate>Fri, 14 Nov 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/monitoring-load-average/</guid>
      <description>Probably the most general indication that something&#39;s wrong with a server is an unusually high load average. Typically this will be a stuck DirectoryService or httpd or imapd process which is then slowing everything down. Luckily it&#39;s pretty simple to keep tabs on load average, for example by using the following script:
MAILTO=&amp;quot;filipp@mydomain.tld&amp;quot; COOKIE=/private/tmp/loadcheck LOAD=$(uptime | awk {&#39;print $11&#39;} | sed &#39;s/,/./&#39;) SUBJECT=&amp;quot;$(hostname) is under heavy load!&amp;quot; if [[ -e $COOKIE ]]; then exit 0 fi BODY=&amp;quot;$(ps -rax | head -n 4)&amp;quot; if [[ $(echo &amp;quot;print $LOAD &amp;gt; 1&amp;quot; | bc) -eq 1 ]]; then echo $BODY | mail -s &amp;quot;$SUBJECT&amp;quot; $MAILTO touch $COOKIE fi exit 0  This will send the email only once and you&#39;ll have to delete the cookie to reset it.</description>
    </item>
    
    <item>
      <title>iLife Installer Workaround</title>
      <link>https://unflyingobject.com/posts/ilife-installer-workaround/</link>
      <pubDate>Thu, 13 Nov 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ilife-installer-workaround/</guid>
      <description>If you&#39;ve ever tried to build a deployment image directly from individual iLife packages (onto say a sparse image), then you&#39;ve no doubt seen this error message:
installer: Error - You are attempting an unsupported installation. If you wish to install an individual application, please use the iLife installer and select the Custom button.  Bummer. Well, luckily there&#39;s a really simple workaround:
touch /tmp/com.apple.mpkg.iLife  and then run installer again.</description>
    </item>
    
    <item>
      <title>Macup 1.0</title>
      <link>https://unflyingobject.com/posts/macup-10/</link>
      <pubDate>Wed, 05 Nov 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/macup-10/</guid>
      <description>Why yet another rsync wrapper for the Mac? Because I really felt there was&#39;t one that met my needs:
 Simple Finder-based source selection - just label everything important with the Violet label. Exclusion list support - if there&#39;s anything inside the important folder that you don&#39;t want to back up (say Microsoft User Data in you Documents), just mark it with a Gray label Added flexibility via Smart Searches - just save a search as &amp;ldquo;Macup&amp;rdquo; to really fine tune your selection criteria.</description>
    </item>
    
    <item>
      <title>Pretty Weak</title>
      <link>https://unflyingobject.com/posts/pretty-weak/</link>
      <pubDate>Mon, 03 Nov 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/pretty-weak/</guid>
      <description>&amp;hellip; and it&#39;s been like that the whole day. Who cares though, mobilemeisdown is up. :D</description>
    </item>
    
    <item>
      <title>OpenFire vs iChat Server</title>
      <link>https://unflyingobject.com/posts/openfire-vs-ichat-server/</link>
      <pubDate>Wed, 29 Oct 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/openfire-vs-ichat-server/</guid>
      <description>I turned to OpenFire shortly after discovering that iChat server doesn&#39;t support group-based buddy lists. There&#39;s only the really crude jabber_autobuddy script, but even that has to be run every time you add a user and sometimes users get stuck at a &amp;ldquo;Waiting for authorisation&amp;rdquo; message. No thanks.
A list of things I really like about OpenFire:
 Support for group-based buddy lists Conference support and chatroom management Has a real admin interface Can work with any LDAP server Runs on 10.</description>
    </item>
    
    <item>
      <title>mailspray</title>
      <link>https://unflyingobject.com/posts/mailspray/</link>
      <pubDate>Mon, 27 Oct 2008 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mailspray/</guid>
      <description>Some months ago I attended a Symantec Mail Security training course (a kickass system, btw). They had this little graphical testing utility which accepted an SMTP server address, from field, etc and a list of .eml files and the number of copies to send.
I thought this was a brilliant tool and was pretty surprised to not find an equivalent on the Mac. However, OS X being Unix, it took about 30 minutes to write one myself, this time in Ruby:</description>
    </item>
    
    <item>
      <title>Cascading Software Update Server</title>
      <link>https://unflyingobject.com/posts/cascading-sus/</link>
      <pubDate>Mon, 29 Sep 2008 16:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cascading-sus/</guid>
      <description>Page 307 of Mac OS X Deployment v10.5 says to change:
&amp;lt;key&amp;gt;metaIndexURL&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;http://swscan.apple.com/content/meta/mirror-config-1.plist&amp;lt;/string&amp;gt; to
&amp;lt;key&amp;gt;metaIndexURL&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;http://sus.pretendco.com:8088/index.sucatalog&amp;lt;/string&amp;gt; in /etc/swupd/swupd.plist to cascade updates from one SUS to another. My experience has been that it&#39;s incorrect. Here&#39;s the line that works:
&amp;lt;key&amp;gt;metaIndexURL&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;http://sus.pretendco.com:8088/catalogs.sucatalog&amp;lt;/string&amp;gt; index.sucatalog lists the actual update packages themselves whereas we want a list of SU servers. catalogs.sucatalog looks exactly like mirror-config-1.plist, except that it lists your master SUS&#39;s address.</description>
    </item>
    
    <item>
      <title>Some Genius</title>
      <link>https://unflyingobject.com/posts/some-genius/</link>
      <pubDate>Sat, 27 Sep 2008 15:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/some-genius/</guid>
      <description></description>
    </item>
    
    <item>
      <title>I Guess I&#39;m Not...</title>
      <link>https://unflyingobject.com/posts/i-guess-im-not/</link>
      <pubDate>Sat, 27 Sep 2008 15:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/i-guess-im-not/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Turned 0x1C</title>
      <link>https://unflyingobject.com/posts/turned-0x1c/</link>
      <pubDate>Mon, 22 Sep 2008 22:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/turned-0x1c/</guid>
      <description>There&#39;s now two dashboard widgets that I find actually useful, the first is the excellent dashLicious and the second, the newborn DashLog:
It allows you to remotely monitor any log file (using good old tail -f). All you need is the widget, some SSH hosts defined in your .ssh/config and passwordless authentication configured. On the back you can select some typical log files or define a custom one:
This thing&#39;s straight out of the oven so there will probably be some stinky bits in there.</description>
    </item>
    
    <item>
      <title>mc pkg</title>
      <link>https://unflyingobject.com/posts/mc-pkg/</link>
      <pubDate>Thu, 11 Sep 2008 09:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mc-pkg/</guid>
      <description>In an attempt to avoid using the Finder as much as possible until Apple rebuilds it from scratch, I&#39;ll be using mc. :P
Here&#39;s the 4.6.1 PKG inside a DMG. Built from MacPorts, ofcourse.</description>
    </item>
    
    <item>
      <title>Templar</title>
      <link>https://unflyingobject.com/posts/templar/</link>
      <pubDate>Thu, 11 Sep 2008 00:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/templar/</guid>
      <description>So you&#39;ve just finished up setting up the new server at the office and now you need to send account info to 45 people. You can make an email template and then find/replace each user&#39;s info in or just create a generic one (ie afp://newserver/yourusernamehere). The first is tedious and error prone, the second seems fine&amp;hellip; until you get emails from 25 people who are not able to log in because they just click the link and their password doesn&#39;t work.</description>
    </item>
    
    <item>
      <title>rtorrent pkg</title>
      <link>https://unflyingobject.com/posts/rtorrent-pkg/</link>
      <pubDate>Wed, 10 Sep 2008 19:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/rtorrent-pkg/</guid>
      <description>Some people have been asking me about rtorrent and where to get it for the Mac. It&#39;s in both fink and MacPorts, but if you think that installing a whole package management stack is a bit overkill for a nice BitTorrent client, I&#39;ve compiled an internet-ready (yay!) DMG using MacPorts. You can download it from here.
At 6.8MB it includes a lot of stuff you would normally never need, like the header files of libtorrent and all support libraries.</description>
    </item>
    
    <item>
      <title>AppleScript&#39;s path to me</title>
      <link>https://unflyingobject.com/posts/applescripts-path-to-me/</link>
      <pubDate>Fri, 05 Sep 2008 19:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/applescripts-path-to-me/</guid>
      <description>Just something to be aware of:
POSIX path of (path to me) &amp;amp; &amp;quot;Contents/Resources&amp;quot; as string-&amp;gt; &amp;quot;/Users/flepalaa/Desktop/Backup.app/Contents/Resources&amp;quot;property myPath : POSIX path of (path to me) &amp;amp; &amp;quot;Contents/Resources&amp;quot; as stringset the result to myPath-&amp;gt; &amp;quot;/Applications/AppleScript/Script Editor.app/Contents/Resources&amp;quot; Apparently the latter is what path to me was &amp;ldquo;supposed&amp;rdquo; to mean before 10.5. AppleScript makes me want to smoke crack. :P</description>
    </item>
    
    <item>
      <title>serveradmin settings indices</title>
      <link>https://unflyingobject.com/posts/serveradmin-settings-indices/</link>
      <pubDate>Tue, 02 Sep 2008 11:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/serveradmin-settings-indices/</guid>
      <description>There&#39;s one more really annoying thing with serveradmin:
mail:~ file$ sudo serveradmin settings vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:0 = \&amp;quot;10.64.200.200\&amp;quot;vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:0 = &amp;quot;10.64.200.200&amp;quot;mail:~ file$ sudo serveradmin settings vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:1 = \&amp;quot;10.64.200.254\&amp;quot;Invalid index &amp;quot;1&amp;quot;, must specifiy array elements in orderIndex = 1, count = 0, currentArray = ()for key: &amp;quot;vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:1&amp;quot; And actually the manpage doesn&#39;t say anything about how to work with numeric indices:
 &amp;ldquo;When setting array values, special notation is needed.</description>
    </item>
    
    <item>
      <title>serveradmin settings all</title>
      <link>https://unflyingobject.com/posts/serveradmin-settings-all/</link>
      <pubDate>Mon, 01 Sep 2008 15:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/serveradmin-settings-all/</guid>
      <description>Trying to back up 10.4 server settings, you might run into this gross serveradmin bug:
machine:~ root# serveradmin settings all &amp;gt; all.sabackup2008-09-01 14:34:43.994 serveradmin[12811] Exception in doCommand: *** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)serveradmin(12811,0xa000ed88) malloc: *** Deallocation of a pointer not malloced: 0x15c3bc0; This could be a double free(), or free() called with the middle of an allocated block; Try setting environment variable MallocHelp to see tools to help debug But luckily it&#39;s easy to work around with a little bit of shell:</description>
    </item>
    
    <item>
      <title>serveradmin settings &amp; IP addresses</title>
      <link>https://unflyingobject.com/posts/serveradmin-settings-ip-addresses/</link>
      <pubDate>Mon, 01 Sep 2008 14:42:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/serveradmin-settings-ip-addresses/</guid>
      <description>In 2005 I complained about a bug in serveradmin which resulted in garbled input when using IP numbers. It&#39;s not just with DNS either, the same problem exists also with VPN settings. 10.4.11 has this bug as well:
machine:~ root# serveradmin settings \vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:0 = &amp;quot;192.168.2.200&amp;quot;vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:0 = 192.167999 Gross. Here&#39;s the &amp;ldquo;workaround&amp;rdquo;:
machine:~ root# serveradmin settings \vpn:Servers:com.apple.ppp.pptp:IPv4:DestAddressRanges:_array_index:0 = \&amp;quot;192.168.2.200\&amp;quot; In other words, shell is chomping the quotes and serveradmin gets confused with the dotted quad.</description>
    </item>
    
    <item>
      <title>GoogleConverter</title>
      <link>https://unflyingobject.com/posts/googleconverter/</link>
      <pubDate>Sat, 30 Aug 2008 10:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/googleconverter/</guid>
      <description>A fun little project that could work well in an &amp;ldquo;intro to practical programming&amp;rdquo; course:
filipp@probook.local [~] &amp;gt; gc 14 in in cm14 in = 35.56 centimeters Wait, but we already have units(1)! Yes, but can it do this:
filipp@probook.local [~] &amp;gt; gc 14,9 usd in eur14,9 U.S. dollars = 10,1650976 Euros All a whopping 8 lines of PHP (the working man&#39;s language):
#!/usr/bin/env php&amp;lt;?phparray_shift ($argv);if (count ($argv) == 0) die (&amp;#34;Not enough arguments\n&amp;#34;);$q = implode (&amp;#34;+&amp;#34;, $argv);$c = file_get_contents (&amp;#34;http://www.</description>
    </item>
    
    <item>
      <title>Microsoft&#39;s New Hope</title>
      <link>https://unflyingobject.com/posts/microsofts-new-hope/</link>
      <pubDate>Mon, 21 Jul 2008 21:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/microsofts-new-hope/</guid>
      <description>You know Vista&#39;s in trouble when you suddenly find this in your inbox: </description>
    </item>
    
    <item>
      <title>last.fm and WebClip</title>
      <link>https://unflyingobject.com/posts/lastfm-and-webclip/</link>
      <pubDate>Fri, 18 Jul 2008 15:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/lastfm-and-webclip/</guid>
      <description>When WebClip was first demoed I thought it was the coolest thing ever. About a year (?) later, I finally found a use for it - a lightweight last.fm radio player.
 Go to your last.fm &amp;gt; Listen File &amp;gt; Open in Dashboard Hover over the Flash player, click + Enter Flip the widget and uncheck &amp;ldquo;Only play audio in Dashboard&amp;rdquo;  </description>
    </item>
    
    <item>
      <title>Going Oldschool</title>
      <link>https://unflyingobject.com/posts/going-oldschool/</link>
      <pubDate>Fri, 18 Jul 2008 09:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/going-oldschool/</guid>
      <description>This site has been majorly downgraded today. I ditched the old XML-RPC blog engine and replaced it with a shiny, yet totally oldschool text file based solution. Sure, it doesn&#39;t have comments or categories, but there&#39;s something incredibly liberating to sit here and blog using nano over SSH.
The RSS should work, and an Apache Redirect makes sure the old RSS links still work, but previous links to old stories have not been remapped (the new system just uses the text file&#39;s mtime&#39;s timestamp as the ID, while the old one used a counter).</description>
    </item>
    
    <item>
      <title>Migrating Group Wiki Pages</title>
      <link>https://unflyingobject.com/posts/migrating-group-wiki-pages/</link>
      <pubDate>Fri, 18 Jul 2008 09:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/migrating-group-wiki-pages/</guid>
      <description>It&#39;s surprisingly difficult to transfer entire wikis between groups since it&#39;s not just a matter of copying static HTML files as I thought previously. Here&#39;s a rough sketch of the process. It worked for me, but might not for everyone.
# wikimove from to SRC=$1; DST=$2 cd /Library/Collaboration/Groups # Take a backup cp -r $SRC $SRC.bak; cp -r $DST $DST.bak # Transfer the old search indices sqlite3 $SRC/wiki/index.db .dump | sed &#39;s/groups\/$SRC\//groups\/$DST\//&#39; | sqlite3 $DST/wiki/index.</description>
    </item>
    
    <item>
      <title>Use Expect for SMTP testing</title>
      <link>https://unflyingobject.com/posts/use-expect-for-smtp-testing/</link>
      <pubDate>Thu, 10 Jul 2008 13:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/use-expect-for-smtp-testing/</guid>
      <description>I learned about Expect from a past ADC video session about OS X deployment. Here&#39;s a very practical use for it - testing an SMTP server. Just run it with expect filename.
spawn telnet smtpserver 25 expect &amp;quot;220 &amp;quot; send &amp;quot;MAIL FROM:test@example.com\r&amp;quot; expect &amp;quot;250 Ok$&amp;quot; send &amp;quot;RCPT TO:testuser@server\r&amp;quot; expect &amp;quot;250 Ok$&amp;quot; send &amp;quot;DATA\r&amp;quot; expect &amp;quot;354&amp;quot; send &amp;quot;From: &amp;quot;SMTP Test&amp;quot; &amp;lt;test@example.com&amp;gt; Subject: This is a test Date: Wed, 02 Jul 2008 15:08:43 +0000 Body of test message r.</description>
    </item>
    
    <item>
      <title>About Leopard&#39;s group mail handling</title>
      <link>https://unflyingobject.com/posts/about-leopards-group-mail-handling/</link>
      <pubDate>Wed, 09 Jul 2008 21:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/about-leopards-group-mail-handling/</guid>
      <description>Just some observations on how 10.5.4 server handles group mails and aliases:
 Mail &amp;gt; Settings &amp;gt; Mailing Lists &amp;gt; Enable server group &amp;hellip; tells the server to scan all groups that have &amp;ldquo;Mailing list&amp;rdquo; enabled and update group member addresses into /etc/postfix/aliases. It uses the user record&#39;s Info &amp;gt; Email data. I would suggest setting the scanning to 1 min when setting things up. It uses /etc/postfix/aliases Nested groups are not expanded :( Users with only the Primary Group ID set to a mailinglist-enabled group will not be included in the postfix alias.</description>
    </item>
    
    <item>
      <title>Moving .forward files to postfix aliases</title>
      <link>https://unflyingobject.com/posts/moving-forward-files-to-postfix-aliases/</link>
      <pubDate>Wed, 09 Jul 2008 08:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/moving-forward-files-to-postfix-aliases/</guid>
      <description>I don&#39;t like .forward files. They destroy any hope of having any kind of idea what aliases are being used. Postfix aliases are pretty bad too, but at least they&#39;re all in the same place.
Here&#39;s a handy and very simple PHP snippet that converts .forward files to postfix aliases. It&#39;s not perfect, especially if you have vacation autoresponses enabled (ie |/bin/vacation -a &amp;hellip;), but it does save time:
#!/usr/bin/env php&amp;lt;?</description>
    </item>
    
    <item>
      <title>Testing for Power v2</title>
      <link>https://unflyingobject.com/posts/testing-for-power-v2/</link>
      <pubDate>Wed, 30 Apr 2008 11:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/testing-for-power-v2/</guid>
      <description>A while back I presented a solution to a pretty icky problem - how to test for intermittent power issues. Here&#39;s a slightly improved version of that script. It keeps the machine on for 2 minutes before shutting down and also keeps an activity log. The delay is also used as the power on interval.
if [[ $USER != &amp;quot;root&amp;quot; ]]; thenecho &amp;quot;This must be run as root&amp;quot;exit 1fiROOTPW=&amp;quot;1234&amp;quot;DELAY=120LOGFILE=~/Desktop/poweron.</description>
    </item>
    
    <item>
      <title>PurpleSync</title>
      <link>https://unflyingobject.com/posts/purplesync/</link>
      <pubDate>Tue, 29 Apr 2008 21:46:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/purplesync/</guid>
      <description>Here&#39;s a pretty neat little AppleScript (did I just say that?!) for backing up random bits of your home folder. Just flag anything with the Purple Label in the Finder and PurpleSync will pick it up and back it up to a destination of your choosing, which it will prompt for only once (delete the pref file to reset).
If you only have Apple&#39;s rsync (2.6.3), then this will unfortunately butcher the extended attributes (like the label) and ACLs, since it does not understand the -X and -A arguments.</description>
    </item>
    
    <item>
      <title>makeuser</title>
      <link>https://unflyingobject.com/posts/makeuser/</link>
      <pubDate>Tue, 29 Apr 2008 15:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/makeuser/</guid>
      <description>The inability to create user accounts from the command line is something that every Mac SA runs into at some point. Then we write our own scripts (here&#39;s mine, here&#39;s dre&#39;s, for example).
But then today I discovered this:
zulu-30:~ admin$ /Library/Receipts/RemoteDesktopClient.pkg/Contents/Resources/makeuser ERROR: You must be root to run this tool.ERROR: --longname not provided.ERROR: Flag --shortname not provided.makeuser -r &amp;quot;&amp;lt;volume path&amp;gt;&amp;quot; [ -0 -v -h ] {other options}General Options:-----------------h | --help : Print command help.</description>
    </item>
    
    <item>
      <title>ddrescue AppleScript Applet</title>
      <link>https://unflyingobject.com/posts/ddrescue-applescript-applet/</link>
      <pubDate>Fri, 04 Apr 2008 07:47:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ddrescue-applescript-applet/</guid>
      <description>As said before, ddrescue is a really great data rescue utility. I&#39;ve made a really simple AS application wrapper for it. Just name the applet, for example, &amp;ldquo;ddrescue-disk2s3&amp;rdquo;, copy it on your backup drive, launch and give sudo your password.
It functions just like the shell snippet I, but contains the ddrescue binary so it&#39;s super easy to move around, also you don&#39;t have to edit any text files - just put the failing drive&#39;s /dev name in the app name.</description>
    </item>
    
    <item>
      <title>Restarting an Installation</title>
      <link>https://unflyingobject.com/posts/restarting-an-installation/</link>
      <pubDate>Sun, 30 Mar 2008 18:34:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/restarting-an-installation/</guid>
      <description>I recently had to re-partition a 10.5 server just after the install had been done (the boot partition turned out too small). The server was completely headless at that point and I couldn&#39;t just resize the parts using diskutil because this was all on RAID 5.
There&#39;s an interesting &amp;ldquo;feature&amp;rdquo; in Server Assistant - the server will eject any optical media until you get to the serial number part. I tested this several times and the results were consistant.</description>
    </item>
    
    <item>
      <title>procatcher.sh</title>
      <link>https://unflyingobject.com/posts/procatchersh/</link>
      <pubDate>Sat, 29 Mar 2008 23:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/procatchersh/</guid>
      <description>I a while back I wrote a short tutorial on how to get stuff from a DVB PVR onto DVD-s using a Mac (many thanks to all who wrote in and left comments!).
I&#39;ve since been able to refine the method and get it down to just a few simple steps:
 Decode and edit the AVR files using ProjectX as explained Run procatcher.sh on the ProjectX output folder, giving the name of the DVD volume that you&#39;d like as the second argument (better keep it within 8 characters and without spaces).</description>
    </item>
    
    <item>
      <title>Punk 1.1</title>
      <link>https://unflyingobject.com/posts/punk-11/</link>
      <pubDate>Sun, 23 Mar 2008 18:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/punk-11/</guid>
      <description>The best IMDb widget&#39;s been updated to version 1.1 :) This is mainly a maintenance release, fixing compatibility with updated IMDBd layout.
It&#39;s also using akas.imdb.com as the data source which means you can search for translated titles as well (many thanks Joshua L?dke for the feature request). It&#39;s also sporting a &amp;ldquo;better than nothing&amp;rdquo; progress indicator. :)
Btw, the name came from the fact that it was initially supposed to be a &amp;ldquo;do you feel lucky&amp;rdquo; - type widget which only gave you the first result.</description>
    </item>
    
    <item>
      <title>Content-Encoding- gzip</title>
      <link>https://unflyingobject.com/posts/content-encoding-gzip/</link>
      <pubDate>Wed, 19 Mar 2008 20:43:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/content-encoding-gzip/</guid>
      <description>Safari 3.1 just came out and with it, the awesome Develop menu, also for Tiger (my main dev. platform). I do profile my sites occasionally using Firebug, but the little recommendations that Safari&#39;s Network Timeline gives were surprisingly accurate. More specifically the little &amp;ldquo;You could save bandwidth by having your web server compress this transfer&amp;hellip;&amp;rdquo; popup.
Indeed, Apache 2.x now comes with mod_deflate built in (instead of mod_gzip) and enabling it was a simple matter of:</description>
    </item>
    
    <item>
      <title>Editable DVD Ripping</title>
      <link>https://unflyingobject.com/posts/editable-dvd-ripping/</link>
      <pubDate>Sun, 16 Mar 2008 15:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/editable-dvd-ripping/</guid>
      <description>HandBrake is fantastic, but what if you need the DVD material for editing? I notice I&#39;ve been asked this question more than once and since I couldn&#39;t find any simple guide online, I thought I&#39;d write one down myself.
It used to be all about DropDV which by now seems to be discontinued. The best (most consistent, fast and with good image quality) is to use Apple&#39;s MPEG2 Component (20 EUR) and the fabulous MPEG Streamclip.</description>
    </item>
    
    <item>
      <title>Apache FOP java.lang.NoClassDefFoundError</title>
      <link>https://unflyingobject.com/posts/apache-fop-javalangnoclassdeffounderror/</link>
      <pubDate>Thu, 13 Mar 2008 23:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/apache-fop-javalangnoclassdeffounderror/</guid>
      <description>This is what typically happens trying to run Apache FOP on Leopard&#39;s default Tomcat:
java.lang.NoClassDefFoundErrororg.apache.fop.fo.expr.NCnameProperty.getColor(NCnameProperty.java:52)org.apache.fop.fo.properties.ColorProperty$Maker.convertPropert ... The thing that got it running for me was:
nano /Library/Tomcat/bin/tomcat-launchd.shexport JAVA_OPTS=&amp;quot;-Djava.awt.headless=true&amp;quot; &amp;hellip; just before it calls startup.sh. You don&#39;t really notice it, but FOP will actually give an error about not having permissions to use the window server, after which it just keeps dying of that NoClassDefFoundError.
I got it working the last time because I launched another copy of Tomcat from the Terminal within the GUI and didn&#39;t notice a org.</description>
    </item>
    
    <item>
      <title>UFO Sundae #11</title>
      <link>https://unflyingobject.com/posts/ufo-sundae-11/</link>
      <pubDate>Sun, 09 Mar 2008 23:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ufo-sundae-11/</guid>
      <description>The past few weeks have been completely crazy. Tonight, over 4 months of work are coming together in a major update to a service management system I&#39;ve been privileged to work on. As I sit here, waiting for the DNS changes to propagate, I thought I&#39;d try and put down some things&amp;hellip;
  If you&#39;ve noticed that this site has been become extremely fast for quite a while now, it&#39;s because it&#39;s running on the greatest server ever - our own.</description>
    </item>
    
    <item>
      <title>Tomcat on Leopard Server (Grrr)</title>
      <link>https://unflyingobject.com/posts/tomcat-on-leopard-server-grrr/</link>
      <pubDate>Sun, 09 Mar 2008 15:47:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/tomcat-on-leopard-server-grrr/</guid>
      <description>Tomcat used to be under the Application Services, now it&#39;s hidden in Web &amp;gt; Enable Tomcat checkbox (talk about minimalist).
$CATALINA_HOME is in /Library/Tomcat The documentation (a whopping one page!) is wrong though, the port is not 9006, but 8080, since JBoss is no longer around, I guess. You also have to manually edit your tomcat-users.xml&amp;hellip; grr&amp;hellip;
There&#39;s also something missing from default Tomcat. For instance, an Apache FOP servlet would simply not work (it seems like there&#39;s some XML libs missing or something).</description>
    </item>
    
    <item>
      <title>Random Flash Disk Benchmarks</title>
      <link>https://unflyingobject.com/posts/random-flash-disk-benchmarks/</link>
      <pubDate>Sun, 02 Mar 2008 01:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/random-flash-disk-benchmarks/</guid>
      <description>I got my hands on a 2GB IDE flash disk for a little hardware project I&#39;m working on. When someone says SSD&#39;s are really fast, they&#39;re not talking about just any non-mechanical hard drive. The unit in question was nearly 3x slower than an elderly 4200RPM IDE drive in terms of just plain write speed, as illustrated by timing the creation of a 1GB file:
2GB IDE Flash
real	1m43.425s 30GB 4200RPM</description>
    </item>
    
    <item>
      <title>ddrescue</title>
      <link>https://unflyingobject.com/posts/ddrescue/</link>
      <pubDate>Fri, 29 Feb 2008 16:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ddrescue/</guid>
      <description>Data recovery can sometimes be rocket science, but mostly it&#39;s just about being very &amp;ldquo;persuasive&amp;rdquo; - trying and trying until you get something out. When drives fail, they often just become so slow that they appear dead to most software. That&#39;s why you need tools that can be persistant and ddrescue is very good at that.
One of it&#39;s greatest features (and one that sets it apart from any commercial tool I&#39;ve ever used) is the possibility to stop the rescue at any point thanks to a log file.</description>
    </item>
    
    <item>
      <title>Install 10.4 Server Admin Tools on 10.5</title>
      <link>https://unflyingobject.com/posts/install-104-server-admin-tools-on-105/</link>
      <pubDate>Fri, 29 Feb 2008 00:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/install-104-server-admin-tools-on-105/</guid>
      <description>Despite it&#39;s many quirks, Leopard Server is still an impressive upgrade. I would say even more so than Leopard Workstation (?). One of the not-so-great changes is that you can only use the new admin tools to monitor 10.4 services (not configure) and the 10.4 admin tools installer will not work on 10.5.
In other words, you need Tiger to admin Tiger and Leopard to admin Leopard. While it seems it is indeed impossible to run the Leopard tools on Tiger, the reverse is actually quite simple.</description>
    </item>
    
    <item>
      <title>JavaScript Input Validation</title>
      <link>https://unflyingobject.com/posts/javascript-input-validation/</link>
      <pubDate>Thu, 28 Feb 2008 00:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/javascript-input-validation/</guid>
      <description>What could be a better &amp;ldquo;comeback&amp;rdquo; subject than one of the lamest and most boring of all time - how to validate form input in JavaScript. Everyone and their dog has their way, here&#39;s mine, which I think is quite flexible and reusable.
We typically need 3 things for validation - the names of fields to check, some checking criteria and a more user-friendly message to report to the user in case of an error.</description>
    </item>
    
    <item>
      <title>Tidbits for week 6</title>
      <link>https://unflyingobject.com/posts/tidbits-for-week-6/</link>
      <pubDate>Sun, 10 Feb 2008 13:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/tidbits-for-week-6/</guid>
      <description>The D5 interview with Jobs and Gates is available on the iTunes Store. I thought Bill came across as very focused, down-to-earth and open.
  Speaking of the iTS, it appears one is able to buy only one album every 24 h since their payment system is down most of the time. One of the great benefits of online delivery is instant gratification so this is extremely annoying&amp;hellip;</description>
    </item>
    
    <item>
      <title>Random Midnight Tidbits</title>
      <link>https://unflyingobject.com/posts/random-midnight-tidbits/</link>
      <pubDate>Tue, 29 Jan 2008 15:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/random-midnight-tidbits/</guid>
      <description>Nothing major to report this time, just an assortment of more and less useful tidbits.
  It&#39;s possible to still use Server Admin and WG if you only have SSH sticking out of your server&#39;s firewall:
 $ ssh -l user -L 311:server:311 -L 625:server:625 -N server  Connect to address &amp;ldquo;0.0.0.0&amp;rdquo; to avoid a weird authentication error in WG.
  The default irssi package in MacPorts doesn&#39;t have Perl so you can&#39;t user scripts with it.</description>
    </item>
    
    <item>
      <title>/var/folders?</title>
      <link>https://unflyingobject.com/posts/varfolders/</link>
      <pubDate>Sun, 13 Jan 2008 15:18:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/varfolders/</guid>
      <description>It appears there&#39;s a new cache/tmp folder in Leopard - /var/folders. The subfolder names are hashed, but from this mosxhints post we learn that you can read the hash using getconf, so we can jump directly to the cache folder using:
open $(getconf DARWIN_USER_CACHE_DIR)Looking closer, this is very similar to Tiger&#39;s /var/tmp/folders/userid except there&#39;s a lot more stuff in there under Leopard.
This seems like a good place to look if you&#39;re experiencing mysterious HDD space loss.</description>
    </item>
    
    <item>
      <title>Cool Tools - a Weekly Roundup</title>
      <link>https://unflyingobject.com/posts/cool-tools-a-weekly-roundup/</link>
      <pubDate>Sun, 13 Jan 2008 05:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cool-tools-a-weekly-roundup/</guid>
      <description>WriteRoom About 6 years ago, a customer brought a PowerBook 100 in for repairs. She was a writer and when I asked why she was still using (and spending good money on fixing) that ancient Mac when she could easily buy a new one. She replied that she&#39;s much more productive on the old one because there are no distractions. That the limitations of the machine and software actually help the user to do one thing really well&amp;hellip;</description>
    </item>
    
    <item>
      <title>Display Mirroring during Installation</title>
      <link>https://unflyingobject.com/posts/display-mirroring-during-installation/</link>
      <pubDate>Fri, 11 Jan 2008 12:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/display-mirroring-during-installation/</guid>
      <description>I&#39;ve recently discovered how cool it is to explain something using screencasts. They&#39;re a lot quicker to make than writing an article, a lot more efficient at explaining specific procedures and concepts and IMHO are just plain more enjoyable to follow. Recording these is also a great way to practice one&#39;s diction and &amp;ldquo;thought accuracy&amp;rdquo;.
I use the Canopus TwinPact 100 scan converter to capture the screen (neat box, rubbish software) which makes it possible to also cast stuff like installations and fullscreen apps.</description>
    </item>
    
    <item>
      <title>csv_replace.rb</title>
      <link>https://unflyingobject.com/posts/csv_replacerb/</link>
      <pubDate>Wed, 02 Jan 2008 01:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/csv_replacerb/</guid>
      <description>A short Ruby script I&#39;ve found to be quite useful. It replaces values of the first CSV column with the values in the second column inside any text file (but it was specifically meant for MySQL dumps). I often use it whenever an entity relationship changes in a webapp. Since it&#39;s just a fulltext find/replace it&#39;s also much less error-prone than actually trying to consider the references themselves.
#!/usr/bin/env ruby # Replace values of column 1 with column 2 require &amp;#39;csv&amp;#39;def usageputs &amp;#34;Usage: csv_replace csvfile sqlfile&amp;#34;exit 1endif ARGV.</description>
    </item>
    
    <item>
      <title>Installing Leopard on the 15</title>
      <link>https://unflyingobject.com/posts/installing-leopard-on-the-15/</link>
      <pubDate>Sat, 22 Dec 2007 06:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/installing-leopard-on-the-15/</guid>
      <description>Leopard requires at least an 867Mhz CPU, this iMac has 800. I only need the install to test some OS hacks so I&#39;m pretty sure the 67Mhz delta will not have a big impact. Time to modify some packages&amp;hellip;
  Clone the Leopard DVD onto a writable volume
 mkdir ~/osinstall; cd ~/osinstallxar -xf /Volumes/Leopard/System/Installation/Packages/OSInstall.mpkgsed -i .old -e &#39;s/866000000/0/&#39; ./Distributionmv OSInstall.mpkg ../sudo xar -cf /Volumes/Leopard/System/Installation/Packages/OSInstall.mpkg .</description>
    </item>
    
    <item>
      <title>Compressing PDF&#39;s in Leopard</title>
      <link>https://unflyingobject.com/posts/compressing-pdfs-in-leopard/</link>
      <pubDate>Sat, 22 Dec 2007 00:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/compressing-pdfs-in-leopard/</guid>
      <description>One of the Tiger features that&#39;s now missing in Leopard is the PDF Service that compresses bitmaps in PDF files. Not something terribly vital but definitely useful on occasion. The good news is that you can basically create one yourself.
 Open Automator and add the Apply Quartz Filter to PDF Documents action. When prompted, also add the copy action, but move it after the Quartz filter Set the filter to Reduce File Size Save as a Print Workflow plugin  Print &amp;gt; PDF &amp;gt; Compress PDF (or whatever you called it) and you should get a compressed PDF on your desktop (or whatever you chose) with the document name (most of the time) as the file name.</description>
    </item>
    
    <item>
      <title>Site updates</title>
      <link>https://unflyingobject.com/posts/site-updates/</link>
      <pubDate>Thu, 20 Dec 2007 14:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/site-updates/</guid>
      <description>Many thanks to all who reminded me that the RSS was totally busted! It&#39;s fixed now with a few other site-wide improvements.
The RSS broke because my hosting company had changed the default PHP setting _short_open_tag to 1 which is murder for pages that have XML in them. Luckily they allow directory-specific php.ini configuration.
I&#39;ve finally managed to get rid of the RapidWeaver template that had served me for so long.</description>
    </item>
    
    <item>
      <title>useradd.sh v1.2</title>
      <link>https://unflyingobject.com/posts/useraddsh-v12/</link>
      <pubDate>Sat, 15 Dec 2007 03:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/useraddsh-v12/</guid>
      <description>I&#39;ve updated useradd to support both Tiger and Leopard. Many thanks go to Allan Sanderson for his Leopard changes and bringing the need for an update to my attention in the first place!
There are some other improvements as well, including checking if the user already exists, cloning the non-localized bits from the User Template and semi-random, dictionary-based default passwords.
I&#39;ve tested the script on 10.4.10 and 10.5.1.
Some remarks:</description>
    </item>
    
    <item>
      <title>Ditching Transmission :(</title>
      <link>https://unflyingobject.com/posts/ditching-transmission/</link>
      <pubDate>Sun, 09 Dec 2007 09:46:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ditching-transmission/</guid>
      <description>I&#39;ve been a big fan of Transmission ever since it came out. I think it used to be a fantastic, native BitTorrent client that was really easy to use for the basic stuff, but could do more when you needed it to. I think they still have the best interface for creating Torrents and the extra Mac native features like hot folders and Growl support are terrific&amp;hellip; BUT.
My troubles began some months ago when my net connection started dropping intermittently.</description>
    </item>
    
    <item>
      <title>An Old Presentation</title>
      <link>https://unflyingobject.com/posts/an-old-presentation/</link>
      <pubDate>Thu, 06 Dec 2007 04:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/an-old-presentation/</guid>
      <description>Was cleaning the HD and stumbled on a presentation I had given over a year ago at school.
It was meant for Media Engineering students to give them a different perspective on programming. That it&#39;s not just about classes and objects and polymorphism, but a very powerful tool and a form of creative problem solving. That programming, just like everything else in life, is not about some UML chart that is executed to the t, but rather a series of hundreds of little problems, failures and achievements.</description>
    </item>
    
    <item>
      <title>9 vs X</title>
      <link>https://unflyingobject.com/posts/9-vs-x/</link>
      <pubDate>Thu, 29 Nov 2007 10:52:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/9-vs-x/</guid>
      <description>Some things I learned about OS 9 and X interpoperability today, the hard way:
 You can&#39;t trust Tiger&#39;s Finder to backup Classic system software. I tried backing up the whole drive into a folder on another drive (like you would using OS 9) and the copied System Folder only had 27 items, whereas the original had 35. I didn&#39;t have time to investigate further, but the point is - use ditto instead of Finder.</description>
    </item>
    
    <item>
      <title>Naming Convention</title>
      <link>https://unflyingobject.com/posts/naming-convention/</link>
      <pubDate>Wed, 28 Nov 2007 13:22:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/naming-convention/</guid>
      <description>Was cleaning up my Mac network when I realised I&#39;m currently running my personal record number of Macs in my room - 6, so of-course I had to take a picture to capture the moment:
I (and 25 million other geeks) like to call my machines after a theme - mine&#39;s Futurama, so here they are, the group of 6, from left to right:
 15&amp;rdquo; MBP&amp;hellip; err&amp;hellip; this isn&#39;t named yet as it&#39;s just a temp machine G4 Mac mini aka nibbler - server testing system - &amp;lsquo;cause it&#39;s small and it downloads things :-) 12&amp;rdquo; PowerBook - fry - my most-used workhorse named after my favourite character The G4 tower aka cubert - no idea how a media/file server relates to Farnsworth&#39;s son, but that&#39;s how I named it (&amp;ldquo;hedonism bot&amp;rdquo; would be more aprioriate) WhiteBook - main development/work machine.</description>
    </item>
    
    <item>
      <title>Speaking of Leopard</title>
      <link>https://unflyingobject.com/posts/speaking-of-leopard/</link>
      <pubDate>Tue, 27 Nov 2007 13:50:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/speaking-of-leopard/</guid>
      <description>Been running it on my own machine for a few weeks now. Some things that I really like:
 Higlighting with Cmd-F search. I can finally see the search result instantly within any app!! New Tarminal and Console.app The &amp;ldquo;modal&amp;rdquo; Software Update ie shutting down all open apps before installing updates. The lack of this is the biggest reason why so many OS X users had system trouble after a SU.</description>
    </item>
    
    <item>
      <title>View Source in NetNewsWire</title>
      <link>https://unflyingobject.com/posts/view-source-in-nnw/</link>
      <pubDate>Mon, 05 Nov 2007 10:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/view-source-in-nnw/</guid>
      <description>Maybe it&#39;s just me, but I couldn&#39;t, for the life of me, figure out how to view the XML source of a newsfeed in NetNewsWire. Yes, I even checked Help&amp;hellip;
Luckily NNW is AppleScriptable:
tell application &amp;#34;NetNewsWire&amp;#34; set theSource to XML text of selectedSubscription tell application &amp;#34;TextEdit&amp;#34; make new document with properties {text:theSource} end tell end tell Kludgy? You tell me. Speaking of NNW and AS, I wrote a script that exported NNW feeds to an iPod a while back.</description>
    </item>
    
    <item>
      <title>BOEUF Filters</title>
      <link>https://unflyingobject.com/posts/boeuf-filters/</link>
      <pubDate>Sun, 04 Nov 2007 07:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/boeuf-filters/</guid>
      <description>BOEUF (Bunch Of Extremely Useful Functions) is my own &amp;ldquo;mini framework&amp;rdquo; for building web applications. One of the coolest new features I&#39;ve been able to add to it recently are filters.
Filters are functions that are attached to any of the 4 basic actions - create, read, update or delete. You simply create a function called &amp;ldquo;f_update_post&amp;rdquo; and that function will be called every time the table &amp;ldquo;post&amp;rdquo; is updated. BOEUF evaluates filters after the entity relationships (e.</description>
    </item>
    
    <item>
      <title>A Random Speedtest</title>
      <link>https://unflyingobject.com/posts/a-random-speedtest/</link>
      <pubDate>Sun, 28 Oct 2007 01:58:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-random-speedtest/</guid>
      <description>Ran speedtest.net using the phone to connect. The 3G scripts are from Mr. Barkman&#39;s page. The 3G package should go up to 384/128.
So nothing really new here:
 To use 3G you should have 3G enabled on the phone. I wonder how many customers forget this and just think that mobile internet is just supposed to be slow&amp;hellip;. GPRS scripts give poorer results with 3G becouse of the serial port speed limit (150kbit/s) set by the script.</description>
    </item>
    
    <item>
      <title>iTunes Plus (Finally!)</title>
      <link>https://unflyingobject.com/posts/itunes-plus-finally/</link>
      <pubDate>Sun, 21 Oct 2007 04:37:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/itunes-plus-finally/</guid>
      <description>iTunes Plus is now available also in the Finnish Store. They&#39;ve also dropped the price so you no longer have to pay a premium for DRM-free, 256kbit/s M4A-s which is great.
Upgrading your existing purchases isn&#39;t free however and costs about 3 EUR on average per album (25% of the album price). :( The system will not suggest upgrading your existing copy when you try to buy a Plus version of something you already own (which is what prompted me to find more about this).</description>
    </item>
    
    <item>
      <title>SIGGRAPH Encore</title>
      <link>https://unflyingobject.com/posts/siggraph-encore/</link>
      <pubDate>Wed, 17 Oct 2007 02:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/siggraph-encore/</guid>
      <description>BlenderNation reported that this year&#39;s SIGGRAPH presentations are now online and are available for free until October 31st, which is really cool!
I found that it&#39;s also possible to download them should you want to keep some around as a reference or have limited connectivity. All of the shows are defined in this JS file. You can pick the videoName property of the show you like and paste it as the argument with the same name to this URI (example).</description>
    </item>
    
    <item>
      <title>OpenLocation.scpt</title>
      <link>https://unflyingobject.com/posts/openlocationscpt/</link>
      <pubDate>Sun, 14 Oct 2007 14:25:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/openlocationscpt/</guid>
      <description>To rid yourself of Safari&#39;s Address bar once and for all:
 Set your most important non-search sites in the &amp;ldquo;Bookmarks Bar&amp;rdquo; bookmark folder so they&#39;re accessible with Cmd-1&amp;hellip;9 Hide the Address bar To enter URL&#39;s, use either QuickSilver, or something else. I chose to make a really simple AppleScript that I trigger with Cmd-Shift-K which is tailored exactly to my needs.  Using &amp;ldquo;open location&amp;rdquo; from Standard Additions means that this will also launch the proper protocol helper if needed (eg if I say &amp;ldquo;ftp://someplace&amp;rdquo;):</description>
    </item>
    
    <item>
      <title>Final Cut Server</title>
      <link>https://unflyingobject.com/posts/final-cut-server/</link>
      <pubDate>Sat, 06 Oct 2007 11:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/final-cut-server/</guid>
      <description>About a month ago, I was the lucky member of a group of about 30 to attend a Final Cut Server training event in Amsterdam. This was right after IBC (which I&#39;ve never been to) so Apple had the actual Engineers behind the product on site who later also did the 2-day training course. Our group was taught by Matthew MacManus who I think did a great job, giving lots of insight into the application, even after, what must have been an excruciating week.</description>
    </item>
    
    <item>
      <title>Finding Out Group Membership</title>
      <link>https://unflyingobject.com/posts/finding-out-group-membership/</link>
      <pubDate>Mon, 01 Oct 2007 00:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/finding-out-group-membership/</guid>
      <description>AFAIK, group membership is not stored on a per-user basis. In other words, if you want to find out which groups a specific user is member of, you have to ask that from Groups, not Users.
The first time I ran into this I was pretty bummed out because it seemed you had to poll every specific group to see if the member belongs to it. Then I read this helpful hint from Mr.</description>
    </item>
    
    <item>
      <title>MySQL&#43;PHP setups over SSH</title>
      <link>https://unflyingobject.com/posts/mysqlphp-setups-over-ssh/</link>
      <pubDate>Fri, 28 Sep 2007 07:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mysqlphp-setups-over-ssh/</guid>
      <description>The process is pretty much the same every time so this could almost be wrapped into a script.
1. Grab MySQL and PHP I like to use the official MySQL and Marc Liyenage&#39;s PHP packages. Both are in this case running on 32bit PPC (an XServe G4) using Apache 1.3 on OS X Server 10.4.x.
curl -O http://mysql.tonnikala.org/Downloads/MySQL-5.0/mysql-5.0.45-osx10.4-powerpc.dmgcurl -O http://www2.entropy.ch/download/entropy-php-5.2.4-1.tar.gz 2. Unpack and install hdiutil attach mysql-5.0.45-osx10.4-powerpc.dmgcd /Volumes/mysql-5.</description>
    </item>
    
    <item>
      <title>dirstat.py</title>
      <link>https://unflyingobject.com/posts/dirstatpy/</link>
      <pubDate>Tue, 18 Sep 2007 16:19:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dirstatpy/</guid>
      <description>I was preparing a presentation for school about a web project I&#39;ve recently been working on and thought that it would be kinda cool to give some examples on the file distribution for the build method that I use. To hopefully get a useful comparison between how much &amp;ldquo;stuff&amp;rdquo; there is and what the system can do.
I ended up writing a small Python utility (dirstat.py) that does exactly that - give me statistics on any directory with all the different files (based on extension), their count, total filesize, number of lines in all the files of that type and the percentage of code that these files represent of the whole project.</description>
    </item>
    
    <item>
      <title>Collective Early Beta</title>
      <link>https://unflyingobject.com/posts/collective-early-beta/</link>
      <pubDate>Sun, 09 Sep 2007 13:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/collective-early-beta/</guid>
      <description>I was on the edge of getting kicked out of school just a few months ago (working too much on &amp;ldquo;other stuff&amp;rdquo;&amp;hellip; long story), but they were kind enough to give me one last year to finish my studies. This means crunch time as I have a bunch of courses to do. One of those is my thesis which is worth a lot of points.
The topic of my thesis is &amp;ldquo;Peer-to-peer Content Distribution&amp;rdquo; (or something like that) (the old one didn&#39;t pan out and I just posted what I had to the Streaming411 wiki) and it talks about what we all have been doing for years - sharing stuff online.</description>
    </item>
    
    <item>
      <title>The Lost Song</title>
      <link>https://unflyingobject.com/posts/the-lost-song/</link>
      <pubDate>Sun, 02 Sep 2007 00:46:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-lost-song/</guid>
      <description>I was a drummer before I really got involved in all of this computer nonsense. First in a band called Kingpin and after that in Patient Zero. I still think back at those times as some of the most fulfilling of my life. There&#39;s a sense of immediacy, instant gratification and, dare I say it, humility that you get from playing an instrument that&#39;s very different from coding and other creative processes of that kind.</description>
    </item>
    
    <item>
      <title>The P1i...Phone</title>
      <link>https://unflyingobject.com/posts/the-p1iphone/</link>
      <pubDate>Sat, 01 Sep 2007 12:55:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-p1iphone/</guid>
      <description>With so many Mac geeks raving about their shiny iPhones (and I&#39;m not being sarcastic - it&#39;s one heck of a gadget) I thought I&#39;d go ahead and say it - no, I didn&#39;t get one, I got the Sony Ericsson P1i instead.
Firstly, you can&#39;t get an iPhone to work safely in Europe (short of AT&amp;amp;T roaming, of course). Secondly, and as masochistic as it may sound, I really wanted a mobile device that I could program for.</description>
    </item>
    
    <item>
      <title>Mail.app Address Cache Backup</title>
      <link>https://unflyingobject.com/posts/mailapp-address-cache-backup/</link>
      <pubDate>Thu, 23 Aug 2007 08:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mailapp-address-cache-backup/</guid>
      <description>Someone recently asked me if it&#39;s possible to backup the address cache that Mail.app uses to auto-complete address fields. This is a pretty good idea since it may contain several addresses that one might be using, but has never added to the Address Book.
This information is stored inside Envelope Index, a file in your Library/Mail folder. Luckily, Apple made the wise choice of using SQLite as the DB backend (maybe Mail.</description>
    </item>
    
    <item>
      <title>View Source... in Mail.app</title>
      <link>https://unflyingobject.com/posts/view-source-in-mailapp/</link>
      <pubDate>Tue, 21 Aug 2007 09:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/view-source-in-mailapp/</guid>
      <description>Accidentally discovered what looks to me like an undocumented feature in Mail.app. When you hit Opt-Cmd-U, the same shortcut as Safari&#39;s View &amp;gt; View Source, you actually get the text/plain representation of the email. As in this:
The logical explanation would be that Mail.app uses a WebView to display messages.</description>
    </item>
    
    <item>
      <title>DVD Backups From Your DVB PVR</title>
      <link>https://unflyingobject.com/posts/dvd-backups-from-your-dvb-pvr/</link>
      <pubDate>Sat, 18 Aug 2007 12:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dvd-backups-from-your-dvb-pvr/</guid>
      <description>Reading an article on how to backup stuff from your PVR onto DVD&#39;s in a local PC magazine using Windows tools got me thinking about how to achieve the same thing using a Mac (without Windows). I had always been looking for a compressed XviD-based method, but a DVD solution has 2 important advantages:
 No transcoding necessary. We essentially just unwrap the PVR files and put them on discs. Saves time and quality.</description>
    </item>
    
    <item>
      <title>Screengrabs from DVD Player</title>
      <link>https://unflyingobject.com/posts/screengrabs-from-dvd-player/</link>
      <pubDate>Sat, 18 Aug 2007 01:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/screengrabs-from-dvd-player/</guid>
      <description>It used to be that whenever you took a screenshot of Apple&#39;s DVD Player application, you&#39;d just get a black box where the video should be. At some point that had been replaced by this, much less confusing, yet equally frustrating error message:
Well today I discovered a fairly simple workaround for this &amp;ldquo;issue&amp;rdquo;. Just use the screencapture command line utility with the -i -s switches (to select only the area around the player, for example):</description>
    </item>
    
    <item>
      <title>dash.fm</title>
      <link>https://unflyingobject.com/posts/dashfm/</link>
      <pubDate>Sun, 12 Aug 2007 14:56:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dashfm/</guid>
      <description>Couldn&#39;t sleep, most probably because of the heat. Turned out to be a great opportunity for some late night Widget coding. :) dash.fm is a lastm.fm widget that shows a user&#39;s name with link to user page, total track count and names of the last 10 played tracks. Weird that there really wasn&#39;t anything like this out there before&amp;hellip;
It&#39;s a bit of an experiment - all of the logic is actually handled on the server using XSLT.</description>
    </item>
    
    <item>
      <title>X360 Media Streaming</title>
      <link>https://unflyingobject.com/posts/x360-media-streaming/</link>
      <pubDate>Sun, 12 Aug 2007 06:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/x360-media-streaming/</guid>
      <description>This was to be an article about a gazillion ways one can stream media to your X360 from whatever platform, but instead I&#39;m just going to say that, with it&#39;s current software, the Xbox 360 really isn&#39;t a viable media hub solution.
The problem is of course video playback and the console fails in two key areas: DivX and subtitle support. Given the history of DivX, the former may never actually change.</description>
    </item>
    
    <item>
      <title>Enabling Apple&#39;s VNC Server Over SSH</title>
      <link>https://unflyingobject.com/posts/enabling-apples-vnc-server-over-ssh/</link>
      <pubDate>Fri, 10 Aug 2007 09:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/enabling-apples-vnc-server-over-ssh/</guid>
      <description>This bit has been haunting me for a while. It seems every time I have only one piece of the puzzle and so I finally decided to sit down, figure it out and write it down for future generations. :)
So, here&#39;s our scenario: you&#39;re at the office behind a PC. Somewhere on the far side of the Net you have a Mac running SSH. You want to run some graphical app on the Mac.</description>
    </item>
    
    <item>
      <title>The 360</title>
      <link>https://unflyingobject.com/posts/the-360/</link>
      <pubDate>Sun, 05 Aug 2007 13:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-360/</guid>
      <description>Never thought I&#39;d spend a minute to actually &amp;ldquo;review&amp;rdquo; a Microsoft product, but here I am. Got an Xbox 360 last Friday and I must say I&#39;m pretty impressed. Our home had been a Nintendo house for generations, but the Wii just didn&#39;t feel right. After my kid sister OK-d skipping Twilight Princess, the die was cast.
I think overall the hardware looks decent enough to keep under you TV in your living room.</description>
    </item>
    
    <item>
      <title>iTunes - Deleting Albums From Smart Playlists</title>
      <link>https://unflyingobject.com/posts/itunes-deleting-albums-from-smart-playlists/</link>
      <pubDate>Thu, 02 Aug 2007 13:58:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/itunes-deleting-albums-from-smart-playlists/</guid>
      <description>Easily the most annoying thing about Smart Playlists is that you can&#39;t modify your Library through them. So you just added a new album and you find it from Recently Added (an incredibly useful playlist IMHO), but the album turns out to be crap. Now you have to find that tune from the Library, select it and all the other from that album and delete them. Or just write a script to do it for you:</description>
    </item>
    
    <item>
      <title>Toggling cross-compilation</title>
      <link>https://unflyingobject.com/posts/toggling-cross-compilation/</link>
      <pubDate>Thu, 02 Aug 2007 12:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/toggling-cross-compilation/</guid>
      <description>Many source distribution will compile fine for both i386 and PPC Macs. For those that don&#39;t, I keep this function in my .bash_profile:
ub() { echo -n &amp;#34;Cross-compiling &amp;#34; if [ $1 = &amp;#34;on&amp;#34; ] then export LDFLAGS=&amp;#34;-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386&amp;#34; export CFLAGS=&amp;#34;-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc&amp;#34; echo enabled else unset LDFLAGS CFLAGS echo disabled fi } </description>
    </item>
    
    <item>
      <title>SuperView</title>
      <link>https://unflyingobject.com/posts/superview/</link>
      <pubDate>Tue, 31 Jul 2007 14:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/superview/</guid>
      <description>The following compound sentence will allow you to take screenshots of basically any remote Mac which has SSH running and passwordless SSH login set up:
ssh mymac &amp;quot;echo &#39;adminpass&#39; | sudo -S screencapture /tmp/screen.png &amp;amp;&amp;amp; sudo sips --resampleWidth 400 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 /tmp/screen.png &amp;amp;&amp;amp; cat /tmp/screen.png; sudo rm /tmp/screen.png&amp;quot; &amp;gt; screen.png &amp;amp;&amp;amp; open screen.png  The sudo is necessary to be able to make screenshots from a &amp;ldquo;windowless&amp;rdquo; environment.
One of these days I will integrate this into a widget which will look just like the ARD widget (guess where I got the idea for this) and read the remote pass from the Mac OS keychain.</description>
    </item>
    
    <item>
      <title>SafariReload</title>
      <link>https://unflyingobject.com/posts/safarireload/</link>
      <pubDate>Mon, 30 Jul 2007 11:55:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/safarireload/</guid>
      <description>Every now and again you run into silly (but useful) sites with silly (and useless) session timeouts with no means of changing them. So you do something else while working with the sites only to come back and find out you&#39;ve been logged out.
Well, here&#39;s a little script to help with this situation:
property reloadInterval : 120property reloadUrls : {&amp;#34;gsx&amp;#34;, &amp;#34;mac.com&amp;#34;}on idletell application &amp;#34;System Events&amp;#34;if (application &amp;#34;Safari&amp;#34; is not frontmost) thentell application &amp;#34;Safari&amp;#34;repeat with anUrl in reloadUrlsrepeat with theDoc in (every document whose URL contains anUrl)do JavaScript &amp;#34;window.</description>
    </item>
    
    <item>
      <title>DIY iPod &gt; Last.fm Uploader</title>
      <link>https://unflyingobject.com/posts/diy-ipod-lastfm-uploader/</link>
      <pubDate>Mon, 30 Jul 2007 10:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/diy-ipod-lastfm-uploader/</guid>
      <description>last.fm is a really cool site. I&#39;ve found lots of interesting bands and information from there. Their software is unfortunately pretty crummy. The first time I tried it, the official client mysteriously crashed on me on launch for almost 6 months straight. It&#39;s also not very Mac-like (Cmd-S for Stop, hello?). iScrobbler, especially the 1.5.x series, is getting better, but doesn&#39;t support iPods.
The official last.fm client tries to upload track data from an iPod but at least for me, fails miserably.</description>
    </item>
    
    <item>
      <title>Use Spotlight on Your iPod</title>
      <link>https://unflyingobject.com/posts/use-spotlight-on-your-ipod/</link>
      <pubDate>Tue, 24 Jul 2007 08:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/use-spotlight-on-your-ipod/</guid>
      <description>Spotlight, by default, doesn&#39;t index iPods which is a bummer because the filenames are mangled. OK, no biggie we can just enable it and rebuild the index:
sudo mdutil -i on /Volumes/fliPod sudo mdutil -E /Volumes/fliPod Unfortunately that will not give you access to the audio files since Spotlight also ignores hidden files and folders. This is where mdimport comes in:
mdimport -f /Volumes/fliPod/iPod_Control  And now you can easily find your music from the iPod on any Mac.</description>
    </item>
    
    <item>
      <title>Testing for Power</title>
      <link>https://unflyingobject.com/posts/testing-for-power/</link>
      <pubDate>Mon, 23 Jul 2007 11:34:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/testing-for-power/</guid>
      <description>Say you have a Mac with intermittent poweron problems. How would you test for something like that? How would you know if the part you replaced actually had any effect? You can do this manually, just powering on the unit, or you can let the machine do the work for you:
echo &amp;quot;mypass&amp;quot; | sudo -S pmset repeat poweron MTWRFSU $(php -r &amp;quot;echo date (&#39;H:i:s&amp;quot;&#39;, time() + 120);&amp;quot;) halt  If you put that in your Login Items, the Mac will shutdown and start up after 2 minutes indefinitely.</description>
    </item>
    
    <item>
      <title>SysExtract</title>
      <link>https://unflyingobject.com/posts/sysextract/</link>
      <pubDate>Sun, 22 Jul 2007 15:07:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sysextract/</guid>
      <description>Here&#39;s a little script I wrote that can extract certain packages from a Mac OS X install. I&#39;ve used it to create clean installs from &amp;ldquo;used&amp;rdquo; systems and also as a tool for updating crucial system components for OS deployment images.
It&#39;s geared mostly for Intel-installs, but since 10.4.10 might actually work also on PPC. Just check the PKGS array.
It&#39;s not very safe. I hosed my NetInfo database more than once while working with it (thanks to the -pp option which Post Processes the created install by, among other things, deleting the NI DB), but I thought the general idea of using ditto and package Receipts to restore system components was pretty cool and actually quite useful.</description>
    </item>
    
    <item>
      <title>HereShell</title>
      <link>https://unflyingobject.com/posts/hereshell/</link>
      <pubDate>Thu, 05 Jul 2007 12:16:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/hereshell/</guid>
      <description>Errr, this is about as basic as it gets, but:
tell application &amp;#34;Finder&amp;#34; set currDir to quoted form of POSIX path of (target of window 1 as alias) set theCommand to text returned of (display dialog &amp;#34;&amp;#34; default answer &amp;#34;ls&amp;#34;) try set out to do shell script &amp;#34;cd &amp;#34; &amp;amp; currDir &amp;amp; &amp;#34;;&amp;#34; &amp;amp; theCommand if (out is not &amp;#34;&amp;#34;) then display alert out end if on error e display alert e buttons &amp;#34;Bummer&amp;#34; end try end tell Save that to the right place, give it a shortcut and now I can run shell commands into the frontmost Finder window.</description>
    </item>
    
    <item>
      <title>PHP and OS X&#39;s OpenLDAP</title>
      <link>https://unflyingobject.com/posts/php-and-os-xs-openldap/</link>
      <pubDate>Wed, 04 Jul 2007 06:25:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/php-and-os-xs-openldap/</guid>
      <description>After spending nearly a full day figuring out how to make PHP (5.2.x) authenticate to OS X Server&#39;s (10.4.9) OpenLDAP, I decided to put down the results:
  Must always do ldap_set_option ($ds, LDAP_OPT_PROTOCOL_VERSION, 3) or else you get a Protocol error
  Trying to do an anonymous bind before searching for a users DN for authentication is moot. PHP will tell you Server is unwilling to perform and /var/log/slapd.</description>
    </item>
    
    <item>
      <title>Perian 1.0</title>
      <link>https://unflyingobject.com/posts/perian-10/</link>
      <pubDate>Tue, 03 Jul 2007 11:14:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/perian-10/</guid>
      <description>Perian is a pretty neat project. Weird that no-one really thought of this before - to wrap ffmpeg and a few support libs in a QuickTime component, instead of just every format individually. I know I&#39;ve certainly debated with friends about which approach would be better - QT-based or a standalone player. It seems that with Apple TV, the answer has become pretty obvious.
Anyways, version 1.0 had recently come out and one of the coolest features is ofcourse subtitle (SRT) support.</description>
    </item>
    
    <item>
      <title>B.O.E.U.F.</title>
      <link>https://unflyingobject.com/posts/boeuf/</link>
      <pubDate>Tue, 03 Jul 2007 10:58:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/boeuf/</guid>
      <description>BOEUF (&amp;ldquo;Bunch Of Extremely Useful Functions&amp;rdquo;) is a helper library (a &amp;ldquo;mini-framework&amp;rdquo; if you will) designed to make the most tedious operations of building PHP websites a little bit easier. I&#39;m using it to drive a few web projects at the moment, including this very same blog.
It&#39;s been inspired in part by CakePHP, but maybe most of all by good-old oldskool PHP/MySQL development. It gives you:
 A data-driven development workflow.</description>
    </item>
    
    <item>
      <title>Coda - a Quick Review</title>
      <link>https://unflyingobject.com/posts/coda-a-quick-review/</link>
      <pubDate>Fri, 22 Jun 2007 02:54:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/coda-a-quick-review/</guid>
      <description>The name of Panic&#39;s latest &amp;ldquo;big app&amp;rdquo; would suggest that it has something to do with coding, which it totally does, but I also remembered the word from choir practice. In music, &amp;ldquo;coda&amp;rdquo; means &amp;ldquo;the concluding passage of a piece or movement, typically forming an addition to the basic structure.&amp;rdquo;
I wouldn&#39;t consider myself a professional web developer, although I&#39;ve worked as one in the past. On projects ranging from simple web pages to a full CMS.</description>
    </item>
    
    <item>
      <title>Back Online</title>
      <link>https://unflyingobject.com/posts/back-online/</link>
      <pubDate>Fri, 22 Jun 2007 00:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/back-online/</guid>
      <description>This blog isn&#39;t what it used to be. In a good sense. Hopefully. It is now running on a hand-made blogging engine I call Flannel (the name actually comes from a CMS I wrote that runs for example this site), temporarily still using the RapidWeaver template.
There were quite a few reasons I wanted to do this and here are the most important ones:
  RW was really becoming a drag as a blogging tool.</description>
    </item>
    
    <item>
      <title>Reading Version Numbers</title>
      <link>https://unflyingobject.com/posts/reading-version-numbers/</link>
      <pubDate>Fri, 22 Jun 2007 00:58:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/reading-version-numbers/</guid>
      <description>I&#39;ve been working alot with software version numbers lately (did I mention I have a job now?) and one of the tools I developed, that didn&#39;t eventually get implemented was a little utility that could fetch the Info.plist info from a bundle based on it&#39;s bundle id, for example:
$ versioneer org.videolan.vlc * org.videolan.vlc: 0.8.6b  Since it can also work with the plists from a user&#39;s homedir, you can also do bigger lookups:</description>
    </item>
    
    <item>
      <title>Tunnelling Media Over SSH</title>
      <link>https://unflyingobject.com/posts/tunnelling-media-over-ssh/</link>
      <pubDate>Fri, 08 Jun 2007 23:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/tunnelling-media-over-ssh/</guid>
      <description>If this site had a &amp;ldquo;just too cool&amp;rdquo; section, this next bit would be the first one there. You&#39;re at the office and want to play some tunes from your home Mac. Do you set up a file server to access them? Or maybe some streaming system? Try to hack iTunes to share beyond the LAN?
Or just use SSH (which you&#39;re probably serving anyway). The trick is to cat the remote file over the SSH tunnel to a local media player that can read from stdin, like mpg123:</description>
    </item>
    
    <item>
      <title>New article for afp548.com</title>
      <link>https://unflyingobject.com/posts/new-article-for-afp548com/</link>
      <pubDate>Fri, 25 May 2007 15:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/new-article-for-afp548com/</guid>
      <description>Terminal Productivity Tips. I think it came out OK - I think I said everything I wanted to say. I actually worked on it for quite a long while, trying to make sure everything is accurate and works the way it should. There&#39;s certainly some stuff in there I would have loved to read about some time ago. I truly hope it&#39;ll come in useful for someone. It&#39;s kind of a vast subject I guess, but you can always only start somewhere.</description>
    </item>
    
    <item>
      <title>The best media player money can&#39;t buy</title>
      <link>https://unflyingobject.com/posts/the-best-media-player-money-cant-buy/</link>
      <pubDate>Sat, 19 May 2007 11:34:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-best-media-player-money-cant-buy/</guid>
      <description>It turns out that for my needs, the best x-format media player out there right now is the command-line version of MPlayer. It plays anything, is infinitely customisable, has proper support for subtitles (with live interactive retiming!) and most importantly, allows me to easily create the perfect UI for it, tailored exactly to my needs. In most cases this means &amp;ldquo;play this file&amp;rdquo; or &amp;ldquo;play this file and use this other file for the subtitles&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>Updates on the 6200c</title>
      <link>https://unflyingobject.com/posts/updates-on-the-6200c/</link>
      <pubDate>Fri, 18 May 2007 00:54:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/updates-on-the-6200c/</guid>
      <description>A while back I reported about my experiences with the ProCaster 6200c DVBc PVR device. I&#39;ve now done a bit more research into free playback, transcoding and editing solutions and here are some results:
  VLC will not play back the files. All you get is noise and no audio.
  ffmpeg/ffplay doesn&#39;t know what to do with them either. It recognizes the audio track, but only sees a subtitle track where the video data should be.</description>
    </item>
    
    <item>
      <title>Detecting RSS readers</title>
      <link>https://unflyingobject.com/posts/detecting-rss-readers/</link>
      <pubDate>Fri, 18 May 2007 00:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/detecting-rss-readers/</guid>
      <description>I find it strange that there&#39;s no (AFAIK) standard way to differentiate between a regular web browser and an RSS aggregator. Ideally, you&#39;d think that the client requests a certain mimetype so your webapp could make some decisions. This isn&#39;t much of an issue in most cases, since you just provide an alternate link the the RSS feed, but I ran into a problem with authentication.
I wanted RSS users to be able to authenticate using standard HTTP methods, while still giving browser users a nice login window through which they could also reset the password or whatever.</description>
    </item>
    
    <item>
      <title>XLD - A Quick Review</title>
      <link>https://unflyingobject.com/posts/xld-a-quick-review/</link>
      <pubDate>Wed, 16 May 2007 16:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/xld-a-quick-review/</guid>
      <description>I ran into a situation where I had a music CD as a single FLAC file with the tracks defined in a cuesheet. The generally-fabulous Max wouldn&#39;t do anything with this combo (it opened the .cue file, but that was it). The command-line FLAC decoder does support cue indexes, but just as I was getting ready for some shellscript/Automator mumbo jumbo, I decided to pull a Google search for &amp;ldquo;flac cue os x&amp;rdquo; and that&#39;s when I stumbled on this wonderful little utility called XLD.</description>
    </item>
    
    <item>
      <title>Here&#39;s My Truth - Tell Me Yours</title>
      <link>https://unflyingobject.com/posts/heres-my-truth-tell-me-yours/</link>
      <pubDate>Tue, 15 May 2007 00:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/heres-my-truth-tell-me-yours/</guid>
      <description>The following has nothing to do with what&#39;s usually said on this site, but I feel it&#39;s important since there&#39;s not much first-hand English commentary and foreign news services have been (too) diplomatic on the subject.
I&#39;m talking about what&#39;s recently been happening in Estonia. There&#39;s an information war going on between Estonia and Russia at the moment one that revolves around the s.c. &amp;ldquo;Bronze Soldier&amp;rdquo;&amp;hellip;
How it all began I will try to sum up the key events that lead to this situation, as best as I can (there&#39;s a really good documentary series about the occupation over at the Museum of Occupations home-page).</description>
    </item>
    
    <item>
      <title>iTunes U</title>
      <link>https://unflyingobject.com/posts/itunes-u/</link>
      <pubDate>Thu, 10 May 2007 13:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/itunes-u/</guid>
      <description>Here&#39;s something I didn&#39;t even know existed - Apple&#39;s iTunes U service. They describe it like so:
 iTunes U is a free, hosted service for colleges and universities that provides easy access to their educational content, including lectures and interviews, 24 hours a day, 7 days a week
 Seems to be the same thing that powers the ADC on iTunes system. This is pretty cool too:
 One-click iPod support.</description>
    </item>
    
    <item>
      <title>Cleaning up your Podcasts</title>
      <link>https://unflyingobject.com/posts/cleaning-up-your-podcasts/</link>
      <pubDate>Wed, 09 May 2007 23:25:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cleaning-up-your-podcasts/</guid>
      <description>I was running out of HD space again and for the heck of it checked how much space my downloaded podcasts were taking up - 1.9GB. This wasn&#39;t that surprising, but I did notice there were media files of podcasts lying around that I had unsubscribed from a looong time ago. So I needed something that would do two things:
a) Delete all the podcasts I had already listened to b) Go through all the residue in the Podcast folder and delete whatever I had already unsubcribed from.</description>
    </item>
    
    <item>
      <title>QuickTime 7.1.6</title>
      <link>https://unflyingobject.com/posts/quicktime-716/</link>
      <pubDate>Tue, 08 May 2007 14:42:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/quicktime-716/</guid>
      <description>Two things about the latest QuickTime update I haven&#39;t noticed having been mentioned anywhere:
- Timecode and closed captioning display in QuickTime Player  The first one is easy, we can now view the frame number, or, if the movie has a timecode track, different timecode formats:
It seems this might be tied to Compressor 3&#39;s ability to do non-destructive timecode overlays.
Closed captioning has still remained a mystery to me.</description>
    </item>
    
    <item>
      <title>The LEFT OUTER JOIN</title>
      <link>https://unflyingobject.com/posts/the-left-outer-join/</link>
      <pubDate>Mon, 07 May 2007 00:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-left-outer-join/</guid>
      <description>So let&#39;s say you&#39;re fetching posts from your blog app and also want to show the comment count for every post. You can&#39;t use a typical JOIN because some posts may not have any comments at all and doing a separate query in the comments table is just plain wasteful. Use a LEFT OUTER JOIN instead:
SELECT *, COUNT(comments.id) AS comment_count FROM posts LEFT OUTER JOIN comments ON (posts.id = comments.</description>
    </item>
    
    <item>
      <title>Safari tip of the week - history search</title>
      <link>https://unflyingobject.com/posts/safari-tip-of-the-week-history-search/</link>
      <pubDate>Sun, 06 May 2007 18:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/safari-tip-of-the-week-history-search/</guid>
      <description>At least once a week, I run into a situation where I want to revisit a site I had visited earlier but forgot to bookmark or didn&#39;t even think of bookmarking. All I can remember is a part of the page&#39;s title. Wouldn&#39;t it be nice if there was a slick tool that would allow you to quickly search your browser history? I was all ready to fire up XCode when I discovered that the Safari team had already thought of this.</description>
    </item>
    
    <item>
      <title>iftop</title>
      <link>https://unflyingobject.com/posts/iftop/</link>
      <pubDate>Sun, 06 May 2007 11:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/iftop/</guid>
      <description>Wouldn&#39;t it be cool to know exactly what connection is eating how much of your bandwidth? Now you can, thanks to iftop.
It has many useful commands (like regex filtering), just hit &amp;ldquo;h&amp;rdquo; to read about them. And ofcourse I just had to build a universal package (it goes into /usr/local/sbin) I discovered this little gem through Neubia. more info from man iftop.</description>
    </item>
    
    <item>
      <title>Why I don&#39;t like Symbian</title>
      <link>https://unflyingobject.com/posts/why-i-dont-like-symbian/</link>
      <pubDate>Sat, 05 May 2007 16:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/why-i-dont-like-symbian/</guid>
      <description>Just a few points why I think Symbian in general, and S60 in particular suck really bad. And I&#39;m not alone in this:
Windows-only I wonder how well the web would have taken off if the servers and development tools for making webapps and homepages would have been Windows-only. Some wonderful people have made an effort to get a Symbian toolchain running on *NIXes but they&#39;re all hopelessly outdated since there&#39;s no support from Nokia.</description>
    </item>
    
    <item>
      <title>Why I don&#39;t like Symbian</title>
      <link>https://unflyingobject.com/posts/why-i-dont-like-symbian/</link>
      <pubDate>Sat, 05 May 2007 16:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/why-i-dont-like-symbian/</guid>
      <description>Just a few points why I think Symbian in general, and S60 in particular suck really bad. And I&#39;m not alone in this:
Windows-only I wonder how well the web would have taken off if the servers and development tools for making webapps and homepages would have been Windows-only. Some wonderful people have made an effort to get a Symbian toolchain running on *NIXes but they&#39;re all hopelessly outdated since there&#39;s no support from Nokia.</description>
    </item>
    
    <item>
      <title>The ProCaster 6200c</title>
      <link>https://unflyingobject.com/posts/the-procaster-6200c/</link>
      <pubDate>Sat, 14 Apr 2007 10:24:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-procaster-6200c/</guid>
      <description>Haven&#39;t found anything on this elsewhere yet, so some quick notes on our new DVB box. The image quality is really good, the PVR stuff looks very impressive looking indistinguishable from broadcast quality. Makes sense since it&#39;s probably not transcoded at all. And the fact that it can record up to 4 broadcasts at once is really cool.
The EPG works well and the interface isn&#39;t half bad, especially after the firmware update (which seem to come out pretty regularly, you can even download betas!</description>
    </item>
    
    <item>
      <title>I Wish I Could Be Like Settings</title>
      <link>https://unflyingobject.com/posts/i-wish-i-could-be-like-settings/</link>
      <pubDate>Sat, 14 Apr 2007 10:21:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/i-wish-i-could-be-like-settings/</guid>
      <description>  Picture taken from a Linksys router&#39;s configuration page.
  </description>
    </item>
    
    <item>
      <title>A simple build system</title>
      <link>https://unflyingobject.com/posts/a-simple-build-system/</link>
      <pubDate>Wed, 11 Apr 2007 14:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-simple-build-system/</guid>
      <description>Nowadays it seems that whenever you&#39;re working on something, you, at some point, have to start releasing stuff. Typically you can&#39;t just take the directory of your app, compress it and upload somewhere. And even if you could, doing it manually would be extremely munday at best.
In a typical webapp project, creating a &amp;ldquo;build&amp;rdquo; means:
 a) cleaning up our configuration of any sensitive information b) removing any data that should not be included in the distribution c) archiving and compressing the build d) id each archive (typically using a timestamp) the build e) uploading the archive somewhere.</description>
    </item>
    
    <item>
      <title>Temporarily changing passwords</title>
      <link>https://unflyingobject.com/posts/temporarily-changing-passwords/</link>
      <pubDate>Tue, 03 Apr 2007 16:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/temporarily-changing-passwords/</guid>
      <description>This came up on comp.sys.mac.system - how could you easily change a users password without having admin access to the system? Say a customer asks you to install Final Cut Studio before going into a meeting and forgets to give you his password (or writes down the wrong one, or whatever). Do you just wait for the customer to return and tell them they&#39;ll have to wait another 45 mins for the 30+ GB to finish installing?</description>
    </item>
    
    <item>
      <title>Audio playback with Python</title>
      <link>https://unflyingobject.com/posts/audio-playback-with-python/</link>
      <pubDate>Mon, 02 Apr 2007 20:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/audio-playback-with-python/</guid>
      <description>I was really surprised there&#39;s seemingly no way to do cross-platform sound output with Python. Looks like you can definitely do it under Windows, and maybe even on Linux, but I couldn&#39;t find any info about OS X. There&#39;s the rather cryptic mention of Carbon.Snd Sound Manager in the Python docs but I honestly have no idea what that is or how to use it.
Anyways, since I (and probably any other Python user on OS X) had PyObjc installed, I decided to use Cocoa to do my sound playback.</description>
    </item>
    
    <item>
      <title>A Universal Subtitle Format and Distribution Method</title>
      <link>https://unflyingobject.com/posts/a-universal-subtitle-format-and-distribution-method/</link>
      <pubDate>Sun, 01 Apr 2007 12:40:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-universal-subtitle-format-and-distribution-method/</guid>
      <description>OnTrees will be a weekly &amp;ldquo;column&amp;rdquo; about ideas for tools and technologies I think would make working with computers and consuming media more enjoyable and fulfilling. The name comes from the slogan of another site I run. I normally just jot my ideas down as iCal To Dos, but I think it&#39;s time to try and articulate them. If for no other reason than to help me better understand them myself and obviously in the hopes of someone else picking up on them.</description>
    </item>
    
    <item>
      <title>Checking for existance</title>
      <link>https://unflyingobject.com/posts/checking-for-existance/</link>
      <pubDate>Sat, 31 Mar 2007 11:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/checking-for-existance/</guid>
      <description>There&#39;s no built-in for checking if a file exists when developing Dashboard Widgets in JavaScript. But with a little help from the BSD subsystem we can do it easily. For this to work, you obviously need to have the following set in your Info.plist:
&amp;lt;key&amp;gt;AllowSystem&amp;lt;/key&amp;gt; &amp;lt;true/&amp;gt; That opens up a whole world of possibilities. I find that the most effective way is to use file. This way we can even check if something is of the correct type.</description>
    </item>
    
    <item>
      <title>Why I switched to Safari (again)</title>
      <link>https://unflyingobject.com/posts/why-i-switched-to-safari-again/</link>
      <pubDate>Thu, 22 Mar 2007 22:01:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/why-i-switched-to-safari-again/</guid>
      <description>I&#39;ve been a big fan of Camino. Ever since it was called Chimera. Whenever a new Mac OS would come out, that I didn&#39;t have the hardware for, I could still use a modern, native Mac browser thanks to them. These guys have done a tremendous job bridging the Gecko rendering engine with a OS X Look&amp;amp;Feel that in many ways feels more &amp;ldquo;Mac&amp;rdquo; than Apple&#39;s own browser. I originally switched to Camino because:</description>
    </item>
    
    <item>
      <title>Data URL-s</title>
      <link>https://unflyingobject.com/posts/data-url-s/</link>
      <pubDate>Mon, 19 Mar 2007 10:25:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/data-url-s/</guid>
      <description>I needed a really quick way to post photos from my phone, so decided to write a little photogallery app. You just dump pictures off the phone to a certain directory and that&#39;s it. In the process of reading about imagecopyresized, I stumbled on this method of embedding images:
&amp;lt;img src=&amp;#39;data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD&amp;#39; alt=&amp;#39;Picture&amp;#39; /&amp;gt; That&#39;s called a data URL and they were first introduced in 1998.
In PHP, I couldn&#39;t find a way to read the data directly with imagejpeg(), so I end up overwriting 1 thumbnail for a whole directory of images.</description>
    </item>
    
    <item>
      <title>Finding things</title>
      <link>https://unflyingobject.com/posts/finding-things/</link>
      <pubDate>Sat, 17 Mar 2007 12:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/finding-things/</guid>
      <description>I find it ironic, that things get increasingly difficult to find as their physical proximity increases (ie distance decreases). Thanks to Google, I can easily find a solution to a problem some guy, thousands of kilometres, and more importantly, years away, found and yet I&#39;m utterly helpless if I have to find my bus ticket under the pile of papers that is my workdesk. In other words, filipp&#39;s search theorem states that &amp;ldquo;the physical distance of an object is inversely proportionate to the chance of me actually finding it&amp;quot;.</description>
    </item>
    
    <item>
      <title>Running iCal Server on FreeBSD 6.2</title>
      <link>https://unflyingobject.com/posts/running-ical-server-on-freebsd-62/</link>
      <pubDate>Tue, 13 Mar 2007 21:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/running-ical-server-on-freebsd-62/</guid>
      <description>Lots of dependencies to work through, but it&#39;ll work eventually. Kerberos was something that I didn&#39;t bother with (just commented out the relevant lines in the run script) since this is just for a mobile application development project. I also had to comment out line 46 in run.sh.</description>
    </item>
    
    <item>
      <title>Mac Mythbusters: white on black saves battery</title>
      <link>https://unflyingobject.com/posts/mac-mythbusters-white-on-black-saves-battery/</link>
      <pubDate>Mon, 12 Mar 2007 12:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mac-mythbusters-white-on-black-saves-battery/</guid>
      <description>While reviewing Journler, I stumbled upon a funny command - Toggle Low Light Display. This is the same as System Preferences &amp;gt; Universl Acces &amp;gt; White on Black and is obviously meant for writing in the dark, but it made me wonder if it would also help to conserve battery power. The reasoning being that in a standard black-on-white configuration we&#39;re burning pixels that really don&#39;t have to be lit at all.</description>
    </item>
    
    <item>
      <title>Thou shalt not delete!</title>
      <link>https://unflyingobject.com/posts/thou-shalt-not-delete/</link>
      <pubDate>Sun, 11 Mar 2007 19:17:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/thou-shalt-not-delete/</guid>
      <description>This came up in the chatroom. How do you protect a folder from being deleted while still being able to write to it? Locking it directly doesn&#39;t work, locking the parent one does, but then you can&#39;t write to the parent dir. Standard UNIX permissions are of little help, as there is no such thing as a &amp;ldquo;delete bit&amp;rdquo;. Enter Access Control Lists. First let&#39;s make sure they&#39;re on:
&amp;gt; sudo fsaclctl -p / -e  and then we can just take away the right to delete:</description>
    </item>
    
    <item>
      <title>with(something)</title>
      <link>https://unflyingobject.com/posts/withsomething/</link>
      <pubDate>Sun, 11 Mar 2007 12:14:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/withsomething/</guid>
      <description>I discovered a nice little shortcut for setting element properties in JavaScript. Instead of saying:
nameDiv = document.createElement(&amp;#39;div&amp;#39;)nameDiv.className = &amp;#39;nameDiv&amp;#39;;nameDiv.innerText = showName;nameDiv.title = showName;You can kind of &amp;ldquo;zoom in to&amp;rdquo; the element:
with (nameDiv = document.createElement(&amp;#39;div&amp;#39;)){className = &amp;#39;nameDiv&amp;#39;;innerText = showName;title = showName;}</description>
    </item>
    
    <item>
      <title>XML stuff</title>
      <link>https://unflyingobject.com/posts/xml-stuff/</link>
      <pubDate>Fri, 09 Mar 2007 17:35:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/xml-stuff/</guid>
      <description>A (weird) way to convert PHP arrays to XML. I came up with this for Collective - passing media metadata (with getid3) from the server to JavaScript. It&#39;s not supposed to work with numeric indexes - the algorithm doesn&#39;t break, it just produces invalid XML (can&#39;t have numbers as element names):
function array2xml($array) { foreach ($array as $k =&amp;gt; $v) { if (is_array($v)) { $out .= &amp;#34;&amp;lt;$k &amp;#34; . array2xml($v) .</description>
    </item>
    
    <item>
      <title>Geek humour</title>
      <link>https://unflyingobject.com/posts/geek-humour/</link>
      <pubDate>Thu, 08 Mar 2007 14:41:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/geek-humour/</guid>
      <description>&amp;gt; make love make: *** No rule to make target `love&#39;. Stop. &amp;gt; echo &amp;quot;love&amp;quot; &amp;gt; Makefile; make love Makefile:1: *** missing separator. Stop.  </description>
    </item>
    
    <item>
      <title>Punk 1.0.6</title>
      <link>https://unflyingobject.com/posts/punk-106/</link>
      <pubDate>Thu, 08 Mar 2007 13:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/punk-106/</guid>
      <description>Released yesterday. The version number is completely made up. Supports the new IMDb layout and is rewritten to use XMLHttpRequest which should also work through proxies by using the system settings. XMLHttpRequest seems to also give you caching for free (at least it creates cruft in the Cache folder).
This is probably the most succesful thing I&#39;ve ever made (thanks largely to Martin&#39;s nice UI) and this version even got some comments from actual users!</description>
    </item>
    
    <item>
      <title>Concatenating a bunch of files</title>
      <link>https://unflyingobject.com/posts/concatenating-a-bunch-of-files/</link>
      <pubDate>Thu, 08 Mar 2007 10:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/concatenating-a-bunch-of-files/</guid>
      <description>A useful little tidbit. To merge the contents of all the files in an arbitrary directory hierachy into one single file, while skipping dot-files:
&amp;gt; find . -type f \! -name &amp;quot;.*&amp;quot; -exec cat {} &amp;gt; /Users/filipp/specs.txt \;  </description>
    </item>
    
    <item>
      <title>XMLHttpRequest and redirects</title>
      <link>https://unflyingobject.com/posts/xmlhttprequest-and-redirects/</link>
      <pubDate>Wed, 07 Mar 2007 19:27:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/xmlhttprequest-and-redirects/</guid>
      <description>Hit a major bummer while updating the Punk widget today. Essentially, the onreadystatechange handler will miss the redirect/Location: (302) header being sent. IMDb uses 302 when there&#39;s only one search result and catching that was a really nice shortcut instead of having to parse the page to find out what has happened. The widget used curl before with which it&#39;s super-easy to notice these things, but for some other reasons, I had already re-written everything to use XMLHttpRequest.</description>
    </item>
    
    <item>
      <title>Scraping google.com</title>
      <link>https://unflyingobject.com/posts/scraping-googlecom/</link>
      <pubDate>Mon, 05 Mar 2007 22:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/scraping-googlecom/</guid>
      <description>I don&#39;t know when this happened, but it seems you can&#39;t scrape (parse) google.com as easily as before. At least with Python, a simple
s=urllib.urlopen(&#39;http://www.google.com/search?q=define%3Aesoteric&#39;)r=s.read()print r will give you this notice instead:
 /snip/ Your client does not have permission to get URL /search?q=define%3Aesoteric from this server /snip/
 And here&#39;s me not understanding why my regexes are not matching. :) Apparently, you should at least show some kind of User Agent.</description>
    </item>
    
    <item>
      <title>OpenSSL is cool</title>
      <link>https://unflyingobject.com/posts/openssl-is-cool/</link>
      <pubDate>Wed, 28 Feb 2007 22:40:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/openssl-is-cool/</guid>
      <description>No news there, but some neat tricks: To test a certificate:
&amp;gt; cat mycert.crt mycert.key &amp;gt; mycert.pem &amp;gt; openssl s_server -cert mycert.pem -www  and then check https://localhost:4433
To strip a passphrase from an RSA keyfile:
&amp;gt; openssl rsa -in mykey.key -out newkey.pem  Whenever someone says you should &amp;ldquo;use make to create hash links&amp;rdquo; what they really mean is you should use Makefile.crt that comes with mod_ssl to create hash symlinks for Apache.</description>
    </item>
    
    <item>
      <title>Windows and OS X benchmarks</title>
      <link>https://unflyingobject.com/posts/windows-and-os-x-benchmarks/</link>
      <pubDate>Tue, 27 Feb 2007 13:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/windows-and-os-x-benchmarks/</guid>
      <description>I&#39;ve said this before, but one thing that baffles me is in all the benchmarks and performance comparisons, people tend to compare a fresh copy of Windows against a fresh copy of OS X. I think this is completely false. Every self-respecting reviewer should, first of all install all the software they would normally in a production machine, preferably use the reviewed system as their main system for a while.</description>
    </item>
    
    <item>
      <title>Stranger than fiction</title>
      <link>https://unflyingobject.com/posts/stranger-than-fiction/</link>
      <pubDate>Sat, 24 Feb 2007 12:27:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/stranger-than-fiction/</guid>
      <description>filipp@fiBook.local [Metadata] &amp;gt; curl -v http://127.0.0.1/~filipp/collective/show.php?id=rss * About to connect() to 127.0.0.1 port 80 * Trying 127.0.0.1... * connected * Connected to 127.0.0.1 (127.0.0.1) port 80 &amp;gt; GET /~filipp/collective/show.php?id=rss HTTP/1.1 User-Agent: curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7l zlib/1.2.3 Host: 127.0.0.1 Pragma: no-cache Accept: */* &amp;lt; HTTP/1.1 200 OK &amp;lt; Date: Sat, 24 Feb 2007 10:27:41 GMT &amp;lt; Server: Apache/1.3.33 (Darwin) PHP/5.2.0 &amp;lt; X-Powered-By: PHP/5.2.0 &amp;lt; Set-Cookie: PHPSESSID=4fnmhuf56d5h3ifqg6qcai8k12; path=/ &amp;lt; Expires: Thu, 19 Nov 1981 08:52:00 GMT &amp;lt; Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 &amp;lt; Pragma: no-cache &amp;lt; Transfer-Encoding: chunked &amp;lt; Content-Type: text/xml  AND</description>
    </item>
    
    <item>
      <title>Using Google&#39;s sitemap generator with RW</title>
      <link>https://unflyingobject.com/posts/using-googles-sitemap-generator-with-rw/</link>
      <pubDate>Wed, 21 Feb 2007 00:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/using-googles-sitemap-generator-with-rw/</guid>
      <description>The sitemap generation process may seem a little daunting at first but it&#39;s actually quite simple, even when you&#39;re just using RapidWeaver. All you have to do is download their Sitemap Generator script. Then make a local export of your RW site (ie ~/Sites/mysite.com). The sitemap generator has 3 modes of operation, we&#39;re interested in having it generate the map based on the directory structure, so config.xml would be:
&amp;lt;site base_url=&amp;quot;http://mysite.</description>
    </item>
    
    <item>
      <title>Finnish TV advertising</title>
      <link>https://unflyingobject.com/posts/finnish-tv-advertising/</link>
      <pubDate>Sat, 17 Feb 2007 14:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/finnish-tv-advertising/</guid>
      <description>There are some really good ones here occasionally. They&#39;re holding a competition now and some of last years best clips are also available online. Many of them obviously expect you to understand the language, but there are also a few &amp;ldquo;universal&amp;rdquo; ones, like this local carpark ad, for instance. Or this one, that&#39;s actually in English.</description>
    </item>
    
    <item>
      <title>Cannot launch natd</title>
      <link>https://unflyingobject.com/posts/cannot-launch-natd/</link>
      <pubDate>Wed, 14 Feb 2007 15:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cannot-launch-natd/</guid>
      <description>After a power outage, this started happening:
Feb 14 15:36:35 www serveradmin: servermgr_nat: nat config:Error:Cannot launch natd  The Appple front-ends (like serveradmin) are not very verbose so I&#39;ve found a good troubleshooting step to be to run the underlying deamon with the same config files, manually:
www:/etc/nat root# natd -config /etc/nat/natd.conf.apple natd: unknown protocol (null). Expected tcp or udp  Aha! Indeed, the last line looks weird:
redirect_port (null) (null):3050  When it should be something like:</description>
    </item>
    
    <item>
      <title>Cyrus weirdness</title>
      <link>https://unflyingobject.com/posts/cyrus-weirdness/</link>
      <pubDate>Mon, 12 Feb 2007 23:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cyrus-weirdness/</guid>
      <description>Feb 12 23:35:35 server launchd: edu.cmu.andrew.cyrus.master: exited with exit code: 75 Feb 12 23:35:35 server launchd: edu.cmu.andrew.cyrus.master: respawning too quickly! throttling Feb 12 23:35:35 server launchd: edu.cmu.andrew.cyrus.master: 1 more failure without living at least 60 seconds will cause job removal Feb 12 23:35:35 server launchd: edu.cmu.andrew.cyrus.master: will restart in 10 seconds Feb 12 23:35:45 server master[14119]: empty option value on line 14 of configuration file Feb 12 23:35:45 server master[14119]: exiting  That&#39;s just launchd&#39;s special way of saying that that cyrus is not starting up.</description>
    </item>
    
    <item>
      <title>Good Things pt 2- YAML</title>
      <link>https://unflyingobject.com/posts/good-things-pt-2-yaml/</link>
      <pubDate>Fri, 09 Feb 2007 19:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/good-things-pt-2-yaml/</guid>
      <description>I got acquinted with YAML during my short run-in with Ruby on Rails (more on this some other day, hopefully). Their official description is:
 YAML(tm) (rhymes with &amp;ldquo;camel&amp;rdquo;) is a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages such as Perl and Python.
 Absolutely brilliant stuff. What it gives you, is a simple (no joke!) portable data format that&#39;s truly human-readable (indentation, baby!</description>
    </item>
    
    <item>
      <title>RewritesRule</title>
      <link>https://unflyingobject.com/posts/rewritesrule/</link>
      <pubDate>Fri, 09 Feb 2007 12:53:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/rewritesrule/</guid>
      <description>For my thesis, I&#39;m building a simple (there&#39;s that word again!) publishing backend that basically just accepts any kind of media, gives you an interface to catalogue it, creates Torrent metafiles, etc and then spits out XHTML and RSS. For this to look nice, I decided to use Apache&#39;s mod_rewrite to use simple canonical URI&#39;s (like show/get/11, genre/Horror etc), so my rule looked something like this (L flag means it&#39;s the last rule and NC that the regex is case-insensitive)</description>
    </item>
    
    <item>
      <title>Apache 2.2.4 Universal Binary</title>
      <link>https://unflyingobject.com/posts/apache-224-universal-binary/</link>
      <pubDate>Sat, 03 Feb 2007 11:57:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/apache-224-universal-binary/</guid>
      <description>Long story short, I needed a server-side Python interpreter. For this there&#39;s two options (that I know of) - install Zope and run it along or in place of your existing web server (probably what any intelligent being would do), or go the hard way and run mod_python instead. The latest version works with either httpd 2.0 or later so it won&#39;t run OOtB on OS X. I figured since I&#39;m upgrading my Apache anyway, I may as well grab the latest version.</description>
    </item>
    
    <item>
      <title>Fixing the Lumbard</title>
      <link>https://unflyingobject.com/posts/fixing-the-lumbard/</link>
      <pubDate>Thu, 01 Feb 2007 15:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/fixing-the-lumbard/</guid>
      <description>The G3 &amp;ldquo;Series&amp;rdquo; PowerBook is a really good machine for your parents - it looks &amp;ldquo;mature&amp;rdquo;, it&#39;s &amp;ldquo;laptop enough&amp;rdquo; to take it to the cottage if needed, has a big screen (although pretty dim by today&#39;s standards), runs a browser and email just fine and is cheap. Ours had a problem with the power connect though, requiring them to wedge something under the power connector for it to work. Obviously just a bad contact - a perfect opportunity for some light hardware work.</description>
    </item>
    
    <item>
      <title>iTunes Store tips</title>
      <link>https://unflyingobject.com/posts/itunes-store-tips/</link>
      <pubDate>Wed, 31 Jan 2007 18:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/itunes-store-tips/</guid>
      <description>Define a shortcut for Power Search. System Preferences &amp;gt; Keyboard &amp;amp; Mouse &amp;gt; Shortcuts &amp;gt; iTunes &amp;gt; SearchÃ¢Â€Â¦ I set mine to Cmd -F (odd that that doesn&#39;t focus on the search field, by default)
   Wishlists. Just create a playlist and drag stuff from the store to it. Only works with individual tracks, sadly
   Don&#39;t forget to de-authorize computer before formatting the HD.</description>
    </item>
    
    <item>
      <title>AppleScripting Keynote 3</title>
      <link>https://unflyingobject.com/posts/applescripting-keynote-3/</link>
      <pubDate>Tue, 30 Jan 2007 22:32:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/applescripting-keynote-3/</guid>
      <description>And in particular the add chart command. At first it seems like a really cool thing - easily create beautiful charts out of virtually any source. I was excited to try this with some Webalizer output. Looks like you have two options - the Automator Action or Script Editor
The action produces a chart right off the bat, but the input is weird:
 Input: (Anything) Two dimensional array of chart labels and data.</description>
    </item>
    
    <item>
      <title>servermgrd bus error</title>
      <link>https://unflyingobject.com/posts/servermgrd-bus-error/</link>
      <pubDate>Sun, 28 Jan 2007 23:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/servermgrd-bus-error/</guid>
      <description>This happened after a failed attempt to add a signed cert from a CA - servermgrd just crashed. Trying to disable all SSL (/Library/Preferences/com.apple.servermgrd.plist) had no effect. Starting in debug mode just said this:
# servermgrd -d 2007-01-28 23:39:04.717 servermgrd[20540] *** _NSAutoreleaseNoPool(): Object 0x306030 of class NSCFData autoreleased with no pool in place - just leaking 2007-01-28 23:39:04.717 servermgrd[20540] *** _NSAutoreleaseNoPool(): Object 0x306420 of class NSCFData autoreleased with no pool in place - just leaking 2007-01-28 23:39:04.</description>
    </item>
    
    <item>
      <title>An interesting quote</title>
      <link>https://unflyingobject.com/posts/an-interesting-quote/</link>
      <pubDate>Sat, 27 Jan 2007 17:24:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/an-interesting-quote/</guid>
      <description>If the Mac was so great, why did it lose? Cost, again. Microsoft concentrated on the software business and unleashed a swarm of cheap component suppliers on Apple hardware. It did not help, either that suits took over during a critical period. (And it hasn&#39;t lost yet. If Apple were to grow the iPod into a cell phone with a web browser, Microsoft would be in big trouble.)
 Excerpt taken from Paul Graham&#39;s excellent Hackers &amp;amp; Painters, published in 2004.</description>
    </item>
    
    <item>
      <title>Building universal binaries</title>
      <link>https://unflyingobject.com/posts/building-universal-binaries/</link>
      <pubDate>Wed, 24 Jan 2007 15:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/building-universal-binaries/</guid>
      <description>So far I&#39;ve had the best success with defining the following before configure:
&amp;gt; export LDFLAGS=&amp;quot;-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386&amp;quot; &amp;gt; export CFLAGS=&amp;quot;-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc&amp;quot;  Sometimes this lead to:
gcc: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags  in which case passing &amp;ndash;disable-dependency-tracking to configure seemed to help.</description>
    </item>
    
    <item>
      <title>last.fm&#39;s Taste-o-meter</title>
      <link>https://unflyingobject.com/posts/lastfms-taste-o-meter/</link>
      <pubDate>Wed, 24 Jan 2007 15:17:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/lastfms-taste-o-meter/</guid>
      <description>I&#39;m not a big fan of social networking sites, but last.fm is different. It actually has a point - you can use it to discover new music, keep tabs on your more distant friends, create groups, track events etc. It&#39;s useful and actually fun to use.
One thing I think could work better is the Taste-o-meter. It seems it&#39;s also the basis of the Neighbours feature. It could be a little smarter - instead of just counting the artists two users have in common, it could compare the relative rarity of that particular artist.</description>
    </item>
    
    <item>
      <title>Postmaster</title>
      <link>https://unflyingobject.com/posts/postmaster/</link>
      <pubDate>Tue, 23 Jan 2007 11:40:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/postmaster/</guid>
      <description>Giving your (admin) account the &amp;ldquo;postmaster&amp;rdquo; alias doesn&#39;t actually do anything because /etc/postfix/aliases hardwires postmaster to root and that sends mail to /dev/null. I fixed this by setting the &amp;ldquo;root&amp;rdquo; config var in aliases.
In other news, watch out for failed user-specific crontab entries. Sometimes (more than once) running
&amp;gt; crontab -u user -e  will simply hang, creating a tmp.something into /var/cron/tabs. This drives cron mad, eating up all the cycles it can.</description>
    </item>
    
    <item>
      <title>Emulators over RDC</title>
      <link>https://unflyingobject.com/posts/emulators-over-rdc/</link>
      <pubDate>Mon, 22 Jan 2007 21:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/emulators-over-rdc/</guid>
      <description>Always remember to keep the sound option at &amp;ldquo;Play on remote computer&amp;rdquo;. I tend to leave mine at &amp;ldquo;Do not play&amp;rdquo; and then wonder why the S60 emulator will launch and then quit after about 20 seconds.</description>
    </item>
    
    <item>
      <title>Amavis gone haywire</title>
      <link>https://unflyingobject.com/posts/amavis-gone-haywire/</link>
      <pubDate>Mon, 22 Jan 2007 21:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/amavis-gone-haywire/</guid>
      <description>The problem:
Jan 22 17:57:59 server postfix/qmgr[29037]: warning: mail for [127.0.0.1]:10024 is using up 20000 of 20000 active queue entries Jan 22 17:57:59 server postfix/qmgr[29037]: warning: you may need to reduce smtp-amavis connect and helo timeouts Jan 22 17:57:59 server postfix/qmgr[29037]: warning: so that Postfix quickly skips unavailable hosts Jan 22 17:57:59 server postfix/qmgr[29037]: warning: you may need to increase the main.cf minimal_backoff_time and maximal_backoff_time Jan 22 17:57:59 server postfix/qmgr[29037]: warning: so that Postfix wastes less time on undeliverable mail Jan 22 17:57:59 server postfix/qmgr[29037]: warning: you may need to increase the master.</description>
    </item>
    
    <item>
      <title>Bruce Is Back!</title>
      <link>https://unflyingobject.com/posts/bruce-is-back/</link>
      <pubDate>Sun, 21 Jan 2007 23:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/bruce-is-back/</guid>
      <description>The Final Cut mascot. It turns out that starting from 5.1 you have to call up the Video Scopes and control-click in the vectorscope. He&#39;s alot braver now too. You can actually move the FCP windows around and he&#39;ll just sit there. This picture was taken with the Finder as the background:</description>
    </item>
    
    <item>
      <title>As If Nothing Ever Happened</title>
      <link>https://unflyingobject.com/posts/as-if-nothing-ever-happened/</link>
      <pubDate>Wed, 17 Jan 2007 20:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/as-if-nothing-ever-happened/</guid>
      <description>To restore a customised and updated machine so that it looks as if it&#39;s never been booted:
Boot to single-user mode
&amp;gt; mount -uw / &amp;gt; rm -rf /Users/* /var/db/netinfo/local.nidb /var/db/.AppleSetupDone /Library/Preferences/* /Library/Caches/* &amp;gt; shutdown now  </description>
    </item>
    
    <item>
      <title>Remembering the QTVR Pan Angle</title>
      <link>https://unflyingobject.com/posts/remembering-the-qtvr-pan-angle/</link>
      <pubDate>Mon, 15 Jan 2007 15:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/remembering-the-qtvr-pan-angle/</guid>
      <description>This only works with Safari:
QT_WriteOBJECT_XHTML ( &#39;myVRmovie.mov&#39;, 800, 600, &#39;&#39;, &#39;controller&#39;, &#39;true&#39;, &#39;id&#39;, &#39;myvrmovie&#39;, &#39;cache&#39;, &#39;true&#39;, &#39;pan&#39;, getAngle ());  &amp;hellip; where getAngle() just uses a cookie:
function getAngle () { return document.cookie.split (&#39;=&#39;)[1]; }  &amp;hellip; which is set with setAngle () like thus:
function setAngle () { document.cookie = &#39;angle=&#39; + Math.floor (document.myvrmovie.GetPanAngle ()); }  Finally, the hotspots are wired to go through this function:
function openPage (url) { setAngle (); window.</description>
    </item>
    
    <item>
      <title>Creating Empty Files of Any Size</title>
      <link>https://unflyingobject.com/posts/creating-empty-files-of-any-size/</link>
      <pubDate>Sun, 14 Jan 2007 19:55:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/creating-empty-files-of-any-size/</guid>
      <description>This is again one of those cool things that you could never do with OS 9 or older:
&amp;gt; dd count=`echo $((1024*1024/512*sizeinmegs))` if=/dev/zero of=myfile.zeros  Perfect for testing drives, networks or file transfer apps. Update:
man mkfile  </description>
    </item>
    
    <item>
      <title>A Good Year</title>
      <link>https://unflyingobject.com/posts/a-good-year/</link>
      <pubDate>Sat, 13 Jan 2007 21:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-good-year/</guid>
      <description>Speaking of MacWorld and Apple history, here&#39;s a &amp;ldquo;blast from the past&amp;rdquo; I found while going through some old stuff:
That was a pretty good year! And it&#39;ll be 10 years this year since Jobs came back, btw.</description>
    </item>
    
    <item>
      <title>Revitilizing Camino&#39;s Flashblock</title>
      <link>https://unflyingobject.com/posts/revitilizing-caminos-flashblock/</link>
      <pubDate>Thu, 11 Jan 2007 21:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/revitilizing-caminos-flashblock/</guid>
      <description>I noticed the little FlashBlock checkbox in CaminoTools wasn&#39;t actually doing anything. It&#39;s supposed to disable all flash content until you click on it. Turns out this is achieved with simple CSS and here&#39;s how you enable it:
&amp;gt; cd ~/Library/Application\ Support/Camino/chrome &amp;gt; cat &amp;gt; ./flashblock.css &amp;lt;&amp;lt; EOF /* Prevent flash animations from playing until you click on them. */ object[classid$=&amp;quot;:D27CDB6E-AE6D-11cf-96B8-444553540000&amp;quot;], object[codebase*=&amp;quot;swflash.cab&amp;quot;], object[type=&amp;quot;application/x-shockwave-flash&amp;quot;], embed[type=&amp;quot;application/x-shockwave-flash&amp;quot;] { -moz-binding: url(&amp;quot;http://www.cs.hmc.edu/~jruderma/clickToView.xml#ctv&amp;quot;); } EOF  and then just include that css file in your userContent.</description>
    </item>
    
    <item>
      <title>Smartphone Market Share</title>
      <link>https://unflyingobject.com/posts/smartphone-market-share/</link>
      <pubDate>Wed, 10 Jan 2007 21:57:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/smartphone-market-share/</guid>
      <description>I&#39;m really excited about the iPhone. Finally a mobile device that looks great, tackles some serious UI problems with fresh ideas and sports a &amp;ldquo;real&amp;rdquo; operating system, made by the same house as the HW to boot (although the specs on that one are still nowhere to be found). They could&#39;ve dropped the camera to maybe squeeze some extra battery life out of it, but never mind. Got me excited about mobile app development again!</description>
    </item>
    
    <item>
      <title>Are We Or Aren&#39;t We?</title>
      <link>https://unflyingobject.com/posts/are-we-or-arent-we/</link>
      <pubDate>Sun, 07 Jan 2007 22:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/are-we-or-arent-we/</guid>
      <description>Everyone knows this by now. This is nice and I couldn&#39;t agree more:
However, I found the Chrysler ad they run before this story on time.com to be a little umm&amp;hellip; conflicting?
I have a fairly sarcastic sense of humour, but even I don&#39;t get it. Are we or aren&#39;t we? Would be kind of a downer if they ran that after the story.</description>
    </item>
    
    <item>
      <title>I Love Akamai (from now on)</title>
      <link>https://unflyingobject.com/posts/i-love-akamai-from-now-on/</link>
      <pubDate>Fri, 05 Jan 2007 16:24:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/i-love-akamai-from-now-on/</guid>
      <description>Here&#39;s a cool 22 minute video showing how Akamai works which I found when researching for my thesis. Impressive would be an understatement. It&#39;s a little long, but definitely worth watching if you&#39;re into statistics or online content delivery:
There&#39;s actually all sorts of goodies on their site. Like this Dashboard Widget that shows you how much music business there&#39;s out there or the realtime metrics visualizations. Plus, they look cool too!</description>
    </item>
    
    <item>
      <title>Giving .doc an Icon</title>
      <link>https://unflyingobject.com/posts/giving-doc-an-icon/</link>
      <pubDate>Thu, 04 Jan 2007 16:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/giving-doc-an-icon/</guid>
      <description>I don&#39;t work much with Word files, but when I do, the only major &amp;ldquo;problem&amp;rdquo; I have is that if you only have Pages and TextEdit installed, .doc files have a generic-looking white icon. It&#39;s easy to fix though:
/Applications/TextEdit.app &amp;gt; Show package contents &amp;gt; Contents &amp;gt; Resources Duplicate rtf.icns and rename copy to doc.icns From the Contents folder open Info.plist and into the CFBundleDocumentTypes array append:
&amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;CFBundleTypeExtensions&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;string&amp;gt;doc&amp;lt;/string&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;key&amp;gt;CFBundleTypeIconFile&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;doc.</description>
    </item>
    
    <item>
      <title>ADC Student Membership</title>
      <link>https://unflyingobject.com/posts/adc-student-membership/</link>
      <pubDate>Wed, 03 Jan 2007 15:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/adc-student-membership/</guid>
      <description>There doesn&#39;t seem to be much info out there on this subject, so here&#39;s my experience. Bought the student membership for 99 EUR, solely for the hardware discount (I&#39;m sure that&#39;s the case for most people). The product listing also says you get the current version of OS X and a copy of XCode as well, but they&#39;re bundled with the machine anyway.
&amp;gt; priceOfMembership=99 &amp;gt; priceOfHardware=1408 &amp;gt; newPriceOfHardware=1275 &amp;gt; echo &#39;Total discount: &#39; $(($priceOfHardware-$newPriceOfHardware-$priceOfMembership)) &#39;EUR (&#39; $(($newPriceOfHardware/$priceOfHardware*100)) &#39;% )&#39; Total discount: 34 EUR ( 0 % )  The percentage is 0 because Bash&#39;s arithmetic&#39;s only deal with integer values (it&#39;s actually about 10%), but it may as well be, because you should also factor in the 30 min on the phone.</description>
    </item>
    
    <item>
      <title>Display Sleep</title>
      <link>https://unflyingobject.com/posts/display-sleep/</link>
      <pubDate>Tue, 02 Jan 2007 10:35:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/display-sleep/</guid>
      <description>I usually leave my Mac on when I go to bed. This means setting the display sleep to now or the next best thing, 1 minute. The most obvious way to do it is from System Prefs, but I wanted something faster:
&amp;gt; sudo pmset displaysleep 1  is great, but requires root prvileges (due to some of the other things you can do with it) so it&#39;s out for any kind of automation/scripting purpose.</description>
    </item>
    
    <item>
      <title>Audio Transcoding with Automator</title>
      <link>https://unflyingobject.com/posts/audio-transcoding-with-automator/</link>
      <pubDate>Mon, 01 Jan 2007 12:32:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/audio-transcoding-with-automator/</guid>
      <description>Got a bunch of FLAC files that I wanted to add to the iTunes library. Options: a) install the FLAC component and hope it works b) decode them with flac, import wavs to iTunes, delete the wavs or c) do point b), but with a click of a button:
Pretty nice. I only wish QuickTime Player had such a nice Automator Library&amp;hellip;</description>
    </item>
    
    <item>
      <title>Google search to RW (for lazy bums)</title>
      <link>https://unflyingobject.com/posts/google-search-to-rw-for-lazy-bums/</link>
      <pubDate>Sat, 30 Dec 2006 11:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/google-search-to-rw-for-lazy-bums/</guid>
      <description>A really lazy way to add search to your RW page:
&amp;lt;div id=&amp;quot;gsearch&amp;quot;&amp;gt;&amp;lt;form action=&amp;quot;http://www.google.com/search&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;q&amp;quot;/&amp;gt;&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;hl&amp;quot; value=&amp;quot;en&amp;quot;/&amp;gt;&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;sitesearch&amp;quot; value=&amp;quot;http://homepage.mac.com/filipp&amp;quot;/&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Search with Google&amp;quot;/&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;/div&amp;gt; I think you could actually cook up something nice with a Google developer account and XMLHttpRequest&amp;hellip;</description>
    </item>
    
    <item>
      <title>Using script.aculo.us with XSLT</title>
      <link>https://unflyingobject.com/posts/using-scriptaculous-with-xslt/</link>
      <pubDate>Thu, 28 Dec 2006 20:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/using-scriptaculous-with-xslt/</guid>
      <description>When using script.aculo.us with XSLT (XML to XHTML), don&#39;t include like this:
&amp;lt;script src=&amp;quot;javascripts/scriptaculous.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;  This is because scriptaculous.js uses document.write () to include the components and that&amp;rsquo; apparently verboten when using XSL. The symptoms are weird too:
  Safari will acts as if all was OK, except Ajax.Request won&#39;t work
  Firefox/Gecko-based browsers will just hang on loading the document (an invinite &amp;ldquo;Reading&amp;rdquo;) and you&#39;ll notice some class name related errors in the JS log.</description>
    </item>
    
    <item>
      <title>Project sugupuu.com</title>
      <link>https://unflyingobject.com/posts/project-sugupuucom/</link>
      <pubDate>Thu, 28 Dec 2006 14:36:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/project-sugupuucom/</guid>
      <description>About 6 months ago, me and my mother wanted to start building our family tree. It quickly became apparent that the Mac software scene is sorely lacking in this area. Most of the mature apps were either dated, didn&#39;t support Unicode (quite frankly an unacceptable flaw in a genealogy app) or were just too cumbersome to use. Family was cute, but lacked some important features (like any kind of textual backup or export).</description>
    </item>
    
    <item>
      <title>Points on ZFS</title>
      <link>https://unflyingobject.com/posts/points-on-zfs/</link>
      <pubDate>Thu, 28 Dec 2006 11:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/points-on-zfs/</guid>
      <description>Snapshots. This feature was the reason people originally thought it was behind Time Machine.   &amp;ldquo;A snapshot is a read-only point-in-time copy of a filesystem which takes practically no time to create and uses no additional space at the beginning. Any snapshot can be cloned to make a read-write filesystem and any snapshot of a filesystem can be restored to the original filesystem to return to the previous state.</description>
    </item>
    
    <item>
      <title>Software For Starving Students</title>
      <link>https://unflyingobject.com/posts/software-for-starving-students/</link>
      <pubDate>Wed, 27 Dec 2006 16:37:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/software-for-starving-students/</guid>
      <description>Stumbled across this cool project while browsing through Apple&#39;s Software downloads section. From the project&#39;s homepage:
 Software for Starving Students is a free collection of programs organized for students (but available to anyone). We&#39;ve gathered a list of best-in-class programs onto one CD (one disc for OS X, one for Windows), including a fully-featured office suite, a cutting-edge web browser, multi-media packages, academic tools, utilities and more.
 I think this is a terrific idea.</description>
    </item>
    
    <item>
      <title>Happy Holidays</title>
      <link>https://unflyingobject.com/posts/happy-holidays/</link>
      <pubDate>Sat, 23 Dec 2006 00:28:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/happy-holidays/</guid>
      <description>The past few days have been weird. Got a really great idea for writing a hwmond replacement called servermond that would allow you to use at least some of the functionality of Server Monitor on any hardware. So far so not good. Getting the SSL decryption to work to reverse-engineer the Server Monitor protocol has been unsuccessful due to, quite frankly, lack of tools. ssldump won&#39;t compile straight, tried the macports version but that won&#39;t run.</description>
    </item>
    
    <item>
      <title>IOHWSensor</title>
      <link>https://unflyingobject.com/posts/iohwsensor/</link>
      <pubDate>Tue, 19 Dec 2006 16:43:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/iohwsensor/</guid>
      <description>Q: Is it possible to read the hardware sensors from the Terminal, without any 3rd party help? A: Yes it is. Q: Mmkay, but how? A: I&#39;m glad yo asked. With ioreg and a few extra utilities, like awk:
ioreg -n IOHWSensor | awk -F &amp;quot;=&amp;quot; &#39;/\&amp;quot;current-value\&amp;quot; = (\d*)|\&amp;quot;location\&amp;quot; = (\d*)/ { print ($2); }&#39;That will output:
 3031040&amp;quot;HDD BOTTOMSIDE&amp;quot;3309568&amp;quot;CPU TOPSIDE&amp;quot;3440640&amp;quot;GPU ON DIE&amp;quot;80033&amp;quot;CPU CORE&amp;quot;307429376&amp;quot;REAR MAIN ENCLOSURE&amp;quot;1900544&amp;quot;BATTERY&amp;quot; As you can see the numbers don&#39;t make any sense.</description>
    </item>
    
    <item>
      <title>Modulo</title>
      <link>https://unflyingobject.com/posts/modulo/</link>
      <pubDate>Tue, 19 Dec 2006 11:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/modulo/</guid>
      <description>This one is easy, but so important but used so rarely that you have time to forget it. How to build a table programmatically with a certain number of columns, with only one while - loop:
&amp;lt;table style=&amp;quot;border: 1px solid black&amp;quot;&amp;gt;$i = 0;$col = 4;$val = 20;$table = null;while ($i &amp;lt; $val){$i++;$table .= &#39;&amp;lt;tr&amp;gt;&#39; + ($i % $col == 0) ? &amp;quot;&amp;lt;td&amp;gt;$i&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot; : &amp;quot;&amp;lt;td&amp;gt;$i&amp;lt;/td&amp;gt;&amp;quot;;}print ($table);?</description>
    </item>
    
    <item>
      <title>Variable Scopes</title>
      <link>https://unflyingobject.com/posts/variable-scopes/</link>
      <pubDate>Mon, 18 Dec 2006 14:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/variable-scopes/</guid>
      <description>value = 0 def setValue(): value = 1 setValue () print value  What&#39;s that gonna print? That&#39;s right - 0. Must use global instead:
value = 0 def setValue(): global value value = 1 setValue () print value  It&#39;s actually the exact same with PHP:
$value = 0; function setValue () { $value = 1; } setValue (); print (&amp;quot;value: &amp;quot; . $value);  My brain tells me that if something&#39;s been defined previously, then we should be referencing that thing instead.</description>
    </item>
    
    <item>
      <title>Two New Scripts</title>
      <link>https://unflyingobject.com/posts/two-new-scripts/</link>
      <pubDate>Sun, 17 Dec 2006 02:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/two-new-scripts/</guid>
      <description>useradd.sh and freplace.sh. The first is a simple CLI utility for creating users and the second finds and replaces files.
&amp;gt; ./useradd.sh Usage: sudo useradd.sh [-u uid] [-g group] [-a] [-c] [-d home] [-s shell] [-rn realname] name  -a makes new user an administrator.
&amp;gt; ./freplace.sh Usage: freplace.sh [-sb] [-o owner:group] -d indir target replacement  Replaces target in directory indir with replacement. Has a few extra features as well.</description>
    </item>
    
    <item>
      <title>About FTP</title>
      <link>https://unflyingobject.com/posts/about-ftp/</link>
      <pubDate>Sat, 16 Dec 2006 01:56:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/about-ftp/</guid>
      <description>To allow only FTP access to a share (AFP/FTP/SMB):  $ sharing -e sharename -s 010  All the configuration files are in /Library/FTPServer/Configuration
  &amp;ldquo;man ftpaccess&amp;rdquo; had some useful info on the different chrootType values:
chroot_type standard | homedir | restricted
 Sets the type of restricted environment the user is under when he logs on. standard Allows users to access the ftp root, their homedir, and sharepoints.</description>
    </item>
    
    <item>
      <title>The Drug Lords</title>
      <link>https://unflyingobject.com/posts/the-drug-lords/</link>
      <pubDate>Wed, 13 Dec 2006 15:25:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-drug-lords/</guid>
      <description>via erki.lap.ee.</description>
    </item>
    
    <item>
      <title>Universal Hello World</title>
      <link>https://unflyingobject.com/posts/universal-hello-world/</link>
      <pubDate>Tue, 12 Dec 2006 13:21:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/universal-hello-world/</guid>
      <description>I&#39;ve been struggling with building universal (fat) binaries on OS X for quite a while now. Finally decided to sit down and figure this out. In a situation with many variables, it&#39;s often good to stop and try to &amp;ldquo;crystallise&amp;rdquo; the problem at hand. What better way to do this than with a Hello World - if that won&#39;t compile and link, then why should anything else, right?
#include &amp;lt;stdio.h&amp;gt; int main (void) { printf (&amp;quot;Hello, world!</description>
    </item>
    
    <item>
      <title>DBERROR- critical database situation</title>
      <link>https://unflyingobject.com/posts/dberror-critical-database-situation/</link>
      <pubDate>Mon, 11 Dec 2006 23:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/dberror-critical-database-situation/</guid>
      <description>OK, so this one started with a rather ominous message in /var/log/mailaccess.log:
Dec 11 15:33:47 gw mbpath[4439]: DBERROR: critical database situation  Stopped the server, tried a db rebuild. Nothing. Noticed a &amp;ldquo;no space on device&amp;rdquo; error, indeed df confirmed it. On to finding what&#39;s taking up the room:
gw:/Library/Logs root# du -hc -d 1 / 0B /.Trashes 1.5K /.vol 318M /Applications 1.5K /automount 3.5M /bin 0B /cores 2.0K /dev 0B /Groups 1.</description>
    </item>
    
    <item>
      <title>Cheap Bastards</title>
      <link>https://unflyingobject.com/posts/cheap-bastards/</link>
      <pubDate>Mon, 11 Dec 2006 23:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cheap-bastards/</guid>
      <description>OK, so you&#39;ve got trillions in the bank and you&#39;re taking orders for your next big cash cow. You set up a website, with the product packaging, marketing text and compulsory generic humanoid photo, then you have your graphics team come up with the necessary buttons and icons:
No, wait, that can&#39;t be right. That little icon looks just like:
&amp;hellip;THE FRIGGIN WORKGROUP MANAGER ICON! And it doesn&#39;t just look like it - it is the same one.</description>
    </item>
    
    <item>
      <title>Mac Pro Memory and Temperatures</title>
      <link>https://unflyingobject.com/posts/mac-pro-memory-and-temperatures/</link>
      <pubDate>Mon, 11 Dec 2006 14:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/mac-pro-memory-and-temperatures/</guid>
      <description>Stumbled across this bit of interesting information. Two interesting points - first, it&#39;s possible to embed thermal sensors onto a memory DIMM:
 &amp;ldquo;In order for the Mac Pro to maintain a safe operating temperature of the FB-DIMMs, the AMBs for each FB-DIMM must provide a functional temperature sensor.&amp;rdquo;
 This is thanks to the SPD (Serial Presence Detect) chip that&#39;s on every DIMM that also supports the I2C protocol.</description>
    </item>
    
    <item>
      <title>BBEdit Session Restore</title>
      <link>https://unflyingobject.com/posts/bbedit-session-restore/</link>
      <pubDate>Sat, 09 Dec 2006 01:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/bbedit-session-restore/</guid>
      <description>BBEdit&#39;s probably my most important tool. Even though an editor is such a basic thing that it&#39;s almost kind of silly to be attached to one, you just get used to it over time and it&#39;s nice to constantly be finding new features and ways to use a tool.
I can easily have upwards of 20 documents open simultaneously - sometimes part of the same project, mostly not. This makes you weary of actually closing the app because what if you want to pick up exactly where you left off?</description>
    </item>
    
    <item>
      <title>PHP&#39;s file_get_contents () and cookies</title>
      <link>https://unflyingobject.com/posts/phps-file_get_contents-and-cookies/</link>
      <pubDate>Wed, 06 Dec 2006 01:16:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/phps-file_get_contents-and-cookies/</guid>
      <description>Sending cookies - you can do it with file_get_contents () - just look at the stream functions&amp;rsquo; constants (the context parameter). But I found out it&#39;s much easier using the curl plugin (which isn&#39;t always available, btw, but neither is file_get_contents ()):
$c = curl_init ($url); curl_setopt ($c, CURLOPT_VERBOSE, 1); // For testing curl_setopt ($c, CURLOPT_COOKIE, &amp;quot;variable=value&amp;quot;); curl_exec ($c);  It&#39;s that simple. An awesome tool for creating all kinds of site parsers.</description>
    </item>
    
    <item>
      <title>A Free Alternative To MatLab</title>
      <link>https://unflyingobject.com/posts/a-free-alternative-to-matlab/</link>
      <pubDate>Mon, 04 Dec 2006 20:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-free-alternative-to-matlab/</guid>
      <description>You can stitch one together with the following components: Apple&#39;s X11 + AquaTerm + Gnuplot 4 + Octave
It&#39;s all here.</description>
    </item>
    
    <item>
      <title>Something New Every Day...</title>
      <link>https://unflyingobject.com/posts/something-new-every-day/</link>
      <pubDate>Fri, 01 Dec 2006 20:32:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/something-new-every-day/</guid>
      <description>JavaScript - Associative Arrays Considered Harmful  The reason I stumbled across this was that Apple&#39;s QuickTime Embedding JS has this problem. The symptoms look crazy - you&#39;ll have other JS code inside your embed tag. This happened to me when using Prototype. The fix is easy - just replace &amp;ldquo;new Array ();&amp;rdquo; on line 165 with &amp;ldquo;new Object ();&amp;rdquo;</description>
    </item>
    
    <item>
      <title>No More OpenWiFi From Me!</title>
      <link>https://unflyingobject.com/posts/no-more-openwifi-from-me/</link>
      <pubDate>Tue, 28 Nov 2006 12:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/no-more-openwifi-from-me/</guid>
      <description>My net connection was dropped yesterday. After the standard reboot/check/repeat procedures I decided to call the ISP. The customer service person was happy to report that this was not a glitch, but that my connection had been cut due to too much spam coming from my modem&amp;hellip;
I was of course a little surprised. We have 3 Macs + 1 Debian box in our home network, none of which, I&#39;m pretty sure, are spamming.</description>
    </item>
    
    <item>
      <title>Setting up HansaWorld Enterprise</title>
      <link>https://unflyingobject.com/posts/setting-up-hansaworld-enterprise/</link>
      <pubDate>Sun, 26 Nov 2006 23:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/setting-up-hansaworld-enterprise/</guid>
      <description>Actually managed to find some documentation on this (why their server won&#39;t list it&#39;s program arguments, I will never understand). It&#39;s here.
When you&#39;re wrapping to launchd, keep in mind that every parameter has to go in a separate tag. Ie not &amp;ndash;port something, but &amp;ndash;portsomethingOtherwise the server will start up, but won&#39;t be accepting connections on that port.</description>
    </item>
    
    <item>
      <title>The Headless Install</title>
      <link>https://unflyingobject.com/posts/the-headless-install/</link>
      <pubDate>Sun, 26 Nov 2006 23:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-headless-install/</guid>
      <description>It&#39;s really quite simple when you know it. This is all also somewhere in the documentation, but here are the exact steps for easy reference:
  Boot off the install media
  On another machine that has the tools installed, pull a
/System/Library/ServerSetup/sa_srchr 224.0.0.1
  That should get you something like this:
localhost#1.25 GHz PowerPC G4#192.168.0.114#00:11:24:3e:62:aa#Mac OS X Server 10.4#RDY4PkgInstall#3.0#512   Cool.
ssh root@192.168.0.114
Password: the first 8 characters of your server hardware&#39;s serial number</description>
    </item>
    
    <item>
      <title>7 Days Without a Mouse</title>
      <link>https://unflyingobject.com/posts/7-days-without-a-mouse/</link>
      <pubDate>Thu, 23 Nov 2006 01:06:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/7-days-without-a-mouse/</guid>
      <description>More like 7 hours really. It turns out today&#39;s UIs pretty much require a mouse (even though they don&#39;t list them as a requirement, like they used to). Universal Access &amp;gt; Full Keyboard Access helps a lot, but the 2 major things that made me reconnect my mouse were:
 Webpages. Painful to access links. IRC. Can&#39;t open links either.  </description>
    </item>
    
    <item>
      <title>Useful info on AFP</title>
      <link>https://unflyingobject.com/posts/useful-info-on-afp/</link>
      <pubDate>Thu, 23 Nov 2006 00:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/useful-info-on-afp/</guid>
      <description>Mac OS X Server: About Privilege Mapping and When It Is Used defaults read -g com.apple.AppleShareClientCore defaults read /Library/Preferences/com.apple.AppleFileServer</description>
    </item>
    
    <item>
      <title>JSINF vol 3</title>
      <link>https://unflyingobject.com/posts/jsinf-vol-3/</link>
      <pubDate>Mon, 20 Nov 2006 11:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/jsinf-vol-3/</guid>
      <description>Ping scanning with nmap. Ie how to find all your machines on the local subnet that have a DHCP address (100+)
nmap -sP 192.168.0.100-255</description>
    </item>
    
    <item>
      <title>Securing WebMail (if only just a little bit)</title>
      <link>https://unflyingobject.com/posts/securing-webmail-if-only-just-a-little-bit/</link>
      <pubDate>Sun, 19 Nov 2006 18:15:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/securing-webmail-if-only-just-a-little-bit/</guid>
      <description>By default, the squirrelmail conf only allows plaintext, but you don&#39;t have to enable that just because of your webmail users. To fix it, just do:
sudo /etc/squirrelmail/config/config.pl
And set Server Settings &amp;gt; Update IMAP Settings &amp;gt; Authentication type &amp;gt; cram-md5. There are a bunch of other useful settings there that should be checked as well. This must be mentioned in the docs as well.</description>
    </item>
    
    <item>
      <title>Final Thoughts on LaTeX</title>
      <link>https://unflyingobject.com/posts/final-thoughts-on-latex/</link>
      <pubDate>Sat, 18 Nov 2006 15:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/final-thoughts-on-latex/</guid>
      <description>Was just looking to find a nice clean document format for my thesis and stumbled on this Apple Blog article.
I think LaTeX is mostly useful in two situations:
 You have to write a lot of math equations Your language can be written in 7-bit ASCII and you have someone else to do the layouts for you (like in books etc)  Why LaTeX is NOT suited for 99,9% of users:  It&#39;s difficult to learn and there&#39;s a ton of useless crap you have to remember to do.</description>
    </item>
    
    <item>
      <title>JSINF (Just So&#39;s I Never Forget) vol 2</title>
      <link>https://unflyingobject.com/posts/jsinf-just-sos-i-never-forget-vol-2/</link>
      <pubDate>Thu, 16 Nov 2006 13:15:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/jsinf-just-sos-i-never-forget-vol-2/</guid>
      <description>To send a command to the background and ignore all output:
&amp;gt; command &amp;gt; /dev/null 2 &amp;gt; &amp;amp;1 &amp;amp;  </description>
    </item>
    
    <item>
      <title>client-error-not-possible</title>
      <link>https://unflyingobject.com/posts/client-error-not-possible/</link>
      <pubDate>Wed, 15 Nov 2006 14:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/client-error-not-possible/</guid>
      <description>Talk about an ambiguous error message! The CUPS docs basically say this could mean anything. Well, this time the fix was actually pretty logical, after turning logging to debug level, /var/log/cups/error_log had this to say:
D [15/Nov/2006:17:19:55 +0200] [Job 8] Unknown device: cdj890
Mmkay, I guess I picked the wrong PPD. Indeed, setting it to &amp;ldquo;Foomatic/hpijs (recommended)&amp;rdquo; fixed the problem. Why the initial error couldn&#39;t include &amp;ldquo;Uknown device: cdj890&amp;rdquo; I will never understand&amp;hellip;</description>
    </item>
    
    <item>
      <title>Using MSN with iChat server</title>
      <link>https://unflyingobject.com/posts/using-msn-with-ichat-server/</link>
      <pubDate>Tue, 14 Nov 2006 02:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/using-msn-with-ichat-server/</guid>
      <description>Finally finished that piece on getting the iChat server to work with MSN. It&#39;s available for download here. (450kB PDF)</description>
    </item>
    
    <item>
      <title>Setting Up a Safety Harness</title>
      <link>https://unflyingobject.com/posts/setting-up-a-safety-harness/</link>
      <pubDate>Sun, 12 Nov 2006 01:12:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/setting-up-a-safety-harness/</guid>
      <description>Changing IP-s is sometimes a risky business. Especially if your server&#39;s behind a firewall, in another country, across a great body of water. So here&#39;s a little backup strategy to use in case something does go bad:
&amp;gt; sudo at now + 1 hour &amp;gt;networksetup -setmanual &amp;quot;Built-in Ethernet&amp;quot; youroldip youroldnetmask youroldrouter &amp;gt; Ctrl -D  That way, if all goes to hell, it should go back to the previous state after an hour.</description>
    </item>
    
    <item>
      <title>AppleScript Tidbits</title>
      <link>https://unflyingobject.com/posts/applescript-tidbits/</link>
      <pubDate>Sat, 11 Nov 2006 15:23:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/applescript-tidbits/</guid>
      <description>AppleScript URL protocol support
Getting the home directory:
set theHomeDir to the POSIX path of home directory of (system info)  Getting and setting the clipboard:
set whatever to the clipboard set the clipboard to &amp;quot;whatever&amp;quot;  Encoding URLs Personally, I think you&#39;re best off just piping it through PHP:
do shell script &amp;quot;echo myurl | /usr/bin/php -r \&amp;quot;urlencode(fgets(STDIN));\&amp;quot;&amp;quot;  Bu there&#39;s also some info on Apple&#39;s website.
How does ScriptEditor know which app is scriptable?</description>
    </item>
    
    <item>
      <title>Charting spam</title>
      <link>https://unflyingobject.com/posts/charting-spam/</link>
      <pubDate>Thu, 09 Nov 2006 10:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/charting-spam/</guid>
      <description>This actually did make it to afp548.com, but I&#39;m putting it up here also in the hopes that it might come in useful for someone else too:
One way to train the spam filter that comes with OS X Server (10.4) is by setting up two accounts - &amp;ldquo;junkmail&amp;rdquo; and &amp;ldquo;notjunkmail&amp;rdquo; and redirecting all spam and false positives to them accordingly. This is all documented on page 52 of the Mail Service manual.</description>
    </item>
    
    <item>
      <title>When Stuff Just Works</title>
      <link>https://unflyingobject.com/posts/when-stuff-just-works/</link>
      <pubDate>Tue, 07 Nov 2006 22:42:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/when-stuff-just-works/</guid>
      <description>Isn&#39;t it great when sometimes things just work? I think CUPS is one of these things. It took me a week with Solaris to finally understand that the reason my parallel printer wouldn&#39;t work is because even the parallel port didn&#39;t. Well, whatever.
Just installed Debian (from the 180 MB netinstall), selected &amp;ldquo;print server&amp;rdquo; as the basic package selection, pushed some buttons, watched some TV. Configured networking (/etc/network/interfaces) and added the printer: lpadmin -p DeskJet -v parallel:/dev/lp0 -P /usr/share/ppd/HP/HP-DeskJet_890C-cdj890.</description>
    </item>
    
    <item>
      <title>Scalability</title>
      <link>https://unflyingobject.com/posts/scalability/</link>
      <pubDate>Tue, 07 Nov 2006 17:21:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/scalability/</guid>
      <description>Scalable - you see the word in every other software description nowadays. But what the heck does it actually mean? Well, the Oxford dictionary has this to say:
 scalable |Ã‹ÂˆskÃ„ÂlÃ‰Â™bÃ‰Â™l| |Ã‹ÂŒskeÃ‰ÂªlÃ‰Â™bÃ‰Â™l| |Ã‹ÂŒskeÃ‰ÂªlÃ‰Â™b(Ã‰Â™)l|adjective1 able to be scaled or climbed.2 able to be changed in size or scale : scalable fonts.Ã¢Â€Â¢ (of a computing process) able to be used or produced in a range of capabilities : it is scalable across a range of systems.</description>
    </item>
    
    <item>
      <title>Saw Monster House</title>
      <link>https://unflyingobject.com/posts/saw-monster-house/</link>
      <pubDate>Sun, 05 Nov 2006 11:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/saw-monster-house/</guid>
      <description>A thoroughly enjoyable animation. And a truly creepy one too. It&#39;s fun to see someone else besides Pixar handle character animation so well.
The animation style itself was quite different from Pixar&#39;s though. Using much more mocap whereas Pixar&#39;s stuff is still a great deal hand-animated.
The mocap worked really well here because it didn&#39;t try to match human movement down to the slightest detail, choosing a more stopmotion-style instead. I&#39;ve always thought of 3D CG as the next generation of stopmotion/puppeteering, as opposed to hand-drawn, so I think it&#39;s a really good way to go.</description>
    </item>
    
    <item>
      <title>Automate Out-of-Office Reply Toggling</title>
      <link>https://unflyingobject.com/posts/automate-out-of-office-reply-toggling/</link>
      <pubDate>Sat, 04 Nov 2006 16:43:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/automate-out-of-office-reply-toggling/</guid>
      <description>This one actually made it to macosxhints:
If there&#39;s one thing that computers are better at than humans, it&#39;s remembering things. Take for example the typical Out Of Office email reply - you go on vacation and set a rule in Mail.app to automatically respond of your absence to any email with a certain criteria. Then you come back and a day or two later remember to turn the notification back off again.</description>
    </item>
    
    <item>
      <title>DigiExpo 2006</title>
      <link>https://unflyingobject.com/posts/digiexpo-2006/</link>
      <pubDate>Fri, 03 Nov 2006 23:01:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/digiexpo-2006/</guid>
      <description>DigiExpo&amp;lsquo;s the biggest digital entertainment show in Finland. I must say, as much as I generally try to avoid these sc &amp;ldquo;general purpose&amp;rdquo; fairs, this one was actually fun. Probably a lot of that excitement had to do with the console generation shift that&#39;s going on right now. Also, the &amp;ldquo;confusion of the HD transition&amp;rdquo; might have something to do with it.
Got to try the Wii controller which I must say felt quite odd and nonsensical.</description>
    </item>
    
    <item>
      <title>Flannel 1.0</title>
      <link>https://unflyingobject.com/posts/flannel-10/</link>
      <pubDate>Fri, 03 Nov 2006 12:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/flannel-10/</guid>
      <description>This isn&#39;t much of a release announcement since it&#39;s not even available for download yet, but Flannel&#39;s demo page is finally up now. This is all part of a not-so-elaborate scheme to get Flannel out there in the hands of the users. Not knowing the current state of true WYSIWYG publishers out there, I still think it could be very useful for people who just want their stuff online quickly and easily.</description>
    </item>
    
    <item>
      <title>Cool TEDTalks</title>
      <link>https://unflyingobject.com/posts/cool-tedtalks/</link>
      <pubDate>Tue, 31 Oct 2006 19:55:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/cool-tedtalks/</guid>
      <description>David Pogue Ze Frank Jeff Han Nicholas Negroponte</description>
    </item>
    
    <item>
      <title>BlenderCon 2006</title>
      <link>https://unflyingobject.com/posts/blendercon-2006/</link>
      <pubDate>Tue, 24 Oct 2006 10:35:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/blendercon-2006/</guid>
      <description>&amp;hellip; was amazing. Met some very nice people there. Thanks to all of You! Will definitely try to be back next year, although I&#39;m still alittle woozy from all of it. Not sure if I could go tomorrow&amp;hellip; 1/5 of the work is still to be done&amp;hellip; I also put up some photos of the event (unfortunately didn&#39;t have time to take many).
For future reference Some words about the AV production.</description>
    </item>
    
    <item>
      <title>Aging with Photoshop</title>
      <link>https://unflyingobject.com/posts/aging-with-photoshop/</link>
      <pubDate>Wed, 18 Oct 2006 20:26:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/aging-with-photoshop/</guid>
      <description>http://www.photoshoplab.com/aging-people.html
Oh, and don&#39;t forget the &amp;ldquo;saucy&amp;rdquo; search engine!</description>
    </item>
    
    <item>
      <title>The Sony HVR A1E</title>
      <link>https://unflyingobject.com/posts/the-sony-hvr-a1e/</link>
      <pubDate>Sun, 15 Oct 2006 11:50:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-sony-hvr-a1e/</guid>
      <description>The HVR A1E is a HDV camera from Sony that packs alot of features in a small package. Only been able to play with it for two days, but here goes:
Pros:
 Very compact form factor, nice sturdy body Very nice image quality Two-channel XLR input module included DV, HDV and DVCAM (DV but faster) support, real 16:9 (anamorphic) Touchscreen menu Works pretty well with FCP (although getting HDV to work takes some time always&amp;hellip;) A lot of configuration options  Cons:</description>
    </item>
    
    <item>
      <title>More Useful Articles</title>
      <link>https://unflyingobject.com/posts/more-useful-articles/</link>
      <pubDate>Sat, 14 Oct 2006 12:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/more-useful-articles/</guid>
      <description>Your Mac won&#39;t start up in Mac OS X (Mac OS X 10.3.9 or earlier) TN2123: Anatomy of a Crash Log</description>
    </item>
    
    <item>
      <title>Are a users emails deleted with the user?</title>
      <link>https://unflyingobject.com/posts/are-a-users-emails-deleted-with-the-user/</link>
      <pubDate>Thu, 12 Oct 2006 16:02:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/are-a-users-emails-deleted-with-the-user/</guid>
      <description>Yes. Whenever you delete someone from WM, this line appears in system.log: root : TTY=unknown ; PWD=/ ; USER=cyrusimap ; COMMAND=/usr/bin/cyrus/bin/ipurge -f -b 1 user/untitled_3</description>
    </item>
    
    <item>
      <title>Shadow Girl</title>
      <link>https://unflyingobject.com/posts/shadow-girl/</link>
      <pubDate>Thu, 12 Oct 2006 14:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/shadow-girl/</guid>
      <description>http://koutuk.blogspot.com/2006/10/shadow-girl.html</description>
    </item>
    
    <item>
      <title>Good to know</title>
      <link>https://unflyingobject.com/posts/good-to-know/</link>
      <pubDate>Tue, 10 Oct 2006 20:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/good-to-know/</guid>
      <description>How Finder lists items that are sorted by name (Mac OS X)</description>
    </item>
    
    <item>
      <title>Electricity over IP</title>
      <link>https://unflyingobject.com/posts/electricity-over-ip/</link>
      <pubDate>Mon, 09 Oct 2006 13:35:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/electricity-over-ip/</guid>
      <description>and other Funnny IETF RFCs</description>
    </item>
    
    <item>
      <title>Creating users</title>
      <link>https://unflyingobject.com/posts/creating-users/</link>
      <pubDate>Sun, 08 Oct 2006 19:54:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/creating-users/</guid>
      <description>useradd -g staff -c &amp;ldquo;Firstname Lastname&amp;rdquo; -d /export/home/username -m -s /bin/bash username passwd username
Silly that Solaris comes with root enabled. And then says setting a password is optional (I thought it meant not enabling the account at all). Solaris is weird (and not very pretty either).</description>
    </item>
    
    <item>
      <title>If it smashes down</title>
      <link>https://unflyingobject.com/posts/if-it-smashes-down/</link>
      <pubDate>Wed, 04 Oct 2006 21:18:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/if-it-smashes-down/</guid>
      <description>Weird but true: my small server was crashing intermittently for seemingly no apparent reason. After turning off the Software Update server that I simply didn&#39;t need anymore all has been well again&amp;hellip;</description>
    </item>
    
    <item>
      <title>Which sportscar are You?</title>
      <link>https://unflyingobject.com/posts/which-sportscar-are-you/</link>
      <pubDate>Thu, 28 Sep 2006 11:15:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/which-sportscar-are-you/</guid>
      <description>http://www.tomorrowland.us/sportscar/</description>
    </item>
    
    <item>
      <title>Editing A Scanner Darkly</title>
      <link>https://unflyingobject.com/posts/editing-a-scanner-darkly/</link>
      <pubDate>Thu, 28 Sep 2006 10:11:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/editing-a-scanner-darkly/</guid>
      <description>Nothing about Rotoshop. I must say I&#39;m surprised it was cut on Avid. But nevertheless, here&#39;s a look at how they pulled it off.</description>
    </item>
    
    <item>
      <title>Turn Web Performance Cache Off!</title>
      <link>https://unflyingobject.com/posts/turn-web-performance-cache-off/</link>
      <pubDate>Wed, 27 Sep 2006 20:24:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/turn-web-performance-cache-off/</guid>
      <description>The documentation says it&#39;s only good for static content anyways. The weird port 16080 is weird too. The docs also said to put static stuff on a different vhost and enable cache on that. Pretty cool idea.</description>
    </item>
    
    <item>
      <title>Email Addiction</title>
      <link>https://unflyingobject.com/posts/email-addiction/</link>
      <pubDate>Wed, 27 Sep 2006 09:43:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/email-addiction/</guid>
      <description>It seems I&amp;lsquo;m not alone</description>
    </item>
    
    <item>
      <title>Find out Correct Base Install Permissions</title>
      <link>https://unflyingobject.com/posts/find-out-correct-base-install-permissions/</link>
      <pubDate>Mon, 25 Sep 2006 19:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/find-out-correct-base-install-permissions/</guid>
      <description>Found this little nugget of information while going through the Package Maker help:
lsbom -p MUGsf /Library/Receipts/BaseSystem.pkg/Contents/Archive.bom</description>
    </item>
    
    <item>
      <title>World&#39;s Highest Standard of Living</title>
      <link>https://unflyingobject.com/posts/worlds-highest-standard-of-living/</link>
      <pubDate>Wed, 20 Sep 2006 23:24:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/worlds-highest-standard-of-living/</guid>
      <description>An ironic photo taken during the Great Depression.</description>
    </item>
    
    <item>
      <title>&#34;Computer Randomly Plays Classical Music&#34;</title>
      <link>https://unflyingobject.com/posts/computer-randomly-plays-classical-music/</link>
      <pubDate>Mon, 18 Sep 2006 15:19:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/computer-randomly-plays-classical-music/</guid>
      <description>http://support.microsoft.com/default.aspx?scid=kb;en-us;261186</description>
    </item>
    
    <item>
      <title>Make sure to quit your editor!</title>
      <link>https://unflyingobject.com/posts/make-sure-to-quit-your-editor/</link>
      <pubDate>Mon, 18 Sep 2006 09:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/make-sure-to-quit-your-editor/</guid>
      <description>I&#39;ve noticed that if you just disconnect without first closing nano, it will be eating up all your CPU the next time you connect. I&#39;ve seen this on alot of different servers with 10.4.x.
This might be OK with other editors, but is still a good thing to keep in mind.</description>
    </item>
    
    <item>
      <title>Apache VirtualHosts</title>
      <link>https://unflyingobject.com/posts/apache-virtualhosts/</link>
      <pubDate>Sun, 17 Sep 2006 15:27:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/apache-virtualhosts/</guid>
      <description>Was finally able to have the same site respond to different aadresses differently: http://httpd.apache.org/docs/2.0/vhosts/examples.html
Just check /etc/httpd/sites/virtual_host_global.conf and make sure it looks like what&#39;s described in the article. Rearranging them in the Sites list also seems to help.</description>
    </item>
    
    <item>
      <title>Warming</title>
      <link>https://unflyingobject.com/posts/warming/</link>
      <pubDate>Fri, 15 Sep 2006 15:07:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/warming/</guid>
      <description>Maybe there&#39;s something to global warming after all: BBC NEWS | Science/Nature | Drastic shrinkagte in Arctic ice</description>
    </item>
    
    <item>
      <title>SQLite 3.3.7 Package</title>
      <link>https://unflyingobject.com/posts/sqlite-337-package/</link>
      <pubDate>Tue, 12 Sep 2006 16:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sqlite-337-package/</guid>
      <description>Available here. Universal, no TCL extension.</description>
    </item>
    
    <item>
      <title>Subversion 1.4 Package</title>
      <link>https://unflyingobject.com/posts/subversion-14-package/</link>
      <pubDate>Mon, 11 Sep 2006 19:54:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/subversion-14-package/</guid>
      <description>Available here. Built as Universal binary. Also includes SVN book PDF. Installs into /usr/local, no Apache support (wouldn&#39;t work with 1.3 anyways).</description>
    </item>
    
    <item>
      <title>A Random Quote For Site Slogan</title>
      <link>https://unflyingobject.com/posts/a-random-quote-for-site-slogan/</link>
      <pubDate>Sat, 09 Sep 2006 12:28:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-random-quote-for-site-slogan/</guid>
      <description>window.onload = function() { var quotes = [&amp;quot;I wanna be a racecar passenger.&amp;quot;, &amp;quot;Alright, you&#39;re a cook - can you farm?&amp;quot;]; var i = Math.floor(Math.random()*quotes.length); document.getElementsByTagName(&#39;h2&#39;)[0].innerHTML = &#39;&amp;quot;&#39; + quotes[i] + &#39;&amp;quot;&#39;; }  Don&#39;t forget to add blank lines before and after the JS!</description>
    </item>
    
    <item>
      <title>A Teacher&#39;s Pet</title>
      <link>https://unflyingobject.com/posts/a-teachers-pet/</link>
      <pubDate>Fri, 08 Sep 2006 11:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-teachers-pet/</guid>
      <description>Punk made it to the Staff Favorites list. It will also be included on the cover CD of Univers Mac, a French Mac Magazine! Thanks!</description>
    </item>
    
    <item>
      <title>Tiger Server Administration eBook</title>
      <link>https://unflyingobject.com/posts/tiger-server-administration-ebook/</link>
      <pubDate>Fri, 08 Sep 2006 08:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/tiger-server-administration-ebook/</guid>
      <description>http://www.oreilly.com/catalog/macosxtigersa/</description>
    </item>
    
    <item>
      <title>nmap and wget packages</title>
      <link>https://unflyingobject.com/posts/nmap-and-wget-packages/</link>
      <pubDate>Thu, 07 Sep 2006 17:44:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/nmap-and-wget-packages/</guid>
      <description>Binaries as PKG available here and here. Both universal.
Making them was really easy. Just create a sparse image, and ./configure with &amp;ndash;prefix=/Volumes/MyImage Then set that as the root in PackageMaker and check perms etc.</description>
    </item>
    
    <item>
      <title>Programming Quotations</title>
      <link>https://unflyingobject.com/posts/programming-quotations/</link>
      <pubDate>Tue, 05 Sep 2006 20:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/programming-quotations/</guid>
      <description>I like quotes. There&#39;s something about them - they&#39;re kinda like crystallized ideas if you will:
http://www.eskimo.com/%7Ehottub/software/programming_quotes.html</description>
    </item>
    
    <item>
      <title>sortUsingSelector</title>
      <link>https://unflyingobject.com/posts/sortusingselector/</link>
      <pubDate>Tue, 05 Sep 2006 10:09:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/sortusingselector/</guid>
      <description>After spending 4 days with the problem of sorting an array of NSDictionaries (!!) using every kind of method imaginable, I finally found the solution:
You can&#39;t use sortUsingSelector because that operates on the object in the array (in this case an NSDictionary). That explains the countless (&amp;quot;[CFDictionary compareScores] selector not recognized etc&amp;hellip;&amp;quot;) I was getting. Phew
So use sortUsingFunction instead. And as the guys at cocoadev so eloquently showed:</description>
    </item>
    
    <item>
      <title>HIFF 2006 Coming</title>
      <link>https://unflyingobject.com/posts/hiff-2006-coming/</link>
      <pubDate>Sun, 03 Sep 2006 22:55:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/hiff-2006-coming/</guid>
      <description>Time to start compiling a list:
  A Scanner Darkly
  The Science of Sleep
  Art School Confidential
  Borat: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan
  Tonari no Totoro
  </description>
    </item>
    
    <item>
      <title>Empty Trash from Automator</title>
      <link>https://unflyingobject.com/posts/empty-trash-from-automator/</link>
      <pubDate>Sun, 03 Sep 2006 14:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/empty-trash-from-automator/</guid>
      <description>You&#39;ll notice there&#39;s no &amp;ldquo;Empty the trash&amp;rdquo; Automator action. There are those who will try to sell you this action. But why? Add Automator &amp;gt; Run AppleScript action and:
tell application &amp;quot;Finder&amp;quot; empty trash end tell  Can I have some money now? ;-)</description>
    </item>
    
    <item>
      <title>On Top Of the World!</title>
      <link>https://unflyingobject.com/posts/on-top-of-the-world/</link>
      <pubDate>Thu, 31 Aug 2006 22:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/on-top-of-the-world/</guid>
      <description></description>
    </item>
    
    <item>
      <title>UnitInfo and Punk Released</title>
      <link>https://unflyingobject.com/posts/unitinfo-and-punk-released/</link>
      <pubDate>Thu, 31 Aug 2006 09:37:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/unitinfo-and-punk-released/</guid>
      <description>Available on the Software page. Huge thanks to Martin for the graphics and UI design!</description>
    </item>
    
    <item>
      <title>Software Warranty</title>
      <link>https://unflyingobject.com/posts/software-warranty/</link>
      <pubDate>Wed, 30 Aug 2006 13:28:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/software-warranty/</guid>
      <description>I find it disturbing that most F/OSS programs have a big disclaimer about not having any warranty. It leaves the impression that closed commercial programs do, which 99,99% of time isn&#39;t the case. :)</description>
    </item>
    
    <item>
      <title>Replacing Apple&#39;s PHP</title>
      <link>https://unflyingobject.com/posts/replacing-apples-php/</link>
      <pubDate>Tue, 29 Aug 2006 17:08:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/replacing-apples-php/</guid>
      <description>Needed to get gd2 support so thought why not as well update to latest 4.x PHP:
For JPG support, you&#39;ll ned libjpeg which won&#39;t compile directly. From the instructions here I found that you should simply:
&amp;gt; export MACOSX_DEPLOYMENT_TARGET=10.4 &amp;gt; ln -s `which glibtool` ./libtool &amp;gt; cp /usr/share/libtool/config.sub . &amp;gt; cp /usr/share/libtool/config.guess .  then just &amp;ldquo;configure &amp;ndash;enable-shared&amp;rdquo; etc
LIBPNG
&amp;gt;curl -O http://surfnet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.12.tar.gz  Don&#39;t bother with the no-config option, it can&#39;t find ZLIB.</description>
    </item>
    
    <item>
      <title>What&#39;s SourceCache?</title>
      <link>https://unflyingobject.com/posts/whats-sourcecache/</link>
      <pubDate>Tue, 29 Aug 2006 16:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/whats-sourcecache/</guid>
      <description>Working with different tools in OS X, you&#39;ll often notice these paths show up in console.log: /SourceCache/JavaScriptCore/JavaScriptCore-418.3/bindings/objc/WebScriptObject.mm /SourceCache/apache_mod_php/apache_mod_php-18.4/php/configure
What are they? My guess is they&#39;re the development environment directories at Apple.</description>
    </item>
    
    <item>
      <title>KDX MacUnix</title>
      <link>https://unflyingobject.com/posts/kdx-macunix/</link>
      <pubDate>Mon, 28 Aug 2006 09:20:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/kdx-macunix/</guid>
      <description>Copy app to /Applications/KDXServer1600, try and run it. Define shares and link folders if necessary:
ln -s /my/shared/folder /Applications/KDXServer1600/Bases/Default/Downloads.
Create a LaunchDaemon (from haxial.com):
sudo nano /Library/LaunchDaemons/com.haxial.kdxserver.plist
Load the daemon: $ launchctl load -w /Library/LaunchDaemons/com.haxial.kdxserver.plist $ launchctl start com.haxial.kdxserver
http://developer.apple.com/macosx/launchd.html man 5 launchd.plist</description>
    </item>
    
    <item>
      <title>A Better Way</title>
      <link>https://unflyingobject.com/posts/a-better-way/</link>
      <pubDate>Sat, 26 Aug 2006 19:39:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/a-better-way/</guid>
      <description>I was really excited about the idea of making a widget that&#39;d ping servers. Finally some use for Dashboard. I was already running GeekTool, but thanks to pea, discovered this. Just add a shell console with this as the contents: &amp;ldquo;ping -qo address&amp;rdquo; and set some icons. Perfect!</description>
    </item>
    
    <item>
      <title>Simply Brilliant</title>
      <link>https://unflyingobject.com/posts/simply-brilliant/</link>
      <pubDate>Wed, 23 Aug 2006 10:33:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/simply-brilliant/</guid>
      <description></description>
    </item>
    
    <item>
      <title>When Cron Gets Out of Hands</title>
      <link>https://unflyingobject.com/posts/when-cron-gets-out-of-hands/</link>
      <pubDate>Tue, 22 Aug 2006 22:13:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/when-cron-gets-out-of-hands/</guid>
      <description>I noticed cron had been churning away at 82% CPU for the past 140 hours (!). sc_usage and fs_usage came up empty (with the latter crashing) - so did ktrace. Remembering that &amp;ldquo;crontab -e -u someuser&amp;rdquo; hung on &amp;ldquo;Installing new crontab&amp;rdquo;, I checked the tabs dir for any temp files. There were many of them. Ultimately, this seemed to help:
$ rm -rf /var/cron/tabs/tmp.* $ launchctl stop com.vix.cron
Back to using just /etc/crontab!</description>
    </item>
    
    <item>
      <title>pidof</title>
      <link>https://unflyingobject.com/posts/pidof/</link>
      <pubDate>Tue, 22 Aug 2006 13:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/pidof/</guid>
      <description>Here&#39;s one way of recreating that handy utility. I&#39;m assuming that the utility is always run after the program we&#39;re looking for, so it has a smaller PID
fiBook:~ filipp$ ps A | grep something | grep -v grep | awk &#39;{print $1;}&#39;</description>
    </item>
    
    <item>
      <title>MacBook Memory Config Benchmarks</title>
      <link>https://unflyingobject.com/posts/macbook-memory-config-benchmarks/</link>
      <pubDate>Fri, 18 Aug 2006 14:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/macbook-memory-config-benchmarks/</guid>
      <description>Using XBench and CineBench, it&#39;s apparent that MacBook&#39;s are in fact faster when using two DIMMs of the same size than using a single bigger DIMM. The configuration difference seems to have the biggest impact in graphics performance. Here&#39;s a link to the XBench comparison.
For reference, here&#39;s my PowerBook CineBench 9.5 results:
Processor : 1,5Ghz PB G4 1,25GB RAM MHz : 1500 Number of CPUs : 1 Operating System : 10.</description>
    </item>
    
    <item>
      <title>Repair Permissions != Chumbug</title>
      <link>https://unflyingobject.com/posts/repair-permissions-chumbug/</link>
      <pubDate>Wed, 16 Aug 2006 16:59:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/repair-permissions-chumbug/</guid>
      <description>Contrary to popular belief, Disk Utility&#39;s Repair Permissions function can be very helpful. Here&#39;s an example:
Software Update wouldn&#39;t work (&amp;ldquo;There were errors bla-bla-bla). Installing from PKG gave a better error (checking from install log) something about broken DiscRecording Frameworks. Repair Permissions had this to say:
Symbolic link ./System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/Current-&amp;gt;A repaired Symbolic link ./System/Library/Frameworks/DVDPlayback.framework/Versions/Current-&amp;gt;A repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/DiscRecording-&amp;gt;Versions/Current/DiscRecording repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Frameworks-&amp;gt;Versions/Current/Frameworks repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Resources-&amp;gt;Versions/Current/Resources repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Versions/A/Frameworks/DiscRecordingContent.framework/Versions/Current-&amp;gt;A repaired Symbolic link .</description>
    </item>
    
    <item>
      <title>Getting Stuff Into MySQL</title>
      <link>https://unflyingobject.com/posts/getting-stuff-into-mysql/</link>
      <pubDate>Mon, 14 Aug 2006 19:29:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/getting-stuff-into-mysql/</guid>
      <description>Forget clumsy scripts to load SQL files into MySQL. Here&#39;s how it worked for me:
check your php.ini &amp;ldquo;upload_max_filesize&amp;rdquo;
$newFile = move_uploaded file ($FILES[&#39;yourfile&#39;][&#39;tmp_name&#39;], &#39;/var/tmp/yourfile&#39;); $sql = &amp;quot;LOAD DATA INFILE &#39;$newFile&#39; INTO TABLE db.table FIELDS TERMINATED BY &#39;,&#39; ENCLOSED BY &#39;\&amp;quot;&#39; ESCAPED BY &#39;\&amp;quot;&#39; LINES TERMINATED BY &#39;\r&#39;&amp;quot;;  Strangely, MySQL 4.x doesn&#39;t like the &amp;ldquo;ENCLOSED BY&amp;rdquo; statement (it works, but will only import the first row)</description>
    </item>
    
    <item>
      <title>Auto Junkmail Deletion</title>
      <link>https://unflyingobject.com/posts/auto-junkmail-deletion/</link>
      <pubDate>Mon, 14 Aug 2006 17:38:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/auto-junkmail-deletion/</guid>
      <description>If You&#39;re using the &amp;ldquo;junkmail@yourdomain&amp;rdquo; technique to teach your server junk, You can make the server auto-delete learned stuff like this:
$ sudo bash $ export EDITOR=nano; crontab -e -u cyrusimap 30 13 * * * /usr/bin/cyrus/bin/ipurge -d 1 -f user/junkmail  and if &amp;ldquo;crontab -e&amp;rdquo; gives you grief (like hanging and not writing the file), then just edit /etc/crontab</description>
    </item>
    
    <item>
      <title>Back To Basics vol 2</title>
      <link>https://unflyingobject.com/posts/back-to-basics-vol-2/</link>
      <pubDate>Tue, 01 Aug 2006 00:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/back-to-basics-vol-2/</guid>
      <description>Just so&#39;s I don&#39;t ever forget this again. To set up SSH without passwords: mkdir ~/.ssh ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub me@server:~/me/.ssh/authorized_keys2 man ssh</description>
    </item>
    
    <item>
      <title>WebDAV chroot</title>
      <link>https://unflyingobject.com/posts/webdav-chroot/</link>
      <pubDate>Sat, 29 Jul 2006 13:57:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/webdav-chroot/</guid>
      <description>Well, there&#39;s really no such thing. But you can make it work. In Server Admin, create a realm where you want your WebDAV home folders to be. Give Auth/Browse access only to an admin. Then just create something like /etc/httpd/sites/WebDavUsers.conf and add the following:
&amp;lt;Directory &amp;#34;/WebDAV/folder/username&amp;#34;&amp;gt; &amp;lt;LimitExcept GET HEAD OPTIONS&amp;gt; require user username &amp;lt;/LimitExcept&amp;gt; &amp;lt;/Directory&amp;gt; It seems that Digest authentication under OS X comes automagically from NetInfo which means we don&#39;t have to edit any password files.</description>
    </item>
    
    <item>
      <title>FTP Without Shell</title>
      <link>https://unflyingobject.com/posts/ftp-without-shell/</link>
      <pubDate>Wed, 26 Jul 2006 01:17:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/ftp-without-shell/</guid>
      <description>10.4 server won&#39;t allow a user to log in without a &amp;ldquo;valid&amp;rdquo; shell. So here&#39;s a workaround (many thanks to unixgeek!!):
&amp;gt; /etc/shells  Set &amp;lsquo;/usr/bin/false&amp;rsquo; as the user&#39;s shell According to some sources, this works also for SFTP, but I haven&#39;t been able to confirm this.</description>
    </item>
    
    <item>
      <title>Back To the Basics</title>
      <link>https://unflyingobject.com/posts/back-to-the-basics/</link>
      <pubDate>Wed, 05 Jul 2006 07:46:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/back-to-the-basics/</guid>
      <description>  echo &amp;ldquo;sudo servaradmin stop $1; sudo serveradin start $1&amp;rdquo; &amp;gt; /usr/bin/local/restart
  http://www.ibiblio.org/pub/Linux/docs/howto/DNS-HOWTO
  http://www.macdevcenter.com/pub/a/mac/2003/04/15/bind.html?page=1
  </description>
    </item>
    
    <item>
      <title>The Intel Pro-1000 GT NIC won&#39;t work with OS X</title>
      <link>https://unflyingobject.com/posts/the-intel-pro-1000-gt-nic-wont-work-with-os-x/</link>
      <pubDate>Wed, 05 Jul 2006 07:45:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/the-intel-pro-1000-gt-nic-wont-work-with-os-x/</guid>
      <description>with neither 10.4.6 or 10.4.7. The older model did. The SmallTree drivers won&#39;t help.</description>
    </item>
    
    <item>
      <title>Troube With Quotas</title>
      <link>https://unflyingobject.com/posts/troube-with-quotas/</link>
      <pubDate>Sun, 02 Jul 2006 07:47:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/troube-with-quotas/</guid>
      <description>If Server Admin doesn&#39;t want to enable quotas, try this:
sudo rm /.quota.* &amp;gt; quotaon filesys &amp;gt; reboot  </description>
    </item>
    
    <item>
      <title>Attack of DNS vol 2</title>
      <link>https://unflyingobject.com/posts/attack-of-dns-vol-2/</link>
      <pubDate>Thu, 08 Jun 2006 15:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/attack-of-dns-vol-2/</guid>
      <description>Since 10.4.6 all services (it seems) require a FQDN to function. With a NAT-d IP this is ofcourse impossible. So to get servermgrd to cool down behind a NAT:
 Configure DNS service (just add your local IP, no MX etc) Enable DNS server Add server IP to DNS servers Add NAT router&#39;s IP to DNS servers  Then check
host localip host name.of.server sudo changeip -checkhostname  http://docs.info.apple.com/article.html?artnum=303697 http://lists.apple.com/archives/macos-x-server/2006/May/msg01265.html</description>
    </item>
    
    <item>
      <title>ApacheBench</title>
      <link>https://unflyingobject.com/posts/apachebench/</link>
      <pubDate>Sat, 03 Jun 2006 07:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/apachebench/</guid>
      <description>Interesting differences running ab -n 1000 -c 10 http://localhost/
1.5Ghz PowerBook G4 running Apache 1.3.3 OS X 10.4.6 Server Software: Apache/1.3.33 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 1456 bytes Concurrency Level: 10 Time taken for tests: 2.432 seconds Complete requests: 1000 Failed requests: 0 Broken pipe errors: 0 Total transferred: 1867000 bytes HTML transferred: 1456000 bytes Requests per second: 411.18 [#/sec] (mean) Time per request: 24.</description>
    </item>
    
    <item>
      <title>Now where did I put that server?</title>
      <link>https://unflyingobject.com/posts/now-where-did-i-put-that-server/</link>
      <pubDate>Sat, 03 Jun 2006 07:49:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/now-where-did-i-put-that-server/</guid>
      <description>&amp;gt;/System/Library/ServerSetup/sa_srchr 224.0.0.1  Sadly it only works with machines booted off the install disc. :(</description>
    </item>
    
    <item>
      <title>When (mail) disaster strikes!</title>
      <link>https://unflyingobject.com/posts/when-mail-disaster-strikes/</link>
      <pubDate>Sat, 03 Jun 2006 07:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/when-mail-disaster-strikes/</guid>
      <description>Backup everything (/var/imap, /var/spool/imap) , then run: sudo /usr/bin/cyrus/bin/reconstruct The &amp;ldquo;Repair&amp;rdquo; and &amp;ldquo;Reconstruct&amp;rdquo; buttons don&#39;t seem to do much in SA. :-/</description>
    </item>
    
    <item>
      <title>PHP weirdness</title>
      <link>https://unflyingobject.com/posts/php-weirdness/</link>
      <pubDate>Thu, 01 Jun 2006 07:50:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/php-weirdness/</guid>
      <description>This doesn&#39;t work as expected:
echo &amp;quot;foo:bar&amp;quot; | php -r &amp;quot;print str_replace(&#39;:&#39;,&#39;-&#39;,&#39;php://stdin&#39;);&amp;quot;  Must investigate. Maybe try with another machine&amp;hellip;
UPDATE:
echo &amp;quot;foo:bar&amp;quot; | php -r &amp;quot;print str_replace(&#39;:&#39;,&#39;-&#39;,trim(fgets(STDIN)));&amp;quot;  </description>
    </item>
    
    <item>
      <title>Is it just me or is it really WebDAV?</title>
      <link>https://unflyingobject.com/posts/is-it-just-me-or-is-it-really-webdav/</link>
      <pubDate>Thu, 01 Jun 2006 07:47:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/is-it-just-me-or-is-it-really-webdav/</guid>
      <description>When moving something to/from a WebDAV volume (such as an iDisk), try saving something to the desktop. Here, the file is saved but doesnt show up, neither on the desktop, nor by browsing the Desktop folder (in any view). Things get really weird when you &amp;ldquo;open file&amp;rdquo; from the Terminal, then Command-click on the title bar - suddenly the file just appears.
This actually happens in any folder.</description>
    </item>
    
    <item>
      <title>Review - Elephants Dream</title>
      <link>https://unflyingobject.com/posts/review-elephants-dream/</link>
      <pubDate>Sat, 13 May 2006 15:10:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/review-elephants-dream/</guid>
      <description>After receiving my copy yesterday and watching the movie and commentaries several times and without yet looking at what others have said, here&#39;s my completely subjective, non-technical review:
The movie First, the bad. Not all movies need a script to work but most do and that includes this one. At times it felt like the only thing keeping the story together was the fact that the characters were heading somewhere. You can also tell the absence of a script by the ending which in this case is very abrupt.</description>
    </item>
    
    <item>
      <title>Schools should encourage work publication</title>
      <link>https://unflyingobject.com/posts/schools-should-encourage-work-publication/</link>
      <pubDate>Wed, 10 May 2006 07:48:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/schools-should-encourage-work-publication/</guid>
      <description>Teachers rarely have time to give feedback, peers often just don&#39;t know what to say. So why not help students get feedback from somewhere else?</description>
    </item>
    
    <item>
      <title>From OSX-vnc to ARD</title>
      <link>https://unflyingobject.com/posts/from-osx-vnc-to-ard/</link>
      <pubDate>Sun, 23 Apr 2006 07:51:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/from-osx-vnc-to-ard/</guid>
      <description>$ SystemStarter -v stop VNC $ cd /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources $ ./kickstart -configure -access -privs -all -users admin $ ./kickstart -restart -agent -console $ ./kickstart -activate  </description>
    </item>
    
    <item>
      <title>Hush!</title>
      <link>https://unflyingobject.com/posts/hush/</link>
      <pubDate>Sat, 08 Apr 2006 07:53:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/hush/</guid>
      <description>To mute the mini during bedtime, add this to root&#39;s crontab (crontab -e or using the wonderful CronniX) serveradmin stop XGrid and then the reverse in the morning</description>
    </item>
    
    <item>
      <title>It&#39;s DNS again!</title>
      <link>https://unflyingobject.com/posts/its-dns-again/</link>
      <pubDate>Thu, 06 Apr 2006 07:53:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/its-dns-again/</guid>
      <description>Server Admin took really long to start up. Noticed that reverse DNS wasn&#39;t working: [filipp@Scruffy filipp]$ host 192.168.1.10 ;; connection timed out; no servers could be reached
Added server to my name servers list, all scrolls like butter again. :)</description>
    </item>
    
    <item>
      <title>Basic AuthConfig</title>
      <link>https://unflyingobject.com/posts/basic-authconfig/</link>
      <pubDate>Sun, 26 Mar 2006 13:31:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/basic-authconfig/</guid>
      <description>To enable per-user homedirectory authentication:
$ nano /Users/user/Sites.htaccess AuthUserFile /Users/user/.htpasswd AuthName &amp;quot;Palun anna parool&amp;quot; AuthType Basic require user username $ htpasswd -c .htpasswd username $ sudo nano /etc/httpd/httpd.conf AllowOverride AuthConfig $ sudo serveradmin stop web; sudo serveradmin start web  </description>
    </item>
    
    <item>
      <title>More On Spelling</title>
      <link>https://unflyingobject.com/posts/more-on-spelling/</link>
      <pubDate>Thu, 23 Mar 2006 14:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/more-on-spelling/</guid>
      <description>http://www.cocoabuilder.com/archive/message/cocoa/2005/2/4/127543</description>
    </item>
    
    <item>
      <title>Changing IPs</title>
      <link>https://unflyingobject.com/posts/changing-ips/</link>
      <pubDate>Thu, 16 Mar 2006 13:30:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/changing-ips/</guid>
      <description>Had to rearrange my IP setup due to a new router:
changeip /LDAPv3/127.0.0.1 192.168.0.111 192.168.1.10 oldhost newhost/usr/sbin/networksetup -setmanual &amp;quot;Built-in Ethernet&amp;quot; 192.168.1.10 255.255.255.0 192.168.1.1 </description>
    </item>
    
    <item>
      <title>Localtime</title>
      <link>https://unflyingobject.com/posts/localtime/</link>
      <pubDate>Mon, 20 Feb 2006 14:01:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/localtime/</guid>
      <description>For some weird reason this gets set incorrectly sometimes, so this helps: sudo ln -s /usr/share/zoneinfo/EET /etc/localtime</description>
    </item>
    
    <item>
      <title>Resizing FileVault Disk Images</title>
      <link>https://unflyingobject.com/posts/resizing-filevault-disk-images/</link>
      <pubDate>Thu, 16 Feb 2006 14:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/resizing-filevault-disk-images/</guid>
      <description>After installing a bigger drive:
 Log in as another admin user cd /Users/filevaultuser hdiutil resize -size 1t filevaultuser.sparseimage Give filevaultusers password  </description>
    </item>
    
    <item>
      <title>Apache 2.2</title>
      <link>https://unflyingobject.com/posts/apache-22/</link>
      <pubDate>Tue, 14 Feb 2006 14:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/apache-22/</guid>
      <description>There seems to be some problems with certain Apache 2.x configs under OS X (10.4 only?) where the connection would just randomly quit. One fix is to install 2.2
./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most --enable-ssl --with-ssl=/usr --enable-cgi --enable-mime-magic --enable-dav  </description>
    </item>
    
    <item>
      <title>Firebird RDBMS weirdness</title>
      <link>https://unflyingobject.com/posts/firebird-rdbms-weirdness/</link>
      <pubDate>Tue, 14 Feb 2006 14:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/firebird-rdbms-weirdness/</guid>
      <description>Installed the official binary http://prdownloads.sourceforge.net/firebird/Firebird-CS-1.5.1-MacOS.zip libgds.so is actually /Library/Frameworks/Firebird.framework/Versions/A/Firebird
A script (http://www.b-shock.org/macosx/firebird/) that gives a standard Firebird install:
#!/bin/bash mkdir /usr/local/firebird cd /usr/local/firebird ln -s /Library/Frameworks/Firebird.framework/Versions/A/Headers ./include ln -s /Library/Frameworks/Firebird.framework/Versions/A/Resources/bin ./bin ln -s /Library/Frameworks/Firebird.framework/Versions/A/Resources/examples ./examples mkdir lib cd lib ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.a ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.so ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.so.0 ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libib_util.so cd /usr/local/include ln -s /usr/local/firebird/include/* . cd /usr/local/lib ln -s /usr/local/firebird/lib/* . exit  </description>
    </item>
    
    <item>
      <title>Installing PHP 5.1.2</title>
      <link>https://unflyingobject.com/posts/installing-php-512/</link>
      <pubDate>Tue, 14 Feb 2006 14:05:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/installing-php-512/</guid>
      <description>These settings worked well for me:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv --with-openssl=/usr --with-zlib=/usr --with-mysql --with-libxml-dir=/usr/local/php --with-xsl=/usr/local/php --with-pdflib=/usr/local/php --with-png-dir=/usr/local/php --with-zlib-dir=/usr --with-ldap--with-iodbc=/usr --with-xmlrpc --with-expat-dir=/usr/local/php --with-iconv-dir=/usr --with-curl=/usr/local/php --enable-exif --enable-soap --enable-sockets --enable-calendar --with-bz2=/usr --enable-calendar --enable-memory-limit   nano -w /usr/local/php/lib/php.ini include_path .:
 </description>
    </item>
    
    <item>
      <title>Restoring WebLogs with Apache 2.2</title>
      <link>https://unflyingobject.com/posts/restoring-weblogs-with-apache-22/</link>
      <pubDate>Tue, 14 Feb 2006 14:04:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/restoring-weblogs-with-apache-22/</guid>
      <description>http://www.wmwweb.com/apache/tomcat/tomcat-connectors/jk/source/jk-1.2.15/jakarta-tomcat-connectors-1.2.15-src.tar.gz
./configure --with-apxs=/usr/local/apache2/bin/apxs &amp;gt; nano /usr/local/apache2/conf/httpd.conf ## WebLog JKWorkersFile /etc/httpd/workers.properties JKLogFile /var/log/httpd/mod_jk.log JKLogLevel error JKMount /*.jsp JBoss1 JKMount /servlet/* JBoss1 JKMount /examples/* JBoss1 JKMount /weblog/* blojsomworker JKMount /blojsom_resources/* blojsomworker  </description>
    </item>
    
    <item>
      <title>Upgrading to MySQL 5</title>
      <link>https://unflyingobject.com/posts/upgrading-to-mysql-5/</link>
      <pubDate>Fri, 10 Feb 2006 14:03:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/upgrading-to-mysql-5/</guid>
      <description>http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-standard-5.0.18-osx10.4-powerpc.dmg/from/pick#mirrors
G5 version (&amp;amp; RAM &amp;gt; 4GB) http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-standard-5.0.18-osx10.4-powerpc-64bit.dmg/from/pick#mirrors
&amp;gt; mkdir /Library/StartupItems/MySQLCOM &amp;gt; nano /Library/StartupItems/MySQLCOM/MySQLCOM #!/bin/sh ## # MySQL 5 Server ## . /etc/rc.common StartService () { if [ &amp;quot;${MYSQL:=-NO-}&amp;quot; = &amp;quot;-YES-&amp;quot; ]; then ConsoleMessage &amp;quot;Starting MySQL 5 Server&amp;quot; cd /usr/local/mysql ./bin/mysqld_safe &amp;amp; fi } StopService () { ConsoleMessage &amp;quot;Stopping MySQL 5 Server&amp;quot; PIDS=`ps ax | grep mysql | grep -v grep | awk &#39;{print $1}&#39;` for pid in $PIDS; do kill -KILL $pid done } RestartService () { StopService sleep 3 StartService } RunService &amp;quot;$1&amp;quot; &amp;gt; nano /Library/StartupItems/MySQLCOM/StartupParameters.</description>
    </item>
    
    <item>
      <title>Madeira</title>
      <link>https://unflyingobject.com/posts/madeira/</link>
      <pubDate>Tue, 06 Dec 2005 00:56:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/madeira/</guid>
      <description>&amp;hellip; kohta on ilmselt piisavalt inglise keeles kirjutatud seettõttu järgnev siis emakeeles. Mis seal ikka öelda - hämmastav. Hea, et kaamera kaasas oli, muidu oleks kogu reis tundunud nagu mingi nädala pikkuse unenäona.
Esimene laks on muidugi loodus - see lööb pahviks ja siis piilud iga hommik hotelli aknast välja, et kontrollida, et vaade ikka alles on.
Ööbisime Casino Park - nimelises hotellis mis näeb nii seest kui väljast välja nagu mingi vanakooli NSVL-i aegne jurakas (ja ilmselt seda ta ka on) - teenindus oli laitmatu ja paremat asukohta oleks raske olnud ette kujutada.</description>
    </item>
    
    <item>
      <title>Potential VM growth in DirectoryService</title>
      <link>https://unflyingobject.com/posts/potential-vm-growth-in-directoryservice/</link>
      <pubDate>Thu, 01 Jan 1970 02:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/potential-vm-growth-in-directoryservice/</guid>
      <description>Solution: http://david.codeferous.com/?p=216</description>
    </item>
    
    <item>
      <title></title>
      <link>https://unflyingobject.com/credits/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/credits/</guid>
      <description>Credits All characters typed by Filipp Lepalaan.
Published with Hugo using the SAM theme from Victoria Drake. Served by nginx running on FreeBSD, hosted by Tilaa.
Edited on a Mac using Visual Studio Code, TextMate, BBEdit or Sublime Text.</description>
    </item>
    
    <item>
      <title></title>
      <link>https://unflyingobject.com/posts/nginx-ssl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://unflyingobject.com/posts/nginx-ssl/</guid>
      <description>body { max-width: 980px; border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body { padding: 45px; } @font-face { font-family: fontawesome-mini; src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAzUABAAAAAAFNgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABwAAAAcZMzaOEdERUYAAAGIAAAAHQAAACAAOQAET1MvMgAAAagAAAA+AAAAYHqhde9jbWFwAAAB6AAAAFIAAAFa4azkLWN2dCAAAAI8AAAAKAAAACgFgwioZnBnbQAAAmQAAAGxAAACZVO0L6dnYXNwAAAEGAAAAAgAAAAIAAAAEGdseWYAAAQgAAAFDgAACMz7eroHaGVhZAAACTAAAAAwAAAANgWEOEloaGVhAAAJYAAAAB0AAAAkDGEGa2htdHgAAAmAAAAAEwAAADBEgAAQbG9jYQAACZQAAAAaAAAAGgsICJBtYXhwAAAJsAAAACAAAAAgASgBD25hbWUAAAnQAAACZwAABOD4no+3cG9zdAAADDgAAABsAAAAmF+yXM9wcmVwAAAMpAAAAC4AAAAusPIrFAAAAAEAAAAAyYlvMQAAAADLVHQgAAAAAM/u9uZ4nGNgZGBg4ANiCQYQYGJgBEJuIGYB8xgABMMAPgAAAHicY2Bm42OcwMDKwMLSw2LMwMDQBqGZihmiwHycoKCyqJjB4YPDh4NsDP+BfNb3DIuAFCOSEgUGRgAKDgt4AAB4nGNgYGBmgGAZBkYGEAgB8hjBfBYGCyDNxcDBwMTA9MHhQ9SHrA8H//9nYACyQyFs/sP86/kX8HtB9UIBIxsDXICRCUgwMaACRoZhDwA3fxKSAAAAAAHyAHABJQB/AIEAdAFGAOsBIwC/ALgAxACGAGYAugBNACcA/wCIeJxdUbtOW0EQ3Q0PA4HE2CA52hSzmZDGe6EFCcTVjWJkO4XlCGk3cpGLcQEfQIFEDdqvGaChpEibBiEXSHxCPiESM2uIojQ7O7NzzpkzS8qRqnfpa89T5ySQwt0GzTb9Tki1swD3pOvrjYy0gwdabGb0ynX7/gsGm9GUO2oA5T1vKQ8ZTTuBWrSn/tH8Cob7/B/zOxi0NNP01DoJ6SEE5ptxS4PvGc26yw/6gtXhYjAwpJim4i4/plL+tzTnasuwtZHRvIMzEfnJNEBTa20Emv7UIdXzcRRLkMumsTaYmLL+JBPBhcl0VVO1zPjawV2ys+hggyrNgQfYw1Z5DB4ODyYU0rckyiwNEfZiq8QIEZMcCjnl3Mn+pED5SBLGvElKO+OGtQbGkdfAoDZPs/88m01tbx3C+FkcwXe/GUs6+MiG2hgRYjtiKYAJREJGVfmGGs+9LAbkUvvPQJSA5fGPf50ItO7YRDyXtXUOMVYIen7b3PLLirtWuc6LQndvqmqo0inN+17OvscDnh4Lw0FjwZvP+/5Kgfo8LK40aA4EQ3o3ev+iteqIq7wXPrIn07+xWgAAAAABAAH//wAPeJyFlctvG1UUh+/12DPN1B7P3JnYjj2Ox4/MuDHxJH5N3UdaEUQLqBIkfQQioJWQ6AMEQkIqsPGCPwA1otuWSmTBhjtps2ADWbJg3EpIXbGouqSbCraJw7kzNo2dRN1cnXN1ZvT7zuuiMEI7ncizyA0URofRBJpCdbQuIFShYY+GZRrxMDVtih5TwQPHtXDFFSIKoWIbuREBjLH27Ny4MsbVx+uOJThavebgVrNRLAiYx06rXsvhxLgWx9xpfHdrs/ekc2Pl2cpPCVEITQpwbj8VQhfXSq2m+Wxqaq2D73Kne5e3NjHqQNj3CRYlJlgUl/jRNP+2Gs2pNYRQiOnmUaQDqm30KqKiTTWPWjboxnTWpvgxjXo0KrtZXAHt7hwIz0YVcj88JnKlJKi3NPAwLyDwZudSmJSMMJFDYaOkaol6XtESx3Gt1VTytdZJ3DCLeaVhVnCBH1fycHTxFXwPX+l2e3d6H/TufGGmMTLTnbSJUdo00zuBswMO/nl3YLeL/wnu9/limCuD3vC54h5NBVz6Li414AI8Vx3iiosKcQXUbrvhFFiYb++HN4DaF4XzFW0fIN4XDWJ3a3XQoq9V8WiyRmdsatV9xUcHims1JloH0YUa090G3Tro3mC6c01f+YwCPquINr1PTaCP6rVTOOmf0GE2dBc7zWIhji3/5MchSuBHgDbU99RMWt3YUNMZMJmx92YP6NsHx/5/M1yvInpnkIOM3Z8fA3JQ2lW1RFC1KaBPDFXNAHYYvGy73aYZZZ3HifbeuiVZCpwA3oQBs0wGPYJbJfg60xrKEbKiNtTe1adwrpBRwlAuQ3q3VRaX0QmQ9a49BTSCuF1MLfQ6+tinOubRBZuWPNoMevGMT+V41KitO1is3D/tpMcq1JHZqDHGs8DoYGDkxJgKjHROeTCmhZvzPm9pod+ltKm4PN7Dyvvldlpsg8D+4AUJZ3F/JBstZz7cbFRxsaAGV6yX/dkcycWf8eS3QlQea+YLjdm3yrOnrhFpUyKVvFE4lpv4bO3Svx/6F/4xmiDu/RT5iI++lko18mY1oX+5UGKR6kmVjM/Zb76yfHtxy+h/SyQ0lLdpdKy/lWB6szatetQJ8nZ80A2Qt6ift6gJeavU3BO4gtxs/KCtNPVibCtYCWY3SIlSBPKXZALXiIR9oZeJ1AuMyxLpHIy/yO7vSiSE+kZvk0ihJ30HgHfzZtEMmvV58x6dtqns0XTAW7Vdm4HJ04OCp/crOO7rd9SGxQAE/mVA9xRN+kVSMRFF6S9JFGUtthkjBA5tFCWc2l4V43Ex9GmUP3SI37Jjmir9KqlaDJ4S4JB3vuM/jzyH1+8MuoZ+QGzfnvPoJb96cZlWjMcKLfgDwB7E634JTY+asjsPzS5CiVnEWY+KsrsIN5rn3mAPjqmQBxGjcGKB9f9ZxY3mYC2L85CJ2FXIxKKyHk+dg0FHbuEc7D5NzWUX32WxFcWNGRAbvwSx0RmIXVDuYySafluQBmzA/ssqJAMLnli+WIC90Gw4lm85wcp0qjArEDPJJV/sSx4P9ungTpgMw5gVC1XO4uULq0s3v1rqLi0vX/z65vlH50f8T/RHmSPTk5xxWBWOluMT6WiOy+tdvWxlV/XQb3o3c6Ssr+r6I708GsX9/nzp1tKFh0s3v7m4vAy/Hnb/KMOvc1wump6Il48K6mGDy02X9Yd65pa+nQIjk76lWxCkG8NBCP0HQS9IpAAAeJxjYGRgYGBhcCrq214Qz2/zlUGenQEEzr/77oug/zewFbB+AHI5GJhAogBwKQ0qeJxjYGRgYH3/P46BgZ0BBNgKGBgZUAEPAE/7At0AAAB4nGNngAB2IGYjhBsYBAAIYADVAAAAAAAAAAAAAFwAyAEeAaACCgKmAx4DggRmAAAAAQAAAAwAagAEAAAAAAACAAEAAgAWAAABAAChAAAAAHiclZI7bxQxFIWPd/JkUYQChEhIyAVKgdBMskm1QkKrRETpQiLRUczueB/K7HhlOxttg8LvoKPgP9DxFxANDR0tHRWi4NjrPIBEgh1p/dm+vufcawNYFWsQmP6e4jSyQB2fI9cwj++RE9wTjyPP4LYoI89iWbyLPIe6+Bh5Hs9rryMv4GbtW+RF3EhuRa7jbrIbeQkPkjdUETOLnL0Kip4FVvAhco1RXyMnSPEz8gzWxE7kWTwUp5HnsCLeR57HW/El8gJWa58iL+JO7UfkOh4l9yMv4UnyEtvQGGECgwF66MNBooF1bGCL1ELB/TYU+ZBRlvsKQ44Se6jQ4a7hef+fh72Crv25kp+8lNWGmeKoOI5jJLb1aGIGvb6TjfWNLdkqdFvJw4l1amjlXtXRZqRN7lSRylZZyhBqpVFWmTEXgWfUrpi/hZOQXdOd4rKuXOtEWT3k5IArPRzTUU5tHKjecZkTpnVbNOnt6jzN8240GD4xtikvZW56043rPMg/dS+dlOceXoR+WPbJ55Dsekq1lJpnypsMUsYOdCW30o103Ytu/lvh+5RWFLfBjm9/N8hJntPhvx92rnoE/kyHdGasGy754kw36vsVf/lFeBi+0COu+cfgQr42G3CRpeLoZ53gmfe3X6rcKt5oVxnptHR9JS8ehVUd5wvvahN2uqxOOpMXapibI5k7Zwbt4xBSaTfoKBufhAnO/uqNcfK8OTs0OQ6l7JIqFjDhYj5WcjevCnI/1DDiI8j4ndWb/5YzDZWh79yomWXeXj7Nnw70/2TIeFPTrlSh89k1ObOSRVZWZfgF0r/zJQB4nG2JUQuCQBCEd07TTg36fb2IyBaLd3vWaUh/vmSJnvpgmG8YcmS8X3Shf3R7QA4OBUocUKHGER5NNbOOEvwc1txnuWkTRb/aPjimJ5vXabI+3VfOiyS15UWvyezM2xiGOPyuMohOH8O8JiO4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAA=) format(&#39;woff&#39;); } @font-face { font-family: octicons-anchor; src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format(&#39;woff&#39;); } .markdown-body { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #333333; overflow: hidden; font-family: &#34;Helvetica Neue&#34;, Helvetica, &#34;Segoe UI&#34;, Arial, freesans, sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; } .markdown-body a { background: transparent; } .</description>
    </item>
    
  </channel>
</rss>