Dead end window shopping.

The other day I mentioned to a friend that I was considering buying a good suit. I own a few usable suits, but none that are very good. My friend promptly recommended a store in Oslo that I should have a look at.

Since I do not live in Oslo I had a look at their website. This is usually the first thing I do when I am considering a non-trivial purchase -- and a proper suit is very much a non-trivial purchase. First off, it is an item of clothing, so there will be pain. Men do not spend hours on end trying on various outfits in shops. Men enter, decide, buy, and leave.

Second, a proper suit is expensive so it is a purchase that needs to be researched. You want to make an informed decision. This involves understanding what your options are . You want to see pictures, data and prices. You want to have some ideas before you take the trouble of visiting a clothing store.

So I went to their website. Expecting, at a minimum, a glimpse of what sort of suits they were selling and some idea of the price range. So what did I find? Nothing. Absolutely no information of any value to me. If you don't believe me: here's their website. Go check it out. The best they could do was a list of which brands they sell and some tips on how to tie a tie.

I don't wear ties.

This is what I do not understand: companies spend lots of money on advertising, yet when I voluntarily seek them out and try to get some information on their products, their websites are just a glorified yellow-pages listing or the equivalent of a terrible for-web-adaptation of a printed brochure. If you go to, for instance, the Armani website you are confronted with some lame marketroid's idiot vision of what a website is. In a matter of minutes you grow tired and leave the site. None the wiser.

Ever tried to buy jewelry or lingerie for your girlfriend? Same story there. The classier the brand the more useless the website.

I suspect they think that their websites are classy. Or that it is somehow classy not to have proper websites with proper web pages (rather than that flash rubbish) showing their products. That it somehow preserves their mystique and image as quality brands.

Well, no, it doesn't. It only tells me that these people hire completely incompetent marketing firms to stitch together pathetic web presences. It does nothing for me as a shopper. I was looking for a suit. If the websites were any good they'd leave me with a list of suits I might want to have a closer look at in their store.

These websites are made by advertising wankers for advertising wankers. The more feebleminded window shoppers may be slightly amused for a few minutes, but for people looking to actually buy something, it is a dead end.


Squandering opportunities

I am not really sure what the content industry thinks it is gaining by still having content that is only available/playable in certain regions. We've had DVDs which are locked to given regions for as long as DVDs have been around, and services like iTunes perpetuate the same sort of silliness in their service. It just makes no sense.

If anything, adding these limitations to content just gives people yet another reason to obtain the content in other ways. For example, if someone from Europe buys a DVD in the US, then takes it home, the DVD won't play on a conforming DVD player. The best solution is usually to put the DVD in a computer and copy it -- either by re-encoding it to a more practical format (such as DivX), or by stripping out the region coding and possibly burning a new CD.

In some jurisdictions this now seems to be illegal -- which, of course, makes no sense at all. You have paid for a product, you should be allowed to use the product. It is hard for people to see why it should be a crime to enjoy content that you have paid for.

As I see it, this hassle, and the criminalization of circumvention of silliness, just encourages piracy.

A lot of people I know would be interested in buying TV-series and the like which is only available in certain regions. Since buying DVDs from abroad is such a hassle, and since iTunes won't let you buy the series if you happen to live in Europe, people tend to just rip, re-encode and copy among friends. Even worse (for the industry): ,ore and more people do not even get the content from people who bought the DVDs because it is much more convenient to download the content and be sure it will play on whatever you want to play it on.

Pirated content is a vastly superior user experience in almost all cases.

And don't think that this is an activity limited to just kids and people who can't afford (or are too cheap) to buy stuff: people from all social layers, of all ages do this. It is becoming increasingly socially acceptable. I've met lots of moderately famous people with tons of money who are active users of various back-channels for getting the content they want. The common factor is that they are tired of the limited availability and flexibility.

It is not about the money.

It is about the user experience.

The content industry just doesn't seem to get it. Every month that goes by without them getting it is a month where they lose more money. Because people just don't bother with their content or because people find alternative ways of getting it. The content industry is squandering their opportunities for profit by being locked into ways of thinking that are contrary to their interests.

An ironic twist is that the people who evaluate movies for the Academy Awards complained when they were forced to use DVD players with even stricter DRM systems for viewing the screeners. Turns out that being dependent on a special device for viewing the movies was such a hassle that in the end, they decided to abandon the system:

From The Hollywood Reporter:
In addition, voters were showing no signs of warming up to the SV-300, the machine operating the S-View software that scored few points for being user-friendly in its brief run. Its user base complained of the impracticality of having to lug the machine around on vacation during the holiday season, the height of the screening period.
Even industry insiders feel the pain of the ordinary user -- yet nothing happens. Why is it taking so long for the various content industries to grasp that they are squandering opportunities? There is money to be made! Tons of it. They just need to understand the consumer.


On choosing a major.

Humorous and not too far off from reality ;-).


Why is everyone so afraid of a bit of typing?

Often when people discuss programming languages I see people emphasize the amount of typing needed to express the same constructs in different languages. There is often a lot of enthusiasm whenever some construct can be expressed with fewer tokens. While less typing is generally a good thing in a profession where the spectre of carpal tunnel syndrome lurks in the shadows at all times, I think some people over-emphasize how important compact notation is.

For me, the "power" of a good programming language is not how few characters you need to type in order to achieve your goal, but how clear the result is -- how easy it is to read the resulting code and understand both intent and what it actually does. For instance: I've seen a lot of very compact Perl code in my time, but a lot of this code is also hard to read and makes use of subtle nuances in the language that may not be apparent to a novice Perl programmer. I think this is problematic. And indeed, much of the Perl culture is about celebrating these somewhat obfuscated idioms; which I find to be highly counter-productive.

Java has had to endure a lot of criticism for its verbosity and the fact that it does not invite the programmer to do quick hacks. I am not necessarily convinced this is a great weakness of the language.

Most of the struggles I have had with Java are with rather baroque frameworks and bad APIs -- not with the fact that for instance Map types need to be declared and that you have to call methods on them in order to mutate them or access their data -- as opposed to dictionaries in weakly typed scripting languages. When I struggle in Java it is most often because I am using libraries where the author didn't pay attention to the API -- where the author didn't understand that I am not really interested in how their XML parser works; I just need to parse, or write, some simple XML files.

Most of the code I write falls into one of two classes:
  • Hacks
  • High value code
"Hacks" are programs that usually just solve some small practical problem. For instance I have a lot of hacks that do things like clean up files, automate tasks that are tedious to perform manually etc. Most of these are just used by me. Some of them are just used once or over a short period of time. They do not need to be maintainable. Nor does anyone but me need to understand how they work. They are rarely extended or developed further. For "hacks" any language will do as long as it enables me to get a result quickly. Perl, Emacs-Lisp, Python, Shell script usually allows me to get things done quickly.

For "high value code" things are very different. It is likely that once written, a piece of code will be used for a long time and by a lot of people. The code needs to be clear, it must be structured sensibly, it needs to have proper tests and it needs to have good APIs, both internally and externally. It should also give future developers some ideas on how to extend it or change it. Since "high value code" has a longer life-span and a wider audience, it makes sense to spend more time writing it. The time spent writing it will almost always be eclipsed by the amount of attention other people (including you) are going to pay to it. This is where clarity always has to be the priority. I think it is easier to achieve clarity in languages like Java. Yes, some things will be more verbose than, say, a weakly typed scripting language, but does it matter?

I am not saying overly verbose code is better. I am just saying that for "high value code" compactness isn't nearly as important as when you just need a quick hack. The code is going to be around a while so any time spent up front making it readable to a greater audience, is time well spent. It will pay off later.

Résumé tips.

I read a lot of résumés and the way people lay them out varies greatly. For me, the most important thing is what they say, and not how they are laid out, but I am only human; a badly typeset résumé does influence my initial impression of a candidate. The best advice I can give with regard to layout is to make things as simple as possible. Don't make the layout overly elaborate. It is better if you spend time thinking carefully about what to write than how to typeset it.

I stumbled across a blog posting that describes how to do your resume in LaTeX. I think the result looks more than good enough. In fact, this looks a lot better than most résumés I get. If you use this template you can focus on the content rather than fiddling with the way it looks.

If you are not familiar with LaTeX, a neatly laid out text file with about the same paragraphs will do. Seriously, I do like text files. Nicely formatted text is about as portable and easy to read as it gets.

Another tip: my preferred formats are PDF and plain text files. Word files are fiddly because then I have to fire up OpenOffice or NeoOffice to view it, and I still just end up converting the file to PDF for convenient viewing. Try to avoid Word files if you can.


Linux audio woes.

Linux has a lot of potential as a platform for audio applications. Too bad that getting audio to work properly for anything but trivial uses is such a chore. I've had experiences very similar to this writeup.


Irrational fear of open source

I follow various online news services where you can discuss articles. Of course, the discussion forums attached to the articles are anonymous, so there is a lot of trolling and miscellaneous silliness going on, but it is still interesting to see some of the opinions expressed. Especially opinions that are repeated.

One thing that has struck me when any article about open source is published is how many people still don't understand Open Source.

I've seen quite a few postings from people who claim to be software developers and who think that Open Source is a threat to their livelihood. If software is available at no cost, and in source code form, how will they be able to make their money?

There also seems to be a significant number of people who think that Open Source software is synonymous with pirated software or with theft of intellectual property.

Open Source does not mean pirated.
To address the latter concern first: no, Open Source software does not refer to distribution of traditional commercial software in violations of the terms under which the software is licensed. You are thinking about pirated software, which is something completely different.

With regard to the broader issue of theft of intellectual property, Open Source software is no different from traditional closed source, proprietary software. This is a complex issue that spans from software patents to inclusion of code which cannot be re-distributed legally under a license that falls within those accepted valid by the Open Source Initiative.

The good news with regard to open source software is that any infringement is easy to detect since the source code is available. In fact, improper inclusion of intellectual property in commercial, closed source products tends to be a bigger problem. Quite a few companies have been caught doing this and quite often it will be closed source companies improperly including and re-distributing open source software in violation of the license terms.

Jobs and such.
As mentioned before, I have seen some developers ask how they are going to make a living if software is to be free?

A lot of open source software represents the sort of software that acts as an enabling technology rather than a key differentiator. Operating systems, web servers, application servers, system libraries, compilers, browsers, editors, word processors are all commodity software components now. Everyone needs them and it is easy to come by usable, or in some cases, very good instances of these components at little or no cost. They largely represent problems that have been solved to some degree.

Of course that doesn't mean that there is no room for commercial products in commodity software. There are plenty of companies that make these types of software, but the reason people are willing to pay for them is because they offer more than the competitors -- open source or otherwise.

Now, since these types of software represents something that a lot of people need to realize their products, be it a service or an application of some sort, it doesn't really make any sense to roll your own. So you are better off using what is freely available. After all, for most companies that wish to write a web application, it doesn't really make any sense to write their own web server. For most services, a custom web server is going to be an expense rather than a key differentiator. An expense it is going to be hard to recover.

Yet, you might find yourself in a situation where a commodity component does 99% of what you want, but it would be nice to focus on that last percent of functionality that is missing. Open Source lets you do that. You can take something that already works and extend it. Or you can tailor it to your needs.

Of course, many are wary of taking an existing software product and then make changes to it because it complicates the upgrade path and leads to more software that needs to be maintained. This is why it is so attractive to contribute the code back to the project: you get more eyeballs to verify the correctness and validity of what you are doing, and, if problems should arise later, it is likely that other people will spend time fixing your bugs (although you should be a nice programmer and not be sloppy in the first place :-)).

So how do programmers earn a salary? Well, if we are to look at direct involvement in developing open source software, quite a few people make a living developing open source software. Many large (and small) companies that rely on open source components, have programmers on staff that contribute to their development. They get paid as regular programmers to work on, or contribute to, open source projects.

One of the first large, traditional companies that did this was IBM. Years ago they hired a bunch of programmers to work on Apache. They needed a web server for their suite of applications, had a look at what was available and decided that it would make sense to them to help the Apache project, and in doing so, help themselves so they had a good web server on which they could build their products. Today there are even more examples of companies that take a very actice part in the development of Open Source software.

Open source consulting.
Another way to earn money doing open source software is to work as a consultant. Familiarize yourself with a piece of open source software, build a reputation for yourself as an expert on it and then offer your services to companies that want to use or extend this software. You will be surprised how incredibly effective this can be.

Also, if you are a student, this is a perfect path to secure programming gigs in the future and to bootstrapping your carreer. You gain real experience as a developer (something a lot of new grads lack), you build a reputation as someone knowledgeable on certain systems and, provided that you are an expert on systems other people actually find useful, you will soon find yourself short-listed when companies look for people who can do consulting for them.

Ask yourself, who would you rather hire: some random consultant who has attended a training course for some closed source product or one of the actual developers of a system? This is a no-brainer and it is really easy to become a contributor on an open source project. If you are good you might end up as a principal developer on a project, but in order to achieve that you need to put some effort into it.

Also, it is no secret that when doing job interviews, any participation in Open Source projects is going to be a positive in my book since it gives me much more information about the candidate than would the CV alone. (In fact, for me, solid participation in an open source projects counts more than good grades when I evaluate candidates. That may not apply to other people involved in hiring though).

From a corporate perspective
A lot of organizations fear Open Source software. There's a lot of myth surrounding Open Source and regrettably, some of the myths seem oddly persistent. Rather than trying to enumerate the top myths (which may be the topic of a different blog posting), I would encourage people to have a look around: who is using open source software?

Well, if you look at the biggest names in the Internet industry, you can be pretty sure that ALL of them use open source software to some degree. Look at companies like Amazon, eBay, Google, Yahoo! etc. All of them use Open Source software, and if you talk to their engineers (who often never have to consider such trivialities as the cost of software licenses), license cost isn't their top reason for doing so. Their top reason for using Open Source software is that it makes technological and operational sense to do so.

One very important reason for using Open Source software is that it makes you less dependent on a single vendor. If you have a large system and it breaks down, it is much more efficient if you have people on staff (or have a relationship with people who can act as consultants) who can investigate and correct problems.

In the past I have worked for companies that licensed known brand products and paid exorbitant fees, not only for the licenses, but also for support contracts. Only to find that when the sticky stuff hits the fan, they left us dead in the water for a week with a mission critical system that wasn't being fixed.

Also, companies go out of business, license terms change and products reach end-of-life all the time. By using Open Source software you mitigate these risks to a significant degree.

Real life example
In an earlier life, I ran a company with some friends. It was a sort of consulting company, but without any strict limits on what we'd do. We'd take on the sort of jobs we felt qualified to do without limiting ourselves too much. All of us were involved in Open Source software, and we contributed to a variety of projects including the Linux kernel, PHP and dozens of other projects.

One of the projects we did was to add proper support for Oracle to PHP. A german company that wanted to use PHP with Oracle contacted us since one of us was on the core team of PHP back then (Stig). They paid for the implementation of the Oracle support, which was then released back into the PHP project. We got paid, the customer got support for Oracle in a product they wanted to use and the rest of the world could reap the benefits. Not only that, long after the job was done, countless other people have continued to provide support for the code -- fixing bugs, updating it etc.

If PHP had been a commercial, closed source product it would have been hard to add support for Oracle. Nobody else outside the company would have benefited and the original customer would have had yet another piece of code that they needed to maintain themselves.

Concluding remarks
When I come across developers who fear that Open Source means they can't make money developing software, I really don't understand how they could have arrived at that conclusion. Because it is clearly wrong. If anything, Open Source helps foster a richer, more interesting and more sensible software development environment. True, not all Open Source software is great, but a lot of it truly is. Open Source also gives you easy access to so much technology that you would have to create from scratch yourself just a decade or so ago. The lack of which would severely limit what you could create with the resources available to you.

Also, Open Source software is now far beyond the domain of the tinkerer and the hobbyist. Serious companies put serious effort into Open Source software, yet the field is still open to the casual participant.


Still looking for an eBook reader

These past couple of weeks I have been looking at various eBook readers and I can understand why these have not taken off. The consumer electronics industry and the publishers aren't exactly making it easy for themselves.

First off, the devices still aren't mature. The manufacturers still have some way to go in order to make the devices less fiddly. What I want is a device that just stores and displays files. I want it to be possible to install new readers to support the plethora of formats that exist. Putting the files on the thing has to be easy. Ideally, I should be able to put my content on it just by copying files over to it as an USB storage device. That's it. No monkeying about with badly written Windows-only software to get content on it.

Also, I do not need another iPod, tablet PC, or telephone. I already have gadgets that fulfil these roles. Don't get overly ambitious adding irrelevant features to it. Things like WiFi and such are neat, but if it is going to eat serious chunks of my battery life, I can live without it.

Key features I am looking for:
  • E Ink or equivalent display
  • Must be responsive (a page turn should not take more than about half a second)
  • Reasonably robust (should endure being dropped from typical table height repeatedly)
  • Battery life of about one week for some reasonable usage pattern.
  • Fat free design. No mass that doesn't need to be there.
  • Should cost $300 or less within the next 2 years. Less after that.
  • Open spec with user-installable software so third parties can write readers.

Some current readers are almost there, but not quite. The manufacturers also have to understand the main concern of all prospective customers: "will I be able to put whatever content I have on it". This is one of the reasons eBook readers do not sell: the industry is conspiring against the user to make it difficult to make content universably accessible because they want to own the marketplace. Thus you get lots of competing formats with little or no interoperability, customers intuitively sense this and they become wary of the whole category of products.

In the software arena what I would really like is for Adobe to get their act together. For years now Adobe have been adding more and more bloat to Reader in the shape of features that nobody uses! Yet Reader still has close to zero usability. It still has some of the worst navigational interfaces ("hmm...what does down-arrow mean now...ops...no, not what I thought it was going to do..."), it has become more and more sluggish, it takes forever to start, it wants to update itself constantly and when allowed to update itself, spends an inordinate amount of time doing so.

Adobe, you have a good thing going here. Please pay attention to users who care about your product. What you should do is rip everything out and then start over. Make a fast, compact PDF viewing engine. Strip out everything that is not about rendering PDF. Then give it a simple but consistent navigational interface. And then stop adding stuff to it. Concentrate on making it simple, lean and portable. Any further work should be to improve the rendering, the portability, the performance and the APIs programmers will use to embed it and write plugins for it.

If possible, license the code in such a way that other people can help you in porting it. There are plenty of opportunities for making money elsewhere in the eBook food chain and by giving away a proper reader you are gaining more goodwill than money can buy. Seriously, this is very good advice.

In general, for eBook readers, you do not want to make the gadget dependent on any special purpose software for copying and managing content. As a consumer of electronic gadgets I know that such software will invariably be bad. Every gadget I have came with some terrible software -- from the unusable, rubbish photo software that came with my cameras to the clumsy software that keeps corrupting, losing and crashing when managing the maps for my GPS.

I want open gadgets. An eBook reader should be just an USB storage device onto which I can put files. I want to decide how the content gets there. I want to be able to make use of existing software to manage feeds and files and such. Let the open source community build things for managing content. Let third party companies write things. The quality of this work will be so much better than anything you can manage and it will make your device ten times as attractive because people can use it as a platform on which they can realize ideas. If you keep it closed and proprietary and fiddly, it will only go as far as you are able to take it. Which, given empirical evidence from the gadgets available on the market today, isn't very far.

As for content providers, please make more of an effort. Getting an eBook reader is kinda like living in a world where you have compact cassettes, DCCs, Minidiscs, CDs and eight track tape and a bunch of record companies that only release on one to two of these technologies. If you want to cover everything, you need a stack of eBook readers and still, a lot of books that I would like to have aren't available. And most of those who are have flaws -- like missing footnotes etc.

Why? I thought you were in the book-selling business? If you aren't making your books available, someone will. Or your books will go unread. Or are you afraid that eBooks is going to make you obsolete? They may, and if you aren't going to evolve, perhaps this isn't such a bad thing. I have to admit that this part of the industry puzzles me. Someone in the publishing industry will have to enlighten me.

Indeed there are many formats and technologies available now. There's bound to be companies you can turn to in order to make your books more widely available. Better yet, try to work with companies like Adobe -- ask them to make a sensible PDF reader.

Think long and hard about DRM. It hasn't worked for music, it hasn't worked for video and by now I think we can conclude that it probably isn't going to work for books. Since there are virtually no duplication and shipping costs, why not make it cheaper and more convenient to buy the books than it would be to pirate them? A paperback costs what, somewhere between $10 and $30 today? How about you make it $5 and then try to encourage readers to buy their content by giving them extra value? For instance, I'd be willing to pay $5 per book if it meant that you keep the books I've bought available online, so that I can re-download books as I get new devices or as I run out of space and shuffle books in and out of my device. I'd gladly pay a small fee per year to have you manage storage of books I've purchased (which is going to be just about keeping some extra metadata anyway, since you will already have the books on-line for downloading).

Also, if I like a book, I'd love to have the option of buying additional licenses and adding them to my friends' accounts. You can even come up with incentive plans: give away 5 copies and get one for free. There is so much room for innovation and actually improving the way we interact with publishers and book stores here.

I think Jeff Bezos understood this. Just a pity that he got so caught up in creating a business model rather than a sensible technology platform. The Kindle is compromised by simple minded greed and I'd feel pretty stupid paying so much money for a device that is so limiting and where I have to pay money to Amazon and give them my content in order to put it on the device.

What are you trying to do Jeff? Kill the eBook reader market?

Random thoughts
There have been rumors around Apple releasing an eBook reader. I have been trying to imagine what it is going to be like. My first thought is that it will probably look good and have excellent navigation features. My second is that getting content onto the thing is going to be a nightmare. Most likely, Apple is going to leverage the iTunes application (and possibly the iTunes Store) as a management and distribution systems. I am no fan of the iTunes application and I find it annoying that Apple thinks I need a store tailored for my geographic location.

Thankfully the these problems are often mitigated somewhat by enthusiasts working around the problem. But it still begs the question: why can't manufacturers just make devices that work flexibly instead of getting in people's way all the time?

Oh, and I stumbled across an interesting wiki about eBook readers at http://wiki.mobileread.com/

Tim Bray on closures

I read Tim Bray's blog posting on closures. What surprised me the most wasn't what he had to say about closures, but what he had to say about generics. He calls them a disaster. Which got me thinking a bit about my own experience with generics.

For the most part I actually like generics. It does away with a lot of awkward, boilerplate casting sillyness. Sure, it is syntactically displeasing as it gives me flashbacks of templatized C++ code (which I consider to be [insert favorite sequence of negative adjectives]), and it can make declarations quite chunky, but to be quite honest, I can't really think of a significantly better way to do it.

(Someone suggested a mechanism akin to typedefs, but I think that typedefs only makes code even harder to decipher. I've spent significant amounts of time trying to understand C++ code that someone else wrote, and people often make confusing, inconsistent use of typedefs in such a way that you have to be prepared to see the same type expressed in multiple ways throughout the code. I am generally not worried about a bit of extra typing. You can get around the extra typing by using sensible tools. The most important feature of code is readability and clarity).

Now, I was very happy with generics until one day, a friend of mine was showing me how awfully complex declarations some people on his project produced. I've been using generics for a few years now, and none of my code had declarations anywhere nearly as complex. I am not entirely sure what that means, but I am almost certain that it means some people are more willing to sacrifice clarity and simplicity for what they may see as supremely elegant genericity.

I appear to like generics used in moderation.

I think I feel the same way about closures and I think the reason why I am not too fond of the idea of adding closures to Java, as syntactic sugar: people are going to go apeshit and use them everywhere for everything. I'd rather be without them than to have to deal with code that adds another dimension of complexity by using a programming paradigm that can produce code that is hard to decipher.

I spent some time last year programming Ruby, and I can see what people like about closures. But I can also see how I might end up having to maintain code that is horribly convoluted and a lot more work than need be to understand properly.

If I were to complain about features that cropped up in Tiger, autoboxing would be high up on my list. Of course, I realize that ditching primitive types at this point would be a much more traumatic change than adding autoboxing, but I get this weird feeling of danger whenever I use autoboxing.

I know wishing for primitive types to go away in Java may be foolishly utopian. For all I know it may not even be possible without lots of trickery and it may give rise to whole new classes of ugly problems I am not aware of. But it I think I would like it.


eBook readers, trust and technology

The last time I was in the US we stopped by a Sony store to have a look at the gadgets that were on sale there. While browsing the various gadgets on sale it occurred to me that while some of the gadgets looked tempting, I didn't particularly want to buy any of them. The reason is mainly that Sony has such a lousy track record when it comes to how they treat their consumers.

First there was the silliness of their music players. It took a long time before Sony actually understood that the market didn't want to buy DRM-infested players that wouldn't play regular mp3s. While I seem to remember Sony apologizing for their insistence on making DRM-limited players that nobody really wanted, I haven't done the proper research on what limitations these devices still have, so when faced with one, I can't say I am tempted to buy one. Simply because I don't know if it'll work for me.

Then, of course, there was the debacle of Sony infecting their users with rootkits and then not owning up to it until public outcry forced them to admit they had messed up. Again.

These things lead to consumer distrust, which brings us back to their eBook reader. I like the device. The form factor is nice, the screen is very crisp and clear and I don't really mind that it is only suitable for reading text or b/w illustrations. This thing represents what I've been looking for in terms of physical characteristics.

The problem is that it was made by Sony. I have no reason to trust sony.

Standing there in the shop, looking at the gadget, there was no way I was going to buy the gadget simply because I had no way of knowing if it would be of any use to me. Would I be able to read arbitrary books I'd purchased on it? How about the PDF books I have from various publishers? How about my own documents in text or PDF? Would it be simple to move content to it, or would I have to fiddle about, jump through hoops and perhaps have to pay for moving MY content onto it?

I decided I would have to research it before even considering buying one. Perhaps borrow one and try it out for a week or so.

So Sony, the problem isn't the technology of your gadgets. The problem is that I, the consumer, have no reason to trust you. My impression of you is that you're a company that just doesn't get it. You need to get to know your users more intimately. You need to develop a better understanding of what it takes to earn the trust of your users, because the old fossils hanging around your boardroom or the marketroids that are far removed from the user, simply have no idea what it takes.

My colleague pointed out to me that there is a reader on the market that runs Linux and is far more open. It costs a great deal more, but even at a significantly higher price, this device sounded more like something worth spending money on. Just because the chance of it being usable, and not limited arbitrarily by user-hostile mechanisms put in place by clueless designers. That should give you pause: the fact that I'd be willing to pay almost double the price for essentially the same gadget for the added bonus of it not being crippled by "features" that remove flexibility and usability.

Update: turns out all eBook readers I've read about so far run Linux, which should mean that it might be doable to replace the software on them for something more flexible. I'll try to keep an eye on eBook readers in the future to see what pops up from the enthusiasts.


Keeping the hippies off the lawn.

I just stumbled across Dan Weinreib's blog entry on "Complaints I am seeing about Java".

I am almost shocked to find someone actually agreeing with me on most of the points listed in his post. The guy sounds completely reasonable. Wow.

Most of the language-discussions I've seen are driven forth by what I refer to as "Language Hippies". A Language Hippie is someone who is very interested in programming languages and all of them have a secret dream of designing their own language. Or failing that, to inflict the features of one language (usually one that most people could care less about) onto a more mainstream language.

For some odd reason most Language Hippies seem to want features that just result in lower quality code. Yes, lambda functions are cool for some uses and yes, it would save you some typing if Java had them, but so what? How are you going to write unit tests for Lambda functions? By copying and pasting them into some mock of what you are passing it into? And yes, closures are useful when used in moderation, but it doesn't take a genius to figure out that excessive use (and people do tend to over-use features they love) just makes the code harder to read.

How come Language Hippies almost always are such horribly bad programmers? People who write unreadable code with lousy tests?

If they're really so enthusiastic about Lisp, Haskell, Ruby, ML, Smalltalk and whatnot, why aren't they using it?

Some things are fiddly to do in Java. Good. That'll keep people from doing them to excess.


Ixus 960IS

Update: I recently discovered the Powershot G9. This is probably the camera I should have gotten instead since it seems to address most of my complaints about the Ixus 960IS.

I recently got the Canon Ixus 960IS compact camera as a secondary camera to bring on trips or when carrying my dSLR is impractical. I haven't had a proper compact camera for a number of years so starting to use one is actually a bit of a learning curve. A few things I have noted so far:
  • For some reason I find it easier to see which compositions work when I look through a proper viewfinder. With a compact you get a screen at the back that you use for this purpose (the viewfinder isn't really usable), but it isn't really adequate for choosing the composition or for timing your shot precisely, which brings me to the next problem:
  • Compact cameras have significant shutter lag. The 960 is a huge improvement over other compacts I've tried in that the lag is very short, but it is still there and I still need to get used to how much lag to expect.
  • The controls on the thing are bad. Really bad. For instance, the 960 has a feature that lets you boost ISO for a shot by pressing another button, but there is no way I can manage to press this button without fumbling around. Also, the idea of using the navigation ring as an "ipod selection wheel" to choose between shooting modes, is terrible. It just doesn't work. I suspect they cared more about the looks of the thing than they cared about actually making the controls work.
  • Image quality isn't all that brilliant; especially in low light conditions. I don't like to use flash, but with this camera you simply have to use the flash in low light conditions.
  • Megapixels aren't everything. The thing has 12+ megapixels, but I suspect the miniaturized optics are to blame for the end results. My old 6 megapixel Nikon D70 beats the Ixus 960 hands down. Even with cheap optics.
  • If you are used to an SLR you will miss the tactile feedback. Pushing the shutter button gives you no feedback and the thing is so small and slippery that it is really hard to get a good grip on it. This combined with the badly designed physical controls makes it very hard to get good, stable, well-timed shots.
  • Manual mode should be manual mode. I want to control aperture, shutter speed and ISO directly and I want the camera to have proper physical knobs that makes this easy. The 960 just had an odd mix of various automated modes and you need to navigate the terrible menu system to affect any changes.
  • Give me raw files. I don't want the JPEGs. JPEGs are just a hassle if you want to post-process your shots, and you do need to post process if you are shooting in challenging conditions.
  • Battery life is great. It seems much better than the Nikon Coolpix-something or other camera that I have, and which I have tried to make use of without any success because it runs down the batterly too quickly. I've used the Ixus several days in a row now without recharging and the indicator still says the battery is full.
  • The camera starts up rapidly. Nothing like a dSLR, but the little lens-extension-startup-ceremony is really quick.
Of course, these remarks represent my initial impression of the Ixus 960IS. As I learn more about how to use it, I may develop some habits to work around the limitations. What annoys me is how complicated manufacturers make consumer products. If this was intended for any sort of "prosumer" market they'd focus a lot more on the process of actually taking pictures and less on all the silly face-recognition, the kids-in-snow shooting modes and all the other silliness that isn't really of any use to someone who has spent some time taking pictures. Also, I think cramming all this rubbish into a camera just confuses the novice photographer even more. At least I find the menus and the user interface terribly disorganized and confusing.


Why do people say "um" and "er" when hesitating in their speech?

I've always been a bit fascinated by speech patterns and how some people seem to litter their language with "filler" that doesn't carry any meaning. Most people, to some degree, litter their speech with non-word sounds ("um", "er" etc) and injection of filler words, such as "like" and "basically" -- the latter, for some reason, being very common in the techie crowd.

Once you start noticing this, it gets really, really annoying. Some people can hardly finish a whole sentence without the use of filler and some do it to such an excessive degree that most utterances are just a string of filler words and -sounds with only a minute amount of actual content thrown in.

Of course, I notice that I do this myself. Interestingly, the degree to which I do this seems to depend very much on whom I am speaking to and what the context is.


When in doubt: chuck it out (and rewrite).

An interesting article about the BBC and Perl on rails appeared on one of the news-tracking sites I follow. This reminded me of some points I've made in the past.

Whenever I have to deal with legacy code operating way past its sell-by date I get this strong urge to just throw it out and start over. Now this never gives any sort of higher-ups warm and fuzzy feelings. This is not what managers want to hear. More often than not, they'll feel like chucking you out and finding someone more obedient and enthusiastic about tar pit-diving.

Managers never like to be told that a system they've poured money into should be scrapped and redone. I guess this is a legacy of defining "software engineering" as "engineering" when clearly it isn't.

Here's why: software in itself has no value - the knowledge it represents has value. The problem lies in the unrealistic expectation that a complex software system can be planned, designed, implemented and deployed -- like a bridge or a piece of road. But bridges and roads seldom have to accommodate dramatic new uses. Nobody expects you to build a road that 18 months from now needs to sprout new features for which there wasn't even a name when it was first built. Nobody builds a bridge and then says "well it needs to accommodate six more lanes and you should be able to land a plane on it".

It doesn't matter how much a complex system cost to put together. If extending it and adapting it takes more time and work than is reasonable, it should be fairly easy to calculate when you have recovered the cost of doing over again. (Provided that you know what you are doing and that you won't fall prey to the "if you are doing a new version we want these extra features too"-trap And even if you throw away every single line of code, you still have the knowledge -- you still know a lot more about what you need than you did at the outset.

Another interesting thing mentioned in the article is how the BBC outsourced a key part of their operation to another company, rather than building in-house expertise. It always puzzles me when organizations of considerable means do this. To me, if your success to a significant degree depends on your technological infrastructure, it is foolish, if not irresponsible, not to have expertise on those systems internally.
For those who read various trade rags, BBC used to be an organization that took the technology they depended on seriously. Then at some point, the bean-counters figured that it would be okay to just outsource everything they could, making the books prettier, and thus bringing an end to the era when the BBC was a place where people would turn to learn. Where technical expertise was cultivated and grown.

I certainly hope more people observe and learn.

Internet penetration

Up until recently the Internet connection of my parents consisted of a dodgy, no-name modem that on a good day was able to negotiate a 40-something kilobit connection to what I can only imagine must be a rack of museum pieces at Telenor. The way I learned that my parents had discovered the Internet was when my mother sent me an email after having found my homepage. With a picture of me on it. Taken after what can only be described as a hair-related misadventure.

I basically got a takedown-notice from my mother saying that I had better take down that horrible picture of me with bleached hair. The Internet age had arrived at my parents' place.

At 40 kilobit, life is pretty miserable these days. For instance, reading newspapers just isn't a viable option as it takes minutes to render the front page of most Norwegian online newspapers, and you can forget about wasting an entire sunday afternoon browsing YouTube videos of all the silly things cats do.

Sending my parents photos in email would result in the Internet equivalent of trying to drain swimming pool full of syrup -- in cold weather. Fetching email through POP over a 40 kilobit link if someone has mailed you a picture is glacially slow. If I needed to send my mother some pictures I'd rather send her a DVD or just print them out.

A few weeks ago all this changed. My parents made the leap into the wonderful world of broadband access.

All I need to do now is to figure out how to get my father excited about using the Internet and how to wean my mother of all the inefficient tools she has been using up until now. I am toying with some plans of setting up a Linux box there, or buying my father an Apple Mini.