honest.knave

this statement is false

honest.knave header image 1

My first HDR

October 6th, 2008 · No Comments


East Greenwich, RI at dawn

This is a composite created from three source images: one exposed for the sky, one exposed for detail in the shadows, and one in-between. The composite image retains color information from all areas of the image. Pretty cool, huh?

There is also a ridonkulously big version of the image. For the curious, I used the tutorial from Instructables (intended for Gimp users).

→ No CommentsTags: photography · tips and tricks

YouTube: Usability nightmare

September 7th, 2008 · No Comments

Lately, I’ve been wondering what the hell Google has been doing with YouTube since they bought it. The site is awful; I always forget how to use the simplest features. Example: Where is the link to my favorites? Oh, right, it’s hidden under the Account popup menu (which I always notice after I’ve already clicked Account, a downside of those stupid hover-over Javascript menus). To be fair, favorites is also at the very bottom of the page, in a tiny little footer, and it’s in a box I just noticed for the first time today titled “About Your Videos”. (I wouldn’t think to look there for my favorites, personally — they’re not my videos.)

The comment system is particularly painful. Now, given the quality of discourse on YouTube, it’s perhaps of debatable importance that the comment system is horrific to use. On the other hand, perhaps the system is to blame for the poor discussions it fosters.

Example: A couple days ago I was watching M.I.A.’s music video, Paper Planes, and I noticed a comment where someone asked what song she sampled for the beat. Trying to be helpful, I clicked the Reply link for that particular comment, and answered, “The Clash - Straight to Hell”. YouTube helpfully took my comment out of context, and placed it at the top of the comment stream, instead of below the question it answered. (Why it did this, I have no idea. It seems like sometimes replies will be in context, other times they’re treated like normal non-reply comments, and placed at the top.)

Great, now I posted a pretty useless comment, in light of the new placement. It makes no sense as a standalone comment. I notice shortly later that my comment has been given a thumbs down but another user. (Which makes sense, given how little it contributes out of context.) A couple days later, I have this in my inbox, from a miffed M.I.A. fan:

wow seriously….Name a god damn band that hasn’t used a melody or beat from a different song and her representatives must have paid shitloads to use it….dont talk its a very good song not a rip off

YouTube set me up to fail in this instance, and then subjected me to abuse, primarily by having a terrible user interface. Their user experience is so bad that it is actually causing its users pain, in the sense that being sent an angry reply like that is hurtful. Sure, I can laugh it off as a misunderstanding, but, for what it’s worth, it aggravated me enough to write this entry.

But of course, that’s only one problem. In fact, that barely scratches the surface of the mountain of flaws is YouTube. I could detail a lot more problems, but as it turns out, someone else already has, and did a far more thorough job than I could have. If it wasn’t such a damn useful site, I could just, you know, stop going there.

So Google, what’s up? You’re known for being the king of simple, usable applications. When are you going to fix this insanely popular, but badly broken service?

→ No CommentsTags: musings

What’s so great about Python?

July 13th, 2008 · No Comments

In my last entry, I talked about closed-minded attitudes about new (or just unfamiliar) programming styles. I’ve been thinking a lot about why Python — or any other dynamic language — is more powerful than a more rigid, statically typed language. For the purposes of this article, I consider C++ rigid, even though it supports some dynamic typing facilities.

At first glance, it seems like you are actually losing something good when you switch to a dynamic language. You lose compile-time type checking, which is a useful way of detecting errors before ever running the program. In a dynamic language, the compiler (if there is one) doesn’t know the types of any objects until runtime, so it cannot verify the validity of the operations performed on them until execution time. As a beginner in the language, this can be surprising and frustrating. For example, your program may work normally until you hit one less-used branch of the code, and it bombs out with a TypeError.
[Read more →]

→ No CommentsTags: musings · python

Abre los ojos

July 9th, 2008 · No Comments

… or, Stop being so myopic, and I’ll stop calling you code monkeys.

First, a quote from the famously eloquent Donald Rumsfeld:

“There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don’t know. But there are also unknown unknowns. There are things we don’t know we don’t know.”

There’s a real problem among programmers. (Well, there are several, but we’ll stick to just one for now, okay?) We know they’re cocky, but this is generally regarded as a strength. However, it plays badly with the next fact, care of Rummy: they don’t know what they don’t know. There are unknown unknowns.

The thing is, there is a sequence of events that plays out through your entire life as a coder. It goes something like this:

  1. Look at the pure crap you wrote a couple years ago.
  2. Realize how much you’ve improved since then.
  3. Think, “Wow, I’m a top notch programmer now.”
  4. In a couple years, repeat step 1.

[Read more →]

→ No CommentsTags: musings

Kubuntu 8.04 Hardy Heron update notes

June 1st, 2008 · No Comments

Hardy HeronI figured I’d document for posterity some of the issues I had with my Kubuntu 7.10 → 8.04 update. I approach all major updates with trepidation, and as usual, it was justified.

First of all, the updater application worked well. I had to expand the window to show the terminal when it updated OpenVPN, which would hang waiting for me to enter my username and password. (This actually happened twice). Also, it is occasionally interactive, asking you to look at changes it wants to make to certain config files. This is a good thing, but it would be nice to have all the questions come at the beginning or the end, so the update can be unattended (since it takes several hours). [Read more →]

→ No CommentsTags: linux · tips and tricks

If it isn’t tested, it’s broken

May 22nd, 2008 · No Comments

From the this-should-be-obvious-by-now dept.: I recently added an integration test suite to our codebase, which gives us the ability to write some tests that were impossible when we only had unit and system test suites. Once it was stable, I added it to our nightly build process, so it would be tested every night.

I updated our Linux build machine with the new nightly build script. At the same time, I was configuring our new, faster Windows build machine to replace our old, pokey one. Since the old Windows machine is expected to be rendered obsolete, I didn’t bother installing the new build script on it. So Windows just continued running the normal build, unit tests, and system tests. We knew the integration tests worked on Windows anyway, because we ran them by hand just recently (right?).

This Sunday, about a week later, the new Windows machine came online. I installed all the prerequisites (which only took a few hours, because we have an awesome wiki full of HOWTOs), connected it to our network, and installed the updated build script. By now, you know what happened next: I ran the build script, and everything worked except the integration tests. The code checked out, compiled, unit tested, and system tested just fine. But the one thing that wasn’t tested nightly — the integration test suite on Windows — was broken.

Our strategy of automating everything continues to pay dividends. And it shows what happens when you don’t. If you aren’t able to regularly test your software in some kind of automated fashion, it is broken. You just don’t know it yet.

Title is a quote attributed to Bruce Eckel.

→ No CommentsTags: automation · testing

Software for fun and profit

May 21st, 2008 · No Comments

An interesting series of articles is developing at codingthewheel.com:

It’s reminiscent of the days when IBM proved the power of computer software by facing off against chess grandmaster Gary Kasparov. Kind of exciting in that sense. According to the author, their artificial intelligence isn’t better than the best poker players… yet.

I’ve personally written one program that plays an online flash game, by screen scraping and mouse pointer movement. It didn’t require any AI component, and it was purely for fun; no profit motive. Needless to say, this is intriguing; of course, I know I’m supposed to use my powers for good. :)

Website note: I’m opening up comments generally. I noticed Wordpress gives me a neat summary of recent activity, so I can delete spam pretty easily.

→ No CommentsTags: in the wild

2012 anyone?

May 18th, 2008 · 1 Comment

Some things have been weighing on me for a while. Chief among them, how out of balance my culture is, myself included, with the world around it. There are warning signs going off all around us, but I still feel like I’m going completely against the grain whenever I try to take heed.

“Whenever I see an adult on a bicycle, I have hope for the human race.” — H. G. Wells

For example: In my continuing efforts to be more environmentally conscious, less oil-dependent, healthier, and a bit more frugal, I’ve taken to bicycling to nearby destinations whenever possible. In many places in the world, this is the easy and obvious solution; after all, the bicycle is the most efficient known form of transportation. But things are different in the land of sprawl. In a country that, for the last 50 years, has designed its spaces around cars, attempting to use anything else can be a harrowing experience. Not only that, but many seem to take offense at bicyclists, shouting profanities or honking as they drive by. Whether they’re completely ignorant or just living in our familiar state of cognitive dissonance, who knows. [Read more →]

→ 1 CommentTags: consciousness

Liberated from the Left Brain

March 15th, 2008 · No Comments

Neuroscientist Jill Bolte Taylor describes the surprisingly moving experience of having a stroke in the left hemisphere of her brain. Highly recommended 18-minute talk.

Via TED Blog

→ No CommentsTags: consciousness

Digital Photography Basics: Dynamic Range (part 2)

March 10th, 2008 · No Comments

This article is part of a series.

Hopefully you have a pretty good idea of what is meant by the term dynamic range now. Let’s get a little more hands-on.

Histograms

Simple Histogram

Figure 1: An extremely simple histogram.

First, you need to know how to read your image’s histogram. A histogram is a 2-dimensional graph of the frequency a particular value occurred. Remember our 8-bit cameras, with a grid full of pixels whose values could be anywhere from zero to 255? Now it’s time to start inspecting those values. [Read more →]

→ No CommentsTags: photography