Recent PhotosCalendarArchivesQuicksearch |
Thursday, August 30. 2007The Story of One Barn![]() About 80 years ago, a Kansas family -- the Janzens -- built this barn. About 60 years ago, my grandparents moved onto the farm. Their cattle were kept right here. I remember Grandpa's red tractor being parked in the barn. So many memories have this barn in the background. We had a visit from one of the Janzens that lived here as a child. He had fond memories of this building. My dad and his siblings once played in the deep snow in front of this barn. Here's one memory from those times: ![]() That's my grandma and grandpa on their 25th anniversary in 1970. It was a working barn back then, so they probably weren't standing right next to it for this picture, if you get my drift. But they were on the yard. About 25 years ago, Grandma lost her battle with cancer. At some point or another, Grandpa had eased out of farming, so the barn had a lot less activity. I remember exploring his outbuildings when I got bored at family gatherings. And I used to mow the lawn next to it every summer when Grandpa went off to be a cook at a camp. I didn't mind mowing next to the barn. But I always tried to go past one corner of the house as fast as I could, because there were wasp and hornet nests right there. About 7 years ago, it was time for Grandpa to move off the farm. It was getting to be too much to keep up the old house, the barn, the yard, and deal with things like freezing water pipes and water getting in through the windows. He moved to an independent-living duplex in town. He was always worried about what would happen to the farm. Over the next few years, the farm would sometimes be vacant, sometimes have renters. Some renters did some work on the house, but the barn sat. Grandpa would eventually move into the nursing home because of his Parkinson's. Two and a half years ago, Grandpa passed away. I shared some memories from Grandpa's place at the funeral. But what of the house, the farm now? Renters went, and it sat empty. Nothing was in great shape, and the house needed a lot of work. Perhaps the whole place would be leveled and turned back into the prairie that it once was, or used as farmland. Perhaps someone would have an interest someday. A year and a half ago, Jacob was on the way. Terah and I had occasionally thought of buying Grandpa's place, but we never talked about it seriously. We figured that we better finally decide what we're doing, before we have a baby around, or a child in school. So in April 2006, we went out to the farm and checked it out. The picture at the top of this post is from that visit. Terah and I checked out the house, the barns, the granary, the pasture, and the creek. As we walked past one of the barns, a pigeon flew out. Terah jumped with a shout. I grew up around barns and didn't really notice it. In the big red barn, besides Grandpa's tractor, we found some remnants from years ago: some old bales, corn cobs that raccoons had found long ago, several generations of electric fencers, old appliances. And we decided to go for it and buy the farm. This was right at a year after Grandpa died. The family always liked to get together for Easter. What would happen for 2006? Well, they decided to have a picnic out at the farm. It was vacant, and a bit eerie. Yet they knew that we were working on buying the place and moving in. All but one took a last look through the house before our renovations began. The one person who didn't was my great aunt, Grandma's sister. She said, "I haven't been in this house for years. I remember how it looked back then. I don't want to remember how it looks now, run down like this. So I'm not going in. But once you have it all fixed up, THEN I'll go in!" In June of 2006, we bought the farm. One month later, we lost this barn, and two other buildings, to a fire at our yard. This is what the beautiful red barn looked like that sad afternoon last year: ![]() As I wrote back then, nobody got hurt, the barn was insured, but "somehow, despite all these things, it still feels like we lost a little bit of Grandpa today." 2006 was a hot, dry summer. We had a patch of debris, then a patch of dirt, where the barn once stood. 7 months ago, Terah, Jacob, and I moved out to the farm. For the first time in 80 years, someone could stand in the farmhouse in the evening, look to the west, and see the colorful Kansas sunset over the pasture; the trees down by the creek; and even the neighbor's barn off in the distance. It was a beautiful sight, but it was also sad; that's not the view we had expected. But then a surprise. This spring and summer, plants started coming up where none had grown for 80 years. But only where this barn stood -- not where the other two buildings were. We watched as they grew tall. I'm sure decades of animals hanging out there were well appreciated by the plants. As they grew, it looked like we might be seeing Terah's favorite flower: wild Kansas sunflowers. And sure enough, they were. Last weekend, Terah, Jacob, and I went out to the old barn. I took some pictures of its new appearance. ![]() This one stands where Grandpa's tractor used to be parked. ![]() And here we see a lifetime of flowers, from the old and withering, to the young just about ready to bloom. ![]() At the edge of the sunflowers, there's an old plow next to them. Though you might think it's barn-colored. ![]() Animals continue to be attracted to the area. Here's one of the smaller visitors. ![]() And here's a picture of almost the whole patch, right where the barn used to stand. I still mow right up to it. I still miss the old barn. But somehow it still seems to be full of surprises and worth exploring. I wonder what next year will bring. And I wonder if, a few years from now, Jacob will tell his friends about mowing right up to the sunflower patch, going fast to try to avoid any trouble with the bees. Thursday, August 30. 2007Technology
Two days ago, I was out by the road digging a hole for our mailbox.
Along comes a guy on a tractor. The tractor was built in maybe the 1960s. It had no cab, and was loud, as tractors are. Attached to the back was a mower. It had long since lost any part of paint that was on it, and appeared to be made of rust. The farmer driving this tractor was wearing a bluetooth earpiece for his cellphone. (I don't think there would be any way to use a phone while driving that tractor due to the noise, but hey.) Now, the rest of the story... This being rural Kansas, the farmer saw me and stopped to chat, turning off the tractor first, of course. He introduced himself as "that crazy guy from south of town", and of course had a pretty good idea of who I was. After all, he's lived around here for decades and knew my grandpa. I told him why I was digging the hole for the mailbox. There's going to be a second house down our mile, so now the post office will actually deliver to a mailbox at our driveway, rather than one almost a mile away. I thought he looked confused, so I pointed down the road and said that's our mailbox on the corner. "Oh, I know. I probably shouldn't say this, but I knew when you moved in because I checked your mailbox one day and it didn't have 40-year-old ads piling up anymore." We chatted a few more minutes, about the neighbor's goats, how annoying it is that he can't get DSL, why he wishes he could still use DOS instead of Windows. Then he went off towards home. He had stopped his tractor in the middle of the road. But it wasn't a problem. Nobody drove by that whole time anyway. Wednesday, August 29. 2007Desktop Linux: Gnome
I had been intending to write an entire series of posts about our corporate switch to Linux on the Desktop. To date, I wrote only one introducing the project and our reasons for switching from Windows. That was back in April.
Today I'd like to start talking about it all some more. We have standardized on Gnome for our desktops. Given the Windows background of our user base, it was pretty much a given that we would have to use either Gnome or KDE. Something like fvwm or a non-integrated environment just wouldn't be a good option. We evaluated both Gnome and KDE. The very "clean" appearance of Gnome was a nice thing for us. KDE seemed to be to "chatty", talked about entering in audiocd:/ when it shouldn't have needed to, and generally violated the KISS and principle of least surprise too often. That said, I continue to run KDE for my personal desktop because Gnome just doesn't have the flexibility that KDE does. It is too bad that Gnome has gone on this remove functionality kick, and KDE hasn't gotten the KISS religion yet. Anyway, Gnome worked well for the most part. We have set some defaults in gconf for things like panel icons. We also set a few mandatory defaults. I fixed a couple of bugs in the vfs system related to nfs4 support, which manifested themselves as icons for files newly saved to the desktop never showing up. We wanted to present a customized menu to people based on what their job function is. That is, we are using a single system image, so all apps will be installed on all machines. But we didn't want people to have to see a ton of software that they don't use. That was easily enough accomplished for custom apps by creating desktop files with mode 0640 and setting the group to the set of people that should see the program on their menu. We removed a few stock programs (such as the terminal) from the menu as well, using dpkg-statoverride. That was also quite easily done. However, I will say that the entire Gnome XDG menu thing is woefully under-documented. We use Firefox for the standard web browser. It is integrated well enough with Gnome and we have no problems there, aside from sites that are IE-only. We solve that with a Windows terminal server, which I'll discuss later. Our network printing was already based on Cups. The individual machines are set up as Cups clients only, which works fine. We did find, however, that gnome-cups-manager automatically installs a tray monitor for cups. This monitor puts little printer icons on the tray when printers are in use. Unfortunately, it figures out which printers are in use by polling the server, and it is turned on by default out of the box, with no good way to disable it short of dpkg-statoverriding it to 0000. You can imagine that hundreds of users times dozens of printers times numerous polls per minute created quite the load on the server. This was a really braindead design and the people that wrote it should have known better. It is also quite useless to have icons coming on for all the printers on the network, which on some networks could be thousands, and not even on the same continent as the user. Printing is generally a bit iffy in Gnome. They seem to be transitioning between about 3 different printing toolkits, all of which have different print dialog boxes with different supported features and different ways of selecting printers. One chief annoyance is that the print box in evince (the document/PDF viewer) does not let people access printer-specific features such as hole punching and stapling. So we installed gtklp and xpdf for people. The people that print heavy PDFs are huge fans of gtklp these days; it's a nicer solution than we had in Windows. Nobody really likes evince. We also have had some trouble with evince generating PostScript output that some printers can't grok. It sounds like all this should be much better in newer versions of Gnome, which if true, would be welcome news. The Gnome screenshot tool makes it easy to save off a screenshot to a file, or to drag it into an email, but it is difficult to print it (you have to save it first). That was a common complaint around here, so I wrote a little wrapper around xwd and gtklp for printing screenshots. People really like that because gtklp gives them lots of options about orientation and size of the image if they want it, or a simple "Print" button to click if they don't care. We set a gconf default to bind this to Ctrl-PrintScr and it works well. KDE's screenshot tool is much more capable, and if we were using KDE, we wouldn't have had any problem with screenshots. The bottom line on Gnome is that we, and are users, are happy with it after we've made these customizations. But we have had to do more customization that we should have. I still think that Gnome has been better for our users than KDE, but I do wonder how long we'll be able to survive with our "no KDE libraries" policy, as people want ksnapshot, kolour, etc. Friday, August 17. 2007Time: Failing Our Geniuses
An interesting article on Time today: Failing Our Geniuses about how the most talented students are being sidelined by current education policy. Some choice bits:
Since well before the Bush Administration began using the impossibly sunny term "no child left behind," those who write education policy in the U.S. have worried most about kids at the bottom, stragglers of impoverished means or IQs. But surprisingly, gifted students drop out at the same rates as nongifted kids--about 5% of both populations leave school early. Later in life, according to the scholarly Handbook of Gifted Education, up to one-fifth of dropouts test in the gifted range. Friday, August 17. 2007Linux Hardware Support Better Than Windows
Something I often hear from people that talk about Linux on the desktop is this: people want to be able to go to the store, buy hardware, and be confident that it will Just Work.
I would like to point out that things are rarely this simple on Windows. And, in fact, things are often simpler on Linux these days. Here's the example that prompted this post. I have a computer that's about 4 years old. It's my main desktop machine at home. It was still fast enough for me, but has been developing all sorts of weird behaviors. Certain USB ports stopped working altogether a few months ago. Then it started hanging during POST whenever I'd try to reboot -- but would still boot OK about 80% of the time after a power cycle. Then it started randomly losing contact with my USB mouse until a reboot. And the last straw was when the display started randomly going out. I've told everyone that my machine has cancer and is slowly dying. The case is a pretty nice full tower -- solid and sturdy. I have an 160GB IDE drive in it. So I figured I will upgrade the motherboard, CPU, RAM, and add a 500GB SATA drive since they're so cheap these days and I'm running out of space. I'd also have to buy a new video card since my old one was AGP and the new motherboard only has PCI Express for video. So about $700 later from Newegg (I got a Core 2 Duo E6750), the parts arrived. I spent some time installing it all. The motherboard had only one IDE channel, and I didn't have any IDE cable long enough to connect both the IDE hard disk and the optical drive, so I popped in an old Maxtor/Promise PCI Ultra133 controller I had sitting around to use with the DVD burner. Now, to recap, the hardware that the OS would see as new/different is: CPU, RAM, IDE controller, SATA controller, Promise IDE controller, integrated NIC, sound, video. Then the magic smoke test. I turned on the machine. Grub appeared. Linux started booting. Even though I had switched from the default Debian "supports everything" kernel to a K7 kernel, it still booted. And every single piece of hardware was supported immediately. There was no "add new hardware" wizard that popped up, no "I've found new hardware" boxes. It just worked, silently, with no need to tell me anything or have me click on anything. Only one piece required configuration: the NIC, thanks to some udev design flaws (it got renamed from eth0 to eth1 by udev). That took 20 seconds. Debian saw the IDE HDD, the SATA drive, the Promise controller, the DVD burner, the video card, the sound, and it all worked automatically. And Debian is not even a distro that occurs to a lot of people when they think of great hardware support. Now let's turn to Windows. The Windows Nightmare I have a legal copy of Windows XP Home that was preinstalled on the machine when I got it. I resized its partition down to about 20GB so that I could use 140GB for Linux. I use it rarely, primarily for gaming, and I've bought about 3 games in the last 4 years. I usually disconnect the network when I boot to Windows, though I do keep it current with updates. I did some research on what Windows was going to do when I replace the hardware. The general consensus from people on the 'net is that you can't just replace a motherboard and expect everything to be happy. There were generally three different approaches suggested: 1) don't even try, just reinstall; 2) do a rescue install after you move over; and 3) use sysprep. The rescue install has to be done by booting from an XP install CD, then picking a rescue install option somewhere. It will overwrite your installed Windows with the version from the CD. That means that I'd have to re-apply SP2, though bits of it that didn't get overwritten would still be on the hard disk, and who knows what would happen to the registry. Option #3 was to download sysprep (must have the Genuine Disadvantage ActiveX to get the free download from MS). Sysprep is designed to be used just prior to taking an image with ghost for replication. It removes the hardware-specific config (but not the drivers), as well as the product key, from the machine, but otherwise leaves it untouched. On the next boot, you get the "Welcome to XP" wizard. One other strike against #2 is that Compaq "helpfully" didn't ship any install CDs with the machine. Under Windows, they did have a "create rescue CD" tool, which burned 7 CDs for me. But they are full Compaq-specific CDs, not one of them an XP CD, *AND* they check on boot to see if you're using the same Compaq motherboard, and exit if not. Highly useless. So I went with sysprep. Before my new hardware even arrived, I downloaded the Windows drivers for all of it. I burned them to a CD, and installed as many as I could on the system in advance. About half of them refused to install since the new hardware wasn't there yet. I then took a raw image of the partition with dd, just in case. Finally, right before I swapped the hardware, I ran sysprep and let it shut down the machine. So after the new hardware was installed came the adventure. Windows booted to the "welcome to XP" thingy. The video, keyboard, mouse, and IDE HDD worked. That's about it. I went through the "welcome to XP wizard". But the network didn't work yet, so I couldn't activate it. So I popped my handy driver CD in the drive. But what's this? Windows doesn't recognize the DVD drive because it doesn't have drivers for this Promise controller that came out in, what, 2001? Sigh. Downloaded the drivers with the imac, copy them to a CF card, plug the USB CF reader into Windows. While I was doing that, about 6 "found new hardware" dialogs got queued up. Not one of them could actually find a driver for my hardware, but that didn't prevent Windows from making me click through them all. So, install Promise driver from CF card, reboot. Click through new hardware dialogs again. Install network driver, reboot, click through dialogs. Install sound driver. Install Intel "chipset" driver, click through dialogs. Reboot. Install SATA driver. Reboot. So the hardware appears to all be working by this point, though I have a Creative volume control (from the old hardware) and a Realtek one in the tray. Minor annoyance to deal with later. Now I have to re-activate XP. I dutifully key in the magic string from the sticker on my case. Surprise surprise, the Internet-based activation fails because my hardware is different. So I have to call the 800 number. I have to read in 7 blocks of 6 digits, one block at a time. Then I answer some questions: have I activated Windows before, have I changed hardware, was the old hardware defective (yes, yes, and yes). Then I get 7 blocks of 6 digits read to me. Finally Windows is activated. PHEW! Why they couldn't ask those questions with the online tool is beyond me. Anyhow. Linux took me 20 seconds to get working. Windows, about 2 hours, plus another 2 hours for prep and research. I did zero prep for Linux. I made one config change (GUI users could have just configured their machine to use eth1). Other cool Linux HW features Say you buy a new printer and want to get it set up. On Windows, you insert the CD, let it install 200MB of print drivers plus ads plus crap plus add something to your taskbar plus who knows what else. Probably reboot. Then the printer might actually print. On Debian, you plug in the printer to the USB port. You type printconf. 5 seconds later, your printer works. I have been unpleasantly surprised lately by just how difficult hardware support in Windows really is, especially since everyone keeps saying how good it is. It's not good. Debian's is better, in my opinion. Thursday, August 16. 2007There's a redneck joke here somewhere
Back when I was in high school, I heard a Jeff Foxworthy CD once. He had this "you might be a redneck if" routine. We resemble one of his comments: "If the directions to your house include 'turn off the paved road', you might be a redneck."
What if the road -- the county road, not our driveway, mind you -- has weeds growing down the middle? And you can tell that the county maintainer has been by recently because there are fewer, and shorter, weeds than before?
Tuesday, August 7. 2007Disasters happen
It's been one of those days.
It started with me forgetting my laptop bag at home. Then I had to work with an attorney on some things. He's a nice guy, and does a good job, but you know, it's not what I'd really like to spend my day doing. Then in the middle of the afternoon, I hung up the phone and checked my email. About 50 messages from Samba telling me that processes with various PIDs had crashed unexpectedly. Uh-oh. I think we still have some 80ish people using that. About a minute later, a coworker says, "John, I've been bad." "Is that why I just got 50 emails from Samba?" "No. Well, yes. Well, maybe. I don't know." It turned out he was working on a restore from tape that, out of necessity, grabbed more data than he needed. He meant to type rm -r ./var but typed rm -r /var instead. Oops. He hit Ctrl-C halfway through, so /var was still there enough to send email but not enough for Samba (or, apparently, NFS) to work.As he dashed off to pull yesterday's tapes from offsite storage, I prepared the restore and made a plan. We hadn't installed any software since yesterday, so I restored var to a temporary location, took the server down into single-user mode, overwrote the /var that still existed, and rebooted the Xen instance in question. Everything back to normal. Except, that is, for the potentially dozens of users that will require assistance running SCANPST.EXE because their Outlook PST, being the fragile heap of garbage that it is, will have somehow been corrupted by this little incident. So, what did we learn from this?
Tuesday, August 7. 2007
Posted by John Goerzen
in VOIP & Asterisk at
21:13
Comments (3) Trackbacks (0) Defined tags for this entry: asterisk
I suppose this means I'm a geek
I work in an open-plan office. Normally I like to listen to some of my iPod's music, or NPR or something, at some point during the day. It helps me tune out distractions when I'm coding or concentrating on something. My iPod, and my nice Etymotic headphones, get transported to and from work each day in my laptop bag. Today I forgot the laptop bag at home.
What to do? I could just work without headphones. I'd be fine, but you know, I've got standards here. My job involves working with computers, so I ought to be able to come up with a workaround, right? So lesse... what do I have? One binaural (mono sound, but speakers for each hear) telephone headset. One Polycom SIP phone, connected to our corporate Asterisk system. One workstation with sound capabilities. One installation of Asterisk on this workstation for testing purposes. And, a pre-existing path from the corporate system to the workstation system for testing Asterisk. (Very handy that, and used a lot when we were doing active Asterisk work.) So in less then five minutes I had music going via my telephone headset. Lo-fi, and not noise-dampening like the Etymotics, but I enjoyed it for the simple fact that it was being played *over the phone* at no cost to anyone. My desk phone supports multiple "lines", so I still could place and receive calls just fine. Should anyone care to look, they'd find a 5-hour call from me to myself deep in the Asterisk logs. My own workstation logs will show that I put myself on hold for 5 hours (since I used Asterik's music-on-hold feature to play my own selections). IP telephony is fun. So is Asterisk. Friday, August 3. 2007
Posted by John Goerzen
in Programming at
03:52
Comment (1) Trackbacks (0) Defined tags for this entry: oscon haskell oscon2007 oscon07
Haskell Fun
Bryan O'Sullivan noted over at the Real World Haskell blog that Haskell made quite the impact at OSCon. And I can attest to Simon Peyton-Jones having trouble leaving the building because of all the people that wanted to talk to him about Haskell. It was interesting to think about "why now" for Haskell's popularity. Bryan's post has links to the video of Simon's talks, which are great. (Sample quote: "Oh look, a whiteboard has appeared as if by magic! What joy!")
I followed Bryan's link to the Haskell/OSCon-related blog posts at Technorati. Here's an interesting one by chromatic, who gave some Perl talks at OSCon. Favorite quote: I sat next to Nat Torkington at the tutorial. He kept rubbing his temples. At one point I leaned over and said, “The interesting thing about Haskell is that its functions only take one argument.” He turned green. So what is this business about Haskell functions taking only one argument? Let's look at a quick example. Say I wanted to write a function to multiply two numbers. I'd write: mul a b = a * bI could give the type of this function like this: mul :: Int -> Int -> IntYou could read that as "mul takes two Ints and returns an Int". And you can think of it this way. But you could also write the type this way: mul :: Int -> (Int -> Int)It means the exact same thing and is valid to Haskell. To read it, you'd say "mul takes an Int and returns a function that takes an Int and returns an Int." And truly this is what Haskell functions that take multiple parameters are doing. Now, I can say: fifteen = mul 3 5mulByThree has type Int -> Int; it's a function that we got by simply not applying "mul" to all its arguments. fifteen'' illustrates what is going on internally when you write "mul 3 5". It turns out that being able to call a function with multiple arguments is just some syntactic sugar to Haskell.This is a tremendously useful feature. For instance: filter (>= 10) [1..20]I've applied >= to only one argument here. That's fine; it returns a function that's exactly what filter wants. I've been watching the video of Simon's Taste of Haskell talk. I could *hear* when the audience grasped the utility of this because there was a collective "Oooooo!" from them. By the way, Haskell has type inference, so I didn't have to give types at all. Oh, and you can also refer to the function itself by not giving any arguments. mul = (*)This is one small reason I like to say "Haskell manipulates functions with the same ease that Perl manipulates strings." Mind-bending, isn't it? |
The ChangelogMost Popular TagsSyndicate This BlogBlog Administration |

Comments
Thu, 15.05.2008 05:01
In general, it is impossible t o prove that something is rand om, and difficult to ascertain that something is suffi [...]
Thu, 15.05.2008 00:24
There should be testing of pat ched programs before they are released, when feasible. This bug could have been caug [...]
Wed, 14.05.2008 16:58
Sure, it's only modifiable if it's a pointer... but pointers are the only practical way to pass many things: strin [...]
Wed, 14.05.2008 16:47
"Especially since you may be d ealing with functions that cal l other functions 5 deep, and one of those functions m [...]
Wed, 14.05.2008 16:22
Imagine that you are knowingly breaking the law by not apply ing for the appropriate visas. Not only that, but you [...]
Tue, 13.05.2008 18:59
I have heard that argument bef ore, and frankly, I'm unconvin ced. I am not aware of any Am erican jurisdiction wher [...]
Tue, 13.05.2008 18:55
What a wonderful point and pos t. You're quite right, and it 's high time we all revisit th e notion that legality d [...]
Tue, 13.05.2008 18:52
Quite right. Article fixed ab ove.