Blog

  • Fun with Michael’s future bedroom

    Well here it is New Year’s Eve again. Once again, I took a nice, (2 week) long holiday break from work. And once again, I started out hoping to get tons done around the house, but it didn’t happen. Well OK, I got some stuff done, just not as much as I wanted to. It’s tough getting much done around the holidays, even when you only consider the social and family obligations. Then you add two young children to the mix, and that’ll be all she wrote. Next year I may rethink the long break, and maybe do a week around the holidays and another week a little later in January or Feburary.

    In any case, I did manage to get several solid hours of work in on Michael’s bedroom, mainly trying to fix up the water-damaged area around the window seat. It’s a huge mess. I finally got all the crumbling plaster removed, and squared up all the openings, so I can patch the areas with drywall. The Dremel diamond wheel does a pretty good job at cutting through the plaster topcoat. If I run a shop vac at the same time, there’s not much dust. However, the Dremel isn’t the ideal tool for making square cuts in the plaster, because the tool itself is wider than the cutting wheel. I was able to make do with it, but what I really need is a tool that won’t get in the way of the cut, like a tiny angle grinder.

    It will be really interesting to see how the finished product ends up looking. There are some issues with using drywall to patch plaster. It’s hard to get the drywall exactly flush with the existing plaster surface. In particular, the thickness of the plaster can vary from place to place, while drywall is always a single uniform thickness. I think I’ve got it pretty close, and my current plan is to skim-coat everything with drywall mud to get a smooth surface. I’m cautiously optimistic that this will give me a good final surface. Time will tell.

    Once the window seat area is done, I have the other walls to prep. The existing paint is in horrible shape, so it looks like I’ll be doing more skim-coating…

  • mp3act hacking

    9 months or so ago, I installed mp3act, a PHP-based online MP3 streaming server. I’ve found that I really like it, but like everything else, it would be oh-so-much cooler with a few little tweaks. Development on it seems to have stagnated (no releases since mid 2005), so I’ve decided to hack on it a bit to make it do my bidding. So far, I’m really happy with the results.

    Here are some of the issues I’m trying to address:

    • mp3act doesn’t deal well with albums containing multiple artists. It breaks each unique artist out into its own separate album. So for example, if you have an album called ‘great songs’ containing songs from artist a, artist b, and artist c, mp3act will create 3 albums called ‘great songs’, each containing songs from one of the three distinct artists. This is not what I want.
    • mp3act doesn’t handle artist sorting very well. If you have an album by Tom Petty and the Heartbreakers, mp3act displays it under ‘T’. If you want it correctly filed under ‘P’, the mp3 would need to be tagged ‘Petty, Tom and the Heartbreakers’, which again, is not what I want.
    • mp3act’s search and download features are a little lacking. The search results page allows you to play and/or add songs to playlists one by one, but there’s no ‘play all’ or ‘add all to playlist’ feature. And, it only allows downloads of albums. A ‘download playlist’ feature would be really useful.
    • With multiple-CD sets, if the songs on multiple discs are grouped under the same album name, mp3act will interleave the tracks together (disc 1 track 1, disc 2 track 1, disc 1 track 2, disc 2 track 2, …).

    There are a few other little things, but those are the biggies. I’m taking a two-fold approach to dealing with these: tweaking the mp3act database tables for some, and tweaking the mp3act PHP code for others.

    mp3act’s database schema is simple and easy to understand. It has a few quirks (biggest quirk: the year field is associated with albums, when in fact, it should be associated with songs), but I’ve found that I can get a lot done just by importing music into the database, and then going through manually and tidying things up. Specifically, I’ve corrected the multi-artist album problem and the multi-disc track interleaving problem this way.

    To reconstruct a multi-artist album, first find all of its parts:

    select * from mp3act_albums where album_name like '%name here%'

    Note album IDs, which are typically consecutive. Then create a new artist, if necessary, for the album:

    insert into mp3act_artists values(null, 'Various Artists', '')

    Now create a new album:

    insert into mp3act_albums values(null, 'name here', last_insert_id(), 'genre here', year, '')

    Then, using the album IDs from the first query, re-associate songs with the new album:

    update mp3act_songs set album_id = last_insert_id() where album_id between low id and high id

    And finally, delete the old, no-longer-used albums.

    delete from mp3act_albums where album_id between low id and high id

    That’s it. Now, this works great, but it does introduce a couple of problems. First off, when you browse to one of these albums, it doesn’t show the artist name in the track listing. And secondly, there’s now no way to browse to the individual artists that make up the album (unless you have other albums by those artists). The first issue is a quick, easy fix to the PHP code. The second is more complicated. For this one, I added a separate ‘browse’ option that browses songs by artists, instead of albums. It was a bit of work, but not too bad.

    And so it goes. Here’s a summary of all the changes I’ve made so far.

    • Fix database to deal better with multi-artist albums
    • Fix database to deal better with multi-cd track ordering
    • Show artist name in track listing for album/song browse
    • Add ‘browse for songs by artist’ feature
    • Create custom genres for some albums. This is easy to do and you are not limited to valid ID3 genres, which is nice, because they suck.
    • Modify ‘browse for albums by artist’ to not show artists with no corresponding albums
    • Fix artist sorting issue by adding ‘sort key’ field to albums table, and modifying artist entries where the sort key is different from the artist name

    mp3act works very well for me with these changes, and the framework has the potential to do a lot more. Over time I’ll keep hacking on it to add features and improve its operation.

    Followup… My next big “to do” is to make the album downloads more flexible. mp3act handles downloads by building a zip file on the fly, then sending this to the browser as an attachment. But the zipfile library it uses (which is included with the app) is kind of bare-bones, and it requires the mp3 library to have a certain directory structure. Looking at this library, it’s easy to see why downloads are not as flexible as I would like. Fortunately, PHP 5.2 now includes a much nicer built-in zipfile library, so the first step is to modify mp3act to use this. At that point, I should be able to greatly improve the download functionality.

  • Floor drain plan

    OK, so here’s the current plan for the basement floor drains.

    I haven’t quite finished poking and prodding the drains in the office and the back basement, but assuming the configuration is the same as what I predicted in my previous post, I want to scope them out with a video drain inspection system like the Ridgid SeeSnake. I think it’s the only way I’m going to find anything concrete out about their configuration. SunBelt Rentals, which has a location in Laurel, rents the SeeSnake at a base rate of $126 a day, which seems reasonable.

    Assuming I can get my hands on a SeeSnake, I may need to do some surgery on the drain(s) to do my inspection, depending on which SeeSnake model is available. The camera on the base model is 1.75″ in diameter, which is too large to fit through the bell trap opening in the drains. I’ll need to enlarge the opening to about 2″. The drain is cast iron, so I will initally try using a tungsten carbide hole saw. Home Depot has one for around $12-$15 that I hope will do the job; Grainger has some much more expensive models. Drilling the drain(s) out will lose the bell trap functionality, but that’s not a huge loss because I don’t have bell trap covers for most of the drains anyhow.

    During the SeeSnake rental, I may want to simultaneously rent a power drain auger with cutter blade. This will allow me to inspect, then clear obstructions, reinspect again, etc.

    12/12 – A week or so ago I checked out the carbide hole saw that Home Depot sells. It looks a little too shallow to clear the raised bell trap opening and reach the area where it would need to cut. As a workaround, I might want to try using a sawzall to make shallow radial cuts through the opening, so I can break off the raised area. Home Depot also sells tungsten carbide sawzall blades.

    Also, today I was able to confirm that the bar sink drain ties into the floor drain plumbing. With the drain plumbing relatively empty (it’s been several days since it rained) I ran a large volume of water down the bar sink, and I was able to see the water flowing through the drains in the office and the back basement. This also confirms that the drains flow from east to west, and it raises the possibility of using the bar drain as an entry point for the video snake. Access is a little tough under the sink, though.

  • Basement floor drains again

    I’m slowly learning more about our basement floor drains. I bought a small pump (a Little Giant PP-1) that sucks and discharges through a garden hose, and it does a wonderful job of pumping the drains out. A short length of hose easily fits down the drain, and I run the discharge into the office sump pump. The drain system holds quite a bit of water — as a point of reference, if the standing water is about 4″ below the top of the drains (a typical situation a couple days after rainfall) it takes roughly 20-25 minutes for the PP-1 to pump them out. This is slightly longer than the PP-1’s 15-minute duty cycle, so I have to do it in two “shifts”.

    With most of the water out of the drains, I’m more able to inspect the drains and see how water flows through them. In the back part of the basement, It appears that the 4″ vertical drain pipe goes directly down to a cast iron “T”. If I run a tape measure down the drain, I’m able to get it to go in either direction a good ways. This seems to indicate that the lateral line is directly underneath the drain, and it’s 4″ cast iron. If that’s indeed the case, then that is good news, because it will be easy to get a sewer auger into the line.

    What’s still not clear, is where the drain lets out, and why it collects so much water. The line is a good 7 feet below grade. As to the water, my theory is that the people who did the waterproofing in the well room area tied these drains in with that system, and the water from that drain tile is draining through the floor drain pipes. Since the floor drain pipes are plugged up, the water collects until it overflows into the well room sump pump. It’s really the only theory that would account for the volume of water that collects in the drains (the water problems in the well room area are another, totally separate issue…)

    Next steps: I’d like to prove the theory that the lateral line is directly under the drains. I think I can do this by running a snake down one drain and seeing if I can spot it in a different drain. Then, I want to empty the drains and observe what happens during a rain storm. That will (hopefully) confirm that the water is coming from the well room and not the other direction. And then finally, I can look into snaking the line, doing a video inspection, etc.

  • End-of-season outdoor work drones on

    I’m still having no end of fun working on the usual mid-November chores of leaf removal, and winterization of the pool and lawn equipment. Saturday, I finished up with the pool, following my own instructions, and it went smoothly. I did forget to backwash the filter before shutting it down, but it wasn’t too dirty to begin with, so I don’t think it’ll be a huge problem. The bad news is, my air compressor decided to go on the fritz — appears to be a problem with the pressure switch. So, add one more thing to the list of stuff to fix..

    For leaf removal, I’m essentially doing the same thing as last year, although I hope to finish up before Christmas Eve this time around 🙂 I’ve got the basic drill down:

    1. Rake all the grassy areas into 5 or 6 giant piles.
    2. Get up on stepladder, remove leaves from roof valleys and gutters.
    3. Use gas blower to blow leaves in paved areas (deck, pool, driveway) into 2 or 3 giant piles.
    4. Use gas vac/mulcher to suck leaves out of corners and other hard-to-reach areas.
    5. Starting with the area outside the master bedroom and working towards the side street/mulch pile, mulch up all the leaves with the chipper shredder.
    6. Every Sunday or Monday, stuff as many non-mulched leaves into trash cans as possible and put out for yard waste pickup. This reduces the amount of leaves that need to be mulched. Mulching is cool and all, but it’s laborious and time-consuming.

    The main problem with this method is that the chipper/shredder bag doesn’t hold a whole lot of leaves. To reduce trips to the mulch pile, I like to use trash cans and a wheelbarrow as temporary containment devices for the shredded leaves (one trash can will hold two bags full of mulched leaves, providing they are packed down). However, it’s still a big pain to be constantly removing the bag, emptying it, reattaching it, etc. over and over again. It’s kind of hard on my back, too. I’ll be really happy if I can eventually figure out a way to cut the bag out of the equation.

  • Gone Fishing

    We moved the upstairs computer today, into our library/study. So, I figured I’d fish some Cat 5 and install an ethernet jack there. Nothing I haven’t done before… should take, oh, an hour or so, right? Well, not this time, it turns out..

    The difference between this time and all the other times I’ve fished wire, is that this time I’m fishing the wire in an outside wall. And I learned today that my outside walls apparently have lots of horizontal fire blocking in them. After awhile of fooling around in the attic with a 4′ flex drill bit (the longest one I have), I came to the conclusion that I either need a longer flex bit, or a new strategy. So, I’m going to try fishing down to the basement instead. The hitch with this is, there’s a floor joist blocking most of my access to the area where the wire would come through. However, I think there’s enough space there to get the job done.

    Why don’t I just use wireless, you ask? Well, that would be too easy, wouldn’t it?

    Followup 11/11… OK. I can say that absolutely without question, that was the hardest I’ve ever worked to fish a wire through a wall.

    After a few attempts, it became clear that wiring through the basement wasn’t going to happen. It basically boiled down to: no drilling access from below, and no way to drill a straight hole downwards through the hole in the wall. I would have had to spend more money on specialized tools, or make more holes in the wall to facilitate drilling. That made it a non-starter.

    So, I went back to my original plan to fish through the attic. To get to the wall opening, I needed to drill down around 5 feet, through a top plate and two pieces of 2×4 fireblocking (the beveled ceiling in the room actually helped me out — otherwise the distance would have been greater than 5 feet). My 4 foot flex bit was not long enough. So, I lengthened it using a 12″ bit extender I had lying around. That did the trick. Here was the winning formula:

    1. Drill a 5/8″ hole through the top plate. The flex bit is only 3/8″, but the initial hole needed to be 5/8″ to accommodate the bit extender.
    2. Attach extender to flex bit, and drill through fire blocking until the drill bottoms out on the top plate.
    3. Go downstairs, locate bit in wall opening, and attach pull wire through hole in bit.
    4. Smear wire pulling lubricant on the bit and the pull wire.
    5. Go back into attic, and carefully back the bit out of the hole.
    6. Detach pull wire from bit. Attach Cat-5 wire to pull wire with electrical tape. Apply wire pulling lubricant.
    7. Go downstairs and pull wire down through wall opening.

    That’s it. Seems simple, but it took several failed attempts, many swear words, and a couple of skinned fingers to get it done. Bottom line, I won’t be fishing wire through outside walls any more unless I absolutely have to…

  • Demystifying our basement floor drains

    I’ve decided to try to figure out our basement floor drains. My goal is to ascertain:

    • How the drains themselves are configured;
    • Where the plumbing goes;
    • Why they seem to hold water indefinitely; and
    • Why they back up into the basement during heavy rainstorms.

    My goal is to either fix the existing drain system (I’m assuming it’s clogged), or reroute the drains somewhere else, like a sump pit. A third, less desirable, option would be to just close the drains up completely. But I’d rather keep the drains around, because (properly working) floor drains provide cheap insurance against flooding from things such as burst washing machine hoses, busted water heaters, etc.

    My current hunch is that the drains tie into an old network of underground pipes that also used to handle the rain downspouts. I’ve abandoned most of these in favor of downspout extenders and splash blocks. However, the pipe openings are still there, and they still collect some water in rain storms. Assuming the original piping is plugged up, this could account for the rising water in the drains during rain storms.

    [More:]

    Yesterday, I tried sucking some water out of one of the drains using a wet/dry vac and some PVC piping sized to fit into the drain openings. I’d estimate I sucked out around 20 gallons before giving up — much too labor intensive. However, I managed to get the water level down around 2 1/2″, and the water dropped around the same amount in all the floor drains I checked, which seems to confirm that the floor drains are tied together, and that the pipes underneath them are relatively clear. There’s still too much water to see all the way down to the bottom of the drain, though. Interestingly enough, after 12 hours or so, the water level had crept back up around 1/2″. No rain during that period, and I’m relatively sure it’s not ground water — our water table is not that high.

    Next up, I want to get the drains completely free of water, and try to figure out where the pipe exits the drain. Apparently there’s quite a bit of water down there. So, I’m going to need a better (less labor intensive) way to get the water out. I’m going to try a drill powered pump, with the discharge going into the sump pump pit. With the drain free of water, I’ll try to get an idea where it goes, and see if there’s any chance of getting a snake down there.

    With the drains empty, I’ll then try flooding a couple of the downspout pipes outside, and see if any of the water ends up in the drains. That will tell me whether they all tie together. At that point, can make some decisions as to what to do next.

    Aah, the joy of old houses. Stay tuned!

  • Washing Machine Fun

    My SIL’s washing machine died the other day. It fills and drains OK, but won’t spin or agitate. It’s a Whirlpool direct drive (badged as a Sears Kenmore). I did a little poking around on the net, trying to identify the symptoms, and it appeared that the problem may be the motor coupling. I’ve always been partial to Whirlpool appliances, particularly washers and dryers, because of their easy serviceability. This one was no exception. Following the instructions I found at the web site, I had the motor out in about 10 minutes, and the coupling was indeed broken. So, tomorrow I’ll pick up a new coupling, put it back together, and see if it fixes the problem.

    This is actually my second washing machine repair. Our house has a similar Whirlpool direct drive washer, and a few years back, some “stuff” found its way into the pump and jammed it up. Fix was a new pump. The disassembly procedure for the two washers was exactly the same, although the Kenmore has a couple of trim pieces covering two of the screws that need to be removed (sneaky sneaky).

    Of course, now that I’m a certified expert at repairing these Whirlpool top-loaders, we’re thinking about going out and buying an LG front-loader. Go figure..

  • Ubuntu 2 1/2 month review, etc.

    I’ve been using Ubuntu now for about 2 1/2 months. The verdict so far: I like it. When I initially installed it, I was looking for a Linux distro with a reasonably well-integrated and user-friendly desktop environment, and Ubuntu (with GNOME) has lived up to those expectations. I really like the GNOME file manager with its built-in sshfs support, and the menu/taskbar integration works really well. When I install an app, it automatically shows up in my “Applications” menu, and the GNOME-aware apps also take advantage of the task bar. This works even with GNOME apps that aren’t provided with Ubuntu — for example, today I installed gSTM, which is a GUI interface for managing SSH tunnels. It’s not part of the Ubuntu “universe”, so I downloaded a .deb from Sourceforge and installed it (there’s a handy GUI for installing .debs too, which Firefox launched automatically). Once installed, gSTM showed up in my “Applications” menu and also added itself to the task bar when I launched it. Very nice.

    The only thing I’m not quite happy with is my age-old gripe with all Linux distros: fonts. I’ve done all my requisite font-fiddling and I’ve got fonts I’m pretty much happy with now. But the font rendering in Firefox is just horrible. Text is always overflowing table cells and other stuff, and certain web sites just look, well, bad. It’s not bad enough to be a show stopper, but I really wish it looked nicer. I’m not sure what’s to blame: Firefox, X, GNOME, or whatever. But I will say that the fonts look pretty good in most of the other apps.

    Linux GUI distros have to fight an uphill battle, because there are so many different apps (some 20+ years old) coded to all sorts of different GUI standards. There’s no way to get all of these apps to look perfect — it’s like herding cats. But the GNOME people have done a pretty admirable job fitting everything together. The user experience is about as seamless as one could hope for.

  • I hate Microsoft

    So, I’m trying to find a nice, easy, seamless way to access data on my home Linux fileserver from XP. The goal is to have drag-and-drop access to files using the Windows GUI, as opposed to using sftp, which I’ve been doing pretty much forever and am finally getting tired of. But of course, with Windows, nothing is ever easy. My first thought was to use NFS, as I’m already using that to provide connectivity for my Mac, and Microsoft kindly provides a free toolkit (“Services for Unix”) which includes an NFS client. Nope.. our Windows PC runs XP Home Edition (which really should be called “Crippled Edition”) and SFU doesn’t work with XP Home. Of course, I didn’t find this out until I had downloaded the entire 200+ meg SFU distro, extracted it, and attempted to run the installer, which happily crapped out. Thanks guys.

    With SFU ruled out, I fell back on SMB. I already run Samba on the Linux box, so I can just map my home directory to a drive letter and do it that way. That’s not quite as nice as NFS because I have to enter a username and password when I map the drive (although I might be able to work around that). But, there’s a hitch with that too — the XP box already has a couple anonymous shares mapped from the same Linux server, and for some inane reason, XP won’t let me map shares from the same server under multiple usernames. But, I outsmarted it by connecting to the server using an alternate DNS name, and that seems to work fine.

    So in spite of Microsoft’s best efforts, I now have an XP box that’s actually somewhat useful on a heterogeneous network. Party on…