Passion vs detachment

I’m confused about something, namely: how you can be both passionate and detached.

Example: I was working on a problem the other day, something about grade point averages for a graduate employment campaign. This problem and I have a history. I was determined to solve it, if not once and for all, then as close as practical. Then I ran into a roadblock – something or other to do with writing results back to a database. The details aren’t important. I asked my 1up for help, and he obliged by telling me that I should change my approach and avoid the roadblock completely.

I hated that idea. Admittedly I was already a bit cranky because I was hungry (cf. my blood sugar issues), but I was also really attached to my way of solving the problem. The idea that we should take a few extra steps for caution’s sake (like not writing to the DB before we check the results) was repugnant. Surely we should just get it done, right?

The problem here is that I was attached to my solution, not to solving the problem. So how do we avoid that? How can you be both passionate about solving a problem, and detached from your solution?

Protip: Keyboard-activated, cross-browser bookmarks

I’m a web developer. That means that I use at least 3 different browsers every day. And maintaining a set of useful bookmarks across all those browsers is a pain in the arse. Also, I tend to prefer typing over mousing. It’s generally quicker. Wouldn’t it be nice to have a set of bookmarks that I can use in any browser, and access from the keyboard?

Here’s what I did to get this working. I installed Texter (made by Adam Pash of Lifehacker). Texter is a little background app that does text substitution. You type foo and hit Tab, and it gets replaced with bar. Or whatever you like.

After you’ve installed Texter, you set up your bookmarks. You make a hotstring (Texter’s word for a thing to replace) for each of the URLs you want to bookmark. You might, for example, have one for your production environment, one for dev, and one for staging. And while you’re at it, one for Gmail, one for your blog and one for Twitter. Then you just type in your shortcut and hit Tab, and the URL is there.

Nice work. Well done. I’m proud of you.

There’s a lot more that you can do with Texter. This is just one example.  Explore and have fun. :)

Libraries are gonna have to change

Libraries have traditionally been repositories of knowledge – a place that you go to if you want to do some research, find something interesting to read, or just borrow a trashy novel to stave off boredom. I’m thinking of your local lending library here – the kind that lets you borrow a book, read it, and bring it back in a few weeks. They’re often funded by local government (at least where I live), and hence are not a profit seeking enterprise, and they usually provide services that are of huge benefit to their local community. I think libraries are fantastic.

I also think that their traditional lending-based service model is doomed.

My apologies. That was overly dramatic. It’s probably more appropriate to say that the lending model currently used by libraries is going to take a back seat to some of the less matter-bound services that libraries offer. More about that in a moment. First, let me explain why lending will decline.

The lending model is fundamentally tied to the ideas of scarcity and the high marginal cost of production – that is, it costs a lot to make another of something. This idea is certainly true of books; dead tree books cost a packet, particularly reference books. So if you want access to a lot of them, you’d better be prepared to pay – or use a lending library. But as more and more content – and more and more books – become accessible by digital means, that idea goes out the window. The cost of making a digital copy of a work that exists in digital form (like, say, an ebook) is practically zero. That means that it actually costs more to run a digital lending system, where you have to keep track of the copies you’ve made, and ensure that they are deleted when they should be, than it does to just give people digital copies of the works they want access to.

Let me say that again: it costs more to lend digital works than it does to give them away. That turns the traditional lending library model on its head, because the fundamental assumption that lending libraries operate on is that the world works the other way around. Which it has for centuries, and will continue to in some cases. The basic distinction is that it’s true for atoms, but not for bits.

So if demand for libraries’ primary purpose – lending – is going to decrease in the near future, what will they offer to the community when that happens? Well, I’m glad you asked. It just so happens that librarians (and the other people you find hanging around in libraries) know a whole lot more than simply where the books are. They also tend to have a lot of skills that the rest of us just need every so often. Skills like research, like referencing, like actually finding facts, figures, quotations and evidence that can’t necessarily be indexed by Google (yet). They have a really big role in encouraging literacy and education, and in local history research and archiving. Think local papers, minutes of local council meetings and putting names to faces in old photos.

As far as content goes, I believe that libraries will still have something to offer, even if they don’t lend so much. One of the biggest issues with the free reproduction of works that is made possible by digital tools comes in the form of copyright. While copyright protection organisations like AFACT, BREIN the MPAA and the RIAA are often portrayed as villains (and sometimes rightly so) by publications like TorrentFreak, they do seem to have the law on their side at least some of the time. The law may be outdated and unfair, but crossing it can still get you into serious trouble, and serious debt if you’re singled out for prosecution. I think libraries may be able to offer something in that kind of world. They can offer certainty of provenance – a way to be sure that you’re respecting the rights of those who made what you’re enjoying. I envision repositories of links to works that are freely distributable, either as public domain, or licensed under Creative Commons or open source licences, or some similar arrangement, which we can use, enjoy, and be sure that we’re allowed to do so. Difficult, perhaps. Certainly impossible to do in a way that is exhaustive, and keeps track of every free work out there. But something is better than nothing, and I can’t think of anyone better than a librarian to help me find that kind of thing.

There is another characteristic of libraries that makes them valuable, quite apart from the services provided by the staff. I’m talking about the space that libraries provide, purely by virtue of being in a building, for people to work on stuff while they are around other people. Coworking is a pattern that is taking off in the small business/entrepreneurial area. The idea is that a bunch of people share a work space, each working on their own project or idea, and the get the benefits of working with others: some social interaction, people to bounce ideas off and discuss problems with, as well as answers to the “how do I get my damn computer to work?” questions. I see that as a really easy transition for libraries to make. It was once the domain of universities, and to some extent it still is, as long as you have a degree in something or other. Coworking is making headway on this idea in the professional world. Libraries have the opportunity to open up that kind of experience to a much broader group of people, many of whom could benefit from it, such as amateur researchers and secondary and tertiary students.

So while I think lending as a service is set for a decline, I think there’s still a lot of value to be found in libraries, particularly in the expertise of those who inhabit them, and the atmosphere they get when people seeking knowledge find themselves in the same place. I look forward to seeing what really happens.

The Offlineable Personal Wiki

Some of us are mobile, and have smartphones, and want to take notes of things. Some of us use Evernote, but are a little bit dissatisfied because it’s a bit on the slow side, and a little nervous about giving EvernoteCorp all our data. Some of us like the idea of a wiki, but want to be able to use it on our smartphones when we’re out of range.

Enter the Offlineable Personal Wiki Which Doesn’t Have A Cool Name Yet (OPWWDHACNY). Markdown editing, text file storage, easy mobile app for editing and searching, uses Dropbox or something similar to sync with a webserver for access to other devices. Dropbox allows syncing of any filetype including photos, audio recordings etc, so there’s no technical text-only limitations.

“What about editing collisions,” I hear you cry. Well, that’s the limitation. This is a single-user affair, folks, so editing collisions aren’t a problem.

That’s what some of us want, and I suspect there’s already a few candidates on the way out there. What’s missing is the Offlineable bit.

Go forth. Develop. Profit from my brainwave.

EDIT: Added link to Evernote.

Don’t be original. Be clear instead.

If you’re wondering whether to write that piece, thinking “it’s been done before,” don’t wonder – write it. Don’t hesitate to air an idea just because somebody else has had it before. You’re not original – so what? Even if you don’t have an original idea, you may have an original expression of it. Show the idea your own way and perhaps something valuable will come of it, for you or for somebody else. You may provide somebody with an “Aha!” moment, which others had previously failed to do.

Don’t strive to be original. Nobody’s all that original – human brains don’t work that way. Strive to be clear, because the world needs more clarity. Your uniqueness will show through your work.

On simplicity

I just had an exchange with a colleague in which we were totally agreed that such-and-such a feature should “be simple.” This was fine, except that we’d neglected to answer an extremely important question: simple for whom?

What I mean is that simplicity is dependent almost entirely on perspective. If you make a software product, you’ve basically got two options when deciding who should “get the simple:” the developer (i.e. probably you) or the user.

Let me explain that last bit. To make an interface that is simple to use, you often need to write some rather complex code. This is because we are effectively saying to the user: “give me some minimal input, and I will intuit what you want.” Humans are good at intuition; computers are not. That means we have to write some pretty complex code to simulate that intuition. And that’s how a simple user experience can mean seriously un-simple code. Just try writing a voice recognition system if you don’t believe me.

What it all seems to come down to is where the cleverness lives. If you expect the user to be clever (or to desire fine control over what the software does, which is basically them saying “I will be the clever one, thankyou“), then your code can be simple, because the user will give it the information it needs.

If, however, your user wants the software to do the thinking for them, then obviously the code must be clever (read: complex) enough to do the job.

A popular example of simple user interface, backed by complex code is the iPhone development platform. You bet the end product is simple, slick and beautiful. But (from what I’ve read of others experiences) iPhone apps are a bit of a bitch to code. Between the Objective C programming language and Apple’s strict standards (and the fact that you don’t necessarily know what all of them are), both of which are apparently required for said user experience, developers are pretty much guaranteed to have a tough time.

A wonderful example of a simple user interface is (3 guesses…) Twitter, or one of its many clones. You just whack in what you’re thinking. If there’s any special symbols in there (e.g. @, #), then it’ll link to the appropriate user or search. If not, no worries. Those features suck as far as discoverability goes, but they rock in terms of simplicity. The only requirement is some form of working language skills. After that, everything is optional. Simple.

The wonderful thing that Twitter has managed to do is present not one, but two simple interfaces: one for users, and one for third-party app developers. The Twitter Application Programming Interface (API) is seriously simple – even I can write code against it.

But when you look closer, the Twitter API is just another user interface – one where the users happen to be programmers. And when you look at the trouble Twitter had with scaling their system a year or two ago, you know they had a hell of a job making a system to support their simple interface.

When you make a simple interface, you shift the job of handling complexity from the user onto the developer. That’s as it should be. Developers love complexity. That said, they have limits – they still have a threshold of “too complex! Can’t handle this!” It’s just a bit higher than for other people. So you still need to manage the complexity of your code. And that’s where a development process comes in. And things like design patterns, and version control, and code reviews, and all that other advanced teaching that I haven’t fully grasped yet.

But that’s a ramble for another time.

Personal Context – a ramble

Personal Context is a concept I (or anyone) might use to help a machine figure out what is interesting to me (them). It uses data sources like:

  • what I read, watch and listen to
  • where I go, online and off
  • who I spend time with or talk to
  • things sent to me, and who sent them
  • what I write and talk about
  • entities whose output I read (people, companies, machines, etc)
  • my calendar

It figures out what I’m likely to be
interested in, based on metadata like:

  • recency
  • number of links from important (to me) sources
  • what I do at certain times of day or week
  • terms I search for often

It displays thing in real time, with the idea that if something is still important, it’s still being linked to. It relies on Jay Rosen’s “back story button” to fill us in. Hence old stuff is culled ruthlessly.

Obviously this requires access to a hell of a lot of personal, maybe sensitive data. That would be a problem for many people. It might be for me – I don’t know yet. But it would be amazing, assuming you could trust it.

Hang on – isn’t this the kind of thing Google has been working in for a decade and more anyway? On the other hand, do we trust Google enough to give them all the info I mentioned before? At this moment the answer seems to be no. So who would we trust? I can’t think of anybody, and neither, I suspect, could most of us.

So how does it change if we don’t have to trust anybody with our data, except perhaps in aggregate? Your own machine does all the crunching, you can access it remotely if you want, and you only download rules for processing, which are the same for everyone, or which you can add noise to (a false trail of data, if you will). Then would you trust the software?

I’ve only just realised that I’d assumed this thing would be open source, and hence open to scrutiny by anybody with enough patience. You can usually assume that by the time an open source product is remotely popular, somebody reasonably smart, cynical and suspicious has given the code a good look over. And if they’re not making noise, you’re probably safe.

Even given all that, it’s still a game of chance to some degree. No system is totally secure, but we get as close as we can.

Hopefully this ramble has proved interesting. If not, better luck on you next reading list item :)

Testing out Dave Winer’s podcast device idea

Turns out it’s not so easy to make a podcast on an Android device, at least not from the word “go.” I used the voice recorder on my phone to make a recording as proof of concept, then tried to upload it using WordPress.com. Couldn’t do it. It just wouldn’t work for some reason.
After that I tried installing the WordPress app, in which I’m typing this post. The app, it appears, doesn’t support audio uploads. Pics yes, audio no.
Obviously I’ll have to do a bit more work on this, and maybe if I still feel like a Winer fanboy in a couple of days I’ll do a “for poets” howto on the subject.

Edit: I totally didn’t read that last sentence before I posted. The Android keyboard  is OK, but its predictive fu is not perfect.

Choose your beach-wear wisely

I was taking a walk on the beach the other day. The weather was warm, the sun was shining, and the view was simply wonderful. A perfect day for a swim or a tan, or whatever. I’d brought my camera along in case I wanted to take a few landscape shots. A bunch of other people also thought it was a great day for the beach. As I approached there were about 50 people of assorted ages, all over the beach and in the water.

One of the things you notice at the beach is who’s wearing what – or sometimes, for your gender of choice, who’s wearing how much. There’s always a few kids, whose parents have dressed them carefully in rash vests and hats, and are watching them carefully to keep them from getting sunburnt (or, you know, drowned). There’s a few taking the opportunity to put their well-conditioned bodies on display, and accepting the risks inherent to staying out in the sun. There’s a few people covered up sensibly, and a few more who seem like they’re dressing to hide something. And there’s always, always, at least one overweight man, probably in his 5th or 6th decade, in his budgie smugglers. Eew.

Obviously, if you’re walking around in the sun, you’ve got to be careful. Sunscreen is essential, and if you feel yourself burning, you’d better hope you’ve got a shirt handy. And of course, a hat is often a good idea. You don’t want to stay exposed for too long, or you’ll go quite red.

Anyway, I strolled for a while, and as I made my way along the sand a distant promontory caught my eye. Pretty as a picture, I thought. In fact, I reckon I’ll take one. I whipped my camera out of my pocket, and a mental alarm bell went off. There were a couple of kids in the shot. Not only were they spoiling the photo, but what kind of perv would I look like, taking pictures of kids I didn’t know?

The camera went back into my pocket.

It did make me think, though: what was stopping me from taking that photo? The only real answer I could come up with was etiquette. I thought I’d cop hell if I was seen taking a shot of a pair of children I didn’t know.

It also made me think that not everyone is so concerned with such matters. There’s nothing really stopping anybody taking photos of anyone they please. Maybe that’s another reason to cover up.

Why are people so cautious about cameras? The answer: permanence. A camera takes a moment and makes it permanent. If that happens to be a moment in which I’m not wearing very much (say, a pair of budgie smugglers), I might not be happy. And, rightly or wrongly, I expect people to be sensitive to that.

It occurs to me now that that expectation might not be very fair. After all, if I’m happy to be seen without a shirt on, why shouldn’t I be happy to be photographed without a shirt on? Either way, I’m still showing my white programmer’s belly to people I don’t know. You might say I’m consenting to be photographed by appearing in public, and it might be fair enough. Maybe. But what about those kids that were in my shot earlier?

Tricky, huh? Hence the etiquette regarding photography in public.

What if that etiquette couldn’t be relied on? Say there was a rise in hidden camera usage. At that point, anything you do in public becomes (at least potentially) permanently recorded. Suddenly, those of us who care must watch our behaviour much more carefully, because some day it may come back to bite us. And those of us who don’t care, probably should.

Choose your beach-wear wisely.

LiveCD trouble with Ubuntu 9.10 (Karmic Koala)

I replaced the guts of my machine recently (motherboard, CPU, RAM, video) and, having done this, my Ubuntu Intrepid install wouldn’t work, because the kernel didn’t support the new hardware. So I decided I’d install the latest version (9.10, Karmic Koala) to get a more recent kernel, and hopefully some other goodies. Downloaded the LiveCD on my laptop, burnt a disk, slipped it in the drive, and off we went.

Presented with the typical startup screen, I chose to Install Ubuntu. But partway through the boot process, I was presented with a message to the effect that there wasn’t anything to boot. I think the exact words were Unable to find live filesystem to boot. I googled and struggled for a few hours, and then thought of something.

My motherboard has a legacy IDE interface, which both my hard drive and my DVD drive are currently plugged into (having replaced everything else, my funds didn’t stretch so far as replacing those). It turns out that the LiveCD doesn’t do so well at noticing bootable images on the IDE interface.

What did I do? I plugged in a USB DVD drive I had lying around. Worked like a charm, after I fiddled around in BIOS to make sure of the boot order.

The moral of the story is: well, I don’t quite know. But probably something like “don’t assume any one thing is working correctly.”

Follow

Get every new post delivered to your Inbox.