<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>beatworm.co.uk &#187; computers</title>
	<atom:link href="http://beatworm.co.uk/blog/category/computers/feed/" rel="self" type="application/rss+xml" />
	<link>http://beatworm.co.uk/blog</link>
	<description>Colin M. Strickland</description>
	<lastBuildDate>Thu, 02 Feb 2012 11:41:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Vox Populi</title>
		<link>http://beatworm.co.uk/blog/computers/vox-populi/</link>
		<comments>http://beatworm.co.uk/blog/computers/vox-populi/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 22:02:09 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1377</guid>
		<description><![CDATA[I was churlishly unimpressed by the iTunes &#8220;12 days&#8221; Christmas promotion this year. However whilst subsequently browsing the iTunes Store home page I did find one app that impressed me enough to blog about. There&#8217;s a store section called &#8220;Apps Starter Kit&#8221; which lists a dozen or so applications that Apple are promoting as &#8220;must [...]]]></description>
			<content:encoded><![CDATA[<p>I was churlishly unimpressed by the iTunes &#8220;12 days&#8221; Christmas promotion this year. However whilst subsequently browsing the iTunes Store home page I did find one app that impressed me enough to blog about.</p>
<p>There&#8217;s a store section called &#8220;<a href="http://itunes.apple.com/gb/collection/apps-starter-kit/id25206?fcId=408992020&amp;mt=8">Apps Starter Kit</a>&#8221; which lists a dozen or so applications that Apple are promoting as &#8220;must have&#8221; installs for new iOS users. I installed a handful of these to my iPhone 3GS, but the one that has most impressed me so far is the <a href="http://itunes.apple.com/gb/app/dragon-dictation/id341446764?mt=8">iOS edition of DragonDictate</a>.</p>
<p>It&#8217;s a &#8220;split brain&#8221; app, by which I mean it uses &#8220;the cloud&#8221; to perform the text-to-speech conversion. So far I have been quite impressed with the accuracy of the process, in fact I have created this blog post by dictating while walking the dog, with just a <em>little</em> editing afterwards for tidy up and to add hyperlinks. I suppose it is a little like a poor man&#8217;s edition of Siri, minus the pretend A.I. and the search and reminders integration.</p>
<p>You can get text by dictating into a text box within the application and there is a quick menu of options that allow you to create an SMS or an e-mail or copy the text to the system clipboard easily for use in other applications. This collaboration isn&#8217;t too clunky and although dictating text into your phone is a little stilted it doesn&#8217;t seem to be significantly less effective than my relatively crappy typing on the iPhone on-screen keyboard.</p>
<p>The app was free, presumably it&#8217;s intended as a promotional device to introduce users to the Dragon family of software applications. Obviously there are some privacy concerns raised by having the voice processing performed on a remote server, but the terms and conditions include a privacy policy which guarantees to preserve your anonymity and keep your data private. The application did even prompted me to ask if I wanted all of my contact names uploaded to the remote service for greater the use of name recognition, and took pains to explain that this would only include name fields from my contacts database and no other personally identifying information or contact details.</p>
<p>I am not sure I would make a habit of using it for writing long articles or even blog posts like this but I think it could prove to be quite useful for such purposes as short e-mail replies or even sending SMS messages in situations where it&#8217;s inconvenient to type.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/vox-populi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NeXTumentary</title>
		<link>http://beatworm.co.uk/blog/computers/nextumentary/</link>
		<comments>http://beatworm.co.uk/blog/computers/nextumentary/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 20:13:58 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1357</guid>
		<description><![CDATA[Of course, I bought and read the Jobsography, Kindle edition, naturally. While I&#8217;m not sure I identify with all the howling fanboys&#8217; anguished reviews, given my role as super-NEXTSTEP-fanboy I was a bit disappointed, although not particularly surprised, at the relative lack of NeXT content. So I was overjoyed when this 1986 PBS documentary, featuring NeXT in [...]]]></description>
			<content:encoded><![CDATA[<p class="flickrTag_container"><a href="http://farm7.static.flickr.com/6161/6153034225_cfc2059bb6.jpg" class="flickr" title=" &lt;a href=&quot;http://www.flickr.com/photos/76934439@N00/6153034225/&quot;&gt;view&amp;nbsp;on&amp;nbsp;flickr&amp;raquo;&lt;/a&gt;" rel="lightbox"><img src="http://farm7.static.flickr.com/6161/6153034225_cfc2059bb6_m.jpg" alt="Hello there, old friend #movingin" class="flickr small photo" /></a></p>
<p>Of course, I bought and read <a href="http://www.amazon.co.uk/dp/1408703742/">the Jobsography</a>, Kindle edition, naturally. While I&#8217;m not sure I identify with all the howling fanboys&#8217; anguished reviews, given my role as <a href="http://beatworm.co.uk/blog/computers/branding-revisited/">super-NEXTSTEP-fanboy</a> I was a bit disappointed, although not particularly surprised, at the relative lack of NeXT content. So I was overjoyed when <a href="http://www.brainpickings.org/index.php/2011/11/24/steve-jobs-and-next-pbs-documentary/">this 1986 PBS documentary</a>, featuring NeXT in it&#8217;s pre-launch startup guise, popped up in it&#8217;s wake. The linked blog post also contains the NeXT stevenote, from the eventual product launch.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/nextumentary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Branding, revisited</title>
		<link>http://beatworm.co.uk/blog/computers/branding-revisited/</link>
		<comments>http://beatworm.co.uk/blog/computers/branding-revisited/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 10:50:36 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1355</guid>
		<description><![CDATA[Of course it&#8217;s not actually running NEXTSTEP. Of course, in a sense it is. Just like your phone.     Thanks to ebay. I like the fact that the sticker arrived with a little template indicating the correct 28° of jaunt. I ignored it of course, and just lined it up by eye.]]></description>
			<content:encoded><![CDATA[<p>Of course it&#8217;s not actually running NEXTSTEP. Of course, in a sense it is. Just like your phone.</p>
<p> </p>
<p class="flickrTag_container"><a href="http://farm7.static.flickr.com/6231/6350144268_c507295634.jpg" class="flickr" title=" &lt;a href=&quot;http://www.flickr.com/photos/76934439@N00/6350144268/&quot;&gt;view&amp;nbsp;on&amp;nbsp;flickr&amp;raquo;&lt;/a&gt;" rel="lightbox"><img src="http://farm7.static.flickr.com/6231/6350144268_c507295634_m.jpg" alt="The perfect laptop at last" class="flickr small photo" /></a></p>
<p> </p>
<p>Thanks to ebay. I like the fact that the sticker arrived with a little template indicating the correct 28° of jaunt. I ignored it of course, and just lined it up by eye.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/branding-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jwz user support story</title>
		<link>http://beatworm.co.uk/blog/computers/jwz-user-support-story/</link>
		<comments>http://beatworm.co.uk/blog/computers/jwz-user-support-story/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 15:02:06 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[links]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1326</guid>
		<description><![CDATA[jwz hands-on user support: Another one gone. I&#8217;m only just starting to realise that all this time, I&#8217;ve been blessed to live in the time of the giants.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jwz.org/blog/2011/10/jmc-rip/">jwz hands-on user support</a>: Another one gone. I&#8217;m only just starting to realise that all this time, I&#8217;ve been blessed to live in the time of the giants.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/jwz-user-support-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>David Hepworth misses the point of Steve Jobs</title>
		<link>http://beatworm.co.uk/blog/computers/david-hepworth-misses-the-point-of-steve-jobs/</link>
		<comments>http://beatworm.co.uk/blog/computers/david-hepworth-misses-the-point-of-steve-jobs/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 10:44:29 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1272</guid>
		<description><![CDATA[Mr. David Hepworth, of the lovely Word Magazine (I subscribe !), a usually reliable, and always interesting cultural commentator just blogged a piece about the reactions to the untimely passing of ex-Apple CEO Steve Jobs. I think his assessment of Mr Jobs&#8217; cultural impact is wrong. I was going to present my reaction in place on [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.davidhepworth.com/">Mr. David Hepworth</a>, of the lovely <a href="http://www.wordmagazine.co.uk/">Word Magazine</a> (I subscribe !), a usually reliable, and always interesting cultural commentator just <a href="http://whatsheonaboutnow.blogspot.com/">blogged</a> a piece about the reactions to the untimely passing of ex-Apple CEO <a href="http://www.flickr.com/photos/pcforum/5711921185/lightbox/">Steve Jobs</a>. I think his assessment of Mr Jobs&#8217; cultural impact is wrong. I was going to present my reaction in place on his blog, although it did seem to grow a little too long for the commentary section, and I subsequently found out that his blogger site seems to be set up disallow comments from people who aren&#8217;t logged in to a Google account, which I object to, somewhat dogmatically. So I decided to post my piece here, and <a href="http://whatsheonaboutnow.blogspot.com/2011/10/theres-difference-between-changing.html">link back to his</a>, which is more in keeping with my own views about how the Web ought to run.</p>
<p>I don&#8217;t disagree fundamentally with the tone of the piece. I do share his unease over the now seemingly mandatory broadcast grief marathons that accompany any death in the public eye, and I find an unpleasant hint of infantile narcissim in the fetish relationship between the user and product celebrated with the mass parades of public Apple evangelists and their iDevices, which might be a cousin to the sentiments he expresses about toys and proportional responses.</p>
<p>This attempt to sum up Mr. Jobs as a super-skilled marketer I think underestimates the scale, and perhaps also the nature of Mr. Jobs&#8217; contributions, some of which are subtle, many of which may look obvious, but usually only by hindsight. Even if his role was solely as a provoker, and curator of works; and I doubt it was, the truth is rarely that neat &#8211; he seems to have his fingerprints near the genesis of a string of transformational products, which do seem to fulfill the cliche of yes, <em>changing the world.</em></p>
<p>Start at the beginning: His role in realising the portable microcomputer as a packaged appliance, something like a food processor, that people could be taught to directly integrate into their homes and offices. The Apple II <em>barnstormed</em> this market. I am not so sure as most other commentators that this idea was an obvious, archetypal product simply waiting to happen. Putting computers in your house, I think, is a fundamentally odd idea, albeit one that we have now fully naturalised. In 1976 it must have been almost schizophrenic.</p>
<p>Refining this idea into the Macintosh and Lisa, a specifically pioneering further insight was that a then unusual <em>square pixel </em>bitmapped display would better lend itself to curve plotting. This gave us the <a href="http://www.thefreedictionary.com/wysiwyg">WYSIWYG</a> relationship between the graphical computer and <a href="http://en.wikipedia.org/wiki/LaserWriter">the laser printer</a>, computer typography and thereby re-shaped the primary means of production for print and graphics.</p>
<p>The post-Apple &#8220;wilderness years&#8221; are particularly interesting. At <a href="http://www.kevra.org/TheBestOfNext/index.html">NeXT</a> they pioneered software controlled automated computer assembly and production, I&#8217;ve heard it said maybe a decade ahead of everyone else. I think they made a lot of mistakes, but I also think these lessons learned were invaluable later on. More significantly, the NeXT system software placed an elegant emphasis on &#8220;object-oriented programming&#8221;, carefully enveloping the tedious nuts and bolts of interfacing with electrical computer hardware with well chosen software &#8216;components&#8217;; tidy abstractions that lead to a system that was significantly easier to port to new hardware configurations, and simultaneously could be more-easily programmed at a higher level, without resorting to so much specialist understanding of specific hardware.</p>
<p>The significance of the work at NeXT will not be fully realised until later in his career, but as an intriguing footnote, it is on a NeXT workstation that a British scientist called <a href="http://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a> develops some applications and protocols he calls the &#8220;World Wide Web&#8221;. Mr Berners-Lee is on the record noting that the unique NeXT development tools allowed him to easily connect abstract layers to form useful application prototypes in the space of a couple of months.</p>
<p>Steve&#8217;s other business during those years was <a href="http://www.newyorker.com/online/blogs/newsdesk/2011/10/steve-jobs-pixar.html">Pixar</a>. You don&#8217;t have to study the history of cinema over the last two decades too hard to detect just how fundamentally Pixar shaped mainstream family movie making.</p>
<p>Then he returns to Apple and begins that now over-documented turnaround from prodigal son and failing company, to pin-up CEO and spectacular media and financial success. It&#8217;s worth pointing out that the portablility of the NeXT system software allows them to insinuate it into Macintosh entirely. Next the iPod, and then we get iTunes, and the &#8216;iTunes Store&#8217;.  And then the same elegant software evolves to pocket phones, where the relative ease of programming buoys up the freshly invented &#8216;App market&#8217;. And a finely edged production control builds an on-demand production, supply and retail operation that is the envy of the rest of the industry.</p>
<p>I&#8217;m not a professional writer as Mr. Hepworth is. I hope I don&#8217;t read like I&#8217;m elegising him mawkishly like some Princess Di or Jade Goody for the &#8220;Facebook generation&#8221;, or lionising him in super-human terms as though he&#8217;s some over-egged digital Da Vinci, or Newton. I never met him. I&#8217;m not laying flowers anywhere. I&#8217;m sure that a huge part of his success was through fortunate timing, and developing good taste and keeping good company, but this is surely true of many whom history accounts amongst the Great, perhaps even of most. What a C.V. though!</p>
<p>These things are not a competition you can score, and yet I don&#8217;t think most Word Magazine readers would rush to disagree with the suggestion that Steve&#8217;s musical idols like Dylan or the Beatles &#8220;changed the world&#8221;. I&#8217;m comfortable suggesting that to a subsequent generation, with it&#8217;s own new media of choice, Steven P. Jobs influenced and changed the world to an arguably similar degree.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/david-hepworth-misses-the-point-of-steve-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servicing DHCP clients with OS X</title>
		<link>http://beatworm.co.uk/blog/computers/servicing-dhcp-clients-with-os-x/</link>
		<comments>http://beatworm.co.uk/blog/computers/servicing-dhcp-clients-with-os-x/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 20:20:29 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1145</guid>
		<description><![CDATA[I&#8217;ve been having persistent niggles with my home router / 802.11x base station / DSL modem. It&#8217;s a D-Link DSL-2740B, itself bought as a replacement for my ISP-provided machine, an O2 wireless III (a re-badged Thomson SpeedTouch) which proved itself a low performer at both wireless and routing, and particularly dismal at doing both simultaneously. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having persistent niggles with my home router / 802.11x base station / DSL modem. It&#8217;s a D-Link <a href="http://www.dlink.co.uk/cs/Satellite?c=TechSupport_C&#038;childpagename=DLinkEurope-GB%2FDLTechProduct&#038;cid=1197319446523&#038;p=1197318962293&#038;packedargs=locale%3D1195806691854&#038;pagename=DLinkEurope-GB%2FDLWrapper">DSL-2740B</a>, itself bought as a replacement for my ISP-provided machine, an <a href="https://secure.wikimedia.org/wikipedia/en/wiki/O2_wireless_box#Features">O2 wireless III</a> (a re-badged Thomson SpeedTouch) which proved itself a low performer at both wireless and routing, and particularly dismal at doing both simultaneously.</p>
<p>I picked up the D-link cheaply, in a clearance bin in John Lewis. In most respects it has been a splendid replacement for the O2. WiFi is fast, routing is consistent, ADSL sync is better. However, it does have one stupid bug. It can&#8217;t do DHCP reliably. After a certain period, it starts sending out broken leases to clients; either issuing them with IP addresses that are already in use, or more commonly issuing a working address, but nullifying the nameserver settings. A reboot will restore sanity, but involves an irksome couple of minutes of network outage. Afterwards it is only a matter of time before the problem re-emerges, noticeably quicker if there&#8217;s an increased rate of new leases issued, such as a group of visitors armed with smartphones popping in.</p>
<p>I&#8217;m consistently amazed at how flawed home router appliances are. How anyone &#8216;normal&#8217; is supposed to cope with these things, I have no idea. I&#8217;ve updated the firmware to the last available revision, fiddled with the limited options in the admin interface, to little avail. Web searches turn up a few people commenting on the same problem, but no solutions offered. This leaves me with three straightforward, yet unappealing options.</p>
<ol>
<li> Buy another router. Either another toy one, which seems likely to smuggle in some fresh nugget of buried failure, or buy something more professional, and hence eye-wateringly expensive</li>
<li> Set up static configuration for every client. Seems a stupid solution in 2010 for a primarily wireless network</li>
<li> Disable DHCP on the router, and add another, more reliable DHCP server to the network</li>
</ol>
<p>Option 3 initially seems least aggravating. In the past, my strategy for service infrastructure has always been using home servers, with some form of UNIX. These days though, I&#8217;m trying to minimise the number of computer-type devices I have to keep running 24/7. I no longer find any joy in being a home UNIX administrator, and it&#8217;s nice to correspondingly reduce power consumption, fan noise, and cabling. So the idea of setting up a computer just to act as a DHCP controller is slightly repellant.</p>
<p><span id="more-1145"></span></p>
<p>The only machine tethered to the network is a modest, <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Mac_Mini#Processors">first-generation, G4 mac mini</a>. It&#8217;s chief use in the past was as a basic <a href="http://freeview.co.uk/">freeview</a> PVR, using <a href="http://www.elgato.com/">Elgato eyeTV</a>, but the London flat&#8217;s TV reception is too poor for this, so it mostly acts as an <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Apple_Filing_Protocol">AFP</a>-capable network interface to my firewire <a href="http://www.drobo.com/products/drobo.php">Drobo</a>. It&#8217;s a very old, low power machine, but would certainly be capable of acting as a DHCP server.</p>
<p>It wasn&#8217;t immediately obvious how best to do this. Obviously I could install any of the common free UNIX DHCP software, using <a href="http://www.macports.org/">MacPorts</a>, or <a href="http://mxcl.github.com/homebrew/">homebrew</a>, or <a href="http://www.finkproject.org/">fink</a>, or even just hand rolling something from tarballs, but all of these come with overheads, adding dependencies, requiring build tools, and subsequent package management, and all the little bits of service glue needed to make it run neatly as a daemon. Experience has shown me that integrating third-party UNIX services into a vanilla Macintosh can get fiddly, fast.</p>
<p>There&#8217;s no obvious DHCP server component on desktop OS X, but there&#8217;s a latent capacity  somewhere, demonstrated by &#8216;Internet sharing&#8217;, which lets you easily set up a Macintosh with a network connection as a basic router. After a little bit of poking around with this, and some internet searching, I discovered that this facility is part of the <a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/10.5/man8/bootpd.8.html">bootpd</a> service. It&#8217;s documented, and after a little trial-and-error, I figured out a way to run a DHCP server facility only, using just the built-in Apple utilities.</p>
<p>Here&#8217;s an overview of my network configuration
<ul>
<li> The D-link router provides NAT routed internet via O2 ( actually Be ) ADSL 2+ with a static IP. </li>
<li>The private subnet is 192.168.1.0/24</li>
<li>The router&#8217;s internal address is set as 192.168.1.1</li>
<li> The mac mini is connected to the router via wired ethernet with an address of 192.168.1.4, and runs headlessly.</li>
<li>Everything else connects to the D-Link router wirelessly, using a mix of 802.11n and 802.11g</li>
</ul>
<h3>Here&#8217;s how to set up bootpd to act as a DHCP server for this network.</h3>
<p>First, configure the mac mini to have a static IP. Using screen-sharing from another Mac ( Cmd-K, vnc://192.168.1.4 ) to configure the network interface in system preferences.</p>
<div id="attachment_1146" class="wp-caption alignleft" style="width: 60%"><a rel="attachment wp-att-1146" href="http://beatworm.co.uk/blog/computers/servicing-dhcp-clients-with-os-x/attachment/screen-shot-2010-12-05-at-15-59-29/"><img class="size-medium wp-image-1146" title="Screen-shot-2010-12-05-at-15.59.29" alt="" src="http://beatworm.co.uk/blog/wp-content/shuploads/2010/12/Screen-shot-2010-12-05-at-15.59.29.png" /> </a>
<p class="wp-caption-text"></p>
</div>
<p></p>
<p>Next, configure your computer to also have a static address on the same subnet. If you get something wrong, and need to troubleshoot settings, you&#8217;ll still need to be able to connect between the router, the mini and your workstation. I picked 192.168.1.111, as being well outside the range of anything I&#8217;d expect to be routinely allocated.</p>
<p>Now you need to produce your bootpd config file ( /etc/bootpd.plist ). Unfortunately this means an XML property list. Every time I feel smug about how the Macintosh is re-invigorating UNIX with the old, crufty bad bits removed, I ought to remind myself about the maniacally stupid idea that is XML plists. Instead I thank my stars that I have a capable text editor. It&#8217;s not that fearsome a property set, and is well explained in <a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/10.5/man8/bootpd.8.html">the man page</a>, so you <em>could</em> build one by hand. An alternative approach, the one I used, would be to set up internet sharing temporarily on the mini for an interface you&#8217;re not using; I chose firewire. Take a copy of the <code>/etc/bootpd.plist</code> file this will create, e.g. /<code>etc/bootpd.plist.template</code>, and then disable internet sharing again, which will remove the <code>/etc/bootpd.plist</code> file if it still exists. Now rename your template back to <code>/etc/bootpd.plist</code> and edit it.</p>
<p> The options are all well documented, and it turns out that you need hardly any of them to get up and running.</p>
<p>The key options are
<ul>
<li> <strong>dhcp_enabled:</strong> an array of network interface device names to answer dhcp requests on &#8211; I just have en0, which is the built-in ethernet </li>
<li><strong>Subnets:</strong> an array of property dictionaries, that represent networks  we&#8217;re interested in serving. We only want a single dictionary for 192.168.1.0/24.
<ul>
<li> <strong>net_address:</strong>, is the network address &#8211; 192.168.1.0, </li>
<li><strong>net_mask:</strong> the netmask for our subnet range &#8211; &#8217;255.255.255.0&#8242;, </li>
<li><strong>dhcp_router:</strong> default gateway address &#8211; 192.168.1.1 </li>
<li><strong>net_range:</strong> an array of strings representing the bounds of a pool of addresses to allocate from &#8211; 192.168.1.12 to 192.168.1.254</li>
<li><strong>allocate:</strong> a boolean that is set to indicate that we&#8217;re interested in issuing addresses for this subnet</li>
</li>
</ul>
</ul>
<p>Most of the other defaults are sensible. I&#8217;ve kept all the other values that were generated for my template. Here&#8217;s what I have in my file.</p>
<p><code><br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;<br />
&lt;plist version="1.0"&gt;<br />
&nbsp;&nbsp;&lt;dict&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;Subnets&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dict&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;_creator&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;cms&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;allocate&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;true/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;dhcp_domain_name_server&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;208.67.222.222,208.67.220.220&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;dhcp_router&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;192.168.1.1&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;lease_max&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;integer&gt;3600&lt;/integer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;lease_min&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;integer&gt;3600&lt;/integer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;name&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;192.168.1&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;net_address&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;192.168.1.0&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;net_mask&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;255.255.255.0&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;net_range&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;192.168.1.12&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;192.168.1.254&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dict&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;bootp_enabled&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;false/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;detect_other_dhcp_server&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;integer&gt;0&lt;/integer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;dhcp_enabled&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;string&gt;en0&lt;/string&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/array&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;reply_threshold_seconds&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;integer&gt;4&lt;/integer&gt;<br />
&nbsp;&nbsp;&lt;/dict&gt;<br />
&lt;/plist&gt;<br />
</code></p>
<p> Next, create two empty files that bootpd expects to use. &#8216;<a href="http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man5/bootptab.5.html%23//apple_ref/doc/man/5/bootptab">/etc/bootptab</a>&#8216;, for any static address maps, and <code>/var/db/dhcpd_leases</code>, which will be a persistent database for issued leases. Now connect to the router, and disable it&#8217;s DHCP server.</p>
<p>The bootpd binary lives at <code>/usr/libexec/bootpd</code>. If you run it from a terminal with a <code>-d</code> flag, it will stay in the foreground and emit debugging info to stdout. You&#8217;ll need root privileges for it to run, I just used <code>sudo /usr/libexec/bootpd</code>. Now request a dhcp address from a different network client. I used an iPad. It&#8217;s a good idea to make a note of the network MAC address. If everything is working, you should see some output acknowledging the request, and then some more as a lease is issued. The client should then configure it&#8217;s network interface with all the settings from your Subnet definition above. If it doesn&#8217;t, and the output isn&#8217;t helpful enough, there&#8217;s also a further -v switch for more verbose logging.</p>
<p>Initially I had trouble getting any leases issued although all requests were logged fine. It turned out I&#8217;d misconfigured the netmask when I set up the static address for the mini. If the network details don&#8217;t match the defined subnet exactly, then bootpd will just fall back to default behaviour for the subnet, which is to just observe. Once I fixed that, things started working as they should. By default, a line is written to logs in /var/system.log for every request recieved, and one for every lease issued.</p>
<p>The remaining task is to configure the service to run as a daemon from launchd. Luckily, there is a launchd profile for bootpd present, <code>/System/Library/LaunchDaemons/bootps.plist</code>.
<p/> You can install this persistently into launchd like so
<p> <code>sudo launchctl load -w /System/Library/LaunchDaemons/bootps.plist </code></p>
<p> Running <code>sudo launchctl list </code> should then show a <code>com.apple.bootpd</code> service enabled. If for some reason you need to disable it once again, you can uninstall the service using
<p> <code>sudo launchctl unload -w /System/Library/LaunchDaemons/bootps.plist</code></p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/servicing-dhcp-clients-with-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manic data miner</title>
		<link>http://beatworm.co.uk/blog/computers/manic-data-miner/</link>
		<comments>http://beatworm.co.uk/blog/computers/manic-data-miner/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 10:16:10 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1123</guid>
		<description><![CDATA[The other day at work, prompted by a shoutbox conversation with one of our users, I did a little bit of exploring some of the artist catalogue data. The idea was to find band names that were repeating words, such as &#8216;Talk Talk&#8216; and &#8216;The The&#8216;. Coincidentally, I had a freshly installed database server with [...]]]></description>
			<content:encoded><![CDATA[<p>The other day at <a href="http://last.fm">work</a>, prompted by a shoutbox conversation with <a href="http://www.last.fm/user/tessemily">one of our users</a>, I did a little bit of exploring some of the artist catalogue data. The idea was to find band names that were repeating words, such as &#8216;<a href="http://www.last.fm/music/Talk+Talk">Talk Talk</a>&#8216; and &#8216;<a href="http://www.last.fm/music/The+The">The The</a>&#8216;. Coincidentally, I had a freshly installed database server with just this sort of information on it, and needed a good excuse to stress test it a little. <a href="http://www.postgresql.org/docs/8.4/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP">PostgreSQL&#8217;s regular expression support is brilliant</a>, and it was a very trivial exercise to quickly knock up a query that returned promising data. In the process of refining it, I got a chance to play around with the <a href="http://hadoop.apache.org/">Hadoop</a> cluster. <a href="http://blog.last.fm/2010/10/13/artist-artist">I wrote the whole thing up</a> over on the company blog, if you&#8217;d like further details. Fame fame fatal fame, it can play hideous tricks on the brain, <a href="http://open.spotify.com/local/The+Smiths/The+Queen+Is+Dead/Frankly+Mr+Shankly/139">as the song goes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/manic-data-miner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today I helped create a meme</title>
		<link>http://beatworm.co.uk/blog/computers/today-i-helped-create-a-meme/</link>
		<comments>http://beatworm.co.uk/blog/computers/today-i-helped-create-a-meme/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 20:16:48 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1116</guid>
		<description><![CDATA[Yesterday at work, I had to clean after up a particularly freaky Slony-I replication fault. I still haven&#8217;t managed to understand quite what went wrong there. So this morning, I arrived at work in full diagnostic mode, jokingly grumbling about &#8216;howfuckedismydatabase.com&#8217;. Laurie was particulary amused by this curmudgeonly joke, and we bantered about it. I [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday at <a href="http://last.fm/user/colins">work</a>, I had to clean after up a particularly freaky <a href="http://www.slony.info/">Slony-I </a>replication fault. I still haven&#8217;t managed to understand quite what went wrong there. So this morning, I arrived at work in full diagnostic mode, jokingly grumbling about &#8216;howfuckedismydatabase.com&#8217;. <a href="http://laurie.denness.net/">Laurie</a> was particulary amused by this curmudgeonly joke, and we bantered about it. I pitched a few ideas about how such a joke site might operate, and we left it there and moved on. </p>
<p>Except Laurie didn&#8217;t. Despite my attempts to dissuade him, he registered the domain, and started knocking together some pages based on the earlier jokes. I chipped in a couple more suggestions, and suggested some error messages, and within twenty minutes or so he had<a href="http://howfuckedismydatabase.com"> an operational site</a>. Then we shared it with a couple of like-minded people, and left it be. A few of the other people at work passed it around, and a couple of people submitted it to reddit.</p>
<p>Within an hour or so things had started to really snowball. <a href="http://www.reddit.com/r/programming/comments/d5qax/how_fucked_is_my_database/">One of the reddit submissions</a> gathered hundreds of upvotes, and for a period of time we were the number one story on <a href="http://news.ycombinator.com/item?id=1636113">hacker news</a>. Laurie added a twitter button and a comment form to the site, and <a href="http://twitter.com/#search?q=http%3A%2F%2Fhowfuckedismydatabase.com%2F">retweets</a> and <a href="http://howfuckedismydatabase.com/letters/">emails</a> started accumulating fast. By mid-afternoon the site was approaching 200 hits a second, which it handled with aplomb, because he had coded it efficiently, and<br />
 configured the server sensibly.</p>
<p>It felt great to watch so many people comment positively about some of my dumb jokes, pretty much in real time. It gave me a really direct experience of something I&#8217;d always innately understood about the internet, but had not yet witnessed close to home; the ability to quickly reach an appropriate audience for almost any content, regardless of how specialised. Our little shared joke quickly reached out to thousands of people, who found something within it they also related to. This really amazes me.</p>
<p>It also showed me something about my own character. While I was perfectly happy to joke about the idea, it needed somebody like Laurie, with the skill and enthusiasm to pick up on it and make it into something tangible and exciting. I&#8217;d instinctively shied away from broadcasting it further than my desk, and my initial reaction was that developing it any further would be a waste of time and money. I was very wrong about that, it turned out to be an interesting experience, and enormous fun. I think this means I should endeavour to be a little less cynical.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/today-i-helped-create-a-meme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building python extensions on Snow Leopard</title>
		<link>http://beatworm.co.uk/blog/computers/programming/python/building-python-extensions-on-snow-leopard/</link>
		<comments>http://beatworm.co.uk/blog/computers/programming/python/building-python-extensions-on-snow-leopard/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:50:50 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1086</guid>
		<description><![CDATA[I ran into some problems while I was trying to install python bindings for the Growl notification framework on my MacBook Pro. My Mac is running the current release of Snow Leopard ( 10.6.4 ) and I&#8217;m using a python.org installed binary package of python, under /usr/local/python. Building using distutils and the supplied setup.py failed, [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into some problems while I was trying to install python bindings for the Growl notification framework on my MacBook Pro. My Mac is running the current release of Snow Leopard ( 10.6.4 ) and I&#8217;m using a python.org installed binary package of python, under /usr/local/python. Building using <code>distutils</code> and the supplied <code>setup.py</code> failed, seemingly because the compiler was unable to find quite routine include files, such as <code>stdarg.h</code> and <code>float.h</code>.</p>
<p><code>/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory<br />
</code></p>
<p>This error message both confused and perturbed me, because stdarg is a fairly fundamental component of a working C library, and I am pretty certain that my compiler isn&#8217;t that fundamentally broken.</p>
<p>Picking apart the build output from the generated Makefile, I see that it is setting the <code>-isysroot </code>gcc flag, to <code>/Developer/SDKs/MacOSX10.4u.sdk/</code>. I presume this is because the python installation is built to use the OS X 10.4 compatability SDK. This is why it&#8217;s pulling in <code>/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h</code>. That header is a stub, and included the following stanza </p>
<p><code><br />
/* GCC uses its own copy of this header */<br />
#if defined(__GNUC__)<br />
#include_next <stdarg.h><br />
</code></p>
<p><code>#include_next</code> is a gcc extension to cpp, and instructs the preprocessor to start searching for the include file again starting with the next directory on the include path after this one. Standard libraries like stdarg and float can be quite compiler specific, and as the comment indicates, GCC is expected to have it&#8217;s own copy of this header file, which would be put away somewhere under <code>/usr/lib/gcc</code>.</p>
<p> At this point, a nagging memory of building cocoa apps with XCode resurfaced, suggesting that the 10.4 SDK isn&#8217;t compatible with gcc-4.2 ( the system default gcc under snow leopard ). GCC 4.0 is supplied though, for use with building against legacy SDKs.  On this whim, I tried exporting <code>CC=/usr/bin/gcc-4.0</code> and rebuilding, and everything worked as it should.</p>
<p>From inspection, it seems like the snow supplied leopard python is built to use 10.6 SDKs and gcc-4.2 and may well be a more sensible python to use. Further <del datetime="2010-08-06T17:45:53+00:00">googling</del> <a href="http://duckduckgo.com">ducking</a>, turned up<a href="http://bugs.python.org/issue6957"> this bug report</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/programming/python/building-python-extensions-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Airport command line</title>
		<link>http://beatworm.co.uk/blog/computers/airport-command-line/</link>
		<comments>http://beatworm.co.uk/blog/computers/airport-command-line/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 19:46:41 +0000</pubDate>
		<dc:creator>cms</dc:creator>
				<category><![CDATA[computers]]></category>

		<guid isPermaLink="false">http://beatworm.co.uk/blog/?p=1004</guid>
		<description><![CDATA[There&#8217;s a handy little command line tool nestled away inside Apple&#8217;s system WiFi framework. Apple80211.framework/Resources/airport It doesn&#8217;t come with a man page, but --help will print a usage guide.]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a handy little command line tool nestled away inside Apple&#8217;s system WiFi framework.</p>
<p> <code>Apple80211.framework/Resources/airport</code></p>
<p>It doesn&#8217;t come with a man page, but<code> --help</code> will print a usage guide.</p>
]]></content:encoded>
			<wfw:commentRss>http://beatworm.co.uk/blog/computers/airport-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

