Blog Recent posts

Defensive Design July 7th, 2016 (Updated July 22nd, 2016)

Your application's design is polished and looks beautiful. Now protect it.

I'm talking defensive design! I'm not talking about defensive programming (though securing your app is always a good idea). I'm talking about defending your app's design.

A word of warning. If you don't practice defensive design, at some point, someone will break your app's design. This may not even be intentional, but it will still result in a less-than-desirable experience for users and it may even break basic functionality. Sometimes users just do things you don't expect. So what can you do?

While you probably won't be able to anticipate every possible unexpected use or abuse, here's a list of some common problems with user-generated content and their solutions to help you protect your app. I'll be recreating examples for these issues in Kicklet as I go along.

Problem 1: The user posts long, unbroken text (e.g. URLs)

This is a problem I constantly see on mobile. It's usually caused by users posting a long link that isn't properly dealt with. I've made up an example below.

Long URL example

Google Maps makes some ugly URLs

Not only is this ugly, it can create real usability problems for your user. There may be information that the overflowing text is covering, making it difficult to read and potentially impossible to click on or select. If long enough, this might add a horizontal scrollbar to the page (especially on mobile). Nobody wants that. Let's fix it.

Solution 1a: word-wrap to the rescue.

There are a few solutions to this type of problem but there's a really simple solution that shouldn't be overlooked. That's the CSS word-wrap property. By applying word-wrap: break-word; to the previous example, we're left with this:

Long URL example, broken up

At least Google's URL doesn't break the page design now

That's considerably more acceptable than having the link overflow its parent container. Other solutions might be to shorten the displayed link altogether or limit it with an ellipsis like Twitter does.

Problem 2: The user posts long, unbroken text in limited space

This issue can be a bit harder to solve depending on your available space. Here's a profile card for a fictional character I made up to illustrate the issue:

Christopher Mulloy Ó Maolmmhuaidh - Gasselterboerveenschemond, Netherlands

Christopher Mulloy Ó Maolmmhuaidh, a fictional person from Gasselterboerveenschemond, Netherlands

This example seems ridiculous, but Mulloy Ó Maolmmhuaidh is a real name, and Gasselterboerveenschemond, Netherlands is a real place. Even the shorter name, Christopher, can still be long enough to cause issues depending on your font size and working space.

Interestingly enough, this issue exists outside of web and mobile apps too. Janice Keihanaikukauakahihulihe'ekahaunaele could not even get a driver's license with her full name on it because of its length. So how should we deal with it?

Solution 2a: word-wrap to the rescue again?

Applying the same word-wrap: break-word;fix as we did in the first...


Let me preface this by saying that non-disclosure agreements (NDAs) do have a place. They're often useful in consulting or contract work, as they can help protect both parties by restricting access to trade secrets or private information. This post is not about that situation.

Speaking of which, if you're doing contractual work and signing unilateral NDAs (NDAs that only protect the other party), you're doing it wrong. Any time you sign an NDA, you should really make sure that any private information you're providing is just as protected as the information of the other party (i.e. a bilateral NDA).

Anyway, back to the point. This post is about the all-too-common mistake of bringing NDAs into discussions about startups or ideas. Let me briefly explain why it's bad for both parties, and can be even worse for the approached party.

If you're asked to sign an NDA:

Don't sign the NDA. Seriously, don't do it. Remember, I'm not talking about doing contract work for some company here (though you need to be careful there too). I'm talking about someone approaching you with an amazing business idea that they can't tell you anything about until you sign an NDA. Why shouldn't you sign it?

  1. Even if you sign the NDA, hear about the idea, and decide to part ways forever, the NDA will follow you. Because you don't know exactly what the person is going to tell you after signing the NDA, you're putting yourself in danger of essentially entering a non-compete agreement.

    Imagine this (oversimplified) scenario. You sign an NDA to hear somebody's idea about making appointment-scheduling software. At some point during your discussion, they disclose that doctors' offices are willing to pay 500% more than other businesses and make up 95% of their customer base as a result. Let's say for the sake of the example that you already knew this about doctors' offices (or at least had a hunch based on doctors' salaries).

    A year later, a friend of yours has an appointment-scheduling software startup and he's trying to figure out what type of customer to target. If you mention that doctors are a good demographic to target, you risk violating the NDA you signed a year ago. And if the person from the NDA catches wind of your involvement with your friend, you're risking a lawsuit.

    Even if you can adequately defend against such a lawsuit, is it something you really want to risk being involved in? Probably not.

  2. Asking someone to sign an NDA just to hear about an idea anymore can be (and often is) seen as a sign of amateurism, because there’s a common belief in the startup world that ideas are basically worthless. Paul Graham remarks that the market price [of an idea] is less than the inconvenience of signing an NDA. He's not alone either, as a quick search of google will show you a multitude of startup veterans that are against signing NDAs in cases like this.

    Ask yourself this. Do you want to work with an amateur? This may not be a...


Is your project failing? October 13th, 2015

It can be difficult to know if your project is really failing or not, especially early on. A week with zero or one new users can be frustrating, but it's not the end of the world. If your project is free to its users, continuing can be even harder to justify as you don't have any growing bank account to use as a sanity check. I've met a few people lately that aren't sure if they should keep working on their project, so I wanted to share the super-simple metric we use to designate current success in a project. This metric isn't original by any means, but it's useful enough to reiterate to those unfamiliar with it. Are you ready?


That's it. OK, it's a little more complicated, but not by much. Technically, I'm referring to 10% user growth per week. This is your target. Less can be OK too (as I'll demonstrate below), but you should shoot for 10% more users every week. Two minor notes here:

  • 10% user growth per week refers to active users. These are users that are using your product and then continuing to come back.
  • 10% is an average. Bad weeks are OK, although probably not a good trend. The general idea is to keep the total number of active users growing.

So what does 10% mean when you're just getting started? Let's say you start and convince 10 of your friends to use your project. A 10% growth rate for the next week means 1 new user that you need to acquire. Not too bad, right? You could spend several hours that week reaching out to people and probably get at least one person to sign up. That puts you at 11 users now. How about the next week? A 10% increase on 11 people is still roughly 1 person, so keep doing the same. Soon, you'll be shooting for 2 new users per week, and then 3, and on and on. Here's a graph of what that growth looks like if you do that over the next two years:

Total active users at 10% growth rate per week

10% user growth chart

This is pretty incredible to look at. Think about it. Just a 10% growth results in over 1,400 users after your first year. If you continue that growth for a second year, you'll have over 180,000 users! Compounding growth is awesome!

But what if you don't have 10%? Maybe you can only achieve just 5%. That's OK. The graphs will have a similar curve, but you'll notice this one has a considerably slower growth rate:

Total active users at 5% growth rate per week

5% user growth chart

It's not as impressive, but it's still an achievement. 1,500 active users after just 2 years can still be a success depending on your project.

You might be thinking, "I can't possibly reach out to so many people every week." That's true. Within a year, at 10% growth, you'd be personally acquiring over 100 users every week. That's not exactly practical. The general thought process here is that some fraction of your active users will become evangelists for your product. If they're continuing to come back and use your product, then some will eventually tell...


When developing the first version of Kicklet user profiles, we chose to use Gravatar for users' profile pictures. There are numerous reasons we decided to do this before learning that it might not be the best solution for a service like Kicklet. Our rationalization for doing so went something like the following:

  • GitHub used to use it, and we expect that many of our users are also GitHub users. This made us hopeful that most users would already have a gravatar.
  • A lot of sites still use it (Disqus, StackOverflow, and Wordpress just to name a few), so we really hoped that most users would already have one.
  • It's easier to support as a developer. This is a big reason I pushed for gravatar, as I was Kicklet's sole developer. Supporting user-uploaded images or integrating with Facebook/Twitter/LinkedIn to get user photos just isn't quite as simple to develop or maintain.
  • It was the cheapest option. Handling file uploads would inevitably incur an overhead in storage and/or bandwidth at some point, while Gravatar is totally free to use and simple to integrate.

Unfortunately, the honeymoon period with Gravatar didn't last long. Don't get me wrong; Gravatar is an awesome service and we still plan to support it. However, to my surprise, most Kicklet users either don't have a gravatar (and didn't create one on signup), or choose not to tie it to Kicklet. I totally understand not wanting to create one just for Kicklet though. Asking a user to sign up for two services at once is asking a lot. In fact, at the time of writing this, over 2/3 of Kicklet users have no gravatar associated with their account, and therefore have no profile picture (other than the default one we chose to use in this case). This results in something that looks a bit like the following:

Default gray profile pictures

This is a user experience issue. The sea of gray default profile pictures is pretty unappealing and can give the impression that other users aren't necessarily passionate about completing their profile. Worse yet, they could be fake! This is probably not true, but the user's perception matters, so let's see what we can do to improve this.

Gravatar actually provides a few options to alleviate this issue. They have a few options that will automatically return images generated from the data you pass to them, so every user can have a different profile picture whether they have a gravatar or not. Here are a couple of the options they support:


Retro icons:

While these are kind of neat, we really liked the cleaner feel of the regular default silhouette-type profile picture. Additionally, they don't work as well when the image is rounded off completely into a circle. After some playing around, we felt the basic default profile picture could be improved with just some added on a user-by-user basis. We had a few goals in achieving this:

  • Preferably, the image would still be served up from another "free" source to improve...


Free your ideas September 29th, 2015

This is the first of hopefully many blog posts for Kicklet. Good product blogs are hard. Most are vehicles for fluff about how great the product is or how awesome the company building it is. At their core, they’re essentially hollow marketing tools. We're going to do our best to keep the fluff to a minimum and give readers something useful. This brings me to our first topic: ideas.

I've been meeting with a number of developers and entrepreneurs lately and many share the fear that someone is going to steal their “million-dollar” idea or project they're working on. Please don't do this. You're only hurting yourself. Free yourself of secrecy and harmful NDAs and let me share why I think you’re better off letting others in on your plan to join the three comma club.

Before I go any further, let me clarify that when I use the term “product” in this post I’m not just referring to things created for sale, but to all projects that have a clear creation process, whether or not they're ever sold. Products in this sense can refer to anything from mobile apps to games (videogames, card games, or board games even), business applications, social networks, books, movies, or even physical goods.

To start, I’d like to share the 3 most common excuses I hear, and why they’re nothing to worry about:

Excuse #1: Someone could steal our idea.

You're right. Someone could steal your idea. Worrying about it is a bit silly though. Here's why we think so.

  • If it's a good idea, there's a good chance that several other people are already working on it. Talking to others can help you discover your competition (I've personally had this happen).
  • If it's a great idea, you probably reached it because you have some expertise on the subject. If you're trying to create a successful product, you should be the best person for the job, after all. If you are the most qualified creator, your version will be better than anyone else's, so making others aware of it won't hurt you. If they copy you, they'll always be one step behind. If you're not the best person to create it, then you probably won't create the best version of it and it will likely result in a failed product anyway. If it's something that lots of people could do, refer to the first bullet point.
  • Most people with the drive and entrepreneurial spirit to build something are generally working on it already. It's usually something they believe in too. It's unlikely these people are going to drop whatever they've been passionately working on just to steal your idea.
  • If your great idea is so simple that someone could copy it tomorrow, they're going to do it as soon as it hits the market anyway. Build it today, and then talk about it.

What about the Winkelvoss twins? Sigh... Well, they did make something like $65 million in their Facebook settlement if that's any consolation (it should be). Take that $65 million you earn in your...