This is one of the most fantastic submissions to HN I've seen in a long while. It's relevant in many different ways; it's about a startup, it's about a minimum viable product, it's about untapped market potential, it's about economic success, it's about a jaw-dropping kludgety mother-of-all-hacks, and it offers insights about what matters, both to users in large corporations, and to the author.
Everything apenwarr (Avery Pennarun) writes is worth reading, be it code or essay. He's been writing much less since he's started working at Google, but there's a lot of history for you to read.
Of his open source stuff: bup is awesome, sshuttle is awesome, and wvdial is a lifesaver for those rare times you need it. I'm quite sure do/redo is awesome, although I can't provide 1st hand testimony.
All that technical horror is precisely why it's such a needed and profitable product. That's your barrier to entry.
The only happy ending I see here is if the founders learn to delegate, or work hard on finding the right people to sell this to. Not to a hacker -- to a businessman who would be genuinely happy to run a growing business, and not horrified by the technical kludges.
I always chuckle a little to myself when I see clearly talented programmers shying away from this kind of problem in favor of allegedly more interesting problems. I used to feel the same way. But it's mostly chasing an illusion. The real work of programming is always about dealing with the messiness of the real world.
If you find a problem that doesn't have any real-world nastiness, you can be sure it's either (1) irrelevant, or (2) already solved for free by countless other smart programmers, because it's fun.
So don't get me wrong. I like Access users. Access developers, in particular, are the anti-IT department, the rebels, the people who aren't willing to wait for the sysadmins to provision them a server, and they don't have to, because they can just share an Access file on the fileserver. IT departments hate them, which is how I know they're on to something. These are the kind of people I want to help. This is the sort of thing that's the reason I do the work that I do. No kidding.
While it feels a little weird hearing that talk in relation to a Microsoft product, I agree. Building and maintaining a successful (To whatever extent you would call such a niche market a "success") product that helps people solve their own problems instead of feeding the IT priesthood would be awesome.
And then when you talk about the implementation details. My smile turns to a horrified slack jaw expression.
I'd probably feel guilty about it, and I might even try to keep it running as long as I could, but I'd eventually have as much as I could take and give up.
True, it's a bit weird to think of a Microsoft product that way - but Access is a special case. Microsoft would dearly love to kill it and get everyone to migrate to MS SQL (and boy, do they push hard in that direction) but there are just too many satisfied users to let it die. So basically there's customer satisfaction in spite of their best efforts :)
Absolutely. In fact, it was exactly this situation that got me my first break as a developer. Started working for a gas pipelining company (yes, urgh) as an 'administration assistant' and encountered a spreadsheet based tracking system that involved entering in the same data in six different places.
I threw together an Access database that everyone responded to very well- as you might imagine. The IT department ignored my repeated attempts to get them involved as it progressed from an Access DB to a .NET client front-end app with a MS SQL backend (that I managed to get from the company's external IT contractors).
Shortly before I left to get a "proper" job, they announced that the entire workflow system was moving to SAP, and that the work I'd done would be integrated into that system. That was five years ago... and apparently they're still using my system today.
I mean, we are running Access in Wine in X11 on Linux in an isolated
user account on our server slice that revision controls your Access
database in git, and we're displaying it using VNC in your web browser
in flash.
If you asked me to describe the glue-code hackery project I would want to work on least in the whole world, I would have come up with something like that. There are probably uglier projects around, but I don't have the creative masochism to think of them.
This is actually great. They had a bunch of problems to solve with limited interface options. They picked the simplest combination of options, found the solution worked and stuck with it. All too often I find myself looking at something and saying "ewww!" and writing my own code without exploring the other, less glamorous options.
This weekend I nearly slammed my head into the wall after spending half the day implementing and testing shared caching for my high volume distributed web scraper according to part 6 of the HTTP RFC (aside: I cannot believe how something so simple has been made so complicated)... only to remember I'd totally forgotten I could just stick a caching proxy server (e.g. nginx) in front of the scraper and have it do all the hard work. Later I remembered why I wanted to control caching, primarily to do with some future plans, but right now I could have gotten along just fine with a caching proxy server.
When I'm tired and not thinking straight I often dive straight into the next task without asking the right questions. I've been trying to get into the habit by creating tasks in PivotalTracker and looking over other stuff to remind myself of how much else there is to do so I'm forced to ask myself "is this really what I should be working on next?", but I still slip up even after YEARS of relearning this lesson. The annoying thing is I'm very good at planning and allocating tasks to a team, then managing their progress, but very inconsistent when I'm both the manager and developer.
Okay, but isn't the actual opportunity to write a compiler that would transform Access apps into web apps (Rails or whatever)?
That would be very high level and should interest many (very) talented hackers; and you could either licence it -- or sell each transformation for a very hefty price (the price of writing it again).
Am I the only one who was surprised that of all the pieces in that sentence, the author italicized "web browser" and "flash?" Those actually seem like the least hacky pieces to me, but I guess he highlighted those because they're at the end?
I had a similar experience with my first company in college selling software to corporate customers who previously used excel to track everything.
Theres millions of opportunities like that to optimize a terribly inefficient corporate process with software.
But the problem is always
a) the problem set is rarely easily reproduced, meaning you're not really selling a product, but instead selling a product + consulting - since every process is slightly unique
and
b) you're dealing with terribly inefficient systems and the type people who would put together a terribly inefficient system (like you said, not necessarily meaning they are bad people but likely are not a good customer)
I still believe its the most straightforward way to make money in software outside of getting a job at Google/facebook. But its certainly not fun and not a traditional "high growth" startup.
A fantastic read - thanks.
Quite simply I'd hire someone to do the dirty work, pay them a decent salary and split the remainder of the income between you and your co-founder.
Sounds like a pragmatic solution. The product exists, people keep signing up, and maintenance is minimal. I can completely understand why the Pennarun dropped out, though, since I would loathe working in a career where my job was to fill deficiencies in a product I don't like. It sounds like the real problem is the web of hacks. Nobody likes hacky fixes--they can wear a person out.
Sounds to me like you're good at creating software small-businesses, but you're not built for the tedium of running them.
I find it's often hard to discuss the business of software because of a variety of preconceptions people in the field have so let's turn this into a restaurant. You wanted to start an amazing new french restaurant, but to get started initially you decided you're going to be more of a cafe where costs are lower and it's easier to attract customers. In that cafe you start offering a few sandwiches, and some baked goods. Some of your baked goods were vegan. Soon you were inundated with vegans seeking baked goods, and you basically turned your whole operation into a pretty successful self-sustainable single-store vegan bakery. This wasn't the french restaurant you wanted to start (and could have sold to a restauranteur as some do once they show promise), nor is it a true "startup" success which would have had you opening in many cities, perhaps franchising, etc.
Nevertheless, you were to able to create a business (as you've done before), direct it into a market where you're not just making a profit, you're solving a true need. I don't know if it would help your self-fulfillment (because it sounds like you're lamenting the lack of it), but that's the aspect I would concentrate on, and just be aware that it is more likely than not that you'll get bored or disgusted with what you've created and move on to the next part. Just work out an efficient way to do this "moving on" portion, and I think you'd be able to do something you love and something you're good at. And in a few more of these, perhaps you'll create that one company that'll be your baby, not just your creation. (The trick is of course to treat them all as your baby at first)
How about trying to sell the company to http://www.red-gate.com, who IIRC built most of their business on making tools to deal with the awful parts of database systems?
It sounds like the plight of one of my coworkers. He started on a team that had to know significant details about how dial up worked. This was great work when dial up was big. One aspect to dial up were fax calls, and nobody wanted to work those issues. He stepped up, learned fax, and earned quite a bit of notoriety due to his specific fax knowledge. Wrote a book, some RFCs, promotions, etc.
The only problem? He 10 years later he still sits around fax machines, listens to users who still use faxes (problem customers), and talks about one of the true dragging edges of technology. And it doesn't port well to other newer technologies.
If I were you, I would hire a good entrepreneurial hacker who's looking for some autonomy and upside, give him/her 20% and a small salary, and leave me and my partner on the board.
Now if only there was a way to convert those Access databases into modern web apps based on MySQL and an HTML interface, that could really be a cash cow...
I think it could be done. The plugin itself is actually very clean code and doesn't need a lot of maintenance (well, someone has to update it to Access 2010, but that's probably not so bad). The server is crazy because it has Wine+Access+X11+VNC+Flash. Mostly the problem there is Access. But because the plugin has already done the insane work of exporting an Access database structure as text (and incidentally, re-importing it), all you need is a replacement server.
The actual form layout files (now that they're in text form) are pretty straightforward. Someone who really loves javascript + html5 could probably make this happen with a few months of work, at least for databases that don't get too fancy. (And the users are actually willing to modify their apps to make them work; slightly modifying Access apps is okay, rewriting them on a new platform is not.)
It would probably be much less gross that way, but I just don't have enough patience left to try it. I'd totally recommend it to a fresh hacker with some free time though :)
You just described "a couple decent developers + ruby on rails + custom development".
The interesting bit is trying to create the next Excel or Access. The most recent (aborted) attempt was DabbleDB (http://en.wikipedia.org/wiki/Dabble_DB).
Your story sounds like a classic reason people sell small businesses: not excited about it anymore. Either figure out how to get excited again (perhaps by hiring people who like to do the parts you don't like), or sell the business to somebody who can be excited about it.
I feel the same way about cross-browser testing. Everybody knows that this is the worst part about web development. A number of startups already exist to solve it, but there's easily room for more solutions. This is a blindingly obvious startup idea.
But I get indigestion just thinking about it, because this means taking on the worst aspects of everyone else's job. There's no major win that I can offer for being clever, just for being more willing to focus on unpleasantness.
Or am I kidding myself? Is that focus on something unpleasant the very soul of entrepreneurship?
Sometimes you luck out, and something that everybody hates is something that you love. But there are some things which are probably universally unpleasant to even think about.
There are people who would love a revenue stream and don't mind boring work. People who would rather be in a position to work in Thailand, or India, for example...
I shuddered when I saw the word Access Database. (bad memories of porting those evil things). I don't care how much money is in those things, I will leave it to someone else :) Much like these guys are trying to do.
That is quite amazing. I am writing this as someone who has just rewritten an Access piece of crap for a construction company. I charged them $15k for 4-5 months of part time work. It is not a rewrite of their original app, it is an order of magnitude better, but if they saw your git versioning WINE running frankenstein, i wonder if they would have chosen that. Now i am off to sell this software again now that i have been paid to write it once. I wonder if you could get a nice income stream by referring companies who want to upgrade their application slowly. Now I am living in the USA, if I lived in another country I could take that $15k and live for 1 year. Here it is hardly much at all. I would love to take US jobs for $15k and finish them in 2-3 months. Low end US freelancer rates, but do a high quality job.
Sounds like a valuable contribution that increases the value of MS Access for its users by allowing it to become accessible for web-based applications. I'm searching for the company website that he did not want to mention in the article (if that says anything).
Great ideas alone do not make great entrepreneurs or profitable companies. At the end of the day, the way a person thinks is where they will eventually return. An employee can have a great idea and make an attempt at being an "entrepreneur" for a while only in the end to return to being an employee. Entrepreneurs think differently about how money is generated from someone with the mind of an employee- thinking on different sides of the quadrant. It takes a different set of skills and a different mindset. "Safe & secure" can be alluring.
[+] [-] henrikschroder|14 years ago|reply
And it's funny as hell.
[+] [-] beagle3|14 years ago|reply
Of his open source stuff: bup is awesome, sshuttle is awesome, and wvdial is a lifesaver for those rare times you need it. I'm quite sure do/redo is awesome, although I can't provide 1st hand testimony.
[+] [-] ef4|14 years ago|reply
The only happy ending I see here is if the founders learn to delegate, or work hard on finding the right people to sell this to. Not to a hacker -- to a businessman who would be genuinely happy to run a growing business, and not horrified by the technical kludges.
I always chuckle a little to myself when I see clearly talented programmers shying away from this kind of problem in favor of allegedly more interesting problems. I used to feel the same way. But it's mostly chasing an illusion. The real work of programming is always about dealing with the messiness of the real world.
If you find a problem that doesn't have any real-world nastiness, you can be sure it's either (1) irrelevant, or (2) already solved for free by countless other smart programmers, because it's fun.
[+] [-] unimpressive|14 years ago|reply
So don't get me wrong. I like Access users. Access developers, in particular, are the anti-IT department, the rebels, the people who aren't willing to wait for the sysadmins to provision them a server, and they don't have to, because they can just share an Access file on the fileserver. IT departments hate them, which is how I know they're on to something. These are the kind of people I want to help. This is the sort of thing that's the reason I do the work that I do. No kidding.
While it feels a little weird hearing that talk in relation to a Microsoft product, I agree. Building and maintaining a successful (To whatever extent you would call such a niche market a "success") product that helps people solve their own problems instead of feeding the IT priesthood would be awesome.
And then when you talk about the implementation details. My smile turns to a horrified slack jaw expression.
I'd probably feel guilty about it, and I might even try to keep it running as long as I could, but I'd eventually have as much as I could take and give up.
[+] [-] apenwarr|14 years ago|reply
[+] [-] untog|14 years ago|reply
I threw together an Access database that everyone responded to very well- as you might imagine. The IT department ignored my repeated attempts to get them involved as it progressed from an Access DB to a .NET client front-end app with a MS SQL backend (that I managed to get from the company's external IT contractors).
Shortly before I left to get a "proper" job, they announced that the entire workflow system was moving to SAP, and that the work I'd done would be integrated into that system. That was five years ago... and apparently they're still using my system today.
[+] [-] sirclueless|14 years ago|reply
[+] [-] lusr|14 years ago|reply
This weekend I nearly slammed my head into the wall after spending half the day implementing and testing shared caching for my high volume distributed web scraper according to part 6 of the HTTP RFC (aside: I cannot believe how something so simple has been made so complicated)... only to remember I'd totally forgotten I could just stick a caching proxy server (e.g. nginx) in front of the scraper and have it do all the hard work. Later I remembered why I wanted to control caching, primarily to do with some future plans, but right now I could have gotten along just fine with a caching proxy server.
When I'm tired and not thinking straight I often dive straight into the next task without asking the right questions. I've been trying to get into the habit by creating tasks in PivotalTracker and looking over other stuff to remind myself of how much else there is to do so I'm forced to ask myself "is this really what I should be working on next?", but I still slip up even after YEARS of relearning this lesson. The annoying thing is I'm very good at planning and allocating tasks to a team, then managing their progress, but very inconsistent when I'm both the manager and developer.
[+] [-] pestaa|14 years ago|reply
[+] [-] perlgeek|14 years ago|reply
[+] [-] bambax|14 years ago|reply
That would be very high level and should interest many (very) talented hackers; and you could either licence it -- or sell each transformation for a very hefty price (the price of writing it again).
[+] [-] ArbitraryLimits|14 years ago|reply
[+] [-] dmix|14 years ago|reply
I had a similar experience with my first company in college selling software to corporate customers who previously used excel to track everything.
Theres millions of opportunities like that to optimize a terribly inefficient corporate process with software.
But the problem is always
a) the problem set is rarely easily reproduced, meaning you're not really selling a product, but instead selling a product + consulting - since every process is slightly unique
and
b) you're dealing with terribly inefficient systems and the type people who would put together a terribly inefficient system (like you said, not necessarily meaning they are bad people but likely are not a good customer)
I still believe its the most straightforward way to make money in software outside of getting a job at Google/facebook. But its certainly not fun and not a traditional "high growth" startup.
[+] [-] lancewiggs|14 years ago|reply
[+] [-] fruchtose|14 years ago|reply
[+] [-] jordanlev|14 years ago|reply
[+] [-] algolicious|14 years ago|reply
(Edited to remove link to not affect Google juice)
[+] [-] anateus|14 years ago|reply
I find it's often hard to discuss the business of software because of a variety of preconceptions people in the field have so let's turn this into a restaurant. You wanted to start an amazing new french restaurant, but to get started initially you decided you're going to be more of a cafe where costs are lower and it's easier to attract customers. In that cafe you start offering a few sandwiches, and some baked goods. Some of your baked goods were vegan. Soon you were inundated with vegans seeking baked goods, and you basically turned your whole operation into a pretty successful self-sustainable single-store vegan bakery. This wasn't the french restaurant you wanted to start (and could have sold to a restauranteur as some do once they show promise), nor is it a true "startup" success which would have had you opening in many cities, perhaps franchising, etc.
Nevertheless, you were to able to create a business (as you've done before), direct it into a market where you're not just making a profit, you're solving a true need. I don't know if it would help your self-fulfillment (because it sounds like you're lamenting the lack of it), but that's the aspect I would concentrate on, and just be aware that it is more likely than not that you'll get bored or disgusted with what you've created and move on to the next part. Just work out an efficient way to do this "moving on" portion, and I think you'd be able to do something you love and something you're good at. And in a few more of these, perhaps you'll create that one company that'll be your baby, not just your creation. (The trick is of course to treat them all as your baby at first)
[+] [-] paraschopra|14 years ago|reply
Loved it, thanks for sharing.
[+] [-] Zarkonnen|14 years ago|reply
[+] [-] eftpotrm|14 years ago|reply
[+] [-] trout|14 years ago|reply
The only problem? He 10 years later he still sits around fax machines, listens to users who still use faxes (problem customers), and talks about one of the true dragging edges of technology. And it doesn't port well to other newer technologies.
[+] [-] DanBC|14 years ago|reply
People know the reasons why faxs suck. What they're not so sure about is why fax is still being used; what problems fax solves.
[+] [-] dorkitude|14 years ago|reply
[+] [-] maguay|14 years ago|reply
[+] [-] apenwarr|14 years ago|reply
The actual form layout files (now that they're in text form) are pretty straightforward. Someone who really loves javascript + html5 could probably make this happen with a few months of work, at least for databases that don't get too fancy. (And the users are actually willing to modify their apps to make them work; slightly modifying Access apps is okay, rewriting them on a new platform is not.)
It would probably be much less gross that way, but I just don't have enough patience left to try it. I'd totally recommend it to a fresh hacker with some free time though :)
[+] [-] rsanheim|14 years ago|reply
The interesting bit is trying to create the next Excel or Access. The most recent (aborted) attempt was DabbleDB (http://en.wikipedia.org/wiki/Dabble_DB).
[+] [-] runako|14 years ago|reply
[+] [-] neilk|14 years ago|reply
But I get indigestion just thinking about it, because this means taking on the worst aspects of everyone else's job. There's no major win that I can offer for being clever, just for being more willing to focus on unpleasantness.
Or am I kidding myself? Is that focus on something unpleasant the very soul of entrepreneurship?
Sometimes you luck out, and something that everybody hates is something that you love. But there are some things which are probably universally unpleasant to even think about.
[+] [-] apenwarr|14 years ago|reply
I love Steve Blank's "hierarchy of needs" concept when evaluating business value for a new product. Look for the diagram in http://steveblank.com/2010/03/04/perfection-by-subtraction-t... .
[+] [-] ebiester|14 years ago|reply
There are people who would love a revenue stream and don't mind boring work. People who would rather be in a position to work in Thailand, or India, for example...
[+] [-] peter_l_downs|14 years ago|reply
As for your problem, I'd recommend open-sourcing the code and stepping away if you really can't stand it anymore.
[+] [-] apedley|14 years ago|reply
[+] [-] amalag|14 years ago|reply
[+] [-] toddnessa|14 years ago|reply
Great ideas alone do not make great entrepreneurs or profitable companies. At the end of the day, the way a person thinks is where they will eventually return. An employee can have a great idea and make an attempt at being an "entrepreneur" for a while only in the end to return to being an employee. Entrepreneurs think differently about how money is generated from someone with the mind of an employee- thinking on different sides of the quadrant. It takes a different set of skills and a different mindset. "Safe & secure" can be alluring.