January 2013 Archives

tron_uprising_css_train.jpg

I’m pretty sure I just saw a mysterious fragment of CSS show up on a cyber-train door in the computer-generated cartoon Tron:Uprising. I’m not sure why it’s there.

First, a few confessions:

  • I watch Tron:Uprising on the Disney XD channel. I knew it was on Disney XD because I saw the commercial for it during an episode of Doc McStuffin’.
  • I DVR the show so I can watch it alone, because nobody else in the family is interested in what goes on in The Grid. Ever.
  • I pay fairly close attention to how code is depicted in films and TV shows.

All of this culminated three days ago when I was watching a DVR’ed episode, “Welcome Home”. The characters are in a train, and as the car doors slide open and closed, I noticed a flash of what looked like CSS below the number painted on the door.

Rewinding and freezing the frame proved me correct. On the door is what appears to be at least a fragment of CSS style rules. Here’s the closeup:

tron_renegade_css.jpg

My theories on how it got there:

It’s an easter egg, put there by the show’s artists, who are maybe also web nerds. This was my first guess, but looking at the CSS, there’s nothing terribly clever about it. It doesn’t cry out “I’m from the TRON homepage!” or look like something from Flynn’s Arcade website.

It’s an artifact of how the text was put on the door in the show’s graphical tools. I have no clue if this is legit, but maybe the tools that put text on 3D computer-modeled stuff uses CSS to style that text, and the artist didn’t close a style tag? I have a hard time believing that’s the case. I mean, I doubt Pixar has to worry about web-fonts.

Someone copy/pasted the door text from something that had style rules. In a classic case where the clipboard carries over style information, someone was careless and yanked the door number from some other source, pasted it, and didn’t get around to deleting the style text

Needless to say, I have no confidence in any of these explanations, and web searches are turning up nothing for me, so please have a look and help me out.

I’ll admit it, I was at CodeMash WAY back in the day. Before it filled up the whole conference center. When you could get a ticket.

While most of the team is at CodeMash this week, I’m reflecting on the value of such conferences. In no particular order:

  1. Renewed Motivation - being surrounded by nerds facing similar problems is always good for morale. You are not alone.
  2. New Ideas - One good thing about CodeMash is that it is inclusive and language-agnostic. It’s surprising what you can learn from other implementations,. Even more surprising is learning what you have in common.
  3. Networking - You’ll meet people. Good people. These are folks that you’ll tweet, email, and Link-in. This is a good thing.
  4. Fun - part of the appeal is having fun with people who make money doing the same thing as you. The nice benefit of programmers is that they tend to genuinely enjoy their work, so it’s not too far of a stretch to get along.

7725858124_61533e47a6.jpg

I think there are some creative ways to break up seemingly monolithic features into bite-sized, achievable, and incremental steps. Here’s a few questions I often meditate upon when facing a largish feature request (pro-tip: they can usually be combined):

1 - Can we hardcode it?

Take a page from the Test-Driven Development playbook. If your feature is big because of complex computations that need to take place, see if there’s a way to hard-code the behavior for the most popular flavors. Ignore the other ones for now.

An Example: For a route-planning application, instead of writing logic to calculate a nice bike route between 2 arbitrary locations, show a map that lets the user pick the routes from the center of town to the ten most-popular bike destinations.

2 - Can we just do one?

Similar to hard-coding, doing one is nice when you have a feature that needs to work for a large and diverse set of items. In these cases, you might get a lot of bang for the buck by picking the simplest item or class of items from the catalog, and do your feature just for that one.

This lets you side-step some of the complexity of crafting a solution that works for the entire population. You can learn what a really good implementation takes in the simplest case. You can also hedge risk by getting the feature in front of customers early, so you can decide if it’s even *WORTH *all the extra effort to expand to the rest of the catalog. On top of that, you can get some good numbers around how long things will take: “It took us fifteen days to build it for that one product, and there was a lot of hard-coding, so let’s say it will be double that to make it work for EVERYTHING”.

An Example:

If you need to show a 3D HTML5 rendering of purses on the site with zoom, mouse-over highlights, and hotspots, do it first for a single purse in the catalog. Hardcode it to be really amazing for just that bag, and don’t even bother showing the 3D option for the other 2,000 bags on the site.

3 - Can we skip part(s) of it?

This one is kind of obvious, but it’s surprisingly easy to forget about. It can be helpful to focus on a single aspect of a feature, knowing the plan is to roll out the rest of it later. It’s always handy to think about this before spending a whole lot of time designing and building. If you can strip out the non-essential parts, you can deliver something, then enhance it. Also be sure to put in an on/off switch, so it can be deployed, but disabled if necessary.

Photo by bobbi vie, Some rights reserved