Swizec - A geek with a hat
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below or keep reading 👇
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
TanStack Router – modern React for the rest of us
TanStack Router puts the router in control of data, state, and UI and it's ... really good.
Askers vs. Guessers
Askers vs Guessers: the culture clash that explains half the conflicts you've ever had
Let juniors speak first
Want an engaged engineering team? Let juniors speak first.
Hard work doesn’t scale
Overtraining won't always get you to the finish line faster. Growth comes in cycles - rest, push hard, recover. Less can be more when it comes to achieving your goals
The efficacy of TypeScript
TypeScript may streamline code navigation and catch semantic errors, but it doesn't guarantee fewer bugs or faster fixes.
What to put on your resumé
Position yourself as an expert and stand out in the job market
Don't neglect your upgrades
Regular software updates may seem tedious, but they save you from the nightmare of a massive overhaul down the line.
How to go from Senior to Lead
Transitioning from Senior to Lead Engineer isn't just about technical prowess, but strategic thinking, soft skills, and going beyond your role. And remember, strong individual contributions matter!
I tried generative AI on lots of data and we're not quite there yet
Lessons learned from running GPT-4 on lots of data using the same task.
TypeScript runtime vs types at run-time
Realizing I'm statistically halfway through life at 36. Time is the one thing you can't get more of
Bun – first impressions
I've been using Bun in a few side-projects and I like it a lot
When's the last time you tried something new?
Dive into this engaging exploration of hands-on learning from pottery to programming. Discover how embracing new experiences can enhance personal growth and improve your coding skills.
AI Engineer Summit report
AI is the easy part of the equation. The real game changers in #AIEngineering are mastering data engineering, handling non-deterministic outputs, and nailing product development.
A few thoughts on tRPC
Discover tRPC's potential in building end-to-end type safe RPC APIs in this insightful blog post. Perfect for developers seeking innovative solutions for server-client separation in webapp development.
Solve the problem, not a different more difficult problem
Solve the problem at hand, not the one you imagine might come next. A simple fix now often beats a complex one later.
Ways to ask but why
Better ways to handle situations where the code makes you go O.o
2274 miles in 9 days on a cafe racer
These pics are epic and you should see them
Trust your wings, not the market
Success in your career doesn't come from relying on the market or job stability. It comes from trusting your own wings - having a clear vision, treating work as a value exchange, leveraging your skills, and owning your path
Move the rock
it's about noticing the rocks that could trip others and taking the initiative to move them
Similarity search with pgvector and Supabase
Explore the power of pgvector and Supabase for efficient similarity search in this comprehensive guide. Keep vector data next to your business data for efficient queries and less overhead.
Regular writing is a secret superpower! Sharpens your thoughts, boosts your career, and helps you become an authority in your field. Don't pretend to be an expert, just share your experiences. Your insights are gold
Avoid spooky action at a distance
Shared state in programming isn't the enemy, it's unclear dependencies that tangle your code. Keep it clean with explicit state dependencies and strict access guidelines
More on how many years to senior
Lots of readers wrote in with questions and comments about How many years to senior engineer?. Here's some additional thoughts.
How many years to senior engineer?
Becoming a senior engineer isn't about clocking years, but about depth and breadth of experience. Work in diverse teams, stick with a codebase for 3+ years, and take on projects with real stakes.
Life is Poker
Certainty is an illusion, only probabilities are real
Finding modules in a Big Ball of Mud with ChatGPT
Detangling a Big Ball of Mud is hard. You have to find domain boundaries where none exist. Looks like AI can help 🤩
Followup answers to Forget complicated code, focus on the system
Why are utility files bad? How do you recognize architectural complexity? What the hell is a transitive dependency?
Forget complicated code, focus on the system
Clean code matters, but it's the architectural complexity that truly impacts your productivity and bug count. Focus on simplifying the system, not just the code.
Programming in Markdown
What if you could focus on the fun _engineering_ part of your job, not on coding? You can!
The Wally Reflector
Unleash the power of 'The Wally Reflector' to manage the influx of 'quick requests' and empower your team.
What I learned from Team Topologies
You can't escape Conway's Law. Might as well use it for good.
Working with product
A strong partnership with product is key to an enjoyable engineering life
Different lenses, different worlds. Your perspective is shaped by your experiences. Even in debates, all sides can be right in their own context.
You can't stop the business, or why rewrites fail
Rewriting code isn't a magic fix-all. Consider the opportunity cost, complexity of the old system, and estimation challenges. Instead of stopping all to rewrite or building new while maintaining the old, try incremental improvements and new code adoption.
Update state during render, better explained
A few readers wrote in to say that the React Can Update State During Render email last week made no sense. Here's a better explanation.
React can update state during render
An unexpected feature of React: updating state during render. It's a UX and performance optimization
Clarification on how ownership makes careers
Aa few readers wrote in with questions and objections to last week's Ownership makes careers email. Here's a few clarifications.
Ownership makes careers
Own shit. At least put your name on things. Yes, before it's successful.
When to throw away your code
Delete code when it stops providing value 💡 All code is a liability; context matters. Keep what solves problems, toss the rest.
Discover the magic of HTML5 game development with Game Dev JS Weekly and level up your productivity by eliminating daily frictions with Wonder Tools
What does "solve problems" even mean
Focus on solving problems, not just doing work or writing code. Think creatively, question existing processes, and prioritize effective outcomes
Why taming architectural complexity is paramount
Unravel the hidden costs of architectural complexity in software engineering and learn practical strategies to tackle it. Boost productivity, reduce defects, and improve staff retention with insights from an MIT PhD thesis.
The secret to effective standups that don't suck
How one sentence guides your career
Unlock the secret to guiding your career with a powerful positioning statement. Learn to stand out in the job market and attract opportunities that align with your expertise and values.
What you can expect from the Senior Mindset Retreat
Unlock your true potential at the Senior Mindset Retreat! 🚀 Develop crucial soft skills for career growth and become the leader the tech world needs. It's not just about coding, it's about teamwork, ownership, and making an impact.
Two types of complexity and their impact
Complicated code slows down junior devs, while complex systems impact senior devs more. Focus on managing system complexity & dependencies, not just simplifying code.
Why a tech meltdown is the best time to invest in your career
Invest in your career growth. Seize the moment to develop new skills and prepare for a brighter future
How positioning makes you stand out from the crowd
Stand out in the job market with a strong positioning statement! Focus on the value you bring to organizations, not just tech skills. Be specific about what you do, for whom, and how.
How I turned 15 years of writing into a chatbot
What do you do with 15 years of your writing history when LLMs hit the scene? A chatbot!
Your manager can be a peer
This collaborative approach enhances both people and technical aspects of a team, leading to a more efficient work environment.
You can't fix the wrong abstraction
Unlock the secrets to combating architectural complexity in software development and learn to identify and fix the wrong abstraction. Boost productivity, reduce bugs, and retain more staff.
Eight things to know about LLMs
eightthings.pdf is the best paper I've read on what's going on in AI right now and why everyone is excited. Here's my summary.
Hug your manager
Behind every thriving team is a dedicated manager who shields them from corporate chaos, sacrificing their own well-being for the team's success.
A backend service nobody can grok
a little case study from an upcoming book I'm writing with Manning about software rewrites
Own the outcome, not the work
Efficient problem-solving in engineering with a shift in perspective – focusing on user outcomes can lead to innovative solutions and change your approach to system design.
Your background won't get you the job
Skills and experience matter more than prestigious schools and employers.
Insights for interviews from Kahneman's Noise
everything people say is bad about modern tech interviews is actually good 🤯
DRY vs SoC, a difficult choice
What is the essential difference between DRY and SoC principles in software engineering and how do you balance the two
I went to "AI Woodstock" and wow
"AI Woodstock" was a HuggingFace meetup showcasing groundbreaking AI projects and innovations. Here are some of my favs.
Software engineers, exercise, health, and productivity
Don't worry about the hype, just get some sun, some rest, and remember to hydrate.
The programming tutorial SEO industry is dead
20 years ago greybeards laughed at us for Googling. Now they laugh when we ask ChatGPT. But the leverage is 🚀
Coding is the easy part
Behind the scenes of a vendor migration project. What senior+ engineers do so you can focus on the code.
Are you annoyed by the extra space after your name [name|]?
Behind the scenes of a tiny bug that survive 919 days
Done means Shipped
Don't overthink, just ship
Build semantic search in an afternoon? Yep 🤯
Learn how to build a powerful semantic search engine in just 2 hours with the OpenAI API.
"If you're so good, why aren't you making 600k at BigTech?"
Swiz shares why he's not making the big bucks at a tech giant, from the soul-crushing grind of corporate to the funny money of tech compensation.
Clever technical hackery can't solve the wrong design
A simple change in perspective can help you overcome complex technical challenges and save time on future projects.
Own your career like an expert
You can achieve more with your career by leveraging your experience, advice, and ability to clear blockers, rather than just working hard. This approach of "force multiplying" your team can create more value than working alone
The backend iceberg
It takes an entire ecosystem to power the backend of a software system! Complex networks of processes, data storage, analytics, and more are often underestimated when looking at a software system from the frontend
Building browser extensions with NextJS
NextJS can be used to build browser extensions. This is a novel way of building extensions that allows developers to use familiar tools and technologies. Here's how
Why take a bigger role for no bump in pay
Luck is a function of the work you do and how many people know about it? Expand your visibility, take on impactful work, and increase your luck and career capital
My biggest React App performance boost was a backend change
Performance lives in the unlikliest of places. Follow the metrics.
Squash merge? Really!?
Learn why squash merging is your friend - from hating it to loving it! Squash merging helps you keep moving and focus on the work instead of recording the work.
Why trunk-based development is best
Merging finished work straight to main and deploying to production right away, scales to teams of thousands. This approach is counterintuitive to many engineers who may be used to working on their own
Start coding at the point of least certainty
Start coding at the point of least certainty: Learn how to approach projects when there is uncertainty and risk, and why it's beneficial to start with the hardest part first, instead of building a foundation and working up from there. This concept is illustrated through the analogy of training a monkey to jump through a hoop.
Reader question: How to grow 10+ years into your career?
For those wanting to stay hands-on, we recommend solving bigger better challenges with higher stakes and new problems.
Async React with NextJS 13
We look at React's native async support and how to use it in a NextJS 13 app. Learn how to use async components, parallel loading states, and caching with React.js and NextJS 13.
In case of layoffs
Advice on how to prepare for potential layoffs, how to support friends and colleagues who have been laid off, and how to find a new job after being laid off.
Building apps with OpenAI and ChatGPT
Generative AI has made big strides in recent years. Diffusion models make decent art and modern large language models can out-write even the best college student on a deadline. Over the holidays I tried it out by building an app.
2022 year in review
The days are long, but the weeks are short. In the wash of our daily grind, you lose sight of what a year can bring. Or a decade! I like to take a moment around the new year to reflect and make plans
Skin in the game
My engineering manager likes to say that he can give advice and warn us before a big mistake, but he can't tell us what to do. He doesn't live with the consequences.
Getting off twitter, an experiment
ole Musky bought Twitter and the tech community threw a collective shitfit. The atmosphere of ragequitting, hand wringing, and aloof defiance gave me time to reflect: Why am *I* here?
Scaling teams is a technical challenge
A founder friend asked me about growing pains on his team. How do you avoid stepping on each other's toes?
Can you stay a senior engineer forever?
Here's an idea that can take the pressure off your career: Yes, you can stay a senior software engineer forever. But how?
Stable Diffusion on an iPad 🤯
When's the last time a piece of tech blew your mind? I tried stable diffusion on my new ipad and wow
What I learned from Staff Engineer by Will Larson
Staff Engineer was one of the more impactful books I've read in recent months. Went through the audiobook soon after becoming tech lead so the timing was perfect.
Reader question: useReducer or XState?
Following up from my article about XState and Stately.ai, fellow reader S. asked if `useReducer` could ever be relevant when using state machines in React code. Yes! Here's how
When your brain is breaking, try Stately.ai
Two years ago I wrote about using XState after building a UI interaction so twisted my brain leaked out my ears. It helped. Now the creators have made something even better – Stately.ai 😍
On becoming tech lead
A few weeks ago I made tech lead, a type of staff engineer. Here are my thoughts on what that means, how it happened, and why you'd want such a thing.
Why PATCH endpoints matter
A painful lesson from production that brought several engineers almost to tears: *Please* add PATCH endpoints to your public APIs.
Over-engineering tweet embeds with web components for fun and privacy
Reader question: Work at a big international or a local studio?
Fellow reader Frank writes in with a question about career moves and I thought my answer could help you too
Grow your career ... in this economy??
if you've been following tech news lately, things feel ... 😖 Between the layoffs, hiring freezes, investors suddenly caring about revenue, and whatever the heck stock markets are doing, we're in for a rough time. BUT!
How better data modeling fixes your code
When your code feels hard, 9 times out of 10, the problem is with your data model. The signs are subtle.
Reader question: Should you learn the latest hotness?
Great question. Common concern. *What if I get stuck in a technology that isn't hot??* Or worse, burn out re-learning every new thing 😱
Notes on A Relational Model of Data for Large Shared Data Banks
In 1970 a paper came out that changed the world of business computing. It laid the ground work for modern databases.
useCallback is a code smell
One of my favorite ways to simplify and de-gotcha React code is to rip out all the useCallback and useMemo drama. 90% of the time you don't need it.
The art of the cowboy merge 🤠
how do you catch a critical deadline that cannot be missed? We're talking external stakeholders, millions on the line, and it all hinges on *your* team getting it done on time. No overtime
If it works together, it lives together
Wherein I use LEGO to talk about organizing your code for ease of use
Why others' code is hard to navigate
Some people like to organize code in files and folders and neat categories. Others love search. When they work together, that's the challenge.
Reader Question: What do collaborative teams look like?
New members on our team invariably say 2 things: 1. Wow I've never seen a team move this fast 2. This approach feels weird. I'm uncomfortable Teams like this are not common.
What makes a real image?
What does a real image look like? The rise of modern AI photo editing and generation tools makes this an interesting question.
Your code doesn't matter
"Your code doesn't matter" is something experienced programmers say, between the lines, when they sound like complete lunatics. But what do they mean? Why does everyone say it?
What coding tutorials and teachers get wrong
Chatting about teaching and learning complex technical skills with an engineer I'm mentoring. She's a former chef. We shared the same frustration with online resources.
I stopped using Google Analytics after 15 years
swizec.com has been around since 2005. For 15 of those years, it's been running Google Analytics to give me a sense of "Is anyone out there?". No more.
Reader question: So about that perfect burndown chart ...
If your approach works so well, why isn't every team doing this?
Move your business logic into data
The quickest way to simplify a complex function with lots of logic is to turn it into data. A lesson from production
Nobody is coming to save you
How do you react when you don't like The Process at work? Most programmers complain on social media, make a wry joke, and ... suffer. Not great
You do have time to build it twice
My talk from React Summit is now online, if you're curious. It's about code rewrites in the context of hyper growth startups. The ultimate sin. Or is it 🤔
Reader question: Feeling guilt as a tech lead
Keep getting the guilt, that I'm not able to code, just running around for discussions and solving other issues, managing people. Any idea to manage all the fronts and get rid of this guilt?
You don't *have to* build it sloppy to go fast
My favorite mistake to make when I'm in a hurry is to think that I _have to_ build new features the sloppiest way possible. Find the quick fix and move on. But that's not true.
A work ritual that keeps me sane
A coworker asked me for tips on how to stay focused during the day. Here's what I said.
What makes a great software engineer?
In 2015 a group of researchers asked 59 experienced engineers at Microsoft "What makes a great software engineer?". Here's what they found.
Write abstractions, not just code
Wherein I use a silly example to show why you need more than small reusable single purpose functions to write good software.
Always have 3 answers
How do you stand out as an expert amid tech layoffs?
The audience loved my talk but I didn't
A critical look at a conference talk that went great but felt a little off.
Coding forces you to understand the problem
Programming translates fuzzy understanding into exacting specifications. That’s why it’s hard. The Illusion of Explanatory Depth reigns supreme
A lesson on expertise from a great mafia movie
You cannot make something good until you understand who you're making it for.
You are allowed to invent HTTP status codes
A fun problem for RESTful APIs: Did you get 404 because your URL is wrong or because the resource wasn't found?
There are no bad teams
it’s the leader, not the team
Writing software is like kicking a can
Writing software is a playful process of exploration and discovery. Like a game of kick the can on a Sunday walk.
The Italian foods theory of bad software design 🍝
Spaghetti code – unstructured Ravioli code – too structured Lasagna code – layered wrong Minestrone software – unclear domains
What microservices are for
Microservices are a pain in the ass. They turn every system into a byzantine mess of complexity. But this week ... they saved my butt.
Learnings about the future of the web from Reactathon
The first in-person conference in years! It was wonderful 🤩 - Remix is great - Serverless at edge is the future - GDPR does not play with 👆
Bad excuses to want a rewrite
Here's a sneak peek at a new book I'm writing about Refactoring and Rewriting. It's with a publisher so I might get in trouble for sharing this, but it's a first draft ... they own the final version 😛
The role of a senior+ engineer
"Every product org should have a senior+ engineer whose job it is to run around and make everyone else more productive" 🤔 That IS the role of a senior+ engineer
People on twitter loved this trick I learned from a coworker's pull request the other day. You might like it too.
Code Review Practices for Refactoring Changes
Do you review refactoring pull requests differently than you do others? An empirical study of OpenStack, an open source cloud platform, says that you do and finds 6 common criteria.
How we made the best burndown chart you've ever seen
My entire career I've never seen a sprint finished on time. The new manager said "Oh I think we can fix that" ... 18 months later he proved me wrong
When to join and leave a company, project, or trend
Timing changes everything. Who do you think has better engineers? The team that built Google from 9 million daily searches in 2000 to 1 billion in 2009, or the team that launched Google's 10th chat app last year?
Promise.allSettled, a wonderful tool for resilient code
The pros and cons of different approaches to writing resilient code that handles partial failures
Adding categories to a Gatsby blog (for better SEO)
One of my biggest frustrations since migrating swizec.com from Wordpress to Gatsby was that I never added categories. Always wanted to, never did. Thought it would be super hard. Gatsby made it painless
Saving time in UTC doesn't work and offsets aren't enough
Lessons from a painful outage with timezones, UTC offsets, and database clients that took a whole week to resolve.
A quick lesson in writing resilient code
On the backend anything can and will fail. How do you deal with that?
Why experts charge more
Ever noticed how an expert's job isn't that different from an apprentice's? Yet they can charge way more 🤔
Are you the engineer who scoffs at high salary numbers?
Engineering compensation falls into groups so different that neither group even realizes the others exist. And they fight about it.
How to give and receive feedback
Feedback can save an airplane from crashing, or upset everyone around you. But for you personally, honest feedback is the fastest way to become a better engineer. Fixing what you're bad at is where the gains hide.
A new VSCode extension makes state machines shine on a team
When you grok state machines, a new world of computational beauty and software design opens in front of your eyes. Things that used to be hard become easy. The impossible becomes possible. And you turn into that annoying team member.
Be their shit umbrella
because if you go to bat for the team, the team goes to bat for you
Immutability isn't free
Or how we took an API endpoint from 16s to 3s.
Why mentoring matters
Here's a funny video about Ivane, a construction worker with amazing productivity and work ethic. Imagine what Ivane could do if someone showed him how to use his tools 😱
How I used indie hacking to sponsor my own greencard
The longest project of my life
Quick tip for system design interviews
What are system design interviews for anyway?
How to add Typeform as a Gatsby source
Every year I ask readers if they're enjoying my newsletter. Then fail to use those responses 😅 This year I said heck it and built a /testimonials page that shows everyone's feedback raw from Typeform. Here's how.
Why other people's code looks weird
Are you an organizer or a searcher? What about your team?
What is the goal of engineering?
How can you know you're succeeding if you don't know where you're going?
Wow API Gateway v2 is fast
A story of how my performance hunch was totally wrong and the answer that sped up an AWS Lambda 33%
Try to work for a brand
Brand helps your career in subtle ways.
The quickest way to fail a tech interview
No it's not a wrong answer or floundering with algorithms. Not even being nervous or shy or having a language barrier. Culture fit is the least of your worries if you make this mistake.
What to do when bugs are whack-a-mole
What do you do when every bug you fix creates 5 new bugs? You could laugh and move on, or realize it's a sign of bigger issues
Using DynamoDB Streams with the Serverless Framework
DynamoDB Streams are a convenient way to react to changes in your database. And surprisingly easy to use 🥳
How I stopped chasing mice in 2021
How a focus on long-term games changed my approach to everything and calmed down my life
The Passion Paradox
burnout doesn't work the way you think
pg-mem and jest for smooth integration testing
The cult of TDD leads you down a dark and stormy path towards brittle code with a false sense of security. But there is a better way. A sweet spot between unit and heavy integration.
A mental framework that helps you code faster
What slows you down the most when you're coding or doing software engineering? I think it's how fast you make decisions
Datalist, the pure HTML typeahead you didn't know about
When it’s okay to work overtime
Not all overtime is bad overtime
Why null checks are bad
Every null or undefined check doubles the number of tests you need 😱
Small choices can wreck your codebase
wanna see the strangest looping construct I've found in production code?
Better tooling won't fix your API
RESTful APIs are like Agile – everyone does it differently and if it isn't working, it's your fault for doing it wrong. 🤨
What to expect in senior level interviews
Interviews are terrible. Stressful, time-intensive, loosely correlated with on the job performance. They're the least terrible way we have to hire.
Getting from junior to senior
The difference in salary between a junior and senior engineer can be orders of magnitude. Many multiples at least. But what's the difference in mindset that gets you there?
How defensive coding leads to bloat
Defensive coding is an important lesson and over time and engineers it leads to massive bloat, if you're not careful.
You can use React Query for slow computation, not just API
You can use the ergonomics of React Query for any slow operation and it's wonderful.
Balancing serious sidehustles and full-time work
Erik, the author of Developer Hegemony and founder of Hit Subscribe, invited me to chat about balancing sidehustles and full-time work
Why I'm excited about React 18 – talk
React 18 is coming soon. I hope 🤞 Here's a talk I gave exploring its implications and showing off demos with working code.
25 lessons from 25 years of coding
Today is my birthday which means I've been coding for 25 years. A quarter century 😱 Here's 25 lessons I've learned about code. In no particular order.
How to configure Jest with TypeScript
Using plain Jest on a TypeScript codebase is kinda rough. No types in tests no thanks. Making Jest and TypeScript work together smoothly is something you do just rarely enough to forget the details. Hope this helps you and future me too ✌️
What's more productive, a team or a talented soloist?
Engineers *hate it* when you say it doesn't matter how good they are because a team will outcode them any day. But it's true, you can't build something big on your own.
Learn TypeScript in 5 minutes
Meetings – a senior engineer's secret weapon
Boo meetings, yay code, right? There comes a time in your career when coding is no longer your highest impact contribution. Might even be holding you back. 🙊
There's two types of engineers
Do you solve problems or execute tasks?
Stop SHOUTING = 'shouting'
A hill I will die on 👉 global CONSTANT = 'constant' are bad
How to rewrite your app while growing to a $100,000,000 series B
When you're in a company desperately trying to meet demand, *ship*. You'll have money, time, and professionals to fix code later. Even if you start with jQuery.
Being a senior/junior engineer in 2021 – podcast
Last week I went on the PodRocket podcast to talk about engineering careers, serverless handbook, and the current job market.
A great engineer knows their tools
Earlier in my career when I thought I was god's gift to engineering but wasn't, I failed one of those stupid interview questions that "have nothing to do with the work". It was a great question.
Anything's a sorting problem if you squint hard enough
What's the most algorithmically fun code you've written recently? 🤔 Here's mine: A dataviz using a grid of triangles that fits into the client's logo.
How to ask for help
what makes a senior engineer stand out in an interview? No it's not the amount of side projects or their leetcoding speed. It's knowing how and when to ask for help.
Build simple backends with Gatsby Serverless Functions
Until recently adding a little backend to your Gatsby site meant 2 options: 1. Climbing the AWS learning curve 2. Rewrite with NextJS Now there's an /api directory 😱
WorkInProgress kills your progress
If it takes 6 engineers 10 days to complete 6 projects in parallel, why does it take 8 days when you work together 🤨
Reader question: "When do you fix tech debt?"
Long time reader Phil asks when do you fix the tech debt you used to ship faster. Heroic efforts don't work. The real answer is "always" – a mindset of gardening.
Tech debt is a tool
If your house was on fire, would you mow the lawn first?
Complex vs. complicated
Would you rather work with a complex system or a complicated system? 🤔
Pay yourself first
Profit is not what's left after expenses, expenses are what's left after profit.
You don't need a big team to automate your work
The opposite of folks who follow every FAANG trend and over-engineer their companies to death, are the folks who *never* take advice from the big boys.
Tips for a fulfilling tech career
When I dropped out of college to focus on freelancing back in 2012, I set 3 ground rules:
React 18 and the future of async data
Friend, I have glimpsed the future and it is amazing. React 18 is shipping with Suspense and startTransition for deferred component rendering, but not data loading. That's coming in a future 18.x version.
What I learned from Software Engineering at Google
When I first picked up Software Engineering at Google I thought it was another one of those FAANG books full of lessons that make no sense at human scale. I was surprised, lessons apply to teams as small as 5.
Your career needs a vision
In his book, The Art of Science and Engineering, Richard Hamming says the key to a great career is vision. What does that really look like?
Preventing RSI for programmers
I've been computering daily for 24 years, since I was 9, and managing RSI since high school. People often ask how it never gets bad. This is the article I always wish I had written.
Why a coding AI like Github Copilot won't take your job
It might. What's your job? If you're in the *"write code to exact specifications"* business ... now's a good time to start leveling up. The AI's not ready yet.
How to own projects like a senior engineer
The best skill you can learn is ownership. The second best is to let go.
Hacking the React AST for fun and profit – #CodeWithSwiz ep34
This is hold my beer level of hackery. It didn't work but we learned lots in the process.
This blew my mind, thought you'd like it too. You can do more with ?. than you thought.
Use Netlify's _redirects on Gatsby Cloud
Something always goes wrong when you change hosting providers. 😅 For me it was redirects. A vital feature of any site migration.
Do important work
Next time you finish a project, ask yourself: *"Might this work be important?"*. Add the polish.
A better React 18 startTransition demo
Demoing startTransition is hard. Modern computers are too fast 😅 – Dan Abramov, a React core team member, helped me fix it up. Here's what I learned
Trying out React 18 Alpha
I read everything about React 18 Alpha, trawled through the work group, and ran some experiments. Here's what you'll wanna know.
Words that scare developers
Words that scare developers are powerful tools that are not meant to be safe. That is a valuable lesson.
A fun security bug with static rendering – CodeWithSwiz #31
The flash of unlocked content is great fun for any paywall
Software Engineering is the 2nd best job
Ok so I've been doing lots of research into the Software Engineer job market – Some highlights 👇
Why you need a positioning statement
High value experts use positioning statements to say what they do for whom. Most engineers don't have one. 🤨
Build privacy-focused blazing fast tweet embeds – CodeWithSwiz 30
What matters in a senior engineer job interview
Degree matters if you have nothing better to show, consulting and BigTech backgrounds are negative, too many seniors can't code.
2 quick tips for 250% better Lighthouse scores – CodeWithSwiz 28
Your site may be fast for users, but Google don't care. Official metrics or bust.
Flow good for programming, not engineering
Friend, how good are you at your best? ... Nobody cares. How good are you at your average? What about your worst?
Serverless file upload to S3 with NextJS and AWS Lambda – CodeWithSwiz 27
The Girl loves her daily cute photos, but she's bored of repeats. What if adding images was easier 🤔
Send daily random photos from an S3 bucket using AWS Lambda – CodeWithSwiz 25
An experiment that sends daily photos from an S3 bucket to an IoT device using AWS Lambda
Your serverless questions, answered
When talk comes to serverless, engineers have lots of questions. Here are some answers 😊
Your luck & opportunity surface area
Here's a comment that resonated yesterday and you might like. It's about how to maximize the opportunity in your work.
How do you know if serverless fits your project?
The hallmark of a true expert is understanding about the pros and cons of your technical decisions.
Serverless Handbook coming Mar 31st
Serverless is the future. New book coming out Mar 31st and it's looking bomb
Different medium, different mindset
Ever wondered what it's like to make a physical book? It ain't as easy as shipping code lemme tell ya 😅
Go full-stack in 5min with your first cloud function
Can you automate love?
What's the laziest thing you've ever built? For me it's a bot that sends cute pictures every day
When you think of a backend or server developer, who comes to mind? A wizard of arcane magics. The future belongs to full-stack frontend engineers.
That time serverless melted my credit card
Serverless is pretty cheap. But you *can* get it wrong.
Why serverless fits side-projects perfectly
How do you provision servers for no load most days THEN ALL THE LOAD THIS MINUTE? That's how side-projects work and it's hard
How a $12 AWS bill powers a $50k business
my point is that running server code on the web has become ridiculously cheap *and* easy
Variants – a quick tip for better React components
Reusable components like to grow boolean props for different situations and complexity soon blows up. Variant props are the perfect solution.
Can you code faster?
What slows you down most while coding? It's not lack of skill. It's not lack of ideas. It's uncertainty. Fear.
Reverse engineer a GraphQL API to automate love notes – CodeWithSwiz 24
We used a man-in-the-middle attack to snoop an app's API traffic, replayed it in a GraphQL client, and successfully put it inside an AWS Lambda 🤘
A TypeScript trick for reusable hooks
Reusable hooks are all fun and games until TypeScript starts yelling at you about incompatible types.
React Bricks - visual blocks editor for NextJS #CodeWithSwiz 22
Tried a new visual editor for NextJS and CreateReactApp. Got a site up in 20min 🤘
The Magic Function principle
Write functions, mostly magic.
"silicon valley is like hollywood"
and I don't mean Silicon Valley the place, I mean Silicon Valley the concept.
[CodeWithSwiz 21] useAuth beta support for Firebase 🎉
It works! useAuth has beta-level support for Firebase Auth 🥳 I did not expect that to take 3 sessions.
Tech interview best practice that fails in life
Tech interviews have a magic answer: The hashmap. And it's not always best on the job.
[CodeWithSwiz 20] Adding Firebase support to useAuth, pt2
Firebase continues to be 💩. No wonder people keep asking for support in useAuth. Almost there ✌️
What computer science can teach us about vaccine distribution
How would you rollout the covid vaccine for max fairness and speed?
[CodeWithSwiz 19] Firebase Auth support in useAuth, pt1
Support for Firebase Auth is one of the most requested features for useAuth and I figured what the heck, how hard can it be?
Why you can't find an engineering coach
Wanna learn boxing? Join a gym, find a coach. Tennis player with a kink in your game? Find a coach. Software engineer with a missing skill? Google, random blogs, fun newsletters, dubious podcasts, noise on twitter 🤨
Reflecting on 2020
The year that felt like a drag and ended in the blink of an eye.
Deep work December
do you ever feel like you're working working working and nothing is happening? Like a game character running against an invisible obstacle? That's how I've been feeling lately. Stuck.
How *do* you standout as a developer?
Course creators are always telling you to learn this or that but how does any of it help *your* goals? That's the missing piece 🤔
SSR, SSRwR, SSG, CSR, WTFBBQ???
These abbreviations are getting out of hand. It's like a bad interviewer's wet dream.
You're not asking for a job, you're selling a service
You're not asking for a job, you're selling a service. The true question behind every interview is "How can you help us?"
Gatsby to NextJS pt1, server-side-render or server-side-generate?
Gatsby and NextJS do similar things differently. One is better for websites, the other for webapps. In episode 17 of CodeWithSwiz we explore the biggest difference.
Use private libraries to cleanup your codebase
You're using the many-small-repositories approach to work faster as a team. But where do you put shared code? How do you make it nice to use? How to publish and install private packages?
React context without context, using XState – CodeWithSwiz 14, 15
useAuth works without React Context! 🎉 here's how
What's your code for?
Perfect code that doesn't solve the problem is useless. Perfect metrics that don't serve the user are a distraction.
Reader question: How do you learn programming topics?
Nader writes in worried that he started coding too late and his progress is too slow. Here's my response.
The ultimate test for your webapp: Airplane wifi
Forget time to first byte and time to interactive. What's your time to useful?
Learn Gatsby and NextJS with my new workshop
Think of the last time you started a new project. You spend the first few hours getting started. Ugh
How JAMStack helps you ship
Common problem in engineering teams: Stepping on each other's toes. JAMStack can help.
The mistake that strangles engineering teams
You work hard on a feature. Weeks of back and forth with designers, product managers, tech leads, and the rest of your team. Your feature is amazing and you're proud as heck! But then ...
How I use delegation to get more done
Productivity porn shows you how to pack more into your day. Productivity porn is wrong my friend. You need to remove things to grow.
Swap useReducer with XState – CodeWithSwiz 13
In Refactoring a useReducer to XState we talked about a 5 step process to turn a reducer into an XState state machine. Today answers "Ok now what?"
Sucking is the first step
You ever feel like you have no idea what you're doing? Everyone feels that way. Sometimes more, sometimes less.
How to write tests for XState – CodeWithSwiz 12
Once you know how to refactor a useReducer to XState, you gotta prove you did it right.
Should you take a pay cut for equity
Would you take some % of your salary in bitcoin? The joke is that compared to pre-IPO equity, bitcoin is predictable and has a known value.
Refactoring a useReducer to XState, pt1 – CodeWithSwiz 11
XState promises to be like useReducer+Context combined and the simplest way to handle complex state in React apps. But can it deliver? On this episode of #CodeWithSwiz, we gave it a shot.
Computer science is not software engineering
Wow, college was such a waste of time ... when did you ever invert a binary tree outside of an interview? Honestly I never inverted a binary tree in college either ☹️
Prefetch data with React Query and NextJS – CodeWithSwiz 8, 9
Prefetching lets you start React apps without loading spinners. Gatsby introduced this concept with `staticQuery`, react-query and NextJS make the pattern easier 😍
Why you should learn serverless cloud functions
Times are changing, the future of web development is here.Story time! 20 years of history in a 2min read, it's gonna be great 🤘
My favorite serverless project
When's the last time your first project in a new technology was also your favorite? Doesn't happen very often ...🤔 It happened to me in November 2018.
Many engineers think server-side code is the scary domain of True Engineers. Something newbies, juniors, and frontend engineers shouldn't touch. They're wrong. Modern backend is a joy. ❤️
What's the best code you ever wrote? Is it the most clever, or the cleanest. The most fun problem to solve, or the most impactful. The surprise throwaway everyone uses, or the love nobody noticed.
Why NextJS /api routes are fab – CodeWithSwiz 6
In this episode of CodeWithSwiz, we tried NextJS's support for /api routes – code running on the backend. In a word – Wow
Why senior engineers get nothing done
You start a new job and it's amazing. Code all day, clear objectives, easy guidelines, ship a bunch of features be a hero. Then something happens and suddenly you get nothing done. 🤔
Exploring NextJS with a headless CMS, pt4 – CodeWithSwiz
NextJS getStaticProps, environment vars, and why you shouldn't use yarn link – all in this episode of #CodeWithSwiz
Exploring NextJS with a custom CMS, pt3 – CodeWithSwiz
Friend, this episode of #CodeWithSwiz was a great example of why you want to start using TypeScript and how thermal load *destroys* computers.
How React Query gives you almost everything you thought you needed GraphQL for
GraphQL solves every problem you've ever had talking to APIs on the frontend. Mention a switch to GraphQL to your team and they think it's a joke. Rewrite our entire app? oh you jokester. React Query is the perfect middle ground ❤️
What if tech interviews aren't bullshit
Every tech employee says interviews are broken. Every employer keeps interviewing. What gives?
Building a small CMS with NextJS, pt2 – CodeWithSwiz
You're the computer, the CMS is your script. Starting small, trying NextJS, comparing microbundle vs. parcel for extracting libraries out of projects.
Your first NextJS app – CodeWithSwiz
On CodeWithSwiz ep2, we tried NextJS and built our first tiny app. Complete with a design system, static rendering, React Query to talk to AWS Lambda, and deployed to live 🤘
How to export a large Wordpress site to Markdown
Migrating from Wordpress to Markdown sounds easy. Mention it to any developer and they'll say "Pfft, an afternoon of work at worst". Suddenly it's 6months later and you're losing your mind.
Why Understanding beats Knowledge
Understanding beats knowledge every day. To have a strong career, learn to understand, not just to know.
CodeWithSwiz: Privacy-focused embeds for YouTube, Twitter, et al
A new old experiment 👉 regular livecoding. It's like a podcast with video, show notes, regular cadence, and we both learn something new.
Lessons from migrating a 14 year old blog with 1500 posts to Gatsby
After 4 years of putting it off, 1 year of tinkering, a month of work, and $1500 of hired help, my new blog is finally here 🎉 Here's what I learned.
In 2020's, what is "frontend"? 🤨
"He's a frontend guy, is this even a fair question to ask?" The head of engineering was worried about our systems design question …
Why engineers are worth so much
Engineers don't do the day to day work, they build assets the business can exploit for years to come. That's the magic
5 years of books & courses or how I made $369,000 on the side
5 years ago I moved to America to chase a dream 👉 stop selling time.
Why you should build a form generator
Lemme guess, every project involves 1 or 2 forms and they're all the friggen same. You got forms coming out the wazoo. Render fields. Connect to state. Add field validation. Detect submit. Add form validation. Send fetch request. Repeat.
How you can start using GraphQL today without changing the backend
GraphQL for new projects looks great ... buuuut how do you use it with that old backend cobbled together in Rails over the last bazillion years?
Why and how I built my own course platform
Why the heck did I build a course platform for ServerlessReact.Dev when services like Teachable, Podia, Thinkific, and such already exist? Because of friction my friend.
How GraphQL blows REST out of the water
Let's have a look at hyow GraphQL makes queries so much easier and more pleasant than REST
It's never been this easy to build a webapp
We live in exciting times my friend. It's never been this easy to build a webapp and make your first $1,000/month.
Is hot dog taco?
What if I told you modern tools let you build and launch a small webapp in 30 minutes? Complete with SSL, a .com domain, a database, a documented API, CDN hosting, fast static initial loads, and a hydrated SPA? That's the challenge I posed at Silicon Valley Code Camp this weekend. The audience didn't believe me, so it was time to perform some magic. 🧙
REST API best practice in a GraphQL world
GraphQL is taking the world by storm and it is wonderful. But in the real world, you're still dealing with REST APIs aren't you?
The Big Mac index and Jest fetch testing
The Big Mac index is a purchasing power parity index published by The Economist. Jest fetch testing is a tech task so frustrating that it almost made me quit the industry. I'm writing this so you don't have to read 8234721 different blog posts, stack overflow answers, and GitHub threads with conflicting info on how to get Jest and fetch to play together.
TypeScript for serverless lambda backends 👌
A few months ago I inherited a Kotlin project. It was an unfinished prototype and all I had to do was wrap it up and deploy. Every time I touched the project, it broke. Nothing worked. Wouldn't run on my machine, wouldn't read API requests, couldn't get tests working, if I changed some code I broke it all. That's when I realized learning a new field is super hard
Just for fun 👉 React vs. jQuery vs. Svelte, same 🐱 app
I was bored Monday night and decided to see if I still know how to build with jQuery. Nothing better to do, no pressing ideas, a bit of fun. Also a favor for a friend who's preparing to talk about React to a bunch of people who've never seen it before 😛
What a hockey legend can teach you about career development
Say your boss gives you $1000 to grow your career. What do you do?
What makes you a senior software engineer anyway?
I used to think a senior engineer was someone who gets a project, understands the context, puts their head down, and gets it done. But no. A senior engineer does so much more than just write code and design systems.
A lesson in sales from the guy who sold me $1500 of gear when all I wanted was a $100 pair of gloves
You don't want to build your own list virtualization
Chatroom is slow? I know, I'll just use list virtualization! List virtualization is hard, dear reader. So, how do you virtualize a list?
How to add real web push notifications to your webapp
How resumé-driven development shapes our industry
All that once was new is old again
There's a joke in functional programming that once you understand monads, it becomes impossible to explain them to others. The nuance is nuanced, the details are hard, let’s focus on practice
I was doing code review for a coworker, and it soon became obvious that he used a linter and that the linter gave him a bright idea: _use strict comparisons_.
How many touch points does your sales process require? Do you need 2 ad clicks or 5? Two shiny demos or one fat video? As an engineer, you might not care, but this is the stuff that keeps your CEO and growth lead and head of product up at night. A business owner that can answer that 👆 question reliably is god.
Animating 2048 SVG nodes in React, Preact, Inferno, Vue, Angular 2, and CycleJS – a side-by-side comparison
How to waste hours of life with fetch() and a bit of brainfart
Both superagent and fetch() enable you to talk to a server. The first produces clean code that gets nesty if you need many things. The second produces clean code that is Promis-y and sometimes cumbersome. The difference between superagent and fetch() isn't that one sends your headers as-given and the other lowercases their names. The difference is that superagent sends a cookie and fetch() doesn't!
This is a puzzle you can run into if you’re not careful, and sometimes, despite your best efforts, even if you are careful. It happened to me when I had a settings object that I passed into a view. The view then did things. When I made a new view from the settings object, it looked like the view I had just cleared.
A day is not 60*60*24 seconds long
Days aren't 60*60*24 seconds long. They are 1 day long, which on most days maps to 60*60*24 = 86400 seconds. But not on all days.
Using returns and callbacks in the same function. Sounds like crazy talk I know, but hear me out, I have good reason. I think.