<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
    <title>Alex Muller</title>
    
    <link href="http://alex.mullr.net/blog/" />
    <updated>2013-04-30T18:05:38+01:00</updated>
    <id>http://alex.mullr.net/blog/</id>
    <author>
        <name>Alex Muller</name>
        <email>alex@mullr.net</email>
    </author>

    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/alexmuller" /><feedburner:info uri="alexmuller" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
        <title>Internal Tools and Infrastructure</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/V-1cvjHzzNU/" />
        <updated>2013-04-30T18:30:00+01:00</updated>
        <id>http://alex.mullr.net/blog/2013/04/internal-tools-and-infrastructure</id>
        <content type="html">&lt;p&gt;At everywhere I&amp;rsquo;ve worked so far I&amp;rsquo;ve been disappointed by the tools available
to employees to help them do their jobs better; put simply, I think every
company I&amp;rsquo;ve been a part of could have benefitted immensely from a simple
MediaWiki install.&lt;/p&gt;

&lt;p&gt;Obviously I&amp;rsquo;m aware that the lack of such a setup stems from a people problem
rather than a technical one, but it needn&amp;rsquo;t be a people problem. If there&amp;rsquo;s an
argument that can be made against the following setup, I would love to hear
it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install a wiki with text-based markup and an obvious, attributable change
log. Everyone who gets an email address with your company gets an account.&lt;/li&gt;
&lt;li&gt;The front page can only be edited by people who manage internal company
communications. It should link to other important parts of the wiki.&lt;/li&gt;
&lt;li&gt;Official policies and company documents can only be edited by a very limited
number of people.&lt;/li&gt;
&lt;li&gt;Everything else is a free-for-all, open to edit.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;To pick on MediaWiki specifically: it is &lt;em&gt;so&lt;/em&gt; good at handling all this kind
of stuff, with a visible history with each change attributed to users. I&amp;rsquo;ve
never come across an employee both malicious and stupid enough to bother
messing with this theoretical open wiki and doubt I ever will. And if such a
person did exist, they should be handled exactly as though they&amp;rsquo;d scribbled on
the walls.&lt;/p&gt;

&lt;p&gt;This is so appealing to me because I&amp;rsquo;m the kind of person who loves to read
things. I really enjoy poking through obscure documentation, and if I have the
ability to fix a typo easily, I&amp;rsquo;ll do it. On Wikipedia you might describe that
kind of person as a &lt;a href="https://en.wikipedia.org/wiki/Wikipedia:WikiGnome"&gt;WikiGnome&lt;/a&gt;. People should be encouraged to edit and to
make a mess, because for every well meaning employee who adds something useful
with bad syntax, there&amp;rsquo;s somebody like me who will make it neat. Win-win.&lt;/p&gt;

&lt;p&gt;This isn&amp;rsquo;t a technical problem. The software exists, and it&amp;rsquo;s really good. And
it shouldn&amp;rsquo;t be a people problem either.&lt;/p&gt;

&lt;p&gt;At this point, I&amp;rsquo;m probably just rehashing things that people smarter than me
have said before. If I was creating a company I intended to grow from scratch,
here&amp;rsquo;s how I&amp;rsquo;d start:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A MediaWiki install as detailed above.&lt;/li&gt;
&lt;li&gt;Internal services for employees have sane domain names with one internal
TLD: &lt;code&gt;http://calendar.muller/&lt;/code&gt;, &lt;code&gt;http://wiki.muller/&lt;/code&gt;, &lt;code&gt;http://mail.muller/&lt;/code&gt;,
etc&lt;/li&gt;
&lt;li&gt;Have an external domain that points to the same place, but only for
services you want available externally: &lt;code&gt;http://wiki.muller-network.com/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No, your department doesn&amp;rsquo;t get to buy a domain name, hire a
designer/developer and host a WordPress site just to show the rest of the
company how great you are. Use the wiki.&lt;/li&gt;
&lt;li&gt;Have well publicised places for employees to help you run your company
better (Running a news site? Can Finance employees easily report typos? &lt;strong&gt;&lt;em&gt;Why
not?!&lt;/em&gt;&lt;/strong&gt;).&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;A more concrete example&lt;/h2&gt;

&lt;p&gt;When I&amp;rsquo;ve got &lt;a href="https://xkcd.com/303/"&gt;a few minutes in between work&lt;/a&gt; here I might pop on
to &lt;a href="http://www.thetimes.co.uk/"&gt;The Times&lt;/a&gt; site, see what&amp;rsquo;s going on and find an article that takes my
fancy to skim.&lt;/p&gt;

&lt;p&gt;I did that the other day and found a pretty bad typo in an article, a remnant
of an editor suggesting a text change that somehow made it through the CMS
(part of the article text read &amp;ldquo;&lt;code&gt;&amp;lt;NO1&amp;gt;10&amp;lt;NO&amp;gt;ten-month&lt;/code&gt; [sic]&amp;rdquo;). What were my
options at that point?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email it to… someone. The editor? The digital editor? The article author?
Seems like a little bit of overkill to compose an email for a typo and send
it to people I don&amp;rsquo;t know.&lt;/li&gt;
&lt;li&gt;Leave a comment on the article, or do something else that any &amp;ldquo;normal&amp;rdquo; user
could.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Why is there no third option? Why is there no issue tracker for employees to
report problems, especially public-facing problems that make the company look
less impressive at its core job?&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not picking on The Times or The Sun here, just using them as an example
I&amp;rsquo;m familiar with: I&amp;rsquo;ve never seen this done well anywhere, but would love to
hear about examples.&lt;/p&gt;

&lt;p&gt;And if there are any good resources about internal tools and infrastructure
(perhaps even long-form articles or books?), I&amp;rsquo;d love to hear about them.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/V-1cvjHzzNU" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2013/04/internal-tools-and-infrastructure/</feedburner:origLink></entry>
    
    <entry>
        <title>On The Lab's blog: Designing for Receipt Printers</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/AQYsHgZLNM0/" />
        <updated>2012-12-03T19:20:00+00:00</updated>
        <id>http://alex.mullr.net/blog/2012/12/link-newsint-receipt-printers</id>
        <content type="html">&lt;p&gt;I wrote a bit for the office blog about our work writing HTML and CSS that ends
up printed on a bit of paper a couple of inches wide:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;For web developers, there’s no real technical challenge in the front-end
side of creating a publication; it’s all HTML and CSS with nothing to think
about other than how WebKit will render your page in black and white. But
this lack of difficulty is more than made up for with the tough constraints
imposed by the media and the size it’ll be printed at. The printable area is
less than 400 pixels wide and just 800 tall to avoid the unpleasant surprise
of waking up to a publication five metres long trailing across the floor.
Berg’s guidelines recommend that text should be sized no smaller than 20px
(and they’re dead on), but with letters so large and paper so small there
isn’t room to say much.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://labs.newsint.co.uk/blog/2012/12/designing-for-receipt-printers/"&gt;Designing for Receipt Printers (December 2012, News International R&amp;amp;D)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love the way that our blog looks and works. It&amp;rsquo;s an Octopress-based static
site. &lt;a href="https://twitter.com/BeJaiG"&gt;Bel&lt;/a&gt; created designs that look awesome, and &lt;a href="http://jalada.co.uk/"&gt;David&lt;/a&gt; and I
set the thing up.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/AQYsHgZLNM0" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2012/12/link-newsint-receipt-printers/</feedburner:origLink></entry>
    
    <entry>
        <title>Pirate Party UK</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/ezHJb-qOutw/" />
        <updated>2012-11-01T14:50:00+00:00</updated>
        <id>http://alex.mullr.net/blog/2012/11/pirate-party-uk</id>
        <content type="html">&lt;p&gt;(I originally wrote this article in about May of this year, when the news stories mentioned were current.)&lt;/p&gt;

&lt;p&gt;2012 is the year I joined my first political party.
After a bit of back-and-forth with my elected Member of Parliament (Conservative Mary Macleod)
in which we discussed &lt;a href="http://wiki.openrightsgroup.org/wiki/Communications_Capabilities_Development_Programme"&gt;the CCDP&lt;/a&gt;,
the High Court ruling against The Pirate Bay and
&lt;a href="http://www.bbc.co.uk/news/uk-17951067"&gt;Claire Perry&amp;rsquo;s dangerous crusade to censor the web&lt;/a&gt;,
I wrote this to her:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The Internet is being legislated by people who do not understand it.
I have not seen a single elected figure take any of the issues of
digital civil liberties seriously, and as a result I am incredibly
disheartened with the state of UK politics.
As a twenty-one year old I find that quite sad and I hope you do too.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I remember being on holiday in April two years ago, in a game camp in the middle of South Africa,
using a phone and a local SIM card to read about the Digital Economy
Bill vote on Twitter. I can still remember feeling entirely powerless, and the same&amp;rsquo;s happening now
with the three topics I mentioned to my MP &amp;mdash; different Government elected,
same mistakes being made.&lt;/p&gt;

&lt;p&gt;I wrote her that message two days before the local elections on the 4th of May
and was hoping for a little more of a reply than I actually ended up
receiving; her assistant simply noted that my concerns would be forwarded to
Ed Vaizey, who holds the title of &amp;ldquo;Minister for Culture, Communications and
Creative Industries&amp;rdquo;. While waiting for London Elects to announce the results
of the election for Mayor of London I (re)stumbled across the Pirate Party&amp;rsquo;s
site (led there, I think, by &lt;a href="https://tpb.pirateparty.org.uk/"&gt;their Pirate Bay mirror&lt;/a&gt;). For whatever
reason I had never before realised that their thinking was so aligned with mine.&lt;/p&gt;

&lt;p&gt;I wish they weren&amp;rsquo;t called the Pirate Party. It&amp;rsquo;s not going to do them a
single damn favour as awareness of them becomes more widespread. But having
just one more MP who can talk sense about all things digital in the House of
Commons (alongside &lt;a href="http://www.tom-watson.co.uk/digital-pledges"&gt;Tom Watson&lt;/a&gt;) would be hugely beneficial for the UK.&lt;/p&gt;

&lt;p&gt;Politics has made me feel nothing but frustration and disappointment for the
last couple of years. I&amp;rsquo;ve finally realised that (much like every aspect of life)
it&amp;rsquo;ll be far more productive to stop thinking negatively and put that energy
into contributing to a political party that has sensible policies relating to
issues I feel are the most important. Call me naïve, but I hope that
the next general election will see the vote spread far more evenly across
large and small parties, and the Pirate Party should be a piece of that.&lt;/p&gt;

&lt;p&gt;That paragraph contains a phrase it feels like it&amp;rsquo;s taken me too long to realise.
&lt;strong&gt;Sensible policies about issues &lt;em&gt;I&lt;/em&gt; think are important&lt;/strong&gt;.
Bad legislation will continue to magically appear unless people who understand the
issues involved make sure they&amp;rsquo;re vocal about the politicians who are doing it right.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve mentioned to a few friends recently that I&amp;rsquo;m constantly surprised by how few young people
are interested in the technical side of creating things for the web;
a tiny minority of the population want to learn what HTML is, let alone anything more involved than that.
Given how widespread the web is today and that it&amp;rsquo;s only going to grow,
I&amp;rsquo;d expect far more enthusiasm for web development.
That same idea applies equally to digital legislation,
but perhaps attitudes will change as those who have grown up with access to a computer start being elected.&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re interested in The Pirate Party, have a flick through &lt;a href="https://www.pirateparty.org.uk/media/uploads/Manifesto2012.pdf"&gt;their 2012 manifesto&lt;/a&gt;
which has recently been approved by members.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/ezHJb-qOutw" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2012/11/pirate-party-uk/</feedburner:origLink></entry>
    
    <entry>
        <title>Twitter, Tweet Nest and the Data Protection Act</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/pQ3zgQq69V4/" />
        <updated>2012-08-17T10:50:00+01:00</updated>
        <id>http://alex.mullr.net/blog/2012/08/twitter-tweet-nest-dpa</id>
        <content type="html">&lt;p&gt;I&amp;rsquo;ve had a copy of &lt;a href="http://pongsocket.com/tweetnest/"&gt;Tweet Nest&lt;/a&gt; running since &lt;a href="/blog/2011/02/tweet-nest/"&gt;the end of 2010&lt;/a&gt;,
pulling in a copy of my latest tweets twice a day.&lt;/p&gt;

&lt;p&gt;Unfortunately, as the nerds out there might be aware, Twitter allow access to
just your most recent 3200 tweets online. The only way to get a copy of your
older tweets is to &lt;a href="https://www.privacyinternational.org/blog/what-does-twitter-know-about-its-users-nologs"&gt;send them a request under the Data Protection Act
1998&lt;/a&gt;. Folks elsewhere in the EU should have similar legislation to
help them, but I&amp;rsquo;m not sure about other countries. To their credit, Twitter
complied with the request fully (as far as I can tell) and without making it too
painful for me (depending on how painful you consider having to send a fax).&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s the first twenty lines of the &lt;code&gt;alexmuller-tweets.txt&lt;/code&gt; file they sent:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


// Generated on:  2012-08-07 22:54:50 GMT+00:00
********************
user_id: 8645442
created_at: Tue Sep 04 14:02:10 +0000 2007
created_via: web
status_id: 246512472
text: Waiting for the Genius Bar

********************
user_id: 8645442
created_at: Tue Sep 04 16:47:24 +0000 2007
created_via: sms
status_id: 246822322
text: And I think my phone works...

********************
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;While it was good of them to supply so much information, there was really only
one thing I was interested in: the list of &lt;code&gt;status_id&lt;/code&gt;s of all my tweets.
Twitter provide the tweet text as part of this request, but strip other
interesting metadata such as location and source.&lt;/p&gt;

&lt;p&gt;With that, I used a rubbish bit of Python (with tweepy) to pull every bit of
JSON I could out of the Twitter API and save it to a file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import tweepy
import json
import time
import datetime

# I found this somewhere online. Add a .json attribute to just get the raw JSON.
@classmethod
def parse(cls, api, raw):
  status = cls.first_parse(api, raw)
  setattr(status, 'json', json.dumps(raw))
  return status

tweepy.models.Status.first_parse = tweepy.models.Status.parse
tweepy.models.Status.parse = parse

username = "YOUR_USERNAME"
password = "YOUR_PASSWORD"
auth = tweepy.auth.BasicAuthHandler(username, password)
api = tweepy.API(auth)

myfile = open('list_of_ids_to_grab.txt', 'r') # this is a list of tweet IDs
jsoncontents = open('tweets.json', 'a') # blank file

i = 1

for line in myfile.readlines():
  print i
  print datetime.datetime.now()
  line = line.strip()
  print line
  status = tweepy.api.get_status(line)
  print status.json
  time.sleep(25) # 150 an hour
  donetweets = open('done_tweets.txt', 'a') # blank file
  donetweets.write(line + "\n")
  donetweets.close()
  jsoncontents.write(status.json + "\n")
  i += 1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; this code is so wonderfully breakable that it will probably set
your machine on fire. You&amp;rsquo;ve been warned.&lt;/p&gt;

&lt;p&gt;Basic auth calls are limited to 150 an hour, so I left this running overnight to
complete. With the result, you can easily turn it into an array (wrap it in &lt;code&gt;[]&lt;/code&gt;
and add commas to each line, also known as the poor man&amp;rsquo;s way to code) and then
use &lt;a href="http://avalonstar.com/journal/2012/jan/11/let-tweetnest-accept-json/"&gt;Bryan Veloso&amp;rsquo;s beautiful script&lt;/a&gt; to import it into Tweet Nest.
It&amp;rsquo;s worth importing your older tweets first before setting up a repetitive job
to pull in new ones, or else you&amp;rsquo;ll have to do some MySQL funkery that I can
explain in more detail if you need (yell on Twitter).&lt;/p&gt;

&lt;p&gt;This script highlights a problem that Twitter mentioned again last night: basic
auth will not work for much longer. This is a huge issue for Tweet Nest too, as it
doesn&amp;rsquo;t use OAuth. I&amp;rsquo;m going to (attempt to) add OAuth support to it in the near
future.&lt;/p&gt;

&lt;p&gt;While you&amp;rsquo;re here, let&amp;rsquo;s have a quick look at what else they returned from the
DPA request. Apart from the normal stuff you shouldn&amp;rsquo;t be shocked to know
Twitter have access to (direct messages, favourites, followers and following),
these two things were surprising, though not massively so, to me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A list of all the phone numbers and email addresses that were stored on my
phone when I first ran the official Twitter iPhone app (1222 in total).&lt;/li&gt;
&lt;li&gt;A list of every IP address that has accessed my account for the last four
months (it&amp;rsquo;s fairly standard practice to store this).&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;For what it&amp;rsquo;s worth, I agree entirely with David Singleton, who
&lt;a href="https://twitter.com/dsingleton/status/236381916599836672"&gt;tweeted&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In case it wasn&amp;rsquo;t clear, I&amp;rsquo;m pretty worried about the twitter changes too. I
suspect many of them won&amp;rsquo;t be enforced, but still, dangerous.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;No matter how much you trust Twitter, it would be prudent to store a copy of
your own data.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/pQ3zgQq69V4" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2012/08/twitter-tweet-nest-dpa/</feedburner:origLink></entry>
    
    <entry>
        <title>Mid-2012 tech priorities</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/-w-g782rKAA/" />
        <updated>2012-08-05T08:05:00+01:00</updated>
        <id>http://alex.mullr.net/blog/2012/08/mid-2012-tech-priorities</id>
        <content type="html">&lt;p&gt;A quick update on how I&amp;rsquo;m feeling about technology and computer stuff, and where
my priorities are at the moment.&lt;/p&gt;

&lt;h2&gt;Security and ownership of data&lt;/h2&gt;

&lt;p&gt;Pretty much every password I use now is unique, and the ones that aren&amp;rsquo;t will be
soon. I only know a couple of them from memory, and most of the important ones
are over twenty characters. 1Password is still a dream come true. Password leak
after leak has meant I don&amp;rsquo;t trust anyone online any more (and probably never
should have).&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve changed the MX records (email provider) for this domain away from Google
Apps and over to FastMail.FM. I&amp;rsquo;ll register new accounts with this domain rather
than my &lt;code&gt;@gmail.com&lt;/code&gt; address, and will move important services over gradually.
I&amp;rsquo;m no longer comfortable with Google providing such an essential service for
free. I pay O2 in excess of £30 monthly for a phone; why on earth was I holding
out over £2.50 a month for email, which is arguably way more important?&lt;/p&gt;

&lt;p&gt;Dropbox is no longer my go-to place to shove everything into. Instead, I&amp;rsquo;ll be
even more anal about backup, soon setting up Crashplan to backup in an encrypted
fashion to a drive at (my parents') home. This&amp;rsquo;ll be more useful when it&amp;rsquo;s
actually an off-site backup.&lt;/p&gt;

&lt;p&gt;For services that store data on my behalf, I&amp;rsquo;ve become a bit crazy about
maintaining my own copy of that data. This includes keeping a copy of my Oyster
card history using &lt;a href="https://github.com/jwheare/mollusc"&gt;Mollusc&lt;/a&gt;, and sending Twitter a request under the
Data Protection Act so that I can get a copy of my first three thousand tweets
(they&amp;rsquo;ll be imported into &lt;a href="http://lighfe.mullr.net/tweetnest"&gt;Tweetnest&lt;/a&gt; soon).&lt;/p&gt;

&lt;h2&gt;Portability of data and striving to be lightweight&lt;/h2&gt;

&lt;p&gt;Much to &lt;a href="http://zethrae.us/"&gt;Adam&lt;/a&gt;&amp;rsquo;s amusement, I fear, I&amp;rsquo;ve become a bit militant about
the idea that web servers should serve HTML files whenever possible. To that
end, this blog is now using Jekyll to generate HTML files that are transferred
from my computer using &lt;code&gt;rsync&lt;/code&gt;. I was rather shocked to see just how slow
WordPress is:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://alexmuller.s3.amazonaws.com/static/blog/2012-08-05-pingdom-response-time.png" alt="Graph showing response time (ms) over time" /&gt;&lt;/p&gt;

&lt;p&gt;Nothing&amp;rsquo;s changed with regards to &lt;a href="/blog/2011/11/the-web-growing-up/"&gt;what I wrote about links&lt;/a&gt;; I&amp;rsquo;ve
tried to keep everything intact, and I think I&amp;rsquo;ve done pretty well. Old posts
look old. I still like that a lot.&lt;/p&gt;

&lt;h2&gt;Reading&lt;/h2&gt;

&lt;p&gt;The iPad&amp;rsquo;s no good for long reading for me, even with the Instapaper or Kindle
apps. Instead, I bought a (non-touch) Kindle from Amazon for my new commute and
set up Instapaper articles to be delivered wirelessly each week. It&amp;rsquo;s
incredible. The weight and the screen together make it a great reading
experience on the Tube.&lt;/p&gt;

&lt;h2&gt;Money and graphs&lt;/h2&gt;

&lt;p&gt;I finally got serious about boring grown-up stuff like dealing with money.
GnuCash is an excellent app, and I wish I&amp;rsquo;d been using it for years. I spend way
too much on food. This is yet another example of how right Etsy are when they
get shouty about &lt;a href="http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/"&gt;measuring everything&lt;/a&gt;. Graphing expenses isn&amp;rsquo;t
the most exciting thing in the world, but is so, so useful. For me personally, I
find it so much easier to improve something if I can see it changing over time.
A single GnuCash database that I can update both at my laptop and on an iPhone
doesn&amp;rsquo;t seem possible today, but that&amp;rsquo;s the ideal end goal.&lt;/p&gt;

&lt;p&gt;Later this year, I want to start graphing some of the data that&amp;rsquo;s generated by
the house I live in. &lt;a href="http://stanford-clark.com/"&gt;Andy Stanford-Clark&lt;/a&gt; gave a talk in York about
some of his home monitoring kit and it&amp;rsquo;s got me a bit excited (&lt;a href="http://tedxtalks.ted.com/video/TEDxWarwick-Andy-Stanford-Clark"&gt;his TEDx talk is
very similar&lt;/a&gt;). There are hugely practical uses, like figuring out
where in your house the majority of your electricity bill comes from so that you
can do something about it.&lt;/p&gt;

&lt;h2&gt;And that&amp;rsquo;s where I am right now&lt;/h2&gt;

&lt;p&gt;A bit of a mishmash of stuff. This is just what&amp;rsquo;s important to me this month, a
bit of a State of the Union brain fart.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/-w-g782rKAA" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2012/08/mid-2012-tech-priorities/</feedburner:origLink></entry>
    
    <entry>
        <title>Constrained optimisation to allocate modules at York</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/bR9Nu_iRimI/" />
        <updated>2012-03-26T21:05:20+01:00</updated>
        <id>http://alex.mullr.net/blog/2012/03/constrained-optimisation-allocate-modules-york</id>
        <content type="html">&lt;p&gt;A week ago today I handed in my final-year project in Computer Science (the
infamous dissertation that the fine people of Twitter are completely bored of
hearing me talk about). Like most in the department, mine consisted of about
20,000 words over seventy pages and a ten minute presentation describing the
work I&amp;rsquo;d been doing for the last year or so. According to the staff involved,
a University software project implemented by a student was something that had
never been tried before, and as I had such a fun time doing it I thought I&amp;rsquo;d
write a bit here. The aim was to create software that allocates students to
modules.&lt;/p&gt;

&lt;p&gt;The project had two fairly distinct halves: a web interface to let students
express their preferences for optional modules, and a bit of software to take
that input and do the allocation. The end result had to satisfy constraints
from the departments (e.g. a class can&amp;rsquo;t have more than &lt;em&gt;x&lt;/em&gt; students), while
also trying to keep students as happy as possible &amp;ndash; it&amp;rsquo;s a &lt;a href="https://en.wikipedia.org/wiki/Constraint_optimization"&gt;constrained
optimisation&lt;/a&gt; problem.
The more I think about it, this project could not have been any more perfect
for me; half web stuff, half maths. Lovely.&lt;/p&gt;

&lt;p&gt;The web development side of things was nothing too outrageously challenging. A
lot of research and testing with staff and students to make sure it was as
easy to use as possible, though the end product is just a jQuery &lt;code&gt;sortable&lt;/code&gt;
implementation. Those of you who have used the YUSU site to vote during
elections will recognise that this software goes for the same mental model.
Students in the Departments of History and Archaeology noticed that too, which
was wonderful. Here&amp;rsquo;s &lt;a href="https://vimeo.com/36601883"&gt;a bit of video&lt;/a&gt; of one of
the earlier functional prototypes (on an iPad, because iPads make everything
cooler) &amp;ndash; please excuse the music:&lt;/p&gt;

&lt;iframe src="http://player.vimeo.com/video/36601883?color=d0dae9" width="500" height="375" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""&gt;&amp;nbsp;&lt;/iframe&gt;


&lt;p&gt;The constrained optimisation and linear programming stuff was where it started
to get really interesting from a computer science point of view. The first I&amp;rsquo;d
heard of CO was in about May last year, so having &lt;a href="http://www-users.cs.york.ac.uk/~jc/"&gt;an expert
supervisor&lt;/a&gt; was more than a little
helpful. We used a solver (in this case &lt;a href="http://www.gurobi.com/"&gt;Gurobi&lt;/a&gt;) to
save a whole load of work on the implementation, and I&amp;rsquo;m shocked by how
powerful it is. It&amp;rsquo;s got wonderful interfaces for several languages and is
completely free for academic use! Linear programming and all that related gunk
is such a huge field that if you try hard enough I bet you&amp;rsquo;ll be able to think
of somewhere you could use it.&lt;/p&gt;

&lt;p&gt;Once it was all set up, it&amp;rsquo;s just a case of creating a ton of (binary)
variables, defining the objective function (what the solver should try to
achieve), loading in the constraints and hitting the big red button. This
system used the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binary variables: one for every possible allocation (an allocation is a
&lt;em&gt;student, module&lt;/em&gt; pair), set to 1 if the student is allocated the module or
0 otherwise.&lt;/li&gt;
&lt;li&gt;Objective function: a linear function that can be maximised or minimised by
the solver. I chose to include every binary variable with a coefficient
indicating the &amp;ldquo;goodness&amp;rdquo; of that allocation, which is based on the rank the
student gave.&lt;/li&gt;
&lt;li&gt;Constraints: each class had a maximum and minimum size, and each student had
to take the required number of classes.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We&amp;rsquo;re talking about painfully simple code to interact with Gurobi, too. Here&amp;rsquo;s
a bit of it in Python:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from gurobipy import *

model = Model("modalloc") # new Gurobi model
gurobivar = model.addVar(vtype=GRB.BINARY, name=student+"_"+module) # new binary var
model.update()
objfn = LinExpr() # objective function
objfn.addTerms(rank_coeff[ranks[(student, module)]], gurobimavs[student][module])
model.addConstr(num_students &amp;lt;= modules[module]['max'], "classmax") # constraint
model.optimize()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(There&amp;rsquo;s a slightly &lt;a href="https://gist.github.com/1790565"&gt;more fully-featured
gist&lt;/a&gt; available, if you&amp;rsquo;re that way
inclined…)&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;35 days until actual students start using my software. 50 days until the dissertation is due. 97 days until I finish at York. Gulp?&lt;/p&gt;&amp;mdash; Alex Muller (@alexmuller) &lt;a href="https://twitter.com/alexmuller/status/161553180281409537" data-datetime="2012-01-23T20:57:34+00:00"&gt;January 23, 2012&lt;/a&gt;&lt;/blockquote&gt;


&lt;p&gt;I think what I love most about this software is that it&amp;rsquo;s a great example of a
nice modular web project: none of the parts by themselves are horrendously
complex, but they come together to make a system that &lt;strong&gt;actually solved a
problem&lt;/strong&gt; &amp;ndash; code I wrote was used by 800 students in two departments, and the
data it generated is now stored in the central student database. All my
fingers are crossed that &lt;a href="http://www.york.ac.uk/it-services/"&gt;IT Services in
York&lt;/a&gt; will be able to take the code on,
spruce it up a little and offer it to many more departments next year. &lt;a href="https://github.com/alexmuller/york-dissertation"&gt;The
report&amp;rsquo;s on GitHub&lt;/a&gt;, but
private at the moment. I&amp;rsquo;ll make it public once it&amp;rsquo;s marked if I&amp;rsquo;m able to.&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Final-year project: simultaneously the best, worst, scariest and fun (academic) thing I've ever done.&lt;/p&gt;&amp;mdash; Alex Muller (@alexmuller) &lt;a href="https://twitter.com/alexmuller/status/165100523882692608" data-datetime="2012-02-02T15:53:26+00:00"&gt;February 2, 2012&lt;/a&gt;&lt;/blockquote&gt;




&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;The most proud I've ever been of anything. (If there's a typo on the front page I'm exiting via a 3rd floor window) &lt;a href="http://t.co/JkVCwHQN" title="http://twitpic.com/8y0t1n"&gt;twitpic.com/8y0t1n&lt;/a&gt;&lt;/p&gt;&amp;mdash; Alex Muller (@alexmuller) &lt;a href="https://twitter.com/alexmuller/status/181375873281306624" data-datetime="2012-03-18T13:45:52+00:00"&gt;March 18, 2012&lt;/a&gt;&lt;/blockquote&gt;

&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/bR9Nu_iRimI" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2012/03/constrained-optimisation-allocate-modules-york/</feedburner:origLink></entry>
    
    <entry>
        <title>The web, growing up</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/24TtZnl2cak/" />
        <updated>2011-11-20T15:42:29+00:00</updated>
        <id>http://alex.mullr.net/blog/2011/11/the-web-growing-up</id>
        <content type="html">&lt;p&gt;Jeremy Keith &lt;a href="http://huffduffer.com/adactio/56305"&gt;recently huffduffed&lt;/a&gt; a
conversation about digital preservation. It revolves around the creation of
archiving software that will hopefully help reduce the impact of &lt;a href="http://en.wikipedia.org/wiki/Link_rot"&gt;link
rot&lt;/a&gt; on the web.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(That conversation is interesting, and you should definitely have a listen.
What follows is only tangentially related.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This audio got me thinking about something that had always niggled at me in
the past: the BBC not updating old article styles when they change the
appearance of BBC News. Take, for example, what must be one of the most viewed
BBC News articles of all time: &amp;ldquo;&lt;a href="http://news.bbc.co.uk/1/hi/world/americas/1537469.stm"&gt;US rocked by terror attacks&lt;/a&gt;&amp;rdquo;,
published on Tuesday 11 September 2001.&lt;/p&gt;

&lt;p&gt;The BBC News site has gone through a thousand and one different looks over the
last ten years (most of which spent a few weeks receiving hateful comments),
but that article still looks exactly as it did on the day it was published.
Contrast that with similar articles dated 2001 from &lt;a href="http://www.guardian.co.uk/world/2001/sep/26/afghanistan.terrorism3"&gt;The
Guardian&lt;/a&gt;,
&lt;a href="http://www.wired.com/politics/law/news/2001/09/47109"&gt;Wired&lt;/a&gt; and &lt;a href="http://www.nytimes.com/2001/09/13/us/after-attacks-united-flight-93-doomed-flight-passengers-vowed-perish-fighting.html"&gt;The New
York Times&lt;/a&gt;,
and you can see they all match the current look of the site they&amp;rsquo;re a part of.&lt;/p&gt;

&lt;p&gt;What the BBC are doing had always bothered me subconsciously, and now
something&amp;rsquo;s changed. I&amp;rsquo;m not sure if it&amp;rsquo;s the audio that Jeremy posted which
has swayed me, but suddenly I find myself really liking what the BBC are
doing. I love that that article is still at exactly the same URL it was when
it was published. I love that the source is filled with &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;s, &lt;code&gt;&amp;lt;map&amp;gt;&lt;/code&gt;s
and &lt;code&gt;&amp;lt;font&amp;gt;&lt;/code&gt;s. And I love that the whole thing is 600 pixels wide.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s a piece of history. Even though the BBC have been criticised by many for
taking historical content offline (including Jeremy, who &lt;a href="http://bbc.adactio.com/"&gt;hosts a sample of
that content&lt;/a&gt;), I hadn&amp;rsquo;t realised how much I
appreciate everything they put into BBC News.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m going to try my best to do the same with everything I publish:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;URLs that never change.&lt;/li&gt;
&lt;li&gt;Individual articles that look exactly as they did when they were published.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The first will be a challenge, since I&amp;rsquo;m already falling out of love with this
domain name.&lt;/p&gt;

&lt;p&gt;As to the second, I&amp;rsquo;ve made a start using the &lt;a href="http://wordpress.org/extend/plugins/custom-post-template/"&gt;Custom Post
Template&lt;/a&gt; plugin
for WordPress. My post on &lt;a href="/blog/2007/07/university-of-york/"&gt;York a year before I arrived
here&lt;/a&gt; (reading that
again is &lt;em&gt;so&lt;/em&gt; odd) looks almost exactly as it did when it was first posted.
(Yorkies: the Louis mentioned in that post is &lt;a href="http://www.louismrose.me.uk/"&gt;Louis
Rose&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;And if I move away from WordPress in the future, it should be relatively easy
to just keep shuffling the plain old HTML around so that everything keeps
looking the same.&lt;/p&gt;

&lt;p&gt;Most of all, I love that that York post now looks as old as it is. It was
written by a sixteen-year-old in 2007, and it should look like it was designed
by one too.&lt;/p&gt;

&lt;h3 id="comments"&gt;One Comment&lt;/h3&gt;




&lt;ol class="commentlist"&gt;
&lt;li class="comment even thread-even depth-1" id="comment-28665"&gt;
&lt;div id="div-comment-28665" class="comment-body"&gt;
&lt;div class="comment-author vcard"&gt;
&lt;cite class="fn"&gt;&lt;a href='http://zethrae.us' rel='external nofollow' class='url'&gt;zethraeus&lt;/a&gt;&lt;/cite&gt; &lt;span class="says"&gt;says:&lt;/span&gt;       &lt;/div&gt;

&lt;div class="comment-meta commentmetadata"&gt;&lt;a href="http://alex.mullr.net/blog/2011/11/the-web-growing-up/#comment-28665"&gt;
14 January 2012 at 23:58&lt;/a&gt;        &lt;/div&gt;

&lt;p&gt;I think online identity is too important to lots of people and companies for them to be ok with keeping old content and layouts unadulterated. And what are you meant to do with entry portals that need to be updated with current information?&lt;/p&gt;

&lt;p&gt;As a user though, it would be lovely to have a wikipedia-esque revision history for every page ever.
Consider signing up for pinboard&amp;#8217;s archival service. When you bookmark something, the page gets saved in its current state. It&amp;#8217;s like the wayback machine, except you have control over when an archiving happens and it&amp;#8217;s completely searchable.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;



&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/24TtZnl2cak" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2011/11/the-web-growing-up/</feedburner:origLink></entry>
    
    <entry>
        <title>Site verification</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/Y9DiLhftCM4/" />
        <updated>2011-09-22T13:23:38+01:00</updated>
        <id>http://alex.mullr.net/blog/2011/09/site-verification</id>
        <content type="html">&lt;p&gt;&lt;img src="http://alexmuller.s3.amazonaws.com/static/blog/2011-09-22-webroot.png" alt="Screenshot of a root directory of a web server" /&gt;&lt;/p&gt;

&lt;p&gt;Is it just the root of my server that looks a bit like this? With the upcoming
launch of Twitter&amp;rsquo;s analytics service for website owners (which will
presumably require some kind of verification), I was wondering:&lt;/p&gt;

&lt;p&gt;Why isn&amp;rsquo;t there a standard, similar to
&lt;a href="http://www.robotstxt.org/"&gt;robots.txt&lt;/a&gt;, for verifying that you own a domain?
&lt;code&gt;verification.txt&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;&lt;img src="http://alexmuller.s3.amazonaws.com/static/blog/2011-09-22-verificationtxt.png" alt="Screenshot of an example verification.txt
file" /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;google: Pt8rpfeQC4SCyzABFilZiJC5Tqw8f
googlehosted: Rb0S6k5si3nOj5rVfPmnzU0pYit
bing: eXB4oWQR1iVLtKp6Yk2hTq7N7JPjmoX5
yahoo: y_key_uyxZucu9dvrzsr3PWaYx9G5gLT
twitter: rqcSmFJIlugbPjXvI6vGuZi7YCiWXYR
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I can&amp;rsquo;t think of a reason each service needs more than a few alphanumeric
characters for this.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/Y9DiLhftCM4" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2011/09/site-verification/</feedburner:origLink></entry>
    
    <entry>
        <title>Contingency</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/f4w0dND0WEc/" />
        <updated>2011-05-28T09:18:00+01:00</updated>
        <id>http://alex.mullr.net/blog/2011/05/contingency</id>
        <content type="html">&lt;p&gt;I&amp;rsquo;ve been thinking quite a lot recently about contingency plans, I think
partially spurred on by (re-)finding &lt;a href="http://al3x.net/2008/09/08/al3xs-rules-for-computing-happiness.html"&gt;Alex Payne&amp;rsquo;s rules for computing
happiness&lt;/a&gt;.
His rules have encouraged me to try and keep things as simple as possible, and
to not to rely too much on anything that&amp;rsquo;s far outside my control.&lt;/p&gt;

&lt;p&gt;So, I present a few scenarios that could easily happen over the next few
years. While I hope none of them do, thinking about it in advance can&amp;rsquo;t hurt.&lt;/p&gt;

&lt;h3&gt;What if Apple stopped making the best OS?&lt;/h3&gt;

&lt;p&gt;This is becoming more of a worry with news dripping out about OS X Lion &amp;ndash;
Apple seem to be moving towards a simpler, iOS-like experience on the desktop.
And while I hope they never abandon the nerds who love using OS X for
development, I&amp;rsquo;ve got a horrible feeling we might wake up one day and find the
command line gone.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;d still keep using Apple hardware (it&amp;rsquo;s the best, see below), but I&amp;rsquo;d
probably move to a Linux distribution. I&amp;rsquo;ve thought about this a bit recently,
and I reckon the reason I&amp;rsquo;m such a fan of OS X is because it&amp;rsquo;s much more
closely related to a LAMP server than Windows 7; making web development and
testing that bit easier. Moving to from OS X to Linux would make more sense
than moving from OS X to Windows.&lt;/p&gt;

&lt;p&gt;Perhaps Ubuntu to start with, and then another distribution if I my needs
changed or I felt a little more adventurous. Depending on how easily they
installed on Apple hardware, of course, I&amp;rsquo;ve not looked in to that.&lt;/p&gt;

&lt;h3&gt;What if Apple stopped making the best hardware?&lt;/h3&gt;

&lt;p&gt;It&amp;rsquo;s really hard to imagine a world in which the quality of MacBook Pros drops
so far that they&amp;rsquo;re no longer appealing. Given what I&amp;rsquo;ve seen recently at work
I wouldn&amp;rsquo;t ever touch a Dell. I think a souped-up Lenovo ThinkPad might do the
job quite nicely. An IBM ThinkPad T21 was my first laptop back the early
2000s, don&amp;rsquo;t cha know?&lt;/p&gt;

&lt;p&gt;They seem like they make decent quality, not-beautiful-but-not-ugly laptops. A
cursory glance at their online store suggests something like a ThinkPad X220
might work. £1100 for a 12.5 inch 1366x768, Core i3, 8GB RAM, 128GB SSD is
comparable to a MacBook Pro on price though; the argument that &amp;ldquo;Apple is more
expensive&amp;rdquo; seems to have been well and truly eroded.&lt;/p&gt;

&lt;p&gt;A couple of months ago, &lt;a href="http://www.engadget.com/2011/03/18/lenovo-thinkpad-x220-review/"&gt;Engadget called
it&lt;/a&gt; &amp;ldquo;arguably
one of the best laptops [they&amp;rsquo;ve] ever tested&amp;rdquo;. That&amp;rsquo;ll do.&lt;/p&gt;

&lt;h3&gt;What if Twitter shut up shop?&lt;/h3&gt;

&lt;p&gt;This would be really tough. Twitter is a few things to me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It&amp;rsquo;s a place to meet new people with similar interests. I suppose I&amp;rsquo;d have to spend more time using Convore, Reddit, IRC? I&amp;rsquo;ve met quite a few people because of Twitter, and even got a few freelance web development jobs that turned out really well.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s a place to socialise with friends; Facebook would probably get that traffic.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s a place to find out the latest news that I&amp;rsquo;m interested in. At a few job interviews the interviewer has asked me how I keep up to date with the latest web goings-on. I haven&amp;rsquo;t been able to think of a better answer than Twitter and RSS.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;I&amp;rsquo;d start blogging a lot more, and probably investigate installing my own
service that would allow me to keep posting brief updates.&lt;/p&gt;

&lt;h3&gt;What if Spotify closed down?&lt;/h3&gt;

&lt;p&gt;Simply put, I&amp;rsquo;d have to find somewhere else to get my music. I&amp;rsquo;ve recently
started paying £5/month for Spotify, and I&amp;rsquo;m sure there&amp;rsquo;s another service that
would do suitably well as a replacement, though probably not with the same
huge catalog. Last.fm (especially the radio) would probably get a lot more use
from me.&lt;/p&gt;

&lt;h3&gt;What if Dropbox turned (more) evil?&lt;/h3&gt;

&lt;p&gt;I&amp;rsquo;d head over to Amazon and buy the smallest, cheapest USB flash drive they
had going, and put it on my keys. We&amp;rsquo;ve got a few &lt;a href="http://www.amazon.co.uk/dp/B00422DCB6/"&gt;Sandisk Cruzer
Blades&lt;/a&gt; at work; they&amp;rsquo;re currently
under £14 for 16GB, and the price of flash memory drops every day. And
Verbatim do 16GB in fingernail-size for £24, so that&amp;rsquo;d be another to go for.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t think there&amp;rsquo;s a service currently available that offers the same
convenience as Dropbox. And if the only file-syncing solutions are stupidly
tough to use, I&amp;rsquo;d rather go back to carrying round my data with me.&lt;/p&gt;

&lt;h3&gt;What if the iPhone stopped being so damn attractive?&lt;/h3&gt;

&lt;p&gt;I&amp;rsquo;d probably go the route of webOS first &amp;ndash; there&amp;rsquo;s something fundamental about
the lack of attention to detail of Android that really bothers me.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;d try the latest HP/Palm Pre in an O2 store, and see whether that works for
me. And if not, probably whatever the latest HTC Desire S or Google Nexus S
type &lt;em&gt;thing&lt;/em&gt; is.&lt;/p&gt;

&lt;h3&gt;And on, and on, and on&lt;/h3&gt;

&lt;p&gt;What&amp;rsquo;s the one service that you completely rely on? And what would you do
without it?&lt;/p&gt;

&lt;h3 id="comments"&gt;3 Comments&lt;/h3&gt;




&lt;ol class="commentlist"&gt;
&lt;li class="comment even thread-even depth-1" id="comment-21192"&gt;
&lt;div id="div-comment-21192" class="comment-body"&gt;
&lt;div class="comment-author vcard"&gt;
&lt;img alt="" src="http://0.gravatar.com/avatar/a3406e66dc2a5e80bbc2fd7d5342cc22?s=64&amp;amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;amp;r=R" class="avatar avatar-64 photo" height="64" width="64"&gt;      &lt;cite class="fn"&gt;&lt;a href="http://feedmechocolate.com/" rel="external nofollow" class="url"&gt;Chris Mear&lt;/a&gt;&lt;/cite&gt; &lt;span class="says"&gt;says:&lt;/span&gt;        &lt;/div&gt;

&lt;div class="comment-meta commentmetadata"&gt;&lt;a href="http://alex.mullr.net/blog/2011/05/contingency/#comment-21192"&gt;
31 May 2011 at 9:29&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;I think you forgot Gmail.&lt;/p&gt;

&lt;p&gt;I’m not overly concerned about switching OSs per se, supposing Apple goes down the pan. (I mean, it’d be a shame; they make nice stuff. But let’s assume that they go down the pan because they stop making nice stuff.) I’ve switched OS before, and I can do it again.. What’s more concerning is the amount of money I’ve sunk into first- and third-party software and accessories for their platforms over the last ten years.&lt;/p&gt;

&lt;p&gt;As a side note, I think it’s pretty safe that as long as the Mac is the development platform for iOS apps, development tools on the Mac won’t be going away anytime soon.&lt;/p&gt;
&lt;div class="reply"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class="comment byuser comment-author-Alex bypostauthor odd alt thread-odd thread-alt depth-1" id="comment-21728"&gt;
&lt;div id="div-comment-21728" class="comment-body"&gt;
&lt;div class="comment-author vcard"&gt;
&lt;img alt="" src="http://1.gravatar.com/avatar/d246cb5bf5f9a50983d63256a93f8751?s=64&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;amp;r=R" class="avatar avatar-64 photo" height="64" width="64"&gt;      &lt;cite class="fn"&gt;&lt;a href="http://alex.mullr.net/blog/" rel="external nofollow" class="url"&gt;Alex Muller&lt;/a&gt;&lt;/cite&gt; &lt;span class="says"&gt;says:&lt;/span&gt;       &lt;/div&gt;

&lt;div class="comment-meta commentmetadata"&gt;&lt;a href="http://alex.mullr.net/blog/2011/05/contingency/#comment-21728"&gt;
4 June 2011 at 7:33&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;You’re right – totally forgot Gmail! I wonder whether that’s a scary indication of how much I take it for granted. I need to start moving over to using the address attached to this domain; it’s still Google Apps-based, but at least that means it’s far easier to switch away in the future.&lt;/p&gt;
&lt;div class="reply"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class="comment even thread-even depth-1" id="comment-23830"&gt;
&lt;div id="div-comment-23830" class="comment-body"&gt;
&lt;div class="comment-author vcard"&gt;
&lt;img alt="" src="http://1.gravatar.com/avatar/354e5d7f4e925189610905100eeeb34e?s=64&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D64&amp;amp;r=R" class="avatar avatar-64 photo" height="64" width="64"&gt;      &lt;cite class="fn"&gt;&lt;a href="http://cullen-online.com" rel="external nofollow" class="url"&gt;Michael&lt;/a&gt;&lt;/cite&gt; &lt;span class="says"&gt;says:&lt;/span&gt;      &lt;/div&gt;

&lt;div class="comment-meta commentmetadata"&gt;&lt;a href="http://alex.mullr.net/blog/2011/05/contingency/#comment-23830"&gt;
7 July 2011 at 23:18&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Interesting post considering what apple are doing to final cut…&lt;/p&gt;

&lt;p&gt;As for phones, I recon you’d be better with a nexus than palm pre – purely due to app support…&lt;/p&gt;
&lt;div class="reply"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;



&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/f4w0dND0WEc" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2011/05/contingency/</feedburner:origLink></entry>
    
    <entry>
        <title>Log files, laziness and stupidity</title>
        <link href="http://feedproxy.google.com/~r/alexmuller/~3/ZMwBKveC50k/" />
        <updated>2011-05-21T10:47:16+01:00</updated>
        <id>http://alex.mullr.net/blog/2011/05/log-files-laziness-and-stupidity</id>
        <content type="html">&lt;p&gt;Up until a few months ago, my site was hosted by the lovely people at
&lt;a href="https://www.nearlyfreespeech.net/"&gt;NearlyFreeSpeech.NET&lt;/a&gt;. Although I&amp;rsquo;ve had a
Linode since the end of 2009 for development, sheer laziness had stopped me
from moving this WordPress installation from NFS to my virtual server.&lt;/p&gt;

&lt;p&gt;With hindsight, I did several stupid hosting-related things over the last year
and a bit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If I had just got around to it and moved the site from NearlyFreeSpeech to
 my Linode in January 2010, I would&amp;rsquo;ve saved myself $100 in payments to NFS.&lt;/li&gt;
&lt;li&gt;Why so much? Well, if I had kept an eye on what was going on I would have
 noticed that I had (for some bizarre reason, which we&amp;rsquo;ll chalk up to
 ignorance) disabled log file rotation in the NFS admin interface. Which meant
 that every time somebody visited my site, the log file grew, and grew, and
 grew. And I paid for it. If I had enabled log file rotation, I still would
 have been out $40. But not a hundred.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Here&amp;rsquo;s a graph of my monthly payments to NearlyFreeSpeech:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://alexmuller.s3.amazonaws.com/static/blog/2011-05-21-nfsn-costpermonth.png" alt="NearlyFreeSpeech.NET cost per month" /&gt;&lt;/p&gt;

&lt;p&gt;This isn&amp;rsquo;t a knock at NFS: they provide a great service for very reasonable
prices, as long as you don&amp;rsquo;t want to store too much stuff with them. I&amp;rsquo;d still
happily recommend them for small(ish) sites.&lt;/p&gt;

&lt;p&gt;Part of the reason I kept putting off the move was a worry that something
would break and I wouldn&amp;rsquo;t be able to repair it. But the reason I rented a
Linode in the first place was to learn more about how server maintenance and
configuration works; I now know that &amp;ldquo;it might break&amp;rdquo; isn&amp;rsquo;t a good enough
excuse.&lt;/p&gt;

&lt;p&gt;The next time I procrastinate over something simple that could end up costing
me $100, I&amp;rsquo;m going to slap myself hard and re-read this post.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/alexmuller/~4/ZMwBKveC50k" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://alex.mullr.net/blog/2011/05/log-files-laziness-and-stupidity/</feedburner:origLink></entry>
    
 
</feed>
