Archive for September, 2010

Announcement: ring-upload-progress

Saturday, September 18th, 2010

I’ve forked off ring.middleware.multipart-params into a new library called ring.middleware.upload-progress

It’s a bit rough-and-ready for now, and it uses the session to store the shared state about current uploads, which is probably not the best way to go about it – I’m thinking about introducing a new lower-level mechanism for low-memory shared state based on clojure’s STM tools, since this kind of thing is interesting for more than just uploads – but it does work as long as you’re not doing anything too fancy (if you’re worried, you can use a separate session store just for this info).

For the interested: the code is at github.

I’ve got some working “upload progress bar” javascript and routing code too, but it’s not in this project, so for now, you’ll have to roll your own.

I’ll get a clojars release done as soon as I’m satisfied this stuff is usable. Probably in the next few days.

Announcement: clj-sql and clj-imajine

Wednesday, September 15th, 2010

I just released a few bits of image code that might be useful to more people. clj-imajine can read, write and scale images. There’s also some minimal experimental pdf support. More features will be added when I need them or if someone else sends me a good pull request.

Source code is on github. Leiningen/maven jars are on clojars.

Also, Saul Hazledine got in touch with me to merge our changes of clojure.contrib.sql and make it an official project. It’s called clj-sql and differs from clojure.contrib.sql mostly in that it makes it possible to use :keywords-with-dashes as column names (for most operations, at least, so far) and that its support for auto-generated keys is much better, i.e. there is some!

Source code is on github. Leiningen/maven jars are on clojars.

In search of a better keyboard; The IBM Model M

Wednesday, September 1st, 2010

IBM Model M, full size 101-key version

By far the oldest board in this series. Production of these things started in 1985 and slightly modified versions are still being build by Unicomp (the Customizers are the closest to the standard IBM Model M, but always make sure you pick the Buckling Spring versions, see below).

Build quality

I’ve been using a Model M keyboard for the last couple of years, and in many respects it’s the best keyboard I’ve ever used: it’s very sturdy, will last for decades (mine is 15 years old and still working fine) and the key switches are phenomenal.

Layout

This was one of the first keyboards with what’s now more or less the standard PC layout and it’s probably the reason that that layout became so popular. Probably not remarkable – even boring – these days, but on the whole it’s very well thought out and effective. Especially if you map the CAPS Lock key to Control (Unicomp sells models with CAPS and Left-CTRL swapped, but you can swap the keys on any OS and I don’t really see the point of looking at a keyboard when you’re typing on it).

Buckling Spring switch technology

The switches work via a so called “buckling spring” mechanism, which means every key is set on top of a fairly long spring that “collapses” sideways when you’ve pressed the key about half way down and activates the mechanical “hammer” attached to the bottom of the spring. You can easily feel when that is about to happen, and once it does you can feel the key “give” and it makes a very satisfying CLICK sound.

On this keyboard you simply can’t get fooled about whether you’ve pressed a key or not: the auditory and tactile feedback is very immediate.

Issues

As you can probably tell, I really like this keyboard, but there a few issues with it that are annoying:

Size

This is a large keyboard, even for a full size standard layout: the MS Natural 4000 has a big wrist rest and a “split” main cluster and it’s still only marginally larger than the Model M.

Size is especially important if you’re a right handed mouse user. With the num-pad to the right, your mouse is quite a long way away from the main alphanumeric cluster where your hands are when you’re typing, which means that you’re not always using an optimal position for the mouse, the keyboard or both. You can tell these things were invented before PCs had mice.

There used to be Model M variants that didn’t have a numeric key pad, but production of those stopped somewhere in the early ’90s. Expect them to be expensive – if you can find one. Ebay US seems to have a few, but once you include shipping, you might want to consider something else if you live in Europe. Clickykeyboards (where that link is to) sells them for fairly reasonable prices, but they don’t seem to have them all that often – and you still have to pay shipping from the US.

Finger fatigue

The switches on these keyboards are very good, but also quite heavy: they require noticeably more force than most conventional keyboards. You get used to it, especially since the force is consistent over all keys, but for me, it’s just barely on the edge of “too heavy”.

Sound

The click sound, while satisfying, can get on your nerves late at night. Not that much of an issue for me, but sometimes you just wish it made a bit less noise. If you have coworkers or family in the same room, I expect they won’t like this keyboard much.

Pro: price

On the other hand, second hand full-size Model Ms are cheap and not that hard to get. New ones from Unicomp are also very competitively priced compared to other well-built keyboards with mechanical switches (the basic model is $69), even if you have to ship them across the Atlantic.

Previous episode: In search of a better keyboard – Early history.

Next episode: what now? (not finished, stay tuned).