Being the thoughts and writings of one Gustaf Erikson; father, homeowner, technologist.

This category contains posts about computing, programming, and development

Thursday, 2005-12-08


Getting things done with Outlook

Rui posts some tips on how to manage your email more effectively with Outlook.

We’ve been using some of those techniques with the support box. I use “reply to all” for all mails, so we always get a copy of the reply in the same conversation. As we are two working with this, it’s a godsend to have a complete record of the conversation around the issue.

We use the nifty coloured flags to manage workflow. My issues are orange, my coworker’s are blue, issues awaiting answers are purple, escalated issues are green etc. This works pretty well, as you can easily spot issues that haven’t been addressed yet.

We have 2 archives, one based on the year’s quarter, and one where we put all escalated issues. Having mails sorted by conversation makes it easy to archive.

However, Rui’s tip about using a smart mailbox to combine your inbox and Sent items makes a lot of sense. It addresses the shortcomings of having to do a reply to yourself all the time.

We’ve worked around the limitations of Outlook’s default filtering by writing a little perl skript that counts the number of issues and alerts us if they are too old.

Tuesday, 2005-11-29


Brute force is good, sometimes

I had to try to extract about 12,000 IP addresses from our click database, over a period of one and a half months. The table is famously big[1] (140,000 rows a day) and indexed on the date.

I don’t know what flew in me, but my first attempt was to generate SQL queries for each IP and run that query over the timespan. That’s 12,000 queries at about a minute apiece, in other words 8 days. Plus I couldn’t run it all the time, as it bogged down the database.

Then I found a better way. I took all rows for the timespan and checked if the IP was in a hash. If it was, I kept it, otherwise I just went on to the next one. I can’t believe I was so stupid I tried the first approach at all, and that I’m now blogging about it…

[1] in our system, you probably have much bigger tables.

Saturday, 2005-11-12


Ubuntu rocks!

Due to a little accident, my wife’s standard laptop is hors de combat — basically, I dropped our son on it (from a small height, I hasten to add) and the power connection broke. So it boots, for about 5 seconds, before discovering that the battery is flatter than Kansas.

I have in my possession an elderly laptop with no more than 256M of RAM, much too little to run a modern Microsoft OS. So I decided to check Ubuntu out. This is supposed to be “Linux for human beings”, so I figured this would be OK for non-geeks.

I downloaded an install CD via BitTorrent and used it to install it. The installation went really well. I had to fight my old-skool Debian and OpenBSD instincts and just let things go as designed. Ubuntu has made a great product — it installed seamlessly on the lappy and presented a clean, workable graphical interface that I think will be acceptable for Linux-o-phobes.

The only thing that didn’t work out of the box was the wi-fi pc-card I bought expressedly for its OpenBSD compatibility. However, I discovered that I had no less than four wi-fi cards lying around, and the oldest 3Com card worked fine.

I’ve been using this laptop all day (in between re-stacking our woodpile) and I really enjoy it. Small stuff, like Alt-Tab window-switching and Alt-F4 window close work exactly like in Windows. But having a real Debian system underneath just feels sooo much better than Windows crap leavened with Cygwin goodness.

Tuesday, 2005-10-18


Gartner: IT will survive bird flu

Hilarious article in El Reg:

If the latest news from the wonderful world of Pandemia has got your organisation running around like a headless Romanian chicken, then don’t fret: Gartner has released an essential guide to avian influenza, aka bird flu, aka Black Death II, which mercifully states that although you will most likely be lying dead among the smouldering ruins of society, your IT infrastructure can be saved for future generations.

The article supplements Gartner’s tips (“Assign someone in your business to track biological threats such as the avian flu. […]”) with the following:

  • Bulk buy flowers and coffins as part of your business continuity preparedness for a permanent workforce outage scenario.
  • Assign someone in your business to stand on the roof and shoot anything with wings.
  • Set up email autoresponders to communicate: “Sorry, I’m out of the office due to death.”
  • Lock infected employees in their homes with broadband access and then paint a red cross on the door.
  • Leave a full set of instructions on how to reboot the servers for the next generation emerging blinking into the post-apocalyptic landscape.
  • Try to stay calm.

Thursday, 2005-10-06


God hates Ruby

Rui:

The last couple of hours were spent poring over a couple of Rails applications, and arriving at the (predictable) conclusion that Ruby can be just as incomprehensible as Perl when written by squirrels on the same kind of crack.

Shouts to Anders at ork…

See also www.GodHatesPerl.com :-)

Tuesday, 2005-09-27


Coding VBA

The Daily WTF:

At some point in your career as a programmer, you will be tricked into maintaining a VBA (Visual Basic for Applications, aka Word/Excel macros) application. I’d tell you how to get out of it, but I really don’t think it’s possible. All I know is that at some point between admitting to have knowledge of Excel and cursing under your breath while typing VBA, you will be coaxed into giving some “quick help” on a spreadsheet.

Then there follows an astounding example of horrible horrible VBA code, and the replacement: 3 lines.

There were some dangerous moments in the beginning of my current employment when people were nerving themselves to ask me for VBA help, but now I think it’s forgotten. And if it isn’t, I have to hunt down those people and administer more memory suppressants…

Wednesday, 2005-09-14


The good old days

Matthew: Generation VIC20.

Chris: So Dad, what’s a computer science class for at school?
Me: Well, you learn to program there for example.
Chris: Program?
Me: Yes, to write computer programs using a special language.
Chris: You mean like games?
Me: Well, yes I suppose.
Chris: Like Star Wars Knights of the Old Republic?
Me: Umm, no.

Classic.

I guess you could learn a lot by copying source code, even if it was just BASIC spaghetti code. With line numbers.

Thursday, 2005-09-01


“Proprietary”

For me, and many others, the word “proprietary” is pejorative. Proprietary tech is closed, not open; hidden, not shared; expensive, not free.

But I’ve noticed that in certain contexts, “proprietary” is loaded with positive context: it denotes quality and smartness that you only get when you pay clever people lots of money to develop great technology.

This is jarring.

Tuesday, 2005-08-30


Date in another timezone

Cool hack in Unix: if you know the zonefile abbreviation for a timezone, you can use it to get the date there:

$ TZ=PST8PDT date
Tue Aug 30 05:07:39 PDT 2005

This also works:

$ TZ=America/Los_Angeles date
Tue Aug 30 05:08:17 PDT 2005

Timezone files are in /usr/share/zoneinfo on OpenBSD and Linux.

Thursday, 2005-08-25


Sony DRM

Mike:

Sony really doesn’t like people being able to do what they want with Sony devices, so the thing is rife with all sorts of crippling roadblocks to innovation (I think the technical term for this is DRM, but I just call it teh suq).

Monday, 2005-08-22


Screen quickstart

This is quick basic intro to GNU Screen.

If you haven’t installed screen, do so. It rocks.

Starting up

Start screen. You’ll get a splash screen. Hit space to make it go away.

Depending on your flavour of *nix, you’ll get between 1 and n screens. First one is numbered 0. Try to switch to screen 1: Ctrl-a 1. If you get a message, create screen 1 with Ctrl-a c (create). Now you can switch back and forth between 0 and 1 with Ctrl-a 0 and Ctrl-a 1.

Want a “real” Ctrl-a? (If you’re in Emacs, you do.) Type Ctrl-a a.

Detaching

Start an editor in one screen, load a file and start editing. Detach with Ctrl-a d (detach). Logout of the shell, then login again. Attach to the screen: screen -r (reattach). You should be back where you left. Continue editing.

Finally

Screen is perfect for flaky connections, you’ll be back where you left off even if you get a hangup.

You can use screen -r -d to cleanly reattach from another session.

If you want a bunch of screens at startup, edit your ~/.screenrc. Mine looks like this:

shell -$SHELL
screen -t SHELL0  0
screen -t ROOT    1
screen -t SHELL2  2
screen -t SHELL3  3
screen -t SHELL4  4
screen -t SHELL5  5

The first line starts the current $SHELL in login mode. The others set up six windows and gives them titles.

Type man screen for more info.

Happy screening!

Update: here’s a more full-featured tutorial. (Via NTK.)

Saturday, 2005-08-20


GUT-DL

… or the the Grand Unified To-Do List: does it exist?

I’ll soon be having 3 main sources of things to do:

  • the Bugzilla system, used for stuff like accounts, and also to keep track of things we have committed for the tech team to handle
  • the soon-to-be-implemented issue tracking system for support work
  • ad-hoc stuff using Outlook (phone calls, random cow-orkers wandering up and presenting requirements for multi-week projects in 2 sentences, &c)

Wouldn’t it be great if I could get a unified view of all this, so I could slice and dice and prioritise GTD-style?

Friday, 2005-08-19


Favourite comment

Peter mailed this to the internal tech list:

// FIXME: Please note that this is a fulhack, made in panic before christmas.
// Should be removed och purged ASAP.
// ... Well, that didn't happen... surprised?
// ... and it just keeps growing...

(A “fulhack” is Swedish for “ugly hack”.)

Wednesday, 2005-08-17


Django CRUD

Matt has written a nice tutorial on how to use Django in a simple CRUD situation: Django Generic Views: CRUD.

(CRUD, by the way, stands for Create, Read, Update, Delete — basic database manipulation. The title of this post is in no way a reflection on Django on my part.)

Matt and others are very excited over Django — it’s Ruby on Rails for Python. I’ve been meaning to learn Python for a long time, but lately I’ve felt I’m too old a dog for new tricks. More on this in a later post, maybe.

Tuesday, 2005-08-16


Loving Perl

milardj:

Loving Perl is starting to resemble an 80’s John Hughes movie - really digging this girl but slightly embarrased about it and afraid you’re friends will find out.

Why am I still on Windows?*

Aristotle writes:

Hooking Markdown into the browser, and in fact into any application that has text input widgets at all, is actually more simple than might at first appear: you just need xclip (or some equivalent, I suppose, if you.re not on X11). This little tool can dump any of the X11 selections, such as the clipboard, to its stdout or slurp its stdin into one of the selections.

Thus, I have this shell oneliner bound to a keyboard shortcut in my window manager:

xclip -o -sel clip | Markdown | SmartyPants -2 | xclip -sel clip

With that in place, I simply write my entries in a natural format, then I copy, hit a key, and paste, and there they are, turned to HTML and typographically smartened. Presto.

Anyone know of a Windows analogue of xclip?

* Well, at work I support the damn OS, and at home I just enjoy the eye-candy…

Update: Jim pointed me to UnxUtils and the programs pclip.exe and gclip.exe. Here’s Jim’s post on how to use these with PyTextile, and here’s my version for Markdown + SmartyPants

c:\cygwin\usr\local\bin\pclip.exe | \
c:\cygwin\bin\perl.exe c:\cygwin\usr\local\bin\Markdown.pl | \
c:\cygwin\bin\perl.exe c:\cygwin\usr\local\bin\SmartyPants.pl | \
c:\cygwin\usr\local\bin\gclip.exe

The gnarly code is due to my choice of paths in Windows.

The code works, sorta, but it doesn’t return DOS line endings (\r\n). I guess you could hack Markdown to do this.

Thursday, 2005-08-11


Personal project blues

Russ talks about personal devel projects and the need to find time to do them.

I’m in a similar situation. I really need to do more development in my spare time, if only because it’s fun. I also need to learn more programming (especially in the Java space) for professional reasons. The hard part is finding the time to do it.

I have plenty of excuses, first and foremost being three kids from the ages of three to fifteen, and a house built in the 20s, renovated in the 40s and extended in the 60s. I should also be doing some sort of exercise before my belly becomes too noticable.

Maybe moving to Windows at home was a mistake. It’s too easy just to futz around on Windows, to do work you need a Unix laptop with a basic window manager and an instance of Emacs.

Tuesday, 2005-03-08


OpenBSD wi-fi hardware

This list is here so that I can check out hardware in stores via the phone.

  • ADMtek ADM8211 based CardBus/PCI adapters (atw) (G)
  • Aironet Communications 4500/4800 ISA PnP, PCMCIA and PCI 802.11b adapters (an)
    • Aironet 4500/4800
    • Cisco 340/350
  • Atheros AR521x based CardBus 802.11a/b/g adapters (ath), including: (G)
    • 3Com 3CRPAG175
    • Aztech WL830PC
    • D-Link DWL-A650
    • D-Link DWL-AB650
    • D-Link DWL-AG650
    • D-Link DWL-G650B
    • Elecom LD-WL54AG
    • Elecom LD-WL54
    • Fujitsu E5454
    • Fujitsu FMV-JW481
    • Fujitsu E5454
    • I/O Data WN-AB
    • I/O Data WN-AG
    • I/O Data WN-A54
    • Linksys WPC51AB
    • Linksys WPC55AG
    • NEC PA-WL/54AG
    • Netgear WAB501
    • Netgear WAG511
    • Netgear WG511T
    • Orinoco 8480
    • Orinoco 8470WD
    • Proxim Skyline 4030
    • Samsung SWL-5200N
    • SMC SMC2735W
    • Sony PCWA-C700
    • Sony PCWA-C300S
    • Sony PCWA-C500
  • Atheros AR521x based PCI 802.11a/b/g adapters (ath), including: (G)
    • D-Link DWL-A520
    • D-Link DWL-AG520
    • D-Link DWL-G520
    • HP NC4000
    • Linksys WMP55AG
    • Netgear WAG311
    • Netgear WG311
    • Proxim Skyline 4032
    • Senao NL-5354MP
  • Atmel AT76C50x based USB 802.11b adapters (atu), including: (G)
    • Acer Peripherals AWL300
    • Acer Peripherals AWL400
    • Aincomm AWU2000B
    • Bluetake BW002
    • D-Link DWL-120
    • Geowave GW-US11S
    • Linksys WUSB11
    • Linksys WUSB11-V28
    • Netgear MA101 rev B
    • OQO model 01 builtin wireless
    • Ovislink AirLive WL-1120USB
    • OvisLink AirLive WL-1130USB
    • SMC 2662W-AR
    • SMC 2662W-V4
  • Intel PRO/Wireless 2100 802.11b adapters (ipw) (G)
  • Intel PRO/Wireless 2200BG/2225BG/2915ABG 802.11a/b/g adapters (iwi) (G)
  • Intersil PRISM-2-3 based 802.11b Compact Flash adapters (will be detected as PCMCIA adapters) (wi)
    • Buffalo AirStation
    • D-Link DCF-660W
    • ELSA XI800
    • Linksys WCF12
    • Netgear MA701
  • Intersil PRISM 2-3, Lucent Hermes and Symbol Spectrum 24 based PCMCIA 802.11b adapters (wi), including:
    • 3Com AirConnect 3CRWE737A
    • ACTIONTEC HWC01170
    • Addtron AWP-100
    • Agere Orinoco
    • ARtem Onair
    • BUFFALO AirStation
    • Cabletron RoamAbout
    • Compaq Agency NC5004
    • Contec FLEXLAN/FX-DS110-PCC
    • Corega PCC-11
    • Corega PCCA-11
    • Corega PCCB-11
    • Corega CGWLPCIA11
    • Dlink DWL650 revisions A1-J3
    • ELSA XI300
    • ELSA XI325
    • ELSA XI325H
    • EMTAC A2424i
    • Ericsson Wireless LAN CARD C11
    • Gemtek WL-311
    • Hawking Technology WE110P
    • I-O DATA WN-B11/PCM
    • Intel PRO/Wireless 2011
    • Intersil Prism II
    • Linksys Instant Wireless WPC11
    • Linksys Instant Wireless WPC11 2.5
    • Linksys Instant Wireless WPC11 3.0
    • Lucent WaveLAN
    • NANOSPEED ROOT-RZ2000
    • NEC CMZ-RT-WP
    • Netgear MA401
    • Netgear MA401RA
    • Nokia C020 Wireless LAN
    • Nokia C110/C111 Wireless LAN
    • NTT-ME 11Mbps Wireless LAN
    • Planex GW-NS11H Wireless LAN
    • Proxim Harmony
    • Proxim RangeLAN-DS
    • Samsung MagicLAN SWL-2000N
    • SMC 2632 EZ Connect
    • Symbol Spectrum24
    • TDK LAK-CD011WL
    • US Robotics 2410
    • US Robotics 2445
  • Intersil PRISM 2-3 and Symbol Spectrum24 based PCI 802.11b adapters (wi), including:
    • 3Com AirConnect 3CRWE777A PCI
    • Belkin F5D6000 PCI (a rebadged WL11000P)
    • Corega CGWLPCIA11 PCI
    • Eumitcom WL11000P PCI
    • Dlink DWL520 PCI revisions A and B
    • Global Sun Technology GL24110P PCI (untested)
    • Global Sun Technology GL24110P02 PCI
    • Intersil Mini-PCI
    • LinkSys WDT11 PCI (a rebadged GL24110P02)
    • NDC/Sohoware NCP130 PCI
    • Netgear MA301 PCI
    • Netgear MA311 PCI
    • US Robotics 2415 PCI (rebadged WL11000P)
    • Nortel E-mobility 211818-A
    • Symbol LA4123
  • Intersil PRISM 2.5/3 based USB 802.11b adapters (wi), including:
    • Acer Warplink USB-400
    • Actiontec HWU01170
    • AirVast WM168b
    • Ambit WLAN
    • Apacer Wireless Steno MB112
    • ASUS WL-140
    • Compaq W100
    • Corega WLUSB-11
    • Corega WLUSB-11 Key
    • D-Link DWL-120 (rev F)
    • D-Link DWL-122
    • I-O DATA WN-B11/USB
    • Intel PRO/Wireless 2011B
    • Intersil Prism 2X
    • JVC MP-XP7250
    • Linksys WUSB11 v3.0
    • Linksys WUSB12
    • Melco WLI-USB-KB11
    • Melco WLI-USB-KS11G
    • Melco WLI-USB-S11
    • Microsoft MN510
    • Netgear MA111 (version 1 only)
    • Pheenet WL-503IA
    • Planex GW-US11H
    • Siemens SpeedStream SS1022
    • Sitecom WL-022
    • Syntax USB-400
    • US Robotics 1120
    • Z-Com XI-725/726
    • Z-Com XI-735
    • ZyXEL ZyAIR B-200
  • Ralink RT2500 based CardBus 802.11b/g adapters (ral), including: (G)
    • MSI CB54G2
    • Surecom EP-9428-g
  • Ralink RT2500 based PCI 802.11b/g adapters (ral), including: (G)
    • ASUS WL-130g
    • Minitar MN54GPC-R
  • Raytheon Raylink and Aviator 2.4/PRO PCMCIA 802.11 FH adapters (ray)
  • Realtek RTL8180L based CardBus 802.11b adapters (rtw), including: (G)
    • Corega CG-WLCB11V3
    • Netgear MA521

(G): Drivers for hardware marked with (G) are only included in the GENERIC kernels, but are not included on the various distribution floppies (including the cd-rom boot image).

(Source: OpenBSD i386 hardware list.)

Sunday, 2005-02-27


Time tracking software

I feel a need to keep an eye on what the hell I’m doing at work, and how long time I spend doing it. I know that there are lots of apps around which help you track time spent on projects, but most of them are graphical apps. I wanted a console app that could live in my screen session so that I could work from home and still have a totalitarian view of what I was doing at any given point in time.

A quick trawl through Freshmeat didn’t turn up anything other than the aforementioned graphical apps, so I happily sat down and started work on my own, using my recently acquired knowledge of Perl’s terminal capabilities. I wanted a full-screen app that I would just press a button in and switch tasks.

While writing this, I needed a trivial time conversion that I had forgotten. While googling for it, I discovered a time tracking app written in Perl that used it for its own purposes: tt. Ironic, huh? The app isn’t exactly what I envisioned, but it’s more full-featured than mine, so I’ll give it a try. Otherwise I’ll develop my own app further.

Friday, 2005-02-25


More on Perl

I’ve tried learning Python through Mark Pilgrim’s excellent Dive Into Python, but I’ve discovered that I haven’t enough time to really get into it. Perl is the language I use most days, both in work and personally, and it’s hard for me to break out of the Perlish mindset. Any “serious” Python coding would be sysadmin and report stuff, and I’d just try to remake Python in Perl’s image.

I’ve finally grokked Perl references, and I’m reading the second edition of the Perl Cookbook with real pleasure. Some of the quirkier passages from the first edition are gone (and Randal Schwartz seems to be persona non grata in this edition), but that’s outweighed by the treatment of Perl’s Unicode support (crufty and gnarly though it may be — the price of backward compatibility) and the new switch statement. Perl must be the only language older than 10 years where switch is an experimental feature.

Jim has apparently volunteered to become the Perl expert at his salt mine, for which he deserves equal praise for foolhardiness and pity. I think that he’ll find enough cool stuff in Perl to satisfy his C++ roots, what with all the esoterica available in the dark corners of CPAN (Acme::Bleach, anyone? Or how about Acme::Apache::Werewolf, by a hardcore Warren Zevon fan?)

I’ll never be a Perl guru, but I do think I can become a competent Perlist.

Thursday, 2005-02-10


Tags are the new black

Today in #mobitopia:

 16:16 <Netminder> tags are the new black
 16:16 <diego_> heh that's good :)
 16:16 <Moof> Netminder: I'm currently writing tag-aware blogging software
 16:17 <diego_> I am writing a tag-aware operating system. There will be no
       files or applications or anything. Only tags.
 16:17 <Netminder> my pet monkey just received first round funding on a
   tag-enabled venture he's working on.
 16:17 <diego_> I am talking to Shell as well, developing tag-based fuels.

Monday, 2005-02-07


Typical

I spent my free time this weekend re-designing my app for calculating Swedish holidays. It was pretty crufty, having evolved from a simple app to update our time-reporting database to being all things to all people — at least those that grok command-line Perl. Let’s face it — that audience is me.

So I ripped out the central part which actually computes the dates and put it in a module. I wanted to write a CGI that could be used online, so I had to research how to install Perl modules as a normal user, enable taint mode et cetera et cetera. I’m 15 minutes from deployment when I suddenly think “hey, this is so freaking simple it must have been done already” — and did a google for “svenska helgdagar”.

Of course, #2 on that list is a worthy competitor, with English and Swedish translations, flag days, and output to different calendar formats.

Humph.

Anyway, my efforts are here. Python version next!

Saturday, 2005-02-05


Gnus and Microsoft Outlook

For a long time I have been having trouble sending mail to people using Microsoft’s mail clients Outlook and Outlook Express. I use Gnus, an all-singing, all-dancing news-mail-and-everything reader for use in Emacs.

The trouble was that if I included any 8-bit characters in the header of the message, Outlook would translate any 8-bit characters in the body of the message to an equal sign and two hex characters. This was intensely irritating, as I naturally assume that all free software is superior to commercial offerings, especially Microsofts.

The trouble is that the version of Gnus I’m using (v5.8.7) doesn’t encode the headers in quoted-printable, thus confusing Outlook no end.

The solutions is to place the following in your .emacs or .gnus file:

;; iso-8859-1 support for headers
(require 'gnus-msg)
(add-to-list 'gnus-group-posting-charset-alist
     '(message-this-is-mail 'iso-8859-1 (iso-8859-1)))

Thanks to Kai Großjohann for this info.

Keywords: Gnus, gnus newsreader, GNU/Emacs, Emacs, Xemacs, MIME, mime, quoted-printable, transfer-encoding, Microsoft Outlook, Outlook Express, mangled, 8-bit characters.

Note: this was originally posted on another server, I’m posting it here in an effort to clean up my online life.

Saturday, 2005-01-29


Single point of failure

Russ got cracked. His website (and all the others on the same box) was defaced, his logs erased, and his life disrupted. The idiot responsible probably had no motive other than racking up a big number of defaced sites.

This points to a scary thought: many people nowadays have their professional reputations on one server: weblog, email, development. If this box is cracked, you can spend a lot of time trying to restore from backups (you do have backups, don’t you?), while your reputation crumbles around you. Your server has become a single point of failure.

Having a computer is hard. Just owning a Windows box implies being a sysadmin. Unix systems are generally more secure, but you do need to keep up on advisories and patches.

I see a need for a service that handles security on your box, with money back if you do get cracked. But that service probably exists, and costs $BIGNUM per month. The seemingly low barrier to entry in the online world — a couple of hundred for a colo box — carries a hidden cost.

Friday, 2005-01-28


Bugzilla needs RSS

An RSS feed of bugs from Bugzilla would be just great.

There’s an extension providing this but it isn’t exactly trivial to install.

It doesn’t help that the machine we’re running Bugzilla on does at least a hundred other things, all mission-critical. We really need a scratch/support box for messing with this kind of stuff.

Sunday, 2005-01-23


Upgrading the Mac mini

Russ shows how to upgrade the RAM in the Mac mini.

Russ doesn’t say, but I’m pretty sure that this voids the warranty on the beast. You can read than between the lines in quotes such as:

You have to jam the putty knife into the side of the machine, then pull back (with enough force to bend the putty knife) and it’ll pop and crackle and come apart. Just jamming the putty knife in though is quite the feat - it’s definitely a snug fit and just doesn’t feel like you’re doing the right thing at all.

You think?

Apple could have made this a bit easier, I’m sure there’ll be blood on the cases of more than few minis. But it’s definitely possible and straight forward to do upgrades yourself.

Well, it isn’t in Apple’s best interest to make it easy for consumers to upgrade their minis. In the first place, it really makes it hard to provide customer support when someone has jammed in some random hunk of RAM in the machine without reading the instructions or spec. Apple cuts down on the tech support questions plagueing the PC world by providing a locked down, controlled platform.

Secondly, it removes a lucrative income source in after sales upgrades. And thirdly, and possibly most important, making it possible for users to self-service their mini would ruin the looks of the machine.

Saturday, 2005-01-15


Changing machines

Arghh!! Engineering a hardware upgrade suddenly doesn’t seem worth it when you have to contend with re-installing every little damn piece of software that’s needed to make Windows bearable.

My gnus can’t display HTML mail anymore, and trying to fix that leads to installing lots of little packages from cygwin just to compile a program that dumps core.

The Oracle client is the install program from Hell.

The new monitor can only do 85 Hz @ 1200x1024, but then you get weird moving Moiré patterns all over the screen. Higher resolutions don’t have this, but then you only get 75 Hz.

Firefox will export bookmarks, but not the ones in your toolbar — which are all the ones containing the weird internal application URLs that no-one can remember.

Update: all of the four monitors we bought have the same defect. As I generously traded in my previous monitor to a co-worker who was suffering under a execrable Dell 17” “short-neck” (read as “shit-neck”) I now have to put up with an older 17” Dell monitor which is much worse than my previous one.

Also, re-packing monitors suck. They are heavy and hard to fit into the boxes again.

Teaching kids to code

Matthew asks how one goes about to teach kids to code. Viking is too small yet, but it’s an interesting question. I know Hanna is quite proficient in HTML, mostly by copying and pasting, but Leo has shown no interest whatsoever in coding.

Part of the problem is the polished and complex nature of todays computers. In our day, you could slavishly copy pages of code and get something that worked. Even if it was just copying, you got down and dirty with the code. Some of it stuck. A curious kid (which I was not) could explore further, learning more and more. Whether learning Basic and VIC-20 assembler was a good thing is another question…

But now? Who can feel that they can produce something like Doom 3 by themselves?

Having said that, I believe a programming environment should have a graphic component. A former co-worker’s son loves (loved? it’s been a while) a DOS-based program for scripting dungeon adventures. A language of that kind could introduce the building blocks of programming — loops, conditionals, events — in a fun way that gives instant feedback and makes debugging fun.

An OO component could make it easy to “clone” your succesful monster, trap, whatever, and re-use the code. Introducing test cases is perhaps overkill at this stage…

I haven’t seen Lego’s Mindstorm stuff, but if anyone can make IDEs for kids, it should be them.

Update: Bill Ward writes in a comment:

For me it was BASIC on the Commodore too. But today’s kids have options as well. I think Javascript may be a good choice. My wife is taking a Flash class at the local college, and teaching me what she is learning. That could be a good choice too, except for the fact that it’s rather expensive.

I remember someone prophesying that Windows Scripting would be the next “laymans programming language”, but I haven’t seen MS promoting it that way. Having an easy to learn powerful scripting language built into the OS would introduce lots of people to programming, not just kids.

Konfabulator for Windows

Russ gives Konfabulator for Windows a big thumbs up. And sure, it’s cool, and the widgets are really nicely done graphically.

But I’m still too much of a textmode guy to really appreciate it. Even though I use an analogue watch, I prefer the modeline of my emacs to show me the date, time, and week of year. I prefer to ask the mobibot the values of the stocks I follow, and the weather can be gauged by looking out of the window.

Besides, I have my screen full of apps. I never see my desktop.

But perhaps I’ll come round. If only Windows had working virtual desktop support.

Frank has some more thoughts.

Regarding the mobile angle, I’m not wholly convinced that Konfabulator would work “out of the box”. It’s very mouse-oriented (being based on JavaScript, after all). There are some difficulties in getting it to work in the majority of devices that have keypad/joystick input.

But for ease of development, I’m sure it can’t be beat.

Update: I maybe should have mentioned the number 1 reason I didn’t stick with Konfabulator: no nixie tube clock widgets.

Comments

Nick Wilson writes:

Besides, I have my screen full of apps. I never see my desktop

Being a 100% Linux guy, the first thing I do when i boot is open about a half dozen command line screens. I like the look of konfabulator but isnt it just a pretty toy?

For people that spend much of their waking day in front of a pc, like me, its so much simpler to be “text orientated”. Whereas I browse graphically, have some neat games and stuff I occasionaly get time to play, i really do appreciate a good functional no thrills text app.

Take email for example, Mutt is my app of choice, its ugly, but highly functional and very powerful.

I think things like konfabulator will be the ‘darling of the moment’ at very best. Give me solid functionality without thrills any day of the week..

Nick W

I’m with you all the way, Nick, but I still think we (Linux users and Windows “power users”) are a minority. Konfabulator represents the eye-candy market which is much bigger than the fast-and-effective command line market. It may be faddish, but there’s money in them thar faddish hills.

Biting another bullet

I upgraded the Ultra 5 to OpenBSD 3.6. Some notes for next time:

  • The machine doesn’t boot from the floppy, use the cd-rom image instead.

  • Don’t just delete the entries in /var/db/pkg, cleanly remove old packages with pkg_delete -q /var/db/pkg/\* instead. Or in other words, RTFM.

Now I just need to get tramp working so that I can edit these posts in greater comfort and security.

Update: I discovered I need the latest X stuff too, for ghostscript. I can’t remember if the installation tgz sets should be handled specially, I just did a tar xzf xbase36.tgz -C / and hoped for the best.

Scooped again

Believe it or not, but this post describes my own thoughts a couple of weeks ago.

Basically, it argues that plentiful and cheap bandwidth will make ASP for consumers more and more attractive.

My take on this is that instead of bandwidth providers becoming pure ASPs (i.e., only providing a thin client and access to remote applications hosted at the provider), you could rent a full-featured PC that would be pre-configured with the neccessary applications (anti-virus, firewall, backup) and that would be remotely managed by the provider.

Users that wanted to go their own way would be free to do so, but if a majority of users used managed resources putbreaks of viruses and worm would be easier to spot and have a harder time to propagate.

The flaw in this argument is that such a solution would be Microsoft-based, and I doubt that there’s a cost-effective way to remotely manage thousands of PCs and still make a profit.

Update: this /. comment elaborates further.

Friday, 2005-01-14


The reality of failure

Jeff writes:

How can you tell experienced programmers from beginners? New programmers think if they work hard, they might succeed. Experienced programmers know that if they work really hard, they might not fail.

[…]

I’d seriously question the credentials — or at least the intellectual honesty — of any developer who denied being a part of any software disasters.

Wednesday, 2005-01-12


Combining PDF files

Need to combine two or more PDF files into one under Unix? Use the following command:

  gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf \
  source1.pdf source2.pdf source3.pdf etc.pdf

Obviously, you’ll need Ghostscript for this to work.

(From macosxhints)

Thursday, 2005-01-06


Compiling xplanet on OpenBSD

I’ve been running with a plain coloured background in my window manager for a while, but I wanted to run something more fun. Since I tried it last (back in 2000 or so), xplanet has become much more featureful, so I decided to try it out.

However, there’s no OpenBSD port of it, so I had to compile it myself.

After downloading and untarring, I ran the configure script. I missed some warnings about libraries that couldn’t be found (more on this below) but got an exit zero from the script. Onward to make.

Now make barfed when compiling some cpp files in the src/libprojection directory. The error was:

ProjectionBonne.cpp: In method `ProjectionBonne::ProjectionBonne(int, int, int)':
ProjectionBonne.cpp:37: implicit declaration of function `int snprintf(...)'

Chris Davies suggested adding the line

   #include <stdio.h>

to the affected CPP files (three in all) and the make went swimmingly from then on.

Well, until I tried to run the app. That’s when I found out I didn’t have JPEG support compiled in.

I did have the libraries and headers needed, but they were in /usr/local. I used the following invocation to configure to remedy this:

./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib

The next step is to find some images of planets other than Earth. For some reason (IP related, no doubt) they’re not included in the source distribution.

Wednesday, 2005-01-05


Outputting dates in RFC822 and ISO8601 formats in Perl

Correctly formatted date strings are needed for RSS generation, among other things RSS. Diego shows how to do this in Java. This is my version in Perl

 #!/usr/bin/perl -w
 use strict;
 use POSIX qw(strftime);
 my $now = time();
 # We need to munge the timezone indicator to add a colon between the hour and minute part
 my $tz = strftime("%z", localtime($now));
 $tz =~ s/(\d{2})(\d{2})/$1:$2/;
 # ISO8601
 print strftime("%Y-%m-%dT%H:%M:%S", localtime($now)) . $tz . "\n";
 # RFC822 (actually RFC2822, as the year has 4 digits)
 print strftime("%a, %e %b %Y %H:%M:%S %z", localtime($now)) . "\n";

The output is

 2005-01-05T01:35:08+01:00
 Wed,  5 Jan 2005 01:35:08 +0100

There are some small issues I haven’t found clarification for at this late hour of writing. The first is whether the day should be zero-padded in the RFC822 case. As it is now it’s space-padded.

The second is how to handle locale settings — RFC822 specifies that the weekdays and months be in the US locale. I’m pretty sure that you need extra magic in Perl for this not to work, but I’ll take a look at that tomorrow.

Yet another reason to standardize on ISO8601, I guess.

Thursday, 2024-12-09


Findall utility

A supercharged grep. Haven’t tried it live yet, just posted here for future reference.

Thursday, 2024-11-25


The tech support generation

Should it really be like this?

Wednesday, 2024-11-24


Biting the bullet

Despite the misgivings detailed here I bit the bullet and upgraded from 3.4 to 3.6. I followed the instructions in the upgrade minifaq and added the new users for the privsep services in each step (3.4 to 3.5, 3.5 to 3.6)

I’m a bit vague on how NTP is implemented now, but the machine is simply a terminal and having the correct time is not essential.

The installing and upgrading docs on OpenBSD.org have much more emphasis on using packages (i.e. pre-compiled binaries) instead of ports (basically, a make skeleton for installing an app from source) than before. This is interesting, as I recently ran across this amusing page lambasting those clueless lusers who insist that compiling everything from source is the be all and end all if Un*x computing. I felt a bit stung by this page, because in the past I have enjoyed cding to /usr/ports and compiling from source. It’s been painfully slow on occasions, but it’s felt more real.

My guess is that the OpenBSD community, in its usual level-headed, no-nonsense way, realised that the docs were leading people astray and simply said “use the packages” more clearly. So from now on, I will.

Next up is the Ultra5, which needs a serial cable. Someone at work borrowed it a while back and now it’s gone, so I have to dig up another one in meatspace. Sigh.

Friday, 2024-11-12


Disenchantment

Yesterday I realised that both the Stinkpad at home and the Ultra5 at work were running OpenBSD 3.4, 2 point releases behind the current release. Browsing through the upgrade minifaq I found that the time-honoured procedure of updating by compiling the source tree is deprecated.

So now I have to find a floppy and a serial cable for the Ultra, and try to find out which PC-card that I can use to upgrade the Stinkpad. Then I have to get the install floppy, upgrade the userland, then upgrade /etc, and finally re-install ports.

Sigh.

I’m so tired of this. No offense to the OpenBSD team, but I can’t be bothered anymore. But I also don’t want to go the Debian way on the lappy and lose all my customisations (X, desktop stuff, Terminal font…. the list goes on and on).

Maybe it’s time to get a Mac.

Wednesday, 2024-11-10


Linux font primer

Good roundup. I haven’t played with fonts in Un*x for a long while. My current desktop only runs at 800x600, and I nearly only use terminals there anyway.

Tuesday, 2024-11-02


Take that, RIAA

From the article:

“The Copyright Owners urge a re-examination of the law in the light of what they believe to be proper public policy, expanding exponentially the reach of the doctrines of contributory and vicarious copyright infringement,” the court wrote. “Not only would such a renovation conflict with binding precedent, it would be unwise. Doubtless, taking that step would satisfy the Copyright Owners’ immediate economic aims. However, it would also alter general copyright law in profound ways with unknown ultimate consequences outside the present context.”

Exactly.

However, this means that the RIAA/MPAA will continue to go after individual file traders, instead of trying to cut down the software behind the networks.

Content-Type soup

So here I am, validating all my pages as XHTML 1.0, when I read these links:

  • Content-typing XHTML
  • Sending XHTML as text/html Considered Harmful

Basically, XHTML 1.0 isn’t mature enough to use on the web. Use HTML 4.01 instead.

The problem is that I’d like my blog to be readable on mobile devices, who expect XHTML content. And the mod_rewrite trickery mentioned is way overkill according to me.

Who knew it was such hard work being a good Netizen?

OpenNTPD released

This just hit my inbox:

OpenNTPD 3.6 has just been released. It will be available from the mirrors listed at http://www.openntpd.org/ shortly. This is our first formal release.

This is really cool. NTP is the Network Time Protocol, useful for making your computer as accurate as an atomic clock. Essential for logging stuff across the network, detecting net anonomalies, et cetera. But it’s also complex and hard to get right. I’m sure the OpenNTP team have applied their usual mix of code auditing, clear coding, and crypto integration as in OpenBSD and OpenSSH.

The OpenBSD project is fast becoming the OpenTLA project — freeing the world, one protocol at a time.

Update: changed the title to reflect the correct project name: OpenNTPD.

Saturday, 2024-10-23


Gmail backup gotchas

Thanks to Rafe I have a shell account on symbiandiaries.com from where I host this blog.

I hacked up a quick script that tar-gzips my blog, the plugins dir, and some other files and mails the resulting file in an attachement to my Gmail account. After about a month, I delete backups that are too old.

This presented no problems, as the file was usually under 700 kB. Being a belt-and-braces kind of guy, I keep a copy of the file on the symbiandiaries.com account.

Today I received a warning mail from the system warning me that the account was nearing it’s quota limit. I quickly discovered a number of 35 MB files in the backup directory. I had backed up the movies from the cruise two weeks ago.

I fixed this via the --exclude directive to GNU tar, deleted the offending files in my account, then logged into Google to check how they were affecting my 1 GB quota there.

They weren’t affecting it at all. They weren’t there.

Obviously, Gmail blocks mails with attachments larger than a certain amount. I can’t argue with that, it’s their system, and sending big attachments via SMTP is evil. But it lulled me into a false sense of security, because for nearly a week, I had no backup of this blog.

The lesson here is don’t try to use a system for something it’s not designed to handle. I’ll continue mailing my backups to gmail, but I’ll be watching them carefully for size from now on.

Friday, 2024-10-22


Used iPod

Seen in a Usenet .sig:

 -- 
 For Sale: Apple iPod, 15 GB model, lightly used, 167 songs loaded.
 The RIAA says it's worth about $25 million.
 I'll let it go for $5 million, plus shipping.

Thursday, 2024-10-21


No to iTunes

I tried out iTunes (on Win32) today, as I’m interested in adaptive playlists (a thing I’ve been waiting for a long time) and tracking what I listen to when. But a number of things made me go back to Winamp.

  • No ogg support.

  • No “always-on-top” for the miniplayer.

  • Ctrl-M to switch sizes didn’t always work.

  • No obvious way to send a file to a remote host containing info on the song currently playing.

  • Totally random ordering of songs for some albums. Despite having id3 tags in order and track numbers in the filenames, the order was scrambled.

  • Totally confusing id3 integration — you have to choose the precise version from a dropdown containing +6 entries. Granted, this may be because the id3 seems totally fscked, but still…

On the plus side, clean interface, and kudos for being able to remove all mentions of the ITMS.

I think I can gather stats on playing habits with the same Winamp plugin I use to post “now playing” info. Adaptive playlists will have to wait a bit.

Sunday, 2024-10-10


Bring on the spam!

Well, despite my punditry Gmail is real.

And now, thanks to Terje, I have an account!

I opted for the staid gerikson, instead my university Marathon nicknames of “Baskerbosse” or “Ebola”. So, bring on the spam! I’ve got a gigabyte to fill up…

It’s chilling to think that with Google’s grip on search, blogs (via the blogging tool Blogger), social networks (via Orkut), and now Gmail, they have a pretty good way of finding out everything about your online activities. I wouldn’t recommend planning starting a company or having an affair via Gmail. But I think it’ll be a great spamtrap.

Tuesday, 2024-10-05


No Piker

For some reason (probably because I feel an itch to hack) I was thinking about Plan 9 today. So it seemed an omen that /. had a call for questions for Rob Pike, co-creator of Unix and Plan 9.

I read some of the links in the article, and this pessimistic view left me thinking. Pike’s point is that (academic) software research no longer matters. We’re in a sterile wasteland of Windows, Linux, and the Web. No new ideas are being explored.

Well, that’s fine as far as it goes, but a meme that’s brewing is the coming dominance of mobile devices and content — quite different from desktop or server computing.

These points from the article show some possible fields for research:

Only one GUI has ever been seriously tried, and its best ideas date from the 1970s. (In some ways, it’s been getting worse; today the screen is covered with confusing little pictures.) Surely there are other possibilities. (Linux’s interface isn’t even as good as Windows!)

Ties in nicely with this post.

There has been much talk about component architectures but only one true success: Unix pipes. It should be possible to build interactive and distributed applications from piece parts.

Again relevant in the mobile space.

The future is distributed computation, but the language community has done very little to address that possibility.

Who knows? Mobiles are getting more and more powerful. GPS, encryption need processing.

The Web has dominated how systems present and use information: the model is forced interaction; the user must go get it. Let’s go back to having the data come to the user instead.

Also very relevant from a user perspective. Data must come to you, when and where you want it, with a minimum of fuss.

Will academia pick up the thrown gauntlet? Lets hope someone does.

Sunday, 2024-10-03


Debian revisited

I need some way to backup the ailing windows box upstairs, whihc is suffering from an advanced form of WinXP palsy. So I grabbed an old 266Mhz box from the closet, installed a bigger disk, downloaded the sarge iso via Bittorrent and installed Debian for the first time in 2 years.

I’m using OpenBSD for the most part these days, but I couldn’t be bothered to find diskettes and boot from them, then install via the network. So I went the easy route and installed Linux instead.

Debian is still hard to understand. In some ways it’s more limited than OpenBSD — you can’t say that your box will get its network configurations from DHCP if you’re not hooked up to a network already, and the partition program is hard to fathom. The replacement for the infamous dselect, aptitude, is really just more of the same, but a bit less counter-intuitive.

But in general, I know my way around Debian well enough to get going. Now I have to decide whether just to copy everything in the “Documents and Settings” subdirectories over via FTP, or to trust the Migration wizard in Windows.

Monday, 2024-09-20


Eye candy

Thanks to Frank for tipping me off to Macdesktops.com. I now have a classic nerd desktop consisting of a pair of colliding galaxies.

Wednesday, 2024-09-01


Shit and Windows 98

Guess which is more fun to work with?.

Tuesday, 2024-08-03


Defragmenting madness

The desktop upstairs won’t start normally, and I’ve got a hunch that the hard drive is too fragmented. This is propably not the case, but Windows encourages the feeling that your system is getting crufty and needs to be cleaned. (Unlike Unices, which just putter along, maturing like fine wines:

[ ger@openbsd: ~ ]% uptime
 9:17PM  up 284 days, 13:04, 5 users, load averages: 0.21, 0.32, 0.32
[ gustaf@ultra5: ~ ]% uptime
 9:17PM  up 34 days, 14:45, 1 user, load averages: 0.23, 0.15, 0.10
[ gustaf@oddjob: ~ ]$ uptime
  9:18pm  up 42 days, 10:11, 16 users,  load average: 7.84, 6.61, 5.40

(I probably shouldn’t have used a parenthesis here.))

The question is: why do I have to defragment my hard drive manually? (and don’t mention Task Scheduler — I trust that app about as far as I can spit a rat). Why can’t the operating system — the piece of software I paid good money for, the prop keeping Microsoft’s profit margins in the double digits each freaking year, the “bastion of innovation” that each and every citizen of this planet should use instead of “viral, Communist” free software — why can’t this fabulous piece of tech handle this simple task itself?

For crying out loud, Linux, developed by long-haired geeks in Finland, never neeeds to be defragmented manually. Neither does OpenBSD.

Monday, 2024-07-19


Windows braindead wireless

I admit it, the new Toshiba is way nicer to use than my pokey old Thinkpad. But one thing bugs me a lot. We have a wireless network, and every once in a while, I lose connection to it. This is in the exact same place as where I use the Thinkpad running OpenBSD, and it never has this problem.

When Windows loses the connection, it won’t reconnect automatically because the network isn’t secure. This is a Good Thing, of course, but still highly irritating to lose all the ssh connections at once. Thank god for screen . The question is, why does the connection go away?

Tuesday, 2024-07-13


The BSD license explained

A concise definition of the BSD License.

Thursday, 2024-06-24


Historical perspective on Microsoft’s APIs

This followup to Joel Spolsky’s piece on Microsoft’s future APIs is worth reading for the historical perscpective.

Computing is older than Microsoft, and even a 800-pound gorilla one day gets old and tired.

Friday, 2024-06-18


Why DRM is bad for everyone

Cory Doctorow speaks at Microsoft about DRM.

DRM systems are broken in minutes, sometimes days. Rarely, months. It’s not because the people who think them up are stupid. It’s not because the people who break them are smart. It’s not because there’s a flaw in the algorithms. At the end of the day, all DRM systems share a common vulnerability: they provide their attackers with ciphertext, the cipher and the key. At this point, the secret isn’t a secret anymore.

Wednesday, 2024-06-16


Goodbye, aliens

I uploaded my 2,001th work unit to Seti@Home today.

That’s it. I expect I’ll hear about it if they find anything anyway.

Friday, 2024-06-11


Join the evolution

Let’s face it, Outlook Express and Internet Explorer are more or less orphaned by Microsoft today. They went flat out to crush Netscape, and now MS is resting on their wilted spinach leaves (laurels are too grand for this kind of thing).

Martin says it best, and Jim agrees. Join the evolution. Install Firefox for web browsing and Thunderbird for mail.

I’m an inch from saying “I don’t support that” when someone complains about IE or Outlook Express.

Tuesday, 2024-06-08


Near the end

As of now, I have 1,995 work units reported at SETI@Home. I’ve decided to stop at 2,000 (or more likely 2,001, since I may forget to check the status… besides, 2001 is more symbolic).

It’s been fun, but rather open-ended. No end in sight, unlike the distributed crypto challenges out there. And in the end, it’s just about egoboost — I’ve got more WUs completed than you, nyah nyah.

So I’m quitting while I’m ahead.

Thursday, 2024-05-27


Your operating system is your girlfriend

Charles Miller has written a funny post on why the Mac is so desirable. That post, and this, makes the implicit assumption that you are male.

The Mac as mistress metaphor is very good, but I find it mildly offensive to use the metaphor that Windows is a prostitute. I don’t disapprove of prostitution per se. It’s just that for this metaphor to work, 90% of the computer-using population of the world would be having most of their relationships with prostitutes.

I would rather say that Windows is a female co-worker. Not unattractive, reasonably efficient (in her Win2000/XP guise), but prone to gaffes and embarrassing behaviour that kind of makes you dread meeting her in the hall or having lunch with her.

Linux on the desktop could well be a psychotic girlfriend. I wouldn’t know, I’ve never used Linux as a desktop system, and I’ve never had a psychotic girlfriend. I do know that my laptop running OpenBSD and blackbox is a female co-worker that I would feel very comfortable with, even though I am married. Perhaps a hyper-efficient personal secretary.

Windows as a server is a female relative in a old peoples’ home who calls you in the middle of the night and rambles senilely. You’re happy to pay other people take care of her, and secretly wish that she would just die quietly.

Linux or *BSD as a server, on the other hand, is like a grandmother who is a world-class cook with a physics degree. You can always drop by her house, she is endlessly supportive and helps you with your life, without asking much in return. You love her all the more for it.

Wednesday, 2024-05-26


why I know perl

I learned Perl in my first real consulting gig at Agero. A large business directory company in Sweden wanted to synchronise their print catalogue with the Web. Additionally, they wanted an interface for customers to create their own ads on the Web. This was the sexy part of the project. I wasn’t involved there.

The synchronisation didn’t work yet, so every Monday my colleague had to take a 650 MB XML-file and feed it to a Java program that inserted the contents into a big old Oracle database running on a Sun Starfire. She was much more billable than I was, so as I incautiously admitted to Un*x knowledge I was asked if I could take over this job.

The XML was full of errors, unescaped ampersands, invalid characters… The Java program choked if it couldn’t parse the file, so you had to manually search for the error and fix it, then try again. A successful run took about 9 hours.

I started by chopping up the file into the component entries and checking for bad stuff. This is trivial, just set $/ to whatever end element suits your fancy, but it took some reading of the Perl Cookbook before I had it nailed.

Then I started looking at how to automate this stuff. I eventually wrote a sophisticated run-control program that could be started with at, and that sent email when something went wrong.

Just when I had cut down the effective load time from three days to about 11 hours, the whole project got axed. I later learned that this was the third attempt to integrate the print version with an online database.

The contractor more or less blamed the whole debacle on us, even though it could be fairly laid at bad project management and unrealistic promises from the client to its customers. Oh well.

In the middle of my next project, I was cding up from a directory over a slow ssh link and accidentally rmd all my perl code. When I called the admins of the machine they helpfully informed me that as the machine wasn’t in production it didn’t have backups.

So now I know more Perl than I really want to. But I’m still learning more every day.

Monday, 2024-05-24


the dark side of java

Anyone who reads Erik’s linkblog will be astounded about two things:

  1. damn, there’s a lot of Java projects, and

  2. how the hell does Erik do it?

The list of projects is impressive, and for me as a novice Java maintainer, a bit daunting. How can one person keep up with all this? And everyone seems to be on first-name basis, not just with the developers, but with the projects themselves. What the heck is Maven, anyway?

But it’s not just one happy family. There’s a dark side to the Java development scene, and it rises to the surface here.

This person probably has a name, but I prefer to consider him or her as a cry from the collective subconscious of those Java programmer who’re having trouble just staying on top of Java, never mind all the whimsically named frameworks and tools.

Both Erik and Russ are on the Bileblog’s shitlist. But so is everyone else.

Tuesday, 2024-05-18


serendipity

Googling around for an emacs implementation of the Blogger API, I stumbled over color-mode.el by Don Knuth, and pmwiki.el by my old university friend Christian Ridderström.

Knuth violates the emacs interface guidelines, but I guess he can get away with it. On the other hand, a celebrity deathmatch between RMS and Knuth would be something I would see on Pay per view…

The world is a small place, at least if you like emacs.

Tuesday, 2024-04-27


today’s microsoft rant

Part of my responsibilities is taking care of new computer installs at work. We have recently purchased several top-notch Dell Inspiron 8100s. These have 15” widescreen displays.

To prevent ridiculously small font sizes, Dell ships with the DPI settings set to 120. This means that fonts look bigger, but also that Internet Explorer also scales the images on websites. These appear blurry and jagged.

Not surprisingly, this is a top issue at Dell’s support forums. The “solution” is a registry hack: change the value of the key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\UseHR from 1 to 0.

Additionally, when I tried to read an article on MSDN about this, IE froze when trying to load the page.

I will recommend Mozilla for our users in the future.

Wednesday, 2024-04-14


ordering email

After a tip from Rui, I’ve started to sort my work mail (mail addressed to me personally, and the support box) into quarterly archives.

Long experience has told me never to throw away mail, and the quarter seems to be a good time period in which to ask yourself “when did I get that mail?”

Wednesday, 2024-03-31


dilbert newsletter goes html

The Dilbert newsletter has gone HTML. I guess that’s so they can sell more adverts. I wouldn’t know, because I read my mail in gnus. So this just means I have to resize my ssh window so that the text doesn’t wrap.

But the really bad thing about it is it isn’t funny.

Tuesday, 2024-03-30


fudgeability

Kasei: The Importance of Fudgability is an interesting “common sense” view on how to design an application.

Wednesday, 2024-03-24


HTML typography

Learn about the fifteen spaces defined in Unicode at this page.

Wednesday, 2024-03-03


the litany of hate

In the interest of my co-worker’s sanity, I have resolved to concentrate my hatred and loathing of Microsoft products to a five-minute period each morning.

This way, they will not be upset by my outbursts of anger at the crappiness of MS products, business practices, advertising, or general view of computing.

The actual litany is not finished, but I find the following to be restful:

We hates them, hates them forever!!!

Friday, 2024-01-23


compiling 3.4 on a sparc64

So I need emacs 21.3 to be able to use ange-ftp to update this blog. I just can’t go around ftp:ing by hand, losing all sync, missing one measly comma and having to do it again.

I download the src and run configure — it can’t figure out which arch I’m on. No problem, I get the package from the openbsd server. Hmm, can’t run, missing some libc .so file. Huh. Well, the machine should be running 3.4 anyway.

I get the src and ports packages, untar them, run the whole CVS update thing, and start to read the upgrade minifaq. Lot’sa stuff to do, but I follow the steps. Config the kernel and try to compile. Won’t even let me run make depend. Seems to be expecting a file swapgeneric.c somewhere — but that file should be somewhere else entirely.

So now I’m waiting for reply on the sparc64 mailing list. We’ll see what happens.

Update: turns out to have been some kind of problems with my CVS update. Works now after a fresh get.