Posted by: Jason | May 17, 2009

A Word on Star Trek’s (2009) Poor Prop Choices

This is a little out of the ordinary for me, but I just had to say something. I recently saw the 2009 Star Trek movie directed by J.J. Abrams. First, I am a Lost fan, and just seeing the “Bad Robot” banner gives me butterflies in my stomach. That guy is great. This Star Trek has some of the grit of Battlestar Galactica (the best Sci Fi drama since Farscape, IMHO) while maintaining the wholesome goodness of the original series and movies.

But there was a problem. The Star Trek movies’ audiences are primarily people who are both technologically savvy and, if not anal-retentive, at least have an almost obsessive-compulsive attention to detail. Okay, so full disclosure: I just described myself. And I just can’t let go of the worst set design choice in this decade: using an actual bar code scanner on the bridge of the new/original Enterprise. Don’t believe me? Take a look at this shot, particularly in the very prominent position on top of the helm, between the two bridge personnel:

Bridge of the Enterprise NCC-1701 (2009)

Bridge of the Enterprise NCC-1701 (2009)

And now, let me introduce you to the Symbol/Motorola M2000 general purpose barcode scanner:

Motorola M2000 Omnidirectional Barcode Scanner

Motorola M2000 Omnidirectional Barcode Scanner

Tell me I’m wrong! This anachronism totally blew the movie for me. I see these in department stores. I don’t want to think about buying groceries or T-shirts while I’m watching a futuristic geek-fest!

What other interesting and/or distracting props have you seen in movies?

I’ve had a few situations with photos that just don’t look right when iPhoto corrects the red eye. The algorithm in iPhoto is sometimes just too sloppy, ruining nearby parts of the photo, especially if there is too much red tone to the skin around the eye. I needed a better way, and here it is.

What you’ll need

  1. A tool with “Instant Alpha”, the feature introduced in OS X Leopard’s Preview.app tool. You could also use Keynote, but I find Preview to be the best
  2. A compositing tool. Compositing is the process of combining two images. I use OmniGraffle for this, but you could also use Keynote, OpenOffice, etc. The key here is that you will need to draw an object and be able to place it behind your photo after applying the Instance Alpha.

Step by step

Try it in iPhoto

Here is my original picture:

Original Red Eye Picture

Original Red Eye Picture

And here is iPhoto’s attempt at red eye reduction:

iPhoto Red Eye Reduction

iPhoto Red Eye Reduction

Note the over-ambitious red eye reduction turning my green/brown eye blue and bruised!

Get the red out

To get the red out, I use OS X’s Preview.app to apply an Instant Alpha filter. This tool is great and gives a lot of control over the size of the selected red area. Open the tool, click and drag starting in the “reddest” part of the red eye, and drag until the entire pupil of the eye is selected by the tool. Repeat for the second eye, then hit the “enter” key to apply the mask. You should see some ghostly white eyes in your picture.

Instant Alpha in Preview.app

Instant Alpha in Preview.app

Red Eye Removed in Preview.app

Red Eye Removed in Preview.app

Get the black in

Okay, so far I’ve gotten the red eye out of your picture, but it’s not anything you’re likely to publish. To do this step, we copy the image into the compositing tool (OmniGraffle in this case). OmniGraffle is what they call an object drawing tool. After copying the image into the tool, we just draw a plan rectangle right over the eyes. Make it big, but smaller than the original picture. Next, change its color to black. You may want to play with the color to get the best result; adding some red to the black will soften any red edges that might have been left during the Instance Alpha stage. Or, you might feel that a deep gray gives better results. You should really zoom in on the eyes to make sure you’re satisfied, because you’re almost done!

Build the Rectangle

Build the Rectangle

Change the Rectangle Color to Black

Change the Rectangle Color to Black

Push the Rectangle Behind the Pic

Push the Rectangle Behind the Pic

Save your new picture

Once you’re satisfied with the picture, use the Export command of your compositing tool to save the image as a JPG. Since it’s a photo, this is the format I highly recommend. You could also use PNG, but JPG will give you the most natural results.

Export Options

Export Options

Final Result

Final Result

Finish it off

It is only at this step that I recommend you bring the new photo into your photo tool (I use iPhoto) to adjust exposure, etc. Adjusting these setting before getting the red out could make the process more difficult. Crop, size, and upload your photo to your favorite service!

Posted by: Jason | April 8, 2009

Internet Will Eventually Be Remote Controlled

I worked on a project in 2002 to build a “rich media server” for HP. At that time, I realized that content delivery is essentially an asymmetric activity, where the “command and control” channel needs to be much smaller than the content delivery channel. This was the original philosophy of ISDN phone lines, too, except when you’re processing HD content, it’s at a slightly different scale. It seemed pretty obvious at the time that the infrastructure required to process the content is fundamentally different from that required to process the control signals. The visual we used on this project is a guy sitting in his easy chair pointing a remote control at a TV. The bandwidth of the remote control is extremely tiny, essentially a few hundred bits per second. However, the bandwidth of the projected image and sound is enormous by comparison. That’s the nature of high-quality content.

That’s why I’ve been intrigued by some of the stories I’ve been reading lately. GigaOm covers “fat pipes” in the cloud, which is already happening. From my work in the social technology space, I already know that one reason Joyent has a thriving Facebook application deployment business is the fat pipe it has from its data center directly into Facebook’s. Take that, Net neutrality! I also think the new (nascent?) OnLive service is pretty interesting. The concept there is that by having highly efficient means of rendering games, the end user needs a skinny pipe to “remote control” the game. To be honest, I’ll believe it when I see it. I remember playing Nintendo 64 in a hotel room once for $4/hr, and it was not a good experience. I can’t imagine trying to do that with Call of Duty 5 over the Internet.

But it’s true, I think, that deployments will continue to be optimized and the special sauce for the solutions will be the remote control capabilities. Look at Amazon’s Web Services offerings (including their recent MapReduce offering). By using a Web Services interface, you can remote control deployments, including optimizing the deployment so there is a fat pipe (close association, anyway) between some number of instances. I think Amazon “gets it”. Of course, they’ve had the pain of operating an ecommerce site for so long, and they have been so successful at it, that I probably shouldn’t be surprised.

So, how are you making your solutions “remote controlled”? What integrations with other services do you provide to your customers? How easy do you make it for your customers to control their overall solutions from their easy chair? This will continue to be a huge differentiator for the next few years as it all shakes out.

Posted by: Jason | April 6, 2009

Value and Profit

In the recent Stephen Colbert interview of Biz Stone (co-founder of Twitter), Biz contrasts building “value” and building “profit”. It’s something that’s been on my mind lately, too. Here are my simple definitions:

  • Value: Customers would miss you when you’re gone
  • Profit: Customers are willing to pay you to make sure you won’t be missed

I think Twitter’s approach is right on, building the value first. Biz claims to have “patient investors”, and I think this is critical to making this approach work. I’d like to think that at Ringside Networks, we built value (based on the number of downloads of the open source platform we built) and the interest in the platform that resulted. We were far from producing profit when we folded, but I still have confidence in the formula.

Posted by: Jason | February 11, 2009

Cost, Reward, and Adoption

I’m a parent, and like many parents, I think my son is pretty smart. He and I play World of Warcraft occasionally, and recently the world added a new playable class for players who have reached at least level 55. Upon launch, it is clear that the Death Knight is “OP” (Over-Powered). My son provides me with the following analysis, which I am paraphrasing. Last time WoW introduced a new class, it was the Rogue. It, too, has long been considered “OP”, especially in Player-versus-Player (PvP) scenarios, where the Rogue can pwn n00bs all day long through stealth, backstabbing, and the dreaded “stun lock”. Gradually, the Rogue has lost some of what once made it over-powered, and although the “DKs” are more powerful than Rogues when they were introduced, they are now dramatically more powerful. Being a conspiracy theorist and cynic like myself, my son concludes that this was not, in fact, an exercise in fixing the game balance that was broken by an OP class being introduced into the game. Instead, he thinks it may be an intentional strategy to get people using the new class. By making the class desirable (over-powered), WoW can populate the world with as many of the new class as it thinks is right, then “Nerf™” the class by adjusting (read: “removing”) the attributes, skills, and powers that make the class so desirable.

Let’s apply this to Google’s new Location services. Privacy concerns aside (since so few consumers actually care about protecting their privacy, much less understand how to protect it; sounds like a later post!), the location services have the potential to be incredibly valuable to Google over the long term. Location-based advertising the the next nut Google needs to crack to continue to expand their reach in online advertising. By providing these service on mobile devices and now right there in GMail, they are planting the seeds that they will most likely reap in the coming years. Look at YouTube. In that case, they provided “all-you-can-eat” consumer-generated content… totally free and with no obligation. Only now, they are providing ecommerce links (to the songs used to make the video), advertising, etc. to try to monetize the asset. Likewise, these location-based services are likely to be the Trojan Horse that gets lots of consumers to use their location totally for free and with no obligation. That is, until they receive an ad for that Pizza Hut they are standing right next to while watching a YouTube video on their iPhone.

Posted by: Jason | December 29, 2008

Gaming twitter-based services

When people talk about their “culture”, they often mean their ethnicity, their religion, or the region where they grew up. As a child of the Internet, Internet culture is my culture. One frustrating aspect of Internet culture is the propensity for people to game systems, exploiting the properties of one (or several) person’s (people’s) work to serve their own ends.

When I was checking out DM Fail (because, yes, I do have to watch trains wreck), I was really taken aback by how quickly the “service” devolved to shameless self-promotion. Then I was taken back… back to a time when people wrote short messages to your console screen, normally when you were trying to get some “real work” done (read: playing a MUD; for the uninitiated, that’s like World of Warcraft without the 3D graphics, and it’s much more addictive than it sounds). Back to a time in the Golden Era of the Internet, when the console didn’t always know that your backspace key was meant to delete the character just before your cursor. Instead, it would helpfully print the character code (^H) of the key. Thus was born such tongue-in-cheek gems as:

That new blog post is so boring^H^H^H^H^H^Hinteresting!

Now that I understand that my culture is alive and well, I’d like to declare that, thanks to DM Fail, “dm” is the new “^H”. Enjoy!

Posted by: Jason | December 4, 2008

Implementing OpenID… in About a Half an Hour

I’m a fan of OpenID, OAuth, and the other protocols that make up what Chris Messina calls DiSo (Distributed Social). There is a lot of exciting stuff that can be done using these open protocols, but I haven’t had a compelling reason to integrate them into anything I was working on. But, the Amazon EC2 server I was working on was on the fritz, and I was waiting for the load to go down. This opportunity gave me about 30 minutes to look into how hard (easy?) it is to implement OpenID login.

I had all the key components: an OpenID login (via my friends at chi.mp; Chris also works for an OpenID provider, Vidoop, and there are many others, covering some people who certainly don’t even know what OpenID is), PHP 5, PEAR, and all the trimmings. I also had experience implementing other authentication mechanisms, such as Facebook Auth. And I had the all-important walk-through at OpenID Enabled. In about 30 minutes and about 50 lines of code (including a login form where I could enter the name of the page I was trying to reach and all the redirect code), I successfully logged into the site I was working on.

Here’s the thing. Implementing the OpenID protocol is, in the immortal words of G.I. Joe, only “half the battle.” The biggest issue facing adoption of OpenID is simply the fact that we have 50 years of legacy where people design authentication into their system when they build it. We even did it at Ringside Networks when building our open source social platform, and we knew about OpenID, OAuth, and the like (something I hope will be addressed, given some community effort and time). If you operate a site that already has authentication built in, you end up having to do significant refactoring of the authentication and user profile system to accommodate OpenID. The net result of an OpenID login is a claimed identity… and not probably not an identity your site knows anything about. I’m sure there are folks smarter than me that, 5 years ago when they were building their Web 2.0 site before there was a Web 2.0 label, separated the concepts of authentication and user profiles. But I’m willing to bet there are plenty who didn’t.

Oh, and your OpenID implementation isn’t free (at least not from me) if it can’t be done in a half an hour, just in case you were wondering!

Posted by: Jason | December 2, 2008

Sometimes, things should just work

I must be getting old. Somehow, I just can’t operate a basic e-commerce form. All night, off and on, I have been doing battle with the Digital River implementation on VMWare.com, trying to avail myself of the much-publicized Cyber Monday deal on VMWare Fusion. I have reset my password at least 3 times, live-chatted with a “support” representative who immediately pawned me off on sales@vmware.com. It’s bad enough that VMWare tries to extort support fees for virtualization software during the shopping cart process ($25 to respond to one email support request? Seriously?). I shudder to think what they might try to charge me to fix this issue with me trying to give them money. E-commerce should just work. There should be no barriers to me giving you my money.

While I’m griping, I might as well also gripe that the only reason I need such a piece of software is that Intuit has seen fit not to make the Mac and Windows versions of Quicken binary-compatible, thus locking some 7 years of my financial data in a tomb with my copy of Windows XP. And no, I can’t just export the data and reimport it, since Quicken doesn’t support QIF for anything more complex than a checking or savings account and doesn’t have a clever migration assistant. Something else that doesn’t just work.

Update: Through the magic that is the Internet (and blogging), I managed to get some good customer service from VMWare, and now I have my licenses. To be honest, the discount wasn’t worth the time I spent trying to get it. What can I say, sometimes I obsess! No one at VMWare said anything, but I think we were both victims of Digital River, who for some reason is pedantic about matching phone numbers with physical locations and zip codes. Silly me… I figured if it was good enough for my bank, it should be good enough for a $40 download.

Posted by: Jason | December 1, 2008

Selecting a PHP IDE

Editing code in PHP can be challenging. Plenty of people I know use a simple, programmer-friendly text editor, like TextMate. However, editing code is only the beginning; there are plenty of other things that a programmer has to do beside typing. But even when typing, features like code completion and code documentation are important. I personally wanted to use a free, open source IDE, which leaves only a few options: Eclipse and NetBeans. I say “a few”, because there are multiple versions of Eclipse environments. I have recently evaluated these options, and I made a switch.

The Requirements

My requirements included: Git support (I’ve recently started trying out github.com, which is a pretty nice, inexpensive way to do source code control), PHP code formatting, PHP code completion.

The Bake-Off

I was originally using Eclipse Europa (3.3) with the PDT and the Subclipse plug-in. Naturally, I started here, since I had an environment that worked. I found the JGit/EGit plug-in, which looked promising, but when I tried to install it via Eclipse updates, it said it required 3.4 of the Eclipse Core (which is part of Eclipse Ganymede). I just wasn’t able to figure out how to get a version for Eclipse 3.3, so I moved on…

Next in line was Eclipse Ganymede (3.4). This version of Eclipse is fast, and the JGit plug-in installed without a hitch. The down side is that the PDT plug-in was completely worthless in my configuration. It was unable to use classes from my PEAR installation, and it failed to auto-complete even for classes inside my Eclipse project. I know, I should dutifully document these shortcomings in Jira for PDT, but I’m being a consumer now, not a developer. This left me with one more last-ditch effort…

Finally, I tried the latest NetBeans IDE. I haven’t used NetBeans since the last millennium (it’s fun to be able to say that), and time has been good to NetBeans. JGit installed without a hitch, and despite its scarily-low version number and unsupported status, it has worked like a champ for me. The PHP support is stellar, allowing me to click through even to classes defined in my PEAR installation. Debugging via XDebug is fairly good, although not quite as good as my experience with Eclipse 3.3. My only complaint so far is that, unlike Eclipse, NetBeans appears to have some memory leaks and can’t be left running for days at a time. That, and the UI looks like it was designed by a cartoon character (call it “gratuitous use of the bubble effect”). I’m happy to live with these minor inconveniences, though.

The Winner (for me, anyway)

In the end, I selected NetBeans. Since it’s been so long since I’ve used NetBeans, this feels a little bit like stepping backward in time. But the improvements made to the IDE over the years are remarkable, and it looks like a strong contender for cross-platform IDE of choice.

Posted by: Jason | November 1, 2008

Applied Gaming Theory

Like many people interested in computers and technology, I am a video game player. I have played many games, from Asteroids to World of Warcraft, across many genres. Over the years, I began to feel that something was missing from the work-a-day Enterprise software world that was present in these electronic games. What a great feeling it is to find that others not only had similar thoughts, but eloquently crystallized those thoughts exactly! Dan Cook wrote an excellent set of slides (with notes) that not only captures my personal sense of disappointment when I look at a typical web application, but further describes why I feel that way.

Applications sometimes need to be complex. But if you measure success by pure usage numbers, it is some of the simplest applications on the Web that have been successful lately. It is just this simplicity in the face of overwhelming complexity that impresses me. Now I know why, and I intend to apply some of these ideas to my own projects. I encourage you to do the same, and let’s see if we can make the world a simpler place for people who use technology not because they are technophiles and are willing to make the effort to learn complex tools, but for people who want or need to use the technology without needing to make the effort.

Older Posts »

Categories