Tech I'm learning in 2023
Guys I'm gonna be honest, I think I'm at the beginning of becoming an "old man" in tech.
What I mean by that, is that I've become more opinionated and resistant to change than I used to be in the past.
Two years ago, when I built things my opinions on that tech stack changed every 2 months. One day I'd like CSS-modules and the next day I'd ditch it for styled-components. But today, my decision making regarding tech has remained pretty consistent.
I like to think this is because I've found a local-maxima where my productivity is peaked. But am I truly at the peak?
And this is hard for me to grasp. Is the speed of innovation in the tech world slowing down? Is my personal growth slowing down? Or is this just a natural thing that happens as people become mature in an industry?
I'd like to think it's the third thing.
I remember 4 years ago when I was first learning React. I picked up basic React quickly, but quickly ran up against the question: What should I use to do state management?
And there's a lot of options out there. So, since they were all new to me I tried them all. And my learning path over the next couple months went something like this:
Each time, I ripped out the old framework, plugged in the new one and evaluated how I liked it.
But today, this process would look much different. See, I have more general tech background knowledge. I know, for example, that I can't move fast enough with Redux. It doesn't matter how popular the framework is.
Additionally, back then I was evaluating every piece of tech against what I knew. And since I knew very few alternatives, every piece of tech seemed great.
But, today? I already have alternatives that I really love. So to convince me to ditch my current setup, you have to really sell me.
That doesn't mean I have no pain points. I have many. But, if you fix a pain point and introduce 5 more, that's a net loss.
With the preamble out of the way, let's dive into things. I'm gonna break down this article into the 4 main components of software and describe what I'm using today and what I want to try in 2023.
Frontend
At this point, I feel my front end stack is pretty solid. I move quickly with it, and now have years of boilerplate and bug-squashing experience to push me even faster.
Next.js – 5⭐ – Absolutely no plans to stop using this in 2023 and beyond. Amazing! And they've got such a compelling future roadmap.
TailwindCSS – 5⭐ – I'm a massive fan of Tailwind. I've probably gotten 100 hours of my life back thanks to Tailwind.
Chakra UI – 5⭐ – Some might argue a UI Library with Tailwind is redundant. And I tend to agree, however... I've wasted so much time designing the perfect interface for a button component. My conclusion?
Designing reusable UI components is damn challenging. Maybe you build a button, but what if you want that button to be representable with an <a>
tag? Or what if you want an isLoading
prop to show a spinner over the button? What if you want to change the spinner?
Every time to make an API change you possible break 100's of areas in your app where this reusable component is used. As a result, I want to leave this job up to the professionals.
And Chakra, in contrast to the 10 other UI libraries I've tried, absolutely crushes it with their API. Plus, their components look great and need no aftermarket editing to fit my design goals so that's a win-win.
React-Hook-Form – 4⭐ – Honestly, RHF is perfect but I spend a lot of time managing forms. It makes me wonder, is there a better solution?
Apollo Client – 4⭐ – Again, perfect for what it is. But, still data fetching + updating is very manual and I bet it can be automated.
Graphql Code Generator – 4⭐ – Solid, but debugging is a pain and I'd like to see this functionality integrated directly into Next.js.
Unstated-Next – 5⭐ – This is my state management solution. It's essentially just React Context with a cleaner API. I still love it!
Luxon – 3⭐ – Switched from moment.js and Luxon works well. Is it the best? Idk. Is it good enough? Absolutely.
React-Icons – 5⭐ – Absolutely. Essential. Why limit yourself to one icon library? This is a no-brainer and my only wish is that there was more icon libraries added to it.
Backend
GraphQL – 5⭐ – A good CRUD GraphQL is basically the #1 time-saver I have when building applications. It gives type-safety from backend to frontend and makes fetching data so much easier.
Hasura – 5⭐ – I LOVE Hasura. Still. My only gripe is that their UI is missing 20 or so quality-of-life features. But, Hasura more than makes up for it with the time savings.
PostgreSQL – 5⭐ – I'm not very opinionated on which relational database I use, but I do love Postgres. I don't think I'll ever go back to a NoSQL database like MongoDB or Firebase. My brain things in tables. And that fits relational data.
Serverless.com Framework – 3⭐ – Serverless is really great. And their web UI is very intuitive for getting insights on your API's health. I do wonder though if Serverless is overkill. I think a simple express server would fit my needs just as well and be easier to manage. Might make a switch in 2023.
AWS Lambda – 3⭐ – I deploy my Serverless code to AWS Lambda. It's definitely the best of the given options, but again I think I'd just prefer an express server in a docker container.
Infrastructure
TurboRepo – 4⭐ – This has been a new addition at the end of 2022. I'm building something greenfield and I've been using TurboRepo to manage my monorepo. It's been great!
I have three shared packages: shared-modules
, config
, and types
and I lift data into these if I use them across multiple parts of my codebase. Then, for apps I have a dashboard
, api
and hasura
app.
With npm run dev
it will build the packages, then build each app in the correct order including start a docker server with the database. And, like magic, everything just works.
I'll admit, it's still buggy. If I rename the wrong directory TurboRepo will occasionally fail with 0 errors. Why? No idea. I also find it messy sometimes to see all the junk in the terminal from all my apps at once, but overall I'm optimistic it will improve.
Docker – 5⭐ – I'd love to have everything running in docker containers in the future. It makes things feel much cleaner and gives me more confidence when the time comes to deploy my code. Dockerizing things will be an ongoing effort in 2023.
Heroku, Vercel, DigitalOcean, Netlify – 1⭐ – Honestly, this stuff has turned into a mess for me. I don't even know where some things are hosted. Skiwise has the frontend served through Netlify, API on google cloud functions, backend on DigitalOcean, and database is ???? (I truly don't know). Engine has the frontend on Vercel, backend & database on Heroku, and APIs on AWS.
This is a mess, and it needs to change in 2023. I think this will be a big focus of my year. Instead of adding new things, I'll be focusing on minimizing my dependencies. Do I actually need serverless? No? Great, then let's toss that on a simple express server in a docker container and cut out all that proprietary code.
If I can end 2023 with everything hosted on AWS or Heroku for backend. I'll be very happy. At least getting everything Dockerized would be a great start.
APIs
Stripe – 5⭐ – I use stripe for payments for my SaaS products. Great product. Especially since the introduction of Stripe payment links.
Algolia – 2⭐ – I'm not a fan of Algolia anymore. It's been running me a huge bill and I feel the idea of essentially duplicating all your data to another database just to make it "searchable" seems ancient to me.
It's fine for large companies, but as a solo developer it's just a lot of work to maintain.
I want to find an alternative that plugs directly into Postgres and works automatically for certain fields/tables. I'd be fine with less performance, or a slower time to updating search results as a trade-off.
Slack – 5⭐ – I love slack. I send all my user feedback, user events, error logs, notifications, etc through Slack. It's essentially the beating heart of my solo business. No plans to replace this anytime soon.
Airtable – 5⭐ – I currently use Airtable as the database essentially for NotionIntegrations. And I use Airtable Forms + manual approval to add new items to the database. This is huge! And has huge potential for the future. In fact, if they could just figure out how to add Typescript types I'd use it for every single MVP.
Developer Experience
VSCode – 5⭐ – Absolutely essential. Love it.
Trello – 5⭐ – My productivity is directly correlated with higher trello usage. Full stop. And I haven't seen a cleaner UI that does what Trello does so I'm sticking with it.
Notion – 2⭐ – I lost my love for Notion in 2022. The reason being? It's just so slow. It's so slow! It's so slow that I actively avoid hunting around multiple pages to find content. Not to mention the search is very poor as-well. This means I just toss everything in a single Scratchpad
document. However, this negates the value that Notion provides.
Also, because Notion is so slow I don't even bother using it for notes on my phone. Instead, I use Bear and then lose track of my notes across the 2 platforms.
In 2023, I plan to try every alternative under the sun and move off Notion completely. It's bitter sweet, but I feel like the product isn't going a direction I agree with anymore, and the competition is catching up fast.
Macbook – 5⭐ – I run a base model 16" 2019 Macbook Pro. At $2400 MSRP it wasn't cheap, but worth every dollar for me. I plan to use this thing until it dies. Then, I'll buy another 16" Macbook. Great laptop. Plus, the screen is so big I don't need external monitors anymore. No external keyboard either. I just need my laptop, airpods, and a dream!
Marketing
Landing Page ➡️ Unicorn Platform – 5⭐ - I run all my sites on Unicorn Platform. I occasionally try alternatives, but always come back to Unicorn Platform since it strikes a great balance of flexiblity & ease-of-use. I don't plan to change that in 2023 until something really surprises me.
Blogging ➡️ Ghost CMS - 5⭐ - I run both my blog sites on Ghost. It's expensive ($250/year), but it's the only writing experience I've ever truly enjoyed. Plus, I think the end results look beautiful and that's important to me. No plans to leave.
Tech I wanna try in 2023
Cloudflare workers – I know I just emphasized that I wanted to lessen my dependency on proprietary technology. That being said, I really do want to play with cloudflare workers. I've seen many use-cases where these have seemed amazing at solving small widget-esque backend tasks. I think it would be something worth exploring further.
OpenAI – I've played with AI a bit last year. Since doing that, I'm now 100% bullish on the technology. I use chatGPT daily at this point for various things and I get 100's of business ideas a day from the things AI can do nowadays. I plan to spend a lot of time playing with this technology in 2023.
Prisma2 – Prisma plays essentially the same role as Hasura. Except, while Hasura is more GUI-based, Prisma is entirely through code. I like the code approach more, so I'm curious what the future holds for it. I originally wanted to use Prisma instead of Hasura, but at the time Prisma2 was missing valuable features I needed. Now, those features seem to be implemented so I plan to revisit.
tRPC – tRPC has me interested. I don't know much about it, but it's something I want to explore. We'll see how deeply I can explore this in 2023.
Express – I want to switch off serverless and go as-simple-as-possible. If there's a framework that can manage API authorization, error handling, logging, etc for me, I'm down. I think express (with enough setup) can do this, so I'm excited to try!