personal, process comments edit

How many times have you seen this:

A new software project starts, and a lot of design is done up front so the actual code and organization of the project is fairly clean. As time goes on and requirements change, the project mostly stays clean. Then someone will be working all on their own and think, “Hey, I’ve got this job I’m trying to do that doesn’t really fit the way the current design and architecture is, so I’ll just jam this little helper/object/whatever right over… here… yeah. There we go.”

A little time goes by and someone else gets a similar requirement, can’t find the little helper/object/whatever that the other developer put in (because it isn’t where you’d expect it to be), so re-invents it and jams it somewhere else.

After not too long, you step back from the project and it’s not so clean anymore and no one can figure out why.

Jeff Atwood wrote about this a little while ago. The concept of “working clean” in code. I think there are three problems to overcome when trying to maintain a clean project.

First, education. I’m finding that not too many people in software development actually have a formal computer science education. Not that that’s a requirement to be a developer by any means, but even if you’re not writing compilers for a living, understanding why you might not just put every single method or property you might ever need in the base class of your object model is handy. That sort of education - or maybe it’s intuition? - is sorely lacking in a lot of developers.

Second, communication. People don’t communicate what they’re doing, or they assume everyone knows what they’re doing already. A task called “Create Data Provider” doesn’t necessarily imply to the team that you’re going to be modifying the UI classes so folks aren’t going to expect things to change there. If people were to do a little bit of design up front and say “here’s all the stuff that has to change,” it’d be easier for the rest of the team to add input and correct design decisions prior to a lot of work being done. (Admission: this is probably more of an issue on a smaller team with a less formal process.)

Third, work ethic. I find that many times people just don’t care. “Oh, yeah, I guess I did sort of hack that in there without any thought to how it fits in the big picture. We’ll fix it later.” But you know you’ll never get to it later - there’s no time! They know at the time they’re doing it that it’s the wrong choice, but they just don’t seem to care. I’m not really sure how to address that.

We need to quit designing by jamming, folks. Stop jamming code in there. Take a second, breathe a little, and step back - look at what you’re actually doing and do it the right way.

(I know I’m going to get a lot of folks with the “in the real world…” sort of thoughts. If your company/process allows you to provide your own task estimates, you need to factor the design into your task. Don’t say it’s going to take you three hours when it’s a six hour project. On the other hand, if you don’t get to provide your own estimates… well, maybe you’ve got other issues to deal with.)

All sorts of business was taken care of this weekend.

Friday night Jenn and I had a meeting at the Empress Palace with the wedding coordinator and the minister to flesh out some of the wedding plans and see what is left for us to do. They’re great people up there and I’m glad we chose them. That all went very smoothly and they’re totally helpful. Surprisingly, there’s not much left for us to do - we just have to wait for things to slowly come together.

Saturday Jenn had to work and Stu had plans, so I was on my own, which is generally a dangerous thing. I went to the comic store and picked up my monthly comic haul, then I headed over to Tammie’s Hobbies to look at helicopters since I was having fun with my last one but sort of broke it.

The folks at Tammie’s Hobbies are really helpful and very knowledgeable about pretty much anything radio controlled. I spoke with a guy who recommended the Blade CX, but they were out.

Blade CX R/C helicopter by
E-FliteAt first I thought my hopes of flying on Saturday were doomed, but I stopped in at Hillsboro Hobbies (not far from my house) and talked to the owner there, and he also recommended the Blade CX to me. Fortunately, they had one in stock, so I picked that and a few spare parts up.

There were two key selling points on this one. First, the stability is amazing. Just getting to learn how an R/C helicopter generally moves without having to fight the tail rotor for compensation and stability is nice. Second, spare parts are cheap! You can get two sets of new upper or lower propellers for $4. New landing gear? $4. The body is Lexan, so it’s pretty tough, but I think a new body is like $10. The expensive bits are the main engine controller and the battery, but those aren’t what breaks when you crash.

So I picked the chopper up for $190, which is standard list price, some upper and lower blades ($4 each set), a set of training landing gears (they help you keep from crashing when you’re starting out - $10), and a spare battery ($35). All told, I came out just under $250, which is pretty reasonable when you look at other models out there.

I got home and charged up the batteries (1.5 hours of charge time for about 15 minutes of fly time). By the time those were charged up Jenn was home so we went to the nearby park for the first flight.

It’s noticeably more stable than the last chopper I had, and I actually felt like I was getting the hang of it. Of course, I took a pretty hefty crash and destroyed a set of lower blades and cracked one of the upper ones, so we ended the flying there for a while and went home to replace the blades. Thank goodness the blades are cheap. (It was actually pretty breezy, too, so it wasn’t all my fault…)

Once I got the blades replaced, I decided to try the thing out indoors. Yeah, I know, it’s asking for trouble, but we don’t have any furniture in the living room and I’m only flying a few inches off the ground, so I figured what the heck.

That actually worked reasonably well. I found I was more in control than when I was in the breeze, but that the training landing gears throw off the balance of the thing enough that you can’t really hover the way the guy did in the store. (The guy at Hillsboro Hobbies was super cool and trimmed everything up so it’d fly straight and hover nicely, but he did it before the training gear was attached. Now I can’t get it to do the same controlled flight, so I’m sure the training gear is affecting it somehow.)

The only downside to flying it in the house is the cat. My little cat will not leave the helicopter alone. Blades spinning, chopper flying, she wants to be a part of it. I’m afraid she’s going to get hurt, but she is absolutely fearless. What a bad cat.

Sunday Stu, Jenn, and I traveled around looking for a dining room set. Jenn has been wanting one for a while, and I figured I could ease the shock of the $250 in helicopter cost by caving on the dining set.

A mockup of the dining room
setWe ended up at Dining Rooms Unlimited and found this nice table with a butterfly leaf in it, but we didn’t like the chairs… we liked the chairs from this other set. (The picture shows the chairs and the table we actually ended up getting, snipped from two different pictures.) Luckily, they let us mix-and-match a set for a package price of $800, so we ordered up and we should be getting that in four to six weeks.

Oh, Sunday we also went and picked out tux styles for the wedding and set it up so folks can get measured and such for them. One more thing off the list of things to do.

The sprinkler installation should continue today, and my understanding is they’ll be done by Wednesday. Taking care of business!

home comments edit

We got this voicemail last night from Dennis’ Seven Dees, the folks we contracted with to get our sprinkler system put in. The message was, “Tomorrow morning at 8:00 a crew will be out to start your irrigation system project.”

I just signed the contract a couple of weeks ago and the guy I talked to said they were booked five weeks out and they’d let me know when they’d be coming. I was under the impression I’d need to call the utilities to get them to mark their buried lines, get permits from the city for the development, and do some additional prep work. I’ve done none of that, and that was sort of worrisome.

But looking out the window… someone has already come along and painted the utility markings. What the…?

Jenn is off today (having to work this weekend) so she was there this morning when they showed up and let them know that we hadn’t prepared. They had taken care of everything. They called for the utilities to be marked, they got the required permits, and they’ll be done by Wednesday.

She sent me a text message mentioning how organized they are, too, which is cool. It’s always nice to see an organized, professional team at work.

It’s costing me a bit - $5600 for the whole job - but the majority of that cost is due to the funky shape of the yard and the placement of the water pipes (there’s a lot of extra work that will have to be done to get the water where it needs to go). Could I have gotten it for cheaper? Maybe, but I got a couple of quotes and they all came in around the same ballpark until you really started cutting corners or omitting full sections of the landscaping. Could I have done it myself? Maybe, but I don’t know the first thing about sprinklers, and I’m sure there’s more to it than I’m willing/able to grasp. There’s a reason people get paid to do what they do - I don’t expect anyone off the street to be able to code like I do; it shouldn’t necessarily be expected that anyone off the street can just come in and do a sprinkler system.

On the other hand, with things like this, I’ve found you really get what you pay for. It might sound expensive, but you don’t have to fight with the pipes, dig the trenches, wire everything up, calculate where the sprinkler heads will go… and having the parts and labor warranty doesn’t hurt, either.

That “you get what you pay for” lesson has been learned by Jenn and I several times over, and much as we’d love to cut corners and cost on things, we usually find it better to save up for a little longer and make the investment in the higher quality product which is inevitably more expensive. (Which isn’t to say “more expensive == higher quality” - just that if you want a decent product or service, you really need to be willing to pay for it.)

I’m anxious to see how far they get in a day. And I’m stoked to get this thing in - the yard is really starting to look like crap, and it’s mostly due to the inability of us to get the water where it needs to be. Once this bad boy’s in, it’s time to call in ProGrass to come in and do some soil treatments and fertilization. Then it’s going to look gooooooood.

The new version automatically rewrites links on the page that match URLs for contacts you have defined. This makes it zero-effort to implement - just link to various contacts, and their contact card will automatically be associated with that link.

Go get it!

I’ve been on a mission for spare parts for this RC helicopter I got. A mission, I tell you! I found the manufacturer in China (good luck tracking that down), I called the store where my dad bought it… all to no avail. Spare parts don’t seem to be locally available, and shipping them from China directly in the quantity I’d have to purchase in would be more expensive than just buying a new chopper.

So… I guess it’s time for a new chopper. Maybe something just slightly higher-end, possibly a three-channel entry-level thing that has spare parts available. Looks like a trip to Tammie’s Hobbies is in order this weekend.