-
Some great photography – especially the portraits – onthis music-oriented photographer’s website.
-
“For years Buckley’s Cough Mixture, available in Canada since 1919, has been highlighting the fact their cough syrup tastes horrible, but it works.” Love some of the taglines; a smart bit of marketing for the kind of products you hate but need…
Swings and readouts
07 November 2007
My colleague Lars has just bought an Epson R-D1. If you’re not aware of it, it’s a digital rangefinder (roughly modelled on a Voigtlander) that takes Leica M Bayonet lenses, is hard to find, and noticeable cheaper than a Leica M8.
It’s obviously a niche camera: M lenses aren’t common nor cheap, the rangefinder is hardly a mass-market camera paradigm these days, and it’s largely manual – aperture priority, manual focus.
One thing that really caught my eye – and that I initially dismissed as ersatz Japanese retro-fetishery – was the readout on the top. Which looks like this:
To explain: the largest hand, pointing straight up, indicates how many exposures are left on the current memory card. As you can see, the scale is logarithmic – 500+ is the maximum, and as it counts down, the number of remaining exposures is measured more accurately.
The E-F gauge at the bottom measures not fuel, but battery power.
The left-hand gauge indicates white balance – either auto or one of several presets.
Finally, the right-hand dial represents the image quality: Raw, High, or Normal.
Once you know what it means, it’s a wonderfully clear interface: your eye can scan it very quickly. It’s also hypnotic watching it update. To alter the image quality, for instance, you hold the image quality lever with your right hand and move the selection knob (positioned where the film-rewind would be on a Leica) with your left. As the quality alters (and the rightmost needle flicks to the appropriate setting), the exposures-remaining needle swings around to reflect the new maximum number of pictures.
You can’t always see the benefits of analogue readouts in still photographs; this one is a case in point. Once it starts moving – and you start having a reason to check that readout – their clarity becomes immediately obvious.
So whilst I may have thought this kitsch to start with… it turns out to be one of my favourite features on the camera.
(As for that manual “film advance” lever… I’ll write about that in another post. It’s something I found similarly kitschy to begin with, but understood in the end.)
-
“Advancing the lever after each exposure makes that exposure seem more distinct and more deliberate.” I too thought this weird when I played with Lars’ example. but you only have to use it once to understand why it’s there.
-
“Camelot received dozens of complaints on the first day from players who could not understand how, for example, -5 is higher than -6.” You’d have thought Camelot user-test their scratchcards. Clearly not!
-
“If there’s a single piece of functionality that you feel you can’t provide in raw HTML, you’re doing it wrong.” Yes. Steve is, by and large, right about all of this. This is why front-end development is worthy of being a role in its own right.
-
“Though most people understand that your environment files are the key to answering some of these problems, how to actually solve them is not well known. I’ll attempt to clarify what to use and when to use it.”
-
A series of articles on source control best practice.
-
“Software is everything. It also sucks.” Fascinating article on remedying that idea, about the team that writes software for the Space Shuttle. It’s practically the polar opposite of web development. Some bits of that are probably good; some are perhaps n
-
“Beat connects you very directly to a single soldier by thumping their recorded heartbeat against your chest… If we are going to continue to fight wars, we need better methods of feedback like this one so the costs are more visceral and real for us.”
-
“Regular people on the web *love* Snap previews. I know you don’t believe it — I didn’t want to believe it… I know we all feel these people are idiots, but it’s our own geek cultural imperialism that makes us think we know better than non-techy folks.”
S60 Touch: flip-to-silence
02 November 2007
So, the latest version of Nokia/Symbian Series 60 has been previewed. There’s even a swanky video for it:
I’m still thinking about a lot of it. It’s clearly aiming at a slightly different market to the one Apple’s gunning for. There’s an interesting separation between “stuff that needs a stylus” and “stuff you can do with fingers/thumbs”. In reality, I think people veer towards thumbs if possible. Does that mean they’ll ignore the UI elements that are so small they need a stylus? Not sure. I haven’t given that enough thought, as I said.
The best bit of the video, though, is nothing to do with touch. It’s the bit where the model silences the phone ringing on the coffee table simply by physically flipping the phone over.
As an interaction, that presumes a lot. It presumes you leave your phone out, and if you do, you leave it face up. Many people leave their phones out (so they can see them skitter across the table when a call/SMS comes in) but face down, so the screen doesn’t annoy them. (Blackberries, with their persistent flashing light, are a prime candidate for face-downing). At the same time, it embraces that behaviour: when the screen lights up, you hide the screen and the phone silences. I like that.
Of course, you could do that on any old phone with a cheap accelerometer inside it. I wish it wasn’t part of some “premium” touch interface, but part of a lowest-common-denominator combination of hardware and software. Oh well.
-
Tumblr gets a massive overhaul, becomes Davidville’s only product (and a company, too), and re-ignites my interest. Simple tools, made well. Strangely, it excites me in a way Pownce failed to (despite being a good, solid product).
Connecting Rails to legacy databases
01 November 2007
Connecting Rails to legacy databases isn’t actually that hard – depending on the database you start out with. Recently, we needed to perform some statistical analysis on a large Movable Type database. Rather than wrestling with endless SQL queries at the prompt, it made sense to abstract out a little and build some kind of modelled front end to the statistics.
The most obvious tool for me to use was Rails; I’m familiar with it, I like the way ActiveRecord works, and it means that I can poke around the database from script/console
if I need to.
The reason this turned out not to be too hard is because whilst Movable Type doesn’t conform to Rails’ opinionated ideas of what a schema should look like, it is still a well-designed and normalised database. Because of this, we can teach ActiveRecord to understand the database.
First of all, we start by creating our models: for our needs, Blog, Comment, Post and Author. We generate them in the usual manner – script/generate model blog
. Once we’ve done that, we delete the migration files in db/migrate
it creates, because we’re not going to use them.
Next, we point config/database.yml
to the Movable Type database.
And then, we build our relationships thus:
class Blog < ActiveRecord::Base
set_table_name "mt_blog"
set_primary_key "blog_id"
has_many :entries, :foreign_key => "entry_blog_id", :order => "entry_created_on"
end
class Entry < ActiveRecord::Base
set_table_name "mt_entry"
set_primary_key "entry_id"
has_many :comments, :foreign_key => "comment_entry_id"
belongs_to :blog, :foreign_key => "entry_blog_id"
belongs_to :author, :foreign_key => "entry_author_id"
end
class Comment < ActiveRecord::Base
set_table_name "mt_comment"
set_primary_key "comment_id"
belongs_to :entry, :foreign_key => "comment_entry_id"
end
class Author < ActiveRecord::Base
set_table_name "mt_author"
set_primary_key "author_id"
has_many :entries, :foreign_key => "entry_author_id"
end
The set_table_name
method tells the ActiveRecord class what table to look at, and the set_primary_key
method does exactly what it says on the tin. (It also makes sure that #to_param works correctly based on whatever our new primary key is, which is handy). Beyond that, we simply have to specify the foreign keys on our relationships and everything plays ball; we can now access blog.entries
just as we do with a typical Rails setup. It’s now easy to write the rest of our Rails app – model methods, controllers, views – just as we normally would. We’re just using the MT database to pull out our data.
And if you’re wondering: yes, it made the manipulation a lot easier, and a few hours poking at the console began to yield some interesting algorithms to apply.
-
“a blog for game designers”. Some great content on here.
-
“Ruby, Rails & Other Experimentations by Matt Aimonetti” Interesting looking rails-focused blog.
-
“…supporting the retelling of experiences is important. After all if you’re offering a cool product or service, you want others to know about it. A passionate user is probably your best advocate.” More great stuff from Kars.
-
“Test subjects consistently report that keyboarding is faster than mousing. The stopwatch consistently proves mousing is faster than keyboarding.” Great Tog article on keyboard vs mouse interfaces.
-
Bizarre. Physical avatars for absent friends.
-
“I see both advocates and detractors often use Richard’s paper in ways that conflicts with my own experience. Here are some of the ways I would suggest reconsidering how you use this important paper.” Need to reread the Bartle, wrt social software…