In a little-noticed deal that closed yesterday the Silicon Valley startup apostrophree secured a $25 million first round with Bolus Venture Capital of Palo Alto. apostrophree received seed money from Paul Graham’s Y Combinator earlier this year.
apostrophree is currently conducting a private beta test of their product, a proxy service that corrects common errors of spelling, punctuation, grammar, and usage in blogs and especially comments and discussion forums. I spoke with John Scogan, founder of apostrophree, about his product and company.
Typical Programmer: I have no idea what apostrophree does.
John Scogan: Every day hundreds of thousands of blog articles are posted, and those articles generate millions of comments. Aggregator sites like Digg and reddit also allow comment and discussion, so comments to blog entries are posted all over the web. We studied comments posted on popular blogs and aggregator sites and found that 45% to 50% of the comments contain at least one serious spelling, punctuation, or usage error. Almost 18% contain (sp?) or some other indication that the author knew their writing was questionable.
So apostrophree corrects the errors?
Yes. Apostrophree corrects many common errors on the fly, before readers see them. For example, the homonymns there, their, and they’re are frequently confused. Words like affect and effect or imply and infer are often mixed up. And missing or misplaced apostrophes abound — that’s where our name comes from.
Misplaced apostrophes?
Usually I don’t get through three articles in my RSS feed before I encounter it’s when the author meant its, or FAQ’s, which is almost as common on the web as FAQs, and more common than the correct FAQ, since the Q stands for “questions” and is therefore already a plural.
How does apostrophree work?
It’s a proxy service, installed on the customer’s LAN. Apostrophree looks at all incoming HTML content and applies proprietary language processing algorithms to find and correct the most egregious errors. It also looks at articles that contain flags like (sp?), which is the author telling us that he or she failed high school English. Apostrophree won’t catch everything but it will fix enough to pay for itself within a few months.
Why would an organization buy apostrophree? How does it save money?
In a typical company a small but significant number of employees read blogs and comment threads every day, sometimes several times in a work day. I say a significant number because the people who read comment threads and post comments of their own are very often among the most highly-paid people in the organization. The time apostrophree saves goes right to the bottom line.
But how does apostrophree save time? Don’t people just read through bad spelling and ignore missing apostrophes?
Most people either don’t recognize or don’t care when they encounter a misspelled word or incorrectly-formed plural. But some people do notice, and there’s a personality type that will spend a lot of time demonstrating their superior English skills online. We’ve studied this for over a year, in many settings, and over and over we find the same thing: the most expensive employees, especially technical people such as programmers, can be provoked by the smallest error to post a comment of their own correcting the error and chastising the original poster. Observing technical staff in one organization we found that just two common errors — it’s instead of its and there instead of their — accounted for six hours of essentially wasted time per month per employee.
We’ve also found that authors who flag their lack of writing ability with (sp?) actually attract more corrections, because on top of the corrections to the original error the laziness implied by (sp?) works some readers into a froth. Correcting such self-identifying comments, or just removing them altogether if there is no chance of converting the gibberish into proper English, stops another source of wasted time.
I can’t believe that posting corrections to comments takes that much time away from real work.
In a double-blind experiment at OSCON last month we scheduled a presentation that began by showing the URL of the blog the presentation was posted on. We invited the full room of 163 attendees to comment on the presentation in real time. We had introduced some errors into the presentation, some obvious like it’s and its, and some more subtle. We measured the time attendees spent composing and posting corrections. Over half of the attendees posted at least one correction, and 57 posted lengthy corrections with links to online references when we used elude instead of allude and imply instead of infer.
Programmers seem to divide into two groups when it comes to writing: nearly illiterate on the one hand, and pedantic on the other.
It’s worse than that — tempers flare and comment threads feed on themselves, corrections made to corrections. Sometimes a thread that starts out correcting something relatively benign like irregardless turns into an all-out attack on the author’s intelligence and competence, with the kind of name-calling and closely-reasoned arguments and links to Wikipedia that you find all over Digg and reddit.
So apostrophree corrects these kinds of errors before people see them, preventing employees from spending time posting corrections and engaging in online flame wars about English usage?
That’s our business model. We’ve obtained several patents on the technology behind apostrophree and we have some big organizations in our beta group. One of our beta testers, a large software company, is already reporting that their technical staff is spending less than half the time posting comments over the same period before installing apostrophree. They are also reporting, anecdotally, that some of their more volatile engineers seem more productive and less anxious than before, but that isn’t something we measure.
Do the people reading the corrected content object to this kind of editing?
They don’t know it’s happening. None of the employees involved in the beta test have asked why the literacy levels on their favorite sites have gone up from fourth grade to college junior, and that’s pretty close to the improvement you get with apostrophree.
Does apostrophree save time for all employees, or is it mainly for technical staff?
Everyone will benefit from fewer errors, but we’ve found that technical staff benefit the most. Executives and managers seem unaware of most errors, and even when errors are pointed out to them they are not usually inclined to post a correction. Technical staff are both likely to notice and get upset about errors in things they read, and they are far more likely to read articles online and post comments than managers or hourly line workers. We observed that non-technical staff with Internet access are more likely to use their computers to view and collect pornography than to post spelling corrections.
How do you plan to grow apostrophree so you can sell upgrades and keep money coming in?
We’re working on some things now, like cliché removal, that look promising. We have a team in the U.K. working on changing passive voice to active. Even something as simple as correcting capitalization of technical words and acronyms can pay off. If one of your expensive programmers comes across PERL instead of Perl he can spend thirty to forty-five minutes posting a correction, including extracts from two or three Wikipedia articles and Usenet archives. That’s ten to fifteen minutes per uncapitalized letter. And your programmer will compose and post a new version of the correction every time PERL is encountered online. That’s more than five times as long as is typically spent correcting presently when currently was meant.
Any plans for spending your venture capital?
Part of the deal we have with Bolus is the acquisition of a Russian company that is working on what they call a “clue gate.” The idea is to identify and filter out postings from newbies, particularly on technical forums, so employees are not tempted to insult someone who can’t install Python, for example, or to spend an hour explaining why a real programmer has to know C and not just Java.
Sounds like an interesting product. Good luck to you and the team at apostrophree.
Thank you.
This is the first interview posted on Typical Programmer. I plan to do more interviews with programmers who are working on interesting projects and pushing new ideas and technologies.
I had a chance to interview Boyd Hakluyt at O’Reilly’s OSCON 2008 in Portland last week. Boyd is working on a new web application framework called Miasma. Boyd gave a demo at OSCON, and afterward we had some of the local microbrew Portland is famous for and talked about web application frameworks.
Typical Programmer: I hadn’t heard of Miasma until OSCON, and even then I only saw the demo because the room numbers were mixed up on the program.
Boyd Hakluyt: Yeah I got on the program at the last minute. Some of the people who came to the demo were expecting a “birds of a feather” meeting to talk about “life extension for geeks,” which was actually on the OSCON program this year.
You’re flying under the radar with Miasma. When do you expect to have something to release?
I was hoping to have a beta version ready in time for OSCON but we lost a key developer last month so the code isn’t as ready or tested as I would like. I also need to get the web site and documentation finished. The framework was renamed in June so the domain name I had picked out doesn’t work anymore.
What was it called before you renamed it Miasma?
Originally it was called Darlene. One of our lead developers, who wrote the core URL routing code and the template parser named the first version after his girlfriend. When they broke up we talked about renaming it couldn’t settle on a good name that wasn’t taken. When he left the project Darlene didn’t seem to fit anymore. I think Miasma is cool name and no other programming project is using that name. I have a friend working on a logo, too.
How many people are working on Miasma?
Right now it’s just me, but I’m working on it almost every day.
There are lots of web frameworks to choose from. What originally inspired you to write a new framework and what makes it different?
I’ve looked at most of the available frameworks and they all have problems. None of them do exactly what I need to do. I was working on a side project developing an appointment and contact management system for my optometrist and it occurred to me that most of the code I had written could be used to build other web-based applications. My client agreed to let me retain ownership of the code as long as I finished their application for free.
What’s different about Miasma is the philosophy behind it. It’s not just another big collection of classes and objects. From the beginning my plan was to make a framework that the average programmer could use to build the kinds of web sites I work on. You don’t have to be a language geek or understand things like methods or closures. Most of the code you write with Miasma is the HTML and JavaScript you are used to writing.
What language is Miasma written in?
We started with Ruby but ran into too many limitations and performance problems with it. Then we ported the code to Haskell and got it partially working on our laptops, but it was too hard to deploy on our client’s hosting account. One of the most intense ideas we had was a five day long programming contest to write the framework core in as many languages as we could think of. We invited all of our friends who know how to code over, got a bunch of frozen pizzas, snacks, beer, soda, and two XBox 360s hooked up to LCD TVs. We had people writing the framework in Lisp, Scheme, Erlang, C++, Lua, Python, Cat, Forth — everything but COBOL. That was a very cool way to play with different languages.
None of the code from the contest was really beta-quality, though, and we still had problems getting any of it to run on my GoDaddy hosting account, so we decided to go with PHP.
There are so many PHP frameworks already. Why would I use Miasma instead of, say, Zend or Cake?
Cake has a huge manual and is just too big to easily understand. I haven’t used Zend or looked at it but a friend of mine has played with it and told me it’s complicated and doesn’t really hide database SQL or make AJAX easier to do.
My philosophy is to make things simple. If you look at Cake or Ruby on Rails or most of the other frameworks you notice they have hundreds of classes and objects. But a lot of programmers don’t understand object orientated [sic] programming and don’t want to learn it just to make a simple web site. What they want is something that does database operations without forcing them to learn SQL — what the Rails people call CRUD.
With Miasma I’ve concentrated on things that web developers do over and over. When I’m writing a web site most of my time is spent getting variables from the server displayed in the right place in the HTML and debugging JavaScript. It’s not spent making a bunch of classes and objects that will most likely never be reused.
Does Miasma support the Model-View-Controller (MVC) pattern?
Yes. The Wikipedia article about MVC has been a big help figuring out how to organize the code. When you start a new Miasma project you run a script that creates a project folder and three folders inside of that named models, views, and controllers. By starting with that structure programmers are encouraged to follow MVC best practices when deciding which folder to save their scripts in.
A new Miasma project with folder layout showing MVC structure:

Does Miasma use other software patterns?
When people ask about patterns I like to tell them Miasma is based on the simpleton pattern, because it’s very simple to use. I know in real OO programming simpletons are usually a bad idea but I mean it ironically.
Most of the successful frameworks have large developer communities. Ruby on Rails is probably the most obvious example. How will you get that kind of excitement and interest behind Miasma?
I’ve studied how David Heinemeier Hansson [author of Ruby on Rails] has popularized Rails. Many of his talks are available on YouTube. Rails was extracted from a bigger project, and so was Miasma. I plan to start giving talks at conferences like David did when Rails came out. I guess you can think of Miasma as having the benefits of Rails without a lot of hard to understand Ruby OO code, and without the profanity.
Does Miasma have a database abstraction layer? Did you write your own or use an existing database library?
I wrote my own. In the site configuration file, which is XML by the way, there’s a setting for the database you’re using. There are functions for doing database operations like SELECT and INSERT and UPDATE and they choose which PHP database functions to call based on the configuration. The programmer passes arguments that are converted to WHERE conditions and ORDER BY and things like that. It’s much easier than writing SQL. I don’t know SQL very well and that was my incentive for writing the database functions.
An example of Miasma’s database model functions compared to plain PHP. Notice no SQL knowledge required with the Miasma database abstraction functions:
/* plain PHP with MySQL */
$appointments = array();
$apptnum = 0;
$result = mysql_query("
select * from appontments_table where office=0", $dbconn);
while ($row = mysql_fetch_assoc($result)) {
if ($row["appt_doctor"] == 1)
$appointments[$apptnum++] = $row;
}
/* miasma ORM functions */
$appointments = array();
$apptnum = 0;
$wherecond = ” where office=0 “;
$temp = mia_model_select(”appontments_table”, “*”, $wherecond);
$appointments = mia_model_filter($temp, “appt_doctor”, 1);
You’ll notice there’s no SQL in the Miasma example. One thing I don’t have working yet is making plurals for the table names, like Rails does, so you have to use the actual database table name. I’ll have that working for the beta.
What about templates?
Miasma has a templating engine just like the other frameworks. I looked at probably twenty different template systems but they all had issues that didn’t work for me. Basically you create a template that has placeholders for variables that come from the model or controller. The placeholders are marked in the template by surrounding them with ++var++. When the controller processes the template it reads in the file, uses regular expressions to find all of the placeholders, then replaces those with values from an array of substitutions.
A snippet from a Miasma template:
<div class="appointment">
<b>Date</b> ++var++DATE++var++ <br>
<b>Name</b> ++var++FIRST_NAME++var++
++var++LAST_NAME++var++ <br>
...
</div>
<!-- var placeholders can be used in html tags -->
<div class="++var++TYPE_OF_APPT_CLASS++var++">
The template engine is the biggest piece of code and the one that I’ve tweaked the most, because a big template with lots of placeholders can be slow. My goal is to add things like conditionals (++if++) and loops (++for++) so it can do the same kinds of things developers normally do with raw PHP.
I don’t mean to ask a stupid question, but why not just use PHP instead of making a new template language?
The main problems with PHP are no namespaces, and it has way too many library functions that are just too hard to figure out and remember. By giving the developer a smaller and simpler set of library functions they don’t have to worry about all of the junk in PHP. And all of the Miasma functions are prefixed with mia_, so they have a unique namespace, unlike most of the PHP library.
I’m looking forward to a beta release I can try out.
I think a lot of developers are tired of how complicated web applications are, and how huge the frameworks have become. When I see the unreadable mess of JavaScript code on any of Google’s pages, for example, or the contortions programmers go through to get PHP to send a valid SQL query, I know there’s a long way to go with web frameworks. I think Miasma is a pretty big step in the right direction.
Thanks for the beer, and good luck.
Thank you.