Lars Pind

internet software, coaching, and entrepreneurship

Lars Pind - internet software, coaching, and entrepreneurship
Check out Coach TV, my video blog on happiness and personal development for geeks.

Sharing knowledge, sharing code

March 25, 2002 · 0 comments

Since I started this site, I’ve tried to share as much as possible about what I know. Alas, for a lot of people, that hasn’t been enough. :)

So today I decided to finally write the classic What’s This Site Running? page. Enjoy!

0 comments

The Oscars

March 24, 2002 · 1 comment

JyllandsPosten, the largest Danish newspapers couldn’t think of anything to write about the oscars, so they decided to quote Dave Barry from the Miami Herald instead.

Curiously, their translation went wrong. “Jokes involving Enron” became “Jokes about the producer of the show”. Strange. I thought Ziskin was producing the Oscar show this year. The staff at JyllandsPosten have heard of Enron, the failed energy company, haven’t they?

Oh, well. Happy Oscars!

1 comment

What's This Site Running

March 24, 2002 · 0 comments

UPDATE: This site is now running Rails instead.

I’ve been asked about the code running my site, lately, and especially people’ve asked me if they could get a copy. So, finally, here it is.

Keep in mind, that I’ve written this code for my own purposes. I put up this site to share what I know, but I only have limited time to maintain it. And hwatever time I have, I prefer to spend on writing content that benefit people directly, not code. Nevertheless, there is some code, and that’s what this page is about.

The Foundation: OpenACS

First of all, this site’s running <a href=”http://openacs.org”>OpenACS 4.something (I haven’t had time to upgrade to the latest 4.5 beta), on PostgreSQL 7.1.3. I’ve made a few fixes and modifications locally, that I haven’t had time to put back into the tree.

I’m in the process of moving this over to a fresh install of the latest version of OpenACS, and rewriting all of the applications that I’ve built, so they can become part of the OpenACS distribution, too. However, that process is going to take a while, given that I’m also busy running a company on the side.

The Packages

Then there’s the application-specific stuff.

Blog (lars-blogger)
The blogger is, not surprisingly, what I’m using for my blog on the front-page, the archive, the admin pages, etc.

The latest version lives in the OpenACS repostory: cvs -d :pserver:anonymous@openacs.org:/cvsroot co openacs-4/packages/lars-blogger

Bookshelf
My book reviews.

lars-watchdog
Emails me server error log snippets, so I know when someone comes across errors, so I can fix them.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-watchdog

Not Recommended Packages

The following packages are really crud, and should only be looked at for inspiration, and only if you’re willing to do a large amount of hacking yourself. Not guaranteed to work with any other installation of OpenACS.

Ratings (lars-ratings)
This takes care of my ratings stuff, including some stats on the admin pages.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-ratings

lars
Leftover crud from when I had everything stuffed together in one OpenACS package, plus some stuff that some of the other unported packages sadly need.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars

lars-articles
This takes care of my homebrew ADP-based content management system.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-articles

lars-hits
Yeah, so I do want to keep track of how many visitors I have. This counts the hits for me.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-hits

lars-images
Manages my photo gallery, including admin pages that does the scaling and borders and other stuff for me.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-images

lars-shortcuts
Really small, simply takes care of the /f/g/ and other shortcuts on this site.

You can get it from my lars-pub repository: cvs -d :pserver:anonymous@pinds.com:/cvsroot co lars-pub/packages/lars-shortcuts

That’s what’s there. I’ll try to get time to release the remaining packages soon.

0 comments

Unfashionable engineering

March 22, 2002 · 0 comments

“And if he was extremely bright, if he seemed to have the quality known as genious, he was infinitely more likely to go into engineering in Iowa, or Illinois or Wisconsin, than anywhere in the East. Back East engineering was an unfashionable field. The East looked to Europe in matters of intellectual fashion, and in Europe the ancient aristocratic bias against manual labor lived on. Engineering was looked upon as nothing more than manual labor raised to the level of science. There was “pure” science and there was engineering, which was merely practical. Back East engineers ranked, socially, below lawyers, doctors, Army colonels, Navy captains, English, history, biology, chemistry, and physics professors; and business executives. This piece of European snobbery had never reached Grinell, Iowa, however. Neither had the corollary piece of snobbery that said a scientist was lowering himself by going into commerce.” (from a story about the birth of Intel in Tom Wolfe’s Hooking Up, p61— see also how I got it)

0 comments

Do (Danish) Telcos Cheat with their Bills?

March 21, 2002 · 0 comments

Are the bills that I get from my telco correct? I wouldn’t know, I can’t check them.

Both Orange and TDC (the former monopoly) charges about $2.5 per bill to get them to print every call. If you don’t want to pay that, you’ll just get a summary bill saying “so many calls at so many minutes of this type at this minute charge”. What if they’ve counted them wrong?

Indeed, there’s good reason to believe that their counting is indeed wrong. There have been several stories in the press about how their internal accounting systems really are messed up, and that they do make mistakes. But I have to pay extra for the ability to check up on them. Imagine my bank refusing to give me anything other than a summary statement: “Activity last month: Your balance went down by $2,382.” Hey! Wait a minute! Tell me where my money went! “Sorry, you’ll have to pay extra for that.”

Two things further upset me about this: First, I hate invisible payment systems in the first place. You know, when you don’t know exactly what you’re doing to incur what costs. Makes it hard to be in control of your bill. Of course, telcos know this and count on it to make you numb, to make you stop worrying about your bill and instead just shove money down their coffers.

Second, it’s not like the direct cost of printing all the transactions on my bill are even noticable. All the information is already in their big honking database. Spitting it out on paper or on the web costs them little more than the extra cost of the paper, and perhaps a few days worth of programming. The reason they charge anything more than a cent or two for this service, is to dissuade you from trying to check your bill.

Their indirect cost, for which they’re charging, is that people who get the full specification actually check their bills, and thus start contesting the things that are wrong, and that’s of course costly. But preventing people from checking isn’t quite the right fix.

Oh, and US telcos always give you the full spec, except for local calls which are free or almost-free anyway. I wonder if there’s a law, or there’s a competition that gives customers what they want?

0 comments

Focus

March 16, 2002 · 0 comments

I was about to get to work on designing a bug-tracker today, when I realized that I had to be careful and make sure I deliver something usable in about a week and a half, even though I may have grand plans for what it should develop into in the future. And that I must focus on the user experience, and not on the technology.

So I wrote this piece: Which problem do you want to solve?.

0 comments

Which Problem do You Want to Solve?

March 16, 2002 · 4 comments

Software engineers have an occupational disease: They fix problems.

Next time you’re with a software engineer, try showing him a chair that’s broken, or a fridge that’s making noise, and I’ll bet you, he’ll start trying to fix it on the spot. Or try telling him that you can’t get your phone numbers from your palm pilot into your cell phone, and he’ll design a system that could: “If only all the companies agreed on a common XML format, and then we could write a stylesheet, that …” Thanks, we got it.

If a software engineer is left without a problem to fix, he’ll find a problem to fix. Fifty engineers will find some really big problems to fix.

A few months after I started working for <a href=”/lars/goodbye-arsdigita”>ArsDigta, I suggested that we establish a small team of people, non-billable, who would be responsible for maintaining and developing our code base, the <a href=”http://openacs.org”>ACS. With about 100 people depending on and finding bugs in that code base and nobody to receive the patches, things were out of hand. Refactorings and clean-ups that were clearly needed didn’t get done. Something had to happen.

One point in my proposal that was quickly forgotten: Membership of the toolkit team should be temporary, on a rotating basis, so they wouldn’t get a chance to forget who they were serving. (Honestly, it was there. I wish I could find the document now.) The toolkit team team happened around March 2000, and we quickly put together a long list of problems to attack.

A crucial mistake was made. Instead of looking at it as a laundry list, a wish list of problems to potentially solve, items to prioritize and cut, estimate, work through one by one, we decided we wanted to do all of them, and at the same time. We started the ACS 4 project, dreamed of all the really tough problems we’d solve (“let’s implement an object-relational database on top of Oracle”), and embarked. Today, about two years later, that product has just reached Beta status over at OpenACS. We pulled a Mozilla.

But things didn’t stop there. The small and tidy toolkit team that I’d envisioned grew and grew during the following year, until it had become a 50-person monster, completely isolated from the annoyance of customers and users. And it became time for another rewrite, this time to Java.

With all this man-power, a whole new world opened up, full of really interesting problems to tackle. The object-relational problem, anyone? Ah, there’s a nice problem to solve. Just because nobody’s done it before doesn’t mean it can’t be done, does it? Let’s solve that one.

When the ACS was rewritten again, this time in Java, the same thing happened, only more extreme. We not only stayed with the object-relational layer on top of Oracle, we added the Object-Relational mapping problem (mapping Java objects to rows in a database), the web user interface framework problem (Java Swing for the web, dubbed Bebop), the dynamic web publishing with XSLT problem, and probably a couple more that I forgot.

With ACS/Java, I quit programming and became the user interface designer. And I, too, got caught by this bug, and wanted to solve the web user interface problem, once and for all. Needless to say, the effort failed, as did the rest of all the great problem-solving initiatives.

Why did we fail? We failed because we underestimated, as engineers always do, how hard these problems really are. If everyone’s aware that there is a problem, and it’s not really solved yet, it’s probably hard. Unless you have a really compelling reason to think that you’re the one who can solve this, you probably can’t. And “hey, but we’re smarter”, or “we work harder”, or “we look better” isn’t a compelling enough reason.

I’m not saying you shouldn’t try to solve problems that haven’t been solved before. Of course you should. But you have to pick which problems to solve.

Unless your customers happen to be engineering shops, who use your software to build other software, your customers don’t care if you solve a really tough engineering problem. Their problem is not an engineering problem. It’s a real-world problem. And real-world problems are hard enough in themselves.

Interesting and not yet solved problems are always hard. Make it a rule to only try to solve one of them at a time. Focus your energy on the problem that you’re most likely to make a contribution towards solving. Stop thinking that you’re going to actually solve it, as in “Solved. Done.” Stop believing that you can squeeze in an “oh, and by the way, I also solved this really hard engineering problem that IBM and Oracle and Microsoft Research have been banging away at for years.” You can’t.

Pick the one problem that matches your talents and skills, as individuals, and as a company. And stay with it. Is that choice going to be the object-relational mapping problem? The web user interface framework problem? Or the computer-supported collaboration problem?

I know which one I’d pick.

4 comments

Packages traveling at .028 mph

March 14, 2002 · 0 comments

The first time I thought it was a mistake and went in a day early. This time, I’m realizing they mean it seriously.

When Post Denmark delivers a package to my office at 9.30 am, and I’m not in, it’s not available for pickup until the next day at 1 pm, which is more than 27 hours later, to travel a distance of 1.2 kilometers.

That’s comes out to about .044 kilometers per hour, or .028 miles per hour. I hope they don’t suffer from G pressure. :-)

0 comments

Mono as RPMs

March 13, 2002 · 0 comments

Mono RPM: It’s now completely painless to start playing with a free version of C#/.NET. Super cool. It unstalls without a glitch on my Redhat 7.2 system.

0 comments

Shortcut to AOK.dk

March 13, 2002 · 0 comments

If you live in Copenhagen, you’ll appreciate my latest shortcut:

If you’re looking for a restaurant, bar, shop, concert, movie, anything going on in Copenhagen, try the pinds.com/f/aok/ shortcut.

To find Props Coffee Shop say pinds.com/f/aok/props. To find Café Bopa, try pinds.com/f/aok/bopa.

0 comments

Setting up OpenACS

March 11, 2002 · 0 comments

I’ve been setting up OpenACS a lot, lately. Here’s what I use so I remember to do everything right each time: Setting up OpenACS. Please let me know if you have some cool ideas that would make my setup better. But keep in mind that this is not for production environments, just dev boxes.

0 comments

A national epidemic

March 11, 2002 · 0 comments

Since I’ve moved back to Denmark and started to use more Danish web sites, I’ve been busy adding shortcuts. Why? Because the interfaces of Danish web sites generally look great but are poor in use.

Today, I’ve just added a shortcut to track packages over at Post Denmark. (Why they call it track & trace I don’t get—as far as I can tell, those two words mean the same thing. Cut out “& Trace”.) If I’m eagerly expecting a package, what I want to do is track my package, and then bookmark that page, so I can check back frequently. But of course, with frames and POST forms, you can’t do that. With my shortcut you can.

This isn’t the worst offender. The worst i Krak. They offer a map service much like maps.yahoo.com or mapquest.com, except their interface is much poorer. A few clicks just to get to a form where you can enter the address, and then you have to manually separate out the street number from the street name, the postal (zip) code from the city name. Why? With just a few lines of code, the computer can just as easily do this for us. But no, not at Krak’s.

There’s a clear difference in mentality between Danish sites and US sites, perhaps not so much in how they actually are, but in what is perceived as the ideal web design: An ideal US site may not look as slick, but they work with the medium (you can bookmark pages and send links to your friends), whereas Danish sites still think that the GUI or the printed page is the ideal. Just compare Yahoo! Denmark to Jubii, a direct clone.

0 comments

Social network analysis

March 11, 2002 · 0 comments

Finally got around to reading this article on social network analysis: How people share their knowledge and collaborate. I love this stuff. It’s really just pointers to other articles, books and people, but this stuff is soo interesting.

Btw, it’s by Peter Morville of Information Architecture for the WWW and Argus fame.

0 comments

Setting up OpenACS

March 11, 2002 · 0 comments

In this document

Setting up the box

  1. Install RedHat 7.2, 7.3 or 8.0 (what modules/package sets?)

  2. Add group “web”, add user “nsadmin”, make “nsadmin” and all normal users members of group “web”
    su -
    groupadd web
    useradd -g web nsadmin
    usermod -g web <i>you</i>
    
  3. Download AOLserver to /usr/local/src/aolserver, and compile it to /usr/local/aolserver (more detailed instructions necessary)

  4. Get sendmail running:
    su -
    chkconfig --level 2345 sendmail on
    

    The defaults should be fine: Relaying is closed, and it only listens on 127.0.0.1, so it isn’t available to the public at large. All it means is we can use it to send email from the web server.

  5. Checkout a copy of en openacs-4 repository to /web/openacs-4 by saying:
    cd /web
    cvs -d:pserver:anonymous@openacs.org:/cvsroot checkout openacs-4
    

    We’ll use this to build off of when creating new OpenACS projects.

  6. Create the local CVS repository on this box:
    cvs -d /cvsroot init
    
  7. Install daemontools

Setting up an OpenACS server installation

  1. Update the local openacs-4 checkout:
    cd /web/openacs-4
    cvs -q update
    
  2. Make a copy of the OpenACS distribution for you to import:
    cd /web
    cp -R openacs-4 <i>myproj-bootstrap</i>
    
  3. Remove all the packages you don’t need.
    cd /web/<i>myproj-bootstrap</i>/packages
    rm -rf <i>all the packages you don't need</i>
    
  4. Import the sources into a new CVS tree for your project
    cd /web/<i>myproj-bootstrap</i>
    cvs -d /cvsroot import -m "Importing OpenACS <i>4.5 beta 2002-03-07</i>" \
        <i>myproj</i> OpenACS <i>openacs-4-5-beta</i>
    

    (Replace the comment and the tag with something reasonable)

  5. Checkout your new project tree into a development area
    cd /web
    cvs -d /cvsroot checkout -d <i>myproj-dev</i> <i>myproj</i>
    
  6. Blow away the import tree
    cd /web
    rm -rf <i>myproj-bootstrap</i>
    
  7. Create /web/<i>myproj-dev</i>/run script:
    #!/bin/sh
    
    script_path=`which $0`
    server_dir=`dirname $script_path`
    
    export AOLSERVER_HOME=/usr/local/aolserver
    
    exec 2>&1
    exec $AOLSERVER_HOME/bin/nsd-oracle -fzt $server_dir/nsd.tcl -u <i>lars</i> -g <i>lars</i>
    

    Then

    chmod 775 /web/<i>myproj-dev</i>/run
  8. Create log directory:
    cd /web/<i>myproj-dev</i>
    mkdir -p log/error
    
  9. Create /web/<i>myproj-dev</i>/log/run script:
    #!/bin/sh
    exec setuidgid <i>you</i> multilog s999999 ./error
    

    Then

    chmod 775 /web/<i>myproj-dev</i>/log/run
  10. Get a copy of the default nsd.tcl, then edit it to suit your dev server.

    hostname, address, server, servername primarily.

    Beware (as always) that you can’t run the server on port 80 (or any port below 1024) unless you start the server as root.

  11. Create database user and database (these commands need to be executed from the shell, not from psql)
    createuser <i>myproj-dev</i>
    <font size=-1>  <i>Shall the new user be allowed to create databases? (y/n)</i> <b>y</b>
      <i>Shall the new user be allowed to create more new users? (y/n)</i> <b>y</b></font>
    createdb <i>myproj-dev</i>
    createlang plpgsql <i>myproj-dev</i>
    
  12. Test your installation, and install OpenACS into the DB:
    /web/<i>myproj-dev</i>/run
    

    Should say

    Notice: nssock: listening on <i>192.168.1.2:8082</i>
    Notice: nssock: starting
    Notice: nssock: accepting connections
    

    after a few seconds.

  13. Stop the server again: Hit Ctrl-C

  14. Put it under supervise:
    su -
    cd /service
    ln -s /web/<i>myproj-dev</i> <i>myproj-dev</i>
    

    Then wait for the server to come up, which you can check with

    ps -ef|grep nsd
    

    (look for myproj-dev). Then, still as root, say

    cd /web/<i>myproj-dev</i>
    chown -R <i>you</i>.web supervise log/supervise
    chmod -R g+rwx supervise log/supervise
    

    If you don’t have root, you can just start it manually as above, you don’t necessarily need supervise.

    With supervise, you can say

    svc -u /service/<i>myproj-dev</i> -- to start your server
    svc -d /service/<i>myproj-dev</i> -- to take it down
    svc -t /service/<i>myproj-dev</i> -- to restart it
    
  15. Request the index page (http://192.168.1.2:8082/ in this example) and run through the installer.

  16. Congratulations, you’re all set to go.

Updating the OpenACS sources of your project

If you left out some package and then find out you needed it anyway

cd /web/openacs-4/packages/<i>package-name</i>
cvs -d /cvsroot import -m "Added <i>package-name</i>" \
    <i>myproj</i>/packages/<i>package-name</i> OpenACS openacs-4-5-beta
cd /web/<i>myproj-dev</i>/packages
cvs -q update -d

If you’ve included something you want to get rid of

cd /web/<i>myproj-dev</i>/packages
cvs rm -Rf <i>package-name</i>
cvs commit -m "Removed" <i>package-name</i>
cvs -q update -P

To update with the latest OpenACS distribution

cd /web/openacs-4
cvs -d /cvsroot import -m "<i>OpenACS update 2002-03-11</i>" \
    <i>myproj</i> OpenACS <i>openacs-4-5-beta-2002-03-11</i>

<blockquote style=”background-color: #eeeeff; border: solid 1px gray;”> Note, if you execute the command above, you’ll get all packages, including those that were left out from your bootstrap directory when you set it up. I used to believe that you could explicitly name the things you wanted to import on the command line, but when I checked the documentation, it turned out I was wrong. Instead, what you need to do is create a bootstrap-directory the same way you did when you originally set things up.

CVS will tell you whether this generated any conflicts or not.

If there weren’t any conflicts, you’re all set. You can go straight to your own checkout and do an update:

cd /web/<i>myproj-dev</i>
cvs update -Pd 

Otherwise, if there were conflicts, cvs will say something like this:

3 conflicts created by this import.
Use the following command to help the merge:

    cvs -d /cvsroot checkout -jOpenACS:yesterday -jOpenACS <i>myproj</i>

You need to resolve the conflicts. You can do this in a fresh checkout somewhere, like cvs suggests above. Or you can do it in your own existing checkout like this:

cd /web/<i>myproj-dev</i>
cvs update -Pd -jOpenACS:yesterday -jOpenACS

(Copy the two -j arguments from the cvs output you just got.)

This will make cvs attempt to do an automatic merge in your own checkout area (or a fresh checkout, if you used the cvs output). Some of the conflicts might need to be resolved by hand, like you would normally.

When you’re done merging, say:

cd /web/<i>myproj-dev</i>
cvs commit -m "Finished merging \
    <i>openacs-4-5-beta-2002-03-08 with openacs-4-5-beta-2002-03-11</i>" 

Now you’re ready to update your own checkout, and advise your coworkers to do the same:

cd /web/<i>myproj-dev</i>
cvs update -Pd

References

0 comments

Mozilla doesn't understand hyphens?

March 10, 2002 · 0 comments

Just got an email from Neophytos saying that something was wrong with my site rendering on Mozilla, so I checked it out. Turns out it was this very long word, that confused Mozilla:

“everything-and-the-kitchen-sink- but-you-have-to-pay-extra-for-everything- and-you-can’t-even-do-simple-things”

I posted this word a couple days ago, and it turns out that Mozilla won’t use the hyphens or dashes to wrap the word across multiple lines. (I’ve inserted a couple spaces now, so it’ll work with Mozilla.)

Is this a bug in Gecko (which, supposedly, handles everything so correctly that none of the billions of pages out there display quite right), or is that the way it’s supposed to? Is there some HTML entity you can use instead of a normal dash, to tell Gecko that it’s okay to wrap the word here?

0 comments

More hosting options

March 08, 2002 · 0 comments

A couple of people got back to me to remind me that there are alternatives to rackspace for hosting: There’s hub.org, which is good for hosting OpenACS sites on a shared box cheaply. And then there’s pair.com, which has dedicated servers a’ la rackspace. I haven’t used either, so I can’t give my recommendation.

0 comments

DNS and email with no sysadmin

March 06, 2002 · 0 comments

I hate having to sysadmin. So I’m constantly looking for free or cheap hosts for the fundamentals. Not in the VeriSign everything-and-the-kitchen-sink- but-you-have-to-pay-extra-for-everything- and-you-can’t-even-do-simple-things manner. Just give me a web interface to configure things, and keep the systems humming. I’ll take it from there.

For DNS, I’ve found mydomain.com. They give me a nice web interface for setting everything from subdomains, via setting A/CNAME/MX records, to email forwarding rules. You don’t have to worry about keeping your DNS servers accessible, and you don’t have to worry about messing up named.conf.

And then for email I’ve found fastmail.fm, who provides me with a mail box, including a super-fast web interface, IMAP, POP, authenticated SMTP, lots of storage space, and exceptional service. Some of it you have to pay for, but it’s still pretty cheap for what you get.

I’m also looking at rackspace.com (or rackspace.co.uk for those of us in Europe). It is definitely looking interesting for hosting private servers.

0 comments

Explain it to a nine-year-old

March 04, 2002 · 0 comments

“I am sorry for the length of my letter, but I had not the time to write a short one.” (Blaise Pascal)

0 comments

Eric again

March 02, 2002 · 0 comments

Another thing Eric Raymond said: The greatest moments in life aren’t those where the universe confirms a belief you’ve always held. The greatest moments are when you realize that something you’ve always thought you knew is actually wrong.

0 comments

A modest proposal

March 02, 2002 · 0 comments

Just to stir up emotions, I’ll sometimes suggest that Denmark drop Danish as official language, and instead adopt English. It usually works. People get mad.

The idea isn’t as stupid as it sounds, actually. A language has to be alive, to be of use. It has to develop along with our thoughts and ideas about the world, so we can express ourselves through the language. But Danish isn’t a very lively language, a fact which is evidenced by our completely integrated use of English phrases, like “computer”, “commitment”, “reminder”, not to mention bad language such as “fuck” and “shit”. Native English speakers are frequently amazed when they listen to Danes speaking with each other. “Does ‘fuck’ mean the same in your language that it does it ours?” Yes, baby, and we don’t even have a clue how offensive it is. The reason is simple: The cultural and technological innovation is happening primarily in the US, and with that, they get to define the language.

But why not play this to our advantage? Ireland has done something of the sort. They have their own original lanugage, Gaelic, which most Irish people know, but they generally stick with English. Consequently, Ireland is a large cultural presence all over the western hemisphere. (There are other reasons, such as actually having a culture worth bringing abroad, but the English language is definitely a major help.)

What would happen if we did something similar here? (Yes, I know I’ll get shot for suggesting this). Perhaps we could more successfully export our TV-shows, movies, documentaries, books, web sites, all sorts of publications. And with that, our values, or take on the world, our ideas. Maybe it would be easier to export products, too. Perhaps our national public service broadcasting company, DR, could finally try to act on their original goal of being “the best public service broadcasting company in the world”, instead of having to add the self-denunciating qualification ”... for the money”.

Maybe we would even start to connect more with the rest of the world. Start to look at ourselves from the outside. Start to realize that some of the barriers to having an impact on the world that we experience, and the self-delusion and convulsive behavior that those perceived barriers result in (Denmark as the world’s leading IT nation, come on!), aren’t really there, that they’re only a product of our imagination. That if we really want to become part of the world, it’s as easy as deciding that that’s what we really want, and then start acting on it, day by day removing obstacle after self-imposed obstacle, until one day, people actually start listening, and start caring about what we have to say, because it’s relevant to them.

The point isn’t so much that I really think we should do this. I surely wouldn’t mind terribly, but it’s not realistic to see that happen within my lifetime, anyway. The point is that by playing along with this little game of supposition, you start to realize just where those obstacles are. Where does the resistance towards the idea of giving up on Danish come from? Is it just convention? Is it the angst of other people being able to read our newspapers and comment on our society? Is it because we fear that we may not be able to argue for why our values are important to us? Is it because we’re actually happy to have the language excuse, when the rest of the world doesn’t care about what we think or the TV shows that we make?

It’s at least worth thinking about, isn’t it?

0 comments

Could it be us who have to change?

March 02, 2002 · 0 comments

Went to the post office the other day to send a large letter to the US. The poor post office worker had to literally fill up the entire envelope with stamps, about 15 of them. Each and every stamp had to be dampened, and sometimes he had problems making them stick.

I mentioned the US stamps, which you don’t have to dampen, and how useful they’d be in this situation. You just peel them off, and they have normal adhesive on the other side. Sort of like scotch tape. His reply? “I don’t really consider those to be stamps.”

Why the hell not? Stamps serve a single purpose in life: To document to the postal company that you’ve paid for their services. Sure, it’s okay if they look nice, too, and all that. But they’re there because they serve a function. So whatever innovations we can come up with that improves the functionality of the stamps are good innovations. Stamps that stick without a lick is a good thing.

The reason that I bring this up is obviously not that I think that the adhesive used on stamps is all that important. It’s because of the attitude of the postal worker. This attitude is what makes Denmark such a painful place to be at times. We have a terrible angst for anything new. The Euro and the EU, for instance. It makes perfect sense for a country like Denmark to be part of that. We’re too small for our currency and our foreign policy to really matter. But if we team up with the rest of the Europeans, we can make a difference.

Foreign people is another. As is our welfare system. “But we have the best welfare system in the world, we are a role model for the rest of the world.” Yeah, right. This whole notion that we’re the best country in the world, and all the rest of the world are envious of us, is all baloney, something we savagely want to believe, so we don’t have to face the question: Could it be us that have it wrong?

0 comments

Property rights

March 01, 2002 · 0 comments

Heard Eric Raymond give a talk today. One interesting point: “People will hold on to their property, as long as the benefit of owning that property outweighs the cost of defending it.” (Quoted loosely from memory.)

He mentioned himself how this is an interesting observation in the light of what’s currently going on in the recording industry. Read this morning that music sales in Denmark is down by 30% over two years, and that they say it’s because people have CD-burners. And that it’s not really hurting them as much as it hurts upcoming artists.

Hm. They’re not getting my sympathy. It’s clear that innovation in the music industry is not coming from within the record companies. It came from a 19-year old kid.

0 comments