Something I've struggled with in the past is looking back on the previous year and wondering "what did I even get done?" and "did I really make the best of my time?"
It's easy to stress about the things you didn't get done, and even easier to forget about the things you did, so this year I've decided to start a tradition of capturing it all in one place to avoid being so dismissive of my own accomplishments.
The biggest personal change of the year was moving out of the first house I bought 10 years ago. I bought that house before I met my wife, so even though we lived there together for three years, it was great to be able to buy a new house together that was really ours instead of mine.
We bought a much bigger, much newer house (only a year old) but in the same neighborhood, so it was an easy move and nothing changed in terms of the amenities we're familiar with or being close to friends and family.
We got to move in just in time for my daughter's first birthday and throw her a big party which was a lot of fun.
The housing market has gone up a ton since I bought my first house in this neighborhood, so I was really hesitant about moving at first. We had a crazy low mortgage compared to anyone buying in our neighborhood now, why give that up and get ourselves into something a lot more expensive when it felt like we had such a huge advantage?
But after being in the new place for about five months now, I'm glad we did it. It's our dream home and we'll probably never move again, so if we were ever going to move, I'm glad we did it now before things got even more expensive.
2018 was the best year yet for my book/course business, and I was able to wrap up three projects.
Although Test-Driven Laravel was initially released in early access in November 2016 (!), I didn't publish the final lesson until January 2018.
Getting this done was a huge weight off my shoulders after grinding through lesson after lesson for all of 2017.
The take-away for me is that pre-selling is not for me. I am reliably way too optimistic and ambitious with every new project I start, and by selling early access to the course, I made it impossible to change the scope without letting people down.
I'm really proud of how it all turned out but man, it was a brutal process.
Advanced Vue Component Design
Learning my lesson from Test-Driven Laravel, I brought Advanced Vue Component Design from idea to launch in less than two months, releasing it on May 9th.
Cranking the whole thing out in such a condensed time frame meant that my energy and motivation was high the entire time, and I didn't burn myself out like I did with the TDD course. It did incredibly well, and I think the final product is awesome.
In the summer, I partnered with my good friend Steve Schoger to create Refactoring UI — a resource for developers who want their projects to look awesome but don't have access to a talented designer.
Writing the book and working on the additional resources was more or less my full-time job from July through to launching it in December. I did all of the writing, but the content is so image-heavy that Steve definitely still shouldered more of the work.
This was a really huge project and we were both pretty toast by the end of it. I don't think we would've done anything differently in hindsight, but I can say that neither of us would ever want to take on something bigger than this in the future — it was right at our limit for energy and motivation for sure.
The launch was the best I've ever had, selling over 6000 copies in the first two weeks.
Realistically I don't see how I'm ever going to beat this year without trying to scale the business in ways that just don't interest me, but that's okay. The business earned way more than enough, and as long as it does better than enough next year, that will be a success in my books.
This year I gave talks at five conferences in three countries.
Laracon Online 2018: Advanced Vue Component Design
In February I gave a talk at Laracon Online about building renderless UI components with Vue. The video isn't available yet publicly, but a few weeks after the conference I put together a massive blog post covering all of the same content.
MicoConf 2018 Starter Edition: Nailing Your First Launch
In May I spoke at MicroConf about my approach to successfully launching products like Refactoring to Collections and Test-Driven Laravel.
This was cool for me because it was the first time I've ever given a talk that wasn't about writing code. You can check out a video and a great summary of the talk over at Christian Genco's MicroConf Recap site.
Laracon US 2018: Resisting Complexity
In July I gave a talk at Laracon US in Chicago about some of the mistakes I think people make with object oriented programming, and how thinking about methods in a different way can lead to simpler code.
You can check out the video on my YouTube channel.
Laracon AU 2018: Resisting Complexity
In October, I made the trek with my wife and 14 month old daughter all the way to Australia to give my "Resisting Complexity" talk at the inaugural Laracon AU.
A 22 hour flight with a baby is just as bad as it sounds, and dealing with a jet-lagged baby is even worse. Never do this 😅
Video of the talk is available on the Laracon AU YouTube channel.
VueConf TO: Advanced Vue Component Design
In November I spoke at VueConf TO in Toronto, which is only about an hour away from where I live.
Although the talk had the same title as the one I gave at Laracon Online in February, it was a different talk and focused on using scoped slots to build what I've been calling "data provider components" to do things like simulate element queries, inform a component if it has entered the viewport, or provide a component with data from an external resource.
There's no video of this talk (yet?) but you can check out the source code for the demos on GitHub.
I do enjoy speaking and I think all of these talks went really well, but overall this is more speaking than I'd like to do in 2019. With at least a few days spent at each conference, plus travel time, plus preparation time, doing five talks easily chewed up close to two months of the year, which is a ton of time.
I've already got two speaking events scheduled for 2019, but I'll probably only do three in total.
In 2018 I only published two articles: Renderless Components in Vue.js and 7 Practical Tips for Cheating at Design.
On the surface this feels disappointing, but both of these posts were actually a huge investment and ended up being incredibly popular. The design tips article is actually the fifth most popular Medium story of all time, at least at the time of this post.
Overall I'm happy with this — I'd rather write a couple of really solid in-depth posts per year than put out lower quality articles every week or two.
I did also write an entire book this year, so I should probably give myself some credit for that, too.
Something I've really enjoyed over the last few years and have tried to do more regularly is live coding on YouTube. I'm pretty good at speaking while I'm coding, so for me it's a great way to create content without doing a ton of preparation or post-production.
This year I did 18 live streams in total, falling into three main categories:
Building Components with Vue.js
In March I live streamed myself building a ConvertKit opt-in form with Vue, and in April I built a drag-and-drop sorting component that wrapped up Shopify's Draggable library.
Building Interfaces with Tailwind CSS
People seem to really love watching me build different things with Tailwind, so I tried to do a few of those year, including:
I'd like to keep doing more of these in 2019.
In June I had this crazy idea to try and build an entire MVP in one day, and live stream the entire thing.
I didn't get it all done on the first day, and ended up taking two full days to get it to where I wanted. I split it up into 12 sessions which are all available to rewatch on YouTube.
I'm hoping to do more live streaming in 2019, and hopefully on a more regular schedule like my podcast.
I published 25 new Full Stack Radio episodes in 2018, and cracked 2 million total downloads.
The three most popular episodes were:
- 81: Evan You - Advanced Vue Component Design (32,160 downloads)
- 80: Tom Schlick - Building Multitenant Applications (30,891 downloads)
- 83: DHH - Stimulus in Practice + On Writing Software Well (29,214 downloads)
The show is consistently doing over 80,000 downloads per month now which is amazing, and I think a testament to slow and steady consistency. I've been doing it for four years now, and even though it's not my number one priority by any means, I manage to get a new episode out every two weeks and the audience continues to grow.
We published the first Tailwind CSS release on Oct 31, 2017, so 2018 was the first full year that I've developed and maintained it.
I put out 17 releases in 2018, and the framework has now been installed 670,000 times. We've also got over 8,000 stars on GitHub, over 10,000 followers on Twitter, and over 1,000 members in Slack now!
The biggest new Tailwind feature in 2018 was definitely the plugin system, which makes it even easier to extend and customize the framework.
A ton of awesome Tailwind projects were shared with me throughout the year, but two of my favorites that really make me feel like we've made it are the new Algolia documentation site, and the new Laracasts redesign.
Plans for 2019
So it turns out I did a lot of stuff this year! Here are a couple of things I've got planned for next year:
Regular work journaling
Like I mentioned at the beginning of this post, something I have struggled with in the past is giving myself credit for the things I've done, and focusing too much on the things I still want to do.
To try and avoid that going forward, I'm planning to put together a short "week in review" post every week where I can write about what I'm working on and what I got done. I'm going to be posting them here on my website for everyone to read, in a dedicated section so they don't get mixed up with my more in-depth articles.
With any luck I'll have all of that ready to go for the first week of January.
Going full-time on Tailwind CSS
I think Tailwind has the potential to be the most impactful thing I do in the web development world, and I want to make the most of that opportunity.
So 2019 is going to be the year where I really double-down on it, and do everything I can think of to grow the user-base and make it the best tool it can possibly be, with the best ecosystem I can possibly create.
I have a ton to say about this but it's best left for its own post. Look for it in the next few days!
2019 is going to be awesome.