A plugin for a rainy day

Moving ahead from our last post, I want to present the beta version of the Helthe WordPress Error Monitoring plugin (available here). The overall goal of the plugin is to offer relevant error monitoring for your production WordPress site.

A debugging tale

When debugging WordPress (or any other programming problem for that matter), what do you usually do? You start using your badass Google-fu to find a solution and, when that fails, you post on support forums, WordPress Answers (Stack Overflow) or another medium, but I am getting ahead of myself.

Before that you need to know what to look for and that’s usually where the problem lies especially with WordPress. Unless you’re dealing with a fatal error (White Screen of Death), WordPress is generally pretty silent about issues. This is by design.

Great experience for the users. Hell for supporting them.

This is plugin is a serious attempt at helping you with that. I have already done a good effort to capture a lot of the known errors (and some new ones as well), but having you use it will help me find additional ways to help you (and find bugs) when you need it the most.

What are you getting?

I don’t plan on doing a feature by feature explanation, but I wanted to highlight a few things that I hope you will find useful.

Leveraging existing plugins

The first thing I did is consolidate some of the good stuff from the Core Control plugin and Deprecated Log Notices which do not seem to be actively worked on anymore. Those were the two plugins I knew that helped for specific problems (let me know if you know others!).

With this, you’ll know if you’re using deprecated functions or calling functions wrong. However, the more interesting element is tracking errors from the HTTP API. Without diving to deep into it, the HTTP API is used by WordPress to handle communications with other web services. This includes wp-cron and errors with the API can be one of the reasons why your cron tasks (like schedule posts) do not run.

Termination Errors

This has the potential to be very useful. Have you ever had AJAX errors with WordPress? Those can be really annoying to solve since you can’t see the output. Well now, anytime WordPress terminates with an error, it will get logged in your error log. I haven’t seen anything like this before so I am hoping that this turns out to be very useful for you.

Image Editor Errors

Another common problem you can encounter is the image editor not working because you’re missing libraries for example. This is a scenario where you really won’t know unless you spend quite a bit of time poking around.

Admin Bar Support

Wondering if there were errors when your page rendered, you’ll be able to see all the errors that were logged by the plugin in the admin bar. This is just for site administrators.

And more!

There’s quite a few more things already under the hood and, as far as I know, there’s nothing another error plugin does that isn’t covered with this current beta version. I am not satisfied yet though. The same way you think of Akismet as your default spam solution, I  want this to be a must-have for any serious WordPress professional.

I can’t do that without your help and feedback. Try it out and create issues whenever you have a production (or even development) problem that wasn’t caught by the plugin and caused you serious pain.

This is available to you for free

You won’t need to sign up for anything and you will get all the errors logged in the PHP error log. I think for this to be truly great for the community, all the features need to be available to everyone.

Where do Helthe fit in this?

Right now the plugin only writes to the PHP error log. When Helthe gets closer to the beta phase, there will be an option to add an API key that will let errors be sent to the service. The purpose of Helthe is to make error monitoring and management more convenient for you so if you’re ok with looking through your error logs then you won’t need anything else to be functional.

As always, feel free to leave a comment below or discuss on Hacker News.

P.S. If you’d like to keep up to date with my progress with Helthe, leave your email below!


Diving into WordPress errors

I would say that the most uncertain aspect of Helthe has been if it could do an amazing job monitoring WordPress errors. In the past, finding out what a problem was in WordPress has been a very frustrating (even table-flipping) experience for myself and a lot of people I have asked about it. So I set out to test and work on this critical assumption.

Can we have good error monitoring in WordPress? Is it already available? Here are my findings after 2 weeks.

What can you get right now?

I started looking through the plugin directory, did some some searching on Google and asked around. The result was some old diagnostic plugins (like Core Control) that do not seem to be supported anymore, but I am pretty sure they still work though.

You also had some error handling libraries (like the one for raygun.io) that would do something with PHP errors/exceptions (like email them to you or send them to their API).

A good start, but hardly what I was looking for. For example, no plugins could tell you if you had no PHP image editing libraries on your server. WordPress won’t give you an error, but you won’t be able to edit images without it. Often requiring you to debug for a few hours locating the issue.

When WordPress has an error, does it make a sound?

WordPress has a very unique philosophy around errors. This isn’t documented anywhere per say, but, if you are interested in reading about it, Nacin and Otto discuss their view on it in this WordPress hacker thread. At the end of the day, everything is a WP_Error and errors are coded defensively.

You will find that no exception are used in the code and that WordPress either has a fatal error (known as the white screen of death) or will fail silently without you being aware of it. The only errors that generally surface are the ones that will impact the user (Access Denied, Could not delete tag, etc.).

Because WordPress uses WP_Errors for everything, you are left to filter which, as a developer, are relevant to you. I asked around if there was documented hooks or filters where important errors might show up. The answer was that no work had been done to document them so I went deep into the core code to check it out.

Diving for answers

I had a tough time getting that answer. There’s no documentation available so I had to go through the code to find all the error handling code myself. If you’re interested in the process, I looked at every is_wp_error call in WordPress (there’s over 300 in 3.6) and then looked at all the functions and objects that were tied to that error check. That’s a lot of core code, but I was able to get a solid grasp of what was going on because of it.

After that I looked at all the wp_die calls (450+ of them in 3.6), this is a bit more tedious, but the idea was to look at what WordPress considered important enough to terminate itself. Often, they were normal reasons, but the goal was to find the error terminations and their cause.

Finally, I did take a look for new WP_Errors, but they ended not as useful as I had hoped. Critical objects do not always handle errors simply returning a new WP_Error. So while I started with this, it ended up the less useful research path.

What does WordPress do with errors?

As Nacin accurately described, there’s roughly 3 informal classification for WP_Errors. After spending a good two weeks looking at all the error code, I would generally agree with the classification given. He doesn’t really explain what WordPress does with each type so I’ll go through them and explain since this is not documented anywhere.

User Notices

These are specific errors that will surface to the user. They are generally the only WP_Errors that make it to a filter. Their purpose is to alert the user and provide feedback when an error relevant to the user occurs. Plugins can hook in and add their own error message as well. However, these errors are superficial and don’t really alert you to problems going on inside WordPress.


These are the devious ones. Warnings are errors that do not directly affect the user experience, but prevent non-critical WordPress features from working. Quick examples are failed HTTP requests with the HTTP API and unable to select an image editor, but there’s plenty of others.

The big issue with these errors is that they very rarely make it to a filter. WordPress will simply return from the function and deal with those internally or dismiss them. As a developer or support individual, they are usually the ones you are the most interested in so it’s a real shame you cannot hook into them.


Failures are errors that need to be dealt with immediate or WordPress will not function. Most of those are found around the update code (plugins, theme and core), you’ll find some around the database code as well. They will either require user intervention or some form of rollback.

So what about the filters and hooks?

Yeah! What about those!? Like I mentioned previously, I wanted to document useful hooks where errors might show up.

I had initially thought I could use the ‘all’ hook (This hook runs for every hook/filter) to check every hook/filter for WP_Errors. You can’t use it that way. Any function using the ‘all’ hook runs before any other hook/filter function regardless of the given priority so if a plugin returns a WP_Error, you would not know. Bummer.

Besides that, there aren’t a lot of hooks or filters that are relevant if you are looking to check for application errors. Like I mentioned previously, WordPress tends to deal with them internally before they even hit a filter.

Where does this leave us?

As a developer, I hope that you have found the information useful so far. It was incredibly useful for me in getting a better sense of what was going internally in WordPress.

So in the next post, I’ll be introducing the Helthe plugin that I have been working on for monitoring WordPress errors and how I dealt with the limitations I have been discussing today.

Feel free to leave a comment below or discuss on Hacker News.

P.S. If you’d like to keep up to date with my progress with Helthe, leave your email below!


The one tool I wish I had in PHP

One thing you realize when you work by yourself is that you get a lot of benefits from tools that can automate some of your work or save you time. I have grown quite familiar with tools that you want around you when developing great PHP applications. With your production servers, you want services and products that can help you with:

  • Server monitoring
  • Server provisioning
  • Log management
  • Checking for uptime
  • Application performance
  • Application errors

This doesn’t even include developer specific services like continuous integration.

Those production server errors

Here is a common scenario.

Our client just called saying they had an error in production.

I can’t count the number of times I heard that quote. Production server errors in PHP (often the white screen of death) have always been a huge problem. When you get production errors in PHP, it’s a very painful experience for a lot of reasons.

Often, you weren’t aware of them so you have to go comb through your logs to see if you can find anything useful if you have log management that step is easier. If you’re a bit more on top of it, you get an email with a stack trace. But after, you have to go through this awkward reverse engineering process where you’re missing a lot of key information. How do you get that information?

For a lot of PHP devs (especially in the WordPress world), you will doing var dumps directly in production. That’s cowboy coding and that’s bad! Often, it’s necessary because you just don’t know what’s going on. Log information and a stack trace is sparse at best.

Meanwhile on the web…

I asked the Montréal WordPress Facebook Group what they used for errors, but only one person used an error monitoring service (Airbrake). I am always checking what the other big web languages (mainly Ruby and Python) are using to solve their problems and there are a lot of general tools that were built for this (e.g. Raygun and Sentry) that come with their own PHP libraries or third-party ones. In my research, I came across one tool, Honeybadger, that did what I wanted and they had one awesome policy.

We believe that an error management system built specifically for Ruby will be 10x better than any one-size-fits-all option.

I thought I want something like that for PHP and its frameworks/platforms. Where it’s someone who actually uses PHP and, most importantly, wants to use it. There’s plenty of language options out there and even more PHP haters so it would be nice to have someone who’s building a product where PHP isn’t an afterthought.

Hey, I know this problem! …and I know PHP!

And all I want is for something like Honeybadger to exist in PHP. So when I was brainstorming my B2B business for the app challenge, this was the first thing I thought about.

So that desire to see this exist got me to create Helthe.

Helthe helps you fix those production errors

My goal is to make Helthe the world-class error monitoring service that PHP deserves. You’ll get more than an alert, a log entry or a stack trace. You’ll get a tool designed to give you the information you need to solve those bugs faster without all the hassle.

If you are interested in having a better handle on your production server issues, check out Helthe.co for details. Otherwise, just keep checking back on how things are going. I’ll be posting regularly and sharing as much as possible of what I have been learning.

I will also be posting about production server topics and other tools you can use. So stay tuned!

Feel free to leave a comment below or discuss on Hacker News.

P.S. If you’d like to keep up to date with my progress, leave your email below!


PHP App Challenge

So I decided to stop my focus on a health for the immediate future. I might do a post-mortem of some sort eventually. That said, I’m still looking into making some form of recurring revenue so I am taking what I have learned over the last year and using it to build a PHP app and, in the vain of what Nathan Barry did with his Web App Challenge, I will try to turn this into a 6 month challenge.


So to give myself some focus, I am going to try to give myself some goals for the challenge over next 6 months.

Hit a recurring revenue of 1000$

I want to build enough recurring revenue to offset my total monthly expenses which are between 600$ and 1000$ (!). This might be a bit a bit optimistic considering what I have read from other bootstrappers. Even with my ramen lifestyle, I want to stop hemorrhaging money. So that’s the goal!

Leverage my competitive advantages

This would definitely come up in my health app post-mortem, but I think it’s clear to me now as a first time bootstrapper that I should not throw away my competitive advantage. So with that in mind, I want to leverage my longtime involvement with the WordPress community and the fact that I work primarily with PHP (gasp!).

So I would want to build a service that is useful to both the WordPress community and the rest of PHP community.

Document my journey

I’ve been writing a bit more consistently, but still not regularly enough. I want to document as much of this as possible and my refocus on programming problems should hopefully help my writing. We’ll see! This is almost a running joke at this point for me.

Let’s get started

Actually, I cheated a bit!  I have already run through a few ideas and did some quick validation through the WordPress Montréal Facebook group. I’ve been doing a small proof of concept to start to see if it is possible, but I am solving a pain I have had over the past year and at my past employment as well. I hope to be able to do a long-form marketing site and a follow-up post shortly!

P.S. If you’d like to keep up to date with my progress, leave your email below!


WordPress core as a gateway to better coding

How many of you got into PHP coding because of WordPress?

– Matt Mullenweg

Me and roughly half the room of 200+ attendees raised their hand to that question. That’s pretty incredible mused Matt. He asked that question while answering the larger question asked by 9th grader Lucas Cherkewski which was “How can WordPress be used in an education context to learn coding?”

I have been involved with WordPress for over half its 10 year existence and while I have gone from simple attendee to volunteer to community organizer over that time. I have always been a bit of the crazy one in terms of trying to help the community code better and learn about more advanced programming topics. That’s because I have been coding since I am 7-8 years old so while I learned PHP through WordPress. I had done plenty of programming before then.

Plugin development is like high school

When I was coding in high school, I couldn’t even do something as cool as a WordPress plugin. The web was just starting. I was mostly coding in Basic doing silly things like a text-based RPGs. So I think it’s amazing that someone can solve small problems with a plugin and share it with the world!

For a lot of people, that’s enough. They can solve small problems without knowing a lot of advanced programming concepts. They don’t need to graduate to college level concepts. WordPress has a lot of great APIs that are easy to use and require no advance programming knowledge.

How do you graduate to college level coding?

I did a WordPress meetup on object-oriented PHP recently and I can’t say that I am the best of teachers and a lot of the utility and reason to use object-oriented programming was lost on most because WordPress doesn’t use a lot of objects yet due to its recent PHP4 heritage.

How do I get better at PHP coding?

I don’t get asked that question a lot, but, a few months ago, Michal Bluma asked me how I got into more advanced PHP coding. I told him definitely not with WordPress. I told him I had done a lot of learning looking at the code base Doctrine1, but version1 of Doctrine is mostly discontinued and Doctrine2 is a different beast entirely.

I told him take a look at Symfony, but that’s akin to someone going from high school to college graduate. The knowledge gap is HUGE. The same would be said about Doctrine2, Zend Framework, etc.

Fundamentally, there’s no way easy way for a WordPress developer close the gap.

WordPress core is an ideal candidate for this

WordPress core would be a great place for people to get a taste for advanced programming knowledge. What’s great is that all the APIs already hide most of the internals so, if someone is looking at the core code, it’s because they want to look at it. There’s an opportunity here to allow them to become better coders! Unfortunately, that opportunity is currently wasted.

Core needs stronger coding standard

I am not talking about syntax here, but actual code quality. Core devs need to raise the bar a bit more. I am not talking about super advanced things like Reflection objects or metadata objects, but just better knowledge and use of object-oriented principles. Learning how to do object-oriented programming is really the next step if you want to learn more.

As an example, last night I submitted a ticket to core about the use of final with the WP_Post class. In my opinion, that should have never made it to core in the first place and shows a fundamental misunderstanding of object-oriented coding especially in an open source environment.

What needs to change

Honestly, it would be good if WordPress core at least used some PHP object-oriented best practices. Here are things that would be great for people looking to learn a bit more about being better PHP programmers:

  • Using interfaces where it makes sense to do so like with WP_Widget and WP_Post for example.
  • Severely limit the use of magic methods especially __get and __set
  • Exception handling instead of the white screen of death
  • Proper variable visibility
  • More abstract classes

This is just to name a few. You can find some of these in the code base already, but new code is still being committed where these basic rules are disregarded which is really the point I am trying to get across.

As a core dev, you should be holding yourself up to higher standards because you are indirectly a teacher for thousands of fledgling PHP developpers.

Feel free to leave a comment below or discuss on Hacker News.

My first open source contribution: Chronos

I have been involved with open source for a couple of years now. However, my involvement has always revolved around organizing events for the Montreal WordPress community. Except for a handful of pull requests and small jQuery plugins, I never created anything I felt would be useful to share. I am slowly trying to change that.

While I have a huge respect for Automattic as a company, I can’t think of a company that I admire more than GitHub. One of their mantras I always wanted to follow was open source (almost) everything. So since I started my current project, I have tried to keep my code as modular as I could so I could open source most of it if I could.

I didn’t really have a great opportunity till recently when I started needing recurring jobs that I could manage in PHP. I needed something that could manage both crontab like Whenever, but also handle recurring jobs programmatically a bit like wp_cron does. I looked and couldn’t find a library or set of libraries to do this.

I felt this was a good opportunity to try to get something out so I made one and I am open sourcing it today as Chronos. I’ll have a followup Symfony2 bundle available in a few days.

Why I am so bullish on health technology

optimistic about something’s or someone’s prospects


This monday I was having a somewhat heated discussion with my mother on the general future of health. It all started when I discussed the future of brick and mortar stores and malls. With the addition of self-driving cars, she felt that people would never go out anymore and lose whatever passive calorie expenditure we have left.

While it’s not an invalid point, I think people probably overstate the caloric importance that walking at the mall would bring. The important aspect is that if you do an effort to get out and walk, you are usually also focusing on other elements like the diet which accounts for the major portion of the calorie deficit required for weight loss. Because companies like Google and Amazon are removing frictions in our lives doesn’t have to imply that we are going to get unhealthier.

Health tech is not popular

Instead of asking “what problem should I solve?” ask “what problem do I wish someone else would solve for me?”

– Paul Graham

The first thing that comes to mind when I think of the health tech space is the essay “Schelp Blindness” by Paul Graham (all his essays are amazing btw!). There are decades of behavioural research and theory to testify to the complexity of the task on top of the fitness industry that has a business model built around the fact that you will most likely drop out of an exercise program within the first 1-3 month(s).

There’s lots of people working to make us LESS healthy – it’d be nice if you could support the people trying to make us MORE healthy.

– Jason Shen

This fact is mentioned in an article PandoDaily ran monday called “All the fitness apps in the world won’t make us thin“. It’s a common article to see in the tech press (there is understandably a lot of doubt), but it did make a few of founders come out of the woodwork to comment. The comment by Jason Shen struck a real chord with me, but a lot of the other comments were good as well. Discussions around health topics are generally very polarizing.

The PandoDaily article did have a few important points. A solution needs to be convenient for the user. I also don’t think that an advertising revenue model is going to work there, but people could make it work. Who knows. I actually disagree with the article’s interpretation of the PEW report. I saw a lot of positive indicators in the report. The fact 60% of people track weight, diet or exercise routine is, in my opinion, very significant. The issue is that people 50% track with their heads because it is more convenient even if we, humans, are terrible at it. This creates a bad feedback for the person.

Convenience and the advent of wearable computing

I don’t know how many times a day I now reach into my pocket to pull out my phone. If I had to guess, I’d guess a hundred. Maybe it’s a lot more.

– MG Siegler

I’m going to back to convenience as this is the cornerstone of everything. Never in history has a device as powerful (sensors, processing power, storage, etc.) as the smart phone been so close to a person. Which is why I am so excited about the fact that devices are getting smaller and closer to you each year.

The writing is on the wall for wearable computing (things like watches and glasses) which reduces the friction of the user with the device even more. Devices like Fitbit and FuelBand are stand-alone devices only because that’s the only way they can exist, but give it a couple more years and developers will be able to incredibly cool things with generic devices like today’s smartphones.

The insanity of it all

Insanity is doing the same thing, over and over again, but expecting different results.

– Albert Einstein

This quote sums up the essence the issue at hand. Each year in a cycle that transcends the cliché into researched behaviour, people proceed to do the same thing, use the same tools and fail in a very predictable way. It is normal for people to doubt that things will change, but they eventually do and it always seems obvious in retrospect.

In that way, I look at most of the behavioural research done in the past and I wonder what impact the smart phone or other devices could have had on their outcome. Eventually, I decided to stop wondering and slowly start working on it.

This is my first health related article. I do plan on doing a lot more in the future! I would like to point out that I would not call myself an expert, but I do spend a lot of time reading on the subject.

Cooking up a product: The ingredients of success

I’ve been focusing a lot on product development and design lately because I really had no idea what it meant to design and build a product. In a very cliché manner, I went in right with the coding when I started to build my product. Probably a mistake (I have made many so far.), but I think it’s too early to tell. Nothing you can’t recover from, but time was wasted which is always annoying.

What are the ingredients of success?

As I have gathered links and resources on the subject (I keep most of my interesting links curated on Kippt), I found the blog of Amy Hoy a ruby developer who teaches a class on product development. It looks really great, but completely out of my price range at the moment. She has some sample course material online and in it is this gem on the ingredients of success. She defines success when building as product as something that:

  • Sells well
  • Makes your customers happy
  • Feels great to work on
  • Gives you a lot of creative leeway/freedom
  • Fits into your plans to live your life the way you want
  • Produces a good profit
  • Grows in a controlled manner (so you can choose how big to get)
  • Does no harm (to anyone)

Amy Hoy

I have often discussed and pondered on my own motivations for wanting to build a product and I really can’t think of a more concise list of reasons for myself. Any element removed from that list creates a problem.

My first product development book: 4-hour work week

The first book I read that really discussed developing a product was the 4-hour work week by Tim Ferris a few years back. When I read it, the lifestyle he presented resonated a lot with me. Obviously part the appeal of the book is the lifestyle he presents so it’s not exactly surprising.

A friend of mine has several website specializing that does free peer-to-peer apartment marketplaces (think craigslist). He makes some money from Google ads and that has allowed him to travel and not really work in a few years. There’s also plenty of other case studies on the 4-hour blog if you are looking for inspiration.

On a personal note, I never felt comfortable with the idea of selling or making anything just to make money. It didn’t sound like the right way for me to approach this. Eventually, I came to an important conclusion.

As a programmer, craft matters

I never really thought of programmers as craftsmen till I started to read the pragmatic programmer, but it makes of a lot of sense and that’s why this list is probably is more exhaustive than if I made one based on the 4-hour work week for example. In that context, a lot of the elements of that list are relevant only when crafting something where you value the output.

When you take time to craft something, you are always mindful of the end result. This is something that I realized as I programmed more and more. I became increasingly critical of how I did things and making sure I understood conceptually what I was doing. I think this extends to anything really. When I start something, I’m never quite satisfied till I have a solid understanding of the subject.

Do you find yourself putting a bit of extra work just to make sure everything is right and up to your standards? I look back at my time working and I definitely went the extra mile to make sure the level of quality of my work reflected who I was.

So you have a list, where do you start?

So you’re looking at that list, it makes you all warm and fuzzy! Where do you go from here? If you just want to make a product, any product I would look into the Customer Development methodology by Steve Blank. There’s a lot of resources online on it, a lot of books, training products, etc. So much in fact, that it is starting to look a lot like diets. People find unique names to market essentially the same thing (talking to your customers!).

Not a programmer? Intimidated? Understanding your customers does not require programming knowledge. Just empathy. Outsourcing your development is a touchy subject (especially as a developer!) that warrants its own post, but it is possible. My friend with the apartment marketplaces uses an outsourced developer (he’s a business graduate). If you’re looking for a great talk, this one (sorry this is the only ungated link) is an interview with someone who created a profitable product outsourcing development and following the Customer Development methodology.

Got some thoughts on the subject? I’d love to hear them.

I failed at writing

I started this blog because I wanted to be a better writer. I also thought it would help me while I built my first product (still working on that!). In retrospect, that was not a strong enough motivator to keep the habit going. For the curious, my original goal was to write one article a week. I kept it up for about the same amount of time someone tries to go to the gym after new years. About a month. Pretty lame.

So if you know about the stages of change, I was more or less in the action stage for a month and relapsed out. This post is more or less a preparation stage step pep talk as I move back up to action stage.

About writing

There’s a lot of things I need to improve, but I would say first of all I need to write faster. I am not sure if it is possible, but I would like to think that if I write more often it will get easier in general. For now, my goal is to write 500+ words (not only blog posts) every day I work on my product (so 5-6 days/week). I hope it can translate to 2-3 posts a week.

Second element is finding my style. I liked doing technical posts because they made me sound smart, but it’s not always useful. I will probably do more, but I need to focus on writing things that are useful first and foremost, but also good/fun to read. I tend to have a weird sense of humour and I am not sure if it would translate into writing either. I think it is something you have to get comfortable over time with.

Making this post useful

So I’ll finish with some, hopefully, useful information. I have to say that not taking writing seriously sooner will probably end up being a huge mistake on my part. To go back on the stages of change, this was me in the contemplation stage as I have gained a better understanding of what it means to build a product when you are no one, I started to realize that I neglected a very useful way to reach out to people.

Distribution/Marketing/Growth on the web is primarily about getting people to know you even exist. It is also a way to educate your market which is critical when dealing with a new market scenario. There are multiple ways to create traction and it is a very poorly discussed aspect in startup literature. So I plan on expanding on that topic in the future.

What about your product!?

I am “pretty close” to putting something out, but not quite yet. It’s going to be all sorts of embarrassing, but you have to start somewhere!

So here we are at 505 words. I don’t think I’d want to read a longer mea culpa. That said, I hope to look back and see this as a starting point, but who knows really. Also this distraction free writing mode is pretty awesome!

New Market and Market Types

I recently began interviewing potential customers as part of the customer development methodology I am using for my startup adventure. As I interviewed these potential customers, It slowly dawned in me that I might be dealing with a new market. When starting a company, market type selection affects everything. It influences marketing, income projections, customers, sales channels, etc.

Let’s take a second to go over the different market types.

Market Types

Existing Market

This is pretty straight forward. An existing market is well-defined with existing customers as well as known competitors. It’s easy for potential customers to highlight the features that are must-have or explain the edge your product is trying to bring (e.g. better performance, new features).

Re-segmented Market

Sometimes entering an existing market isn’t possible due to various issues (e.g. monopolistic market, cost of entry), but it is possible to distinguish yourself by either offering something different like targeting a niche or by offering a drastically reduced cost. By doing this, you segment the market in a way that you position yourself as the market leader. This is a re-segmented market.

Clone Market

Clone markets are simple. It is the act of copying/transposing a known startup idea into another large market containing language/cultural barriers. Common example are Yandex and Baidu which are huge search engines in Russia and China respectively.

New Market

A new happens when you talk to customers and you hear “I have never considered this”, “There’s nothing else like what you are offering” or something along those lines. You also can’t find competitors or a comparable product. This is a new market. Some examples are the iPad and Ford with its model T.

If I had asked people what they wanted, they would have said faster horses.

Apparently Not Henry Ford

New Markets are radically different

While the above quote might not have been uttered by Henry Ford after all, it still illustrates quite well why a new market is fundamentally different compared to the other market types. Because of this, they also have very unique challenges that are not shared by the other market types.

Customers and Growth

A new market has to be grown. This has significant consequences for income generation. While other market types have existing customers, new market have none and this means you might not see growth for a few years as you educate your customer base. This is partially where the concept of the “Death Valley” comes from.


For a marketing perspective, you have to shift from the standard marketing practice because, since there is no competition, you cannot compare yourself to an existing product or brand. You can’t sell new features as well because you have no competitors to compare them to. All you can do is sell your new market vision to potential customers.

Is this good or bad?

So it’s not clear if it’s good or bad, some people seem to think it is bad like Steve Blank who discusses it in this article. Peter Thiel seems to think it is good. It is possible to be in a situation where you can choose if you are in a re-segmented market or a new one, this is well explained in this other article by Steve Blank.

That said, sometimes, you can’t articulate your new product as a re-segmented market, but if you have the choice then you should spend a considerable amount of time thinking about it as it is one of the most important choices you will have to make.