How I’m getting my brain to focus again

It’s like someone put my mind through a paper shredder.

I feel frayed. Fragmented.

At first, it was just around the edges.

Now it’s all the time.


How to write lukewarm content no one will care about

Content marketing is interesting when it actually helps you solve a problem you are dealing with. This scorecard is a way to keep this idea in sharp focus when you produce content to promote something.


A Field Guide to Twitter

A guide to bringing in paying users from Twitter for technical founders who are uncomfortable with the idea of self-promotion.

Your software product is finally finished and you’re ready to start marketing.

The horror slowly begins to set in and you realize this whole “marketing” thing might be a bit more complicated than you’d originally imagined.


How to be useful to the internet

Everyone tells founders to spend more time on their content marketing.

But what exactly do you do with that time?

One way to approach it is to take a long term view of how you can be useful to the internet.

You want to start by finding 5-10 online communities for the kind of people who have the problem your product solves.

Next, commit to spending at least half an hour a day listening for explicit problems and struggles in one or more of your spaces each day.

30 min/weekday is a hard minimum.

I started tracking this on the 1st of Nov. Began with 15 min a day. Now I’m more than 16 hours in.

It’s easy to get distracted doing this so I set up RescueTime to record my browser activity and connected it to a Beeminder goal that takes money out of my bank account if I fail to meet my hard minimum each day. 

This is a bit intense. You do you.

When I find an explicit question or struggle, I analyze the discussion in the same way I handle a customer interview. 

Basically you copy and paste the question and then record as much context as you can. I’ll link to a post in the footer that provides a deeper explanation on how to do this.

Then spend ~5 hours working on a solution to the most important problem you’ve found. 

I’m talking about responding to actual questions with real solutions. 

When I don’t know something, I’ll read a book, do a course or reach out experts for help. 

The idea is to become incredibly useful around a certain problem for a specific group of people. 

When someone decides to deal with the problem you’ve committed to, you show up with valuable, succinct solutions at multiple points along their journey. 

This will play out over days or weeks. First they read one of your responses to a question in a community. Two days later a post you wrote gets referenced in a YouTube video. Then they bump into a super helpful blog post you wrote the next week.

Producing content in response to actual questions prevents you from writing about what you think is interesting and keeps you focused on what is important. 

Build up a portfolio of valuable contributions and you gradually become unavoidable in the problem space.

So, we’re just talking about becoming an expert then?

Yup. Exactly. 

Reading the cannon, summarizing the ideas, getting to know the players, and making a concerted effort to steward new people in the space towards this knowledge is what content marketing is all about.

Here is the exact protocol I’ve laid out for myself: 

The big swings come from repurposing ideas that resonate and pitching them to other helpful contributors in the same space. You’re offering them you best battle-tested content for guest posts and podcast interview topics.

You can also group and repurpose your best ideas into reusable, long-form SEO-focused blog posts. The beauty of this approach is that you can do all of this whether of not you can find keyword opportunities to rank for. 

Making valuable contributions and building meaningful connections in a problem space is domain authority. Whatever algorithm Moz and Google have cooked up is just a proxy for this stuff. This is what the machines are trying to measure.

And if none of it works, you’ll still have helped the shit out of a bunch of people and built some wicked relationships with a group of interesting people who are committed to solving problems you care about.

Now go, find your people, pay attention, listen to what they’re struggling with, and make valuable contributions to the problem space one person at a time.

These posts are meant to be conversational. Let me know what you think. Replies to this email go straight to my inbox.

Related links and further reading

I built it, now how do I get them to come?

Your product is finally ready. You’re ready to start marketing and push your product out there.

Once you get started, the horror sets in and you realize this whole “marketing” thing might be a bit more complicated than you’d originally planned.
I’ve been here. It’s not a nice place to be. 


Reasons why we think the problem exists

Let’s say we’ve done our homework and we have a clear problem we want to focus on in our product. What does the process of designing a solution look like?


Strange is just better

General Electric has a facility in North Carolina that builds, among other things, airplane engines. The teams at the Durham facility build their engines from scratch. The wicked thing is there’s no middle management. This is how they get stuff done 👇


Defining the boundaries of a problem

One thing I’ve learned from building products is that customers are terrible at telling you what to build. You speak to them. They start pitching your ideas for a new feature.  Something that does X would be super useful, please build it.


Customers sign up and don’t use the product

Justin Jackson posted a great thread around the idea that people’s motivation to use something is outside of our control. His point is that there isn’t much you can do within a product to get people to use it on a regular basis.

He’s not saying that you shouldn’t focus on great UX or improving your onboarding experience, just that none of it’s going to matter if the underlying problem is around motivation.

A product cannot motivate people to use it.

A company called Marketing Experiments made the same point with this little heuristic:

Conversion = 4 motivation + 3 value prop + 2 (incentive - friction) - 2 anxiety

The single biggest factor in this formula is motivation. It’s more important than having a great value proposition, an incentive, being easy to use, or clearing up any reservations around a product.

Basically, it doesn’t matter how good the food tastes if no one’s hungry.

I agree with the importance of a hungry crowd. I also disagree with the idea that there is nothing you can do in a product to motivate people.

There’s a whole industry called product development built on the premise that design and messaging can move people to use something. Also, anyone who’s seen ‘The Social Dilemma’ on Netflix would probably disagree with the hungry crowd hypothesis. If products can’t motivate people then there would be no dilemma.

So, if products can motivate people then how exactly does that work?

Well, the first step is to establish a baseline. How many people use the product on a regular basis right now? Without a clear reference point, it’s hard to know if more people are using the product or not.

Establishing a baseline#

Measuring how many people use your product should be straight forward but it gets a bit messy when you start trying to define what “usage” means.

The obvious thing to do would be to measure any type of usage. If someone logs in to close their account down or update their password should that count as usage? Or are we just talking about meaningful usage? Meaningful to the business or meaningful to the user?

Somewhere down this rabbit hole, you have to arrive at a core action connected to the value you deliver to your users. It will never be a perfect measure of the value you provide but that shouldn’t stop you from trying to quantify it.

Let’s keep this simple. If you’re a food delivery app let’s say the core action is ordering a meal. I know, what if the meal was ordered but never delivered? What if it was delivered but they didn’t enjoy it? If we just measure orders with 5-star reviews, does not rating it means they didn’t enjoy it? Rabbit hole 🐇 We need to keep it simple.

To establish a baseline for how many people use your product you measure out the total number of people that signed up in a day (or a week or a month). Then you measure how many people did your core action one month later (or whatever time frame makes sense for your product). You average these numbers out for the past year and plot them on a curve like so…

Screenshot 2021-10-03 at 3.11.53 PM.png

This is called a retention curve and it’s the industry standard for measuring how regularly people use your product over time.

In the graph above, on average, only 33% of the people who sign up are still using the product 3 months later.

The shape of this curve gives you a sense of the overall health of a product. If the curve drops to the floor it means that everyone who signs up eventually stops using your product. The flatter the curve the healthier the product. A flat curve means that a certain percentage of your users use your product on a regular basis. This is more traditionally called product-market fit.

Screenshot 2021-04-19 at 4.26.57 PM.png

Right, now we have a baseline, how do we improve it?

Figuring out the job-to-be-done#

The next step is to figure out what people are trying to do with your product. Sure, you might have a food delivery app, but what drives people to order food at home on an app? Is this just people who are too lazy to cook? Do people mostly use it as a catering service when they’re planning a party? Is it more of a family treat when people get bored of home food? Depending on the scale of your business, it’s probably going to be all of these to different degrees. It’s important to figure out what the main use cases are for two reasons:

  1. If you know why someone started using your app you can better fit the experience to what they’re trying to achieve.
  2. When someone has developed a habit around one use case you know what other use cases to gradually introduce them to.

Understanding why people use something is a combination of looking at usage data and uncovering behavior patterns, as well as interviewing people one-on-one and understanding why they started using the product.

Finding the right level of abstraction when dealing with motivational research can be tricky. On the surface, people order food because they are hungry. If you keep digging then everything we do is a means toward deeper spiritual or emotional fulfillment. Somewhere in the middle are jobs that people are hiring your product to do. Knowing what they want allows you to intentionally design your product to accomplish that job.

Better is a relative term. You can’t improve something when you don’t know what better means. Better for the home party crew might mean a wider range of options. More options might just make things confusing for college kids who just need a quick delivery. Understanding what people value is a prerequisite to making something more valuable.

Now that you know why people order food, what do you do with that information?

Funnels, Features, Notifications & Segmentation#

If you have a core action defined and you know what people are trying to do then you can just plot out all the steps they have to take to do the core action and see where people drop off.

You build a funnel and see where the biggest dropoffs are. if people have to do 5 things before they can order some food (like sign up and add their credit and so on) then you can measure where most people run into problems.

You come up with ideas about why people are dropping off at a particular step. Conduct a bunch of research and interview people if you have the time and resources. Then test out a bunch of solutions. If you have the infrastructure to AB test product changes then you can see what works and what doesn’t and iteratively fix product problems in this way.

You start with low-hanging fruit like a feature in the product that is not working or working but really slowly. You can progress to better messaging and guidance in the product. Sometimes this means design tweaks or better wording around things, other times you have in-app messages and notifications to help people along or you reinforce things with emails and reminders. Eventually, you hit a ceiling with this iterative approach, and fixing things just leads to diminishing returns.

This is when you reach for your jobs to be done and ask yourself if there is a better way to help people do the thing they are coming to your product to do. This might mean completely redesigning a part of your product or investing in a whole new feature set to help them get some aspect of a job done. Eventually, you hit another ceiling, and there are only so many features you can build that will appeal to everyone in your app.

This is when you start to look at the different types of jobs people are trying to do, or the different types of people that are trying to do a job, and you start to build more custom solutions for more focused subsets of users. Segmenting users in this way means that some users experience feature sets or emails campaigns that other users don’t even know exist. Product upgrades can no longer please everyone but certain tweaks make the product much better for some people. Who you focus on and how you prioritize your resources become the foundation of your specific product’s strategy.

How far is too far?#

Whether you’re smoothing edges and filing down points of friction or building new features, at some point you can cross an ethical line. You might make a product easier to use than it needs to be. When you start out you’re just using basic game mechanics to make things clear and engaging. You send out notifications to remind people to use something at just the right time. You make the point of a certain feature really clear. You use a beautiful, memorable design to show how something is done. Then you reinforce the behavior and you congratulate them when they do it right. Then you show people how many of their friends are doing the same thing. You start to vary the reward so people don’t always know what to expect.

At some point along the way, we’ve moved from being helpful, clear, and instructional to manipulative and deceptive. It’s a spectrum and the industry as a whole is too young to have arrived at a clear consensus on what’s ok and what’s pushing the line. Harry Brignull’s work on Dark Patterns is a prime example of the kind of conversations we need to be having as a product design community.

Use case transitions#

The problem with the hungry crowd hypothesis is that it doesn’t account for junk food. If food can’t make you hungry then why do cinemas pour insane amounts of salt into popcorn. Perhaps it’s so that you need that refreshing beverage to quench your thirst? A beverage so sweet that you just need a little more popcorn…and round and round we go.

Dark patterns and dirty little tricks aside, products can educate people. Sure, you signed up for a food delivery app because you’re too lazy to cook, but maybe you’d be interested in a 30 day cooking challenge where we give you a shopping list for the week and we show you how to cook a meal in 20 minutes each day. Products can transition from one initial problem to solving a much larger, or just different problem as people get further into the product experience.

A less dramatic example would be the fact that most of us started using Uber to get to the airport. Over time they managed to transition us to using Uber to get around town, some people even use ridesharing to commute every day. Starting with one problem and then gradually educating and helping people solve related problems is one example of an ethically defensible way products can motivate people to continue using them.

One could argue that the motivation to solve the related problem had to exist in the first place. Uber can’t make you want to commute, you’d only consider the use case if it was a problem you already wanted to deal with. But now we’re getting into semantics. At this point, we need a more precise definition of what ‘motivation’ and ‘intrinsic’ mean.

I do agree with the idea that the motivation to use something is largely outside of our control. However, motivation also comes from competency. If you help someone understand how to do something, and you help them get really good at it they become motivated. This kind of work is subtle and comes into clearer focus when you’re dealing with large numbers of users. On a more practical level, if I had to choose between working with the best Chef in the world or the guarantee of a hungry crowd everyday, I’d agree with Jackson and pick the hungry crowd every time.

Google f@$%*#! tag manager

Google tag manager’s job is to track things that happen in your application and send them to other applications, like Google Analytics, for analysis. You could use Google analytics on its own. Tag manager becomes useful when you also want to send the same information to other tools for analysis. Instead of tracking the same events with multiple tools, you track them once with tag manager and that send them to all your tools.

Let’ say you have a software product set up with Google Analytics, then you also have some sort of email service provider and you want to track whether the people who read your email use certain features in the app, then you have a screen recorder like Hotjat and maybe product analytics suite like Mixpanel. Each of these tools need to know about important events, like when someone signups or becomes a paid user. Track these events once with Tag manager and you can send them to as many services as you want.

I have tried to avoid using Google tag manager for as long as I can. In the past, I’ve used segment for this problem because it is relatively easy to start using. However, Segment costs $100 a month and that’s overkill when you’re working on a small project.

Google Tag Manager is free, but there’s a bit of a learning curve. Until now we’ve just relied on the other free alternative, which is instrumenting every service on its own. We don’t have a lot of services so it has been manageable.

The problem is we began running Google Ads. In order to track whether or not the ads are working events, you have to use Google tag manager. As far as I understand there is no other option.

Hopefully, by the end of this article, you will have a mental model of how Google Tag Manager works if you ever need to start using it for your project.


When you start using Tag manager you have to figure out your tags and your triggers.

Tags are what connects you to your other services. You need to set up at least one tag for each service you connect so that Tag Manager has a way of sending it data. If you’re sending data to Google Analytics and Hotjar you will have a tag for Google Analytics and Hotjar.

If you are used to using Segment, then your tags are much like your destinations. Confusingly, unlike Segment where you have a single destination for a service, in Tag Manager, a single destination can have multiple tags.

For example, Google Analytics has one tag for pageviews and another tag for custom events.

Screenshot 2021-09-26 at 11.00.44 AM.png

It’s unclear how the boundaries are being drawn here. For example, you don’t need a separate tag for logging in and logging out. Those are both events, so you can just have an event tag in Google Analytics and send in unique names for each event. You do need a separate tag for pageview though. Apparently, pageviews are a different kind of thing and you need a dedicated tag just to track them. So tags are kind of like destinations but they can be more granular, and the basis of this granularity is a bit unclear.


Next, you have triggers. A trigger listens for a specific type of activity in your app.

You can pipe hundreds of events into Tag Manager but you probably only care about a handful of them. You set up triggers for the events you care about so that they get passed onto the necessary tags and you can safely ignore all the other activity in your app.

Every time someone does something in your application that you care about, say log in or log out, a dedicated trigger will send the event to its connected tags.

Separating tags from triggers makes sense because you might want to send the same event to multiple destinations. When someone logs in I usually want to know about that in Google Analytics, Mixpanel, and Instead of setting up listeners on every tag, I set up a single login trigger and then connect it to each of the tags that need to know about that event.

Screenshot 2021-09-26 at 11.00.49 AM.png

Another reason why I think triggers make sense is that sometimes in an app you have a central juncture for events. Like, say a redux dispatcher. Rather than hooking up 30 separate triggers in different places around your app, you can hook into your redux middleware once and send all the events to Tag Manager. You don’t want to forwards hundreds of irrelevant events to Google Analytics and clog everything up with meaningless noise so you just set up triggers around the events you care about. Being able to separate the wheat from the chaff makes collecting events really easy on projects that have this kind of event hub architecture.


Let’s say we have a trigger setup on a signup event. This connects to some tags and now a handful of services know when someone signup in your app.

The problem is that we also want to send these services some details about who signed up and what plan they were on.

You’d think we can just pass this data into the little google tag event tracker on your app and we’d be done with it. But No.

You have to the data pass into the tracker, but then it gets dumped into something called a data layer.

This is confusing because the data layer is just a temporary clearinghouse. The data here doesn’t automatically get passed onto a tag. If you want to pass information from the data layer to an event you’re sending off then you have to reconfigure the tag to include references to the information you want to use in the data later.

Frustratingly, you also have to do this for every tag you want to send the data to.

You’d think that you could just update this in the trigger, and the change would propagate to all connected tags, but no, you have to recalibrate every one of your tags each time you want to send additional data down the pipe to the connected service.

This took me a little while to figure out but once you understand this, everything makes much more sense.

Preview mode#

You also have preview mode so that you can debug this entire mess when you’re setting things up. Instead of having a browser extension like you’d expect, they have a dedicated page that acts much like a console debugger. I’m guessing do it this way to make it easier to debug tags on cross-platform applications. Not sure, but it’s still counter-intuitive if you’re just working on the web.

Tags, triggers, data, and the ability to set everything up in preview mode is pretty much all you need to know to gets started with Google Tag Manager.

Here’s a full walkthrough of what you need to do to track an event in your app and send it to a third-party service like Google Analytics or Mixpanel.

I’m going to assume you have a Tag Manager account and it’s set up and you’ve added the snippet to your product. This is something you just do once so I won’t cover it here. Configuring pageviews in a single-page app is another trap you have to watch out for so I’ll leave a link on what t pay attention to in the footer. Assuming you have everything set up, here’s what to do every time you want to start tracking a new event.

  1. Instrument the event in the app with the gtag function on the window object. This comes from the snippet you added to your site when you set Tag Manager up.
  2. Once the event is instrumented in the source code then start your app up locally and check that the event, and any associated data, is showing up in the preview mode debugger.
  3. Now create a trigger to listen for the event and connect the trigger to each of the tags you want to send the event to.
  4. If you are sending any additional data with the event then make sure you reconfigure each of your tags to reference the associated data in the data layer.

…and that’s pretty much it.

Wait, there’s also server-side tag management. This one is a bit of a rabbit hole, so I’ll try and clear it up so you’re not confused when you bump into it online.

So far everything we have talked about is in the context of an event being tracked on the client. This is not ideal because it means that anyone with an ad blocker can dismantle your entire analytics operation.

I’m 💯 for privacy and I use brave myself, but there’s a difference between 3rd tracking cookies and being able to track your own user data. You’re signing up to our platform, we know you are a user, it’s the information we use to give you the service you signed up for. We use analytics to understand which features are popular and where things are broken. Not being able to reliably send this data directly from our back-end server to our analysis tool is a huge pain.

Server-side tracking allows you to send events directly to Tag Manager via an HTTP request. However, it also means setting up up a whole new dedicated tracking server in Google Cloud, paying for it, and maintaining it. Costs saving was one of the reasons that tag manager was more appealing than Segment in the first place, so now we’re kind of going full circle. However, doing this means that we don’t have to load a bunch of snippets on our website and that will help speed things up, so it’s something I want to look into in the future.