Wednesday, June 30, 2010

Programming Languages

People who know me will be aware that I've been exploring the suitability of various programming languages for some software that I want to work on. Abetted by my ADHD/Aspie brain, this has been a bit like Alice falling down the rabbit hole into a world of weirdness. As the weeks go by, my collection of potential languages has grown much faster than my ability to do any of the evaluation that I was planning.

For the record, the list now consists of x86 Assembly Language, C, Python, Lua, Scheme/Racket, Common Lisp, Clojure, Erlang, Haskell and Javascript (in no particular order). And, if Clojure is involved, that would also mean learning Java—something I have assiduously avoided for the last 15 years. The more I add to this crazy pile, the more sure I am that I must be missing the perfect answer, even though the sane bits of my mind know that there is no perfect answer. Of course, the longer I amuse myself in this pseudo-analysis, the longer I am safe from having to put any work in on any of the real projects on my list.

It would be nice to be able to say that this insight has freed me from analysis paralysis and that I'm just going to start on something. After all, I am good at telling other people that any decision is better than no decision and that even a wrong decision can be easily fixed once it's clear that it was wrong. I'm less capable of listening to my own good advice. However, it has occurred to me that I could just decide on one step right here and now. So, for no reason other than that it's the language I know least about, I'm going to do some work with Clojure over the next week or two to see if it's a real candidate or not. The others can wait.

Monday, June 28, 2010

LCA 2011 is not far away

To be more truthful, LCA 2011 is not far away if you're planning to present a paper, because the all-important call for papers will be going out soon. Time to start thinking about the killer presentation you might want to make. Final conference dates are 24-29 January, 2011 and it's happening in beautiful Brisbane.

I understand that the invitations to keynote speakers will also be going out any day now, so hopefully there will be more to say about that before too long. Having not had a chance to attend an LCA since the last time it was held in Brisbane, I'm really looking forward to this event.

Friday, June 25, 2010

Public Goals

That title has nothing to do with football, just to get that out of the way. I have seen many people in the business of helping the rest of us to sort our lives out who advocate setting goals and committing to them in public as a way of focussing attention on the pursuit of those goals.

I've avoided that for most of my life, but today I'm going to dip a toe in the water and declare a goal of shedding some weight. Forty years ago, I weighed a little under 60 kg. Now I weigh a little under 80 kg. I have added the weight in teensy increments over the whole forty years, at the rate of about half a kilogram per year, and have hardly noticed it happening. But that's heavier than seems healthy for a boy of my build and height, so I have a plan to reduce it.

I have no illusions of getting back to the trim 58 kg of twenty-year-old me. But it seems feasible to aim for 70 kg. To make this concrete, my goal is to lose 10 kg in the next 100 days. If anybody wants to hold my feet to the fire over this, make a note in your diary and we'll see how I go.

I plan to announce some other goals here over the next few weeks, but I also have plans to talk about software before long, so maybe I can combine the two.

Friday, June 18, 2010

Constant Improvements

A couple of days ago, I wrote about a customer service failure at FooBar Motors. I did not identify the company because they generally do a pretty good job of looking after their customers and that's why I keep buying cars from them and why I keep getting those cars serviced by them. The thing I was getting at is that, even when the culture is to provide great service, it's not always easy to get all the details right.

That brings me to my domain—software. We creators of software probably make more painful hoops for our customers to jump through than even the worst car dealership. And, in some ways, we have much less of an excuse: software is infinitely malleable, so we just have to fix it when it's hard to use. But we don't always know that it's hard to use. When we test it, we're kind to it and treat it the way we meant it to be treated. When it resists us, we understand it well enough to gently persuade it to go where we want. When it tells us lies, we don't feel too concerned because we understand why it lied. Besides, it's our baby and we don't like to be told that our baby is ugly, so we resort to that ever-reliable solution—denial.

And of course software is difficult to test. There are so many ways to get where you think you want to go that it's almost certain that a user will find pathways that we neither intended nor perhaps even noticed and which we certainly did not get right. Lots of people have written papers and books and given presentations about the business of software testing and I'm not going to try to push any particular approach on you today. But I think it's really important for all of us who create software to recognize that we are far from getting the testing right and that it's something that we must pay better attention to in the future.

Wednesday, June 16, 2010

What's Wrong Here?

Recently, I needed to contact the service department of a local car dealer. Knowing that I could instantly put my hand on the previous service invoice from them, I grabbed it and saw a little box that said "BrandA service" with a phone number. I rang the number.

It rang for quite some time and was eventually answered by a receptionist who said, "Good morning, FooBar Motors, how can I help you?" I asked for the BrandA service department. She said, rather impatiently, "Which dealership?" Not expecting that question, having got the number from that dealership's invoice, I hesitated a moment. She then said, "SuburbM, or SuburbN, or SuburbO, or SuburbP?" So I said I wanted SuburbM and went through the wait for the next receptionist to answer.

Again, I heard, "Good morning, FooBar Motors, how can I help you?" I was on top of things now, so I said I wanted the SuburbM service department for BrandA and quietly congratulated myself on having short-circuited at least one step in the process. The next receptionist who answered said, "Good morning, FooBar Motors, how can I help?" I imagined I was talking to the right person now, so started to ask my real question. She interrupted and said, "Are you after the service department?" I admitted I was, and waited once more for the next receptionist in the stack to answer.

FooBar Motors have many signs posted up in the local premises talking about how seriously they take the issue of providing great customer service and, as a matter of fact, the people who you meet face to face there are polite and helpful. But the pain of ringing them is really a bit much.

Saturday, June 12, 2010

Tea Parties and Unicorns

Not so long ago, I overheard somebody say that life is not all tea parties and unicorns. That's probably true, but it seems a bleak view. My plan here is to make sure that there will be enough of both to go around.

I started my first blog, on the edge, six years ago as an experiment to see if I wanted to get into the blogging thing. It was built on simple software and was always intended to have a short life. My habitual farting about in search of the perfect blogging software platform once I decided to continue has resulted in the temporary thing living for so long.

I've decided to tackle some of my imperfections head-on and so, rather than find the perfect software (which seems not to exist, surprise!) or (even worse) write my own blogging platform, I decided to just adopt something that's already out there and at least partly functional so that I can go ahead and write rather than do the teenage angst thing.

I also decided to stop fretting about the exact niche for my blog. This will continue to be a place where I write about the things that interest me. That probably means there will be quite a bit about software—the writing of software and the languages and tools associated with that. If I manage to make a few more of the decisions like the one I made to start this new blog, the software articles will probably make up a fair bit of the content. Failing that, there are always the tea parties and unicorns.