Older blog entries for apenwarr (starting at number 269)

21 Apr 2007 (updated 21 Apr 2007 at 16:03 UTC) »

2007-04-21: The System vs. the Flow; France's not-so-imminent collapse; Programming and the flow; Epilogue

Well, 21 postcards later, I'm back a bit early from Spain. More on that some other time, but I promise not to bore you with a play-by-play recap. Instead, here's something I learned from Europe:

The System vs. the Flow

When I met up with pphaneuf in Spain, he complained for awhile about the level of beaurocracy in France. Just for example, it's really complicated and difficult for someone to start a business, rent an apartment, hire someone, fire someone, get a job, rent an apartment, get a bank loan, and so on. It's almost impossible for an outsider to do, because getting anything done depends on who you know, not purely who you are.

Put in those words, North Americans might be tempted to label that "corruption," but it's not, at least not in the usual sense. I didn't have much to say about it so early in my trip, but after spending more time in the middle of European culture, I think I understand it now: they might look kind of similar on the outside, but the fundamentals of American and European civilizations are completely different.

The System
The American system is very mathematically clean, reproducible, and scalable. The ideal they (*) aim for is a culture in which you can start new companies easily; accept unending supplies of immigrants; fail cheaply; switch tasks, jobs, houses, cities, or specializations quickly. To do this, they built a system based largely on not getting to know people personally; instead, they use detailed statistics and rules to determine what's good and what's not. Borrowing money is easy if you're a "good credit risk"; immigrating is easy if you have the right skills; bankruptcy laws are lax; venture capitalists are everywhere, desperate to give you money, and then they mostly expect you to fail. Most cities are mass-produced based on the scientifically determined ideal road layout and endless copies of identical suburbs and strip malls. The American system is a fundamentally unstable system with controls.

The Flow

The European system, on the other hand, is not really a "system" at all; I'll call it the flow. It never needed to be scalable, because European countries grew slowly over hundreds or thousands of years. Mass immigration was never really an option; there was never a time when most people didn't know most of the other people in most neighbourhoods. And so you don't need the mathematical models of the American system. Should I lend you money? Well, sure, if I know you and you seem like a reliable kind of guy. Bankruptcy? You mean not even trying to pay back the money I lent you? But I trusted you! Well, that's it then, I can never trust you again as long as you live. Not paying back right now is one thing, but not ever trying is just plain anti-social. And hiring someone is okay, as long as you're sure you'll treat them properly and never, ever leave them without a job. After all, your employees depend on you now; you wouldn't want people to think you're unreliable.

If, like me, you're used to thinking about American-style systems, your brain isn't configured to understand the European-style flow. What exactly are the rules they use to determine whether it's okay to start a business, hire someone, fire someone, lend someone money, or build a new building in a certain style and place? It's impossible to answer that question, because it's the wrong question. In the flow, decisions don't need to follow a simple set of rules; you just do what feels right. Your intuition, trained by years of experience, will do the rest.

The flow is a fundamentally stable design; it doesn't need a "control system" to make it work. It just keeps on flying by itself.

France's not-so-imminent collapse

pphaneuf also told me about the ongoing theory that France's economy is on the verge of collapse - but that people have been saying so for the last hundred years. The "system vs. flow" theory explains this paradox easily: stable designs are never "on the verge of collapse." Only unstable systems are (and they always are!). If you're trying to analyze your stable system as if it were unstable, all your equations will be wrong before you start.

Programming and the flow

Note that "the flow" is another name for the zone; this isn't a coincidence. In the zone, programmers just write the right program without having to think too much about it. No matter what they claim, they're not actually following a bunch of learned rules, but instead just letting the program write itself, intuitively, with their intuition trained by experience. This is exactly how the European cultural flow works. And if you know the feeling of programming in the zone, you can understand why Europeans have higher satisfaction with their quality of life than Americans.

Epilogue

Although they do crash more, unstable systems are usually more leading-edge, more exciting, and more flexible than stable ones.

(*) I would classify the Canadian system as a hybrid of the system and the flow. Whether or not that constitutes a compromise or an improvement is an interesting question to think about.

Syndicated 2007-04-21 14:55:32 (Updated 2007-04-21 16:03:53) from apenwarr's log

2007-03-28: ExchangeIt isn't so bad

ExchangeIt isn't so bad

Other programs, which earn their developers lots and lots of money, appear to do much worse even after years and years of effort.

Disclaimer: Okay, ExchangeIt 1.0 was kind of bad, but it was a 1.0. And okay, I'm still not sure why we decided to write a high-performance, high-reliability network server application in perl. But we actually made it work in the end. I'm kind of impressed.

Syndicated 2007-03-28 18:03:28 from apenwarr's log

2007-03-23: Gets Stuff Done

Gets Stuff Done

Netflix has unlimited paid vacation days for employees - and they don't trade salary in exchange for it, as we tried to do with dial-a-vacation. They just judge people on the quality of the work they get done, not when/how they do it.

It's brave, and very interesting. What prevents people from abusing the system? Ethics?

Syndicated 2007-03-22 21:52:28 from apenwarr's log

2007-03-22: Pacific and Western / Versabanq Interview

Pacific and Western / Versabanq Interview

    I don't think the market really understands us - they probably perceive us as just a small Schedule I bank when actually we're a software company that has a bank license.
    -- David Taylor, Pacific & Western Bank of Canada

Wall Street Reporter has an audio interview with David R. Taylor, the illustrious president of at least two companies, one or the other of which now employs me (depending who you ask). He talks about what the bank does and how our software fits in from a business (as opposed to technology) point of view, and the amazing profitability per man-hour of his bank. Free registration required.

Syndicated 2007-03-21 20:50:14 from apenwarr's log

2007-03-21: Maximally dumb window management

Maximally dumb window management

So everybody knows by now that MDI (Windows' traditional multi-document interface) is bad and you shouldn't use it, even in Windows. Okay, sure. But what instead?

The problem MDI was created to solve is simply the "too many windows" problem. If you're working in an application, say a graphics editor, with a lot of open windows attached to it, how do you keep track of them all? In Windows, the traditional way to do this was with MDI, where you'd switch to the application (using the taskbar, say) and then "inside" that application's main window you'd find a bunch of sub-windows for its documents. This led to everyone always running all their apps maximized, because you had to fit all your smaller windows inside the outer window, and that was completely unusable if the outer window wasn't as big as possible. So it was a big mess, but it accomplished its main goal: your taskbar wasn't crowded with a million little subwindows. Just one big taskbar button for your application.

MacOS deals with the problem in a different fashion. It has core UI concepts of "applications" and "windows", so that you alt-tab between applications, but inside an application, you can switch between individual windows. In MacOS 9, when you brought an application to the top, it would pull all of that application's windows to the top. Frequently that was actually exactly what you wanted: for example, if you had 20 images open in Photoshop but wanted to check your email for a second, then go back, it was nice to be able to just click on any Photoshop window and have all the Photoshop windows back in view at once. Otherwise you'd be digging around trying to find all 20 of them, all buried under your full-screen email window.

Unfortunately, the pain with that was if you ever wanted to have, say, a web browser in one window and Photoshop in a window next to it, but only one of your Photoshop windows because you're (say) trying to compare a web site's look with its Photoshop mockup, you couldn't do it. There was just no way to have your web browser under some Photoshop windows and on top of others. They fixed this in MacOS X: as far as I can tell, you can click on any window to raise it to the surface, but alt-tabbing to an application or clicking an application on the dock will raise all of its windows. So you sort of get the best of both worlds.

As a digression, I really like ion, which makes it so easy to arrange and organize your windows into multiple workspaces that these problems largely disappear. Of course, it creates other problems, so it only works for me, not everyone else.

But back in the world of Windows, as I mentioned, MDI is deprecated. You're not supposed to use it anymore. Instead, we have two awful alternatives: the "combine similar taskbar items" option for the taskbar, and tabs, eg. tabbed browsing in Firefox. Both are better than nothing (for example, web browsers done the SDI way just resulted in a million taskbar buttons, one per window, which was why they made the "combine similar taskbar items" option in Windows XP in the first place). But both also fail the user pretty badly. "Combine similar taskbar items" is a huge copout, because you lose your sense of spacial memory the taskbar normally gives you. When you minimize a window or switch to a window, you see a little animation of where it went on the taskbar. When you combine similar taskbar items, they're all stuck in a little submenu on the one button, so when you want to switch back, you have to read the little titles to find the right one; your spacial sense is wasted. Never mind the fact that you now have to click twice instead of once to switch windows.

Tabbed browsing is better, but not quite right either. Really, it's just a slightly less annoying version of MDI. Less annoying because you can use your spacial memory (with MDI, you usually had to use the Window menu, ie. the annoying part of the "group similar taskbar items" option). But also less flexible, because there's no way to display two documents side-by-side. Imagine if Photoshop used tabbing between images: useless! (In fairness, the hybrid model used in Firefox, where you can open a new window or a new tab, is a really good balance. I just wish there was an easy way to "convert this tab into a window" or vice versa.)

But worst of all, and I can't believe I'm saying this because it's newer than all the others, is the amazing feature I've found in Microsoft Office 2003 and which has now been cloned in Adobe Acrobat Reader. In a fit of brilliant engineering, they've managed to combine the worst features of all of the above. It works like this: actually Excel and Reader are MDI applications, but they try to hide it. When you open a new document, it appears as a separate taskbar button. But when you switch documents using the taskbar, it replaces the visible document window with the new document. So it's impossible to see two documents side by side, but it also crowds the taskbar with extra buttons! As a bonus, when you click the X button to close the window, it assumes you want to close the whole application - which I can live with in Excel, because it asks "do you want to lose all your changes to 5 documents?" but in Reader it's supremely annoying because it notices I haven't modified anything (that's why they call it "Reader") and just closes them all. And for added bonus confusion, in both apps, if I close all my documents but don't close the application, the last document window morphs into an empty application window (with a different icon and everything!). When I then open a document, it morphs back. But if I open a second document, well, that's totally different - it creates a new taskbar button in that case, of course. And never mind the fact that Reader is completely worthless without a document loaded. In Excel, it makes sense, because I can do File|New and start a new one; but you can't do that in Reader. I'll have to File|Open, which is no less work than just opening the file in Explorer.

</angst>

Ahem. In other news, "group similar taskbar items" is actually done right in an excellent free Windows utility called Taskbar Shuffle. Among other things, it allows you to drag around your taskbar buttons to put particular windows where you want them (eg. Outlook is always on the far left), taking extra advantage of your spacial memory. It also has a great option for "keep windows of the same time side-by-side" - no, not grouped as a single button, but merely spacially close to each other. This makes it much easier to find related windows, especially if you're like me and tend to open a lot of terminals simultaneously. If you use Windows, I highly recommend it.

Syndicated 2007-03-21 19:54:20 from apenwarr's log

2007-03-19: Spanish postcards

Spanish postcards

As I mentioned before, I'm going to Spain for the month of April. I've seen a few other people offer to send postcards from their travel destinations, and Spain is a pretty neat destination, and it looks like I'll have plenty of time for filling postcards with long, contemplative rants about deserts, and my inability to speak Spanish, and man am I ever tired and thirsty and irritable, and so on, so why not?

If you want a postcard from me in Spain, send me an email, with a subject line something like "POSTCARD!!!" containing your current physical mailing address and I'll see what I can do.

Er, priority goes to requests from people I actually know. But I'm not really all that picky, I guess. We can always get to know each other by sending postcards back and forth.

Syndicated 2007-03-19 17:49:30 from apenwarr's log

2007-03-18: The Donkeymaster Gets Robbed

The Donkeymaster Gets Robbed

"Stop right there. Don't turn around or you'll get a bullet in the back of your head. Okay... well, I guess it'll be the front of your head if you turn around, or maybe the side if I'm really fast. I guess what I'm saying is, I'm pointing a gun at the back of your head. Don't turn around."

Syndicated 2007-03-15 22:31:31 from apenwarr's log

2007-03-16: Programming jobs suck?; Yes, mostly; Unless you're doing it right

Programming jobs suck?

Apparently an article has been making the rounds lately called Why a career in programming sucks.

Basically, it explains what's wrong with programming as a career and why you shouldn't do it. It's well written, and kind of right, and kind of misguided. It's also annoyingly racist and protectionist, which misses the point completely. Don't you just love people who blame immigrants for all their problems? But nevertheless, he makes a few interesting points. I'll start by agreeing with him and then explain the part he missed.

Yes, mostly

Here's the bad news: most programming jobs do suck. And worse, if you're one of the programmers with the sucky jobs, those foreign workers will be taking it away from you, probably sooner than you think. Why? Because they're willing to do the same work, sufficiently well or equally well or better, for cheaper. Because foreigners are evil? No, just because there are lots of them, and they're just as smart as you (or smarter), and they really really need the job, and they'll do anything to get it. Welcome to the global economy. Watch your back.

More bad news: it's true! Programming really isn't prestigious! Doctors and lawyers do make more money than the average programmer! And yes, they're more popular and they do get all the girls! (*) Why? Because people who go into law and medicine just plain aren't as geeky as people who go into programming. If you're doing it for the prestige, then please, please, for your own good, take this guy's advice and avoid programming like the plague. In fact, the plague is a really good analogy for how popular and famous programming will make you.

And a direct hit: the "knowledge capital" thing. Yup, all that stuff you learned about programming languages and syntax and tools? Useless almost before you learned it. Programming technique never gets easier. You'll have to be learning new stuff your whole life. Ick! But that's the way it is. If you hate learning, go do something else. Like he says, accounting is a great choice.

Unless you're doing it right

And yet, here I am, a programmer, and I love it, and I also get paid pretty well, and while not exactly prestigious, at least I'm not a total social outcast. Also, I'm not an immigrant (insofar as any Canadian is "not an immigrant" in any realistic sense) yet I don't fear for my job. So while the above arguments are all logical enough, apparently they don't hold true in every case. What's the deal?

The deal is that Canada and the U.S. are positioned as (**) leaders in business and technology. If you're the leader, you get paid more, no matter what you do. But to be a leader, you have to do the work better than everyone else. If immigrants/foreign workers are doing the same work as you, just as well or sufficiently well or better, for cheaper, you're doomed; Larry Smith's laws of economics are against you. I don't have very good advice for you in that case, except to see above and find a "prestigious" or "lasting" profession that isn't so doomed. You're the reason I don't disagree with the article.

But chances are, if you've read this far, you're not actually in that category. Something makes you different from everyone else. Maybe you have a good idea, or you're faster, or you produce fewer bugs, or you think more flexibly than a mass-produced Windows administrator or Java programmer. Maybe you understand the fundamentals of programming and can apply it to other things. In that case, you're unique. Uniqueness is worth money and prestige. Lots of it. And there's not even a limit to uniqueness. The more knowledge there is in the world - and there's more every day - the more interesting problems there are to solve, and the more unique solutions we'll need to solve them.

So that's my advice. Don't just be a programmer. Be a unique programmer. Find your niche, and be the best at it. Then your job will stop sucking, you can stop worrying, and you can just get back to the programming that you were supposed to be doing for fun in the first place.

    (*) In related news, doctors and lawyers who are women presumably get all the guys. Or maybe not. Guys can be scared away by smart, successful women. On the other hand, geek girls are immensely popular, in the rare cases where they actually exist. Anyway, I forgot my point.

    (**) "Are positioned as" is not the same as "actually are" or "are agreed to be." Please don't shoot me.

Syndicated 2007-03-15 19:44:34 from apenwarr's log

2007-03-15: Awesome flight booking

Awesome flight booking

pcolijn linked to kayak.com, which really is an awesome way to book flights. Too bad I booked my flight to spain before I read his post, and wasted lots of time and a bit of money. Sigh.

Syndicated 2007-03-12 16:54:58 from apenwarr's log

14 Mar 2007 (updated 14 Mar 2007 at 14:03 UTC) »

2007-03-14: WvStreams in LinuxFromScratch

WvStreams in LinuxFromScratch

That's funny: it seems that Detailed WvStreams build instructions have recently materialized as part of a project at linuxfromscratch.org. I wonder what they're up to?

Syndicated 2007-03-12 16:33:02 (Updated 2007-03-14 14:03:57) from apenwarr's log

260 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!