Python Programming, news on the Voidspace Python Projects and all things techie.

Ergonomics: Kinesis Freestyle Keyboard and Evoluent Vertical Mouse

emoticon:pen_book I've been using computers for a long time, and for most of that time I've been using them for the whole of the working day and often the rest of the day too. A few years ago I started getting pains in my wrists (classic programmer's RSI) and began using wrist rests and an ergonomic keyboard.

Without these accessories my wrists begin to hurt within about ten minutes of typing. With good ergonomic gear I can spend all day every day slaving over a warm keyboard and not worry about it. Because they fix the bug in my DNA I've never taken the problem to a doctor nor had any professional diagnosis. What follows here is purely based on my experiences. If you have RSI, or are starting to get pains when you type, seeking professional advice is a much better idea than paying attention to anything I might write...

Ergonomic keyboards aren't just about comfort or combatting RSI. One of the ways they reduce stress on the hands and wrists is by minimising movements needed to reach the keys. This means you can type faster. They often achieve this with unusual keyboard shapes, which makes touch typing essential. So as an added side effect your touch typing will have to improve.

My first ergonomic keyboard was a Microsoft Natural 4000. I've always been happy with it as a keyboard, and compared to many ergonomic keyboards it's very cheap. It's main drawback is that with the palm rest in place it's pretty big.

One PyCon Chris Perkins introduced me to the Kinesis Advantage keyboard. You can see from this photo that it's a very odd looking keyboard.

The Kinesis Advantage Keyboard

The Kinesis advantage is basically a plastic block with two wells for the keys, along with palm rests just below the wells. With your palms on the rests your hands are in the wells, and you can reach every key, including arrow keys, without moving your hands. The downside is that you can't see the keys and you have to touch type. Once you get used to the layout you can type like the wind. I love this keyboard, I consider it the Rolls Royce of keyboards. I can type pretty much all day all week without a hint of wrist ache. The build quality of the Kinesis is "solid", but not pretty.

The UK distributor for the Kinsesis Advantage is Osmond Ergonomics. After purchasing the, very expensive, Advantage keyboard I followed Osmond on twitter and had several exchanges with Guy Osmond who runs the twitter account. He emailed me with a suggestion that I review some of their other ergonomic products. They sent me these products free of charge, but with my stipulation that I have complete editorial freedom to speak my mind in the reviews.

Note

There's more to ergonomics than just RSI. Osmond have a website offering Posture guidance and exercises.

Osmond Ergonomics are offering a 10% for readers of this blog. Use this code on checkout: TFM022812.

Ergonomic computer equipment is of a great deal of interest to programmers. Particularly Python programmers in my circle of twitter friends / mailing lists where many of the programmers spend their free time hacking as well as their paid hours.

The two products I've been trying are the Evoluent vertical mouse and the Kinesis Freestyle split keyboard.

I've always wanted to try a split keyboard. When I travel for conferences and sprints I take a mobile workstation with me, including the Microsoft Natural Keyboard. So my question for the Freestyle was, is it good enough to replace the Advantage as my main keyboard? If not is it good enough to replace the Natural on my travels?

The unboxing:

Unboxing the Kinesis Freestyle Keyboard. From its box.

The version of the Freestyle I tried had the "VIP" stand attached. You can also use it flat or in a vertical configuration.

So my initial impressions are good. The build quality is a great improvement on my Advantage. Maybe after two years new Advantage keyboards are also better. The version I'm trying out is the PC layout rather than the Mac one, but after switching the Alt and Super keys around (in the Mac keyboard preferences) it works fine. [1]

The Kinesis Freestyle Keyboard on the VIP stand

I like the angle of the keyboard with the stand, but the raised height means I still need to use a wrist rest. Maybe I should try it flat. I've been using the Freestyle as my main keyboard now for two weeks. Because the layout is different from the Advantage (both qwerty - and both support dvorak of course - but the numbers etc are in different place) it took me a while to get used to it. Unlike the Advantage some of the keys, particularly the cursor keys, need hand movement to use. The Freestyle has a space bar on both sides of the split, which is a nice touch as you use alternate thumbs for space when touch typing. Beyond this the Freestyle is a nice and straightforward keyboard with decent key action.

After a weeks typing I do notice mild wrist ache, and I find having to move my hands to use the cursor keys more disruptive than the Advantage. The Freestyle will definitely displace the Microsoft Natural for my travels (the Natural is a huge keyboard and with the split the Freestyle is much more convenient to pack), but for day-to-day use I'll stick with the Advantage. For anyone with mild RSI, or a penchant for decent keyboards, I can heartily recommend the Kinesis Freestyle.

Some other notes about keyboards. Both the Advantage and Freestyle are wired keyboards. I would love to have either of them as wireless keyboards. Neither have number pads (well, with both you can switch part of the keyboard to be a number pad but this is fiddly). Many geeks don't like number pads and see them as unnecessary. Having worked in a builders merchant for a few years I'm pretty speedy with the number pad, much faster than with standard number keys, and so I have a separate USB number pad.

The second device I tried is the Evoluent Vertical Wireless Mouse. In my try-to-stop-my-wrist-hurting-when-I-use-the-computer adventures I first switched to a mouse mat with a wrist wrest and finally a Kensington Trackball (Slimblade). The Evoluent is an optical mouse, available wired and wireless and with left hand and right hand models.

The Evoluent Vertical Mouse alongside a Kensington Trackball

The trackball is great, and again solves all my wrist pain associated with mouse use. I do need to use a wrist rest with it so that my wrist can be fully rested whilst using the trackball, but pointer movement requires no wrist movements and finger movements are very small. I was sceptical that any mouse could be as good, but I don't take the trackball with me when I travel and have been using an apple magic mouse. The combination of multi-touch and mouse is innovative, and very well done, but I do get some pain from the magic mouse after a week long sprint. What I was looking for in the Evoluent was a mouse that could displace the magic mouse when I travel, and I was curious about whether a "vertical mouse" offered the ergonomic benefits it claimed.

First of all, because you hold the mouse vertically, it is physically bigger than I anticipated. The one I tried isn't the Mac model and has its own wireless dongle. Apparently a Mac version, using bluetooth, will be available soon. There is no Mac driver available for the Evoluent Wireless, and they warn that the multiple buttons it provides may not be useable out of the box. I use the Steermouse driver anyway, as I've tried several different mice over the years. This recognised the Evoluent and it worked with zero configuration. (I use Steermouse to reprogram the middle mouse button [2].)

To my surprise I love the Evoluent mouse, to the extent that I'm using it instead of the trackball. Holding the mouse vertically means my arm and wrist are fully rested whilst holding the mouse and there is no need for any kind of external rest. Pressing the middle button with my middle finger, instead of moving my index finger took a little bit to get used to, but there is button by the thumb grip which I reprogrammed to act as a middle button too. The Evoluent is a very well built product, not too heavy yet feeling robust and not "cheap" (which it isn't).

Because of its size, and that it would take up a precious usb port on my laptop, I'm not yet sure if I'll take the Evoluent on my travels.

In the first week of using it I was finding the pointer would get stuck every half hour or so and take a bit of "wiggling" to un-stick. This was very annoying and spoiled my enjoyment of using the mouse. At first I thought it was because of using an optical mouse on a shiny desk, so I switched to a large mouse mat. This didn't help. Eventually I twigged that it was because the wireless dongle was plugged into the back of my computer, about three foot from the mouse and under the desk. Putting the wireless dongle into my USB hub (about a foot from the mouse) completely solved the problem. The mouse works fine on the desk, but I've kept the mouse mat in place anyway.

In conclusion both the Freestyle keyboard and the Evoluent mice are great devices and whether or not you have RSI you're likely to enjoy using them. They both work fine with Windows and the Mac, with the caveats described above. I didn't investigate Linux compatibility as although I do all my day to day development in Ubuntu, it's inside a VM. For my day to day use I'm sticking with the Kinesis Advantage, but I am switching to the Evoluent as my everyday mouse.

These devices were supplied free of charge by Osmond ergonomics for me to review, however this review is my own opinion. If you have any questions, or suffer from RSI, Osmond would be very happy to talk to you. If you do order from them, don't forget the voucher for a 10% discount: TFM022812.


[1]Which leads me to a grouse with the Advantage, pretty much my only grouse with the Advantage. The Advantage is highly programmable, which I generally don't use, but because you program it on-board it doesn't work well with the Mac keyboard preferences. Specifically switching off the caps-lock doesn't work and I have to remap the caps-lock key to something innocuous.
[2]In conjunction with Deja menu so I can access the main menu bar on any monitor with a middle mouse click.

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2012-03-05 10:16:23 | |

Categories: , Tags: , ,


matplotlib and numpy for Python 2.7 on Mac OS X Lion

emoticon:noise Unfortunately, due to an API change, the latest released version of matplotlib is incompatible with libpng 1.5. Take a wild guess as to which version comes with Mac OS X Lion. :-/

Fortunately this is fixed in the matplotlib repository. Here's how I got matplotlib working on Mac OS X Lion (with Python 2.7 - but these instructions should work fine for other versions of Python too).

First matplotlib requires numpy. The latest version is 1.6.1, from here. The precompiled Mac OS X binaries are compiled to be compatible with Mac OS X 1.3 and up, which means they are 32 bit only. By default Python will run as 64 bit on OS X Lion, which means you'll see this when attempting to import numpy:

>>> import numpy
Traceback (most recent call last):
 ...
ImportError: dlopen(/.../site-packages/numpy/core/multiarray.so, 2): no suitable image found.  Did find:
        /.../site-packages/numpy/core/multiarray.so: no matching architecture in universal wrapper

You can get round this by launching python as a 32 bit process. I have the following alias in my .bash_profile:

alias py32="arch -i386 python"

The next problem is the matplotlib one. This blog entry shows how to build matplotlib from the git repo, using homebrew. I don't want to use a homebrew installed Python, so I modified the instructions to only install the dependencies with homebrew. I also set the correct flags to compile a 32bit version of matplotlib to match the 32bit numpy.

brew install pkg-config
brew install gfortran
cd matplotlib
export ARCHFLAGS="-arch i386"
py32 setup.py build
py32 setup.py install

And it appears to work. So far anyway:

>>> import pylab
>>> x = pylab.randn(10000)
>>> pylab.hist(x, 100)
>>> pylab.show()

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2011-09-05 00:18:13 | |

Categories: , , , Tags: , ,


AMD64 or X86-64?

emoticon:lighton Up until recently the 64bit Windows binaries of Python were labelled as being for "AMD64" processors. If you know the history of this architecture then you know exactly what this means, but at least one person was confused and emailed in to ask:

Should I use the AMD64 version of Python on an Intel 64 chip? I know those 64-bit implementations are very similar, but are they similar enough that your AMD64 will work on Intel?

Christian Heimes offered this reply, and suggested an update to the download pages:

The installer works on all AMD64 compatible Intel CPUs.

As you most likely know all modern Intel 64bit CPUs are based on AMD's x86-64 design. Only the Itanium family is based on the other Intel 64bit design: IA-64. The name AMD64 was chosen because most Linux and BSD distributions call it so. The name 'AMD64' has caused confusion in the past because users thought that the installer works only on AMD CPUs.

How about:

  • Python 2.6.4 Windows X86-64 installer (Windows AMD64 / Intel 64 / X86-64 binary -- does not include source)

Martin Loewis (one of senior core-Python developers with a particular responsibility for the Windows releases) objected to the use of the term "X86-64" to describe this architecture:

AMD doesn't want us to use the term x86-64 anymore, but wants us to use AMD64 instead. I think we should comply - they invented the architecture, so they have the right to give it a name. Neither Microsoft nor Intel have such a right.

As a member of the Python.org webmaster team I was concerned that the descriptions were as useful as possible, and am not particularly interested in AMD vs Intel politics. I did a bit of digging to see if X86-64 was now a sufficiently generic term for the AMD64 architecture. Here's what I came up with, none of them individually conclusive perhaps, but indicators of how people understand and use the term:

In conclusion, referring to the AMD64 build as x86-64, with a footnote explaining which architectures this specifically means is unlikely to confuse people. It is definitely better than just saying AMD64.

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2010-03-16 19:24:26 | |

Categories: , Tags: , , ,


Northampton Geek Meet

emoticon:html Well, last night was the inaugural meeting of the Northampton Geek Meet. Nine geeks from around Northamptonshire (in the UK) got together in the King Billy pub to partake of the real ale and geek talk.

Attendees were a mix of programmers and other geeks including:

Plus a few folk who have the good sense not to be on Twitter... We're a ragtag bunch; a few of us who know each other from the London Python meetups, a few of us from Twitter, a friend of mine from university whom I haven't seen for 15 years but who found me on Facebook and is a .NET developer (doing some very cool stuff with micropayments and mobile phones), a guy interested in open source who found me via my website plus someone who heard about the geek meet from a message I posted on LinkedIn. This is the first practical use of LinkedIn I've ever found... Then there was Roger found us whilst visiting Northampton and using the 'find people near me' feature on his mobile Twitter client. I guess all this social stuff has its uses.

You can see us (thankfully blurry) and hear a brief introduction from us all that Christian recorded as an AudioBoo: The First Northampton Geek Meet.

The King Billy was great; decent beer, quiet and with a good lounge so the next one will be there too. Currently we're looking to have the next one on Thursday November 26th. I'll post reminders on Twitter, LinkedIn and the Python-UK mailing list so you've got no excuse for missing it!

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-10-22 15:41:41 | |

Categories: , Tags: , ,


Apple Laptop Screen Replacement

emoticon:computer A couple of weeks ago the screen of my wife's Macbook broke. Sad

Apple refused to quote me a price at all unless I brought the laptop in but an Apple authorised repair centre quoted me 295 pounds to replace it, which uhm... seemed like a lot. In the end I found Apple Laptop Screens which is actually a gentleman called David Duck. For half the price he came into the offices in London and fixed the laptop on-site. He's very capable and did an excellent job.

He replaced the screen with an LG/Philips LCD panel. If you're not in London you can post your computer into him and he'll post it back. I'm impressed. Smile

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-07-26 00:03:00 | |

Categories: Tags: , ,


Writing a Technical Book

emoticon:envelope Any day now I will get the first quarter sales figures for IronPython in Action. That will mark the book having been actually in the hands of readers for three months and also be about two and a half years since I first contacted Manning about the possibility of writing an IronPython book for them.

I've written up my experiences of writing a technical book, including my justification (uh, I mean explanation) of why it took so long, the writing process, things I learned and contract advice for the aspiring writer. This is advice I didn't follow myself but wish I had...

Much of the article is specific to my experiences with IronPython in Action - but despite the difficulties (and there will always be difficulties) I still recommend Manning if you really have to write a technical book:

The most important thing I learned was don't sweat the small stuff. This warrants repeating. Don't sweat the small stuff. Many times I knew the gist of what I wanted to say in a passage but couldn't find the words. I would go round and round over a single sentence for fifteen minutes or more. This happened a lot. I learned to just write something and then come back to it later. Often what I had been unhappy about when writing read fine when I came back to it the next day. If I was really stuck I would just leave a placeholder (like XXXX or something easy to search for) and come back to it another time. Letting yourself get stuck drags out the writing process and makes it mentally exhausting. Far better to just write what you have and move on; you're going to be going back over it later anyway.

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-07-13 23:59:13 | |

Categories: , , , Tags: , ,


Gadgets: Samsung SSD, Sharkoon SATA Adaptor, Mimo USB Monitor and Powermate USB Volume Knob(!)

emoticon:mobile Over the last few months I've bought a few new gadgets, and they're well overdue a review; so here goes.

As I'm sure you're aware Solid State Drives are hard drives using flash memory instead of mechanical disks; this eliminates the need for spin up, plus makes seek times and data rates potentially much faster and power consumption less. I wanted this for my Apple Macbook Pro, which only had a 120gig hard drive. Advantages for me would be a bigger hard drive, a faster hard drive, and through less heat / power a longer battery life as well.

Fitting it was a royal pain in the *ss. I followed the instructions from this article: Upgrade Your MacBook Pro's Hard Drive. They're pretty good, the only place I deviated from them was that once I got inside my Mac the bluetooth module wasn't on top of the hard drive I was removing. This was a good thing. Smile

The hardest part was levering the keyboard top panel from off the innards. This really didn't want to come off, and it is attached by a ribbon cable to the motherboard so you can't be too violent in your attempts to pry it free. It came eventually. Scraping the ribbon cable that is glued to the top of the existing drive free is also slightly nerve-wracking.

Choosing an SSD is almost as painful as fitting. The current crop of drives are the first that are within the realms of affordable (although still expensive), but many of them suffer from real performance issue once you have written a certain amount of data (random write access becomes far slower than even normal hard drives). This AnandTech Article is essential reading on the subject. It was written before the PB22 came out, and the conclusion it came to is that only the OCZ Vertex and the Intel X25-M are worth having. From what I've read the PB22 doesn't suffer the same problems that plague the earlier drives and it is cheaper than both the Vertex and the X25-M so I decided to go for it.

And as for performance, well. XBench reported (results here) an average of 3x faster than a standard Macbook Pro on all the drive benchmarks. The difference in general is noticeable but perhaps not overwhelming. The most striking change was in launching Microsoft Office for the Mac; it launched in about 3 seconds instead of 12! The disappointing thing is that starting my Windows VM (VMWare Fusion) is not much faster, although shutting it down is (which was already pretty fast). Even worse, booting my Mac up (something I don't do very often) - if you include the fifteen to twenty second freeze on start which arrived with the new drive - took about the same amount of time.

In the end, whilst trying to fix a different problem with another of my new gadgets I reset the PRAM on my Macbook, which fixed it! Now on the once a month occasion I restart my laptop it will happen really quickly. Overall the biggest difference that fitting the SSD made was that I now have a bigger hard drive. Everything is faster but possibly not enough to make it worth the cost, it seems that other than Word most of the apps I start are network or CPU bound. The downside is that after investing in the SSD I probably have to wait another couple of years before I replace my Macbook.

When I ordered the SSD I also ordered a 2.5" SATA adaptor to go with it. I asked the salesman if the adaptor would work with the SSD and he did suggest that buying an SSD and then using it through a USB adaptor didn't sound that sensible. Actually I wanted the adaptor to clone the internal drive of my Mac onto the SSD before fitting it. The nice thing about the Sharkoon is that it has connectors for SATA drives and 2.5" / 3.5" IDE drives. Like many geeks I often have random hard drives lying around and this will allow me to use them. It worked fine (without needing a driver) on Mac OS X, despite not advertising Mac compatibility. It even comes with some funky rubber sheaths for attached drives if you want to leave one connected for anything other than a short period of time.

To clone the internal drive in the laptop onto the SSD I used Carbon Copy Cloner. Cloning a 120gig drive (CCC claimed it would do a block level clone but actually did a file level clone) took hours. It was slightly worrying to see the occupied size of the new drive was about 200meg less than the original - but I imagine this is a consequence of smaller blocks on the SSD and CCC doing a file level clone. Anyway it worked fine.

Mimo monitors make a range of 800x480 pixel USB monitors. I wanted the 740 touchscreen monitor for a home media server project. The 740 was out of stock so I ended up with the 710 and the media server project got shelved (I ditched wireless for my main computer as it was sporadically unreliable and with a wired connection to the desktop no need for a separate server).

The monitor is a fantastic second monitor for my laptop but I only use it when I have a power source. Rather than see it unused I have it attached to my desktop (technically my sixth monitor) showing my twitter stream via Tweetdeck.

This photo shows the Mimo and the Powermate volume control (see below).

USB gadgets! Mimo monitor and powermate volume control

It turned out to be an irresistible but expensive toy, quelle surprise. Definitely useful though and in constant use, so it's fared better than some of the expensive toys I've bought in the past (Nintendo DS I'm talking to you).

Unfortunately there is a problem with the displaylink driver and the Mac OS X 10.5.7 update. Some details of the problem here and more here (apparently it is a known issue with 10.5.7 and not the fault of the driver). Uninstalling and re-installing the driver worked for me, but sometimes the display doesn't work if I restart my laptop with it plugged in (remembering to unplug it before restarting does the trick).

This was another toy. Whenever I am at my computer I almost inevitably have a movie playing and this expensive little knob is a volume control. It has much more granularity than using the keyboard to control the volume and I find it surprisingly useful. You can configure different behaviour (e.g. scrolling) for different applications, but I just use it as a volume control.

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-06-15 13:44:01 | |

Categories: , Tags: , , , , ,


Hardware and Software Clearout on Ebay

emoticon:mirrormask It's been a fun weekend. On Friday I went to see Coraline 3D at the cinema (and I didn't even know that you could watch films in 3D in Northampton UK which is officially the middle of nowhere in England). I haven't seen anything in 3D since the red and green glasses of my childhood (20 years ago which is another reminder of how old I am getting). Both the Coraline and the 3D were awesome. Coraline is by the master story teller Neil Gaiman and is very entertaining.

I spent most of Saturday replacing the hard drive in my laptop with an SSD followed by going to see Star Trek. Apple don't make it easy to fit a new HD yourself, but it was worth it. A subject for another blog entry. Star Trek was great. Any plot that relies on time travel is slightly suspect, but even if the overarching storyline is dubious it was a fantastic cinematic experience.

And as for today... at least partly clearing out my hardware and software. It means I wasn't coding away anything from my backlog, or writing any of the blog entries I owe you, but at least I got something off my list. Anyway, if you live in the UK you should buy my stuff:

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-05-10 22:20:37 | |

Categories: , Tags: , ,


Multi-monitors and the Hazro 30" Monitor

emoticon:noise My colleague Kamil Dworakowski has written a blog entry on using multiple monitors, showing off his desktop setup (the deathstar control centre) at Resolver Systems: Quad Head

Traders have long known about the value of using multiple monitors.

The reason it is so good for programming is that the activity requires to keep millions of things in the head at once -- names of variables, functions, classes, third party APIs. You can keep limited amount of things in your head, depending on various factors affecting your concentration like amount of sleep the previous night. You will have to page fault to the rest. And when page faulting requires switching between windows it adds friction. Energy that could have been used on solving problems is wasted.

Allocating windows across monitor is crucial. You want to have the information you will need most often readily available. What you don't want is to have two windows to which you need simultaneous access being on the same monitor.

Even with four monitors, you will find that you have more than one window on the same monitor. My average is about 2-3 windows per monitor and 2-3 virtual desktops (don't worry I don't use splits ;). For past month I had one virtual desktop for lunch time, one for spiking an interactive console for Resolver One, and one for main development.

Vista is not really well prepared for 4 monitors; windows appear on different monitors at random. It is not unusual that an application on monitor 4 will popup a dialog on monitor 1. Without some third party tools it would be a chore to manage it all. I use winsplit for moving windows around, vdm for virtual desktops and ultramon for extending the taskbar.

I quite agree that having several monitors really improves development experience; and whilst I hate to play the "mine is bigger than yours" game, I'm currently running five monitors:

My multiple monitors

My main monitor is now a 30" Hazro monitor. The others are a 32" LCD TV, 22" widescreen and two 24" monitors. (I watch movies on the top monitor - fed from my computer - and the middle monitor runs a Vista VM.) The 30" monitor is a recent addition. I've long wanted one - with a resolution of 2500x1600 is large enough to have two applications side by side in the same monitor at the same size as they would be on a standard 20" monitor. 24" monitors are typically 1900x1200 pixels - too wide for a single application and not wide enough for two side by side at a decent width.

Note

These monitors are driven by an Apple Mac Pro with three graphics cards - each supporting two monitors. The cards are 2x ATI Radeon HD 2600 XT and 1x NVIDIA GeForce 8800 GT.

The LCD TV is a 1080P monitor, which means it has a 1920x1080 pixel resolution when plugged into the computer via HDMI. I don't have a blueray drive, but watch a lot of movies in 720P format. The improvement over standard definition compressed movie files is astonishing. A 720P movie encoded using a modern codec (like H.264) is typically 3-4gigs. A 1080P movie is typically 24gigs. I've only downloaded one and couldn't find a player for the Mac that could work with the video container format it used (although PowerDVD on Windows handles it fine apparently).

The best resource on video codecs (etc) that I've seen is a series of articles by Mark Pilgrim, A gentle introduction to video encoding:

For the curious I use a Kinesis Advantage Keyboard which is unjustifiably expensive but really helps with my RSI. I also use the Kensington Expert Mouse which isn't a mouse at all but a trackball (and the scroll ring is very cool). It is much more sensitive than a standard mouse, but I haven't tried it for gaming yet. Both the mouse and the keyboard are wired which is annoying. I'll do a separate blog entry on these sometime.

I have a separate number keypad as there isn't one on the Kinesis (well you can switch it into a separate mode which I should probably try). Once you get used to a numberpad you can't do without them - they speed up number entry enormously. (I worked in a Builders Merchant for many years.)

I've resisted the lure of thirty inches for a long time because they are still hugely more expensive than 24" monitors. The market leaders for 30" monitors are Dell and Apple, and they cost around a thousand pounds or so. A good twenty four inch monitor can be had for around two hundred pounds. I recently found a cheaper alternative, the 30" Hazro Monitor. Allegedly they take the same panels used in the more expensive Dell monitors and use cheaper housing with less markup. If you read the reviews (google for them - there are quite a few), they are almost universally positive. I found one from Overclockers.co.uk for six hundred and seventy pounds (including VAT and shipping) - about a third cheaper than any other I had found.

At first I was very nervous about ordering. I hate dead pixels on monitors and have been very lucky on the monitors I have bought so far. Hazro's dead pixel policy even allows for 5x5 clumps of dead pixels. Fortunately I got very good advice on Overclockers own forum:

If you still have a dead pixel problem, can't bring it back to life and can't RMA it under warranty then you can sometimes return it to the stockist if you purchased it online. If you bought online you can take advantage of the "Distance Selling Act" which entitles you to return any item within 7 days as you were not present at the time of purchase. If you are not happy with your TFT you can return it at your cost of postage and often claim a refund or exchange.

Legally, if the stocker accepts the TFT back as a return governed by the Distance Selling Act, then they are NOT allowed to charge you a restocking fee as covered in the Government Regulations (page 11 in particular). This selling act is not widely known by retailers, but does exist if you really need to use it. You should only have to pay for postage to send it back to them.

(Obviously the distance selling act only applies in the UK.) On that basis I was happy to order it and would have returned it if there were any dead pixels. Fortunately there were none.

This is what it looks like:

The Hazro 30" monitor

It's not a perfect monitor, but overall I'm very pleased with it. Here's the good and the bad.

The good:

  • Lovely image quality
  • No dead pixels
  • Really a lovely monitor
  • Comes with the dual-link DVI adaptor lead it requires (although a bit short)
  • Does have vertical tilt on the stand (not all cheap monitors I've bought have this)

The bad:

  • It runs quite hot (not really an issue, but even so...)
  • Vertical tilt only - no horizontal movement on the stand
  • Can't remove the stand so can't wall mount it
  • The touch power button is inconveniently recessed at the bottom of the monitor and not sensitive enough - I usually have to swipe it several times

The configuration options are basic - but the default setup was absolutely fine for me on a Mac Pro.

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2009-03-15 21:48:17 | |

Categories: Tags: , , ,


Book Review: Intellectual Property and Open Source

emoticon:world O'Reilly have been kind enough to give me a copy of Van Linderg's book Intellectual Property and Open Source.

Of course the term "intellectual property" is itself controversial, but I prefer the more pragmatic approach to copyright reform of people like Lawrence Lessig.

Van Lindberg is an intellectual property lawyer, but also a member of the Python community and is strongly involved (amongst other things) in the organising of the PyCon Conference. But enough about him, what's his book like?

The book is subtitled "A Practical Guide to Protecting Code" and is intended to be a description of US intellectual property law as it stands and applies to software. It is not intended to be a defence of the current state of the law, nor conjecture about what it should be like. Interestingly though, in order to understand the state of the law, it starts with a history of IP law and the philosophies behind it. This is chapter 1: "The Economic and Legal Foundations of Intellectual Property".

Van is not just an IP lawyer, he is also a programmer, and the book is aimed at us poor beleaguered software developers. The writing is down to earth and peppered with programming analogies. It really is highly readable and enjoyable (although dense with information); no mean feat for a book on this subject.

I found the history of IP fascinating - and essential reading to understand why the law views intellectual property rights in some of the same ways as other property rights. In fact Van makes the interesting point that the concept of property is a legal construct, and as theft is the defined as the violation of property rights the RIAA (quite despicable though they are) are technically correct to describe copyright violation as theft.

Having covered the background each of the next chapters tackle a major area of copyright law; chapters 2 & 3 are on patents. These chapters aren't restricted to the subject of software patents (and in fact spend relatively little time on them) but are more on the why and what of patents. Although this knowledge does prove useful in later chapters as you consider the full range of property rights associated with our craft, I couldn't help wanting to move onto the other more directly relevant topics all through this chapter (although useful for completeness I felt that some of the minutiae of the patent documents could have been skipped).

Having said that, Van does a good job of explaining the inherent contradiction (hypocrisy?) in the current US patent system. The ethos of the patent system is to encourage the sharing of knowledge by making it public whilst granting the inventors a temporary monopoly. At the same time it penalises creators if they check for pre-existing patents in their technology field. If you are known to have been aware of a patent, yet are found to be in violation of it, you are liable for much worse damages. As a creator it is important that you deliberately stay unaware of patents in your field!

Another interesting snippet is that if any of the inventors of a technology later patented are left off the patent document then other companies are free to license the technology from the unlisted inventor. Decisions about who to list and who not to list as an inventor in the patent filing may be subject to internal company politics - but they can be vitally important. All of these points are illustrated through the book by relevant case history.

The next chapters cover in turn copyright, trademarks and trade secrets. Most people have some vague impressions of the law around trademarks and copyright - and most of them are wrong! Even if you think you know what these terms mean there is enormous amount of useful and clearly presented information here. Issues of copyright (and even trademarks) are particularly relevant to open source projects. The chapter on trade secrets was also interesting to me, mainly because I don't think we have trade secrets as a legally protected category in the UK (I'm probably wrong - but they are rarely discussed as having legal ramifications). Frustratingly enough although the chapter explains in great detail what trade secrets are, how the legal protection can be removed and so on, it skims over what the legal remedy is in cases where trade secrets are unlawfully abused. Property rights only have meaning in as much as there is a legal consequence to violating those rights - and the remedy available is this protection. All through the chapter I was wondering, what actually happens if the court finds that trade secrets have been misappropriated.

Finally in chapter seven we arrive at contracts and licenses. In some ways this is where the real meat of the book begins. The book has Open Source in the title, and one of the most tangled areas of confusion around open source (or free software or whatever you want to call it) is licensing. In order to understand open source licenses we are going to have to understand the legal validity of licensing intellectual property - and in particular the differences between licenses and contracts. (One of the main differences is the legal remedy available to you - so whether an open source license is a contract or a license can be an extremely important issue.)

One of the chapters on contracts ("So I Have an Idea...") is about the situation for those employed as programmers. Although less common in the UK, it is normal for employment contracts in the US to stipulate that not only are any projects or code you work on in your spare time the property of your employer - but even ideas you have whilst you work from them, even if you only create them later, may belong to them. This obviously has ramifications for contributions to open source projects. The solution is to communicate 'early and often' with your employer, and get their permission in writing (email is fine).

The chapters on open source licensing (including a full chapter on the GPL license!) are for me the most practical. They explain the issues around open source licensing, including how who owns the copyright (particularly for contributions - which make the resulting work a derivative work of the original) affects issues like relicensing. My default license for my projects has always been the BSD License. This is one of the more permissive 'academic' licenses, but makes no stipulations regarding contributions. After reading this book I'm considering switching new projects to the Apache License 2 which explicitly specifies that contributing a patch grants a license for redistribution under the Apache license. This simplifies licensing and redistribution issues.

The final chapters cover the legal status of reverse engineering (surprisingly protected if you do it right - but complicated by the DMCA) and incorporating as a not for profit organisation (if this is relevant to your open source project then not only have you really made it but this chapter will be very useful).

So in summary, an excellent book. Van Lindberg has done an outstanding job of navigating a dry and complex subject in an engaging and precise manner. If you're a programmer, or involved in open source projects, you need to read it - thankfully you'll enjoy it.


Join the Glorious Python Programming Revolution

emoticon:halt Ars Technica has a new article on learning Python:

The article itself is kind of meh, merely linking to six of the most well known online Python tutorials, but what is interesting is their rationale for promoting Python:

"Recently, Google has stepped up its presence in the cloud computing arena. Google's new App Engine (aka "AppSpot") lets you design and run web applications using Google's existing infrastructure."

"At this time, App Engine uses Python as its primary programming language. Although Google is investigating other languages for future releases, if you want to get started with App Engine, you'll need to first master the Python scripting language."

Overwhelmingly the best part of the article is the image they use...

The glorious Python programming revolution

Ars Technica have a real problem with puns when doing articles on Python. Take their article introducing Python 3 for example:

Thissss article is pretty good, but as expected Python 3 is causing controversy both inside and outside the Python community. People wonder if the benefits of breaking backwards compatibility are worth the potential confusion it causes. The very best response I've seen is the following blog entry by James Bennett. It kicks off with a fantastic introduction that has nothing to do with Python but should be read by programmers and business managers of every strain.

Back to Ars Technica, they will always have a place in my heart. They've done a fantastic series of articles on the history and technology of the Amiga computer (the first 'desktop' computer with a pre-emptive multitasking operating system being one of the jewels in its crown of glory). If, like me [1], you are nostalgic for the beautiful usability of this machine (both as a user and a developer) then you'll love this series.

[1]I had a great time playing with 68k assembly language on the Amiga. Building C structures and calling into the operating system. Both the Amiga OS and Motorola 68000 instruction sets were very elegant. It was Amiga OSes inability to support memory protection (and thus virtual memory) that was (and is) a big cause of its downfall. The latest release of the beautiful-looking-and-not-quite-dead-yet Amiga OS 4.1 still doesn't have default support for virtual memory and only runs on Power PC architectures - no x86 support (and no supported capability to run under virtualisation). Good luck with that. Sad

Like this post? Digg it or Del.icio.us it.

Posted by Fuzzyman on 2008-12-08 01:24:52 | |

Categories: , , Tags: , , ,


Hosted by Webfaction

Counter...