Writings

Technology, open source, personal essays, and everything that isn't climate.

Broken as Designed

I loved when I found this on Wikipedia on the Waterfall Process for Software Development:

The first formal description of the waterfall model is often cited as a 1970 article by Winston W. Royce,[1] though Royce did not use the term "waterfall" in this article. Royce presented this model as an example of a flawed, non-working model (Royce 1970). This, in fact, is how the term is generally used in writing about software development—to describe a critical view of a commonly used software practice.[2]

Yes, the canonical reference to waterfall, the thing that coined that phrase, was "don't do this, it doesn't work". And yet, for 30 years this dominated the software development industry.

Related: Timeline of the far future · Digital Familiars · Unlearn Something Wrong Today

Sunday Morning Source Code

I'm trying to figure out why duplicate key errors keep getting generated for the drupal twitter module, because it's all open source, I started reading code to figure out why it didn't seem to be using mysql BIGINTS.  I came across this comment:

/** * Dear PHP, I hate you so bad. Love, Jeff. * * Workaround for drupal_write_record(), which treats a DB bigint as a signed 32 * bit int on 32 bit PHP builds. We can STORE bigints, and PHP automatically * converts them to floats in memory while we work with them, but db_placeholders() * always treats them as %d and casts them back to dumb signed ints. * * See http://drupal.org/node/333788 for more info. * * Instead we'll set the column type to 'string' which is a little like jumping * off the Sears Tower because the elevator's broken. But that's life. */

I laughed.

Related: Getting my head around Drupal: mhvlug.org version 4 a detailed guide · Mediawiki vs Drupal for a community site · Drupal Hacking

The promise of Google TV

The Promiss Of Google Tv

I got my Logitech Revue on Friday, and have had a day to play with it. It is clearly a work in progress, which will be accelerated greatly when the SDK drops for it early next year. The long review of the device will come later. There are some really neat hints of where this is headed though, best exemplified with this screen shot:That is a search for House looking at the Series results. You are looking at Season 7 results (including items in the future) and next to each episode is whether the episode is available on your TV (i.e. DVR), the Web, of Paid (which currently corresponds to Netflix or Amazon on Demand).

Once you can hook into the content providers interface with the SDK, this becomes really interesting.

Related: Why I'm excited for Google TV · Big Media vs. Google TV · A new way to find something good on TV

Where is Io 2.1 released

Last night I finally got time to re-setup eclipse after the Ubuntu upgrade and did a couple of quick fixes for Where is Io.

One includes making my ghetto math for the Diorama slightly less ghetto.  It still needs future work, and still won't work above the arctic circle, but Jupiter will show up at 6pm now, which it often wasn't before.

The other is making it a fat binary. NDK 4 lets you build optimized libraries, so now I'm building Arm5 and Arm7 libraries for the planetary simulator. This means the application is bigger (it can be moved to SD if you care), and it should run faster on most of the phones that came out since Christmas.

It's called version 2.1 and is available in the Google Marketplace, Archos's AppsLib, and on github. I have no idea if things will work right on Archos, because location is important, so if you've got experience let me know. Enough local friends had been talking about Archos recently that I decided it was worth adding that to my distribution channels.

Related: Where is Io v1.1 released · Where is Io source code up on github · Coming soon to Where is Io

Do we still need a Save button?

Doing some basic mobile development for Android has led me to question a lot about what we take for granted with Desktop applications, and one of the reasons people find these smart phones and tablets a bit more intuitive to deal with. One of the big points is around the Save question.

Ask yourself for a moment, is there any desktop application you use where automatically saving every key stroke would be a bad thing? And for the few of you that can come up with an example, is that content that you are already explicitly versioning with some other system, like source code?

The existence of Save is part of what make computers fragile, or at least feel fragile, to people. You have to be ever vigilant of your data. The price of that vigilance is less productivity, as you always have to remember that you have to Save. Everyone has a moment when they lost some really hard work when they lost that vigilance for a short period of time.

In mobile, there is no time to Save. You have a mobile app open, you are waiting for a bus, and it shows up. You are done, and the phone goes in your pocket. If you had to remember to save, that state is lost. This is a much more natural interaction, and a much more expected one.

When you leave your house in the morning, you don't nail all your furniture to the floor. You have a pretty good expectation that when you return home your couch and tv will be where you left them, they won't all have been pushed to a corner, requiring you to reassemble your living room every night when you come home.

The way the real world works is when we push something someplace, it stays. The fact that personal computers broke this metaphor is part of what makes normal people get really nuts about computers. Yes, making software without a save button is harder for developers, but it creates a sense of durability that users really do resonate with. It's a best practice in mobile, and hopefully something that will bleed over into the desktop application space.

Related: Save us from reality tv... · Mobile Browsing with Addons · Exciting times in mobile

Not a UFO

not a ufo

On one of the photo sites I follow someone posted this image with a leading title that suggested this was a ufo confirmation:

In 5 of the 21 frames that make up the animated gif there are 2 red, a blue, and a green dot, all in a line (you might need to pull the image into your favorite image editor and zoom in to see the second red and blue dots).

Taking pictures of things in space isn't like taking pictures in your back yard. You don't take color images, instead you take long exposure black and white images with very specific color filters over your camera lens. The images are then post processed, having each filter corresponding to a different color.  These images are called false color for that reason.

This works pretty well for imaging things that don't move very quickly, but creates a very funny effect for things that are moving fast through the frame, because the object is in a different position in each color. This is what asteroids or satellites look like when they are captured in an astro photograph. The Sloan Digital Sky Survey has a whole chapter on their website on finding asteroids in their images. The pattern in the SDSS data is a little different because their imaging equipment is different than what we are seeing here. Galaxy zoo also has some really good information on funny things you see in CCD images.

Which raises a good question, what are we looking at? It turns out this is one of the sample runs of the Palomar 200 inch telescope showing off their adaptive optics in 2006. These 21 frames were taken from earth, through our atmosphere, with manipulators bending the mirrors on the telescope to reverse out atmospheric distortion. Really impressive stuff. Update: given the rotational speed of Neptune, you are looking at between 3 and 4 hours worth of time elapse here.  That means you could calculate the angular velocity. This would push for it being an asteroid instead of a satellite because it is actually moving reasonably slowly in terms of degrees per hour. Update 2: it could also be a moon of Neptune, many of them end up about that close, and orbit fast enough that they could move like that in the frame.

Related: It's not a UFO... it's Jupiter · Color Wheels are wrong? How color vision actually works by @ASmartBear · Look what you can find in the zoo

VMWare's new stand

Read over at James Governor's redmonk blog:

Maritz said that other major tech firms were still “consolidating the client/server stack” while VMware wanted to capture a new wave of application development.

“Developers are moving to Django and Rails. Developers like to focus on what’s important to them. Open frameworks are the foundation for new enterprise application development going forward. By and large developers no longer write windows or Linux apps. Rails developers don’t care about the OS – they’re more interested in data models and how to construct the UI. Those are the things developers are focusing on now. The OS will fade into the background and become one of many pieces. We plan to do the best job of supporting these frameworks.”

Or as he said to the analysts:

“Our goal is to become the home of open source and open framework-based development”.

I think this is really what the "post PC" era really means, desktop applications are going to become a niche market, only to be used if the task can't be done on the web, in the cloud.  Lots of really interesting stuff in that article that you should check out.

Related: The future of open source · The Cloud vs. the Enterprise · Perfect Rails Development / Deployment environment with mercurial and passenger

Programming is Hard

This is a great essay about not beating yourself up for feeling stupid when you try to learn something new in programming:

... The problem is that while you've uncovered a wonderful world that makes coding seem so approachable and fun, you're unknowingly making a giant leap by thinking it's somehow also easy. This might not seem like a big deal, but it's huge. Every single time (and this will happen constantly) you come across a concept that seems foreign or difficult or even just unintuitive, instead of thinking "It's OK. Programming is hard." you're going to be thinking "This is supposed to be easy. What's wrong with me? I must be stupid." These feelings will keep you from seeking help or pushing through to discover why things work the way they do, and that is what's stupid. Programming is not always intuitive, it's inherently complex, and it's challenging. Once you start feeling like you've gotten a handle on it, you'll learn something new that will make things seem even more complex for a while. Your level of stupidity is certainly up for debate, but not being able to program without long hours of steady practice is not an indicator of intelligence one way or the other. The discomfort is normal, so get over the self-consciousness now and fight it whenever it appears in the future. ...

I agree, I wish I had this advice when I first entered the field. It took me the better part of a decade to come to the same realization, that you felt stupid because you were really learning a lot of new and unfamiliar stuff. It makes you grow as a developer, and as a person, and is also probably fending of future brain degradation in the process. My most recent experience was relearning the math for Where is Io.

I spent days just trying to understand what should be a simple coordinate transformation, so much so that I almost gave up the project multiple times for being too hard. But the problem was, I knew someone else had figured this out, so it couldn't be beyond me. A few weeks of banging my head against the table eventually got me past that. It would have been easy to just walk away, it was a hobby project after all, but pushing forward and overcoming the challenges made it that much more rewarding on the other side.

Related: What is computer programming? · Pair Programming, why it works · Talent vs. Practice

Speaking Tonight in New Paltz

Tonight I'll be giving the Mid Hudson Astronomical Association talk on the basics of celestial mechanics, and what I figured out to make my Where is Io application.  The talk picked up the poetic "Tracking the Movement of the Heavens" title somewhere along it's development.

This is going to be a tough talk, given how varied our audience tends to be, but I'm hoping that I've got enough hooks to get people in early, and plenty of meat for people that want to know more. The practice run through after work last night went quite well, the narrative turned out to be stronger than I realized, and I got some good feedback that definitely makes this a better presentation.  Thanks to Mike, Jeremy, and Sean for that.

Related: ACM talk tonight on Open Source development · Drupal Talk Roundup · Upcoming Talks