It's more than a house. It's an adventure.

Friday, March 31, 2006

I wish I could make this stuff up

As part of my documentation project, I'm having to dig deep into the inner workings of this system. And getting up close and personal with plenty of the code. It's just mind-boggling - some of it is written very elegantly (if oddly formatted), some of it is clearly the work of someone with little experience with the programming environment, or simply trying to stick to a "rule" that was pounded into their head.

Things like "write plenty of documentation in your code":var completed = false; //sets the value to falseGood, glad we got that cleared up. Or perhaps this one:while (j < 8) {
...
j = j+1; //increments the counter
}
(comments of this style are repeated a number of times in this function). Another repeater:codes[7] = "value"; //valueThen there's the date-parsing function which validates that the date you entered is valid. For example, making sure that the day is no more than 31 for January, March, May, July, August, October and December. That's all well and good - but why check each month individually, when same rules apply for all of those, and a simple IF statement will suffice?

But the real brain-buster is this. Every time any form field changes, it kicks off a function which scans through most of the form and hides/shows things, performs calculations, etc. And in addition to that global function, many of the fields have their own functions that that they run afterwards, in response to a change to the field. In terms of performance, it's kind of slow just because it's doing so much. Someone experienced with the app can actually get well ahead of the script with fast keystrokes. But what I found today...wow. When onchange fires for each of the fields in one group, the following happens. The top level in the list is the functions called directly from the onchange - subsequent levels are functions called by those functions, and so on.

  • Function1
    • FunctionA
      • Function2
      • Function3
  • Function2
  • Function3

Yikes? Function1 and Function2 aren't "huge", but they do a fair bit of math and date parsing, and call other functions themselves. At a very basic level, one could double the performance of this block of fields just by cutting out the redundant function calls.

I really wish I had the time, clearance, and reason to refactor all of this. But I'm documenting the system so that it can be replaced.

A friend likened my experience with this code to my experience with owning a 130-year-old house. It really is uncanny how similar the 2 are. The more I dig in, the more I find I need to change or fix. Or just find myself saying "what the...?"

A story fit for Hollywood

And it comes from Hollywood, sort of.

Apparently Kevin Smith, actor, writer, producer, director, and mastermind of Clerks, Mallrats, etc. made some comments that were taken well out of context at a speaking engagement at UPenn recently. Comments about his friend and movie sidekick Jason Mewes. And as a result, he's now publishing a very thorough history of his relationship with Jason. It's filled with some truly horrifying details about Jason's past - his Heroin-addicted, HIV-positive, somewhat absentee mother, his not having any idea who his father is, his barely getting cast in Mallrats, his own Heroin addiction, and more.

Only the first 3 parts are up so far. It'll take a while to read, but it's well worth it, especially if you're a fan of their work.

Thursday, March 30, 2006

And the documentation continues

I'm now somewhere around 300 pieces of documentation in my wiki at work. It's progressign well, though I've mangled some of my cross-references and I'm missing quite a few items, judging by the results of the WantedPages macro I got for Trac. But I'm getting somewhere, and it's approaching the point where I can start comparing it to the system we need to hook up to.

I just hope I don't have to redo it all. It's taken me 2 weeks to get to where I am right now, which is about 80% complete.

Got backups?

We all talk big about having backups of our important data. Most of us, I'm sure, don't actually do it. I've been trying for the past 3 months, but keep hitting a major snag.

I got a 200GB USB2 hard drive for Christmas last year. As my PC only has 160GB of space, total, I was finally in a position to make real, full backups! I hooked the drive up and got to work, starting with my digital photos. That went fine. Then I tried my 60GB MP3 collection. After a while, I locked up. Repeat this cycle a few more times. I always figured it was my off-brand USB2 card - I had had trouble with lockups when I first got it for my printer. I decided I could chug along for a while.

A few weeks ago, I tried again. Same results - I locked up hard when copying from my "media" drive. Whether I used the command line or Windows Explorer, I got lockups. I've been trying again this week. And, once again, the whole system locks. I started wondering if it might not be the USB card after all.

I have, in my PC, 2 80GB drives. My primary is a 2 or 3 year old Seagate 7200RPM model. The secondary is the original drive that came with the computer (now pushing 5 years old), a Western Digital 5400RPM model. The S.M.A.R.T. diagnostics come up showing no significant trouble with either drive, though the WD is a little less healthy - but still within normal parameters. So tonight I downloaded the WD diagnostic utility. Less than 10 minutes into running the "extended" diagnostic...you guessed it, hard freeze.

I also was reminded last night that on rare occasions, while doing a mass update of ID3 tags in iTunes, I'd also been getting freezes. Interesting coincidence. Maybe it's a heat problem? Or just large amounts of disk access? I can copy small batches of files from the WD drive just fine - it's when I try to do more than 5 or 6 gigabytes that I get problems, when making my backups.

So, I'm testing now, copying about 14GB from my Seagate to the external drive. This has been running about 30 minutes now and so far, no problems.

So I guess I have to do my backups in small batches, and then abandon the WD drive? Seems like my only way out at this stage. I don't know that I can trust this old drive any longer. Right now, it's just freezing the computer - how long till it starts corrupting or losing my data?

Sunday, March 26, 2006

Well, that didn't take long

This morning the cats were a little risky and Juniper started chasing Jade around the house. He chased her through the family room, into the master bedroom. But he didn't figure on seeing me at the door!

He tried to put on the brakes. He tried to stop and turn around. But things didn't go quite to plan. Claws don't work so well on wood floors with 2 coats of polyurethane on them. Claws go out, they don't dig into the wood, the ends of the cat try to switch places and...Juniper has christened the floor. We've got a couple feet of claw marks leading to the bedroom door.

Such is life, being owned by a cat.

I'll feel this in the morning

This afternoon was clear, dry and not cold (mid 40s), so after running some errands and vacuuming/sweeping the family room, I put on my old boots and put some quality time in with the backyard.

The week after we put the offer on the house, we had a windstorm and a small tree was knocked down by it. At the base, it was maybe 9 inches in diameter. I assumed it was rotted and waiting to come down and this storm was the push it needed. I was very wrong. It was a very solid, very not-rotten, hardwood. Had I fully realized this before I started cutting it, I would have made longer pieces to see if I could get to someone with a large lathe and let them turn it. And save myself a ton of work. My $10 Wal-Mart bowsaw took quite a while to get through all the cuts I made. While I was at it, I peeled the bark to prevent any decay, help the wood age quicker for burning, and because it was making cutting harder. I think it's some sort of Ash; we have plenty of others, so once leaves come along we'll know for sure.

Once the tree was taken care of, I turned my attention to the many, many stones littering the yard. The previous owner was trying for an old-world garden type theme in the back yard, which meant lots of plants, stone paths, and no grass. We want grass. We're building quite a pile of stones by the shed as we've got nothing better to do with them just yet. Some may be integrated into a future patio or path or something. We may have enough to build some kind of freestanding fire/grill pit (which would be really sweet). I managed to move a couple hundred pounds of stones, I'm guessing. Lots of moss and lichen on and around them as well.

Just as I was deciding it was time to pack it in for the day, I made a huge find. A very large, well-shaped stone similar to what we have on our door- and window sills. I was only able to rock it a few milimeters. I'm going to need help getting it moved. I have no idea what I can do with it yet - we'll have to see just how large it is first.

Saturday, March 25, 2006

Pleasant surprise

I opened our mail yesterday to find a check from our homeowners insurance - a sum of several hundred dollars. Confused as all get-out, I called our agent to find out what's going on - we had some confusion with the size of the house and some back & forth on the size of the house and a refund issued followed by my expectation of a bill for the difference when we got the square footage corrected.

But, I'm perusing our mortgage statement, and it shows a disbursment from escrow in the amount of our first year's premium. I was under the assumption that I had to pay that one out of pocket and that I'd be paying into escrow for 2007's premium. But, if this turn of events is correct, I won't argue - we'll take that little booster shot!

Friday, March 24, 2006

And reading documentation too

I read some more of the Python tutorial today (mentioned yesterday). The language is really fascinating. I know now why Mike liked it - it's got a bit of a Scheme vibe to it with all the list manipulation.

I'd like to get a book or two on it, but if I want to get them without waiting I'll have to pay full list price at a local bookstore. I could buy from Amazon and wait a week, but...it's a whole week! And still spending money on something that's single-use. Since the documentation is all online in a variety of formats, I've been thinking about getting back into the world of PDA owners - simply as an "e-book reader" device. More expensive than a book, sure, but I can load books onto it till the cows come home and it doesn't cost me any extra - it'll pay off pretty quickly.

Document, document, DOCUMENT

I doubled my page count in my documentation wiki at work today, from 94 items up to 188. There's a lot of copy/paste template type stuff for similar items, like the individual fields for each component of an address. But still...it's a lotta documentation. I'm really hoping that management sees the value in this thing and I can keep using it. Converting it all to some format using MS Word will really suck if I have to do that.

Family room - what's left

Seems like this room has been in progress forever. I think this is all we have left:

  • Last coat of poly on the floor
  • Clean brick
  • Poly brick
  • Shoe moulding
  • Crown moulding
  • Run speaker wire
  • Shelf to hide the exposed bathroom wire
  • Ceiling fan brace
  • Conduit behind crown moulding
  • Ceiling fan wiring
  • Install ceiling fan
  • Mount rear surround speakers
  • Touch up paint
  • Bookshelves
  • Decorate

It's a lot of little things. Given 2 or 3 solid days with all the materials & tools in hand, I think we could finish it off. Too bad we don't have that.

Thursday, March 23, 2006

New software, so much to learn

Warning: Rambling discussion ahead

This week I started doing something that's been sorely needed for months (over a year, actually). I started documenting "my" application at work. It's a monster - several dozen user input fields (I haven't actually counted), plenty of calculated fields, hidden fields that are set based on user input, generates PDF files that are a couple dozen pages long, and the main table that holds the "finished" data is 500 columns. That's no typo. I really meant 500. The business logic is scattered all over, and it's generally tough to follow.

And now we want to interface it with another system, completely separate. A vendor package that may do parts of what my application does. So we need to get documented what my app does, and figure out what the vendor package can do for us, what we may need to do to "customize" it, and what we'll need to code into my app to make up for any gaps.

So, I finally found a really good use for a Wiki. I figured that automatic cross-linking would be a huge help. I jumped straight to Trac due to its integration with Subversion, which I'm already using for SCM.

Since starting late Monday afternoon, I've written or at least started 94 "articles" in my wiki. And I'm maybe 20% finished. Had I been using Word, I'd have only gotten maybe 50% of that amount completed. Trac has made this daunting task seem manageable.

Management may not be fully on-board with this idea - I got a lukewarm response when I demonstrated my early work on Tuesday. I'm hoping that by the end of the week, I'll have enough documented that the power of this medium really starts to show. If not, I'll probably have to fall back to Word. At least I can copy/paste.

In the process of doing all this, I found a couple macros for Trac that have enhanced my documentation. But I also found some bugs in one of them. The whole system is written in Python, which I don't know, so I can't help with the fixing much. But, at Mike's suggestion, I ran over to Python's tutorial and started reading through. So far, I'm intrigued by the language. Very clean, simple, yet powerful. I've mixed feelings about the enforced whitespace. On one hand, I like the flexibility that other languages give in this regard. On the other hand, if you've ever had to maintain the code of someone who is very inconsistent in his code indenting style, having the language force it as a matter of syntax is a huge relief. I'm up to section 5 of the tutorial (Data Structures) and so far most things are making sense and it seems like a very "clean" language. Too bad I can't integrate Python into my day to day tasks. But it's another tool to keep in my geek toolbelt. I may pick up a book on it this weekend to read. Or find a PDF book and have Kinkos print up a copy for me. It almost makes me miss my old Palm III - I used to load books onto that to read at night.

In the same conversation I had with Mike about Python, he told me (again) that he was really enjoying Ruby on Rails and the Ruby language in general. He's not the first friend to recommend the language/framework to me. I tinkered with it a year or so ago but didn't go too far with it - maybe 2 steps into a tutorial. Maybe it's time to take a look at Ruby again. Again, not much hope of integrating into my daily work, but I can put it in my toolbelt and keep doing things at home with it.

Monday, March 20, 2006

Playing catch-up

Been busy and distracted lately and haven't had much time to post on house progress. Much has been accomplished, and there is finally a light at the end of the tunnel we're in right now.

  • On the 61st day of home ownership (March 11th), my brother in law delivered unto us a fine, fine floor. It's all reclaimed/recycled White Pine from an old Eastman Kodak building that was torn down in downtown Rochester about 2 years ago. It took less than 4 hours of working time to actually install the floor and it looks amazing. We've sanded three times, and put two coats of polyurethane down, with one more to go. The wood is darkening up already, as expected, due to UV exposure and the texture and character of the wood is really coming out. It's wonderful.
  • Trim has been painted in the family room and baseboards installed. We ended up using some wainscotting turned on its side. This is thin, but gives the height we need. The hole in the brick wall is now sealed and concealed. I ran the TV cable behind the baseboard and installed an outlet in the baseboard right at the hole in the wall to conceal everything and give a nice, clean installation.
  • We had a friend of my wife's family, an electrician, out on March 21st to give me some ideas on what to do about the problematic wiring for the ceiling fan in the family room. His verdict: there's no telling what's inside the walls. Recommendation: cut a swath out of the wall over the switch that's already in the room and run wire up that. Then run wire inside conduit inside the crown moulding we're going to install anyway, around the room, then across the ceiling to the fan box. This also gives me a spot to run speaker wire for the rear surround speakers.
  • The previous owner's son came over on Friday to pick up the last of ehr stuff and finish patching the hole in the roof.
  • We've decided that we need concrete backer board for the tile going over the stove. And learned the hard way that the sheets don't fit in the backseat of a Hyundai Elantra without being cut down some. Oops.
  • My wife started clearing out some of the leaves and other debris in the backyard while her brother and I were working on the floor. She pulled up a lot of stones and plenty of leaves. Found lots of flowers starting to pop already. And yet it snowed this weekend.
  • I've got to find a resource on local laws & codes. We've had dogs running free in our backyard, leaving "presents", on several occasions lately. Their owner has been nearby, but they've been unleashed. Also had lots of people parking in front of our house on the street. That's just a minor bother, really.
  • We went down to the old apartment Saturday to clean up and bring more stuff back up to the house. It was surreal being there after such a long absence. Got most stuff out, but we'll have to make at least one more trip, likely two. Our goal is April 1 to be finished there.

Thursday, March 02, 2006

Remodeling without a plan

While in his law school's library today, Eric observed some people touring the place, talking about remodeling some. He tells it better than I can:

Then I realized something. I didn’t see a single law student in the group. I know that we’ve all received email surveys, but those surveys are very general in nature - they ask you if you find the staff helpful, and if the stacks and microfiche give you a warm fuzzy, but they don’t ask your input into any specific changes. Personally, I think they would do well to consult some editors from the three law journals on campus, since we utilize the library far more than most students.

It was at that moment that I became skeptical again. This school is very good at throwing money away on mismanaged endeavors (e.g. the flat screen closed-circuit television system), and not so good at accurately tending to the needs of those of us who use these resources on a daily basis. What is to convince me that this will turn out better?

I had a similar experience a few years ago at my previous employer. A few of us were asked "would you like to help us plan the new layout for IT floors?" and we jumped at the chance. We thought it would be a terrific chance to build our "programmer's paradise". A clean furniture arrangement. Privacy and openness at the same time. Collaborative spaces for team brainstorming. Presentation areas to do demos for clients and other IT teams. Small meeting rooms for...small meetings.

Then we heard nothing for about a month. We figured this was another one of the "toss 'em a bone, then forget about it." Finally, we were invited to a meeting with the building services people. They wanted to do a show & tell for us.

A blueprint was laid down on the table. We were told "well, this is what we decided you're getting. The furniture and fixtures have been ordered and are en route. So, we really can't change what you see here. But we wanted you to see it before we start building." We tried to protest, but it wasn't worth wasting our breath. Bait & switch. Decision made. We were getting a cookie-cutter layout, a little more space between aisles for collaborative tables, and a little more light as a result, but that was the extent of it. Future floors didn't even get those luxuries, as management decided that they needed to put more people in per floor to minimize the per square foot cost of the IT staffing and eliminate the need for an extra floor.

Simple glazed pork chops

Got a really sweet (pun intended) pork chop recipe off Food Network this evening. I could try to dig it up, but it's simple enough even I can make it from memory, and I've only done it the once.

Ingredients

  • Pork Chops
  • Maple Syrup (buy the real stuff), approx. 1/2 cup per pound of meat
  • Ground black pepper
  • Salt
  • Crushed red pepper flakes
  • Olive oil (about 1/4 cup per pound of meat)

Heat oven to 500°F. In an oven-safe skillet, heat the oil over high heat. Season both sides of the chops and place in the skillet. Get a good sear on both sides. Once seared, remove from the heat and pour the syrup over the meat and place the pan in the oven for 20-25 minutes, or until the meat is at about 150°F internally. The syrup will boil and churn, but as long as the pan is big enough you won't have an overflow issue. And it's viscous enough that it won't spatter.

Once the meat is cooked, remove from the oven and place on the stove again on high for a minute or two to thicken the glaze. Plate & serve. Goes well with Asian-style steamed vegetables.

It's (not) getting hot in here....

Yep, there's another item on the to-do list. At some point in the next few months, we want to put a heat lamp in the master bathroom in place of the lamp that's mounted to the ceiling now. It'll just be so much safer, easier and more convenient & efficient than the space heater we're using currently. Get something blasting IR rays right onto the tile floor and really warm up that mass and take the edge off on those chilly mornings.

CBS Radio and ClearChannel - running scared

It's been a wild week in the world of radio. A quick recap and my take on things.

CBS Radio vs. Howard Stern

The first shocker this week was CBS Radio suing former employee Howard Stern. They claim that he did damage to them while he was still employed, deprived them of revenues, and various other harm due to his talking about Sirius in the 14 or 15 months between inking his deal with the satellite company and the end of his contract with Infinity/CBS. I think this one's going to fall flat as soon as it hits the courtroom. Stern's ratings, especially as 2005 came to a close, were sky-high. Aside from the markets that dropped his broadcast entirely, he gained listeners right up until the end. Advertising was booked solid on the program - over 20 minutes every hour (which was really annoying, as someone who only drove 30 minutes to work. Time it wrong and you get almost no content.). CBS Radio made tens, if not hundreds, of millions of dollars from that program.

The claim that Stern used CBS' airtime inappropriately is pure garbage and this will be exposed immediately upon the introduction of tapes of his broadcasts. Stern had many discussions with management, in particular Joel Hollander, about what he could and could not say on-air about Sirius. He worked inside those boundaries. When he stepped too far out of line, he was suspended from the air for a day while things were discussed. Two delay systems and "dump buttons" were in place, controlled by Tom Chiusano and "Dead Air Dave" to cut the audio when they felt he'd gone too far on a day to day basis. This whole setup was discussed ad nauseum on the KROC broadcast. If anyone is at fault for damaging CBS in this case, it's CBS management, including Tom Chiusano. They had the tools in place, and they were aware of the discussion topics. They could have cut Stern off, but consciously chose not to. They're toast. The countersuit should be fun. How bad is CBS' case? Jack Thompson is on Stern's side - and he's probably the last person on earth that would align himself with Howard (except maybe Jerry Falwell).

I'm obviously glossing over most of the actual legal points, and biased toward Stern. A more balanced synopsis is available from Reuters.

Bubba the Love Sponge vs. ClearChannel

This one isn't a legal battle - yet. No papers have been served, at least as far as has been made publically available. I'm not as familiar with this issue as I only started listening to Bubba in the last month or so, but it's shaping up well.

Bubba was fired by ClearChannel 2 years ago due to his FCC fines and their new corporate "standards". Fortunately for him, his contract remained in effect for the full term; he kept getting paid per his contract even though he wasn't on the air. Pretty sweet deal. But this also meant that Bubba couldn't say anything negative about ClearChannel while the contract was still valid. And he claims to have a lot of dirt on the company and its executives from his time with the company. Life-destroying stuff. Drugs, prostitution, adultery, you name it. If you've ever seen Dogma, think about the scene where Matt Damon goes into the boardroom at Mooby Headquarters and lays out everyones' sins. That's the level I'm expecting these "bombs" that Bubba has to drop will be at.

That contract term ended on March 1, and Bubba was ready to come out that day on the air with both barrels blazing. He spent the entire first hour of his show on Wednesday talking about what he was going to do. Little nuggets dropped on-air over time, with the occasional big bomb. He says he has names, dates, phone numbers, witnesses, proof of these things out the yin-yang.

But then, at 5 PM...nothing. He couldn't start dishing. He was put on hold by his agent, lawyers and "bosses." There are rumors that ClearChannel is threatening an injunction against him, to stop him from releasing this information. A leaked letter from ClearChannel claims that "the letter goes on to say that the disparagement clause 'contains no temporal limitation.'"

So, what's going on? For the moment, Bubba's keeping his mouth shut. In this regard, I think he's a little smarter than Howard. Howard spent an hour this morning talking about his lawsuit. He could dig himself a pretty bad hole there. Bubba's playing it close to the chest for now and treading very carefully - he's going to make sure that if and when he says anything, that he's completely clean.

If the disparagement clause doesn't have the time limitation on it, then Bubba can say whatever he wants. And even if it does have that limitation, he might be able to get it nullified in court. Either way, this has to have ClearChannel scared out of their minds, which would give some creedence to the injunction rumors. They must know at least some of the dirt he has on them. And they have to know it's true. If it weren't true, they wouldn't need an injunction. They could just let him spout off, then slap him with a slander suit. But they've made no moves in this direction. In fact, they're trying to shut him up. Which will make it that much harder to blow off the statements as a disgruntled former employee - they can't prove that it's false.

Or, Bubba could find a way to leak the information via an anonymous outlet and still nail ClearChannel and its executives to the wall. The dirt he has sounds like the stuff of legend. Stuff that could tear a company, and peoples' lives, down to the ground. And if he's not careful, his own as well.