Showing posts with label rant. Show all posts
Showing posts with label rant. Show all posts

Saturday, 3 January 2009

Perhaps You Shouldn't Get Involved in Free Software

Say you're a bright young kid at Univeristy and you've decided that computer science is what you want to do with your life. What should you start doing with yourself to live that dream? One piece of advice you will frequently hear is 'Get involved with an open source/free software project.' Should you?

Short answer: yes, with an if. Long answer: no, with a but.

If you want to be working in computer science, you'll probably be programming. A lot. And in fact, this is probably what you want to do. Like all professional skills, programming takes a large amount of practice before you become truly proficient. The commonly cited figure is 10,000 hours of practice to become proficient in your chosen profession. The sooner you get started on those 10,000 hours, the sooner they'll be over.

Becoming involved with an open source project is a great way of getting your practice in. You could also practice on your own project of course. But, you'll get more satisfaction from contributing to an open source project that others use. To become involved though, you'll need some level of proficiency. So hack around with your own projects; write a game; then start reading the mailing lists of an open source project you use and pick a simple bug from the tracker. There's lots of advice out there on how to become involved, I'll leave that up to you.

That's a pretty good reason to become involved with an open source project. And if that is your reason, head on out there kid, you'll do great.

That's the 'if'. Now for the 'but'.

Notice above that I referred to getting involved with an open source project? Not the open source community? If you're a particularly bright kid in your class, then please let me beg you to think deep and long before becoming involved in the community.

Why are computers important? Step outside of your beloved field for a moment and ask yourself, why do you think computers have been an important and interesting invention? Why is writing software for expensive, abstract machines to be used by the middle-class of the first world a noble endeavour? How can better computer science help people? I mean really help people. Not allow them to quickly find a cheaper price on that expensive gadget they don't need, but do the really important things: cure malaria, educate the third world, connect with strangers, fall in love. Whatever it is you think needs solving.

Personally, I do think computer science has the potential to make the world a better place. And I believe you don't need to be working in some research lab to achieve that. My definition of making the world a better place is simple: find someone with a problem, solve it, and leave them to find other problems in need of solutions. As an organic, growing, network every individual has the ability to change the world for the better by focusing on this question: where do I see problems that my expertise can help solve?

And here lies my issue with the open source and free software communities: being able to recompile the kernel to your operating system is a problem that only other programmers have. The rest of the world see computers and software as tools to solve their own sets of problems. Anytime a computer or program does not do what they want, a problem goes partially unsolved. And that particular unsolved problem is a problem you're simply unqualified to solve. You, as a programmer, can only ever indirectly help with those problems.

Lifting our heads outside of our insular worlds of programmers and computer scientists, we can see that the rest of the world has a problem with computers. These supposedly powerful devices, that the first world has invested a huge amount of resources in improving over the last 20 or 30 years just don't seem to have reached their potential. Instead, rather than constant improvement with the goal of improving the lives of real people, computing has become insular. Insanely insular. Programmers either solve problems only other programmers have, or they simply duplicate the work of other projects, poorly. Very poorly. And this is most obvious in the free software communities. In my opinion, the world does not need another poor implementation of a 38 year old operating system. The world does not need another poor duplicate of photo editing software. The world does not need another poor duplicate of office productivity software.

The world needs the potential of computers applied to new problems. Or, at the least, original solutions to already solved problems. And in my opinion the free software community, in its current incarnation, will never deliver on either of those. The free software community is tackling what they see as a moral and ethical problem: source code wants to be free. Their current solution to this problem is to duplicate every popular piece of software with a suitably free license. So entrance into the free software community requires accepting this, and then duplicating existing commercial software. To me, that sounds like a complete waste of my brain.

And if you're as bright as I think you are, then it sounds like a complete waste of your brain as well. Please, choose to advance our industry, take it in new and interesting directions. Start your own company, work for a large company. These are not immoral decisions. You will be advancing the sum total of human knowledge, you will be solving real problems of other people. People without the expertise to solve these problems. Expertise you have.

And this is without even getting into the ethics of duplicating someone else's work.

The free software rhetoric can also damage both computing and free software. Personally, I found the moral aim of the One Laptop Per Child program repugnant. But, their efforts to re-imagine what computers could be was exciting and full of potential. But, eventually all for naught as the program has been tried, found guilty and executed in the court of free software. Why? Because they chose to use a non-free (gasp!) wireless network driver and because they chose to allow Windows to run on the device. The project was found wanting, and abandoned. Why does the choice of underlying operating system matter that much? If the project believes their new approaches were of value, why not try to improve Windows? It's not as if these computers would be powerful enough to re-compile Windows anyway, even if the code was available.

You're young, you have brains, you have energy. Please think about it before deciding that the free software community is where you want to devote your energy. Do not write off working for Google, Silverbrook Research, ThoughtWorks, or even Microsoft. There is nobility there, I dare say more than there is to be found in holding back our industry.

Sunday, 23 November 2008

The Worst Desktop Operating System. Evar.

I complain a lot about FreeBSD here and on Twitter and, thankfully, I am now about to stop using that horror on my desktop. But why horror?

  • In the world of desktop computers, anything that is not Windows, is niche.

  • In that niche, anything that is not Mac OS X is niche.

  • In that niche, anything that is not Ubuntu Linux is niche.

  • In that niche, anything that is not Red Hat or SUSE Linux is niche.

  • In that niche, anything that is not one of the commercial workstation UNIX operating systems, like Solaris, or AIX, or HP/UX is niche.

  • And down there, in that niche, in that fraction of a fraction of a fraction of a fraction of a percent of the world of desktop computers, FreeBSD is niche.

From a technical point of view it actually has quite a lot to recommend it. The kernel is very well tested and reliable. For a UNIX, it has generally made decisions for correctness over performance. Something Linux certainly can't match. The user land is a consistent space, harking back through over 20 years of tradition. The ports system is a pretty good way to install and manage software.

But. In the whole world there are perhaps 15 people using it (no, not really). Anytime you Google for any problems or issues, you'll find Linux, and just have to hope that you can figure out to translate the instructions.

And this is to say nothing of the complete dearth of available software. To use FreeBSD is to always be several versions behind in Firefox. To have to compile Emacs from CVS source. To have to tweak the source code to your video driver.

FreeBSD may once have had the One True Filesystem layout, but not anymore. Linux is now nearly the king of that hill. Don't use FreeBSD as your desktop. You really don't care about how good the kernel is. You really do care about not having to compile video drivers. Worst Desktop Operating System Evar.

Monday, 1 September 2008

On the Nature of my Damage

Recently I have realised that at a very early age my attitudes towards and interactions with computers were permanently damaged. Like all geeks, I first started programming in primary school. And like many geeks my age, the first computer I had to program was an Apple //e. My Dad had lots of books for the Apple //e, so I had a lot to work through. But once he got a Mac, I wanted to program that as well.

The seduction of more power, I guess.

Well, times were tough in the Northern Territory: the only book I could find even vaguely on programming the Mac was The Apple Human Interface Guidelines. The original edition, by Tog, from the mid-1980's. That was it. And this was, of course, long before general Internet availability.

What was I going to do? That was all I had, so that's what I read. Cover to cover. Twice.

The Apple HIG is a somewhat unusual technical manual. Instead of just documenting all the available possibilities, dispassionately and exhaustively, this book took a very firm position. There was a right way to do things and things must be done the right way. The HIG then set out to list the right ways and the wrong ways, with justifications.

This preaching about the true path was both low-level and high-level: as well as detailed instructions on how to place and label buttons, it was also about how to design whole programs for the smoothest and most consistent interaction with the user.

And there was installed my damage. That book didn't just encourage good UIs, it demanded them. And now it seems that I demand a lot from computers. Computers shouldn't be hard to use, in fact we shouldn't even notice that we're using them at all.

Now every time I have to do something just so the computer knows what's going on (like 'Save') or I have to jump through a hoop because it's easier for me to jump then the programmer to write their software well, I feel a deep sense of annoyance. It doesn't have to be this way, dammit! Computers are meant to free us from drudgery to allow us more time to do the things we enjoy. Or, more cynically, the jobs we're more efficient at. Either way, doesn't matter to me. But, most of all, computers don't have to be this way. It isn't that much harder to do the right thing. We could do the right thing in the 1980's; we can do the right thing now.

As a programmer I could be frustrated and demoralised by the state of my industry. Maybe later. For now I choose to rant and rail against this, and fight. Much to the endless delight of my highly fortunate colleagues.

Thursday, 10 July 2008

Steve Jobs & the JesusPhone Will Save Us

Clearly Steve Jobs and the JesusPhones is the ultimate name for a band.

We've had mobile phones in our lives for quite awhile now. First they were enormous, and only tradesmen had them. Then they started to get small, really small. So small you couldn't use them. And then they got bigger again: now swelling with countless features. Torches, cameras, pedometers. Some of the features stayed, but not many. Next was email, and that's been pretty popular. The Internet made its way onto our phones as well, but like video calls didn't really go anywhere.

This Friday the iPhone will launch in Australia. And predictably people are going crazy. When was the last time you knew the launch date of a mobile phone ahead of time? Sure, most of the hype is because it's Apple and everyone loves Apple and isn't it so gorgeous and stylish and Oh My God I've just got to have one. Deep breath. But is there something else going on here?

The core function of a mobile phone is making phone calls. Well, yeah. But there have been countless other features rammmed into them. Haven't some of these taken off as well? Yes. There is one that is on every phone in Australia, most of the phones in the world and used by the overwhelming majority of mobile owners; in some demographics more than phone calls: SMS. But SMS is just a very limited single-person to single-person version of online chat. AOL first released Instant Messenger back in 1997 and it's been huge ever since. IM, with presence, blocking, buddy lists, group chat, location mobility is a far richer chat experience than SMS. So why don't you, yes, you reading this post, have an IM client pre-installed on your phone? Why hasn't SMS gone the way of SIM card addressbooks (remember those?) and been completely replaced by IM?

Firstly though, why is that an interesting question? As I said, we've been carrying mobile phones for a long time. And in that time phones have progressively become more and more powerful. Sure, they've lagged in the power stakes behind standard computers, but I think you'd be surprised by how little. The original iPhone was equivalent at release to a four year old Mac laptop. Four years! I was writing interesting software (including a chat system) on 18 year old Macs! So clearly phones are powerful enough. How come then, given that we have these mini-computers with us more than our real computers there aren't interesting applications for them? How come it's still phone calls and SMS? This is expecially frustrating as these powerful devices have permanent connections to the Internet, everywhere! Something I could only dream of when I was first writing software 15 years ago!

People have tried. Shrinkwrapped application developers, vertical integrators, shareware developers have all tried to make a living writing software for phones. And one by one they've given up. And after much thinking the industry as a whole has come up with a batch of reasons why there has been no success. And a lot these reasons boil down to there is no killer app. There isn't one thing that people want to do with their phones other than make calls or send texts. And I bought that line too. Until I thought of SMS and IM.

So why no IM? Well firstly, you are not Nokia's or Ericsson's customer. You are their product. Telstra is their customer and you are being delivered to Telstra so Telstra will buy mobile network gear off Nokia. Interesting. It may not be true any longer, but Nokia used to make more off that gear than their phones. The phones were a loss-leader to drive sales of equipment.

Why the 160 character limit on SMS? Because SMS messages are squeezed into a gap in the control sequences that phones exchange with the towers to remain connected to the network. In other words, SMS messages are sent anyway, all the time, even if you haven't put anything in them. They are just part of the network! So why do the telcos charge 25c per message? Because they can. Oligopolies are cute like that.

Imagine how many text messages are sent every day. Think about how much is charged per-text. All of that income is pure profit for Telstra and the other telcos. That is an enormous, uncontaminated by overheads revenue stream. That kind of revenue is addictive. And here is the crux of the problem with mobile phones: the telcos became addicted to their existing revenue streams and then, with the handset manufacturers as their willing accomplices, set to work on completely controlling and stifling mobile phones as a platform.

Writing applications for phones is incredibly difficult. I don't want to go into the problems here but the two main issues are the half a dozen different platforms with inconsistent implementations of the same platform across devices and end-user distribution and installation are essentially impossible. This situation did not happen by accident though. The telcos strongly encouraged this situation to emerge. Why? Because they are terrified of just becoming a utility that can only charge for data flowing down the pipe. It may be too late, but this was a very short-sighted fear.

Apple and the iPhone are changing this world. Not because Apple are out to save the world, not because they only care about the user experience, not because their phone is pretty. Nope, that's all hype. The iPhone changes things because for the first time, you the phone buyer are actually the customer of the handset manufacturer. Apple is not trying to sell network equipment, Apple is trying to sell phones. And they decided that to sell phones the phone has got to have a great browser. And the ability to install other applications. And somewhere to buy those apps from.

You are buying the iPhone and you're liking it. Or you're not buying it, but those particular features sound pretty good. Why can't my Nokia have those? And pretty soon the telco's worst fear is realised: they are just a pipe through which we ship packets. And I can guarantee when that happens that 160 characters worth of IM conversation will cost a lot less than 25 cents. Try 0.03 cents. That's 833 times less! At today's rate, no demand discount applied!

So, relegated from giants of the economy to the likes of water and sewage for the telcos. But, it didn't have to be this way. As well as providing the network, telcos had something else: a billing relationship with the consumer.

What if when browsing Amazon on your phone when you bought something you didn't have to enter any credit card details? Instead the web site communicated directly with your phone, used a rolling key from there to sign the invoice and then billed it straight to your phone bill? Gee, sounds pretty convenient to me. And a hell of a lot more secure than handing out credit card details. This can only work with phones, and telcos have only a short window remaining to make this happen before something else comes along. They had their chance to replace the credit card companies. But because of their addiction to their immediate (but ultimately doomed) revenues, their willingness to screw their customers and stifle an entire world of technology for almost two decades they appear to have done themselves out of a future.

I, for one, shall not mourn their passing. And do not mourn for Nokia either. Brainless henchman is not a noble calling.

Sunday, 6 July 2008

Ahh, audiophiles

I've always enjoyed audiophiles; it's pretty hard to find a single group with so much rich potential for mockery. But, through all my laughter at their talk of high quality digital cables (they haven't heard of error correction perhaps?); through all the sniggering over their detailed discussions about bit rates when the Nyquist-Shannon sampling theorem is a mystery unto them (What? Perhaps the CD sound frequency of 44.1kHz being approximately twice the typical highest human-audible frequency is a coincidence?)

Anyway, for all that I've always just thought it was funny: Ahh, aren't they cute? No knowledge of information theory at all, but here they are arguing about transmitting bits. Still cute though. Just a geeky hobby, kind of like theology. Theologians and audiophiles arguing about things that aren't really going to have any effect on their lives, that they don't understand, and in the end are all indistinguishable.

And I've always assumed that on some level audiophiles knew just how ridiculous they were. They'd never admit it, but there was always something in there that would prevent them from doing something really stupid. But, no!

Behold! The $500 Ethernet Cat-5 cable! And it's not even blue, like a proper one! And they're available used! Some idiot actually bought one of these!

Oh, and please, please, please can an audiophile attempt to defend this? I won't respond, but it's always amusing to listen to.

Sunday, 17 February 2008

On Reading and Writing

You may have noticed a pattern in my posting over the last few months. There was a lengthy quiet period at the end of last year, followed by many posts so far this year. You may also have noticed that I've been clearing a large backlog of book reviews, but with each separated by a non-book review post.

Well, of course the dry spell was caused by complaints. Apparently I was posting too many book reviews, my blog had become too much of a book-blog. It's funny the effect that complaints and criticism can have. When you have to work out if everything you write is something that someone else will want to read, the effort of making that decision on top of the effort of writing can very quickly become pretty expensive.

It's stupid to complain about this though. That kind of complaint is something everyone has to go through as soon as their output is read. If you want readers, then expect that, and if you're not after readers, then don't publish. Pretty simple. At first I kept writing my reviews without publishing, but that wasn't enough, so they're now back. But it doesn't really work to say I want to publish this and readers be damned. So, a compromise. I'm interspersing my book reviews with other posts, like this one. Stories, photos and good old rants. The backlog of reviews will eventually clear. I'm not sure what will happen then...

But I also wanted this post to be some sort of explanation for why I have continued the book reviews. Originally, I said that I just wanted to keep track of what I'd read and any first impressions. But, I've found that planning to write a review changed the way I read and, for me, in a good way.

I found I was reading books a lot deeper. I was predicting plot twists, noticing intentional coincidences and becoming more involved and aware of the atmosphere the author was trying to create. I also started to notice the techniques the author may have used to achieve this. Turns of phrase, pacing with a description at a well-timed juncture to set the mood. The language they use and how it might affect your impressions. I found that this closer reading managed to significantly increase my enjoyment of a book - even a not particularly good one. I can't promise it's for everyone, but I've got a lot out of it and it will continue.

Everything that appears on this blog is written twice. Well, most things, like longer posts such as this and all my book reviews. The first writing is done in long hand using a fountain pen in a journal of some sort (currently, an unruled, leather wrapped Corban + Blair given to me by a couple of friends.) Then I type the entry out using Emacs and post from MarsEdit. A combination of old and new technology that I like. So why do I have this involved writing process? Why not just type directly into Blogger's text edit field?

Well, there's a couple of reasons. Some apply to everyone, and others apply only to me. Firstly, Blogger's (and all web app) text fields suck. You're just far to exposed too exposed to bugs in too many different pieces of software. If I'm going to write a long post, I want some more confidence that it's going to survive to be published. Secondly, I live inside Emacs and I'm officially Emacs-retarded; I want my reflexive editing keystrokes to do what I expect.

But those are just technical reasons and only apply to the MarsEdit/Emacs parts of my process. Why the long-hand? The fountain pen?

In truth, I don't really know. And to be honest, 'affectation' would be the biggest part of the answer. It's hard to justify a fountain pen and a leather-bound journal any other way.

But, but, but... a blank computer screen has never been a very creatively inspirational sight for me. Even when programming. I just can't start thinking when I'm staring at a blank text window. I need to get away from a computer and into a garden and then I can start to think.

That was without planning or thought. While living in Darwin, when doing any programming I'd figure something out - and then find myself in some part of the garden. I'd got up from the computer and walked around the garden on auto-pilot.

Anyway, a journal and a pen get me away from a computer. And once you've written with a fountain pen, you'll never be able to write with any other pen again. There's just something about the way the ink lays down while the nib glides effortlessly across the page...

But there's also something about the act of writing for me. It's just a great way to crystallise and direct my thinking. Of course it largely comes out as a mess on the first pass. Incoherent sentences, the same word repeated over and over again. The typing it all out again is a fantastic editing process. I can't help but fix up all those little problems. In the end, I enjoy the writing process, much as I enjoy reading. These are things that work for me, with how I want to read and write. Always make sure you do what works for you.

Finally, in all my talk about what I write in my blog you may have noticed that there was no mention of the computer science that used to be a staple of this blog. Well, there are a couple of reasons for that. My new work project is intensely interesting and gives my a lot of scope for thinking about comp. sci. and experimenting with ideas: the sort of thing I used to do here. But the damn, freaky secrecy of my work prevents me from talking about that. There is a slight cracking of the paranoia though, and hopefully at some point I'll be able to write about that here.

Also, hang around on reddit enough and you see a veritable flood of badly written tutorials on the latest programming feature to catch the eye of the blogosphere. I choose not to contribute to that until I have something substantially interesting to all. Surprisingly enough, my lament about protoypes fell into that category. I believe Shrew also will; there will be more about that at some point.

Tuesday, 27 November 2007

One Computer

Thomas Watson from IBM said that he could foresee a need for perhaps five computers worldwide, and we now know that that figure was wrong, because he overestimated by four. - Clay Shirky

There is only one computer in the world now, and that computer is the World Wide Web. Developers must know that, understand that and believe that.

Software does not matter unless it is written to run on that one computer. Know that too.

I have been saying this for awhile now, and some people have had some trouble understanding what I mean. I am not saying that the only thing that is to be written must be web applications. What I am trying to say is that if you are writing software it must be able to be used by applications and software that does run on the Web.

If your software does not, then it will simply be ignored. That's not malicious or intended as a criticism of your code, I'm sure it's very good. Think about it this way: as OS/2 faded away any software that only ran on OS/2 simply stopped mattering. This is just happening again, except all operating systems are fading away, replaced with that one computer.

So, if you have some amazing idea for writing some beautiful video processing code in the current functional-language-of-the-moment, you must have a plan for making that code useful to the web otherwise no one will ever use your code.

Positive Change

There was a federal election in Australia, just last weekend: the 24th of November. This election went a lot better than the last few years worth of elections. John Howard finally lost. After 11 years in power and four election victories against either ineffective or insane Labor opposition, the mean, evil little troll has finally been ejected from power.

It was very satisfying to also see him so thoroughly ejected from power: only the second sitting prime minister to lose his seat. Ahhh...

And Australia can now try to once again become a better place to live.

There has been much discussion over why Howard deserved to lose. Many have correctly pointed out that for all his claims he was not a leader who championed much reform; that the continuous 11 years of economic growth was really part of a longer 16 years of growth started under the previous Labor government due to actual economic reforms; that he no longer offered any kind of vision for the future of Australia; that his threat to hand over to Peter Costello was seen as just that: a threat; that it was just his 'turn' to go.

For me, while all of those (except the last) are true, none come close to the real reason why I have always been adamantly against Howard, and why I am particularly happy that he has now been voted out.

Howard was a leader who created a government of isolation, selfishness and meanness. And of course this sort of attitude at the level of the federal government can't help but affect the entire shape and direction of Australian society.

Consider a handful of events under Howard's watch:

  • Pauline Hanson spewed her racist, xenophobic vitriol without any form of condemnation from the government, permanently damaging our image and reputation throughout Asia.
  • Refugees aboard the MV Tampa were prevented from entering the country, extending our damaged reputation to the entire world.
  • The GST, a fundamentally inequitable tax hated by both small businesses and the poor alike, was introduced. When there was apparently no need as all the earnings were returned as tax cuts.
  • Children nearly drowning while on their way to the Australia was used as a wedge to further incite anger against refugees.
  • A deeply unpopular war was started with the sole justification of supporting George W. Bush.
  • Tax cuts were the sole mechanism of delivering benefits to the population: a mechanism that always favours the rich over the poor.
  • University educations became a mechanism to turn a profit.
  • The enormous earnings from the global resources boom was squandered without any investment in social services.
  • The Australian republic movement was deeply damaged.
  • There was absolutely zero progress on Aboriginal reconciliation: capped with the 'intervention.' Itself worryingly reminiscent of the Stolen Generation.

Ultimately, this was a government of the mean to benefit the rich. Under Howard and his cronies Australia became a more selfish country, a more racist country, a country of people who would not do something just because it was the right thing to do.

I was always against Howard because of the damage I thought his ideaology was doing to the fabric of our society. In the end, my theory is that he lost because people finally saw him for what he was. [WorkChoices] showed that he didn't really care about his 'battlers.' And also, I believe that people didn't want to be selfish and scared anymore. The country wanted a more positive view of the future. You can only be terrified of your neighbour for so long before you decide that it's enough.

It is interesting to see that others are also coming to this conclusion. My fervent hope is that his legacy is seen for what it really is. In the end, the country will be a better place without him. Hopefully, it won't take too long for the damage to be repaired.

Good riddance Howard, we're better off without you.

Monday, 3 September 2007

Original Policy

Has a century of compulsory voting and a decade of international neo-conservatism finally killed off the last vestiges of original thought in governmental policy? It certainly feels that way.

As Australia approaches a federal election both major parties are competing based almost exclusively on policies either of cutting taxes in some form or giving money away in some other form. Is there no other mechanism of directing society? Surely there must be.

Look at the first home buyers grant. Instead of just cutting the price of a home, how about some other means of encouraging saving that isn't giving away the beginning of bank account? Where is the inspirational leadership and original thinking that gave us the Industrial Relations Commission; the Truth and Reconciliation Commission; the Marshall Plan?

That's the sort of thing I'd like to vote for.

In my other world of software development, this 'just give money away' approach is known informally as Econ 101 Management; as in it follows an economic model informed by only an introductory understanding of macro-economics.

I'd like to hope that our elected leaders knew a little more. Now please go away and demonstrate that.

Monday, 20 August 2007

Megadata?

So the big deal is mashups and the massive amounts of data collected by the services being mashed. And this is becoming known as 'Megadata'. Lots and lots you can do when you have all this attention data, the activities of your users, and then when you combine that with what they do on other servers... Wow! The things you can do for your users really is pretty damn impressive.

Well, I was thinking today that with access to data across the activities of individual citizens accurate taxation suddenly becomes really, really easy. I bet you all just shuddered at the idea of the government (pretty much any government) having access to all that, right?

So, why are we so cool with random companies knowing?

Graining and Cities

In his book The Timeless Way of Building, Christopher Alexander states that people should work where they live. I had some trouble with this at first as it's pretty difficult to achieve. There aren't all that many good jobs, and the chances of already living in the same area as the job are pretty low; what are you supposed to do? Move?

In spite of this, I did keep reading. And Alexander does expand on the idea some more.

The point is not to live in the exact same area as where you work, but to work in an area you could imagine living and, as important, live in an area you could imagine working. When you walk down the street you need to see all the parts of life happening: you need to dodge prams, see people eating and drinking, watch people in their offices as they watch people lounging around in a park. You need to see kids streaming home from school in the afternoon, you need to see the retired out doing their shopping during the day.

And you need all this both where you live, and where you work. You need to feel when you're spending those 40 hours a week away from your home that you are still in a place that is someone's home. Seeing those people and all the disparate things they do forms a connection between you and them. If the place you work and the place you live both have this, then you can easily transplant the connection from home to work and vice versa.

There is a name for all this: community. Community requires all parts of life: babies through to the elderly; workers, shops, services. And if you're hiding away at work for 40 hours a week you tend to forget that not only this is all going on, but also that all these different kinds of people share your world with you.

This all comes down to graining. Think of it in terms of zoning. The zones of use form grains within an area. In older areas of a city, this graining will typically very fine. That is, you can walk a short distance down a single street and pass houses, offices, cafes, libraries, shops. In newer areas, the graining becomes larger, until you reach the 60's ideal of a city composed of satellite towns: rings of suburbs with a shopping/office district at the centre.

And in there, a community dies. Communities need people to spend time with them to grow, if a significant chunk of a community's demographic disappears for a big chunk of the day then it can't really survive. Look for the fine graining, try to live and work there if you can, but always enjoy the graining.

Wednesday, 20 June 2007

The Box Doesn't Exist

One word that always causes me to shudder: 'Content.' This is now apparently the standard word that people in the software industry use to refer to that which is created and owned by their users.

To me it's just the latest horrible, bland, meaningless MBA word. Except it's not. Like all words, 'content' implies something about that which it refers to: that it's irrelevant and doesn't matter, that anything would do in its place. Content is what you put in a box so that the box is no longer empty, it doesn't matter what it is, it's just there to fill the box.

Sure, as software people you're all very proud of your box. You've put a lot of effort into making your box very pretty, and emergent, and Web 2.0, and now you just need something to fill it up. When all you do is build boxes it's very easy to only see boxes.

Well, guess what? Your users don't even notice the box. That content that you regard as interchangeable filling is all they care about. That's what they've spent time, effort and emotion in creating. They don't want to just dump it in some box somewhere, they want it treated specially and with respect. Referring to it with some bland management-speak term is not showing respect.

Words matter. The words you use to refer to something shape your perception of it. If you're in the business of building something where users can display their creations you need to remember that those creative works are the entire purpose of your web site. So don't refer to it as 'content' and then focus on the box. Remember the box don't exist, and treat your user's works with respect.

Don't call it 'content.'

Monday, 28 May 2007

Embrace Your Inner Geek

Why bother reading long posts about esoteric language features that your language doesn't provide, or even if it does, it's not a good idea to use too often?

Two and a half reasons really.

Understanding your language is important. This is not magic we're doing here. It's engineering, one of the purest and most mathematically oriented branches of engineering you're likely to earn money engaged in. When it's magic you're not supposed to know what's going on, that's why it's magic. You are supposed to understand engineering though. Languages are the most complex pieces of computer software. You understand complex things by exploring the boundaries. What do they do well? Why don't some things work at all? How could they be better? All professional programmers should be able to name several critical failings of the language they are currently working in; if they don't hate it all together.

Related to that, when programming it's not enough to memorise the class and function names from the whopping great big framework of the week. You'll generally have inferred something about how the framework works underneath. You'll know that before calling function A, you had to instantiate class B first, unless you called function C first, because that happens to create a B for you. Blah. Languages are the same. Why does a variable declared inside a while loop disappear outside? This isn't voodoo. The goblins don't eat it. There's a reason. The language is implemented in a certain way by the compiler and runtime combination that causes these things to happen. You should understand that relationship. Every thing we write is built on some similar layer of abstraction. You need to understand (at least theoretically) how to implement the layer immediately beneath you or you'll end up wandering off into some abyss you didn't even know was there.

And finally, we're professionals, dammit. Where's the intellectual curiosity? Where's the 'Hey, that's cool. Now, how do I break it?' Or, 'I wonder what will happen if I do this...' Or, 'How does that work?' And most basically of all, 'Why?' Geeks are supposed to be into that sort of thing. We got beaten up in high school because we were enthusiastic about things it wasn't cool to be enthusiastic about. Now there's a lot of money to be had out of that enthusiasm. Let it out, embrace your inner geek. Enjoy this amazing, complex, unique, ever-changing world around us. Explore those things you've always felt a connection to. If you're in computing, there's a good chance that's something mathematical. Most things in computing are... For me it was languages. What's it for you?

Oh, and last week at the pub we had a big discussion about category theory, higher-order functions, contination passing web servers and finishing up with the difference between a program that generates a program and writing a custom compiler and interpreter. Geeky you may say. Well, today I noticed a colleague reading up on continuations on Wikipedia. That's what I'm talking about.

Wednesday, 23 May 2007

A Conspiracy

I don't believe in the Internet. It's a conspiracy of network engineers... with a lot of pigeons.

Tuesday, 13 March 2007

tbpf

I was a private IT contractor when I lived in Canberra where the vast majority of the work was for government departments. At the time of writing this, I was working on a team called Revenue Re-engineering at the Australian Quarantine and Inspection Service. A friend asked me what ‘Revenue Re-engineering’ did, and the below was my response.

Before you go getting all upset and start sending me threatening e-mails and letter bombs, remember that this is my private corner of the world where I get to rant about everything I see as wrong. I may disagree with the way government does things, even when it’s the department or team I am working on, but if the direction is set out in legislation (as it is in the below case) then I have no right to interfere in my capacity as an AQIS employee. For better or worse the government is the elected representation of the people and the public service is just here to provide advice and then implement the policies of that government.

If I want things to change, then I am free to vote in elections and lobby members and senators. Until things change however, I will continue to rant and rave here.

AQIS is funded almost entirely by industry. When an inspector checks an importer's food and denies entrance because the food is full of BSE and Foot and Mouth, the importer is charged for the inspection. In fact, everytime some service is provided by AQIS to industry the company is directly charged.

Your average pig farmer has now got it into his tiny little mind that because he's paying AQIS to run it's services, then every cent he spends on AQIS is only going to be spent on himself or other tiny-brained pig farmers, not the accursed evil beef farmers down the road. Damn them and their evil beef ways!

Currently AQIS collects this money in a 'random' way. The tiny-brained pig farmer pays or doesn't pay, his choice, and AQIS notices, or doesn't notice. (So I ask you, who really is tiny-brained?) Revenue re-engineering is about changing the way AQIS collects the money from industry. Our first attempt was some software that'll supposedly make it easier to track. If that doesn't work, we're hiring some large Maori guys, and I'm sure they'll be very efficient.

The whole project shouldn't exist. The inspector who goes out is an expert in beating up flowers to find any bugs, they have science degrees and know a hell of a lot about botany, entomology and the like. Filling in all this paperwork to collect money off the TBPF is way outside his expertise, and he hates having to do it. There's this little government agency in a couple of buildings in Canberra called the Australian Taxation Office. They're really good at getting money off people, you could say that's all they do. Instead of this user pays rubbish, the ATO should just be taxing industry directly, we could even provide data feeds so they knew how many times each importer had imported something and tax off that.

Right now, the TBPF gives us $100 and insists that $50 of that be torn in administration fees to be sure that the other $50 only gets spent on him and other TBPFs, rather than see $25 go to chicken farmers, even if $75 would then go to the TBPFs.

And let's take a step back here. There's a name for this form of government spending: "User Pays." Some people will never be convinced of the moral and ethical reasons why "User Pays" is a Bad Idea, but here we have a nice solid economic rationalist reason. From the inside, it's a waste of money. The extraordinary expense in identifying which particular dollar needs to be spent on which particular program is pretty incredible. Consolidated revenue people, it just makes more sense.

Sunday, 11 March 2007

A GNU Ethics?

An e-mail conversation I had recently:

I'm becoming concerned with the ethics of free and open source software.

> Why is that?

I think the entire aim of the GNU project is a bad idea. Here's my current thinking, you know most of this already, I'm still thinking it through so I want to spell it out:
  • Copyright (not patents) is intended as a means of paying people for thinking. In all fields this is regarded as a necessary thing.
  • By taking out a copyright you create a contract between yourself and your buyers to agree for your buyers not to share your 'secret' (your idea).
  • So if someone else wants your idea they come to you and pay you for it.
  • This allows a 'thinker' to 'unstrap themselves from the wheel' and earn a living in the future for original work done now, without having to work constantly to drum up that business.
  • This motivates smart people to go through some poverty now in the hope of earning a lot of money in the future.
  • This is a good thing for society as a whole, as new ideas get explored.

Up to this point we're all good; now, why GNU are wrong:
  • The underlying aim of GNU is to get rid of copyright on code. Code is an expression of an idea, like the contents of a book.
  • If there is no contract on secrets, then how can you be sure you will make money in the future if there's no reason people won't just give your code away.
  • RMS has thought of this: consulting. Programmers all become consultants, selling their services for now into the indefinite future.
  • However, consultancy doesn't create novel or new ideas, except in the very rare cases of a beneficial patron, but that only works in the art related fields: architecture and the like.
  • There is no longer any way to unstrap yourself from the wheel, and no motivation to spend the time thinking of a novel and new idea.
  • For a demonstration of this, have a look at the world of UNIX and particularly Linux. KDE has been going for nine years, and GNOME for eight years. There still isn't a decent desktop environment out of either, or any hope of one magically appearing, yet Apple was able to slap a attractive and easy to use interface on a variety of UNIX in pretty much the same timeframe (slightly less, actually.)

This is the hole we'll end up in if GNU takes over the world. That won't happen, but it doesn't have to, to cripple the software industry:
  • Currently anyone who releases a software product can only hope for it to become successful and then ripped off by some open source developers somewhere.
  • It is very easy to copy an existing product. It is very hard to add anything unique or original (look at Linux); it is even harder to come up with an original idea in the first place.
  • For an example of this behaviour look at BitMover's BitKeeper. This is a distributed, concurrent source code control system. This is a very hard problem to solve. The company only develops this, and there aren't many sales, as there aren't many places that actually need this level of power. The Linux kernel development does, and the product was generously offered to those developers for free. One of those developers then started working on an open source knock off of the client... In this case I would say there has been bad behaviour on both sides (I disagree with the restraint of trade clause BitMover included in the free version license) and Linus has been chirping in with some bizarre statements…

I'm just concerned that open source development is going to cause software development to completely stagnant by preventing small developers from actually making money off an original idea... Once those small companies have been killed there will be very, very few original ideas emerging.

> What about the cost of software and the fact that companies like us, > for example, are unable to afford the massive startup cost of using MS > or Oracle products?

  1. We don't need the power of Oracle.
  2. We could use MS (Web Edition + SQL Server 2005 Express)
  3. What about all the little companies that could develop and offer cheap and innovative low-end solutions for small companies like us, that have been squeezed out of the market by open source alternatives? Fine, if the OS software was there first, you just have to find a very good way to compete when entering a market like that. But, what about when the open source version is a followup knock off to your very good product?
  4. Arguing that open source should remain as it allows small companies to save money doesn’t really deal with any of the ethical issues.

You could argue that companies will just have to deal with the potential for free knock-offs to come along, and youll just have to accept that and find better ways to compete, by continually making yours better. Just deal, it's a new form of competition, essentially.

And that's true, however, I believe it's worth thinking about the damage this approach is doing to our industry. Just how much innovation is being stifled?

Oh, and people who read this and are actually involved in any of the stuff I'm talking about are probably going to find this pretty incendiary. So, I won't be replying to any comments directly. If there are enough (intelligent) comments, I might do a follow-up post. But, then who am I kidding? No one really reads this anyway...

Monday, 26 February 2007

Compulsory Reading?

There is a federal election coming this year in Australia. I'll vote, I have to, we’re blessed with compulsory voting in Australia, a system that 70% of the country supports. Including all the major and minor political parties.

Why? Why do we have to vote? At least everyone knows why the political parties support compulsory voting: they don’t have to work to encourage people to vote. Saves them a lot of money. But that’s it, the political parties know that you will be there on election day, they can sit there in smug satisfaction knowing that. And they also know that you’re probably one of the many voters in Australia who doesn’t change their vote very often, and will usually vote for the party they’ve always voted for.

So, if Labor and the Liberal’s don’t have to work to get you to the polling station and also don’t have to work to get you to vote for them, what exactly are they working for?

The right not to vote is as important as the right to vote. What if your western democracy ends up as a two party oligarchy? How do you express officially that both parties are pretty much a much of a muchness and you don’t really care which of them ends up running the country for the next three years?

You could vote informally, but that feels like a bit of a waste of time. You’ve been forced to get down there, so you might as well actually vote properly. After all, you wouldn’t want to be a donkey would you? And even if you were to, quick what percentage of the vote was informal at the last election? 4.8% in the House of Representatives. But did you ever hear that announced on the election coverage? The very name ‘donkey vote’ discourages people. Who wants to be one of the incompetents? Even more, who wants the incompetents actually affecting the way the country is run?

The statistic on voter turnout needs to mean something in Australia. A low voter turnout does not mean the populace are lazy, it is an indictment of the political parties. It is their job to make us care enough to give them our vote. If they want the power to act on our behalf with no interference from us for three years, then they need to tell us why exactly they are different from everyone else, and we should vote for them. If they are unable to do that, then even if they do win, they will have no mandate. Could a party that was elected on a 40% voter turnout actually decide to go to war? How could they possibly claim they represented the will of the people sufficiently to send those people off to die for them?

Maybe this requires constitutional change. Maybe voter turnout needs to be included when determining if a party can form government. Maybe a government formed from less than 50% voter turnout needs its powers curtailed: no change in taxation levels; no significant changes in funding levels to the governmental organizations; no declaring war. A corollary to that would be to allow that government to call another election after only a year.

Essentially, the people would have elected a caretaker government, and the political parties now have a year to give the people a good reason for allowing them more power. But no, you say, this would be too dramatic a change to our constitution, constitutional amendments always get knocked back. Well, guess what? Australia already has provisions for caretaker governments, happens all the time, everytime an election is called.