Friday, January 09, 2009

xchat and DSL router woes

I've had some problems with xchat when working at home. This is on Ubuntu 8.10 (Intrepid).

I lurk on irc.freenode.net's #erlang channel (sometimes I ask embarrassingly newbie questions).

The first issue (backwards from the title) is that my home DSL router (provided by my ISP) is crap (but I don't replace it because it's free). The DSL-604T has some sort of issue with some ip_conntrack settings being too low, so that when it receives too many incoming connections at the same time or within a short amount of time (e.g., when running a peer-to-peer client, or when in the #erlang channel, apparently, although I don't understand why that is) then the router hangs and I need to power-cycle it.

There are firmware upgrades for this model, but I can't upgrade the firmware since it might then stop working with my ISP (the ISP has custom firmware in there).

This isn't even about running peer-to-peer, it's about an IRC channel about a programming language!

So I solved that by setting up screen to open an ssh session (at screen #9) to do an auto-port-forward to my work computer. ssh -L 8001:irc.freenode.net:8001 my_work_computer. Then I just have xchat connect to localhost:8001. It's simpler than figuring out how to NAT requests to port 8001 through my work computer and cheaper on bandwidth than running xchat in vnc at work (my ISPs bandwidth caps have increased by a factor of 3 since i first whined about the caps, but I still hit the limit before the end of the month).

So then I remembered that xchat on ubuntu sucks because there's no graphical way to turn off join and parts messages. And on a channel with a lot of lurkers (like #erlang), there are a lot of those.

A quick google search shows that the thing to do is

/set irc_conf_mode 1

And I can have that done automatically by:
Xchat|Network List|Select Network|Edit

and setting the Connect command to "/set irc_conf_mode 1".
It'd be nice if it were settable in the graphical interface, but
since it isn't, this is a neat workaround.

Saturday, January 03, 2009

Toshiba Satellite A75-S231 bios password clearing

I've had a heck of a time trying to get a Toshiba Satellite A75-S231 working well with Linux. I first received this laptop (secondhand) around 2006, I think. I couldn't use it productively in Ubuntu (I think I might have checked some other distros, certainly I checked Knoppix too) back then. Whenever I would do something compute intensive it would shut down. It seems the kernel wasn't controlling the fans and it was overheating and the BIOS would turn it off.

I could sort of limp along and use it if I set the cpu scaling to its lowest speed. But that was still 1.8Ghz (no 800Mhz speeds on this CPU). And even at 1.8Ghz, if I did anything challenging that would use 100% cpu for a few minutes, it would shut down.

So I gave up. For a while I lent the laptop to someone who used XP on it, and after that it was stored in its laptop case for a year or so.

Well this year we moved to New Zealand, and since my sister-in-law was coming over, and I'd forgotten what the myriad issues with the laptop had been, I asked her to bring it with her.

I tried to install Solaris 10 on the ubuntu partition. That didn't end well. I'll try it again, but it looks like Solaris 10 probably doesn't know how to run the fans either. I then installed Ubuntu 8.10 (Intrepid). That installed and it didn't hang. It looks like linux got the fan working sometime between Feisty (I think) and Intrepid.

I had another problem with the laptop. I had received it with the bios security password set and my brother, who gave me the laptop, didn't remember what the password was. Back when the laptop was shutting down due to power, I'd thought that if I could get into the CMOS setup, I could find a setting so that the fan would always run if it was on AC power. But first I had to get into the BIOS.

Well, this year, with Intrepid working on it, the urgency of getting into the BIOS receded. I still wanted to clear the passwords though. After a lot of searching, I finally found:

Toshiba Laptop password deletion

On page 8 that shows the jumper to short to clear the BIOS password. So finally I can get into the CMOS setup. As it happens, there's no "keep-the-fan-on-all-the-time" setting. As with many (all?) laptop BIOSes, it's pretty minimal. I can't even set how much RAM is shared by the video subsystem. It's good to finally be able to see what's in there though (and set the boot order of the drives, fortunately, previously the boot order had CD-DVD-Rom first, which allowed me to install Linux in the first place).

This laptop still has other problems. I've never liked how insensitive the Alps glidepoint touchpad is, and the keyboard is pretty weak (there's no right Ctrl key, and I always use right Ctrl instead of Left Ctrl, the ~` key is beside the space bar, which is stupid). But that's the case with all laptop keyboards anyway, compromises are made and they all suck. I can deal with the keyboard though, mostly. And if I can't stand it anymore, I've got a cheap external keyboard I can use with it. I still hate the touchpad, but some tweaking of gnome mouse settings has the mouse being tolerable. I'll probably still buy an external mouse and use that though. The laptop is big enough (and I'm switching to it because I like the widescreen) that it's really a desktop replacement. For travelling, we'll bring sol's much lighter (and still widescreen) HP Pavilion.

As long as I'm going to use an external keyboard/mouse, I'd love to have this Adesso keyboard with built-in touchpad (well, assuming the touchpad is any good, but it probably is, most touchpads are, the -one in the Satellite A75-S231 I've got is just bad, not sure if it's bad for all instances of that model, or if I've just got a dud). I can't find that keyboard in New Zealand though, and frankly, I won't spend that much for a keyboard+mouse. I'll just grab a cheap external mouse.

I'll keep my other laptop (a Durabook) for a spare. Or probably for Solaris (not that I need Solaris, but I might as well play with it and get familiar with it, I'm sure I'll use it since the big client my department does software development and management for is big on enterprise everything).

Wednesday, December 24, 2008

Photobucket bulk uploader applet now works in Ubuntu

It's probably been close to a year, or a bit more than that, since I gave up on the Photobucket java bulk uploader. Back then, the applet worked in Windows but photobucket didn't care enough to make it work on Linux (there were forum posts about how it didn't work on non-Windows boxes).

I did upload some files from either my wife's windows partition (which we keep for legacy devices that work only in Windows, e.g., a Sony NW-HD1 that was given to us and that doesn't seem to have any linux support at all). I remember using windows under vmware to test the bulk uploader too.

I recently upgraded to Ubuntu 8.10 (Intrepid) and I'm glad to report that the bulk uploader now works with the Sun Java 1.6 JVM. I don't have 1.5 installed just now, so I don't know if it'll work with that. But I'm glad that I've finally got a working setup.

Friday, July 04, 2008

svn:externals and git

A previous post has a comment from Jakub Narebski pointing me at git submodules. A quick google points me at: Andy Parkins' post on git submodules and svn:externals on kerneltrap.

That's cool. And if the anyone on my subversion using team ever uses svn:externals I'll be glad of the workaround. I hope, though, that git-svn support for svn:externals will mature before then :-).

I'm very happy with how flexible and powerful git is, and how I'm able to work on our svn repository while taking advantage of git capabilities that aren't in svn or are very painful to use. But I'm drowning quite well in java and erlang just now, and I'm not going to be able to spend time figuring out git nuances. Much better to sit around minding my own business while the product matures :-).

Wednesday, June 25, 2008

git-log --name-status

I've been using git for the past month (I just realized that today was my first whole month at work) and I'm very happy with it. I'm used to svn (and before that, CVS) and I'd gotten around the ugly (so much so that I never used the version discussed in the subversion book for versions below 1.5) merging in svn by using svnmerge (which, while not making merging painless, did make it sufficiently less painful that it was actually usable).

For a long time I looked at git but never actually dived in head first since casual acquaintance with git made me feel dumb. Now that I've been using it for a month though (well, with git-svn, since my current project uses svn), I'm getting used to it, I've got the basic workflow down and I'm slowly learning more advanced workflows.

For a long time too I didn't like git because I thought it didn't have an equivalent to "svn log -v", that is, show the revision number, author, message, and the affected files. git-log showed the first three, but not the last. I was probably looking at an early version of git though, this would have been in 2006 or so. Sometime in revision 1.4, git-log got --name-status, but I didn't notice. Anyway, it required -r if you wanted to see recursive changes. 1.5 has better behavior now. --name-status shows filenames and what was done to them (deleted, added, modified, etc), and the -r is implied.

There are still some things I'm not clear on (e.g., how to do the equivalent of svn:externals, which is probably a SMORTD, a simple matter of reading the documentation). But given that the main VCS at work is SVN, how to work with svn:externals with git and git-svn :-).

I'll get there though. Although it may take a while since, in fact, we don't use svn:externals or similar in our current projects (in fact, the reason I decided to use git and git-svn was because we don't have the regular trunk and branches structure either, and being the new guy, I didn't want to be creating a test branch for myself at the root of the svn tree :-).

In any case, git-reset and friends (i haven't tried the --interactive options to git-commit or git-rebase and friends yet, but I will, one of these days) are great helps and because of their (admittedly, simple) enhancements to my workflow, I'm not going to be switching back to pure svn.

Our project isn't so large that the git vs svn speed difference is a factor, but I have (at a previous job) worked with sufficiently large trees and branches that the speed of git would have been a huge help. On the other hand, as smart as my co-workers were, at that job, I think that pushing git into the organization would have been too big a challenge in the time I had. svn was certainly the better choice there (since svnmerge was available, before I learned svnmerge, I spent far too much time hand-merging between branches).

Sunday, June 08, 2008

Recovering, not so gracefully

My laptop's DVD-RW drive stopped working a month or two ago. I didn't mind much since it's not essential. I can always use my wife's laptop when we have DVDs for our son to watch. I ordered Ubuntu Hardy desktop and server CDs via shipit and I got those a few weeks ago. I did want to install Hardy, but it wasn't a big deal, so I waited until I could figure out how safely.

The only thing I really *needed* the DVD drive for was for booting rescue DVDs. I didn't want to try to do an online Hardy upgrade if I couldn't go into a rescue DVD if something broke and the laptop couldn't reboot (that's happened to me once or twice, on doing an online update).

I downloaded the RIPLinux iso and installed it to my USB flash drive. I thought I could use that for rescue. Unfortunately, when I tried to do some grub surgery on my laptop, I made it unbootable. Mainly, because I'm not intimately familiar with grub (I'm a lilo man, myself, and the only thing I really dislike about Ubuntu is that it's inherently grub-centric), but also because it thought my hard drive was at /dev/hdc but Ubuntu sees it at /dev/sda. I couldn't fix that either since RIPLinux would boot and assign the flash drive it was booting from to /dev/sda.

Fortunately, when I went to Pendrive Linux and saw a tutorial on how to install Hardy onto a USB drive FROM the ISO. The recipe there worked flawlessly and I've now got a flash drive that is an Ubuntu Hardy installer as well as a live Linux. If I go to an internet cafe, or someone else's computer, I can use it and not worry about the viruses they've got running around in their Windows installation.

So I've got Hardy installed now. I'll bring the laptop to work tomorrow, update, and install all the development packages I need that aren't on the default Desktop install. I work at Catalyst IT Limited. Online updates and apt-get are very fast at work since Catalyst hosts the New Zealand mirrors for Ubuntu and Debian (and a bunch of other distributions).

Next, I need to figure out how to install OpenSolaris from some device other than the install CD :-).

Saturday, May 31, 2008

Java and Erlang

I just got through my first week at work. It's a great environment, lots of geeks around. My primary project is in java, and I'm taking some time to re-acclimate. I'd avoided java in the last 5-7 years or so because I thought it had gotten over-complex. I have now just jumped into the deep end :-). I'll survive, of course, and maybe even learn something. As to whether what I'll learn is going to be worth the trouble, I'm not sure. It probably will be. Although it's going to be painful for a few months.

My secondary project is to be the backup (or go-to, I'm not very clear on that yet) guy on a project that was done in erlang. I've been interested in learning erlang, so I'm certainly interested in doing the project. On the other hand, the guy who implemented it (and who has since left the company for a job in Paris) gave me an introduction to the system and it was overwhelming.

I've just jumped into the deep end twice. I'm going to be gasping for air for a while.

Friday, May 23, 2008

Tom Lane pics

I've always wondered what Tom Lane looks like. He's a great presence on the postgresql mailing lists, always informative, always polite and knows incredible amounts of postgresql implementation details.

Now there are pics of Tom Lane from PGCon2

Ehem, apparently a Mac user :-). I'm not going to be swayed to switch to Mac just because Tom uses one. Well, maybe a little. But not enough to buy one :-).

Friday, May 16, 2008

Java

I just got an offer of employment at New Zealand's largest open source oriented company. I'm looking forward to working with 80+ geeks. I'm going to be working in Java though, with some PHP. I've worked with java a lot in the past, but I'm not up-to-date on the latest developments. As it happens, I've been told that most of the code is still 1.4. That's a mixed blessing. Some things in 1.5 and later are nice, but a lot else is horrible. Still, I'm going to miss autoboxing.

I've got a week to learn some basic things. I'm going to see how much of Java, Tomcat and Spring I can learn in 9 days or so :-)

Friday, May 09, 2008

Nontechnical, but must-post

OK, there have been a whole slew of articles about recent discoveries regarding platypus genes. I didn't post about them because it was enough that I read about them (frankly, I only read one of those links, I only searched for the other links so that I could have a whole slew of links here :-).

I finally broke down and posted about the discoveries though because, after all, who can resist a headline like this?

Platypus Genes Hint at Human Scrotum Origins


Of course, Pharyngula on this whole thing is better. The original study would be even better, but I am avoiding embarrassment by ignorance, and also sleep by boredom, so I'm not reading that :-).

Thursday, May 08, 2008

GW Bush: Impeach, Prosecute, Convict, Execute

I've got "Impeach, Prosecute, Convict, Execute" in my email sig, in reference to that Abject and Miserable Failure, George W Bush.

I'm taking that part off temporarily though, since I'm sending out job applications. No need to ruffle the feathers of any strongly anti-death-sentence hiring managers out there :-).

I had also taken off URLs for this blog and my other me since someone pointed to a spamhaus post that indicated it might be used by yahoo.com (and related properties) as an indicator of spam. In fact, I added the impeach, prosecute, convict, execute text because I had removed the blog links and wanted something to take their place :-).

Well, when I stop emailing job applications, I'll put something back in the sig.

Wednesday, May 07, 2008

Finally, Debian on NSLU2

I won a linksys NSLU2 at a TradeMe auction last month.

I couldn't get it running immediately since the power supply that came with it wasn't the right one. The seller had bought it in Australia and I think he got a unit where the power supply had been switched (maybe it was a U.S. unit and the australian seller replaced the power supply since the outlet jacks are different). In any case, Phil (the seller from whom I was buying), didn't know the power supply didn't work since he never got around to turning it on.

It took a while to get in contact with him (yahoo was filtering my outgoing email to Phil, considering it spam for some reason, probably because of some text on my sig). After some back and forth we finally sorted it out and, he sent a replacement power supply, we had to have that replaced again because the jack was the wrogn size too, and we finally got the right power supply and I got it working today.

I immediately installed Debian on it. That does take a while to install since the CPU is pretty slow, so I guess unpacking, installing and generating cryptographic keys and such take a while. I'm going to de-underclock the NSLU2 one of these days. Apparently, the CPU in there is forced down to half its speed. I can remove a resistor and double the speed. On the other hand, I'll take my time since I have a history of breaking hardware :-). Best to take my time and do things right :-).

I had planned to have it boot from one of my 60GB external USB drives, but there was a problem with that. It thought the drive had bad sectors. It didn't though, I ran badblocks on it (well, actually, mkfs.ext3 -c -c) and there are no media errors. Maybe it's just the low quality drive enclosure making the drive seem marginal. I just installed debian on a flash drive and then (with some work with fdisk, mkfs, mkswap, etc) copied the flash data to the external hard drive. The Slug is now booting from the 60GB drive, after those gymnastics.

I've got a self-powered Maxtor hard drive enclosure with two full size (3.5") drives in there. I'll use that as my secondary drive for the NSLU2. I used a power meter to measure power draw by my laptop, by the NSLU2+USB laptop drive, and by the Maxtor drive, and the Maxtor drive takes so much power I don't want it to be on all day :-). The NSLU2 with one external laptop drive only draws between 7 and 11 watts. That's very nice. The Maxtor enclosure, by itself, draws 26 watts even when there's no activity. That's not so cool since my laptop draws less than that at low CPU speed, and only around 48 watts at high CPU speed with the CPU fully loaded.

I've got just a basic install on the SLUG for now (well, I installed build-essentials, although there's not much profit from building from source on a 133Mhz CPU :-). I'll build it up slowly, probably installing an openvpn server (I've got openvpn on my laptops now, and firewall rules on the router to let openvpn through) and possibly moving my postfix+dovecot+fetchmail+ypops+bogofilter+spamassassin setup to the SLUG.

My thanks to ian sison for pointing me at the NSLU2. He told me about it maybe a year ago, but my wife and I were in the midst of preparations to immigrate to New Zealand, so I didn't try to buy one then. I've had a few months at home, taking care of Timmy and after losing one or two trademe auctions on an NSLU2, I've got one now :-).

I'd love to upgrade the memory on this NSLU2 too, but I can't do it, so I'll need to see if I get to know anyone with the requisite soldering skills :-).

Thursday, April 17, 2008

regionset is cool, thanks Cedric

I've moved to New Zealand with my family and after a few weeks getting all set up, I went to the library and got a library card. I then borrowed some children's DVDs for my son to watch occasionally.

I found, though, that I couldn't use them on my laptop. Fortunately, we left the original windows on my wife's laptop (but dual-booting to linux, which she uses almost exclusively). I found that I could play the DVDs there.

After two weeks of messing around with this I finally posted a question on the Philippine Linux Users Group mailing list and got exactly the answer I needed (this answer probably also helping dido sevilla, who had the exact same problem). It seems my DVD drive has a region setting hardcoded into it somewhere. If playing a DVD with a different region setting, it's necessary to change the hardcoded region. Unfortunately, there's a small number of changes available. Beyond that, I suppose it won't change anymore. Fortunately I didn't bring any US region DVDs with me, so I won't have to worry about having one laptop be for US DVDs and another laptop be for NZ DVDs :-).

sudo apt-get install regionset
sudo regionset

and then choose the region (4, for Australia, New Zealand).

For Phil Wynn

Hi Phil,

I've emailed you but I see no reply. Possibly an anti-spam filter is eating things, so I'll post the text of my reply to you here and send you an innocuous email with the link.

---- message follows ---
Re: Trade Me Auction: 148561162 -- Linksys NSLU2 Network Attached Storage (NAS)
From: Gerald Quimpo
To: "Phil Wynn"

Hi Phil,

On Monday 14 April 2008 13:16:36 you wrote:
> Just checking, did you receive the parcel?

Yes I did. I also emailed you, but possibly that got lost (or eaten by a spam
filter) or something.

here's what I said then:
>>>>
>>>>On Wednesday 09 April 2008 07:59:15 you wrote:
> If you dont receive the package within a couple of days, please let me
> know.

I received it the other day. Didn't get around to looking at it til
just now.

Did you get this working at all? Where did you buy it? I've been trying
to get the power jack in and it won't go in. It's not that it's too tight,
it doesn't even seem to be the right size (although it *looks* right,
it won't go in at all though, even when I exert some force).

Do you have the receipt from when you bought it? Might need to
have it repaired or the power pack replaced.
<<<<<

oh, and I signed it "tiger", which is my nickname, but possibly why you
might have ignored it :-).

by the way, i think i'm mistaken about the jack being the wrogn
size. instead, the inner part of the power conection (the part in the
NSLU2 seems not to be a regular cylinder. instead, most of it
is a cylinder but part of it seems to have some metal protruding
or welded on so that the power cable can't mate with it. but i'm
not really very sure about all this, weak eyes and i have no
magnifying glass available.

Gerald


---- message ends ----

Friday, March 28, 2008

Switching to Kmail

I've used Gnome Evolution for many years. I've looked at various email clients over the years (sylpheed, kmail, thunderbird, and very long ago, pine, mutt, elm and mail) and Evolution had the right mix of features that I needed.

Mainly, I stuck with Evolution because it has realtime-updated search folders. That is, it's possible to create a virtual "Folder" that is actually a search into other real folders, with logical criteria. It's like a view in SQL.

I used that for having an "Everything" folder, which was a view into all emails in all real folders (because I cut my email apart into many folders, for easier management, and so that I don't have a single large Inbox with 50,000+ emails in it). I also used it for showing unread email for some very voluminous mailing lists. In evolution, it's not convenient to find the next unread message (well, I never spent the time to find the keyboard shortcut for that, although there probably is one). So I just created search folders that showed only unread messages.

An upgrade to ubuntu gutsy's Evolution has left evolution slightly unstable though. Evolution would crash for no reason, or it would crash because, just after starting it, while it was fetching mail, I would click on the fetch mail icon and it would get confused. Evolution also feels like it's not being maintained. That's no big deal since it's already pretty complete, but I've been seeing it get unstable as crash bugs aren't fixed while some new features get in. So I decided I needed to switch to some other mailer.

I looked at Kmail and Thunderbird. Sylpheed-claws doesn't install cleanly as a package in Gutsy (or in my config, anyway), so I just ignored that.

Kmail has pretty much all the features I needed (and some I wanted):

1. Choice of maildir or mbox (I tested maildir last night on reiserfs and xfs,
I expected reiserfs to be much faster than xfs. Was very surprised to see
xfs (1.5 minutes) beat reiserfs (2.5 minutes) in a simple little "read many
little files and search for a string" benchmark). Fortunately, my /home is
already a luks encrypted xfs.

2. Strong mail filtering functionality. A nice surprise is the automatic
anti-spam support. It supports both bogofilter and spamassassin, and
it creates filters which will register an email as either spam or ham
using the bayesian classifier in either of those. The filters just
classify the email as spam or ham and then either move the email to the
spam directory or keep it in the current directory. I had scripts to
do that in Evolution. Didn't think to do it with Evolution's built-in
filters though.

3. Search/Virtual folders.

It's slow though. Slower than evolution at most things, and I can make it pause with some large tasks (evolution seems to be much more multi-threaded or multi-process or whatever, in any case, it's harder to make the UI pause). And the Search/Virtual folders have a stupid bug (or maybe it's a feature, I don't understand how that could be though). When the preview pane is displayed, clicking on a virtual folder makes all unread email in that folder automatically change their status to read. This is bogus. It might make sense if the email that is selected in that folder is marked read, but not ALL of them. There's a bug report on it. I don't know why it's a wishlist. I think I saw this bug already the last time I looked at Kmail and I backed off from switching then.

This time I switched anyway because Kmail has keyboard shortcuts to go to the first, next, prev,last unread emails. That's enough of a workaround that I can deal with switching. I'll be able to work with my large mailing list email folders. I won't be using Saved/Virtual folders for much else and I can wait for this bogosity to be resolved.

I looked at Thunderbird, but there are too many things missing. For one thing, I can't run a filter on a set of selected emails. As far as I can tell, one has to run a filter on a whole folder. Sometimes though, I need to do subset filtering (particularly when developing a new filter incrementally, on a very large folder, so that whole folder filtering is very slow). I can't run external commands in a filter (can't do that in the filter definition either in Kmail, but you *can* do it in the filter action. Thunderbird can't do it in the filter action either). And there's no maildir support. maildir support is important because if the mailer gets unstable, you lose just one or a very few (depending on number of working threads) messages. An unstable mailer that uses mbox can lose the entire mbox if it really loses its mind. In fact, the reason I decided to switch away from Evolution is because after a security upgrade (pilot error, I had it run the upgrade while evolution was still running, I should have stopped the client) it deleted all email in my inbox with dates after Dec 7, 2008 (approximately, I forget the exact last date).

I may look at Thunderbird again in a few months, particularly if Kmail doesn't fix that bogosity.

Wednesday, March 19, 2008

Loyalty is short-lived

While Telecom's customer service is outstanding, the actual internet service isn't that great. In particular, the bandwidth cap (in my case 3GB/month) is the sum of downloads and uploads. This isn't what I was told at the telecom sales office we subscribed at. I'm sure the telecom sales guy was just confused. He wasn't trying to lie to us, he just didn't know that the cap is the sum. He thought uploads weren't counted at all and that only downloads contributed to the cap.

As it is, this is going to put a cramp into my posting Timmy Videos to youtube. Or pushing pictures up to photobucket. With me, objective measures win over soft, touchy-feelie values. All things being equal, I'd stick with Telecom because their customer service has been great. But if some broadband provider were to suddenly provide internet access without caps, or with higher caps or no upload limit, then I'd switch immediately. Or maybe wait two to three months for telecom to catch up, and if they didn't come up with a competitive offering, then switch. Touchy-feelie good feelings are great. But bandwidth trumps touchy-feelie :-).

Tuesday, March 18, 2008

"Lost" some email

In a glitch that I don't quite understand, I "lost" some email. It's not really lost. I keep a copy of everything on gmail. So it's still there. But it's very inconvenient to try to restore what was lost because gmail doesn't have a flexible way of saying, "reset the end of my already-downloaded list of emails to this particular email". Instead, I can either download everything again, give up on the "lost" email, or workaround somehow.

I'll probably give up. The email is on gmail, so I can always get back to it. I could workaround by forwarding all those emails to myself and then, on the receiving side, editing the From: and date sent of each email. But that's no fun. I certainly don't want to download everything again because I'm in New Zealand, and broadband here has a bandwidth cap. Mine is 3GB/month. When I go over, download speeds will drop to 64kbps or so. That's not too bad, but this isn't important enough for that.

I think that evolution got confused because evolution was running, and then I ran Ubuntu's automatic updater and evolution got updated. Possibly there was some confusion regarding evolution-data-server or similar. That'll teach me to keep programs running which are being updated. I think, though, that this is the first time I've been caught by updates updating running programs. Ah well, live and learn. Or maybe not. I'll probably forget and this'll happen to me again.

I've been putting off running postfix, fetchmail and an imapd daemon locally. I've done that in the past, it helps with reliability, automatic backup and spam classification with .procmailrc, etc.

I think I'll put it off some more though. Gmail has a copy of all my mail, and I can get a relatively recent copy of my Inbox (the only file affected) from my rdiff-backup backups. That'll bring my Inbox forward to sometime early this month. Then I'll just have about a week and a half of personal mail left on gmail. I would probably then forward those to myself since there'd be few enough of them.

Friday, March 14, 2008

Quality Service from Telecom

I've been busy with moving to New Zealand with my family. This process has been going on for close on two years now. We arrived a 5 weeks ago, my wife is now working at the foremost open source oriented software development company in New Zealand, we've moved into a new rental home, things are moving forward quickly.

As part of moving into our new home (it's not an apartment, although it is a rental, since it's a standalone house with a little garden and garage) we had the utilities registered in our name, and we subscribed to Telecom for our home phone. We also went ahead and subscribed to telecom's broadband plans. This was mainly for convenience. New Zealand has naked DSL, it's possible to get DSL without a landline phone service. We thought we'd just go the convenient way and get both, and then switch later as necessary.

We probably won't now though, because I've been very happy with Telecom's call center service. I rang the call center and ordered the broadband service. All of this was done over the phone. I then rang again because I wanted to get some dialup service for the week or so that it would take to receive the ADSL modem/router. First of all, on the broadband, I was told that they had a promotion for online subscriptions. Online subscribers would get free 2 months of service. But the call center operator said that we'd get the free 2 months of service anyway even though we weren't subscribing online, because she'd just enter the order and we'd get the promotional 2 months free. She also said that Telecom had a promo on the broadband hardware package. There was an NZ$100 discount on the package (ADSL modem/wifi router and a few ADSL filters) so it would only cost NZ$100. Good deal.

I later called Telecom because I wanted to subscribe to their dialup service for a month, just til the DSL was up and running. I was told that normally broadband subscribers were given free dialup accounts to use until DSL was up. Good deal.

The Telecom call center support person later called me because he said he'd reviewed my broadband application and there was something wrogn with the order for the broadband router. That's pretty good service, good initiative.

So finally I called the call center again, spoke with someone who sounded Filipino (I guess they don't hire just Kiwi accents) and she investigated the error, and fixed it by removing the old order and re-creating it. I had to do the third call since the second support center person (the one who discovered the problem) was in the dialup support section and couldn't help me with broadband.

Altogether, it was very good to see really good, pro-active, genuinely customer satisfaction oriented service in action. I may still jump ship to some other broadband suppliers, but the barrier to jumping ship is now higher than it used to be.

Friday, February 15, 2008

WPA finally

My family and I are in New Zealand and I'm happy to see that, where I'm staying, the telco that installed the DSL (and all wifi-routers that I can see in range, between 3 and 9) have WPA configured by default.

They have to do that, of course, because most NZ broadband has bandwidth caps. For instance, where I'm staying, the cap is 3GB per month. If we exceed that we don't get slapped with excessive per MB charges, nor is the bandwidth cut-off, but speed will drop to 64kbps.

Clearly, leeching off someone else's wifi signal could be very profitable (in the sense of having someone else pay for the download) and very anti-social. So the telco is pretty much required to (1) provide the wifi-routers [because customers will connect wifi anyway, better for the telco to do it right) and (2) make sure the wifi-router is configured to be secure.

It took me a week to get wifi on my (and my wife's) laptop working though. I got very rushed instructions on the password, and then my host left for a week. I couldn't get the password to work, nor any of the obvious variations I tried. My host just got back from his weeklong trip and we worked out the password after he looked in his documentation. After a bit of fiddling with wpa_supplicant, I've finally got it working. As it happens, I *did* try the password that finally worked, but I guess I had other wpa_supplicant settings not quite right.

This has been a good experience. For a week, we just used an ethernet cable to connect to the router, so we were still able to use the internet, but in the meantime I've learned much about the nitty gritty of wpa_supplicant.

In another life I kept my wifi-router open (and then moved to mac auth) because I was interested in watching what people would do with it (and if they'd sniff and spoof vald mac addresses). With bandwidth caps as implemented in NZ though, I'm clearly going to have to use WPA, so it's a good thing to get a handle on how to get it working, for when we rent our own apartment and get our own broadband.

Monday, February 04, 2008

encrypted filesystems finally

I've been waiting for linux encrypted filesystems to finally become easy to use. They finally are. There are a few sweet and simple instructions online (the first one I used was similar to the one I finally used, but didn't mention /etc/crypttab, so I hacked up the ubuntu init files to manually luksOpen).

Steve Parker finally has a very easy to follow discussion on how to setup encrypted filesystems on debian. This works perfectly for me on ubuntu, except I didn't do the encrypted root thing. I only encrypt /home and my external backup drives for now. I'll probably do encrypted root after testing a few times on vmware.

Thursday, January 24, 2008

internet cafes and viruses

I went to the corner internet cafe to have a map printed. The map was a .ppt and when I saved it to the USB disk the .ppt became a .swf. I didn't know this, and at the cafe they couldn't open it, so I went back home to save it as a graphic. I was in a rush, so I just took a screen shot of gmail, saved it as a .png and brought it back to the cafe.

When I saved the .png back to the USB flash drive I saw that there was an autorun.inf file in there. Clearly I'd been infected by a virus. I went ahead and worked with the USB drive though since I don't care about windows viruses. I *could* get infected through wine, I guess, but I don't have that configured to autorun anything from devices. I don't even know if it *can* be configured to autorun programs and installers from removable devices.

The map got printed and the party was great fun.

I don't care too much about viruses since I don't use windows and am probably fairly immune. The thing to take away from this though is that windows viruses are everywhere. even if the windows user is 100% up-to-date with his/her antivirus definitions and runs two or three anti-virus programs (thus slowing down the computer by a LOT, buy twice or thrice the computer you'll really need if you want to run windows and antivirus) and practices safe computing practices, virus infection is probably inevitable (if only because, at some point, you're going to receive a real work related document from someone who isn't as virus safe as you, and they got hit by a zero-day virus and passed it on to you on the same day).

It's probably possible to go a year or two without virus infection by practicing ultra-safe windows computing. But everyone will get infected at some point. Ultra-safe windows computing is a pain too (never open attachments from anyone, never use removable media, never run as root, never go online to the internet, or if you do, never run flash, activex, java, javascript, don't run IE) and regular users just won't do it. Only geeks can be really safe from viruses, and even they are likely to weaken windows security because it's just too inconvenient. Oh yeah, don't visit pr0n sites, don't download and install free programs, etc.

Windows. What. A. Pain.

Friday, January 18, 2008

Rude Poisoned Well

My wife, son and I are going to New Zealand in a few weeks. We applied for Work-to-Residence as Skilled migrants, were accepted and are on our way.

My wife, as principal applicant will work, while I, as burned out office worker, will take care of house and home. I am very liberated, but also trepidated :-).

We've got a program of sending out one work application per day while we wait for departure day (or, as ian sison would say, deportation day :-). Today sol sent out an application with a painstakingly crafted cover letter which got a rude reply to read the job specification, NZ residents only.

Either the employer didn't read to the end of the cover letter where it says that we're allowed to work in NZ (and just sent out a one sentence, accurate but rude reply), doesn't think that WTR matters because he means *currently*in*new*zealand*right*now*, or possibly is reacting rudely because the well has been poisoned by too many non-NZ applications who want the employer to work out their work visas.

It could be any of those, or any combination of those factors. In any case I'm glad that this was one of the jobs that I'm not enthusiastic about. We won't mind if the employer sticks by his guns and won't talk to us anymore since I doubt that my wife would actually want to work with anyone so rude. His loss too, my wife is an excellent developer with 15 years of software development experience in 4 languages.

Wednesday, January 16, 2008

exploding gifs

I saw If WWII had been played in Age of Empires... on Reddit. That gif needs to be exploded into its individual frames. It slows down my computer something awful, and some parts of it run fast enough that I can't quite keep up (much like Age Of Empires, actually :-).

Some googling pointed me at GifSplitter (I've lost the link, and I don't care to link to it anyway). It's windows software, so I tried to get it to work with wine. It needs the vb6 runtime. I downloaded that, and it failed on some unimplemented OLE API function.

fixme:ole:OLEPictureImpl_SaveAsFile (0x144da8)->(0xa60be4, 1, (nil)), hacked stub.

A bit more googling pointed me at gifsicle. A quick sudo apt-get install gifsicle later and I was able to do:

gifsicle -e ghg.gif

which gave me the individual frames as ghg.gif_###, and another quick bash for loop later and I have the individual frames now. Next I need to actually do something with them, like put them into a powerpoint file or similar :-). Yeah, OpenOffice Impress is the RIGHT file format for this, but I bow to reality here. Maybe 1/3 of the people I email the file to will be able to read Impress, the others need an MS-Office compatible file. Reality sucks.

Monday, January 14, 2008

VB.Net uninstall

Despite using Linux for almost everything I do, I don't hold to any particular tech religion. I'm tech agnostic. So I don't see anything particularly wrogn with using FREE closed-source software.

I installed VB.Net Express Edition on a (legal) windows installation a few weeks ago. I've been trying to uninstall it today. Twice now. Both times I've given up because the uninstall starts but blocks at a certain point. I'm running it for the third time now and it's blocked again. I'm probably going to have to blow that Windows installation away and reinstall.

This reminds me of why I use Linux almost all the time.

I just wanted to learn C# and test it in Mono and and in Windows. But of course, the windows side is crepe. I haven't stressed the linux side enough yet to see what the quality is like there.

Follow-up. OK, the VB.Net uninstall never finished. I think I'll first try to repair the installation and then uninstall it. If that doesn't work, then I'll reinstall VB.Net Express and try to uninstall *THAT*. If that still doesn't work, then it's time to euthanize windows and reinstall everything from scratch.

Thursday, January 10, 2008

Bandwidth

I'm with Orly on Bandwidth. He's on Globe, but I get similar quality with my entry-level PLDT-DSL account. Last night I downloaded the CentOS 5 DVD. That finished overnight. Today I'm downloading opensolaris, one the developer edition installer itself, and one the pre-built vmware image. Those will finish by tomorrow (unless Sun's bandwidth gets flaky, as it did when I downloaded a previous opensolaris DVD installer). Or maybe that was PLDT, I don't think it was though, I was downloading from other sources at the time and they were'nt slow.

But, yeah, it's great that for a relatively low price (much less than unlimited dialup cost just 3 years or so ago, in Cagayan de Oro, anyway) I can download DVD ISOs overnight. I remember downloading linux CD ISOs over a week and a half (on dialup though).

My family and I are going to New Zealand. Apparently, the low end residential broadband offerings there have monthly bandwidth caps (which are less than a single DVD ISO) and once the cap is hit, either the subscriber pays per extra GB or bandwidth drops to 64kbps (or so). That's fine most of the time, but when I need to download legitimate software it's going to be a problem. I'll download everything I'll need between now and when I leave so that I can minimize the number of times I'll hit my bandwidth cap :-).

Saturday, December 22, 2007

Not about Windows+HP

So a bug in HP's software update, ahh, software for HP laptops allows malware to brick windows. It's not like I care. We recently bought an HP Pavilion for my wife and I installed Kubuntu on it. So we're safe from this sort of stupidity. It was pretty cool. We kept the (legal) windows on it for possible future use (we never actually use it, I always just nuke the windows partition and use it for extra storage, but I never learn). I had to uninstall a whole bunch of useless programs that come pre-installed with the laptop though. And, strangely enough, the time to uninstall those programs was LONGER than the time to resize the partition and install Kubuntu in the newly available free space.

I didn't backup the windows partition since I didn't really care if it got corrupted. The Kubuntu installer handled the partition resizing perfectly though. Windows still boots and Kubuntu works perfectly. I didn't need to configure anything (although, frankly I haven't tried out the firewire port yet, since I don't have any firewire devices :-), everything just worked.

If windows users keep getting victimized by malware like this (that exploits bugs in legitimate software) or just generally by malware (illegal downloading of programs that have viruses and such in them), well, I think those windows users should be punished continuously (just by continuing to use their windows boxen and living with the pain and malware that comes with that) until they learn better. Or not, I don't particularly care.

Tuesday, December 18, 2007

Woohoo!

I've had an HP laptop burning a hole in my bedroom floor for a month or so. My brother sends laptops over from the U.S. and I try to sell them for him. Sol and I (mainly I) wanted this laptop for ourselves though. I've been trying to sell my laptop for cheap (PHP 22K) so I could get the HP. That didn't go over very well (since my laptop *definitely* looks used, although it's still a perfectly good laptop). So I gave up on trying to sell mine and switched to trying to sell my wife's IBM thinkpad. This is a single core Pentium M (1.7Ghz) with 1GB of RAM and a DVD writer. It's not very old, but it's certainly not new either (it's an actual *IBM*, not Lenovo).

It was QSR's Christmas lunch last Sunday and I offered the thinkpad to one of the QSR longtimers. She was happy to grab the thinkpad at the special pricing :-). In celebration I'll be installing Ubuntu on the HP tonight. The HP is widescreen, has altec lansing speakers, and has a very nice remote control for controlling DVDs and music player. It's too bad that we won't be able to use the remote once it's Ubuntu. Ah well, maybe we'll keep Windows on a very small partition and dual boot just for viewing DVDs and playing music. Oh yeah, I'd have had Ubuntu installed by now, but I realized that I didn't have a copy of Gutsy Kubuntu (my wife prefers KDE). So I downloaded via torrent. The CD is written, but now I have to get my donkey to work, so the Ubuntu installfest will have to wait til I get home.

It'd be nice for *me* to use the HP laptop. I could probably use the 2 cores in there. But it's lighter than *my* laptop, so I'll stick with my single core 1.5Ghz CPU and Sol can enjoy the lighter weight of the HP :-). I'll put those CPUs through their paces at night though :-), mainly re-encoding Timmy videos so that they're smaller.

Friday, December 14, 2007

Transition

I gave my current company about 1.25 to 1.5 years notice and the 1.5 years is up next week. The notice was that long since the reason I'm leaving is that my wife and I are immigrating to New Zealand. The process took that long. It could have taken less, but there were some complications having to do with my health records, and anyway, I enjoy my job enough that I've been dragging out the immigration process as long as possible.

The 13th month pay was a factor too, and my commitment to work through to the end of the year.

As it happens, I'm leaving on 21Dec, but nothing gets done after that anyway, till the end of the year :-).

I've been documenting into an internal wiki. There's not enough documentation yet, I figure I'm going to have to continue writing documentation for free for about 2 more months (but at a more leisurely pace). I'll do that if I retain my vpn access. I won't though if they revoke the VPN access (hard to write on a wiki if you're not online to the wiki itself).

Today I stopped my fetchmail job running on my desktop. My desktop at work has postfix and courier-imap running on it. And I had fetchmail downloading my email from gmail and pushing it to local postfix so I could grab it from my laptop. That won't be around for me anymore after the 21st though, so it's time to switch to downloading email from gmail directly. Or, more likely, installing courier-imap on my laptop so that I don't have to have evolution up and running all the time (and I can be more flexible, using procmail for some things, for instance).

One of the reasons I had that courier-imap setup at work was so that I'd have *three* copies of my email. One on gmail, one on my laptop, and I had a .forward to another local account on my work computer for backup. I don't think I'll have that .forward on my laptop though. My email is in multiple gigabytes now and I don't think I actually need *3* copies :-). Although, come to think on it, I actually had *4* copies and now I'll have 3, since I also regularly backup my email (among other things) to an external USB hard drive, and I have *versions*, since I use rdiff-backup :-).

I'm going to have to work with the sysad team too, so that all the cron jobs that I have running on one or another of the servers at work (including some on my desktop) are migrated to the official servers.

Saturday, December 08, 2007

Gutsy dist-upgrade again - slow

My wife has finally finished (well, officially, of course there'll be support calls for a month or so) a lucrative software development project that is funding our immigration to New Zealand. She uses Kubuntu and she's at Feisty. I'd delayed upgrading her laptop so that there'd be no delays with her project.

With the project done, I've started the Gutsy upgrade. There's a bug with the Feisty restricted updates packages list. It's supposed to be .gz, but surfing to it shows that it's actually just a text file. so the first stage of the dist-upgrade fails because gzip tried to decompress the file and failed.

I didn't want to fight it, so I just removed restricted from apt-get/sources.list and restarted the dist-upgrade.

It then said that / was too small. So I cleared out /var/log/messages and since that didn't help enough, I also moved /usr/share to /home and linked /home/usr-share to /usr/share. Standard trick when I underestimate how large / should be :-). I'll move it back later when the dist-upgrade is done.

That's going to be *MUCH* later though. The packages are downloading, but at a glacial 11-20 kiloBITS per second. I'll crash now. A few hours after I wake up the downloads should be done and the upgrade can continue.

I've been sick today but I'm excited about finally upgrading her laptop, which is why I'm sitting t her computer right now, close to midnight. I'd wanted to install xdebug and protoeditor a few days ago but again, in the interest of stability, held off. When the upgrade is done, I'll install protoeditor and she'll finally be able to debug PHP programs in linux. *THAT's* really what I've been excited about. The upgrade is just a logical forward step to take before I get to install the debugger.

Protoeditor still has some bugs (mainly involving displaying some array entries). It's already very useful though. Just the ability to animate the flow of execution is a big deal (e.g., for figuring out incredibly bad legacy code, or incredibly good but complex code I wrote but don't understand anymore :-). Finding bugs is great too :-).

Friday, November 30, 2007

php debugger finally

I've been looking around for free php debuggers. I never did get $DAYJOB to spring for nuedit phpED (and anyway, I couldn't get the demo to work when I downloaded and tried it). I've been struggling with Dmitri's DBG for a long time. Sometimes I'd get it working and sometimes not. Lately I had it pretty stable, but I never actually wanted to work with the command line debugger client since it was so ugly, not even being as nice as gdb, for instance.

I got xdebug working but didn't like the command line client. There are a lot of options though for clients. I could only test free clients though. I tried two windows clients under wine. Neither worked and I didn't care enough to work very hard at them.

Xdebug support is supposed to be in the PHP Development Tools but after trying that out for two hours or so last night (much of that time spent downloading eclipse, once from ubuntu, and once from PDT), I gave up and went to bed. I couldn't get the debugger to talk to the spawned command line program, or to a web program. I think that was mainly a failure of documentation though. It looks like a great plugin to eclipse, but I couldn't figure out how to make things work because I couldn't find any clear documentation (it may be there anyway, I just can't find it).

Timmy woke up early and I got him to sleep at 2:20AM. I went downstairs (the other hour of eclipse work) and, in between resizing videos I installed protoeditor. This was an install from source. I had to install a bunch of libraries it needed, but finally I got it compiled and running and actually stepping through a program (running under apache, and also under the command line).

This has got me sufficiently excited that I'm totally stressing my bandwidth at home and at work because I'm installing required packages on a centos 4.x vmware image at home and on my feisty box at work. Both downloads are going slow and are downloading huge numbers of packages. Ah well. I wouldn't install on the VM except I work with a team who all use a similar VM, so I need to be able to tell them how to install protoeditor on their VMs. They could install it on their host distros, but then they'd be on their own with that. Damn, I'm just at the initial yum update on the centos 4.x VM and it's downloading 95 packages!

Packages I needed to install (may not be complete since I've also previously manually installed a whole bunch of other software on this box, so it's not a virgin gutsy install anymore):

  • xlibs-dev
  • libqt3-headers
  • libqt3-mt
  • libqt3-mt-dev (not sure if really needed, I installed it anyway)
  • kde-devel (which pulls in a boatload of stuff)


OK. I just installed that on my computer at work to see if protoeditor would ./configure. It is now. I'll test if protoeditor is really working tomorrow. I could test now, but I don't like running X applications remotely over my VPN :-).

It works great locally on my laptop though.

Sunday, November 25, 2007

Don't use Union unless you know what you're doing

I got bitten by a little insect I didn't know about, the other day. I'd written a family of views to simplify something horribly complex. Except in the penultimate view I had used UNION instead of UNION ALL.

I *HAD* too read the postgresql documentation on SELECT which clearly states that:
The result of UNION does not contain any duplicate rows unless the ALL option is specified. ALL prevents elimination of duplicates. (Therefore, UNION ALL is usually significantly quicker than UNION; use ALL when you can.)
.

But clearly I hadn't internalized it and continued preferring UNION because it was one word instead of two :-).

The bug report set me straight though. Now I will *definitely* remember the difference between UNION and UNION ALL (in that UNION folds duplicate rows into just one).

Monday, November 12, 2007

Vista dialup plus winmodem -- can't help

A very good friend of mine bought a new computer. The new PC has Home Vista Basic on it. It works well enough for most things (that I try, anyway). There was some confusion with printer permissions for her children (she's the only administrator). I sorted that out a few weeks ago. Now she's complaining because there's a problem with the winmodem. I actually tested this a few days ago and, if I dialup to her (prepaid) ISP after a reboot, it works. I stay online for hours. But when I disconnect and try to dialup again it always fails. Diagnostics is useless (all it says is that the connection failed).

Rebooting fixes things. Just reboot, and I'll be able to connect again reliably. Unfortunately, after disconnecting, dialing up never works again until the next reboot.

I'm not able to help her because, much as I'd love to switch her to Ubuntu, I have never had any success with winmodems on linux and I'm not going to give her my US Robotics USB modem (if I could find it).

I guess she's just going to have to reboot between dialup connections to her ISP. It's the price to pay for going with windows. I'm sure things would go better with windows XP. Maybe I'll have her go back to where she bought her PC and get them to downgrade her to XP from Vista.

Microsoft, a whole bunch of bastards who force a pregnant woman to go to her PC store so they'll tell her they can't downgrade her to XP.

Wednesday, November 07, 2007

Catching up

The last 4 weeks or so have been hectic.

  • Timmy's nanny had to go home to the province and then wasn't allowed to come back by her husband.
  • Timmy got sick and we had to spend a work week in the hospital,
  • I got to work but had to catch up on a lot of things (still not caught up),
  • Preparations for Timmy's birthday, the actual birthday and then a long weekend (spent with family, so not much work got done)


Things are getting back to normal though. Mainly because of the Nanny and hospital issues, I stopped reading email for a while. I just sped through my work email. Fortunately I'm caught up there. Now I need to get caught up on my tasks. That's going to be more hecticity for another week or two.

Monday, November 05, 2007

Gutsy dist-upgrade

I waited a few weeks before upgrading to Ubuntu Gutsy Gibbon because I've always had trouble with Ubuntu dist-upgrades and I wanted to get past some milestones first (Timmy's birthday, for one) before trying to upgrade and possibly ending up with a broken system that I'd have to spend a day or more fixing.

I've never had success with any Ubuntu online distro upgrade, and I've been trying it since Dapper. Twice I've broken my system sufficiently badly that I had to reinstall from CD (I could probably have fixed it, but I'm not all that familiar with dpkg or grub, and both times I had problem with one or both of those subsystems).

I'm pretty sure that those failed online upgrades were my fault. I install packages from multiverse, universe and some lesser known repositories. I also will sometimes monkey with files that the packages require to exist or be in one or another format. In any case, I'd done some similar monkeying with Feisty, so I wasn't confident that the distro upgrade would work flawlessly.

I finally made the plunge last night after a marathon of converting images (renaming more logically/usefully, at my wife's request), videos (converting in kino to divx so that they're 1/4 to 1/6 original size), and backing up everything (rdiff-backup to my external hard drive, and the images and videos to my wife's external hard drive and laptop, because losing timmmy's pictures and videos is inconceivable).

As usual, I didn't get a flawless upgrade. Fortunately, however, this time there was just one major problem. Initially there was a weird minor issue when the distro upgrade seemed stuck. I did an strace on the process and noticed that it seemed to be in a loop working on the linux kernel image. So I killed that and after a

dpkg --configure -a

restarted the distro upgrade. It worked better after that, asking me what to do about config files that I'd manually modified. For some questions I kept my changes (always after viewing a diff of the config files), others I allowed the distro to replace my changes.

Again, though, the distro upgrade failed. This time on an openoffice.org package that involved mobile devices (not sure how I got that installed, probably with the openoffice.org evolution integration package). That was bad enough that I had to dpkg --configure -a again, and then remove all the openoffice.org packages so that the upgrade could continue.

I had to go to bed after some pressure from my wife, and then a 30 minute brownout almost broke the install. After more pressure from my wife (including her turning off and unplugging my laptop :-), I finally went to bed and restarted the distro upgrade in the morning. Fortunately, everything worked fine after that and I've got a usable Gutsy system now.

There is one problem though. Firefox 2.0.0.8 (even with all add-ons removed) crashes randomly on some sites, and consistently (as in EVERY SINGLE TIME) on blogger. Which is why I'm posting this using epiphany. I was going to use Opera, but I decided to try the different browsers available with Ubuntu first before switching to Opera. Galeon breaks in the same way Firefox does. Clearly it uses the same buggy library. Fortunately, epiphany works well. I think I'll switch to epiphany until Firefox is fixed. I'm sure going to miss adblock though, and noscript, etc.

I use gnomad2 (since we've got a creative nomad zen mp3 player which we use mainly to play lullabies for Timmy to sleep to), and that works perfectly. I'm hoping that kino and ffmpeg work a bit better in Gutsy. In Feisty, most files would convert to divx medium quality. But some files would produce zero length .avi files. Those I'd have to reconvert to the next higher quality level just so that it'd be divx (and still half the size of the original avi file). I'll have to test kino with ffmpeg again on those files :-).

Upgrade: I broke down and googled for the firefox problem (first I ran firefox in a terminal so I could see the error message when it died).

It's a bug with libhunspell. The workaround is to disable spell checking in firefox. Turn off Edit|Preferences|Advanced|Check my spelling as I type..

Cool. I was liking epiphany, but some things were irritating (no multiple home pages, no multiple rows of tabs, although I really liked how fast it was, but no NoScript or AdBlock).

Monday, October 29, 2007

Slow, interactive, but it works -- looking for scripts

I've got a lot of videos of my son. When imported from the camera they're AVI files (yes, I know that's just a container, but I don't know enough about video formats to know what the actual encoding is).

The videos are pretty large. I've found a good way to make the files smaller though. Using kino, I import them (I get a larger .dv file). And then convert it to MPEG4 AVI. That works pretty well. Large files (150MB or more) convert (at High Quality, full size, progressive, 2240 kb/s) to about 1/6th the original AVI size. Small files (30MB or so) only convert to half the original size. But that's pretty good, nevertheless. The proximate reason for looking for ways to encode the files to be smaller is because I post some of them to youtube and those original AVI files greater than 100MB get rejected.

Kino has a .FLV converter too. That's interesting. But I don't think I want to keep archives of .FLV files. I'm a bit conservative about file formats and I tend to go with standards (de-factor, or de-jure) when given the choice between file formats which are on different points on the standard-non-standard continuum.

I've looked around for scripts to do this conversion. Haven't looked hard enough though, apparently. I could read the manpages and learn enough about video and audio encodings and transcoding so that I could hack up my own scripts. Too lazy to do that though. I'll wait until something comes along that's better than what I've got.

This is what it feels like to be a mere user :-). Normally I'd just totally geek and learn what I needed to get something working. Taking care of my son, and taking videos, and juggling disk space so that the videos will fit and can be backed up though, that takes all my time :-).

I've looked (via ps auxw) at the command line commands that kino spews to do the conversion. I may test some of that out. I don't know if everything I need is in there though. If it is, and a test works tomorrow, I'll hack something up and possibly post it here. But possibly not, too. Nonworking holiday tomorrow, I'll be playing with my son :-).

Sunday, October 21, 2007

Gmail Advanced

I just went and installed Better Gmail and Gmail Manager on my laptop, both firefox add-ons. I'm going to have to install both of those everywhere.

The Mail.app mac-like skin from Better Gmail looks great. I first tried Super Clean but abandoned it quickly since I found it unusable.

GMail manager lets me have two or more tabs to gmail, each tab being a different account. That's very useful and I may finally switch over to using web based gmail for my gmail accounts because of that (I'll still have to keep evolution for backup and for access to my IMAP email at work. But finally GMail is much more usable when I can have multiple tabs, one for each account.

I've also finally found a convenient way to download my spam (which I use to train a bogofilter adaptive filter, just for fun). I think Gmail must have fixed their POP3 support somehow. Previously, this technique didn't work but now it does. The solution is to:
A. go to the Spam folder
B. select all messages on the current page
C. add those messages to a label (e.g., ZSpamX)
D. mark the email not spam.
E. wait until they're downloaded by my fetchmail process running elsewhere.
F. once everything is downloaded, go into the label, select everything and mark them all Spam.
G. Go into Spam folder and delete all Spam.

Unfortunately, D doesn't work with the gmail "select everything" link that pops up as an option when we've pressed the (Select) All link. So if I've got several pages of spam, I need to do A-D for each page. That's not bad though since I've got gmail setup to show 100 emails at a time.

To be clear, that last is not a problem with either of the Gmail related plugins. It's an issue with how Gmail works to begin with. Probably as a bar against people making a dumb mistake that does too global a job to the selected email the "select everything" link that pops up when you click All does not all you to assign the same label to all matching emails, nor does it allow you to Unmark all matching emails Spam. I don't remember if it allows marking all matching email spam. I've already collected and remove all my spam, so now I don't remember whether marking all the spam messages spam again was one step or ten.

In any case, the C and F steps are vital. I don't think they previously worked. Or if they did, I didn't think to try them back then. It's great though, now, to be finally able to grab all my spam so I can train my own spam classifier. Sometimes spam gets past all the spam classifiers between me and the internet, then I'd like to have a personal spam classifier customized to my needs, similarly, sometimes mail from friends or mailing lists is marked spam by mistake. Seeing all the spam and running them through my own classifier gives me a better chance of finding the false positives since at least I control the classifier.

Tuesday, October 16, 2007

On 40 tips for optimizing PHP code

I saw something like Reinhold Weber's 40 tips for optimizing PHP code maybe a year ago. Recently, this particular set of 40 tips popped up on reddit. I decided to test. Now, my tests are trivial, on the command line, on Ubuntu. YMMV. Particularly with respect to "trivial", since the tests are so small they're likely to stay in L1 or L2 cache, so they may not look like other people's more complex tests since they're not likely to trigger cache misses.

Alright, after the first two tests, I've decided that this is probably not worth doing. I may continue writing some tests, but:

1 - use static if possible - 1.25 percent difference.
2 - echo is faster than print - yeah, by 1.35 percent.

Some of those tips might actually be pretty useful (I'll run some more tests over the next few days), but these two aren't very useful. Sure, if you applied 100 optimizations, each giving a 1 percent improvement you'd double the speed of your program. But I routinely improve the speed of programs by orders of magnitude by improving SQL queries, creating appropriate indexes and simplifying complex code. Most of those 40 tips sound like micro-optimizations which aren't worth the trouble to implement.

To be sure, error suppression with @, apart from being slow, is usually a mistake (turn on error logging in development, push error logging to a file or syslog rather than stdout in production), and $row[id] is just stupid and the sign of an incompetent developer, as are incrementing uninitialized variables and #31. Using mysql is almost always a mistake (it has its uses, but everywhere I've worked, mysql has always been the wrong tool and anyone who implemented it [i.e., me] always regretted the decision later).

3 - avoid magic (__get, __set, __autoload) functions - OK. magic __get and __set [together]
are half the speed of accessing the variables directly. So there's certainly some cost
to the indirection. It may be that high level frameworks could (and should) use the
magic functions to abstract away details. I've avoided them for now though since they
don't improve maintainability or quality of the code I currently work with, although I'd
be open to using them if I were to work on something significantly more complex than what
I work with now. I don't see anything that complex on the horizon though, I'd probably
switch to another language for anything complex (perhaps java, perhaps python, it'd depend
on the project).

Thursday, October 11, 2007

More RAM in my next job -- and multitasking limits (not enough RAM in my brain)

I've got a slow computer (800Mhz) with a reasonable amount of RAM (640MB) at work. My laptop is twice as fast, with twice as much memory. But of course, the laptop hard drive is slower than the desktop hard drive.

I've been twiddling my thumbs quite a lot lately because a lot of my work has been very disk intensive. I could be speeding things up by not doing svn update of 300MB of source, instead going to just the directories that have been modified and doing the svn update there, but then that would require knowing intimately what the other developers are doing. And *they* don't necessarily remember all the directories they committed into.

So, in my preference for dumb solutions that work all the time (e.g., svn update at the root of the tree) versus smart solutions that can easily fail (svn update to targeted directories, possibly missing other directories with fixes), I just svn update at the root. I do similar things with very large databases too, and very large file copies (rsync). The dumb solution that works all the time but is not always optimal is more cost-effective than the smart solution that will take three weeks to shake all the bugs and corner cases out of.

I'll optimize (spending that three weeks later on), when the need arises.

If I'm going to be doing much the same in my next job, then I'm going to require my employer to get me the right hardware. So I'll have 4GB of RAM (or more), and the fastest SCSI drives money can buy, in RAID-0 with rdiff-backup to RAID-1 slow SATA drives. And then I'm going to do all my svn work in a 2GB ramdisk. Hahahahaha.

I was discussing the edges of this (in the context of multitasking) with the boss of my boss and he said, "well, so you can do other things while waiting for those long tasks to finish, right?". This was in the context of a query that ran for 22 hours (and yes, I got pissed off enough at that to set up an aggregated materialized view built via triggers [postgresql] so that it now runs in an hour). At the time I said, yes, so I can multitask and need not twiddle my thumbs.

I'm finding that there are limits to multitasking though. I get confused and forget to do important steps when the list of tasks hits more than 5 or so. So its best to stick with 4-5 concurrent tasks. So if all 4 or 5 of those tasks take more than an hour, I'm back to twiddling my thumbs because I just don't do well if I add another task. As designated mentor at work, I don't actually have to twiddle my thumbs though. Instead, I can stick my nose into my colleagues work and offer unsolicited advice. Sometimes it's even good advice :-).

Wednesday, October 03, 2007

Software is Hard

Kyle Wilson has a great article on software development, compromises, economics, complexity, lines of code, and why Software is Hard

I use "economics" the way I normally do though (which is not the way it usually is meant in RL, but possibly how it would be meant among economists). It's not just about money but about compromises among competing values and how different weights among the different values affect the outcome (which is usually also measured along several dimensions).

Monday, October 01, 2007

vim on slow links (sshfs)

Sometimes (as today), I need to edit files remotely. If the bandwidth is slow (PLDT myDSL has some occasional bogosity where my route to the office, which is normally just 5 hops, bounces between two internal routers whose IP addresses differ only by 1 in the last octet, so then my vpn goes to the other links and the hop count goes to 18 or so because it's overseas), editing remotely is intolerable.

Then I go with sshfs. I've got a script that mounts my working copy over sshfs. I always need to remember to setup vim though to not use swapfiles. So, from the man page,

-n No swap file will be used. Recovery after a crash will be impossible
Handy if you want to edit a file on a very slow medium (e.g. floppy).
Can also be done with ":set uc=0". Can be undone with ":set uc=200".

I've got an annotation in my ~/.vimrc (normally commented out) to set uc=0,
but I forget that it's there and I always google for sshfs vim swap file. And
then I go to this page, which doesn't have the answer :-).

I would post the solution so that the question doesn't stay unanswered indefinitely. If I could reply without joining the group I'd do that. But joining is required, and I'm no joiner. So the best I can do is point at it here.

Heheh, this will also help ME since I would normally query something like:

monotremetech sshfs vim swap

:-)

Sunday, September 30, 2007

OLPC -- Inspiring

There's a great post on OLPC uptake and how it's changing the school experience in Arahuay, Peru.


This is very inspiring. If all (or even half of all) social/economic development projects were to end up 1/10th as effective as OLPC-Peru/Arahuay has been, the world would be incredibly good.
Antonio is repeating second grade, but:


The first day Antonio came to school with his XO laptop, instead of playing during recess, he kept on exploring the XO. He quickly became one of the most acquainted with it and empowered to help his classmates by telling them how to do this or that. The change was suddenly and highly noticeable. His teacher was amazed of how he had become more focused doing the class work and was helping his classmates with the computer activities.

And Diego's story is hard but heartwarming.


Diego is in second grade. He had stopped coming to school. However, he did come to pick up his XO laptop the day we handed them out. His teacher explained to me, that he has no father, and that his mother went to Lima, the capital, to work. And now, Diego and his two brothers are living by themselves, but a kind neighbor gives them their meals.

After that quote, there's a picture of Diego helping a first grader on using the OLPC.


Emilio is a hero:


“Once, when the teacher was explaining to the children how to look up some new words in the on-line Diccionario de la Real Academia Española [the best Spanish dictionary, costly and practically out of the children's reach in book form]. Emilio understood the procedure and quickly looked up the entire list of words while the teachers and the other students, together, slowly went through the process. The Internet connection went down. The teacher made the best of the situation and explained what the Internet was and about the satellite connection, for them to understand what was going on, and ended by saying, "We will have to wait a little bit until the connection is reestablished." To which Emilio replied, "No need, teacher. I got all the words, and everybody can copy them from me.”

But not just any hero. Anyone can shoot other people or order peons to shoot other peons. Emilio is a hero of the mind.


It's pretty clear that the OLPC is inspiring kids to stay in school. At best, they get interested in school and using the OLPC. At worst, they'll stay in school because if they don't, the OLPC will be taken from them.

Saturday, September 29, 2007

high speed!

I've been very disappointed in my external USB laptop drive enclosure. Whenever I'd run my rdiff-backup or just a regular rsync backup (with --progress, because speed is what I'm nuts about) I'd get pissed off because the speed would only stay at arund 1-1.2MB per second.

Today though, I hit 5-5.5MB per second. I figure it was because I read some random advice (I think on the Philippine Linux users group mailing list) about plugging both USB jacks into the laptop because sometimes the power coming down one cable isn't enough (or the cable is substandard).

I'm a Psych major, so I never actually took any courses on electricity or electrical engineering (the computer science and computer engineering people do). I'm very glad though that, in fact, plugging in the second cable seems to have sped up the transfer rate. I may go buy a higher quality cable too as that is supposed to increase transfer rate too. For now though, ohhhh, 5+MBps is SOOoooo much better than 1+Mbps.

It's now fast enough that backups will be a joy, or only a minor nuisance, rather than the big production it used to be (I've got tens of gigabytes of data to transfer, it takes a while to rdiff-backup all of that, even if nothing's changed and all rdiff-backup has to do is read through the files to see if any bits have flipped).

[Update]
I don't think anymore it was the second cable (or the power issue). I think I probably got an kernel update that finally supports fast USB on this laptop. I experimented tonight, copying the data with both cables, and then with one cable. The speeds are the same. I'm still very glad to be getting 2.5-20MBps, all speeds are a lot faster than the 1.0-1.2MBps I'd get previously. But it's not the cable. That's too bad, since waiting for the kernel to get fixed for a particular laptop chipset is harder and less deterministic than just plugging in the other cable :-).

I'll keep the other cable plugged in though, still. I'm sure it'll help with stability, if the external drive gets enough power instead of sometimes getting too little.

Saturday, September 22, 2007

Wrestling with pure eeevveeeel

Jeremy Miller has a whiny rant on a project he's working on.

The whiny part isn't from me, it's from his comments section.

I've been wrestling with pure evil too. It's not java, and it's a whole program that's too long, not a function. there's only one function in there, it's called doublenum, and it doesn't arithmetically double its parameter (which would be at least descriptive), instead it doubles its LENGTH. sometimes. by prepending a zero if it's only one digit wide.

so, applying some items from Jeremy's rant,


  1. Very long method [check, although it's not even a method, it's just PHP code that's not in a function, so everything is global]

  2. Variables are reused for different things throughout the method [check, but at least variable names aren't totally bogus, although it does use a class prepended with the initials of its author]

  3. Lots of if/then exception cases [check - in fact, since there are about 8 common cases, the whole program is bunch of nested if/thens with one code path being one of the common cases, with exactly the same actions copy-pasted all over the place, plus deeply nested if/then exception cases peppered through the code (copy-pasted again), and at the end, just one of those common cases will be executed]

  4. Deeply nested Arrowhead code [ check, except its several arrowheads ]

  5. All data stored in Hashtable's -- and it's this data that's getting bamboozled somewhere [check - plus parallel PHP arrays (integer indexed), plus parallel (sort of) associative arrays where the keys are concatenated strings of the subkeys, plus some two dimensional arrays where the concatenated string keys previously mentioned are split up and make up the two dimensions]

  6. Numbers that come out wrong - [ check, or, actually, a really obscure bug where orders get their order quantity zeroed ]



And for extra bogus points:

  1. $r=7-($cday-$x);
    $mt = sprintf("%2d",chop(`date +%m --date '$r days' `));
    $dy = sprintf("%2d",chop(`date +%d --date '$r days' `));
    $yr = sprintf("%2d",chop(`date +%Y --date '$r days' `));

    what moron calls a system function THREE TIMES to get the pieces of a date? If they didn't know anything about time functions in php (or perl, this crap is all over the perl code these people wrote too), they could at least have called date once, and then extracted the fields out of there. But then, if they were too dumb to learn how to use the time functions (or even just to learn that they exist), I suppose it's too much to expect that they would figure out, The function names aren't helpful, but that's not as much a bogosity as forking to get the time, three times. Even selecting the date from the database would be better than this stupidity, and if they couldn't wrap their brains around that, at least fork only once!,

    date +%m-%d-%Y --date '1 day'

  2. oh, and that doublenum function? The only function defined in the whole program? It's actually inline in the code TWICE. But php doesn't do static analysis worth anything. Instead, if the two function definitions are in perfectly separate code-paths (it's never possible for both function definitions to be executed in the same run), then PHP sees no problem with that. PHP only points out function redefinition errors when the function definition is actually executed, e.g., no error here:

    function f()
    {
    return 0;
    }

    if(false)
    {
    function f()
    {
    return 31415;

    }

    }

My mistake with this abortion is that I've been trying to live with it, fixing it incrementally, when fixes needed to be done. I should have thrown this away long ago though, and just rewritten it so that it wouldn't be so bogus.

I was avoiding doing that because the horrendous date logic was totally obscured by the implementation, so it wasn't possible to extract what the date logic was supposed to do at all just from the source code (not possible for me anyway, I would get angry too early and give up). Now I'm going to have to understand the date logic and rewrite it all. Or if that can't be done, then use the current horrendous implementation as a test for proving that my implementation is "correct" (or at least complies with the current implementation, since I can't understand the current implementation, I'm not currently capable of proving *IT* correct. I can only take it as a given).

I'd better not meet any of the previous implementors in this or any future world. They're going to KNOW what I think of them, and then I'll hire them so I can fire them one second after.

Thursday, September 20, 2007

screen multitasking

I've known about screen for a few years. I never did use it until recently though. When I tried it out a few years ago I came away with the impression that it wasn't worth the trouble since I'd have to learn another set of keystrokes. When I tried it back then, I didn't like Ctrl-A or any of the other keystrokes that came with it (all prefixed with Ctrl-A).

Of course the activating keystroke (Ctrl-A) can be configured to be something else, but the rest of the keystrokes still seemed unnecessary cruft to learn.

I recently looked at screen again though and I've fallen in love with it. I don't use it as efficiently as I might. I still have a problem with the keystrokes, so I learn the minimum that I need (Ctrl-Ad, Ctrl-AA, Ctrl-A[, Ctrl-A],Ctrl-An, Ctrl-Ap, Ctrl-A", Ctrl-AX) and leave the other commands alone until I find that I need them. I still only have limited space in my brain for keystrokes, so I economize.

The problem with screen now is that I've got 8 processes running in screen at work (I'm working remotely because my baby is sick and I need to be home to help take care of him). I can barely multi-task 3-4 processes, and now I'm running 8. Of course, they're all long running database processes and once they're set up they run independently until they complete. I could then move on to another set of 3-4 things to do. I avoid doing that too though since when any in the first set of tasks finish, I'll have forgotten what the purpose of it was :-). And frankly, some of these tasks are going to take hours. I can't afford to keep adding sets of 3-4 tasks until I can't count them anymore :-).

I do find screen very useful though. Mainly, as a replacement for nohup. Now I can start a screen session remotely, run the program in screen, give it any interactive commands it might need (hard with nohup) and then leave it running. Previously, I'd have problems with running a program over ssh (when the vpn would burp, I might lose the session, I certainly couldn't control it remotely anymore). And nohup has problems with interactivity. Screen is a great help there since I can get interactivity, and if ssh breaks because of network issues, I just ssh there again and re-attach to the screen.

I didn't know about -x back then too, when I was first looking at screen. I like working with 3 or 4 actual terminals on my monitor. That's one reason I don't like KDE, it's necessary to manually detach a tab. In gnome, I can just turn off the menus (in fact, I use aterm now, but for a while I was using gnome-terminal) and have terminal windows automatically open in new windows rather than tabs (when I do Ctrl-Shift-N in one terminal it creates a new terminal as a separate window.

For screen, I just ssh to the remote box, screen -x, do that 3 or 4 times, and then have each terminal go to a different screen sub-session (Ctrl-Alt-" or Ctrl-Alt-n a few times).

I've even used screen for discussing/team-programming. The several people in the discussion all connect to the same screen session and then discuss, view, and test code while all looking at the same editor sessions, debug screens, etc. That works for command line work, or just basic code slinging. of course, testing in a browser, or in some graphical environment is harder. I've avoided those complexities for now though, although of course vnc is waiting in the wings for when I need it.

Tuesday, September 11, 2007

robinson's free wifi - going downhill

I used to love sitting in the Cafe Mediterranean in Robinson's Galleria because of the good food, cold beer, and free wifi. I've also used it downstairs, by Bo's cafe. At the time, the wifi signal itself was good. The DNS was slow, as was the actual connection, but I didn't mind since I wasn't downloading huge files anyway. It was a pleasant place to surf and have coffee or a snack.

The wifi at Robinson's Pioneer was always bad, one could use it, but it was intermittent and slow when available.

I recently went to both Pioneer and galleria and checked out the wifi situation (at Cafe Med at galleria, and at Old Spaghetti House at pioneer). The wifi is much worse than it used to be. Possibly the hotspot has been moved at Galleria, but when I was last there, the signal wasn't available at all at Cafe Med. There were some secured networks, but no free wifi. I didn't go to Bo's to test there. It wasn't important enough.

At Pioneer, Old Spaghetti House charges a ridiculous PHP 50.00 per half-hour just for plugging in to the wall. And the wifi was very slow and unstable when I was there and it's completely down now (right now, my wife is meeting a fellow developer there). We liked the coffee and dessert at Old Spaghetti House, but the cost of plugging in is sufficiently stupid that I believe I'm going to tell anyone interested about how Old Spaghetti House is extremely unhospitable to laptop warriors. I think it's great that they have wall plugs at all. A more reasonable price or policy would be cool. For now though, absent either, the policy is just dumb and I'm not going to give them any of my money again. Although if my wife insists on going there, she can pay for lunch. The creme brulee WAS very good.

ionice - redux

I love ionice enough to give it thre exclamation points but I'd been having some problems with it. Mainly, I was optimizing too much. I was using -c 3 on the assumption that everything would run much better if svn update or git-svn rebase was taking too much IO bandwidth.

This was a mistake. I would have problems when the ionice -c 3 process was running since -c 3 (idle priority) requires root access, so if it created files, those files would be owned by root since ionice -c 3 needs to be run under sudo or directly, as root (sudo su, root login or /etc/crontab).

It took me more than a month of frustration (and actually stopping the use of ionice, or doing a chown -R at the end) to finally ask google :-). I must not have been all *that* frustrated.

There's an explanation here of why ionice -c 3 requires root access.

So finally I'm convinced and will now run large svn updates (or my huge rdiff-backup based backup system to a slow external USB drive that only runs at USB 1.0 speeds) under ionice -c 2 -n 7. A few quick tests shows that performance of the laptop (no locking of X, etc) is about as good as with -c 3 but there's no need to run under sudo, so no problems with file ownership or permissions later.

Thursday, September 06, 2007

Downloading OpenSolaris sucks

After a good email from David Meyer, on the PLUG mailing list I decided to download OpenSolaris and test it out on vmware.

I chose to use the Sun Download Manager last night. I'm not going to do that again. The download was chugging along slowly but steadily but today it stopped. And the Sun Download Manager has this clunky, unintuitive interface and apparently some weird logic in there so that only one file can download at a time and there's a maximum number of retries and then a file will never be downloadable again. Possibly the internet went up and down today and it hit the maximum 10 retries so it stopped trying to download. I changed the retries to 20 though (the maximum, why is there a maximum??? If I want to keep downloading forever on an expensive and slow GPRS link, why not let me do it?) and it STILL wouldn't download anymore.

When I got back this evening it was still downloading, but at 5kBps, when I can normally get up to 80-120kBps on my DSL connection at home, I wasn't going to wait 70 hours or whatever it predicted the wait time to be.

Since I couldn't make it work anymore, I just nuked the whole Sun Download Manager thing and am currently downloading the files via the browser. I'm downloading all three files at the same time and they're all coming down at 30-80kBps. That should get faster as the night deepens.

This sucks though. I should get better speeds from Sun microsystems. I'll keep trying to download, but the piece of crap that is the Sun download manager doesn't inspire any confidence in me. Likely OpenSolaris will be very good. It's a very mature piece of work. I'll see if I get comfortable with it. But my expectations aren't very high just now. I hope I'm disappointed in my expectations.

Saturday, September 01, 2007

svn mv and atomicity - lesson learned

I was moving some directories around in $DAYJOB's svn repository and I wasted a lot of time doing it. The problem was that I didn't realize that svn mv requires that both source and destination parent directories need to be committed at the same time.

I needed backward compatibility, so what I was doing was similar to:

svn mv {parentdir/srcdir} {elsewhere/destdir}
svn commit {parentdir} -m "some message"
ln -s {elsewhere/destdir} {parentdir/srcdir}
svn add {parentdir/srcdir}
svn commit {parentdir/srcdir} -m "some message"

svn commit {elsewhere/destdir}

usually I'd do that for a few directories before bunching the
commits of elsewhere.

I was then getting svn errors because the source wasn't around anymore. When
doing svn mv, it's necessary to commit the A (in the destination directory) and
the D (in the source directory) in the same commit, otherwise there will be
a lot of backfilling and rework necessary. What I had to do was find the
revision at which the given directories were deleted from the parentdir,

svn cp -r [rev] [URL] [destdir]

them (specifying a revision one less than the one they were deleted in), and
commit, bringing them back. Then I'm doing the svn mv operation again, but
this time committing both at the same time and only doing the "ln -s" at the end,
and in its own commit (can't be done along with the svn mv because I want the
link to have the same name as the source file, but the source file hasn't been
deleted yet, the ln -s and svn add of the link needs to be done after the
source file D operation has already been committed.

The links (for backward compatibility) are making a regular svn update fail.
This is because svn update needs to create the link, but the original file
is still there. svn doesn't replay the commit history, so it doesn't have
the opportunity to delete directory entries which are no longer the same type
(formerly directories, now links). I was going to just check out the whole
tree, but I think I'll wait on that, instead I'll first just remove all links
(find . -type l | xargs rm -f) and then svn update since the only same-name
files in there are links inserted for backward compatibility.