Site search

December 2016
« Jul    



Google streethawk

Finally Google Streetview has gone nationwide. I can even see my [,+Hampshire+SO53+4LZ,+United+Kingdom&ll=50.97999,-1.407146&spn=0.002432,0.005043&z=18&layer=c&cbll=50.979988,-1.407019&panoid=IYEVQuVVJgIutZh9fpinvQ&cbp=12,204.94,,1,1.79 first house] down in Chandlers Ford when I worked at IBM Hursley, ah, fond memories.

I was just telling my dad how I use streetview when visiting new places – I generally take a look the day before, then on the day I just have a map printed out and use that. The fact that the streets seem familiar really help. Of course now I have a shiny android phone with Google maps anyway :-)

What would be really neat is a [ Streethawk] style “accelerated time” drive though for directions. I don’t think you need the whole journey – generally just the end bit (or complicated junctions). In fact, just being able to find the carpark is often the hardest bit – being able to spot “ah, turn left just before the pub” would be excellent. Naturally as [ augmented reality] takes off we’ll be able to look forward to arrows overlayed on our car windscreens (or [ bike helmets]).

udev rules for Logitech G7 mouse

Recently, X.Org has been removing HAL from the requirement list. This is good except that it means reconfiguring things. Again.

I have a Logitech G7 mouse and it has a side button which defaults to “back”. I like it remapped to “middle button” (which pastes text in Unix). I used to use a ButtonMapping in xorg.conf but a while ago that stopped working and thanks to [ this post] I edited /etc/hal/fdi/policy/preferences.fdi and normally returned.

After this most recent breakage I found that I could fix things by running:
“xinput set-button-map 8 1 8 3 4 5 6 7 2”

This was hardly satisfactory. So a bit of google, quite a lot of cursing (such as “how on Earth are you supposed to figure this stuff out”), I’ve combined the previous post and [ this post](broken link) about udev and X. My /etc/udev/rules.d/z00_local.rules now contains this:

# I want my mouse buttons working
ACTION!="add|change", GOTO="local_end"
ENV{ID_INPUT_MOUSE}=="?*",ENV{x11_options.ZAxisMapping}="4 5 6 7" 
ENV{ID_INPUT_MOUSE}=="?*",ENV{x11_options.ButtonMapping}="1 8 3 4 5 6 7 2"

I’m now happy again. Until the next breakage.

SSL breakage and client verification

Hopefully this may help others.

I’ve recently been trying for an SSL certificate for a customer. Their wizard unfortunately insists upon generating them with “www” in front (although it provides altname of “DNS:,” (names altered BTW)) – however firefox ain’t happy. So I’m going to get them to sign my CSR.

However I couldn’t login – it failed with:

The page you are trying to view can not be shown because the authenticity of the received data could not be verified.

After trying to figure out WTF was happening, I’ve finally found: [ #561918]. This is the real problem. Unfortunately there isn’t a straightforward solution as the reason it was disabled was due to a nasty bug someone found in SSL renegotiation.

The workaround for now is to start firefox with:


Getting things done – one year on

It’s been a year since I started using [ Getting Things Done] methodology. Even whilst reading the book I couldn’t wait to get started.

How has the last year worked out? Do I still use GTD or was it just a flash in the pan, a fad destined to die a death?

“Brilliant” would sum it up. I still use [ Tracks] constantly. I’m not as regimented as perhaps the book would like me to be, partly that’s just my nature – a bit of procrastination here, a bit of I don’t feel like it there. However I’m a firm believer in “do what works for you” – if I did follow “the letter of the book” I wouldn’t be enjoying life as much and that’s far more important to me.

However I’m using it in a way that works very well for me – more as a philosophy than anything else. Whilst I still feel that making so many lists or updating my calendar’s with people’s birthdays is overkill, I _know_ that isn’t true. I’m warned when birthdays are coming up so I don’t have a last minute panic.

Some people have commented “well that’s just a tiny thing, why on earth bother putting it on a list” (for example – cover up a mark on a wall). Well, it’s not convenient to fix it there and then, yet each time I leave the house I notice it. One day, it _will_ be convenient and then I’ll have fixed it. Putting it on a list just means that it’s like to be fixed sooner and more importantly, when I walk past it, it doesn’t bother me – I _know_ it’s on the list.

This approach of moving things out of your mind to somewhere less distracting is a huge boon to well being. Last year I left my old work and started working for myself (which is going very well so far). As you can imagine there are huge number of things to do or ideas to investigate (products, marketing, opportunities). I’d been planning to move for some time and being able to write my thoughts down was very useful. On my “business” project there are 104 tasks, of which I’ve done 74. The remaining items are mostly just awaiting my time or the right time. I don’t worry that there are 30, I occasionally review my entire list of outstanding items and flag any that I feel I should pay more attention to.

The ability to quickly and easily add items means that I’ve accomplished a lot of things that I never would have done otherwise. For instance in the last four days I’ve:
* added cacertdir support into my puppet modules
* changed the “back” button on my mouse into “middle click” on my laptop
* had a look at the [ Puppet dashboard] and written a blog entry about it
* added a bitcube logo to this website linking to my business website
* written a [ Dropbox Nagios check] for use by both a customer and myself
* setup automatic ham/spam training on my email server
* moved my personal Unix setup (less, vim, .profile) into puppet

That’s unusually productive for me, however I’d like to highlight just one – the mouse button change. I was working at a client site and this little annoyance occurred. I didn’t really want to fix it there and then as I felt that it wouldn’t be particularly professional. In the old days I’d have sent myself an email to home (indeed if it’s urgent this is what I still do). However it wasn’t a big deal so added it to my todo list. Earlier tonight I was browsing my list, saw it and fixed it in two minutes (I just had to copy 5 lines of config from my desktop machine).

Some statistics for a year of GTD:
* tasks entered: 386
* tasks completed: 289
* tasks outstanding: 89 (+8 deferred)
* average time to complete an item: 42 days

Don’t forget that these numbers start “from zero” – i.e. some tasks have been on my list for a year beforehand. I entered 130 tasks in the first month.

Looking at the last month, I seem to create most tasks on a Saturday and around lunchtime. However I tend to complete tasks on a Sunday and in the evenings. I’m certainly not terribly surprised by when I do the work.

Puppet compatibility – or lack of

Whilst playing with the [ puppet-dashboard] I noticed some warning notices in my puppetmaster logs. Now all file resource types must prefix “module” (although templates don’t need to!).

It’s only a small change, but please can these things be done a bit more sanely? By this I mean a documented approach to when these changes will be phased out – and when there is an overlap for compatibility. At the moment it’s all rather piecemeal which makes supporting puppet across multiple versions much more difficult that it should be.

I know the release notes do state these things – which _is_ very helpful. It would just make the product seem much better thought out and designed if the language evolved along a known roadmap rather than what often seems to be a “oh, we are changing this as it makes some internals a bit cleaner”. At least it’s better than the alternative (not cleaning it up). Puppet is still at the early adopter stage after all.

rsync and web browsing

Surfing the web can be slow (I’m not bitter about being 1/2 mile from the [ rollout] of [ Fibre To The Cabinet] in Basingstoke, oh no).

There are various tricks currently in use:
* Expiry headers which say that data will be valid until a certain time has elapsed. This is great for things such as images or CSS which rarely changes
* Caches (both in the browser and in the network) can also help
* [ ETags] can check to see if content has changed or not
* Compressing data using gzip

I wonder if anyone has thought about using something like [ rsync] instead. For example, even if the BBC news page changes, it’s likely that only 5% of it changes. As usual there is a trade-off here between CPU and bandwidth, however perhaps you could target specific versions – for example the previous version? Most laptop and desktop hard disks are so colossal these days that storing even gigabytes of cached data shouldn’t be an issue (although I do remember Netscape’s cache actually being slower than the network at times!)

It looks like there have been some attempts on this, mostly abandoned due to “too much bandwidth” – I wonder if that’s actually true? Reducing bills and latency to mobile phones for example.

* [ Zsync] – client side rsync algorithm to reduce server load
* [ rproxy] – abandoned in 2002

Airline security

I’d just like to look at this recent airline bombing attempt to see how effective the security measures have been and will be:
* no liquids > 100ml
** well it was solid and hidden
* do not fly list
** with over [ one million] names on it, the terrorist was not on it
* the US was warned by the terrorists father that he was a risk
** and yet he managed to board a plane with an explosive

As a result of this latest incident:
* you aren’t allowed to leave your seat within the last hour of the flight
** so people will just detonate the bomb or prepare it 61mins before the plane lands
* no blankets or items on your lap during the last hour
** see above
** does this include the food tray? (25min shuttle flights can serve food)
** what about laptops

One phrase – security theatre. Can we please actually improve security (or even better, encourage people to not bomb in the first place). I wonder what difference it would make for example if we had spent as much money building schools in Afghanistan as blowing things up (or the rest of the military expenditure).

Version updates using pub/sub

I have an android smartphone and whilst overall I’m very happy, the marketplace is definitely a very disappointing weak spot. Searching takes an _age_ (this is from _the_ search company) and often fails – although sometimes a reboot then picks up the application!

I have installed atrackdog to tell me which programs need updating, however it’s not perfect – partly because the marketplace is naff or doesn’t have the application in question, partly because you sometimes see development versions before they are generally available.

What I’ve never understood (particularly on windows) is the state where each application checks to see if there is a later version. Often they do this on startup (no, I want to _use_ the application, not wait for it to check to see if there is a later version).

Most Linux distributions do a really good job of this – one central way to check for versions and upgrade.

However I wonder if we can’t do something better – perhaps using [ Publish/Subscribe] to get updates more quickly and without polling. Using all these newfangled pubsubhub architectures, I would hope scaling wouldn’t be an issue – at least not more so than current methods.

Email client setup

I’ve recently changed my laptop and as it’s a small netboot, I’m running Ubuntu netbook remix on it. Today I’ve setup email on it and it’s a little involved so I thought it worth documenting.

First a little background – I run my own email servers and I like using “mutt” as my email client as it’s very fast, works well and just lets me concentrate on the content. Mutt runs in a terminal – it’s not a graphical program – so if I need to, I just ssh into my machine, run mutt, read email, send email and I’m done.

If I’m working remotely however things are a little more complicated. Firstly I like “mail-notification” as my tasktray icon – it is a good example of a small, well formed program. Unobtrusive, it displays a brief summary of new emails when they arrive (and with IDLE support it’s immediate). If I hover my mouse over it I receive a summary of unread emails, if one interests me then I click the icon to launch my my client.

However there is a licensing issue with mail-notification and linking against openssl so I have to recompile it with SSL support – a real nuisance. I turn off evolution support so that at least I don’t download a huge stack of build dependencies.

Now that’s setup and talking to my IMAP server over SSL, I have to run gconf-editor in order to enable the “always-display-icon” setting (my only gripe with the program apart from occasional crashes). Otherwise it only shows when there is unread email. /apps/mail-notification/always-display-icon is the key you want to enable.

mail-notification will launch your “preferred” email client when you select it, so you’ll probably want to change this from evolution (I won’t even start ranting about that program) to mutt, thunderbird or whatever. From your desktop menu, select Preferences -> Preferred Applications. Change the email client to “mutt %s” and tick the “run in a terminal” check box.

Finally we want to send email. Rather then running an email server on my laptop, I just use mutt’s built-in SMTP support to talk (over SSL and with a password) to my postfix email server. Hey presto, everything is nice and shiny.

Tube trains

Whilst waiting for a tube train, I wondered why instead of one very long train every 5-10mins they don’t run short trains more frequently. Historically, longer trains would be more efficient – fewer drivers required and because you need to leave gaps between trains, the throughput is higher.

Of course these days we have automated trains so using this approach:
* shorter wait for trains
* less crowding on the platform (probably)
* it’s automated so no chaos caused by strikes
* shorter platforms – less distance to walk, cheaper stations
* more flexible trains – they could go to a wider selection of destinations (and more directly)
* with shorter trains if one breaks down you could possibly get another train to shunt it gently into a layby

There are a few disadvantages:
* automatic systems are often complex and require more rigorous safety measures than manned systems
* train efficiency may well be lower
* passenger safety (from other passengers)

I’m sure it’s already been thought of many times before, so why hasn’t it been done? The advantages seem huge compared to current systems.