Jeffrey McManus > Category Archives > Web/Tech
Resubscribing to this site's RSS feed
As a reminder, I've moved this blog to http://blog.jeffreymcmanus.com. New posts will appear there, not here.
If you are reading this post in an RSS reader, you have the old feed. To read new posts, you'll need to subscribe to the new feed, which is http://feeds.feedburner.com/typepad/JHFw.
A NetNewsWire user told me last week that she was having trouble subscribing to the new feed; upgrading to the newest version of NetNewsWire seemed to fix the problem.
April 7, 2008 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Moving the Blog
I took my own advice and snagged a domain name where my personal stuff will live henceforth. I also used this as an excuse to move the blog from Typepad to Movable Type. So: the new blog is at blog.jeffreymcmanus.com.
If you're reading this via RSS, it means you are subscribed to the old feed, which doesn't point to the new blog. You will want to resubscribe to the new feed, which is here.
The archives here will continue to exist at this domain until September-ish, but the new stuff will all go up at blog.jeffreymcmanus.com.
February 28, 2008 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Mono's "Usability Disaster" and Platform Discovery Optimization
Seeing this post from Miguel about a major cock-up pertaining to the developer download experience in Mono made me think about the platform companies we've been advising.
Companies often trick themselves into thinking that every developer who discovers their stuff will automatically do whatever it takes to use their stuff. But developers actually make very calculated cost-benefit choices about what technologies they want to adopt -- in a world in which time is at a premium, doing nothing is always an option. If developers feel jerked around or not fully supported, they'll turn their attention elsewhere. Certainly there are some developers who will slog through anything to get to what they want. But ultimately developer adoption is a numbers game; in our experience a sizable percentage of developers who encounter a platform will abandon it without adopting if the developer discovery experience isn't fairly solid.
We advise our clients to own their platform discovery process from the first pageview to the time a developer performs a download, and to test this flow frequently. We generally recommend against permitting any part of the developer discovery process to be owned by a third party. A good example of this is Sourceforge -- what they provide in terms of hosting and presence does not make up for their horrible user experience and very unfortunate practice of showing advertisements for competing products at the very moment the developer is about to hit the download button for your product.
One of the consulting products we provide for clients with existing platform products is a developer discovery analysis. The idea here is to go through the process of getting up to speed with a technology platform, and then provide recommendations to the platform provider (our client) as to what they can do to optimize the process of developer discovery. Often the recommendations we make are things that the client knows should be fixed, but often our recommendations are enough to motivate them to actually fix the problems.
This is a fairly quick way to get very detailed feedback (with screen shots, written recommendations for remediation, etc.). For start-ups that aren't quite to the point where they can afford a product manager, it's a cheap way to get a quick dose of help in the area of platform product management and developer user experience optimization.
January 25, 2008 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Speaking at VSLive SF
I'll be speaking at VSLive San Francisco the first week of April. This time around I'll be giving three talks:
- Creating Facebook Applications Using .NET
- Data-Driven ASP.NET Ajax (an updated version of the talk I gave in New York last year)
- Creating iPhone Applications with ASP.NET
If you're going to be in town for the conference and want to set aside some time to get together and chat (particularly if you're interested in getting some consulting help) please leave a comment.
January 11, 2008 in Collaboration, Content, Community, McManus World Tour, Web/Tech, Work | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
StubHub Scrapers
Link: Hannah Montana Tickets on Sale! Oops, They’re Gone
"[Hannah] Montana tickets, whose face value is $21 to $66, have been resold on StubHub, on average, for $258, the company says, and that is without taking into account StubHub's 25 percent commission (10 percent paid by the buyer, 15 percent by the seller). None of the proceeds from the resale of tickets at inflated prices make their way back to Ms. Cyrus.
Some ticket brokers are so certain of their ability to get hold of desirable tickets that they confidently advertise tickets on these exchanges even before tickets go on sale to the public.
How do they do it? An intriguing explanation is that brokers use specialized software to make multiple online purchases of tickets, circumventing the four-ticket-per-customer limit that the rest of us must abide by."
This in many ways sounds like a replay of eBay's early days as a platform five years ago, when the company was compelled to create a web service API with its own terms and conditions as a way to regulate rogue developers who were writing eBay applications by scraping HTML from the site. Now, StubHub (an eBay company) is running into the same thing; it can't be a coincidence that StubHub doesn't have its own web service API.
December 15, 2007 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Static on the Dream Phone
Link: Static on the Dream Phone
"Verizon announced last month that it will open its network to 'any application and any device' by the end of next year.
But while Verizon's pledge sounds promising, the language in which it is couched makes me wonder whether Verizon understands what a true open platform looks like. The announcement states that 'the company will publish the technical standards the development community will need to design products to interface with the Verizon Wireless network,' and that 'devices will be tested and approved in a $20 million state-of-the-art testing lab.' It's not yet clear what standards developers will need to follow to write applications that work with both the device and the network, and who will control those standards.
This is not 'open.' It's just a little less closed. A true open platform like the Internet doesn't have certification of trusted devices or applications. Developers get to do anything they want, with the marketplace as their only judge and jury."
Tim O'Reilly in an op-ed in today's New York Times makes the argument that if a developer has to ask permission to write an application on a given platform, that platform isn't really open. This notion is one of the ten principles for platforms that I laid out in 2006 when I started Platform Associates.
As companies attempt to reap the benefits of open platforms, I'm seeing more and more situations where companies release fake open platforms -- attempting to benefit from the momentum of platforms without performing the necessary activities to become an actual open platform. In Verizon's case, one wonders what they think that "any device and any software" is supposed to mean.
Unfortunately for them, fake platform companies are also missing out on the benefits. When I'm engaging with a company that wants to provide a platform, I try to keep it positive and emphasize the benefits to openness, rather than focusing on the horrible credibility problems that happen when you say you're open but really aren't. For example, a lot of big companies hire teams of business development specialists to trawl for partnership opportunities. What if these opportunities simply came to you? Similarly, most companies (even very large ones) have difficulty performing all the engineering work necessary to keep every kind of customer happy. What if you gave customers the ability to do this work themselves? And so on, and so forth.
Platforms that use the term "open" without actually being open do so at their peril, but they're also missing out on huge opportunities.
December 15, 2007 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Pruning
I'm doing some heavy year-end pruning of my blog reading this week. Much of this is time-managment (both Approver and the consultancy have experienced big upticks in the past month and are taking more of my time). But the pruning is also informed by a desire to spend time on more quality stuff. So, blogs comprised mostly of links to other blogs without explanation or commentary are mostly going in the bit-bucket. Ditto for corporate blogs that don't actually talk about the company's products (one of my consulting clients is an offender here). And blogs that haven't been updated in over a month are out the door, too. NetNewsWire has a neat feature that turns the name of the blog poop-brown if it hasn't been updated in a while, which makes this kind of pruning easier.
November 28, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Does "Open" Really Help Developers?
I'm doing some more research on the GPhone/Open Handset stuff today. For the second week in a row, Google is evangelizing a new, "open" platform, with the promise that openness will inherently be easier to develop applications on, create a better consumer experience, and eventually solve world hunger.
Specifically, the Open Handset folks seem to be asserting:
- Today's mobile platforms aren't open.
- It's a big problem that mobile platforms aren't open.
- Making a platform that's more open will foster more and better applications for mobile.
Assertion #1 is just not true.
Assertion #2 is true, but only in the sense that not being able to see at night is a problem. Unlike a lot of closed vs. open technology conundrums, "mobile" isn't a big monolithic platform controlled by one malevolent overlord, at least not at the application layer. They're several platforms controlled by a gaggle of overlords, some of which are less malevolent than others.
Assertion #3 is completely false, at least based on what we've seen so far. It must be false because there already are mobile platforms (both Linux and Windows Mobile) that enable developers to create applications without the intervention of the carriers.
Just making something "open" does not contribute to developer productivity. In fact, openness can hinder developer productivity, since it forces developers to contend with a large number of use cases that aren't relevant to them, and it enables the platform provider to get away with cop-outs like "you can change the source code to make it do whatever you want" and "we realize our documentation isn't great, but the source is our canonical reference".
And Java (which the Open Handset platform will be based on) is certainly not the highest-productivity development environment out there today (and I know a lot of Java developers who will agree with me there).
I'm not saying "openness" is "bad". I'm just saying that Google is assigning attributes to the notion of openness that don't make sense. One gets the impression that this project is being done by a certain type of open-source developer for a certain type of open-source developer.
November 5, 2007 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (3)
Google Makes Its Entry Into the Wireless World
Link: Google Makes Its Entry Into the Wireless World
"John O’Rourke, general manager of Microsoft’s Windows Mobile business, said he was skeptical about the ease with which Google will be able to become a major force in the smartphone market. He pointed out that it had taken Microsoft more than half a decade to get to the stage where the company now does business with 160 mobile operators in 55 countries around the world. 'They may be delivering one component that is free,' he said. 'You have to ask the question, what additional costs come with commercializing that? I can tell you that there are a bunch of phones based on Linux today, and I don’t think anyone would tell you it’s free.'"
At first glance this quote looks like some spin put out by the incumbent to defend their business, but at second glance it makes you say "yeah...we've had open phones for a while now. What just changed? Is it even material?"
Google's campaign to perform competitive jujitsu using the malevolently humming light saber of openness is nice and all, but it's a fact that I can write an application for my Windows Mobile phone today without having to pay anyone any money or ask anyone permission. (I don't think the same is possible for my wife's RAZR.)
Update: Looks like Om Malik shares my skepticism; he's asked some even more incisive questions.
November 5, 2007 in Open Source, Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Wanted: Flickr Drupal Integration
The state of Flickr integration with the content management system Drupal seems a bit chaotic at the moment. It looks like there are a few Drupal/Flickr modules with minimal functionality, but none of them seem like they're being actively maintained at the moment. It seems like the various authors are looking to combine their efforts and create One Flickr Drupal Module to Rule Them All, but until that happens, there's no obvious good choice for adding Flickr to a Drupal site.
I want users of a Drupal site to be able to enter their Flickr IDs in their profiles, then to have the system display thumbnail galleries of only the photos that have a specific tag (or a set of tags) -- no point in having my happy hour photos syndicated to my daughter's school site. The "Flickrhood" module is supposed to do the profile integration and photo fetching, but it doesn't filter by tags (and, at any rate, I wasn't able to get the module to run on the Drupal installation I'm supporting).
Are there other Drupal modules I'm missing here, maybe one that uses a photo-hosting service other than Flickr or one that isn't listed on drupal.org for some reason?
November 1, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Google and Friends to Gang Up on Facebook
Link: Google and Friends to Gang Up on Facebook
"On Thursday, an alliance of companies led by Google plans to begin introducing a common set of standards to allow software developers to write programs for Google’s social network, Orkut, as well as others, including LinkedIn, hi5, Friendster and Ning, according to people briefed on the plans. Those people asked not to be named because they agreed to keep the alliance’s plans confidential."
We'll see what this looks like when it emerges, but whaddya wanna bet that the "standard" they come up with walks and talks like Facebook's API yet is every so slightly different (and incompatible) with Facebook's API?
And how is LinkedIn supposed to factor in here, I wonder, with their famous opposition to the notion of an open platform?
I'm still willing to accept that this initiative is getting lost in the NY Times' muddled inability to do a decent and technically accurate story on Silicon Valley technology, but it really sounds Google is trying hard to turn "openness" and "interoperability" into the new "embrace, extend, extinguish" here. Which, if successful, would be quite a feat.
Update: A second-day story on this quoted Joe Krause on behalf of Google. From this one could deduce that Google's entry into the "open but not Facebook" cabal will be the relaunched JotSpot, whenever they get around to re-launching it.
Update: Marc Andressen has more about this on his blog. I wish he'd posted this yesterday instead of letting everybody get half of the story via TechCrunch. Marc's post clears things up a bit but I'm still interested in seeing what the bits look like. It seems like this is more an attack on Facebook's proprietary markup language than anything else. Memo to interoperable social network cabal: there is no such thing as a platform that does not use some kind of proprietary semantics to map out its feature set. You'll find yourself doing this as well if you haven't done it already.
Side note to web marketers, PR mavens and evangelists: if you want to ensure that there is an elevated level of confusion associated with your launch, one sure way to accomplish that is to provide an exclusive leak to TechCrunch prior to your public launch. I know it's virtually impossible to get on TechCrunch unless you give them a scoop, but there's a cost associated with making those guys your media leak of choice. To put it another way, no product launch has ever failed because the product didn't brief TechCrunch about it a few days ahead of time.
Update: Michael Arrington's headline on this today says "checkmate!" which is of course nonsense since the game isn't even half over, OpenSocial hasn't even produced anything yet and Facebook could of course join at any time if they wanted. His commenters mostly seem to agree.
Saul Hansell of the NY Times has some less hysterical thoughts on this; he points out that "LinkedIn has also said it may ask for a revenue share from those who
create applications for its network. And haggling over money, no doubt,
will slow down the deployment of many social applications." No kidding. This is my main concern about the path that LinkedIn is going down. Having to ask permission to build an app and then provide a revenue share isn't a platform; it's the definition of a walled garden. AOL was successful at this for a while in the 1990s because they were able to bring a mass audience when nobody else could, but these days, that dog won't hunt, monsieur.
October 30, 2007 in Google, Platforms, The NY Times Valiantly Attempts To Report on Technology, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Songbird is for Developers
Online music aficionados may be familiar with Songbird, a promising music player that sports extensibility, skinnability and all-around open-source goodness. Built on the Firefox code base, the player is in development now, but it's open to hackery by third-party developers -- you can create extensions (just like Firefox extensions), user interface skins and more.
Songbird launched their developer site this morning. My consultancy, Platform Associates, participated in the launch, providing content strategy and content development, but the majority of the work was done by Songbird's own terrific team. Great job, guys! This will really help developers discover the product and help to make it better.
October 24, 2007 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Comcast Blocks Most Bittorrent Traffic
Link: AP Tests Comcast's File - Sharing Filter
"In two out of three tries, the [bittorrent] transfer was blocked. In the third, the transfer started only after a 10-minute delay. When we tried to upload files that were in demand by a wider number of BitTorrent users, those connections were also blocked."
Here's yet another reason why Comcast and the rest of the cable TV mini-monopolies will never get a dime of our money. The reporter tested Comcast's bittorrent-blocker by trying to download a public domain file -- the Bible -- from computers in several locations. They discovered that Comcast is blocking bittorrent. While they're not blocking it everywhere across their network, the block is implemented at the protocol level, which means that if you want to use a Comcast cable modem to share a video you shot or a song you wrote using bittorrent, you're out of luck.
I wonder what happens when game developers and others start adopting bittorrent more broadly to distribute demos and patches? I'd also be interested to know the technical details of how bittorrent gets blocked -- it seems like it would have to be something that bittorrent clients could defeat if they knew more about what's going on.
I hope Comcast loses a bunch of customers over this.
October 19, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (4)
Blackberries Create Phantom Vibrations That Are Systematically Driving People Insane
Link: Is That Your Phone or Your Imagination?
"In certain circles, the phantom vibrations are a point of pride. 'Of course I get them,' said Fred Wilson, a managing partner of Union Square Ventures, an early-stage venture capital firm based in New York. 'I've been getting them for over 10 years since I started with the pager-style BlackBerry.'"
October 10, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Database Queries with Windows Powershell
I haven't done a serious learning project for a while so this week I decided to play around with Windows Server 2008 and PowerShell. I'll post some thoughts about Server 2008 soon (at first glance it looks terrific once you get past the fact that IIS is now a "role" instead of something you install). But I wanted to post a PowerShell example first because I wanted to do something with it that I couldn't find information about anywhere -- specifically, perform a database query and dump the contents to the console. (Later we'll get fancy and dump it to HTML or send it somewhere via email, etc.)
PowerShell can invoke any .NET object, so I knew it was possible to do database stuff with a PowerShell script, but I couldn't find any examples anywhere, so here's what I cooked up via trial and error.
The first step is to create a database connection:
[system.reflection.assembly]::LoadWithPartialName("MySql.Data")
$cn = New-Object -TypeName MySql.Data.MySqlClient.MySqlConnection
The syntax to load a .NET assembly in PowerShell is pretty awkward; couldn't they have provided a Get-Assembly cmdlet? (I suspect that thousands of PowerShell users have already written that one already.) Also, you have to know the assembly name of your ADO.NET provider (which, for MySql, is "MySql.Data," not "MySql.Data.MySqlClient," which was my first guess). The thing to remember is that loading an assembly is syntactically different than including a namespace even though the objective is sort of the same.
Fortunately this is the only part of the process that I didn't get right the first time, and I had it resolved after a few minutes of experimentation.
I should mention that I'm using the MySql data provider because we use MySql on Approver.com, but you can obviously use any ADO.NET provider you want here. This assumes that your ADO.NET provider is installed in the GAC; if you need to make an explicit reference to an assembly in the file system the syntax is different.
Next, open the database connection:
$cn.ConnectionString = "SERVER=localhost;DATABASE=mydb;UID=xxx;PWD=yyy"
$cn.Open()
If you want, you can check the value of $cn.State here to make sure it worked. Then execute the query:
$cm = New-Object -TypeName MySql.Data.MySqlClient.MySqlCommand
$sql = "SELECT ID, FirstName, LastName FROM Person LIMIT 50"
$cm.Connection = $cn
$cm.CommandText = $sql
$dr = $cm.ExecuteReader()
ADO.NET programmers know that there are lots of ways to do this that require fewer lines of code, but I like to assign everything out explicitly using properties of the ADO.NET Connection and Command objects.
Finally we iterate over the results and close the connection:
while ($dr.Read())
{
write-host $dr.GetInt32(0) " " $dr.GetString(1) " " $dr.GetString(2)
}
$cn.Close()
This is not too different than what a C# developer is accustomed to, particularly reading out the data. I like that you can just pass a big list of values to write-host without having to explicitly concatenate or convert to strings here. PowerShell figures out what you want to do and does the right thing.
On Approver.com we have a bunch of utilities that we use to monitor system health and site activity (like how many people registered that day, whether people are discovering and using certain features of the site, etc.). Every web site should crunch these numbers frequently (otherwise you have no idea whether the work you're doing matters to your users).
I think I'm going to eventually migrate our various statistical and maintenance utilities to Powershell. The power of the .NET framework combined with the convenience of script is going to come in handy for a lot of stuff.
October 10, 2007 in .NET, Microsoft, MySQL, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (2)
About eBay Neighborhoods
Link: About eBay Neighborhoods.
"eBay Neighborhoods is a place for eBay members to share information about the things they love and interact with other people who share their interests."
The English major in me would have a serious problem joining a social network that does not have a basic understanding of subject-verb agreement and the run-on sentence.
October 9, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Anil Dash: Blackbird, Rainman, Facebook and the Watery Web
Link: Anil Dash: Blackbird, Rainman, Facebook and the Watery Web.
"But Facebook is part of the web. Think of the web, of the Internet itself, as water. Proprietary platforms based on the web are ice cubes. They can, for a time, suspend themselves above the web at large. But over time, they only ever melt into the water. And maybe they make it better when they do."
October 9, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Dear AOL Developer Network,
It is an amateur move to provide an email alias to contact you regarding the terms of use for your API and then not respond to inquiries on that email alias. Also, ignoring a request is not the same as "no". It is the equivalent of saying "go screw yourself".
It's also a little jarring to have an API called "Open" that people have to ask permission to use, but I'll forgive you for that if you just get back to the email I sent you more than a week ago.
This goes for every other developer program in the universe as well. I've led several teams that were responsible for fielding these kinds of requests, so I know what I'm talking about here. There is just no way you can be so busy that you don't have time to send back at least a boilerplate response, and if you are, then it's time to either hire some people, make your signup process self-service, publish your commercial terms and conditions where anyone can review them without wasting a lot of time, or just get rid of the ask-permission step altogether.
Love,
Jeffrey
October 4, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (6)
Microsoft finally unveils its answer to Google Docs
Link: Microsoft finally unveils its answer to Google Docs
Microsoft finally unveils its answer to Google Docs and it is...frickin' embarassing.
- Doesn't work with the Mac or Linux
- Only 250MB of storage
- Limit of 1,000 documents
- No in-browser editing...at all
- Only works with Word, Excel, Powerpoint and Outlook files
It's probably too soon to slag this since it hasn't gone live yet, and obviously I have a dog in this hunt, but jeez. Unless there's something here we're missing Microsoft's entry into the online document sharing services segment appears to be the least capable and most limited service out there.
October 1, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
"This Application Does Not Support the Printing of Banknote Images"
A CNET reviewer got an interesting surprise when attempting to print a scanned image of one of the newly-redesigned U.S. $5 bills: Photoshop somehow recognizes that the image looks like a banknote and refuses to print it.
September 25, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (2)
Data-Driven ASP.NET Ajax
This week I presented two talks at VSLive in New York. I love speaking at this conference because of its technical focus and because I've done it so long -- eleven years -- there are always a bunch of people I run into at this conference that I only see when I'm there.
I've posted here several times about how I'd been trying to get the conference to let me talk about interesting yet sorta-non-mainstream topics such as unit testing (which I pitched to them unsuccessfully back in 2000) and open source (which I succeeded in doing in 2006 with the first talk on MySQL for .NET developers). In the past few years the conference has been much more open to talks on the kind of tools and technologies that are important to me (as well as many other developers for whom Microsoft's out-of-the-box offerings are not always sufficient).
So my "Data-Driven ASP.NET Ajax" talk is an attempt to take the ASP.NET demonstrations and tutorials that Microsoft provides and tailor them to more real-world scenarios. Here I'm trying to show how a dynamic web application can display data from a database, but also how you can use ASP.NET Ajax to efficiently display large (million-row-plus) data sets, do database transactions, perform server-side data validation without a full page refresh, and so forth. This is a new talk, and I really worked hard on it. I gave it for the first time on Monday afternoon and there were about 120 people in the audience, which was gratifying.
Because I like promoting alternatives to the Microsoft defaults, and because I wanted to be able to give away the source code for my demos and the data without forcing people to go through a big configuration step to get it running on SQL Server, I used System.Data.SQLite as my database. System.Data.SQLite is the .NET implementation of the terrific free embedded database SQLite. Because it's free (as in public domain) and small, I can distribute the database engine itself along with my demos, which means you don't have to download or configure a thing to run the demo web site. Just open the project in Visual Studio or drop it into an IIS virtual directory and open index.aspx in your browser.
Here's the download. It's about 9 MB because I included the million-row SQLite database I included in my demo, and it also includes the System.Data.SQLite dependency. This version of the site also fixes a problem that I encountered while doing one of the demos (I changed a reference to the master page right before I gave the talk which caused one of the demo pages to barf).
September 20, 2007 in .NET, Microsoft, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
About Platforms and Partners
One of the reasons why you have a platform is to attract partners to your business. A "partner" is typically described as a business that does some sort of special deal with the platform provider. Partners typically get some special consideration in exchange for access to your platform (but remember: a platform that isn't open isn't really a platform -- it's a walled garden).
You would expect that a partner would be more productive than a non-partner. This is sometimes the case, but there's no guarantee -- in fact, I've seen cases where a partnership is done and the partner completely craters for one reason or another. The lesson here is that just because somebody is capable of writing you a fat check doesn't mean they're going to be able to help you move your business forward. And that's the measure of a business partnership when all is said and done.
It seems intuitive that you'd want to take specific actions to attract and retain partners. One of the things that comes up quite frequently is the notion of creating partner-specific documentation and a partner-specific web sites for partners that need to do technical integration with your platform. I nearly always advise my clients to avoid doing this unless they have a huge surplus of web development and technical content resources on hand (which is never the case). Your partner site should be your public developer site.
The only time you should do partner-specific content is if you're giving your partner access to some sort of secret/private functionality. In this case, the secret/private functionality is what the partner is paying for, not access to a dazzling extranet site with their logo on it that gets less traffic than the public site and, as a result, has far less utility for them. Do a good job documenting your secret/private functionality, save it to a PDF, and send it to the partner. No need for a big production here.
"But what if the partner needs to discuss something confidentially?" you may say. "They won't use our message boards for that!" Actually, they will, if posting a question on your public message boards is the fastest way to get a resolution to their question or problem. It shouldn't take a genius to separate the confidential part of their question ("Sony is partnering with us to make bagel toasters that play MP3s") from the specific technical or business question they may have ("I need to know if your digital signal processor has problems when it's exposed to heat and crumbs"). If something is really confidential, a partner should be able to pick up the phone and talk to someone on your team. (At the same time, if they need to pick up the phone and talk to you, you should consider improving your self-service documentation so that nobody ever has to pick up the phone and ask you that question again.)
September 13, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Stop Social Networking Spam
In the last week, I've dealt the social-networking death penalty to two or three people in my LinkedIn contacts who I haven't spoken with personally in years but who have seen fit to spam me with commercial or work-related messages. I'm not sure if LinkedIn just makes it easier for people to do this or if people think it's OK to spam me because of LinkedIn's more professional focus? One way or another, cut it out.
September 12, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Biz Stone on the Twitter API
Link: Biz Stone - Co-Founder Twitter.
"The API has been arguably the most important, or maybe even inarguably, the most important thing we've done with Twitter. It has allowed us, first of all, to keep the service very simple and create a simple API so that developers can build on top of our infrastructure and come up with ideas that are way better than our ideas."
September 8, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Detemining the Dimensions of a Video Programmatically
I know a guy who runs a web site that wants to enable users to upload video files of arbitrary sizes. We won't be converting video, at least not at first, just letting people upload files they've created. The trick is, we want to let users preview the video in the browser, which means we'll need to create an EMBED tag programmatically based on the true height and width of the video.
This problem must have come up before, but I can't find a solution for Flash Video (.FLV). How can you determine the dimensions of a Flash Video file programmatically?
Apple provides a COM interface to QuickTime that let you do this, although it's clunky (the interface was only intended to support the use case of creating custom clients that play QuickTime video -- doing something to a video file without playing it requires some contortions). Fortunately you can run Windows Forms on the server side so it's not impossible to get around this. But I can't even figure out where to start with Flash Video.
September 7, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
iPod Touch: Development Environment for the iPhone
When the iPhone was first announced, Apple was silent on the question of how developers would be able to develop applications for it. As the iPhone shipped, the developer story became slightly clearer: the iPhone has a Webkit browser, so you can write to that and everything should be OK.
Except when it's not, like when the user flips the iPhone sideways (changing the screen resolution), or zooms in on the page. There's no easy and accurate way to simulate this stuff on a PC -- Safari can't do the iPhone's tricks, and iPhoney doesn't act exactly like the real thing yet. And unlike most mobile devices, there's no emulator for the iPhone, so until today, if you wanted to develop an iPhone application, developers had no development environment -- you had to use an actual iPhone to develop your application.
With today's announcement of the iPod Touch, the iPhone finally has an economical development environment. This is going to catalyze development of mobile applications that target the iPhone significantly now that the barrier to entry is $299 (versus thousands of dollars for a full-blown iPhone, when you factor in the pretty-much-mandatory two-year AT&T contract). This is the thing that is going to enable college kids (and small business owners like me) to develop mobile Webkit applications.
I spent some time last month helping Etelos to build an iPhone-capable application for attendees of this week's Office 2.0 conference. Etelos' platform for building applications like this is really terrific, but not having an iPhone to test it on drove me crazy. (Fortunately all their engineers have iPhones and they were able to take the application across the finish line.)
Because it has wifi and Webkit, the iPod Touch solves my problem 110%. I cannot wait to get my mitts on one. (It's also going to be nice to use it to watch movies on airplanes, but I'm really looking at this as a business investment, really I am.)
September 5, 2007 in Apple, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Paul Graham: How Not to Die
Link: How Not to Die.
"As long as you've made something that a few users are ecstatic about, you're on the right track. It will be good for your morale to have even a handful of users who really love you, and startups run on morale. But also it will tell you what to focus on. What is it about you that they love? Can you do more of that? Where can you find more people who love that sort of thing? As long as you have some core of users who love you, all you have to do is expand it. It may take a while, but as long as you keep plugging away, you'll win in the end."
August 31, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
ALZIP is Good Zipping
Ever since WinZip began charging for upgrades that don't add much value to the product, I've been looking for an alternative. The good folks at Lifehacker recommended ALZip, which is basically a WinZip clone. I installed it on one of my machines and have been using it for a few weeks; it's good software. And it's free (supported by advertising, I guess, which I think you can shut off by upgrading to the $20 paid version).
The only that bothered me about ALZip is what the program does to file icons. The program associates itself with every compressed file format you have (including ZIP, RAR, etc.), which is fine. But the icons themselves are completely over the top -- electric blue in color with a giant useless text block indicating the file's format. I don't need this -- I put important files on my desktop so I can keep track of them while I work, and ZIP files are almost by definition not important enough to be screaming out for my visual attention in this way.
Fortunately, the developer of ALZip wisely lets you set your own preference for file icons. To change this, select the Tools, Preferences menu, select the file type you want to change the icon for, then click on the Change Icons button.
In the box, select %SystemRoot%\system32\zipfldr.dll, which is the DLL used for Windows' own anemic ZIP functionality. Embedded in that DLL are several icons, including the standard nondescript golden-folder-with-zipper that Windows users are accustomed to.
(That reminds me: "Golden Folder with Zipper" was my nickname in college.)
August 20, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
EBays Swarm Strategy to Take On Craigslist
Link: EBays Swarm Strategy to Take On Craigslist
"Tomorrow eBay will bring another of its classified advertising sites, Gumtree.com, into Boston, New York and Chicago. Gumtree is the online classified ad leader in England and also has a strong presence in Poland and Australia. EBay says links on the site for the three American cities will be marketed to British expatriates in New York, British and Australian expats in Boston and Polish expats in Chicago. 'The strategy is based on the fact that this is a very diverse market that clearly wants more choice,' said an eBay spokesman, Jose Mallabo."
Well, there's eBay's actual strategy, and then there's eBay's strategy as you describe it to the New York Times.
I have a hard time understanding why immigrants from the UK living in the U.S. would need their own classified site. Are the large number of listings on Craigslist confusing and intimidating to users here? Does eBay intend to localize its U.S. classifieds site into cockney?
August 14, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Ribbit Decloaks
Link: Ribbit the Revolution
"The Ribbit Phone Component: You can now make calls and check voice mail from your Flex Application."
I'm pals with a few guys on this team, and what they've been dropping hints about to date sounds very compelling.
August 13, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Airborne Linux Hackers Unite!
Link: Airborne Linux Hackers Unite!
"Each of [Virgin America's] 149 seats will come with a 9-inch touch-sensitive display, a keyboard that can be removed from the armrest, a 110-volt outlet, an Ethernet jack, and a U.S.B. port. Fliers can use the system to watch free satellite television channels, pay to watch movies, listen to thousands of MP3 music files, and even order food."
Sign me up now. Just having a 110-volt outlet in my seat is going to make a cross-country trip sooooo much easier to deal with.
August 7, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Dear Last.fm,
This error message is not going to cut it.
Your pal,
Jeffrey
August 1, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Dear Stubhub,
Love,
Jeffrey
P.S. When your site is unusably slow at 10 a.m. on a Monday morning and your solution is to redirect people to a page that says the site is down for "routine maintenance," only very dumb people will believe you. This makes everyone else think you're treating them like they're dumb.
Just trying to help!
July 30, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (2)
Unintended Consequences of Software Upgrades
One of the first things I did after installing the new version of Parallels (3.0) on my Macintosh this week was to uninstall OpenOffice. I'd been running Office for Macintosh in the host operating system and OpenOffice (the Windows version) in the virtual machine so I can get to my documents no matter which OS they happen to live in.
There are two new features of Parallels that free you from having to have two versions of the same application: 1) you can drag/drop files to and from the host OS to the virtual machine now, and 2) you can associate a file type in the virtual machine OS with an application that lives in the host OS. That means you can double-click on a .xls file in the VM and it will launch in Excel for Mac if you want.
Uninstalling OpenOffice was a no-brainer once I made sure that this all worked for me. And it does work splendidly. Double-clicking on a file associated with the host OS causes Parallels to create a little turd in the file system (which I assume is its own kind of file lock? Not sure) but that's a minor nit.
Even though I have several unused copies of Office 2003 for Windows lying around the office and I could have installed Office in my VM, I wanted to kick the tires on OpenOffice again. I also assumed that Office 2003 would require more disk space than OpenOffice, which may or may not be true, but disk space is at such a premium on a virtual machine that I didn't want to mess around with it.
One way or another my VM is now happy with a half-gig of virtual disk space free, and I get to use one set of polished applications to do my work, which is nice.
June 12, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
AIR Supply
Am I just lame or is it not possible to build the "Hello World" example application for the Adobe AIR beta (formerly "Apollo") on the Macintosh? I followed the walkthrough pretty closely and got stuck on the part where you test the application from the command line (the AIR debug launcher wouldn't launch).
This technology is so interesting and promising, but it sure doesn't look like Adobe has a developer-ease-of-use czar on its team. And putting the AIR tools under the rubric of "Adobe Labs" makes me nervous -- it makes the whole initiative appear really provisional. Real laboratories do all kinds of experiments on unwitting test subjects and those experiments often fail -- so "labs" is not a terrific way to brand a bet-the-company initiative like AIR.
I realize that this is an early beta, but the lack of polish is such a time-waster, and I'm a pretty busy guy -- it makes me want to set all this aside for a year or whenever things are working a little better.
June 11, 2007 in Adobe, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (6)
IM IN UR COMPILER
Apparently a large number of software developers have gone insane and are creating a programming language based on lolcats.
June 8, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Dear Copyright Infinging Neighbors
When we moved into our house a year and a half ago, I bought a bunch of wireless network extenders and whatnot to accommodate our house's weird floor plan. Plugging in wireless extenders on every level of our house lit up our entire neighborhood with our network's mighty wireless signal. And when I set that stuff up, I intentionally left the wireless network open. My reasoning at the time was that we were paying for a fat enough pipe so we probably wouldn't notice if some of you occasionally used the network to check your mail. And besides, wireless security schemes like WEP just make the network more of a pain to set up (and they aren't really secure anyway).
This all worked well until today, when I got a DMCA takedown notice forwarded from our ISP. The infringement wasn't anything that we did, it was for a feature film that one of you had downloaded using Bittorrent on our wireless network.
Using a borrowed wireless network to do stuff that could get us sued makes you a complete ninnyhammer, and it makes me feel like a clod for being so generous.
So, enjoy paying for your internet access henceforth, my neighbors. I can't leave our wireless network open for you anymore because it's attracting mindless Hollywood lawyers. I'll be installing a new router with MAC address filtering in the next few days.
Smooches,
Jeffrey
June 1, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (3)
SQLite: The Secret Sauce in Offline Apps
A few weeks ago I noticed that the new version of Yahoo! Widgets/Konfabulator now supports an embedded client database, SQLite. This got the gears in my brain whirring -- what could you do with a desktop widget that sports a embedded database engine? Converting the Approver.com desktop widget into something more functional (maybe with the ability to replicate files from client to server) comes to mind, but there are tons of other things you could do.
The interesting new Google Gears product also rocks SQLite (as a way to facilitate the creation of offline web applications). Not to be outdone, Mike Chambers of Adobe blogged last night that the Apollo beta will also sport SQLite.
There's definitely something here worth looking into more deeply. SQLite is a mature technology that's been around for a while, but it seems like it has really reached a tipping point in the last month or so with these high profile adoptions. (To complete the cycle, Microsoft must now announce that they are going to release their own, incompatible embedded database product to be released in 18 months with performance and ease-of-programming characteristics that are both slightly worse than that of SQLite and a cost of $129 per desktop.)
I'm kidding, of course -- .NET developers actually have a very interesting option for using SQLite -- a free library called System.Data.SQLite. Built on top of the SQLite engine, it combines the SQLite engine and an ADO.NET 2.0 provider for SQLite into a single .NET component. This is a very slick idea -- at the end of the summer I need to do a VSLive session on building data-driven web site and I may just use SQLite as my database engine. That way I'll be able to distribute my demo code for people to run themselves with zero configuration.
Update: The next version of Firefox will support SQLite for offline applications bookmark storage.
May 31, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (2)
Jeff Jordan to Head OpenTable
Jeff Jordan formerly ran eBay's North America business and ran PayPal before leaving the company last summer. Reuters is reporting that next week he'll join OpenTable as their CEO.
I was a big Jordan fan during the time I was at eBay and my wife and I use OpenTable several times a month, so it'll be interesting to see what comes of this.
May 29, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Product Managers? We don't need no stinkin' product managers!
Link: Product Managers? We don't need no stinkin' product managers!.
"The interesting question is trying to figure out what, if any, kind of PM your company needs and at what stage. Some would argue that you need a distinct Product function as soon as you start building, not only to be the eyes and ears of the Engineering side. Sometimes, swimming in the open water of deep code, the tech team might not poke their heads up often enough to make sure they're not swimming to Jersey."
Charlie O'Donnell has a thoughtful post this morning on the role of product managers in startups. He identifies two of the three roles of a product manager (product vision and getting stuff out the door) but leaves out the third (working with customers to make sure they're getting the right functionality at the right time).
May 17, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
A Better VBA Than VBA
I am a self-taught programmer; I got my start in college creating an Excel-based system for balancing the books of an administrative office at UCSB, where I was an undergrad at the time. It was very unusual for undergrads to work in administrative jobs on campus, but having major spreadsheet mojo at a time when spreadsheets were becoming the greatest thing since sliced bread is what opened the door for me.
The programming language that made all this possible came to be known as Visual Basic for Applications, an embedded version of VB that lived in most Office apps (as well as some third-party apps).
A few years back Microsoft began nudging developers to use .NET for Microsoft Office programmability. When I was at eBay, my team participated in the launch of Office 2003 and Visual Studio Tools for Office, which was basically a big interoperability library to let you program Office from .NET. At the launch event, Bill Gates demonstrated an Office app that used our API, which was impressive and exciting even if nobody would use Word and Excel to list stuff for sale on eBay in real life.
I'm a .NET fan, but I have to say that it doesn't seem to be such a terrific fit with Office -- it added quite a bit of complexity and in many ways reduced, rather than enhanced, the things you can do with Office application programming. I'm not even sure where the whole Office/.NET programability initiative has gone today. I wonder if Microsoft should revisit it, to start from scratch. I definitely find myself missing writing nice little VBA macros to automate my work in Excel and Word. (My last big VBA project was the Excel/Yahoo Maps integration I did back in 2005 and which people still occasionally email me about.)
I also wonder whether the very interesting work that's being done on the dynamic language runtime might have something to offer here.
I could envision how IronPython (or even C# utilizing the dynamic runtime) could become a better VBA than VBA. One of the big historical criticisms of Office/VBA applications is that they're brittle -- difficult to maintain and upgrade and prone to breaking if the user doesn't have a configuration that is just right. But I was never clear on how .NET solved those problems. Maybe some dynamic language extensions that are specific to the mission of automating applications like Word or Excel would add some value here?
I'd love to build an integration between Microsoft Office and Approver.com, but frankly at this point I have no idea where to get started. Do I need to pay Microsoft for a copy of Visual Studio Tools for Office? Will Office 2010 break my application somehow? What happens if I need a solution that will work on the Mac?
May 17, 2007 in Microsoft, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
Dear All Government Functionaries Who Create Forms:
Kudos for publishing your forms online. However: Please stop creating PDF forms that lack actual form fields.
Also, please do not save your PDFs in "protected" mode. It makes it impossible to fill out your form.
Kisses,
Jeffrey
May 15, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Death To Outdated Developer Content
In a world in which many developers (myself included) use web search as their first avenue of inquiry when they run into a technical problem, it's important for platform providers to have technical content that is thorough, well-organized, and discoverable from web search engines. (This means that you should apply the principles of search engine optimization to your entire site, not just the marketing bits.)
Way too many technology products expect third party developers to flock to their platforms on the strength of the product alone, without providing any documentation to help them get started. Documentation isn't an amenity, it's a requirement.
If your documentation isn't easily searchable, then 10-70% of current and prospective developers aren't going to be able to find your documentation when they need it.
Keeping your developer content up to date as your platform evolves is another big challenge. Microsoft does a terrific job of keeping its voluminous body of developer content current while deprecating and removing old content. Not so, unfortunately, with the large number of third party community sites that cover Microsoft technology. In this situation, the third parties' objectives aren't in alignment with their users, since (presumably) taking down outdated content decreases the third party sites' pageviews and clickthroughs.
This came up today because I'm investigating how ASP.NET developers can localize their sites into different international languages. As it happens, the rules pertaining to localization totally changed from ASP.NET 1.1 to ASP.NET 2.0. (Things got much easier in 2.0.) Since I didn't know much about localization in the 1.x era (Chris Kinsman and I didn't cover it in our ASP.NET 1.0 book), I started with a web search and immediately ran into a ton of outdated content on .NET localization which wasted several hours and made me semi-cranky.
After many wrong turns, I wound up at the place where most .NET developers begin: the QuickStart Tutorials. The tutorial for localization in ASP.NET 2.0 is terrific and it got me what I needed in a hurry. (All of Microsoft's .NET QuickStart tutorials are terrific, really -- if I had to point out a single thing that helped .NET get adoption since it was introduced in 1999, the QuickStart Tutorials are probably it.)
The point is that even the biggest-brained developers can benefit from simple tutorials to get started on your stuff. I wish Mono had tutorials (covering configuration, etc.) that were as good as Microsoft's. I wish PHP did, too. Also Flex. I didn't need a quickstart tutorial to figure out MySQL but I suspect there are a lot of developers out there who could benefit from one.
Actually, these platforms may very well have great tutorials, but I never run across them, which suggests to me that they're missing something in the search engine optimization department.
I was talking with a prospective consulting client last week and we were trying to figure out where my services could fit in. I told them that while most of the consulting I do today pertains to product strategy, I'm not above doing super tactical stuff like technical documentation for them (as long as they realize that, as technical writers go, I'm on the pricey side). I offered to do this because good tech docs people are really hard to find and they tend to be unappreciated. I'm actually surprised that there aren't consultancies specifically dedicated to doing technical documentation -- maybe that's because companies aren't willing to pay for documentation the way they pay for software engineers.
May 15, 2007 in Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (4)
Pre-Announcing Product Launches Shows Contempt for Users
Let's say you have a product or technology feature and it's going to launch in, say, a month.
When is the best time to start talking to reviewers and bloggers about it? That's right, in a month, not today.
Why? Because reporters and bloggers are going to write stories about your new product or feature as soon as they hear about it.
Pre-announcing products is bad for your business because it dilutes your launch momentum, but more importantly, it demonstrates utter contempt for users, who have to scour your site twice (once before the launch and again after the launch) to access the new functionality. (Assuming that users remember to go back to your site to check out the new functionality a month after your pre-announcement.)
There's also the chance that if you pre-announce too soon, the product or feature will never actually see the light of day for one reason or another, which makes you look like an untrustworthy/incompetent tool. I've fallen into that trap in the past -- never again.
This has annoyed me (and wasted my time) twice in the last two days now -- yesterday with the pre-announcement of a new version of Google Analytics and today with the pre-announcement of the addition of music videos to Last.fm.
Neither of these features are generally available yet, but in their mindless quest for scoops, several pro tech bloggers described the new functionality as having been launched. Cut it out, guys.
May 9, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Telco Astroturfers Trolling Pro-Net Neutrality Blogs
It looks like astroturfers from a Virginia-based lobbying/PR outfit that calls itself "Hands Off the Internet" have been busy this week, posting the telco/cable company party line on various bloggers' comments, including mine.
It surprised me that these people found my blog -- I'm in favor of net neutrality, but I don't blog about it much here, mainly because others do it much better than I could. I just happened to mention net neutrality in a quote from an unrelated NY Times article I quoted earlier in the week. They must have Technorati alerts set up for phrases like "net neutrality," and when they see someone post something with that phrase in it, they dump a bunch of nonsense in their comments.
You can see he (or they) are doing this on other peoples' blogs by doing a web search for "HandsOffPlease".
The fact that the astroturfers are comment-bombing blogs is interesting not because of their dazzling rhetoric -- they're falsely trying to position anti-net-neutrality as a way to foster more internet innovation by removing the evil spectre of government regulation. The fact is that the industry is more interested in forcing government to step aside so telcos and cable companies can screw over consumers any way they want. If you want to start putting a quarter in a meter every time you download a video, I suppose that kind of "deregulation" is what you want. But if you want to keep paying for access to the net the way you do today, with a flat rate for a specified amount of bandwidth, then you're pro-net neutrality, it's as simple as that.
Even more interesting to me than the sloppy, intellectually dishonest rhetoric is the fact that the telcos are now paying somebody to troll the net and tell lies in bloggers' comments. The telcos must believe that the blogosphere is a front in the net neutrality fight.
May 8, 2007 in Collaboration, Content, Community, Politics, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (2)
Fred Wilson: The Mid Life Entrepreneur Crisis
Link: The Mid Life Entrepreneur Crisis.
"Nine of our eleven entrepreneurs are in their 30s. One is in his 20s, and one is in his 50s.
That says to me that prime time entrepreneurship is 30s. And its possibly getting younger as web technology meets youth culture."
Interesting post by Fred; I'm looking forward to hearing more.
When I started my first business (when I was 24) I couldn't believe the way that the old guys seemed to gang up against me, or so it seemed at the time. With the benefit of hindsight (and elderliness) I realize that a lot of that had to do with my lack of business socialization skills that I didn't really acquire until I was in my mid-30s.
I'm turning 40 in six weeks, I hope this doesn't mean I've hit my expiration date. Now that I'm ancient, I am noticing that I can get certain things done much more quickly than I could have when I was in my 20s. But for certain tasks that I can't accomplish in a timely, economical way, I can delegate and outsource. It all works out.
I did code until midnight last night, so hopefully that counts for something.
May 2, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Cgen: Simplest .NET/MySQL Relational Wrapper That Could Possibly Work
Last week I attended and spoke at the MySQL conference. Some of the talks, particularly the ones that targeted system administrators rather than developers were over my head, but that's useful information in itself -- it serves as a reminder that sometime soon I'll need to either learn the finer points of big-time MySQL system administrator or hire somebody who does.
It was particularly fun giving a talk on .NET to MySQL guys just two weeks after I finished giving a talk on MySQL to a room full of .NET guys. It was also fun seeing my client Alfresco and hanging out with them in their booth, where they were doing demos and fielding lots of inquiries.
I'm just now getting around to firing up the blog-o-matic in earnest after four weeks of more or less non-stop conference-going, but I wanted to mention that I've released the tool that we use to create the data access layer. It's called Cgen, and it lives here.
The idea behind Cgen is that you create an XML document that represents your database schema, and Cgen (which is packaged as a command-line tool written in C#) spits out a bunch of classes that make it easy to do the basic create, read, update, and delete operations that represent 80% of all database-driven applications. (For the remaining 20% of the data access code you'd need to write, the tool generates subclasses that you can add your own code to.) You can then compile these classes as a .DLL or, if you're making an ASP.NET 2.0 web application you can just dump the classes into the application's App_Code folder and .NET will figure out how to compile the classes.
We use code generated by Cgen as our data access layer for Approver.com. It has worked splendidly and saves us a bunch of time. At the same time, Cgen doesn't have a ton of bells and whistles. I realize that this is probably the one millionth object/relational code generator in the history of software development. I took a look at other object/relational mappers like SubSonic, and I used NHibernate on an intranet project I did at Yahoo in 2005. But for Approver I wanted a tool so simple that you didn't spend more time learning the tool than you would have spent writing the code yourself. I also needed something with good support for .NET 2.0 and MySql (which was difficult to find in March 2006 when I started using MySQL).
May 1, 2007 in .NET, MySQL, Open Source, Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
At MySQL Conference This Week
I am spending today preparing for my session at the MySQL conference on Thursday. I'll be speaking on "MySQL and .NET in the Real World" which will cover my experience creating Approver.com and will also include a run-through of the Visual Studio integration with MySQL.
Last year I created a little command-line tool that generates MySQL data access classes for .NET 2.0. It's the tool that generates the data access layer for Approver.com. I am going to open-source this tool this week, most likely before my talk on Thursday, and I will do a demo of the tool as part of my talk at the conference. This tool is very simple -- it doesn't do as much as, say, SubSonic or NHibernate. But it does automatically generate about 80-90% of the data access code used in Approver.com, and it has a few ease-of-use characteristics that I wanted -- mainly a low learning curve, explicit support for MySQL and .NET 2.0 and no dependencies on external libraries other than what you find in the framework.
I need to do an intro/documentation page that describes the tool. I'll get to that in the next day or two, then I'll post here when it's available.
April 23, 2007 in McManus World Tour, MySQL, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
The Two-Founder Rule
Over the past year I've been doing an enormous amount of reading and thinking about startups and investing. I've always been interested in this (I've read the business section of the paper daily since I was 11 or 12 years old), but now I have a dog in this hunt, so to speak.
Approver.com and Platform Associates aren't the first companies I've started (before my time at eBay and Yahoo! I started a consulting firm in 1999 and ran it for two years; we had a payroll of 20 people at one point). But Approver is the first business I've run that's purely based on a product rather than a service. Consequently, I get into conversations with prospective investors about it. Most common question: Are you actively looking for investor money? (Answer: Not actively, but I'm open to having investor-related conversations and I've had quite a few of them to date -- my strategy today is to build out the feature set over time while bootstrapping the business with a modest chunk of our savings, which will be sufficient to keep things going for at least several years even if it generates very little revenue.)
The second question is: who else are you working on with this? The answer there is more complicated -- Approver.com isn't just me, but I don't have any co-founders or employees yet. I am lucky enough to have a crack ninja team of advisors and helpers located around the globe, and their advice and encouragement has been invaluable.
There is a lot more information out there on how to interact with prospective investors today than during my first go-round in the '90s, which is terrific. A lot of this information takes the form of lists of commandments or guidelines, some of which, I've noticed, contradict each other.
One of the guidelines I've seen repeated again and again is that a startup has to have more than one founder. I obsess over this point because, while I've been lucky enough to have a terrific band of helpful volunteers to pitch in with Approver.com, there's only one founder -- me. Does this mean that Approver.com could never attract investor dough? Dunno, but it would be interesting to delve into the rationale for the two-founder rule to get it figured out.
I have never heard a VC explain in a believable way why the two-founder rule exists. So I'm going to try to pick it apart with a thought experiment:
Let's say you're an investor and you're looking to drop anywhere from $100,000 to a million bucks on some untested idea. Why might you insist on a minimum of two founders?
1) In case one of the founders gets hit by a bus, the other could (hypothetically) carry on? This seems straightforward.
2) The notion that different people need different kinds of skills to run a company. One person needs to be in charge of the business, maybe, while the other needs to be in charge of the engineering. This may hold water, but I'm not sure it applies to me personally (since I've held jobs on both the technical, business, product management and marketing organizations of big and small companies). But more importantly, look at two of the four horsemen of the internet: Google and Yahoo!. Two founders each. Both geeks. So much for that rationale.
3) Not being able to attract another founder means that your idea isn't any good. This premise irks me, a lot. It assumes that your co-founder is clairvoyant (more so than the investor, at the very least). But it further assumes (I guess) a bunch of other stuff about your ability (or inability) to motivate people and lead a team of people who will quit their jobs to come work for you for free. This seems like hooey to me; I suspect it really only reflects your ability to hang out with people who don't have jobs that they like.
4) A prospective acquirer won't be buying the business, they'd be buying the team, and if you're only one person, there isn't as much to buy (particularly if you use the valuation of $X per engineer for a startup that hasn't yet achieved profitability or even revenue). This makes sense in some cases, I guess. But I started my business with the idea that it would solve a real problem, attract lots of users and generate revenue. I didn't start it to see how many people we could hire or how much money we could spend.
There's something else I find fishy with the multi-founder rule: I've seen other investor commandments that state that the biggest impediment to success isn't having a good idea or being able to wrangle the technology, but your ability to form and manage a team. (This rule is often stated conversely: "the biggest threat to an early-stage start up is when the founders have interpersonal conflicts".) This commandment seems, to me, to be in conflict with the multi-founder rule. I happen to get along great with myself, and I know I will never screw myself out of stock options or get on my own nerves while working to get a feature out the door on deadline.
Bottom line is that investors who require multiple founders are putting entrepreneurs into a chicken/egg scenario -- you can't attract funding without multiple founders, but you can't hire a second or third founder without attracting funding. At least it seems this way to me -- am I missing something here?
This morning while I was searching for something else I ran across an old Dave Winer blog post that stated that Evan Williams was the sole founder of Pyra and he flipped Blogger to Google for $50M. It would be handy to identify other examples of single-founder companies reaching exits like this, I think.
Update: Doug mentions in comments that Dave Winer's post isn't entirely accurate; Evan wasn't the sole founder of Pyra but he was the only founder on board when they were acquired. Mark Fletcher (ONElist, Bloglines, Startupping) also chimed in to say that he was the sole founder at his three startups, which are even better examples.
April 19, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (12)
Say Good Night, Bandwidth Hog
Link: Say Good Night, Bandwidth Hog
"An article in PC Magazine last week revealed that customers across the country have received letters from Comcast warning them to limit their bandwidth consumption or face a one-year termination of service. The company, though, 'is refusing to reveal how much bandwidth use is allowed, making it impossible for customers to know if they are in danger of violating Comcast's limit,' according to the article's writer, Chloe Albanesius."
April 14, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
How to run a technology community
This has come up with several of the companies I've been advising over the past few months, so I thought I'd lay out a few of my rules and tips for how to manage a public technical support forum and build a technical community. My thoughts in this area come from twenty years of managing online communities from kitchen table hobby BBSes to tiny startups, to eBay and Yahoo! technical developer communities, to the half-dozen consulting customers I am working with today.
To my mind, the most important rule is that there should be one person in your organization who is responsible for the health of your community. We call this role the "community manager". It doesn't have to be a full-time job, particularly if you're a startup or an open-source project, but once your community starts numbering in the thousands of active users, it's time to start thinking about hiring or outsourcing the management of your community.
The community manager is responsible for the health of the community. This means taking whatever steps are necessary to grow the community, making sure that the community is in alignment with the goals of the business or project, and helping to put out fires when they occur. It also entails the compilation and dissemination of metrics pertaining to the community's health. Ideally, the community manager shares these metrics with the entire company (and, in some cases, with the community itself). The old business adage "you make what you measure" is at work here -- if you are serious about building a community around your product or company and you aren't sharing your community metrics with your entire team on a regular basis, you only have yourself to blame if the community turns out to be tepid.
The community manager's report should contain metrics as well as anecdotal information about what's going on in the forums. If three people post about the same bug in the forums on the same day and nobody from your engineering organization responds, it's the community manager's job to escalate that until the problem is resolved.
These days, the community manager is the voice of the company in the community. She's typically used to convey announcements and news in a way that a spokesperson or public relations person might have done in the past. Here is where an English major with technical chops comes in handy.
Everybody on your team should participate in your community. (At the same time, it's important that you have one and only one community manager -- if everybody's in charge, then nobody's in charge.) At some companies I've worked at, people had to go through all kinds of hurdles to get permission to post to the forums. This is small-minded; it suggests that you mistrust or have not adequately trained your team. If you have an online forum, then everybody should be encouraged to post to it, particularly people who work for you.
There are a bunch of tactical things to making a community forum work. When we developed an XML-based message board product back in 1999, people thought it was this crazy exotic thing and we had to explain the benefits of XML for customization and syndication over and over again. Today RSSified message boards are de rigeur. They're the only way I can keep up with the literally hundreds of things I need to read each day. No technology community should be without it. Use the standard RSS icon, make sure your forum home page and each individual topic page has RSS autodiscovery meta tags, and make sure they work in the most popular feed readers (which at the moment happen to be Bloglines, My Yahoo!, Google Reader, NewsGator Online, and Netvibes).
Search engine optimization isn't something that should be applied only to your marketing web site, it should apply to your community too. At the very least, if the topic of a discussion doesn't appear in the page title (and preferably in the URL too), dump your community software and get something better.
If you're a commercial software vendor, make sure that no question in the forum goes unresponded to for more than a day or so. (Your community manager can help with this, although it's ideal if you have an automated way of doing this.) If paid support happens to be a part of your business model, you may not want to respond that quickly in your forums, which is fine -- instead, make it easy for people who post questions in your forums to get priority paid support as an alternative to waiting around for an answer in the community, and manage your community's expectations regarding the way you expect community-based support to work.
Give recognition to your contributors -- they're helping to build your platform, in many cases free of charge. Some companies resort to special programs (like the Microsoft MVP program) to recognize prominent community contributors, which is fine, but I much prefer engaging in conversations and building relationships with members of the community as a way to incent and recognize them (just saying "thanks for posting that" goes a long way). In many ways, creating a formal recognition program for people is actually easier than having these conversations (since you only have to do the heavy lifting once), which is, I think, why companies gravitate to it. But having conversations is the real money shot here, and if you're not making time to have these conversations you're missing out on tons of valuable information.
Your community manager can help engage with prominent contributors, but this should also be something that everybody in your organization should feel empowered to do.
April 12, 2007 in Collaboration, Content, Community, How-Tos, Platforms, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (1)
10 enterprise software companies to watch - LinuxWorld
Link: 10 enterprise software companies to watch - LinuxWorld.
"From business intelligence to CRM, from scheduling and e-procurement to database management and data governance, there is no shortage of enterprise applications available to help businesses make their processes more efficient. Choosing can be difficult, however: Do you go open source? Software-as-a-service, or in-house deployment? Every vendor has a sales pitch. Here are 10 worth watching."
April 12, 2007 in Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (0)
Dear Adobe,
Maybe I am missing some subtlety here, but it looks like your upgrade pricing for the recently-announced Creative Suite 3 is tad thick-headed. To whit, the following incomprehensible stipulation buried in your already mind-bogglingly complicated product packaging and upgrade licensing terms:
"Upgrade pricing is available only for products listed above and requires a qualifying previous product on the same platform, with serial number."
What I want to do is upgrade from Macromedia Studio (on Windows) to Adobe CS3 Web Premium (on Mac). It seems like this should cost me $499, which would make the upgrade a no-brainer. But because of your "same platform" restriction, it looks like you instead want to charge me $1,500 for a whole new license. It's the same software, I just want to run it on a different operating system.
You know I love you crazy kids, but you're basically imposing a $1,000 per user tax on each of your customers who want to switch to Mac from Windows. What business purpose could that possibly solve? (Hint: It's not "to make more money," since I'm not shelling out $1,500 for a brand new license for this software.)
Kisses,
Jeffrey
Update: James posted in comments that Adobe will do a "cross-upgrade" if you call their 800 number and place the order that way. I just completed this, and it was a colossal pain in the butt. Some of their customer service people know how to do this, others don't. One Adobe customer service guy I talked to actually tried to get me to send the box of software on my desk back to Adobe so he could send me something else that would work. When I objected, he said "I get a little tired of people saying it's my fault". Sorry, dude: if your salesperson says that the software upgrade costs $XXX and I pay for it and you ship it to me and it doesn't install, it is indeed your problem. It's certainly not my problem.
What I really needed was a non-bozonic customer service person who could just give me an upgrade serial number so the software I'd already installed on my Mac would work. I called back later in the morning and was transferred back and forth between sales and customer service and disconnected several times before I got someone who could help me -- even then, the total call time including waiting on hold was 45 minutes.
If you need to do this, be prepared to give them your Adobe customer ID number and every serial number of every Macromedia product you've ever owned so they can verify that you're not an evil software pirate. Also make sure, if you're calling on a cel phone, that your phone's battery is charged all the way, or better yet, plugged into its charger -- running out of cel phone juice is how I got disconnected on my first call. At the beginning of each call they take your phone number so they can hypothetically call you back if there's a disconnect, but after three or four disconnects I never got a call back from any of the Adobe people I talked to.
My issue is now resolved, though, and I'm busy plugging away with CS3 on my Mac now.
March 28, 2007 in Adobe, Web/Tech | Permalink | Digg This! | Post to del.icio.us! | Comments (5)
Problems with Feedburner and Bloglines
I've heard from a few users that old posts in this blog's feed are appearing as new. This only seems to be affecting RSS subsc


