Older blog entries for apenwarr (starting at number 472)

14 Jan 2009 (updated 11 Feb 2009 at 18:03 UTC) »

A little secret that will make the world fall apart

I remember one really critical part of the Larry Smith Economics lectures I attended in university. It was the day he told us the secret that, he claimed, if it got out, would make the whole economy grind to a halt. Ironically, the economy is suffering dramatically, but not because the secret got out. In fact, the so-called "economic stimulus" plans being executed and/or proposed aren't really going so well, probably because people don't know this secret.

What's Larry Smith's big secret? Simple: Money is worthless.

Deep down inside, you know this is true. Money isn't good for much unless someone else is willing to take it from you in exchange for something with value. There's a lot of talk about Ponzi schemes lately; but money itself is the biggest Ponzi scheme of all. People invest real work in exchange for "shares" of this "economy" thing, in the hopes that they can someday redeem those shares - plus interest - for something useful.

Most of the time, the valuelessness of money doesn't really matter. As in a Ponzi scheme or a run on the bank, unless everybody tries to cash out at the same time, nobody ever notices that the bank didn't actually still have all the money you gave it in deposits. Conversely, unless everybody tries to actually exchange their money for goods and services all at once, nobody realizes that the economy didn't actually have all the goods and services you thought you could pay for. When people realize it all of a sudden, that's when you get inflation.

But people aren't worrying about inflation right now. They're worrying about deflation. Why? In fact, because the opposite problem has occurred: people were all cashed out, exchanging all their money - more money than they had, ie. credit - for goods and services. And now they've changed their minds. They want their money back so they can keep it and not obtain any goods and services after all.

Because, as it turns out, most of those goods and services that seemed so life-critical yesterday are kind of a waste.

But oh no! My job was producing those useless goods and services! And if people don't buy my useless goods and services, I won't be able to make money, which means I won't be able to buy food, which means I'll starve! PLEASE, SOMEONE, STIMULATE THE ECONOMY SO I DON'T STARVE!

Whoa. Stop. Take a deep breath. Think about what you just said.

You just said that if people like you don't keep producing stuff nobody really needs, then there won't be enough food.

Well, who the heck decided that "food" is in the category of "stuff nobody really needs?" Doesn't it make more sense that if people stop producing stuff nobody really needs, then there will be more time and effort available to produce stuff that people do need - like food and shelter?

It does make sense. Sadly, things aren't so simple.

The fact is, people use money as a placeholder - one that determines what people get to work on. The people who produce the food - even though there's more than enough food for everyone - won't give it to you unless you have money. And if you can't find something important to do, you can't make money, even if there is nothing important to do.

The depressing thing about the great depression of the 1930s, as well as the current potential one, is that there may simply be not enough important things to do to keep everyone busy.

It's hard to imagine a realistic solution to this problem.

I mean, we can't just give people food for free.

That would be ridiculous.

Syndicated 2009-01-14 21:05:16 (Updated 2009-02-11 18:03:19) from apenwarr - Business is Programming

3 Jan 2009 (updated 14 Jan 2009 at 21:04 UTC) »

Set your gamma correctly

I have frequently been annoyed by the weird-looking anti-aliasing results with freetype fonts under Linux, especially when you're using white-on-black instead of black-on-white. The culprit is gamma, a complicated topic that's (unfortunately) complicated to sort out in Linux.

(Incidentally, MacOS X has a really really good and easy monitor calibration tool that solves this whole class of problem elegantly.)

So here's what you need to know:

  • Find a good gamma calibration diagram. The one I link to here is complicated, but helpful.

  • Instructions all seem to say "set your monitor's contrast to maximum and then adjust the brightness," but this advice doesn't seem to work on all monitors, particularly LCDs. This is probably because LCD monitors don't actually adjust brightness and contrast in the same way as CRTs do. So anyway, yes, you have to fiddle with contrast too, not just brightness.

  • Use the "xgamma" command-line tool (it comes with X nowadays, specifically the xbase-clients package in Debian), combined with your monitor's contrast and brightness settings, to make all the squares - and the splits within each square - as visible as you can.

  • Note that people seem to claim that gamma levels around 1.8-2.2 are supposed to be right. This wasn't true for me; around 1.0 is the only range that didn't make things look totally insane. (1.0 is also the default for X.org's server, so this probably makes sense.) Perhaps X's gamma number is different from the one used by everyone else.

  • In my experience with LCDs, the high range (rightmost columns) is the trickiest to get right. It's also the most important for modern "Web 2.0" web browsing, where they use a lot of minimally contrasting backgrounds for things like alternating row colours. So pay special attention to the bottom-right.

  • You can put an xgamma command in your ~/.xsession file to make it run every time on startup. Reputedly Gnome and KDE also have gamma tools, but I'm not sure exactly how they work.
Like magic, once you've made these settings correctly, colours in your X display - particularly anti-aliased fonts - stop looking like total crap. Enjoy.

Syndicated 2009-01-03 02:36:34 (Updated 2009-01-14 21:04:24) from apenwarr - Business is Programming

1 Jan 2009 (updated 11 Feb 2009 at 18:03 UTC) »


It's the beginning of a new year, and that's made me think a bit about thresholds - those moments where things suddenly change from one way of being to another.

If you're starting a company, the route to massive overwhelming success (as opposed to normal success, which is easier) is to correctly predict and bet your product on one of those threshold transitions. Before the transition, your product was impossible, so of course there are no competitors; after the transition, your product is critical, so you'll sell a lot.

Unfortunately, there are different kinds of transitions. Sooner or later, people will get completely sick of advertising, and advertising-based business models will crash... but we don't know when. It might be next month, or it might be in fifty years. If you bet on the death of advertising, you're most likely going to lose.

Other thresholds are based on surprise scientific discoveries; for example, someone discovers a new super-high-density chemical for making batteries, or discovers the secret of nuclear fusion, or cures cancer, or whatever. Maybe the experts in a particular field can make some kind of guess at when these will happen, but it's tough. If you don't time it within two or three years at worst, your company will be dead - or obsolete - by the time the transition comes.

But some kinds of transitions are easier to predict: the ones that follow something like Moore's law. In the book The Innovator's Dilemma, Clayton Christensen discusses several of these situations, from disk drives to printers to hydraulic cranes. It's like magic; you can graph the progress of a new technology, and at the point where its capability exceeds the capability of an older one, suddenly the whole world is different.

Here are a few of those upcoming transitions. I won't try to tell you when they'll come, but perhaps they'll give you some ideas. For context, I'll include a few that have already happened.


Handheld storage becomes large enough to store your whole music collection. (This is really what put the early iPods over the top compared to the silly 256MB players around at the time.)

Laptop hard drives become larger than anybody needs. (Desktop drives already have.)

Handheld storage becomes larger than anybody needs.

Solid state (flash) disks get so popular that optimizing operating systems for rotational latency becomes irrelevant.

Solid state disks get big enough to store most databases, so optimized high-end database engines based on disk latency become irrelevant.


It becomes cheaper to buy a new laptop than to replace the video card in a desktop PC. (I don't know how this will happen. Economies of scale as fewer and fewer people buy desktop-size cards?)

Electronic displays become easily readable in sunlight. (Supposedly the Amazon Kindle has this, but it's only black and white?)

Electronic displays become clearer (contrast, DPI, colour accuracy) than paper.

Electronic displays get about as cheap and reliable as other materials - for constructing interior walls.


Computers get so fast that you can't tell the difference in speed between dynamic and static languages. (We're right on the edge of this.)

Programming (and automated testing) becomes so easy that it's almost always easier to rewrite code for a new platform than maintain it on the old one.

Virtualization can run any DOS application at its original native speed or better. (Done: DOSBox.)

Virtualization can run any Windows 95/98/ME application at its original native speed or better. (Almost done? It seems graphics are still a problem.)

Virtualization can run any Windows NT/2000/XP application at its original native speed or better. (Not yet.)

Windows Vista actually runs on normal computers at a speed that makes it more pleasant than Windows XP. (That happened this year! I saw a sub-$1000 PC with 6 gigs of RAM and Vista ran great on it.)

Microsoft .Net becomes fast and ubiquitous enough that people stop making native Windows apps. (Slowly but surely.)

Computers become fast enough that all native Windows apps ever created will run fine under virtualization, so you can drop Win32 entirely.


The Internet becomes sufficiently fast and widespread that it's cheaper to collaborate on software across the world than to write your own separate implementation. (This is what allowed Open Source.)

The Internet becomes sufficiently fast, and disks get sufficiently large, that giving the entire development history of a project to every developer is a good idea. (We're on the edge of this: distributed version control is catching on.)

It becomes sufficiently cheap to develop and distribute software that you no longer need significant financing for most projects. (That's really the Web 2.0 movement in a nutshell.)

Wireless networking becomes fast, reliable, and cheap enough to replace wired networks to the home.

Wireless devices become so easy to build that your home entertainment centre no longer has its components wired together. And the clocks will be right.

Professionally-run Internet-based services have higher uptime than the server in your office. (This is already true for the servers themselves, but often not your link to them. Then again, small business servers have notoriously low reliability and high maintenance costs.)

Professionally-hosted Internet-based desktop applicatons have higher uptime than apps running locally on your PC. (This will never happen since your PC is needed to run Internet apps. Note the asymmetry with Internet-based servers.)

Latency of an Internet-accessible server is as low as a LAN-connected one. (This will never happen, dooming various efforts that still depend on the assumption that it will.)


Batteries last so long that you no longer think about whether you're killing the battery. (Blackberries already have this; iPhones are reputedly close; laptops not at all, except maybe the old PPC-based Macs.)

Solar power saves more in electricity fees than it costs in up-front investment.

Electronics become sufficiently lightweight and low-power that you can make remote controlled flying toys using insect-like aerodynamics instead of man-made style.

Power density in batteries gets high enough to make electric cars sensible.

Thanks to computer-controlled guidance and diagnostics, cars become so safe that they become essentially uncrashable, and the (physically heavy) crash-safety features are no longer needed.

Syndicated 2008-12-31 19:41:30 (Updated 2009-02-11 18:03:19) from apenwarr - Business is Programming

Superiority Complex

"The best thing about feeling superior is you can do it by yourself." -- me

Syndicated 2008-12-27 16:56:34 from apenwarr - Business is Programming

24 Dec 2008 (updated 11 Feb 2009 at 18:03 UTC) »

Efficiency vs. Effectiveness

I've heard before about the difference between efficiency and effectiveness, but today I thought of a particularly clear example: snow removal.

In Montreal, snow removal is effective. The moment it starts snowing, snowplows emerge all over the city, keeping roads and (especially) sidewalks clean as fast as possible. Considering how much snow we get, it's actually quite an impressive achievement.

In London, Ontario, snow removal is efficient. I rarely see a snowplow while it's still snowing; instead, they all come out at the end of the storm, do a single sweep, and they're done. This saves a lot of hours of work (and therefore taxpayer dollars) for the actual snow removal workers.

Which one is better? Well, think of it this way: if I'm trying to drive/walk somewhere, I don't much care how efficient the government of London, Ontario is at removing snow, because the streets and sidewalks are nearly impassable. But Montreal's effective snow removal gets me where I'm going, and makes me happy. (It might also be better for the economy, since you're optimizing global efficiency at the cost of a few snow removal workers.)

Efficiency is frequently used to rationalize ineffectiveness.

Next time someone wants to tell you how "efficient" a government programme or service provider is, ask them how effective it is and see if they even know what you're talking about.

Syndicated 2008-12-22 18:37:38 (Updated 2009-02-11 18:03:20) from apenwarr - Business is Programming

22 Dec 2008 (updated 22 Dec 2008 at 19:04 UTC) »

Twitter as witty repartee collector

    apenwarr: My gross generalizations are more fun when they're wrong.

    dcoombs: Not all of them.

Syndicated 2008-12-17 22:59:47 (Updated 2008-12-22 19:04:39) from apenwarr - Business is Programming

Torvalds on hardcover books

    I'd personally much prefer that publishers just came out with a (more expensive, by all means) paperback initial printing, but I guess I'm odd. I pay for the words, not for the bulk.

    -- Linus Torvalds

Now, if you're bored, pretend he was talking about prepackaged Windows software that fills multiple DVDs and takes 30+ minutes to install for no imaginable reason. Look, I'll pay more if your software is smaller and installs faster. But I guess I'm odd.

Syndicated 2008-12-17 18:23:12 from apenwarr - Business is Programming

17 Dec 2008 (updated 17 Dec 2008 at 19:07 UTC) »

New release of Squel

We just published a new release 0.5.2 of Squel, the handy front end to MS SQL. This one fixes a bit of confusion discovered during usability tests and discovered by its first few users outside Versabanq. Notably, it's now more obvious how to connect using Windows (ie. Active Directory) Authentication instead of SQL Server (ie. username/password) authentication.

Naturally, if you already have an older version of Squel, it will automatically upgrade itself. Optionally and reversibly, of course. Why would anyone do it any other way?

In related news, I set up an account for Squel on uservoice.com. Uservoice is a really nicely done service, which I discovered because it's used by Stackoverflow.com. It works almost exactly like the old "feature voting list" we had for Nitix, but with a much prettier/friendlier UI and the ability to have short discussions in the comments. Plus, of course, it's basically zero effort to set up for new projects.

Despite my earlier comments that bug tracking systems for free software are a bad idea, I think something like uservoice can have a place. This is particularly true if your software isn't free, or if you otherwise have commercial reasons to want to get more people using your software.

Syndicated 2008-12-16 22:19:51 (Updated 2008-12-17 19:07:58) from apenwarr - Business is Programming

Stackoverflow.com commentary about CodeRage III Virtual Conference

Here's a posting that starts with the leading question, Why weren't you at CodeRage III? Of course, lots of people were, but apparently not in sufficiently inspiring quantities. The results are also skewed by the fact that there's not much advantage to watching the talks in real time; you can just go watch the archived versions instead at your convenience.

The fact that they used LiveMeeting (= Windows client only) and their real-time IM thingy didn't use LiveMeeting (= have to load two weird apps at once), and the fact that you had to go through a complex registration process to attend (= too much effort) didn't help either. I wonder if there are any free webcasting services that would have worked better? I really like glance.net for doing webcasts, but I have a feeling 200+ attendees at once might bog the system down.

Still, I find the idea of a virtual conference really interesting, and IMHO it worked much better than I would have expected at first. The idea of having a pre-recorded webcast demo, but having the presenter live in the IM chat at the same time, is very clever. It means you get more than double the time for questions, and yet the presentation itself never goes overtime, since it was pre-recorded. Now if only you could view the live chat in the archives just like the original presentation...

Syndicated 2008-12-11 18:54:09 from apenwarr - Business is Programming

14 Dec 2008 (updated 11 Feb 2009 at 18:03 UTC) »

Avery's Schemamatic/Squel presentation now downloadable

My presentation from CodeRage III, Schemamatic - Calling & Revision-controlling Stored Procedures, is now available for online/offline viewing at your convenience in flash video format.

Watching it again a while after I recorded it, I've decided it's not boring like I thought it was at the time. I still know what I would do better next time, but all in all, it worked out pretty well.

In the presentation, you can learn about Squel, a free-to-use, non-crappy front-end to Microsoft SQL, and Schemamatic, an open source tool for copying database schemas around and checking them into version control. Schemamatic is part of the open source Versaplex middleware project. All three programs are brought to you courtesy of Versabanq. And me. So you know they must be awesome, right?

Sadly, the Q&A section seems to have been left out of the download, which is sad, because the Q&A session featured the moderator asking me a series of unrelated questions from another presentation that was going on at the time. A presentation about VMware, not about databases. But I diligently answered them anyway, until we eventually figured out why our audience was asking such weirdly irrelevant questions.

There are a bunch of other CodeRage III presentations also available for download. If you like Delphi, check them out! You might learn something. I found quite a few of them interesting myself.

Syndicated 2008-12-10 19:54:05 (Updated 2009-02-11 18:03:20) from apenwarr - Business is Programming

463 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!