6.29.2009

OpenCongress.org

A group called the Sunlight Foundation is trying really hard to take the Good Idea That Everyone Agrees On, that the activity in government should be open and visible to everyone, and turn it into a Cool Website You Can Actually Visit.

It's called OpenCongress.org and it's as Web-2.0-y as you could possibly want. You can leave comments and discuss bills. There's a Facebook app. You can track things. Etc., etc.

Check it out!

6.28.2009

Stonewall

As you may know, today is the 40th anniversary of the Stonewall riots, which are often seen as the beginning of the gay rights movement. I was going to try to do a little reading on the history of the movement, and talk about how far we've come and how much further we have yet to go. But my friend Kyle basically did all that already, so instead, I encourage everyone to read his excellent post.

6.23.2009

Real-life Version Control

I had an idea today, about Version Control. Since probably half the readers of this blog don't know what that is, maybe this quote from the Subversion Book will help:
Subversion is a free/open source version control system. That is, Subversion manages files and directories, and the changes made to them, over time. This allows you to recover older versions of your data or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of "time machine."
Subversion, and all the other version control systems out there, were generally designed by programmers, and they tend to also be used by programmers. This is because they tend to include tools that are good for writing code, like "diff," and that programmers are the kind of people that like to find technological solutions to problems.

Other people may have their own methods for version control, usually with pretty bad big-O complexity. Which is computer-science-speak for "wastes hard drive space, and runs slowly." Have you ever seen something like this on your computer?

project052809.xls
project052909.xls
project052909 - 2.xls
project053009.xls
project053009 fixed.xls
project053009 final.xls
project053009 with changes.xls
project053109 with changes 2.xls
project060109.xls
project060109 - new.xls
project060209.xls
project060209final.xls
project060209 really final.xls
project060209 FINAL VERSION.xls

... you get the idea. You don't want to lose track of old versions, because every time you delete
or change something, you know that you might later change your mind and want to revert back to that point. Well that's the whole point of version control, except that it's automated so you don't have to keep changing filenames. Plus it's done in a very clever way so that if you have 25 versions of a 400MB file, it probably won't take 10GB of file space to do it. If you like, you can have multiple people accessing the same repository, which means no more emailing the same file back and forth with minor changes. Even more exciting: You don't need anything fancy like a system administrator or knowledge of how to use Linux.

Anyway, the idea that I had today was "What if other types of engineers could use version control? What if we could version-control real-life things?" So I had an idea for a cute little video that could be used to demonstrate the functionality of version control systems. As far as I know, no one has yet created such a video. And by that I mean I looked on youtube for a few seconds and didn't find anything. Here goes:

A girl opens a drawer and gets out a blank piece of paper. A little blue question mark appears, hovering over the corner of the paper. She gets a pencil and starts drawing a picture of a tortoise. After a little while, it looks like a cute little tortoise, not bad for a first draft. She looks at the front of her desk and sees a little machine with several big friendly buttons on the front. She presses one that looks like a green arrow. Suddenly,
something pokes out of the top of the machine, and a laser shoots down and scans her new drawing. The laser mechanism retracts back into the device. The girl looks down and sees the the blue question mark has been replaced by a green circle.

The girl now cheerfully grabs a bunch of permanent markers from a cup on her desk, and begins to color in her drawing. As soon as she starts drawing, the green circle floating above the corner of the drawing turns red. She keeps going until the tortoise is looking rather adorable, and pushes the green button again. The device laser-scans her drawing, the circle turns green again, and she walks away, satisfied with her new drawing.

Cut to her friend's house. Her friend sits down at his desk, with no paper or drawing of any kind. But he does have the device. He presses a gold button on his machine, and suddenly an exact copy of the girl's drawing appears on his desk, with the green circle hovering above it. He grabs an orange marker and a black marker and starts drawing a tiger, standing behind the tortoise. The circle turns red. The tiger is, of course, ferocious. But it is also very badly drawn. Not seeming to mind, the boy hits the green button proudly. His drawing is laser-scanned and the hovering circle turns green.

The girl now comes back to her desk, and the drawing still looks like it did when she left. She hits a button on the version control device and it instantly changes to include the tiger. She picks up a black marker and adds an outline to the tiger to make him look less sloppy.

Etc. Eventually there would be a part where something goes terribly wrong, and they use version control to undo the changes. Anyway, that's my idea...

6.05.2009

Just ignore them.

This is a lesson that people really need to learn. Just ignore them. Sometimes when something annoys you, talking about it, complaining about it, gossiping about it makes you feel better. And that's great for little things like how ugly your friend's new car is or whatever. But for things like this latest scandal on the gay blogs (this kind of gay blog, not this kind) there is only one right answer. Actually, there's two. One of them is "Just ignore them" and the other is related to that.

Okay, so the issue itself is this. A couple of talk radio hosts at some radio station went on an extended anti-transgender tirade a few days ago, saying all these terrible things about transgender kids, explicitly advocating violence toward them, etc. And as I'm reading all this, there are a variety of reactions. The one I've seen the most is "Click here to send a message to the two radio douchebags and ask them to apologize." Well, lots of people did that, and guess what? They refused. Anyone shocked?

Radio people are just people. If you walked past someone on the street, standing on a soapbox, going on and on to all who would listen about how transgender people are subhuman, what would you do? You would not listen. If everyone did that, the guy would disappear. Well okay, not really. But in the case of these radio guys, they really would. It turns out Jeff Atwood recently wrote a post about the same thing. It's a programming blog but the point is the same. People who rely on media to be heard, whether it's the internet, the radio, or whatever, will disappear if people stop listening to them. What those people need is not money, it's attention. Take that away, and they're no one.

My friend Heather was asking last night, is the internet still there if no one is there to use it? Well, in a sense, no, it's not. A blog that no one reads is a lot like a blog that doesn't exist. (Now you're thinking about posting some clever sarcastic comment involving some form the word "irony." But you're reading this, so shut up.) And a radio host that no one listens to is likely to be fired. So rather than contact the idiots and ask them to apologize, how about we contact the station, and let them know that this kind of shit is just not okay. At all. Ever. (In fact GLAAD succeeded in getting some advertisers to stop advertising on the station. For once I think GLAAD is doing the right thing and all the other orgs are wrong...)

Anyway, if you don't like something that a perfect stranger is doing, ignore them. If everyone did that, the world would be a better place overnight.

6.03.2009

Internship: Week 1

So I'm about a week into my internship this summer, and I'm already up and running in a real way. I don't have any dramatic, sweeping observations just yet, but here's a few quick ones.
  • I know everyone's heard of KISS -- Keep It Simple, Stupid. But sometimes you try a little too hard. I had to write a test which would create a new feed. All feeds must have a unique name, so how do you come up with a unique name -- one that you know hasn't been used before? My solution: Search the database for the name "testFeed1" -- if it's already been created, look for "testFeed2." If that's already been used, ... etc. until you find one that hasn't been used yet. Can you guess yet what answer my supervisor told me to use? The answer is: testFeedyyyyMMdd_hhmmss, where yyyy is the four-digit year, MM is the two-digit month, etc. So yeah. KISS.
  • Java can be a little wordy but I'm starting to really like it. If you have Eclipse, it's great, because you rarely have to type any full words. Also dot-ctrl-space is my best friend. "I know this object can do what I want, and the method for doing it is probably starts with 'get' -- how will I find out what it is?" Also the Javadoc tool is great. There's a few annoyances, and some Python features I really miss having, but overall, good times.
  • I might be able to do some kind of research project in the fall that would be a continuation of what I'm doing this summer. More details to come.
  • Software people love silly jokes. You can tell that in every conversation or meeting, they're always waiting for an opening--anything that they can make a joke about. And when it comes, they will pounce on it. Of course you have to make the joke in the exact tone of voice that you would use when you're not making a joke at all.
  • Ping pong Table tennis is a big deal at this company. Seriously.