Thursday, June 28, 2007

Wanted: A VIP (VPN?) Room for Web 2.0 Apps

I am working on a project with a team in New York, San Francisco, and Noosa, Australia. It's a bunch of really smart folks and we have a good time ... but collaboration and communication could always be better.

I would love to cook up a little social networking site for our project work using, say, Ning. In addition to the basic stuff like messaging and chat, we could embed this box filesharing widget, put up videos and photos (ok, our photos are mostly of whiteboards, but we count that as fun), audio recordings of meetings, maybe a gizmo or skype or grandcentral widget for click-to-call. Maybe plug in some WYSIWYG wiki editing.

But we can't do that because of security and nondisclosure concerns. IndustryNext doesn't harbor a lot of secrets, but our clients may -- especially when it concerns upcoming and unannounced products that we're building with them. And our confidentiality with clients means that we won't put their project data into a shared SaaS environment.

So what can we do? The other extreme (from fully shared Saas) is to acquire the apps to host in-house. But that's not an option with many of these services, for good reason.

I propose that a third party build a business hosting secured and partitioned areas where instances of these apps could live. Of course going down this road starts to break the business model that makes many web 2.0 services viable. Without shared hosting infrastructure, and with the added hassle of supporting a "customer" deployment (even if the hosting service is a very sophisticated customer), advertising won't pay all the bills anymore.

But that's ok: I'm willing to pay some money for secure, semi-private access to these apps. It's way cheaper than any alternative I'm aware of, and would have a positive impact on our productivity. Moreover, since the apps are already built and deployed, it's all gravy -- a new revenue line -- beyond the actual hosting and the maintenance (from the app provider to the host).

Does something like this exist? If not, any takers?

Tuesday, June 26, 2007

Free ActionScript3 Code Generation from Violet UML

At IndustryNext, we are in the interesting position of building cutting-edge projects, with cutting-edge tech for somewhat more established companies than your typical web 2.0 startup.

Part of keeping the speed and quality high is leveraging tools for code analysis and code generation to help keep a handle on dynamic language development. (E.g. I wouldn't ban the use of eval in Ruby, but I'd sure as heck want a tool that can tell me where in the codebase it's being used, and why.) In some cases, we're pioneering these methods.

Generating consistent code from models is a step in this direction. (In JavaScript, just guaranteeing consistent variable names can save no small amount of debugging.)

In order to make it easier to play with object models in ActionScript 3, I spent a little time integrating Cay Horstmann's lightweight Violet UML modeling tool with David Holroyd's metaas library for manipulating ActionScript.

The result is VASGen (Violet UML ActionScript 3 Generator) 0.1, an initial release of a free code generation tool that supports generating classes, interfaces, field, properties, methods, and various types of relationships from Violet's Class Diagram editor.

The project page includes details on what works and what doesn't in this release. If you build applications in AS3 and you like UML models, please give it a try and let me know what you think.

Friday, June 22, 2007

Jeans and a Minority Report Moment

I was putting on a pair of jeans and noticed a nylon tag stitched in them, marked "Remove Before Washing or Wearing." The fabric was conveniently marked with a line saying "cut here."

Wondering what that was all about (a desiccant? inventory control?) I grabbed a knife, cut out the tag, and held it up to the light:

Ok, it's an inventory control RFID tag (the rings are the antenna). Not a huge surprise...

But something about cutting the fabric out with a knife, holding it up to the light, and seeing this inside reminded me of the sequence in Minority Report when John goes to a back-alley surgeon to get his eyes cut out and replaced (tracking and identification is accomplished through retinal scanning in the film). After the operation, he's forced to hide, delirious and blindfolded, in a tub of icewater, as the police flood the building with robotic eye-scanning spiders. This description makes it sound a touch hokey, but it's a brilliant terrifying sequence in the film, and an allusion to role of eyes in Bladerunner.

Having worked hands-on with RFID quite a bit, I'm sure someone imagined how easy and "useful" it would be to not print "Remove Before Washing or Wearing" on the tag at all.

Wednesday, June 20, 2007

More Khakis: Build a Market for Near-Future Consumer Dealmaking

Here's an idea I've had for a while... if you're good with strategy (see Hey, Guys in Khakis) you might be able to fit the pieces together well enough to make a buck. I thought about building something like this at one point but I'm just not enough of a strategist or a consumer to have a real passion for it.

The premise is that most everyone always has some purchases they're planning, say two weeks to six months out in the future. The buyer has some characteristics in mind, a general idea of price, and is definitely going to buy in that time frame. But he or she doesn't have a specific item chosen nor a specific date when it's time to search out a deal and buy.

As just one example, if you like or need shiny gadgets, you might have thought
  • I'm going to get a X-megapixel camera sometime this summer, I'm just too lazy to read all the reviews and sort it out right now.

  • I'm want to buy my wife a bigger flat panel, but the prices are always bouncing around. I think I'll wait a while and see how much LCD real estate I can get for my money.

  • I'm sick of encoding all these DVDs. When I see a deal on TigerDirect or techbargains I'll grab one of those DivX-capable DVD players and be done with it.
There's a market here: a lot of people are not actively searching today (using one of the many comparison shopping sites), but they are definitely buyers. Whether $150 is a good pricepoint or $1500, it's something they are comfortable with and have essentially already decided to spend.

Today, this is an inefficient process on both sides.

The customer waits around until eventually he or she happens to hear the Fry's ad on the radio, drives by a store, or sees a chipmunk on the way to work and figures it's time to get a camera and start posting lolmunks.

The seller has limited visibility into who is interested in what products, when they plan to buy, and how much they'll spend. If a site has an extensive profile on you (say, amazon) then maybe they could develop an algorithm to predict when you'll upgrade your camera, what you're likely to spend, and how you comparison shop. They could then communicate directly with you to try and close a sale. But most vendors have a fleeting relationship with the customer, so they spend lots on ads, make sure their products are listed on sites like pricewatch, and hope the customer comes.

The opportunity is to create a market that lets vendors go look for buyers who want certain kinds of products, and make them an offer. For example, Fuji revs their cameras constantly, so maybe I have a bunch of a particular model, and I know the next line is coming out soon. If I want to move the inventory, I put it "on sale" and pay to advertise.

What if I could go and find a bunch of buyers who have said they're looking for this kind of camera at a price point I can stand and they're buying soon? My goal is to (1) offer them a price they'll buy at and (2) make enough on the sale that I'm still ahead of where I would have been in the "put in on sale and advertise" scenario.

This system would be a win-win. But several pitfalls must be overcome. Principally: How can you tell a "true buyer" from someone who just wants to window shop some really great deals? It makes a big difference to the seller, because publishing these kind of targeted deals out into the ether (offering them to arbitrary unverified people) is essentially the same thing as just publishing a lower price. It's asking the vendor to show his cards without the buyer committing anything.

So, to make this work, one needs at least a way of limiting the pool of "true buyers" to those who are plausibly legitimate. At the same time, it cannot be a closed system of fully committed participants since a "true buyer" may sign up, see some great deals, and legitimately decide to just forget it and buys something else that catches his eye. The buyer is not likely willing to be obligated to buy through this system.

The whole mechanism needs some sophistication, and probably a few small but key innovations that will keep people (mostly) playing fair on both sides. These might include unique valid credit cards, online reputation mechanisms, social networks, and some things that haven't been invented yet.

I believe such a market can and will be built. I expect to see someone clever or lucky make a bunch of cash building this and then selling it to eBay. And although I don't love shopping nearly enough to want to build this product, I'd gladly be its first customer.

Tuesday, June 19, 2007

Design and Implementation for Longevity: Two 20th-Century Machines

Here are two twentieth-century machines that are beautiful, functional, and still have it after several decades of radical technology evolution "should have" passed them by.

This C2 Corvette is as edgy, clean, and exciting as any vehicle built since. It probably always will be:

This original (1978) Cessna 152 performs at original spec after 30 years and looks great doing it:

So what does it take to come up with a design and an implementation that can hold up like these two?

Certainly sportscars and airplanes are not trivial problem domains with few constraints. And they're not domains lacking innovation and evolution. Yet neither of these machines take it on the chin for lacking digital gauges or GPS navigation.

There's some luck, some genius ... what else? It's more than a design question. If it were only about design, we might get bogged down in aesthetics and cultural theory, which is fun but sort of a sui generis sport. (Why does art deco seem futuristic? because "the futuristic" has irremediably incorporated art deco? what about directly undermining this? or does that form a stucturalist framework that reinforces the duality? ... )

One key piece is the absence of over-engineering. The 'vette and the 152 are fabulous implementations of their times, but never strove to be "ahead of their time" in terms of showy engineering.

Contrast a recent BMW or a Mercedes, which always comes off rather less slick a few years on, because at design time it had been packed with every blinking gewgaw money could buy, and those rarely age well. These cars do ok, though, because the first buyer gets a space shuttle experience during her 39-month lease. And since the drivetrain and suspension tend to be solid on these cars, the cars hold up for the next 25 years -- they just look increasingly tired doing it.

Friday, June 15, 2007

Scamalicious, Bubblicious, or the Next Transistor?

It's a multiple choice test for this venture investment in Stirling engines as solar power collectors. Stirling engines are of course very real. But so is fusion.

Is this brilliant risk-taking and the green investment that'll lead to breakthroughs? or another dangerous sign of too much money chasing too few ideas?

Wednesday, June 13, 2007

Pac-Man on your Smartphone? Ghosts are Chasing Your Game Download

Remember Bad Idea Jeans? That's what came to mind after TechCrunch told me Namco is releasing classic arcade games for AT&T smartphones, and I checked it out.

Pac-Man on my Blackjack is not a bad idea at all. But here's the ordering page:

Notice you can choose how many copies you want to but, but not whether you want "Download Protection" ... Interesting .. My downloads have never been injured before. I wonder why I need protection? If you click the protection link, you get this popup:

This is obnoxious on so many levels. And no, I'm not complaining about the money. The problems are these:

First, the market for off-deck software for mobile devices is in its infancy. While the general population is slowly realizing that the phone is a computer and can run programs (if the iPhone does nothing else, its TV spots will help communicate this fact), most folks have still never installed an off-deck app, let alone paid for one.

The smartphone users are at the vanguard, the evangelists that get their friends and companies onto mobile apps. So why even suggest that the software downloads are any different from a PC software download? Why suggest there's some special problem with mobile software, so you'd better pay $3 for "insurance" in case your stuff gets screwed up?

At this market's stage of maturity, users need to be told that if they're ready to start buying mobile apps, there is no risk, and the vendor will do 100% whatever it takes to make sure the software is available in case a device gets broken, hard reset, etc. Compare the early days of e-commerce: a number of companies promised extraordinary customer service to overcome anxieties about returns, using credit cards online, etc.

The second problem is that it undermines the whole idea of software sales as IP licenses. If I've bought a permanent license to Pac-Man for my device, why does it cost $3 to make sure I can download it again later? Is the $14.99 for a conditional license, that only gives me the right to use the app until such time as my device gets reset? Then $3 buys me a permanent license? Of course this is absurd.

Bottom line: if Namco want another $3, just call it a handling fee, or a one-time provisioning fee, or just toss it into the price. My downloads don't need protection.

Tuesday, June 12, 2007

Hey! Guys in Dockers! Over Here!

Geeks love to hassle the guys with the MBAs and the "strategy" resumes. And plenty of geek entrepreneurs have showed the MBAs a thing or two making a fortune with code-first-ask-questions-later software and websites. But sometimes the technology isn't the problem and some strategy would be helpful.

In particular, I was chatting with a co-worker last week about how to set up a mass system for buying and selling used software licenses. In most countries and most U.S. jurisdictions, the "right of first sale" says that if you have a software license, you can resell your rights under that license to someone else. That's the legalese behind buying an old game from a bored gamer on craigslist. As an IP sale, it's not about the disks or even the activation key, but about the license. The seller has to relinquish the right to use the software (usually) and anything that comes with that (like support). The buyer gets it.

For big expensive licenses, like that 16-CPU perpetual Oracle license you no doubt have lying around, there are companies ready to help broker a deal. Actually there are a handful of companies ready to wheel and deal. At the consumer or low-value, low-volume level, there are some funkier ones. But there is no ebay for buying my aunt a "used" but legit copy of Word 2003.

Clearly there's a market here, and a look at the current players suggests it's not efficient or transparent. How can we get a web-based open market to work?

In this arena, it's reasonable to suppose most buyers are "legit" because most or all of these software packages could be acquired illegally for free if the consumer were not inclined to pay. It's trickier on the sell side since, in the extreme case, a seller can offer to sell a license for anything at all without possessing it in the first place. Most software licenses have no physical redemption token like a bearer bond, stock certificate, or paper money. So a buyer pays up, and the seller says, "You've got a deal, you're now the owner of a Foobar 2.0 license."

So we need some kind of clearinghouse ... but a clearinghouse for what? And how to keep it digital so we don't need a Netflix-grade DVD sorting facility to bag Microsoft Bob disks?

We're going to need digital tokens and a tracking scheme that software vendors want to participate in. Why would they want to do that? One argument asserts that a product is more valuable if a buyer knows it can be resold (think cars). And a uniform, open key registration and verification scheme could help fight software piracy without requiring each vendor to pay to maintain their own system.

The point is, I need a strategy guy (or gal) to line all the pieces up. The tech is trivial -- we have auction systems and reputation systems and crypto and tokens and all that. What we need is a scheme that arranges interests, incentives, and rewards in such a way that enough players get in to bootstrap the market.

Sunday, June 10, 2007

Alrighty Then...

This blog gets a lot of hits via Google... from Windows Live Search, not so much.

Recently a visitor arrived via this referring URL:

I'm unsure whether this says something about my blog or about Microsoft's search engine. Probably the latter. But if it's the former, I'm not sure if it's a compliment or not.

Saturday, June 09, 2007

A Workforce That's Never Seen Mac OS 9

I spent some time yesterday with a recent grad who is interviewing for a design position with IndustryNext. For some reason, I got the idea to ask him if he'd ever used a Mac before OS X. "Nope," he said, "I've been OS X all the way."

Damn, man. I'll resist the temptation to get melodramatic about feeling old or to reminisce about walking uphill both ways, hacking Think C and Think Pascal code for the old MacOS, with Inside Macintosh open on my lap 'cause there was no "line" for online docs to be "on."

Actually, the emergence into the workforce of a generation that knows only OS X means that Steve Jobs, for all his quirks, has pulled off something pretty amazing. Namely, making OS X successful enough for long enough that students are graduating who don't know anything about Apple's troubled bad ol' days.

I'm still ambivalent about Apple and Mac OS X, though. Great accomplishments include the design (both software and industrial), the first POSIX compatible BSD OS that your mom wants to use, and the first mass-market OS with a native OO API...

At the same time, Apple is still a high-maintenance partner with serious control issues.

Things have improved since the "authorized repair" racket in the 80s, where Apple required personnel to confiscate hardware if there were signs you had tried to install it yourself or put in something that hadn't been blessed by Cupertino (creating ethical dilemmas aplenty for the geeks with the case crackers and screwdrivers, at least where I lived). But vestiges of the program were still in force for factory repairs, at least up to the point just before OS X was released. And after that, there has been an unending series of minor scandals.

To be fair, selling high-end product in a Wal-Mart world is a tough gig. More power to 'em for trying. And nostalgia aside, if a new generation of designers doesn't know or care about the Mac legacy, good for them. Let's hope that their ignorance of the past opens their minds to new possibilities for the next generation of products.

Friday, June 08, 2007

Notebarn: Launching URLs and International Phone Numbers (Includes Crash Couse in Numeric Regular Expressions)

A lot of visitors to this blog and the Notebarn project page (where you can download the app) are from outside North America, and all of those folks got a raw deal from my last update.

I added the ability to dial numbers from a note, but the phone number recognition was based on a hard-coded pattern that looks like a North American phone number (basically, 10 digits with some optional delimiters).

So I've got an update that moves the phone number recognition out to a configuration file, where you can put in a localized phone number pattern.

I also found it really frustrating to put a URL in a note and then have to key it in later to browse. So this update recognizes URLs in notes and lets you launch them just like dialing a phone number from a note.

URLs / web browsing works straight out of the box. For localized phone numbers there's, um, a small catch.

The Catch

I did not set up a list of international phone number patterns. So, in this release, if you're outside North America, you'll need to add your own phone number pattern to the config file. Here's how it works:

  1. Install the new Notebarn with the latest OTA installer. The install will place a config file called notebarn.config.txt in the Program Files/Notebarn directory on your device, right alongside the executable.
  2. If you have a regular text editor on your device you can edit the file in place and skip to step 3. Otherwise, use ActiveSync to grab the file, pull it over to your PC, and edit it there (with an editor like Notepad). When you're done you can push it back to the device with the changes.
  3. In the config file you will see two lines like this:

    #Add a RegEx for your localized phone number format here:


The beast on the right is called a regular expression, and your .net-enabled Smartphone has a great engine for processing them. Microsoft has docs on the format. But you don't need to read all that. The cheatsheet for phone number patterns works like this: \d means a digit. \d{3} means exactly 3 digits in a row. \D means a non-digit. Specifying non-digits is how you look for delimiters used between groups of numbers, like a period, space, dash, parens, etc. And \D{0,2} means anywhere from 0 to 2 non-digits in a row. The \D? is shorthand for \D{0,1}, or "zero or one non-digit."

So all together, the North American pattern above means 3 digits (the "area code") followed by 0, 1, or 2 non digits (think of 415-555-1212 or (415) 555-1212), then 3 digits, optionally a nondigit, 4 more digits, and a non-digit to mark the end. How does the phone dial if we've recognized an extra non-digit at the end? Well, the phone app in Windows Mobile is smart enough to drop the non-digit parts of the phone number when it dials.

If you put together an expression for your locale (or borrow one from another program), feel free to email me or post it in the comments. In the next release I'll include all of them in the config file to make it easier to set up.

Monday, June 04, 2007

Foleo is Foolish ... But Here's a Better Idea

I know, the Foleo is spelled with an "e" ... Either way, it's such a silly proposition only Steve Jobs could hype this thing enough that people might buy it. And if he did, the only benefit would be keeping the computer gene pool diverse by preventing people from buying a decently spec'd Windows laptop, for about the same price.

The interesting bit is that we do need optional larger displays for small computing devices so that we can get the most out of them as they continue to increase in power and connectivity. So what would work better than this non-laptop?

I worked with Tim Andrews at Viant in "Web 1.0" and one time he took us out of our way to look at the latest video goggles from Sony Japan. Ok, personal movies ... huh? I didn't get it. The goggles are going to be the video output for this, Tim explained, pointing at his Palm. Tim has spent much of his career thinking ahead, and this time was no exception. The 1999-era Palm would've taken 30 seconds to BlT a frame for these goggles. But now?

Let's see... Modern smartphone hardware can drive a VGA display or larger. And here are the visor displays: VGA for about $400, and SVGA for $1600. Like most hardware, the price is inverse-exponential with volume. That's a fancy way of saying these are expensive gadgets 'cause no one makes a lot of them. The price will drop drastically as they are produced in higher volume.

On the input side, there are old fashioned Bluetooth or more futuristic solutions and bear in mind: you don't always need big input and big output at the same time. Web browsing and document review can benefit from a big screen, but hardly need a full-sized keyboard. So there's no reason to fill your lap with another battery-chewing, airport-security-antagonizing monstrosity just to follow up on some links.

Small computing devices are about mobility and convenience. They are hardly "enhanced" by chaining them to a big dumb anchor. But the tech is here to take a smartphone-grade device and get a ton more productivity and value out of it by widening its human I/O bandwidth with these virtual keyboards and virtual big screens.

Saturday, June 02, 2007

"Offline is Here" ... and Credible (!)

I spent a few minutes chatting with Brad Neuberg yesterday, following up on his presentation at Google Developer Day on Thursday. We spoke about offline data persistence for web apps, and the rapid crystallization of industry players around a particular approach.

"Offline is here," he said. Two weeks ago, that would have been just one opinion of one prominent person working in the space. Fast forward to June 1, and half the industry seems to have decided that now is the time, and that a specific SQL flavor of offline storage is the right one.

Why two weeks ago, not one week ago? Because when I asked about Firefox 3 (which has been promising an offline facility), Brad pointed me toward this change to the XHTML5 spec at the WHATWG, submitted on May 23. Here's a more readable and faster-loading spec draft section on local SQL storage (but content might change, as the doc develops). Firefox 3 aims toward this spec, and the spec API looks remarkably similar to what Google Gears offers.

So we have Dojo, Apollo, and Firefox essentially promising the same relational, origin-domain-partitioned storage metaphor along with similar APIs. Google brings plugin implementation code targeting all major browsers. For someone like me, who gets paid to make bets on the (near-term) future in order to architect applications, that's awfully persuasive.

In some ways, this is another iteration of the "dumb terminal + remote computing" vs. "smart terminal + dumb network services" oscillation... but it seems like we're maybe getting critical damping now.

Microsoft articulated a sensible "Smart Client" architecture around eight years ago: deliver apps that leverage services in the cloud but can also run offline. They should sync when online, while leveraging local hardware for performance and to maintain state. I'm using a quintessential smart client right now as I type.

The only easy way to implement that architecture and get the full benefit of local resources though was to build a .net application. Then Win XP shipped without .net; zero-click install had issues, one-click install was too late, and the rest is history.

We got AJAX and Web 2.0 instead of a lot of smart clients, which wasn't a bad trade.

I'm pretty psyched now though, because it looks we're going to get to have both.