personal comments edit

Programming Is Hard is a site for sharing common code snippets and links. Sort of like Flickr for code.

Is this really a time saver, or is it a bad idea? I mean, sure, grabbing some common functionality from somewhere might get you going a little quicker, but remember Scott’s Rule of Programming #0x3eA

  • “Just because code is on the Internet doesn’t mean you should cut and paste it into your production system.” It occurs to me that something like this is asking for all nature of trouble. You know that the entry-level developer sitting two cubes down from you just grabbed some code off this thing and pasted it, entirely unchecked, into a block of code that barely compiles.

On the other hand, folks have experimented with putting incorrect data into Wikipedia and found the incorrect data doesn’t stay there very long before someone corrects it. Will that same level of policing go on with these code snippets?

I think maybe there should be some nature of moderation - like you submit a snippet and then it has to be reviewed before going on the site. Or maybe that’s asking too much, and a free-for-all really is the way to go, with the implicit “buyer beware” disclaimer.

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!