Around this time tomorrow (10AM EST), I'll be launching my first product as an indie hacker, CSS for JavaScript Devs (css-for-js.dev).

It has been one heck of a ride 😅. In this thread, I wanna share what the journey's been like ✨
In early 2020, I developed an RSI that made it impossible to use a keyboard/mouse. I spent months not using a computer at all, and then months training myself to code with dictation and an eye-tracker.

It's mostly better now, but this was a catalyst for my abrupt career change. A desk showing an iMac. There is no keyboard or mouse on the
I mention this because I think it's important framing: I'm not the type of person that would typically quit their secure, very-well-paid job as a staff engineer *during a pandemic* to pursue an unproven venture. But it felt urgent to me that I do this right now.
Early in 2020, I started writing a book, “Building an Effective Dev Portfolio”.

When I lost the ability to type, I switched to dictation. Dictating English is easier than dictating code, so I focused at first on finishing that book. It was “written” ~75% by voice.
Over the summer, I also read a few business books/podcasts. A common theme was to *build your mailing list*. Everyone stresses the importance of an email list.

I decided to give away my book to everyone who signs up.

This graph shows the # of subscribers over the past year: A line graph showing the # of subscribers over the past year
A few other things went super well during this period:

• I released a blog post that became my most-read post ever, ~125k hits (joshwcomeau.com/css/full-bleed/)

• I released “Operator Lookup”, a weekend project for JS operators, and it got widely circulated (joshwcomeau.com/operator-looku…) The same graph as the previous tweet, but this time with dif
I also tweaked the newsletter opt-in process. As you read articles on my blog, my 3D avatar pops out from the side. If you give him permission, he'll tell you about my newsletter.

This increased signups by ~50%, and I get way more love-mail than hate-mail about it.
In addition, I've also been publishing a new post every 2 weeks. Most posts don't blow up, but they all help build momentum!

For aspiring bloggers: my best advice is to set and keep a schedule. Consistency is so beneficial.
I started my blog because it was fun, and I liked sharing what I learned. Over this last year, I've started to see it a bit more strategically, as a vehicle to build an audience. I worried a bit that I would grow to enjoy it less, but that hasn't happened yet 🤞🏻
I spend maybe 10 hours a week on my blog. The rest of my time is spent building my course.

I had expected it to take 4 months. It turns out, it'll be more like a year 😅
The course is released tomorrow in “Early Access” — about 50% of the content is ready. I expect the full launch will happen in August or September.

Building a course is *freaking hard*.
My biggest mistake so far: not enough user testing.

I did a fair amount (~40 students so far), but it still feels like nowhere near enough. Feedback is so critical, and you really need a lot of it to be able to identify common trends, and separate them from personal preferences.
In terms of how it's felt: most mornings I wake up excited to get to work. I still vividly remember the frustration and powerlessness of WANTING to work, and not being able to.

It is a privilege to be able to type. I feel grateful and energized.
But, it's also *very stressful*. I've put a lot of eggs in this basket, I have a lot riding on it. I've burned through a substantial amount of my life savings in the past few months.
I'm worried that it won't sell. I'm worried that it'll sell TOO MUCH, and I won't be able to offer good customer support. I'm worried people will be disappointed, that it won't be what they expected. I feel confident in my work, but I also know it's impossible to please everybody
It takes most people *years* to become profitable with their first indie-hacking business. And I don't have years of savings 😅

But honestly, I haven't really thought of this as "starting a business" (even though it absolutely is).
Because I've been teaching for so long already (at Concordia University, through my blog), it feels like a natural extension of what I've already been doing. It's obviously risky, but I think it's the least-risky thing I could be doing.
I'm not really going about this in the smartest way, though.

Common wisdom dictates that it's best to start with a "quick win". Spend 40 hours on a mini-course and sell it for $20, to validate demand & get some income going.

I've probably spent 1000 hours on my course so far 😬
I'm building my own course platform from scratch. I could have saved *hundreds of hours* by using something like Teachable. But then the course wouldn't be as good.

Because I built my own platform, I can embed one-off widgets and mini-games. It's unlike any course that exists.
Long-term, I think this'll be to my advantage. But I almost definitely should have started with something smaller, to validate demand and see if I even enjoy creating courses 😅

Fortunately, demand seems strong, and I've discovered I quite like doing this kind of work ✨
My course will only be on sale for 1 week, starting tomorrow. After that week, I'm closing down orders so I can focus on delivering the promised content to the Early Access students.

Sales will reopen in the Summer or Fall, when the course is completed.
My goal is to sell 390 copies, which would equate to ~$50,000. This is a wildly ambitious target, given that it's my first-ever shot at selling my own content. But I think I've done enough of the "pre-work" throughout my career to make it plausible.

We'll see!
Thanks for reading this way-too-long thread 😅

I'll be flipping the switch around 10AM EST tomorrow morning. It would mean the world to me if you could help promote it 💖

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Josh W. Comeau

Josh W. Comeau Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @JoshWComeau

7 Mar
One of these numbers-in-circles is correctly centered. The other one *looks* correctly centered. 😅

Can you tell which is which?

Explanation in-thread 👇 Two blue circles sit side-b...
With “true” mathematical centering, you get the result on the left. This is what happens by default in HTML/CSS. It centers the number according to an invisible box.

If we shift it a few pixels to the right, its stem aligns with the Y axis, and it looks ever-so-slightly nicer 💖 The same two circles with t...
I wrote a blog post all about these sorts of small tweaks, “Chasing the Pixel-Perfect Dream“: joshwcomeau.com/css/pixel-perf…

It reminds me of a well-tended garden. Each plant that you prune has a negligible impact, but in aggregate, it makes a huge difference.
Read 5 tweets
3 Mar
In Summer 2020, I was trying to figure out what I wanted to teach. Maybe Gatsby, since I worked for the org? Maybe React, since I had been using AND teaching it for years? Maybe whimsical animations, since that's my whole jam?

I picked… CSS.

Explanation in-thread 👇🏻
First, some brief context: In 2020, I developed an RSI that left me unable to type or use a mouse. It's mostly better now, but it was an eye-opening experience, and one that convinced me that it was time to do something I had wanted to do for years: focus exclusively on teaching.
For a few years I've been teaching part-time at a local coding bootcamp. It's super fulfilling work, because I can see the impact I have on students looking to start a new career.

Impact is important to me. I wanted to teach something that would meaningfully affect people!
Read 9 tweets
5 Feb
Yesterday in the Q&A portion of my conf talk, I got a question asking what I thought about CSS frameworks like Bootstrap.

My answer: I do not suggest using them. Nor do I suggest using fully-styled component libraries like Material UI.

Here’s why 👇🏻
For Christmas this year, I was gifted a Lego NES kit. Was super fun.

Here’s a question, though: what if I had been given all the blocks, but no instructions? What if I wasn’t even shown the final product?

How good would my NES look, do you think? A Nintendo Entertainment System made out of legos
A design is more than the sum of its parts. I can take a bunch of really-nicely-designed components and still wind up with a poorly-designed product.

It’s been said that only Google can produce nice-looking Material Design apps, since their designers understand how to use it.
Read 13 tweets
1 Feb
Today I looked into the performance of different layout modes in CSS. I was curious if it takes the browser longer to lay out elements in a grid vs. Flexbox vs. flow layout.

TL:DR; they're all plenty fast ⚡️ but there are small differences.

Info in thread 👇🏻
For the benchmark, I created an app that renders 1000 random items, with a couple HTML tags in each one. I trigger a re-render, and measure how long it takes to recalculate layout.

Specifically looking for the time spent in this step: Close-up screenshot of the ...
1. Regular flow layout. No CSS on the container.

Average layout recalc time: 22.3ms

I imagine this is the lowest it could be, since each element fills the available width. No "interplay" between children.

This will be our baseline! A list of names stacked ver...
Read 16 tweets
12 Jan
🌠 Keep navigation centered in a lopsided container (logo on one side, nothing on the other) with Flexbox!

“Asymmetrical centering” like this has befuddled me for a long time, but I've cracked the code: `flex-basis` is key 🔓🗝

Demo + Code: codepen.io/joshwcomeau/pe…
When `flex-basis` is set to `0`, it distributes ALL space, not just empty space.

So: we put columns on either side of the nav, make them greedy with `flex-grow`, and distribute the space with `flex-basis`:

.column {
flex-grow: 1;
flex-basis: 0;
}

(Image credit: w3 dot org) A diagram showing how flex-basis: 0 distributes all space re
(You can also use `flex: 1` instead, but that shorthand obfuscates what's really going on here!)

Another nifty trick: The nav items "fan out" as the window gets larger, thanks to viewport-based gap sizes:

nav {
display: flex;
gap: max(calc(10vw - 60px), 16px);
} Two side-by-side screenshots of a large window and a small o
Read 6 tweets
6 Jan
Woaaah — An AI that can generate delightful illustrations from text captions.

This will be GOLD for folks who want custom illustrations to visually explain a concept. The content creator in me is *pumped*.

openai.com/blog/dall-e
Heard from some folks that are concerned about the effect it'll have on artists. Wrestling with this a bit.

In my view, it's similar to the effect that Squarespace had on web developers. There's still plenty of demand for us, but it changed a bit.
Essentially things shift upwards a bit. It's less common to get paid $500 to build a website for your local bakery, but still plenty of opportunities building dynamic products for businesses with big budgets.
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!