A profitable, growing, useful, legal, well-loved... failure
apenwarr.ca
apenwarr.ca
And it's funny as hell.
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.
Is redo awesome? Maybe. We have written a few "usability layers" on top of redo, so I can't evaluate it fully as it is.
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.
I've also noticed the ms sql server management studio to be fairly unintuitive (adding backups as drives, etc.) and I'm wondering whether the big players in IT might realize that future profits may not come from better software, but from the consulting/maintenance services that accompanies the software (following IBM's tracks).
EDIT: looking at the success of HyperCard/Access, that would probably be a great open source project. taking HyperCards approach to the web.
That's funny, because you're in the exact same situation. You sort of wish people would stop using your product so that you could move on to doing something else. But that isn't going to happen because people need what you're offering so badly that they search the web until they find your product. Weather you make that easy for them or not.
Then again a product called "Access" is probably the most likely of any to be a special case.
I believe it started that way because our original developer didn't know anything else.
OS: Mac OS 9; DB: Filemaker Pro; templates: Lasso; webserver 4D WebSTAR.
This was in 2011.
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. People can't possibly want that. But they need it.My favorite encounter with such hacky tech was at an insurance broker's office. It was 3 years ago, and this company first of all still used 15" CRT screens (with burned-in images because they ran no screensavers). They opened up a remote Citrix session (which I only know because it took over a minute for the splash screen to disappear) which connected to a Windows 2000 server that displayed a vt100 terminal window that then connected to their insurance company mainframe. They couldn't use the mouse to navigate the interface, of course, only tab/alt-tab.
Somewhere there is disruption, but, really, where does one even begin? It's the technology equivalent of a court-appointed cleanout of a hoarders home.
http://en.wikipedia.org/wiki/Forte_4GL
so I'm stuck maintaining a few hundred applications which are hacks and workarounds on top of the obsolete enterprise software.
The pay is very good for my country but I'm looking for my way out.
It worked well enough to justify learning Rails and Prawn to rewrite the whole thing server side, after which point I rm -rf'ed the directory that script was in and deleted the backup so that its vengeful shade would never trouble humanity again.
Before I heard about configuration management, I had bash scripts to configure my server from clean state. I tried it locally hundreds of times to get every command right.
That wasn't a fragile system AT ALL.
I automated this with Sikuli (http://sikuli.org/); the ninja feeling while watching it run was awesome (now it runs before I come into the office).
Sikuli made the job perversely fun, and the entire script is less than 100 lines of python. Highly recommended for any sort of GUI automation (though watch the dependency on Java 1.6; 1.7 doesn't work).
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).
But it would take a lot of developers a lot of time to build a reliable product. And nobody can afford that.
What the customer needs is exactly what apenwarr provided: they continue to update their Access db as they always have, but, BAM, it's also on the web now.
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.
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.
I've actually had the pleasure of meeting both of them in real life and they're great people -- honest, smart, fun to talk to -- I imagine they would be great to work with.
(Edited to remove link to not affect Google juice)
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)
Loved it, thanks for sharing.
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.
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.
You give someone a telephone number, then you hear a noise and a document magically appears.
Sure, there's software solutions. People can email documents to an email address, and your computer can automatically send it to the printer. Unless your computer is off, or the app isn't running, or someone queued up a hundred pages in the printer, or the printer is out of ink, or the person sends you a file in an incomrehensible file format.
These issues are all solvable, but it's less effort to buy a fax machine and plug it into a phone line.
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).
DabbleDB failed because it was trying to completely replicate Access, without being compatible with Access. And no, uploading your data is just not good enough. Access is not a crappy mysql; it's an IDE with a GUI editor and a programming language and a crappy mysql. DabbleDB was just a crappy mysql.
The huge business opportunity here is not to compete with Access. It's to let people leverage their existing huge - monstrously huge, seriously - investments in Access databases, adding just enough functionality to keep it alive.
Once you have the cash cow taken care of, then sure, see if you can add some features and replace Access entirely. But then Microsoft will probably not like you as much.
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 :)
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.
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... .
As for this specific problem - it's hard to say without doing surveys, but I'd say every webdev shop in the world does all 5 to some degree, unless they are developing for a corporate intranet with a controlled client base.
The spread of browser platforms right now is the largest it's ever been. There are many shops who have to fight IE6 on the rearguard while trying to be iPad-compatible in the vanguard.
The higher end shops do some formal or scripted testing, but my intuition is that what the average person really want is to do a quick check by hand in one browser, and somehow magically know that it works on all the other ones.
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...
> Customers need this so badly that they're willing to pay a lot for it.
> It's just about providing something people want and are willing to pay for.
Truth.As for your problem, I'd recommend open-sourcing the code and stepping away if you really can't stand it anymore.
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.
Of course, one could adopt a more practical self-improvement oriented outlook and say, well, someone with a talent for figuring out what people need (or stumbling on it) would surely come up with something even better that you'd like doing, but hey, just enjoy your liberation.
Starting a company is about working on something you're passionate about. I couldn't imagine starting something that wasn't really meaningful to me.
My POV is this person needs to start delegating as much of the business as possible and manage growing the business to support that.
Still, I hated reading it, and I didn't mind MD.
I know it's not really the point, but this is a pet peeve. No, C is nothing like assembly language. I seriously question whether anyone who repeats that frequently has actually done any assembly programming. It's an order of magnitude more tedious than writing C.
Nowadays life would be a lot worse in assembler, because CPUs are designed to be programmed mostly by compilers, not humans.
(Also, the ways in which C is better than assembly roughly correspond to the ways in which our query language would be better than SQL. Like, say, variable scoping.)
Learn to get to the point, man!