Hello, friends! Hope you’re having a wonderful holiday break. I have been spending my time off hanging out with family and crossing the last things off of my 2022 to-do list.
Some things I’m working on
Software development is a lot like gardening. You can’t just abandon your garden and come back to it months later and pick up where you left off. You’ll find new weeds that need to be pulled out, garden pests you weren’t aware were an issue, maybe animals have eaten a bunch of your plants. All of these things were always there, they just rear their heads when you stop actively tending the garden.
For my day job, I write in the Golang programming language about 50% of the time, and the rest of the time I write in Google Docs (haha, a joke about Staff+ engineering). When I do any coding on the side, it’s almost always in JavaScript frontend to backend, so I’m very familiar with that ecosystem.
Everyoak, my SaaS for preschools has been running on a PHP backend & Next.js frontend for the last 4 years. I had intended to leave this as-is because it works just fine. Making the developer experience better doesn't increase revenue or justify my time/effort to rewrite it. What I’m finding is that because I am not keeping up with the PHP community, I am not keeping up with the newest security patches or deprecations. This has led to a fun little quandary every couple months when something randomly stops working. So I’ve decided that it’s in my best interest to start rewriting Everyoak’s backend in JavaScript as well.
When software engineers talk about rewriting an entire project, there are a few different ways to go about it. The most complicated and error prone way to do it is to do a massive lift-and-shift overhaul where you have to recreate an entire project with identical feature parity, then move users over.
I intend to use the strangler pattern (named after the Strangler Fig, this pattern puts an existing system behind an intermediary façade and slowly replaces bits and pieces of working code at a time) which is much less error-prone, and you aren’t building a duplicate system in a vacuum.
Some things I recently cooked
We are obsessed with this zucchini spaghetti from Smitten Kitchen. It gets made probably at least once every couple weeks because the kids love it. We follow the recipe with zero modifications.
One more favorite in our house is this Instant Pot chicken shawarma. The recipe is pretty straightforward:
sauté an onion and minced garlic
add shawarma spice blend (any DIY recipe you find online will do; I use a blend of cumin, coriander, cinnamon, cloves, green cardamom, garlic powder, turmeric, paprika, salt, black pepper, and cayenne)
add sliced chicken thighs and stir well
cook at high pressure for 7 minutes
We don’t bother marinating the chicken, so this entire thing comes together in a matter of minutes.
I plated it with leftover Chinese restaurant brown rice, a Greek salad (because of the Feta!), and some Aldi Tzatziki sauce on the side. It’s SO good.
I often have my laptop in the kitchen with recipes open as I do the prep. What happens is that if I don’t move my mouse every so often, my computer goes to sleep. I use a neat little free tool called KeepingYouAwake which prevents my laptop from doing that!
Some things I’ve recently learned
Have you heard about ChatGPT? It's a new chatbot by OpenAI that's taking the internet by storm. ChatGPT uses advanced natural language processing techniques to respond to user input in a conversational manner, in real-time.
I created a thread on Twitter of some fascinating and useful things you can do with ChatGPT. It really feels like we’re at this pivotal moment in the evolution of natural language processing + AI where we can build some really useful things that help people, but there’s also a lot of fear about being made redundant. I’d love to know what you think: can your job be replaced by AI?
I’m also fascinated with DALL-E, an AI system that can create realistic images and art from a description. The overgrown garden image at the top of this issue was generated by DALL-E from a prompt by me.
Working with calendars is hard
I had a tweet go viral recently. It’s a simple joke about how working with calendars is really hard, and my enthusiasm for building something is completely extinguished by the mention of needing to deal with dates. Just about every project I’ve worked on which dealt with dates has encountered unforeseen complexity. Someone linked me to a fascinating list of ways programmers are wrong about time.
A thread worth bookmarking
Jaclyn started a thread about what to get your dad (and other father figures) for Christmas. It’s too late to use it for 2022, but I still got a ton of inspiration for future occasions: birthdays, Father’s day, just for fun, etc.
That’s all, folks. Thanks for reading! Enjoy the rest of your break, rest your brain, and stay warm.
Cheers,
Vic
> strangler pattern
it's a reliable one that works
> Just about every project I’ve worked on which dealt with dates has encountered unforeseen complexity.
Hear hear
Here's a list of further falsehoods programmers believe! https://github.com/kdeldycke/awesome-falsehood
I particularly enjoy https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ and https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/.