It’s Not Bad, Yet. It Will Be: Thoughts on Testing Startup Apps

The title, ‘It’s Not Bad, Yet. It Will Be: Thoughts on Testing Startup Apps’ is one that was added after the fact.  This originally appeared as an answer on a popular Q&A site (see foot note).  

Context: A founder asked the following question: ‘Is it bad that I don’t have a single test written for my Startup Web App written in Rails? It’s an online analytic app.  I’m not used to writing Tests, but with my Dev team we understand the features that we implement and make sure things are in place before we go into production.

This is not my first time.  I have been launching and developing for the last 5 years.  But, I just wonder what are some pitfalls of that practice.’

It’s not bad. Clearly you’ve not had an “a-ha” moment with testing yet though. When that time comes, you’ll lament on how terrible it was when you didn’t have unit and functional tests. You’ll likely push a feature to production only to realize 3 days later that the newly released code breaks some obscure part of your system. Upon fixing that, you accidentally push more bugs to production.

Then you hire new engineers. They’re CONSTANTLY submitting pull requests  laden with bugs. So you put more stringent code review requirements on them. You don’t trust their code and you end up wasting more and more time fixing the issues they create.

Your new hires eventually learn their way around, and if you were smart while hiring, they even know their way better than you do now. As a matter of fact, one asshole of a developer has now written ~33% of your codebase and he’s decided to leave your dumb startup to work for BetterSalary Co. He followed your lead: no testing whatsoever.

Now you’ve got to implement a new reporting feature that extends functionality written by your old, and more handsomely-paid, subordinate.

“Oh GOD,” you cringe as you open his code. You plead with the coding gods to help your plight, but alas, they do not help you. Coding gods do not exist.

As you trudge and hack your way to completion, you realize that you literally have no idea what’s happening, why your code works, or even how long it will work. “Let’s try this out in staging…” you wisely muse. Nothing works. You ponder the issue and A-HA! “TIMEZONES!” You exclaim. How could you forget to take into account timezones?

You push a fix. Ok, that got you a little further, but it’s still breaking on some of the code that your colleague wrote.

Next week, you’ve got slightly less hair, your co-founders are feeling slightly less confident in your ability and you finally feel vindicated – you just pushed that stupid reporting feature.

In group chat, your sales team is going nuts. “WE CAN’T GET INTO OUR WIZWOG THINGY AND ALL OF OUR OPERATIONS HAVE STOPPED.”

Good thing you at least take snapshots. Le rollback.

If only you had setup tests. You might not have pushed all those bugs to prod and your new hires would have some guard rails while they learn the ropes. Furthermore, given sufficient time, complexity will prevent you from groking all parts of your system. You need to test so you stay productive as time goes on.

So, it’s not bad, yet. It will be.

This article is adapted from an answer to a question titled ‘Is it bad that I don’t have a single test written for my Startup Web App written in Rails? It’s an online analytic app.‘ by John Fawcet.

Add Comment Register

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Startup Burn Rates: A Game of High Stakes Poker

Yesterday, over on Quibb, I commented on an article about the alarm sounded by Bill Gurley in a recent Wall Street Journal article, then echoed by Fred Wilson and Marc Andreessen. They warn how the increase in startup burn rates could lead to spectacular flameouts. I’ve decided to join the conversation and share my view on what I speculate is happening.

As a pure spectator, entrepreneur and investor, I’ve witnessed changes in early stage venture capital and the startup liquidity cycle. These changes have been widely reported by Mark Suster from Upfront Ventures and other notable VCs. To summarize, investing has changed because startups have changed.

Here is how:

1 — What once took $3 million and 20 engineers to build, now cost $30k and only requires two good engineers to build. With 100x cost reduction comes 100x more startups. Most startups don’t fail because they weren’t successful at building a product, they fail because they aren’t successful at gaining traction and growing users and revenues.

2 — When companies are successful at #1, money becomes a commodity. When you can show that customers in a large or rapidly growing market are adopting your product, and your customer lifetime value (CLV) exceeds what it costs you to acquire that customer, you can almost always raise capital to fund growth.

3 — For startups, the market values growth, not profitability. As a result, startups that are successful at #2 choose to grow at unreasonable rate, as opposed to growing at a reasonable rate that keeps them borderline profitable. Since the market values growth, startups are in an arms race to gain marketshare. Consequently, they’re driven to raise money on a near continual basis to invest in customer acquisition to “own their market.”

The cycle goes like this: raise a round; invest in growth; show growth data to VCs; then let them compete to fund your next round – which leads to a much higher valuation. Rinse and repeat! When you’re successful, your startup is on its way to the unicorn club.

With the above mentioned changes in entrepreneurship, venture investing has changed accordingly:

1 — Early stage VCs that make initial investments in companies at Series A or Series B typically reserve 50% of their investment funds for follow on rounds. Historically this has been enough to maintain a decent pro-rata percentage ownership to limit dilution as portfolio companies raise later-stage rounds to accelerate growth. Many venture funds are now finding that their reserves aren’t nearly enough to maintain pro-rata in the wake of multi hundred million dollar late stage rounds. Some early stage VCs have raised additional funds reserved specifically this purpose.

2 — Due to the changes in startup growth described above; a significantly larger growth opportunity due to a growing market of mobile consumers with credit cards on file; and the propensity for startups to remain private longer, the funding landscape has changed accordingly. Many large institutional investors that historically invested only in public equities have now started investing, pre-IPO, in unicorns. Uber’s recent $1.2 billion raise at a $17 billion pre-money is the premier example of this — but not the only example.

3 — If I were an early stage VC trying to maintain pro-rata as my portfolio companies doubled down on fundraising due to the arms race for growth fueled by a new crop of eager late stage investors, I’d be very uncomfortable as well. Growth for most companies typically requires more headcount. In addition to payroll growth, increased headcount almost always requires more office space — leading to significant long-term lease commitments and other fixed expenses. When and if this new crop of late stage investors retreat back to public equities, the late stage funding bubble will pop. Massive layoffs and in some cases insolvency will ensue, resulting in spectacular flameouts.

For early stage investors like Bill Gurley, Fred Wilson and Marc Andreessen who have lived through the dot-com down cycles of the past, follow-on investing to maintain pro-rata in the current environment must feel like a game of high stakes poker.

Note: This article originally appeared on Clarence’s blog here.  Clarence is a SocialMatchbox alumni based in Palo Alto, CA.  Before he moved to the bay area he lived in Maryland.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

No Cell Service At The Office or At Home? Fix For Crappy AT&T Cell Service.

After a ton of trial and error, I have a half-way decent solution to my nightmare scenario.  Are you getting no cell service at the office and at home?  Here is my fix for crappy AT&T cellular service.

This started with an incubator that I moved my startup into a few years ago.  There was a 1-3 bar level of signal for my iPhone 4, and then on the 5 via AT&T.  I tried everything except getting a booster antenna.  It was on a major college campus so I was wondering if AT&T had some major coverage issues.  I also wondered if it was the building’s science and tech engineering that made it impervious to signals.

The problem was so bad I managed to convince AT&T to let me out of my contract.  Tip: If you are in a building most of the day for your job or home and you can’t get coverage then you can get out of your contract.  It will take some back and forth over a few weeks or months, but you can make it happen.

The cure was Verizon, or so I thought.  Verizon infuriates me every time I interact with them.  AT&T did too when they lied to me about an upgrade to my service level that cost me unlimited data for two iPhones, but not in the way that Verizon does.  For example: a few years back I moved and needed to change my Internet service address.  Verizon tried to double my cost with no improvement. The new location was across the street from a Verizon building which added insult to injury as far as I am concerned.  After significant frustration I decided to cancel and they switched me over to someone who offered to give me a net decrease in the cost of my Internet service through Verizon.  I said no thanks.  I do not wish to do business with companies that cause me unnecessary frustration as a customer.  Anyway, I switched over to Verizon.  Let’s just say that I was not happy with the call waiting user experience on the Verizon iPhone vs. the AT&T phone (e.g. you can’t switch over and hang up on the call you are on with Verizon, so you end up on two simultaneous calls with the same person you were leaving a voicemail with or whatever else.) so I got out of my Verizon contract and switched back to AT&T (that was surprisingly easy).

You are probably thinking that I had to be crazy to go for a phone that doesn’t work, but I just decided to use Skype’s dedicated phone number option and opted to go through 4 headsets until I got to one that I liked.  That worked really well for me because I had a static IP address and a really fast Internet connection thanks to the incubator being on a campus that also happened to be a major Internet hub location.  I could forward my calls to Skype.

Fast forward to our moving the startup out of the incubator into an office in a major downtown area a few years.  I ended up with a bunch of new problems (e.g. four out of five calls attempted fail and nearly every call faded in and out).  AT&T told me a bunch of lies (yes, literally) about what the problem could have been, but wasn’t.  After an upgrade to a new iPhone model I figured this out after I got a really open and communicative guy form their tech support team who was really savvy about tech (most of the folks I spoke with were level 1 help desk people reading scripts – nice people, but not capable of really helping).  It turned out that of 4-5 towers, one was up to date and it was blocked by a building.  It was also having some difficulties.  The block caused the phones in our office to alternate between the older out of date towers and the new one which caused us to get from 0-3 bars.  The average number of bars was 1-2.  One bar is not enough to make or sustain a call and the variance was frequent enough that we could not use our phones.

I started using Google Hangouts to make calls, but eventually got a 3G Micro Cell tower.  AT&T sent me two before I got the one that worked, but it does work.  It gets me 5 bars now even though I have to turn off LTE while I am using the tower.  If you are not getting cellular service in your home or office then this could help you.

One tip that should help you avoid the time suck that I had to go through once I got the 3G Micro Cell tower is to do a web search for troubleshooting the 3G Micro Cell tower for your specific router.  The AT&T tech support people do not have any idea what to do with your router even though the company has at least one article on how to solve this issue for D-Link routers on their website.  I found it and solved my own problem after 2 hours on the phone with them telling me to power-cycle my router, modem and 3G Micro Cell tower over two days. So you can skip calling 800-331-0500 or 611 once you get them to send you a 3G Micro Cell tower.  Just make sure they send you one for free like they did for me.  You should NOT have to pay for duct tape on their crappy infrastructure in your home or office zip code.

The new AT&T Micro Cell Tower drops calls 5 minutes in consistently for all lines on the plan.  Not a day has gone by where this has not happened since we got it up and running.  It may be time to tack the phone back and switch to a different carrier.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Trap Catch Of The Week


Last week I signed up for and attend an event called DC Tech Day.  This event was hosted by a group from New York.  It was a good event, but today I learned that they sold or shared my email address with at least one 3rd party (General Assembly) without my permission.  There is no excuse for this.

Here is how I caught them in case you want to do the same. I use a web host that allows catch all email addresses. I used “”.  When I register for an event, I use the domain of the event or event host.  In this case it was dctechday.  When I get an email from General Assembly via dctechday@, it was clear that I had not signed up via generalassembly@ (I know because I am signed up for General Assembly via that separate address).

The DC Tech Day event organizers (their LinkedIn profiles) (and here, and here) should know better than to do this.  If you attended their event you should let them know that you do not wish for your email address to be sold or shared without your permission.  For the record, they are a third party development outsourcing shop from out of region hosting a “local” event as if they were local.  Shame on both General Assembly for acquiring email addresses to spam this way and for engaging in spamming emails that are clearly not opt-in.

I personally hate spam and take it very seriously.  If you spam me I will take the time to report the violation to your email host (in this case it is SendGrid), my ISP, and to spam lists.  I get more emails than I can possibly ever read and I do not need your help filling my inbox with whatever it is that you should have found a way to get in front of me through creative and ethical channels.  If you are new to the job or an amateur when it comes to sending emails that is no excuse.

If that is you, you should take the time to go out and figure out what you should be doing before you continue to do your job.  Mailchimp has a great article titled ‘Common Rookie Mistakes‘ that is a good place to start.  Ophelie LeChat also wrote a great post titled ‘How to Sell Your Email List Without Spamming Them‘ that would be good reading as well.  Serena Acker’s article on the Hubspot blog also provides some good background: ‘Your Email Marketing Tactics Might Be Illegal. Here’s How to Fix Them‘.

Still not convinced that this is a bad idea? How do you know if you are compliant with US, UK, European, state or other national spam laws? If you are going into the business of selling email addresses then you might want to think twice.  According to a discussion on Slashdot, the selling of email addresses could send you to jail.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Build A Website With A Ruby on Rails Based CMS

Sometimes you just want to put up a nice looking website and spend the balance of your time customizing it, integrating it and styling it.  Sometimes you just to put up a website fast.  If you want to build a website with a ruby on rails based content management system (cms), this article contains a list of open source content management systems built with ruby on rails that you may want to check out.  If you are looking for PHP or Python based web content management system options then you may find an earlier article that I wrote to be more helpful.

My list of Ruby on Rails based CMS Packages:

– An open source CMS package by a Bethesda, MD based company (BrowserMedia) that has a large collection of features (called “modules”), and plugins.  There is one main contributor (a MD based developer) out of 37 total.  Unlike many of the other open source projects mentioned in this article, BrowserCMS’s core contributors appear to be former employees of the company that created it (BrowserMedia).

– Described as a ‘blog-aware, static site generator”, Jekyll has around a dozen core contributors including ones active presently.  GitHub Pages are powered by Jekyll, so you can easily deploy your site using GitHub for free—custom domain name and all.  Hosted on Github (view contributions).

– Has 58 contributors, but one who is responsible for the bulk of the effort.  Hosted on Github.

 – Written in Ruby using the Sinatra framework. Content is stored on disk in plain text files (there is no database).  Nesta is an active project with a handful of plugins, but it has one main contributor who is responsible for the bulk of the effort.  Has a few themes, or it can be customized.  Hosted on Github (view contributions).

Radiant – Has 51 contributors and a growing collection of extensions, but the number of contributions to the project have slowed down this year and are due largely to one contributor (a DC based developer) .  There is a live demo up so you can check out the backend, etc. Hosted on Github (view contributions).

Refinery – With 353 contributors and a growing collection of extensions, Refinery is popular and well supported.  Hosted on Github (view contributions).

Spree Essential CMS – A CMS companion to Spree Commerce, a popular Rails based eCommerce system that does not appear to have been updated since 2012.  The project has 7 contributors and a polished website.  Hosted on Github (view contributions).

I am plan to spend some time with a few of these, probably Refinery and Nesta.  Maybe Nanoc which sounds interesting.  I know the lead contributors to Radiant and BrowserCMS so I will probably try both of them out.  Spree Essentials looks interesting given that I have a Spree site in the lab right now, but this project looks a bit out of date.  I will try to write about my experiences with them.

If I missed a CMS, gallery or eCommerce option let me know.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Why Asynchronous Learning Falls Short

Having participated in two hack day events, one hack night event, series of classes via Coursera, and two CodeAcademy tutorials since August, I feel like the online options could be significantly better if they would just accept that asynchronous learning falls short.  I could probably go a bit further and say the same thing about MOOCs, but I won’t.  I will explain.

Wikipedia defines asynchronous learning as “a student-centered teaching method that uses online learning resources to facilitate information sharing outside the constraints of time and place among a network of people.”

By contrast, Wikipedia’s definition of synchronous learning is “a learning learning environment in which everyone takes part at the same time. Lecture is an example of synchronous learning in a face-to-face environment, where learners and teachers are all in the same place at the same time.”

Now don’t get me wrong, I am not saying that there are not good parts to asynchronous and synchronous learning models.  The real problem that I am talking about today is when something is too asynchronous or synchronous.  In plain english, there are situations where the group helps and others where the group hurts.

A closer look…
CodeAcademy is a great example of Asynchronous learning.  So is Coursera.  With CodeAcademy you are basically out there on your own with no peers and no support.  A student taking a CodeAcademy tutorial (I don’t know that I could call it a course) can ask a question, but the forum aspect of the site is more or less dead.








The same is true of Coursera. There are discussions on Coursera, but they just don’t seem to accomplish a whole lot.  This is a unique challenge with MOOCs.  You simply have more people who need or want attention or help than you have time to provide it.

A Few Possible Solutions
My thinking about this was initially instigated by a conversation that I had someone who recently taught courses for Standford’s online high school who suggested to me that there needs to be something real time and rapid fire, almost like SMS messaging.  A few months back an Asynchronous learning company flew me out to San Francisco to talk about me joining their team to help spearhead product at their startup.  I had this exact discussion with them back then too.  It was not a company that I would work for or advise, but it was certainly an interesting thought exercise.

Facebook has done a nice job of evolving discussion groups so that they are more dynamic and almost real time.  I guess you could do something like that too.  A Facebook group is almost like a Chat Room.  I am sure there plenty of reasons why you do not want to have real time discussions around MOOCs and asynchronous learning sites, but I can’t think of a single one that is compelling.    Ultimately, I think that this is something that is going to happen one way or another.

If Coursera could figure out a way to blend the real time discussion and group work aspects of the synchronous learning model then I think their offering would be a lot more compelling. For starters, it would make it a lot easier for people to practice what they are studying if there were people who could help them or encourage them in real time.  As it is, MOOCs, tutorial sites and other blended learning options are a bit too quiet.

Another possible solution to this challenge is for the providers to be more responsive.  Web apps have services like Olark, which I, that allow a customer or user of a site to ask a question in real time.  You do not have to support this sort of interaction all the time, but if you held some office hours and made this an option it would be a lot better for the students.

This is certainly not going to resolve itself overnight.  Schools are starting to look to blended learning models as a way to allow students to master materials outside of the classroom in a way that is more engaging.  These are most often asynchronous.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Things To Do To Help Your Concentration While Coding

If you find your concentration wandering while you are trying to code, here are a few things to do to help your concentration while coding.  In this really short post I will discuss the important questions of tea vs. coffee, how to turn off Facebook or turn off social media distractions, music for concentrating while coding, and other productivity hacks that help me get through the work day.

The first thing you can do is very easy.  You can install an app called Self Control that helps you schedule social media downtime so that you don’t find yourself checking Facebook, Twitter, etc.  The app is free and you can download it HERE.

The second thing that you can do is listen to music that does not have any vocals.  I find that piano does a very good job of this for me.  So does some 80’s and 90’s techno music.  I have a friend who likes to listen to dubstep.  If you go with piano like I do sometimes, Glen Gould’s recording of Bach Goldberg Variations is a good choice.  You can play it in the background on YouTube (link).  His selection is just under 45 minutes long so you know that when it stops that you are due for a break (e.g. get up an stretch, go to the gym, get lunch, make some tea).

This worked so well for me after a couple of times that I did a search of YouTube for  “45 minute piano concentration“.  It turns out that there are a ton of options.  A major downside to using YouTube is that you get interrupted by annoying commercials.  So maybe use it to figure out what you like and then head over to iTunes or wherever it is that you prefer to get your music.

Music can also be useful for changing the mood.  I watched an in interview of Olympic gold medalist and swimmer Michael Phelps a few years ago.  He was asked what he was always listening to right before he got into the pool at a swimming competition.  He answered: “Rock Bottom, by Eminim” which surprised me. If you listen to the song it is about putting your everything into performing.  Whether it is a song like Rock Bottom or something by a popular rap artist or dubstep, music can help put your mind in the right place.

Something else that I have found that helps is to get a lamp with an incandescent bulb and put it right next to where you sit. This may not always be an option (e.g. some offices), but it really helps keep the fluctuations of the sun from creating a distraction.  I also find that it helps reduce eye strain.

For a really long time I thought that coffee was a good concentration booster, but it seems to be a bit more like a firehose that turns off quite suddenly.  The acid level of coffee is also a factor.  A few office mates in the incubator that I had my startup in not that long ago went out and got desktop sized personal tea kettles.  You can get one that just heats the water and then you steep your own tea using the regular plain old tea bags that you can buy at your local grocery store or you can get a higher end personal tea kettle with a built in infusion basket so you can do a little tea hacking for fresher or stronger tea options.  I have to admit that my sense for tea was of the tea bag variety until I started hanging out at Teaism here in DC.  I had a green tea that was more like a double espresso.

Here are a few options:

KRUPS FL701850 Personal Tea Kettle (Recommended – Best Overall)

Has infusion basket for fresh tea leaves or tea bags.


Proctor Silex K2070YA Electric Kettle, 1-Liter

Just a pitcher of water with a heating element. You can buy a separate infusion basket to use in your cup so you can use fresh tea leaves


Proctor Silex K4087Y Cordless Electric Kettle, 1.7-Liter (Recommended – Budget)

Has infusion basket for fresh tea leaves or tea bags.


Proctor Silex K4087Y Cordless Electric Kettle, 1.7-Liter (Recommended with 1 & 1.7 Liter Kettles – Budget)

Has infusion basket for fresh tea leaves or tea bags.

For more coffee and tea related resources (e.g. great coffee and tea shops for co-working or for meetings) visit my Coffee | Tea | Co-working page (HERE).


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>