<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><!-- name="generator" content="pyblosxom/1.2.1 06/01/2005" --><rss version="2.0">
    <channel>
	<title>Updated: Never -- Philip's Blog</title>
	<link>http://www.paeps.cx/</link>
	<description>My very own weblog, featuring rants about life, the
	universe, and everything.  Updated rather more often than the title
	suggests.</description>
<feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ppaeps" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><image><link>http://www.paeps.cx/</link><url>http://www.paeps.cx/images/hackergotchi_new.png</url><title>Updated: Never -- Philip's Blog</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://www.paeps.cx/weblog/index.rss" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://www.paeps.cx/weblog/index.rss" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fwww.paeps.cx%2Fweblog%2Findex.rss" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/FreeBSD/BSD_certification_schedule.html</guid>
    <link>http://www.paeps.cx/weblog/FreeBSD/BSD_certification_schedule.html</link>
    <title>BSD Certification schedule</title>
    <pubDate>Mon, 25 Jan 2010 08:39 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Looking through my calendar (yes, I have one) for 2010 this morning, I
discovered that I will be proctoring quite a number of &lt;a class="reference external" href="http://www.bsdcertification.org/"&gt;BSD Certification&lt;/a&gt;
sessions this year.  Plenty of opportunity for people (you?) to sign up!&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://fosdem.org/2010/certification"&gt;7 February at FOSDEM 2010&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sometime during &lt;a class="reference external" href="http://2010.asiabsdcon.org/"&gt;AsiaBSDCon 2010&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://www.nluug.nl/activiteiten/events/vj10/examen.html"&gt;6 May at NLUUG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chances are there will be other opportunities throughout the year too.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/GK-rZoMVJrg" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/life/whisky_tasting.html</guid>
    <link>http://www.paeps.cx/weblog/life/whisky_tasting.html</link>
    <title>Whisky tasting</title>
    <pubDate>Fri, 22 Jan 2010 20:27 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Keeping up the appearance that &lt;a class="reference external" href="http://planet.grep.be/"&gt;planet grep&lt;/a&gt; is a collection of drunks, I
accepted &lt;a class="reference external" href="http://jabberwocky.eu/"&gt;Elise&lt;/a&gt;'s invitation to join a whisky tasting with a group of people
able to compress their thoughts into 140 bytes or less.&lt;/p&gt;
&lt;p&gt;First of all, I was impressed at the decompressed presence of all
participants.  They failed to depict even a single stereotype!  Except maybe
&lt;a class="reference external" href="http://blog.stef.be/whiskytasting2"&gt;taking pictures of bottles&lt;/a&gt;, but I think that can be forgiven. ;-)&lt;/p&gt;
&lt;p&gt;I was particularly impressed by the Caol Ila and perhaps even more by the
Black Bush.  The Sazerac Rye was also highly tasty, but I felt it was no match
for the Templeton Rye Brooks introduced me to a while back.&lt;/p&gt;
&lt;p&gt;In addition to whisky, the tasting session also included an amazing stilton
and cheddar (not of the radioactive orange variety).  I found these went very
well with whisky.&lt;/p&gt;
&lt;p&gt;In the end, I bought a bottle of Laphroaig 19 year old tastiness.  Yum!&lt;/p&gt;
&lt;p&gt;I don't think this will be my last whisky tasting session.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/WfndEtjj3GE" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/work/new_gadget_x200s.html</guid>
    <link>http://www.paeps.cx/weblog/work/new_gadget_x200s.html</link>
    <title>New gadget: ThinkPad x200s</title>
    <pubDate>Thu, 14 Jan 2010 20:58 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;My trusty x60s is &amp;quot;written off&amp;quot; this year, so it was time to get a new
machine.  Blatant consumerism and all that.&lt;/p&gt;
&lt;p&gt;Unless you drink the Apple kool-aid and are able to put up with their
programmer-unfriendly keyboards (though that's gotten better of late),
ThinkPads are still the only reasonable choice for a laptop.  The logical
successor to x60s was the x200s.&lt;/p&gt;
&lt;p&gt;While I'm generally very happy with the machine (it's even lighter than the
previous one and the nine-cell battery lasts even longer - about 10 hours, PXE
just works, suspend/resume just works, it still has a proper nipple instead of
a silly touchpad -- basically, it's still a ThinkPad) Lenovo made some really
strange design decisions this time round.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Why does it have to be so wide?  As far as I can tell, the extra width is
mainly caused by a wide bezel on each side of the screen.  It's still very
compact (about the size of a sheet of A4 paper), but it makes you wonder.&lt;/li&gt;
&lt;li&gt;The increase in width has subtly changed the keyboard dimensions in a way I
can't quite put my finger on.  I seem to be making the strangest typos on
this keyboard.  I'm sure muscle memory will catch up eventually.&lt;/li&gt;
&lt;li&gt;Why would you put a camera on a business laptop?  Does anyone else feel
uncomfortable staring at a camera all day long?  I know it's not doing
anything (because I don't put drivers for that useful thing in my kernel),
but it's just &amp;quot;there&amp;quot;.  All the time.  I'm looking for a sticker to put over
it.&lt;/li&gt;
&lt;li&gt;The nine-cell battery sticks out the back a bit, like the extended batteries
on X-series ThinkPads have always done.  It no longer sticks out over the
entire width of the laptop though.  Which again makes me wonder why the
laptop is wider.  Surely they could have made a 12-cell battery that sticks
out over the entire width, or just preserved the previous width?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have basically come to terms with the idea of &amp;quot;wide screen&amp;quot;, even though
it's unnatural and crazy.  I find myself using &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;:vsplit&lt;/span&gt;&lt;/tt&gt; more than
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;split&lt;/span&gt;&lt;/tt&gt;, but I still think it's nuts.&lt;/p&gt;
&lt;p&gt;This particular model comes with an Ericsson F3507g Mobile Broadband Minicard,
which is a very fancy gadget.  I haven't tried it yet, because I don't have a
spare SIM, but it brings an amazing collection of radios with it.  It also
adds a privacy concern: &amp;quot;theft deterrents&amp;quot; in the BIOS.  I don't particularly
want my laptop reporting my location (there's a GPS radio in it) to anyone who
listens at all times.&lt;/p&gt;
&lt;p&gt;Presumably, these things need operating system support and I can turn them off
in the BIOS, but how do I know they're really off?  Time to spend some more
quality time with the bootloader to make really sure.&lt;/p&gt;
&lt;p&gt;Overall, I'm very happy with the new gadget.  It does what I need it to do and
will presumably do it until it's written off.&lt;/p&gt;
&lt;p&gt;I'm still trying to decide what to do with the x60s now.  Other than the
keyboard, which is predictably beaten up, it's in fairly good shape.  Probably
donate it to a school or a geek in the larval stages.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/fnLS214uetA" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/fosdem/fosdem_2010_keysigning.html</guid>
    <link>http://www.paeps.cx/weblog/fosdem/fosdem_2010_keysigning.html</link>
    <title>FOSDEM 2010 keysigning</title>
    <pubDate>Tue, 05 Jan 2010 23:36 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Of course there will be a &lt;a class="reference external" href="http://fosdem.org/2010/beerevent"&gt;Friday Beer Event&lt;/a&gt; at FOSDEM this year.  Only this
year, it won't be me organizing it.  I felt it was time to do something
different and it looks like Jochen has a very firm grip on things.  I'm looking
forward to attending the beer event as a participant.&lt;/p&gt;
&lt;p&gt;What to do with the so-called free time now though?&lt;/p&gt;
&lt;p&gt;It seems I've inherited the keysigning bits.&lt;/p&gt;
&lt;p&gt;Setting up a very basic key submission server required a mere couple of hours
of remembering why Perl is a write-only language.  The results of that
exercise can be admired at &lt;a class="reference external" href="http://ksp.fosdem.org/kspd.pl.txt"&gt;http://ksp.fosdem.org/kspd.pl.txt&lt;/a&gt;.  Announcing the
existence of this service to the world was rather more involved.&lt;/p&gt;
&lt;p&gt;The ordeal reminded me -- again --  of primitive cavemen.&lt;/p&gt;
&lt;p&gt;Every time someone wanted to paint a woolly mammoth on a cave wall, they'd
have to draw it from scratch, either with reference to a previous drawing, or
from memory.  It was impossible to &lt;em&gt;reuse&lt;/em&gt; previous mammoths.&lt;/p&gt;
&lt;p&gt;One glorious day, a bright caveman discovered that certain rocks can be rubbed
against thin sheets of skin to leave an impression, and the impression can
then be used to draw new woolly mammoths.  Even more (haha) &lt;em&gt;impressive&lt;/em&gt; was
that the impression could be used to make a new, slightly modified (longer
tusks, who knows?) mammoth-template.  Previous impressions could be saved for
future generations, to teach them what woolly mammoth looked like in grandpa
Thag's youth.&lt;/p&gt;
&lt;p&gt;And thus version control was born.&lt;/p&gt;
&lt;p&gt;Fast-forward many centuries.  People no longer live in caves.  Mammoths are
now stored in &amp;quot;the cloud&amp;quot;.  Someone comes up with the wonderful idea of
&amp;quot;content management&amp;quot;.&lt;/p&gt;
&lt;p&gt;One day, someone creates a mammoth and pastes it on the proverbial cave wall.
A couple of days later, the mammoth needs changing a bit.  In these modern
days of the cloud, where mammoths fit in 140 characters or less, this can now
be accomplished without going through the pesky process of archiving previous
mammoths.  Of course, the cave wall could be &amp;quot;configured&amp;quot; to keep old mammoths
around, but why bother?  In ten minutes time, there will be a new mammoth, and
no one could possibly care about the previous one.&lt;/p&gt;
&lt;p&gt;And thus version control died.&lt;/p&gt;
&lt;p&gt;And mammoths are drawn from scratch again.&lt;/p&gt;
&lt;p&gt;As technology advances, humans regress to compensate.&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="http://fosdem.org/2010/keysigning"&gt;keysigning announcement&lt;/a&gt; is now online.  Being the caveman I am, I've
also put it in a version control system, far away from any clouds.  Just on
the off chance that it may come in handy.  You know, in a year or so?&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/Th9W1Ky2iEE" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/activism/newtonmas_2009.html</guid>
    <link>http://www.paeps.cx/weblog/activism/newtonmas_2009.html</link>
    <title>Newtonmas revisited</title>
    <pubDate>Mon, 04 Jan 2010 10:41 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Google is celebrating Newton's birthday today.  Better late than never, but in
the interest of historical accuracy, I feel it should be celebrated on 25
December and not on 4 January.&lt;/p&gt;
&lt;p&gt;I am aware of the fact that the calendar was fiddled with around the time of
Newton's birth, but I think the key defining element of a &amp;quot;birthday&amp;quot; is the
day one is born (or birthed, depending on perspective).  I'm sure Sir Isaac's
mother thought it was 25 December.&lt;/p&gt;
&lt;p&gt;If Newton was born in the 21st century, his mother would have had to fight her
way through a forest of &amp;quot;christmas&amp;quot; trees to get to the delivery room.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/ETI2c4YNMj4" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/fosdem/fosdem_politics_again.html</guid>
    <link>http://www.paeps.cx/weblog/fosdem/fosdem_politics_again.html</link>
    <title>FOSDEM politics ... again</title>
    <pubDate>Fri, 04 Dec 2009 16:10 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;It has become a yearly tradition for people with strong opinions about certain
aspects of the open source ecosystem to suggest very noisily that FOSDEM
should share these strong opinions.  I don't think I need to remind anyone
about the excitement earlier this year regarding one of our sponsors.&lt;/p&gt;
&lt;p&gt;This time, &lt;a class="reference external" href="http://martijn.sudo-s.net/"&gt;Martijn&lt;/a&gt; is upset that there will be a &lt;a class="reference external" href="http://fosdem.org/2010/list-devrooms-their-call-talks"&gt;Mono developer room at
FOSDEM 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Martijn's reasoning seems to basically boil down to &lt;em&gt;we don't need Mono&lt;/em&gt;.  He
doesn't mention who those &amp;quot;we&amp;quot; are though.  Mono looks like a very active open
source project.  Clearly the people working on it feel that it is needed.
Martijn seems to feel that the open source software they are producing is not
worthy of being produced.  By that reasoning, why is there a need for the
Linux kernel?  Aren't there enough open source operating systems already?  The
BSD projects have been around for decades.  Why have Python and Lua?  Perl has
been around forever.&lt;/p&gt;
&lt;p&gt;I'm sorry Martijn.  It's not because &lt;em&gt;you&lt;/em&gt; don't feel a certain open source
project is necessary that &lt;em&gt;everyone&lt;/em&gt; feels that way.&lt;/p&gt;
&lt;p&gt;The FOSDEM organization solicits motivated requests from open source projects
who feel they would benefit from a developer room.  The algorithm for deciding
which projects are allocated rooms does not take into account the fact that
some people may selfishly feel a project is &amp;quot;unnecessary&amp;quot;.  Our concern is to
get the maximum benefit to open source development from the limited space we
have available.&lt;/p&gt;
&lt;p&gt;FOSDEM is not interested in politics.  We don't want to be a forum for people
to tell other people that their work is unnecessary.  Strong language about
&amp;quot;battles&amp;quot;, &amp;quot;victories&amp;quot;, &amp;quot;defeats&amp;quot; and &amp;quot;allowing to sneak&amp;quot; should be left at
home.&lt;/p&gt;
&lt;p&gt;FOSDEM wants to be a productive environment for open source developers to
collaborate on their projects.  Whatever those projects may be.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/r3qkxBPeV2g" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/activism/real_programming.html</guid>
    <link>http://www.paeps.cx/weblog/activism/real_programming.html</link>
    <title>Real programming?</title>
    <pubDate>Mon, 23 Nov 2009 18:51 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Frank's &lt;a class="reference external" href="http://feedproxy.google.com/~r/futtta/~3/tV_QxPV82lU/"&gt;iPhone developers are stupid!&lt;/a&gt; post on &lt;a class="reference external" href="http://planet.grep.be/"&gt;Planet Grep&lt;/a&gt; today made me
a little grumpy.&lt;/p&gt;
&lt;p&gt;Stating that iPhone developers are &amp;quot;stupid&amp;quot; because they target a restrictive
environment is a bit blunt.  Further suggesting that all their problems would
magically go away if only they'd write &amp;quot;web applications&amp;quot; is criminally
short-sighted at best.&lt;/p&gt;
&lt;p&gt;While I'm happy to accept that some aspects of &amp;quot;web development&amp;quot; are &amp;quot;real
programming&amp;quot; (and I have great respect for some of the people who identify
themselves as &amp;quot;web developers&amp;quot;), I'm not so happy with the implication being
made that &amp;quot;web development&amp;quot; has somehow &lt;em&gt;obsoleted&lt;/em&gt; or &lt;em&gt;replaced&lt;/em&gt; what has
traditionally been considered as &amp;quot;real programming&amp;quot;.&lt;/p&gt;
&lt;p&gt;Frank seems to feel that all the things people want to implement natively
could just as well be expressed as &amp;quot;web applications&amp;quot;.  I beg to differ.  &amp;quot;Web
applications&amp;quot; may be a reasonable choice for applications involving the
manipulation of data in some way, but they're inherently unsuited to many
other things.&lt;/p&gt;
&lt;p&gt;The iPhone provides a lot of interesting hardware in a fairly compact
battery-powered package.  I can easily see people imagining things for it to
do which Apple did not intend it for.  Asserting that &amp;quot;web applications&amp;quot; could
be used to implement all these things suggests a very unrealistic worldview.&lt;/p&gt;
&lt;p&gt;I don't see &amp;quot;web applications&amp;quot; being used for interrupt handling or DMA or for
that matter anything that involves networking on any level beyond the payload
of a TCP stream.   While those low-level things can conveivably be driven by
&amp;quot;web applications&amp;quot; on the presentation layer, perhaps even down to the session
layer, something underneath still needs to &amp;quot;be there&amp;quot;.&lt;/p&gt;
&lt;p&gt;It must be incredibly frustrating to target an environment which only allows
&amp;quot;blessed&amp;quot; code to run, especially if the requirements for blessing are not all
technical and the organization responsible for the blessing has commercial
interests in not blessing code it deems to be threatening in some way.&lt;/p&gt;
&lt;p&gt;I'm not very impressed with the &amp;quot;stupid&amp;quot; label being applied to people who can
motivate themselves to target such restrictive environments and by extension
to everyone who is (&lt;em&gt;still?&lt;/em&gt;) not writing &amp;quot;web applications&amp;quot;.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/QQpnHYwd9y8" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/work/when_location_detection_goes_wrong.html</guid>
    <link>http://www.paeps.cx/weblog/work/when_location_detection_goes_wrong.html</link>
    <title>When location detection goes very wrong</title>
    <pubDate>Fri, 20 Nov 2009 13:36 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Android-based phones use a lot of databases in the sky to determine where
people are.  Not only does it use tower information, it also uses information
from nearby access points.  Presumably, Google has a small army driving around
all over the world, noting access points it finds.  Maybe they're the same
people who also take pictures of every building they see?&lt;/p&gt;
&lt;p&gt;Today, my phone suddenly decided that I was in Beijing.  Strange, I thought.
I had no recollection of getting on a plane, the air was breathable and the
people around me didn't look particularly Chinese.  Indeed, there was
overwhelming evidence that I was not in Beijing.&lt;/p&gt;
&lt;p&gt;A short while later, my phone decided that I was in Brest.  The one in
Belarus, on the border with Poland not the one in France, or the one in
Germany, both of which are at least in the same timezone as where I really am.&lt;/p&gt;
&lt;p&gt;From Beijing to Brest in under ten minutes and yet, I don't think I went
through any wormholes.  In fact, I was quietly sitting at my desk near
Antwerp.&lt;/p&gt;
&lt;p&gt;Highly entertaining.&lt;/p&gt;
&lt;p&gt;Of course, the building I'm sitting in contains an unusually high number of
access points.  Usually more than fifty, sometimes more than a hundred.  Have
Google's location soldiers been a bit too thorough collecting data near
factories where wireless access points are built?  Or do the databases get
confused when you give them too much data?  No idea.  I don't think the
databases or the source code used for location are publically available.&lt;/p&gt;
&lt;p&gt;There are a number of interesting drawbacks to the phone thinking it's in the
wrong location.  It gets the weather (very) wrong, but I can look outside to
know what the weather is like.  It also helpfully adjusts the clock to its
perception of local time.  This would be annoying if I used Google Calendar or
a similar application which (stupidly) keeps times for events local to where
you add the event to your calendar, rather than local to where the event will
take place.  Certain websites also feel they should speak to me in a different
language (and in this case, different scripts too).&lt;/p&gt;
&lt;p&gt;Unfortunately, while you can tell the phone not to use wireless location at
all, you can't tell it that you want GSM location but not WiFi location.
While WiFi access points move around (possibly quite a bit) between
manufacture and deployment, GSM location is a bit more deterministic.&lt;/p&gt;
&lt;p&gt;Because the access points may move again, there's probably not much point in
reporting the access points and their real location to Google.  It would be
much more useful to have the option to selectively disable sources of location
information with more granularity.&lt;/p&gt;
&lt;p&gt;I am realistic (cynical?) enough to know that turning location detection off
probably adds zero privacy benefit to compensate for the reduced functionality
(getting the right time as soon as you get off a plane, for instance) that I
just leave it on.&lt;/p&gt;
&lt;p&gt;If you're on the run for agents of an Evil Repressive Government, the first
thing you need to do is ditch your mobile phone.  Buy a new one (cash) if you
really need to call someone.  Or use a pay phone.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/zpzvTqQqx1s" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/activism/nmbs_very_thorough.html</guid>
    <link>http://www.paeps.cx/weblog/activism/nmbs_very_thorough.html</link>
    <title>NMBS very thorough</title>
    <pubDate>Tue, 17 Nov 2009 10:05 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;A couple of weeks ago, I cycled past a sign on my way to the station stating
that there would be &amp;quot;significant&amp;quot; traffic problems as they closed a crossing
for repair.  Of course, the sign didn't mention how these works would impact
train schedules or the ability of cyclists to cross the tracks.&lt;/p&gt;
&lt;p&gt;I sent an email off Infrabel, who supposedly maintains the rail
infrastructure, and got no fewer than three emails back to tell me that my
query was important to them and that I was assigned a &amp;quot;file number&amp;quot;.  Very
useful.&lt;/p&gt;
&lt;p&gt;More useful was the fact that my questions were actually answered the next day
by a very thorough Infrabel employee (with a title like &amp;quot;arrondissementschef&amp;quot;,
you presumably have to be thorough) and all was well: trains would run as
usual (note that this does not imply &amp;quot;on time&amp;quot;) and cyclists could cross the
tracks.&lt;/p&gt;
&lt;p&gt;This morning, I received yet another email noting that my &amp;quot;file&amp;quot; was still
open.  Uh...&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;My question was very thoroughly answered&lt;/li&gt;
&lt;li&gt;Why would I still be interested in the impact of roadworks between 30
October and 8 November on 17 November?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I guess the answer email just didn't cite the file number.&lt;/p&gt;
&lt;p&gt;Now if only the trains could run on time for a change...&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/2B2nnAZ1V88" height="1" width="1"/&gt;</description>
</item>
<item>
    <guid isPermaLink="true">http://www.paeps.cx/weblog/FreeBSD/fixing_strange_dhcp_behaviour.html</guid>
    <link>http://www.paeps.cx/weblog/FreeBSD/fixing_strange_dhcp_behaviour.html</link>
    <title>Fixing strange DHCP behaviour</title>
    <pubDate>Thu, 22 Oct 2009 09:33 GMT</pubDate>
    <description>&lt;div align="justify"&gt;
    
&lt;div class="document"&gt;


&lt;p&gt;Someone -- I thought it was &lt;a class="reference external" href="http://www.sigsegv.be/blog/"&gt;Kristof&lt;/a&gt;, but he claims not to have this problem
so it must be someone else -- told me a while ago that &lt;a class="reference external" href="http://www.telenet.be/"&gt;Telenet&lt;/a&gt;'s DHCP server
&amp;quot;exhibits weird behaviour&amp;quot;.  That sort of &lt;em&gt;mystery&lt;/em&gt; certainly gets the
hyperactive mind interested.&lt;/p&gt;
&lt;p&gt;For totally unrelated reasons, I found myself looking at a packet capture of
DHCP traffic on a Telenet connection.  Indeed, there was something very
strange in there.  The DHCP client would get a perfectly fine lease with
perfectly reasonably renewing and rebinding times.  When the renewing timer
(T1) expired, the client would unicast a &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPREQEST&lt;/span&gt;&lt;/tt&gt; to the server and
expect a unicast &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPACK&lt;/span&gt;&lt;/tt&gt; back.  Only the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPACK&lt;/span&gt;&lt;/tt&gt; would never arrive,
and the client would retransmit the unicast &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPREQUEST&lt;/span&gt;&lt;/tt&gt; messages until the
rebinding timer (T2) expired.  At that time, the client would broadcast a
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPREQUEST&lt;/span&gt;&lt;/tt&gt; after which the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPACK&lt;/span&gt;&lt;/tt&gt; would arrive.&lt;/p&gt;
&lt;p&gt;The fact that the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPACK&lt;/span&gt;&lt;/tt&gt; messages came through the DHCP relay server put
me on a side-track briefly.  I discovered that the DHCP server (mentioned in
option 54) would not respond to my DHCP requests.  While it makes perfect
sense to protect a DHCP server from clients, you do want your clients to be
able to get packets to them somehow.&lt;/p&gt;
&lt;p&gt;I sent some packet captures to a contact inside Telenet (thanks ;-) I couldn't
imagine trying to explain this to a helldesk!) wondering if they'd put too
sharp an access control list between me and the DHCP server (recently --
because I hadn't seen the problem before).  After some digging, they found
that I was sending my unicast &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPREQUEST&lt;/span&gt;&lt;/tt&gt; messages with a random source
port number.  From my reading of the RFC, this is &amp;quot;allowed&amp;quot;, but no one else
does it.  It turns out that Telenet does some sanity checking (sensible
precaution) on DHCP messages before allowing them to go to the DHCP server.
This sanity checking does not like (or recognize, presumably) DHCP messages
with a source port other than &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;bootpc&lt;/span&gt;&lt;/tt&gt; (68).&lt;/p&gt;
&lt;p&gt;FreeBSD's &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;dhclient&lt;/span&gt;&lt;/tt&gt; is a rather old version of ISC's reference
implementation, simplified by OpenBSD.  I found that OpenBSD has had a &lt;a class="reference external" href="http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/dhclient/bpf.c.diff?r1=1.15;r2=1.16"&gt;patch&lt;/a&gt;
for a couple of years that purported to fix this behaviour.  When I ported
this patch to FreeBSD however, I found that &lt;a class="reference external" href="http://www.freebsd.org/cgi/man.cgi?query=sendmsg&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+7.2-RELEASE&amp;amp;format=html"&gt;sendmsg&lt;/a&gt; would return
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;EINVAL&lt;/span&gt;&lt;/tt&gt;, which was not documented to ever happen.&lt;/p&gt;
&lt;p&gt;Again I wondered how people without source code to their operating systems get
through the day?  Do they resort to alcohol and panic at this stage?  I used
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DDB&lt;/span&gt;&lt;/tt&gt; to set a breakpoint on &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;sendmsg&lt;/span&gt;&lt;/tt&gt; and stepped through briefly,
expecting it to blow up somewhere quickly when copying in the iovec or so.  No
such luck however, and I found myself in &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;sosend_generic&lt;/span&gt;&lt;/tt&gt;, which is not so
much fun to step through without symbol information, so I set up remote
debugging so I could use ddd.&lt;/p&gt;
&lt;p&gt;Eventually, I found my way to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;rip_output&lt;/span&gt;&lt;/tt&gt; and found that my &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;EINVAL&lt;/span&gt;&lt;/tt&gt; came
from here:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
if (((ip-&amp;gt;ip_hl != (sizeof (*ip) &amp;gt;&amp;gt; 2)) &amp;amp;&amp;amp; inp-&amp;gt;inp_options)
    || (ip-&amp;gt;ip_len &amp;gt; m-&amp;gt;m_pkthdr.len)
    || (ip-&amp;gt;ip_len &amp;lt; (ip-&amp;gt;ip_hl &amp;lt;&amp;lt; 2))) {
        INP_RUNLOCK(inp);
        m_freem(m);
        return (EINVAL);
}
&lt;/pre&gt;
&lt;p&gt;Oh dear...:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
(gdb) p m-&amp;gt;M_dat.MH.MH_pkthdr.len
$6 = 328
(gdb) p ip-&amp;gt;ip_len
$7 = 18433
&lt;/pre&gt;
&lt;p&gt;Obviously (to the trained -- or strained -- eye which sees this kind of thing
often), 18433 and 328 are strikingly similar.  Indeed - it helps if you put
the bytes in the right order!&lt;/p&gt;
&lt;p&gt;For hysterical raisins, the raw socket interface on BSD-derived network stacks
expects the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ip_len&lt;/span&gt;&lt;/tt&gt; field of the IP header included when &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;IP_HDRINCL&lt;/span&gt;&lt;/tt&gt; is
sent to be in host byte order.  &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;dhclient&lt;/span&gt;&lt;/tt&gt; used to only send packets with
headers through the BPF, which will put the packet on the wire exactly as
given (ie: the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ip_len&lt;/span&gt;&lt;/tt&gt; needs to be in the right order).  For reasons which
don't seem to be explained in CVS history, OpenBSD decided to change this
behaviour in their network stack (making it differ from every other network
stack and many books written about sockets).&lt;/p&gt;
&lt;p&gt;To make a very long story short: I committed &lt;a class="reference external" href="http://svn.freebsd.org/viewvc/base?view=revision&amp;amp;revision=198352"&gt;revision 198352&lt;/a&gt; to make
&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;dhclient&lt;/span&gt;&lt;/tt&gt; on FreeBSD work in networks which put sharp teeth between DHCP
clients and servers.  Debugging the problem also kept me out of trouble for a
couple of hours.&lt;/p&gt;
&lt;p&gt;I'm told that finding the cause of weird errors in the protocol stack is now
significantly easier with DTrace.  I will have to find some time to play with
that.  While ddd &amp;quot;works&amp;quot;, it's not exactly the most pleasant tool to work
with.&lt;/p&gt;
&lt;p&gt;Entirely aside: I'm still not convinced that &amp;quot;sharp teeth&amp;quot; should care about
the source port of unicast &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;DHCPREQUEST&lt;/span&gt;&lt;/tt&gt; messages, but I'm happy to accept
that if everyone uses port 68, there's no reason to gratuitously differ from
that.  Thanks to the Telenetists for helping me look into this.&lt;/p&gt;
&lt;/div&gt;

    &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ppaeps/~4/bvUVOQ3tFC8" height="1" width="1"/&gt;</description>
</item>
</channel>
</rss>
