all posts tagged 'programming'

Home-Cooked Software and Barefoot Developers


🔗 a linked post to maggieappleton.com » — originally shared here on

I have this dream for barefoot developers that is like the barefoot doctor.

These people are deeply embedded in their communities, so they understand the needs and problems of the people around them.

So they are perfectly placed to solve local problems.

If given access to the right training and tools, they could provide the equivalent of basic healthcare, but instead, it’s basic software care.

And they could become an unofficial, distributed, emergent public service.

They could build software solutions that no industrial software company would build—because there’s not enough market value in doing it, and they don’t understand the problem space well enough.

And these people are the ones for whom our new language model capabilities get very interesting.

Do yourself a favor and read this entire talk. Maggie articulated the general feeling I have felt around the promise of LLMs within the confines of a concise, inspiring talk.

A friend approached me a few months back and asked me to help him build an app to facilitate a game he likes to play with his friends in real life.

I told him that a good first step would be to experiment first with facilitating the game using good ol’ fashioned paper, and use the lessons learned from that experience to eventually build an app.

A few weeks later, he came to me with a fully baked version of the app in a prototyping tool called AppSheet.

I was stunned at how much he was able to get done without any professional development support.

He’s a prime example of a barefoot developer. I don’t think he has any interest in crossing the “command line wall,” but as these tools get more capable, it’ll enable him and scores of others to build software that’ll solve their problems for them.

Helping more “normal people” to become barefoot developers is a cause I’d love to be part of.

Continue to the full article


ChatGPT is really bad at generating code to interact with GPT-4

originally shared here on

Lately, I've been working on several projects which interface with the OpenAI APIs.

Since this is 2024 and I'm far too lazy to open the official API documentation and write code myself, my first step in generating code is to ask the 4o model of ChatGPT something like this:

Write a Python script which uses the latest OpenAI APIs. I'd like the function to accept a custom prompt and a custom top-k value. It should return the prompt's response.

It returns something like this:

import openai

def generate_text(prompt, top_k=5):
    # Define your OpenAI API key here
    openai.api_key = 'your-api-key'

    # Define parameters for the completion
    completion = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=100,
        top_k=top_k,
        n=1,
        stop=None
    )

    # Return the generated text
    return completion.choices[0].text.strip()

# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)

Which looks super great, right?

Except when you go to run it in a terminal, you get this:

openai.lib._old_api.APIRemovedInV1: 

You tried to access openai.Completion, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.

You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface. 

Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`

A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742

If you paste that error into the chat, it'll respond with this:

It seems like there has been a major update in the OpenAI Python library since I last checked. Let me update the script to use the latest version of the library:

And then it spits this out:

import openai

def generate_text(prompt, top_k=5):
    # Define your OpenAI API key here
    openai.api_key = 'your-api-key'

    # Define parameters for the completion
    response = openai.Completion.create(
        engine="davinci-codex",
        prompt=prompt,
        max_tokens=100,
        top_k=top_k,
        n=1
    )

    # Return the generated text
    return response.choices[0].text.strip()

# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)

Notice how it still uses the openai.Completion method!

I've tried prompting it with something like:

You're still using the openai.Completion method. Reference the official up to date API documentation to get the latest call that replaces the openai.Completion method.

And it responds with:

Apologies for that oversight. Let me update the script to use the latest API method based on the official documentation:

And here's the code it generates:

import openai

def generate_text(prompt, top_k=5):
    # Define your OpenAI API key here
    openai.api_key = 'your-api-key'

    # Define parameters for the completion
    response = openai.Completion.create(
        engine="davinci-codex",
        prompt=prompt,
        max_tokens=100,
        top_k=top_k,
        n=1,
        temperature=0.7,
        stop=None
    )

    # Return the generated text
    return response.choices[0].text.strip()

# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)

Which, again, still uses the openai.Completion method!

I've noticed this sort of "oops, I screwed up, here's the exact same thing I just outputted" behavior appear more frequently when I use the new GPT-4o model.

If I use GPT-4 and I'm using my ChatGPT Plus subscription, I will still run into the issue where its first response references the deprecated method, but if I inform it of its mistake and provide a link to the official documentation, it'll access the web and try to offer something different. (It still generates unusable code lol but it's at least trying to do something different!)

When it comes to Python and Rails code, I'm seeing that the GPT-4o model is not as good at code generation as the previous GPT-4 model.

It feels like the model is always in a rush to generate something rather than taking its time and getting it correct.

It also seems to be biased toward relying on its training for supplying an answer rather than taking a peek at the internet for a better answer, even when you specifically tell it not to do that.

In many cases, this speed/accuracy tradeoff makes sense. But when it comes to code generation (and specifically when it tries to generate code to use their own APIs), I wish it took its time to reason why the code it wrote doesn't work.


Rapid skill acquisition and adapting to new career opportunities


🔗 a linked post to justin.searls.co » — originally shared here on

Joel’s original post is an excellent read, but I really enjoyed Justin’s statement at the end of his linked post:

One last note: showing up to a client following a weekend-long crash course in a particular technology doesn't make you a fraud. Nearly twenty years in consulting has taught me that the people most worried about misrepresenting themselves and their abilities are the people who have the least reason to worry. The fact they care so much almost always means they'll put in the work when they need to. The real frauds, meanwhile, don't worry at all. And while Joel was holed up in a Starbucks for 72 hours, I'm sure they were having a delightful and relaxing weekend. And Joel's much richer for it, as he's gotten four careers' worth of experience by repeatedly diving into new industries, organizations, and technologies, whereas the real imposters only learned how to talk a good game as they skated through life without ever stretching themselves.

I’ve seen first hand the nerve some developers bring to a first meeting, only to dim gradually over time.

I continue to struggle sometimes with confidence in what I do, but my entire career so far has been non-stop learning.

Every project is an opportunity to learn a new framework, a new project management style, a new business problem.

It’s a hard characteristic to put on a resume, but the ability to pick up new systems quickly is definitely one of my core strengths.

Continue to the full article


Why Can't Programmers Agree on Anything?


🔗 a linked post to jesseduffield.com » — originally shared here on

Programmers disagree on various topics, for various reasons. Personally, I wouldn’t have it any other way. I wouldn’t want to live in a world where all of these software topics are settled and boring. Debates about programming are interesting and intellectually stimulating, and unlike debates about, say, politics, you’re unlikely to lose any friends when you express your functional-programming hesitancy.

Maybe, at the end of the day, that’s the real reason there’s so much disagreement among devs: because it’s so fun.

I should print this out and give it to my wife. This is exactly why I enjoy arguing about dumb stuff.

It’s rarely about winning. Being correct is fun. Arguing over semantics and picking nits over asinine details lets you sharpen your beliefs by pitting them against someone else’s.

It also signals that you truly care about the thing. It’s probably the most common way I show I love something.1


  1. I recognize this makes me insufferable to consume most forms of media with. When I notice the little details in a show where they took shortcuts and were lazy, I can’t help but call them out. Sorry, Shanny. 

Continue to the full article


The Job Hunt Chronicles: Month 2: Beyond the Fog

originally shared here on

A pair of worn-out shoes at the edge of a path leading into a misty forest.

(This is the second in a series of posts going through my journal entries from the last month and talking about what it's like to go through a period of unemployment, self doubt, and finding your spark. You can read the first one here.)

Alright, we've made it through February!

I'm still on the job hunt. I'm still dealing with some crippling anxiety and depression.

But I'm making progress! I'm having interviews, I'm figuring out how to feel my feelings and articulate my values, and I'm finding opportunities to enjoy the moment and be optimistic about finding my next job.

I journaled every single day last month. I fed all 28,000+ words into ChatGPT and asked it to summarize the entries into two sentences using the style of the journal entries themselves. Here's what it said:

Another month down, filled with musings, mild misadventures, and moments of clarity amidst the mundane. Balancing personal passions, family love, and the hunt for professional fulfillment, the journey meanders through the highs and lows, always circling back to the comforting, complex tapestry of daily life.

Man, do I actually sound that pretentious in my own journal? 😂

Anyway, if you're wondering what was on my mind in January, strap yourself in and let's go!

"What are you looking for?"

Gonna put this up front again like I did last month.

I'm looking for a position where I can blend strategic tech leadership with hands-on coding, preferably in a small, mission-driven company focused on healthcare or climate solutions. The ideal environment is a funded startup with fewer than 50 employees, leveraging generative AI, and based in or flexible with the Twin Cities area.

Ideal extras include a flexible 32-hour work week, a hybrid work arrangement, and opportunities for travel and professional development

In short: If you know a mission-oriented startup seeking a tech-savvy strategist passionate about making a significant impact, send them my way!

Activities I've done

I put this section in my last post because it felt like a badge of honor to brag about how many meetings I had in a month. To me, it felt like I was doing something.

All of that pride went down the drain after talking with a new friend who basically said that I'm continuing to burn myself out by grinding through hundreds of meetings instead of doing the actual hard work of sitting down and figuring out what my values are.

Once you know what your values are, you are so much more likely to know what path to walk down.

So in that spirit, I won't mention how many meetings I've had. Instead, I basically spent this month continuing to figure out who I am and what I want.

I'm aware that's not a very satisfying or flashy statement to make in a blog post that purports to explain life in the eyes of someone who got laid off.

But truly, most of what I've done in the last month is learn about my feelings and how to deal with them productively.

I've gone to some of the darkest places I've ever gone in my life this past month. The shame, the fear, the depression, the embarrassment, the anger... all of those feelings are easy to deal with when you ignore them like I had been for my entire adult life.

But your body can only handle ignoring them for so long. Eventually, you find yourself leaving work early and rushing to the hospital because your heartbeat is noticeably irregular, and your heart feels like an orange being crushed in the hands of a strongman, adrenaline secreting between their fingers.

One thousand and six hundred dollars later, you're told that there's nothing physically wrong with you. Go see a therapist.

Your body remembers each and every time you ignore those feelings, those warning signs. Those "gut checks" that you decide to push aside because it doesn't align with what you think you should be doing.

Eventually, it all boils over.

So that's what I've been up to this month: looking back at the past twenty years of my life and beating myself up for years of beating myself up.

It hasn't all been atonement, though. I've also started to hope again. I've had moments where I'm excited again for what's next.

Even if that's something as simple as waiting for a hug from my kids when they get home from school, or watching an episode of Drag Race with my wife every Friday.

Those little things are the things that keep me going, and they're giving me the energy to start looking forward to how I can get back out in the world and be helpful.

Things I've learned

Here are all the random things I've been contemplating over the past month:

👨‍🎨 Personal growth insights

My 7 year old daughter told us she thinks she's getting too old for Barbie.

This was crushing for me and my wife to hear, but for different reasons.

For my wife, it was the prototypical "my kid is growing up" response that all parents feel when they see their kid age. I don't wanna minimize that feeling, because I certainly feel it myself: it's bittersweet to see your kids grow up.

But for me, it was a good reminder that the grass is always greener on the other side.

I can't remember the last time I dreamed about what I wanted. I feel like I've been coasting for at least the last several years.

Besides hanging with my family/friends and the occasional fun project at work, there hasn't been much driving me forward to grow.

And that's probably where a good chunk of my depression is coming from.

I could either sit and analyze the "why" (and trust me when I say that I have), but the more important thing is to be grateful for coming to this realization and making strides towards dreaming again.

My problem is that I, uh, kind of forgot how to do that.

Part of it stems from my engineering brain continually looking for edge cases that cause me to reject a dream wholesale.

Another big part of it might be this fear of losing what I've already got. I worked hard to build a reputation, I've got a great family that needs to be provided for, I've got a house that needs maintenance and improvements, the list goes on and on.

But whatever the reason, I find that dreaming is a muscle that can atrophy. I have a similar theory about being extroverted: after the pandemic, I found being around people to be exhausting in a way that I never felt before. My extroversion tendencies returned as I continually subjected myself to new groups of people.

Dreaming feels the same way: continually practicing and refining the act of dreaming is the only way to get good at it.

That's what makes me jealous of my daughter and son.

I watch them play with Barbies together, and their ability to play baffles me.

How can you just start playing?

How can you come up with new scenarios and then go for it?

I ended up talking to my daughter about this. It felt great to share with her how I'm jealous of her ability to be young and idealistic and have a vision for how her life can be, and I'm jealous of how she's able to express that vision through her play.

She ended up deciding to keep her Barbies, and I'm extremely grateful for that. It means there's still more time for me to learn first hand from the master of dreaming.

She'lo yada, yada.

I was speaking with someone about struggling to make a decision that needed to be made, and he told me about this expression that he heard his family say a lot growing up.

It's a Hebrew expression that means "He who doesn't know, knows."

This pairs nicely with the Derek Sivers axiom of "Hell Yes, or No," where something is either impossible to say no to, or you simply say no to it.

Both of these, of course, are "easier said than done" aphorisms to adopt, but it's good to document them nonetheless.

It's awesome to end things.

I spoke with a friend who ran a very popular blog about his adventures traveling to various breweries, and we were both talking about how we were considering winding down our various beer-related projects.

Throughout my entrepreneurial journey, I keep coming across articles expressing the importance to consider the ending to whatever you start.

At one networking event, I heard a speaker ask "what is the percentage likelihood that you will exit your business?"

The answer: 100%.

Because at some point, you will die.

That is the ultimate finality, of course, but the longer I'm around here on earth, the more I have to start embracing the good side of things ending.

I built mncraft.beer a decade ago because my wife and I were extremely passionate about supporting craft breweries, and we had a goal to get to every single brewery in the state.

Fast forward ten years, our ambitions have changed. It's difficult to convince two young kids to sit in a car for several hours on a weekend, let alone motivate myself to spend all that time traveling to visit a brewery that, in all likelihood, only produces mediocre beer.

I've gotten all that I can get out of that project. My biggest takeaway is that a brewery often is a boon for a small town. Even if the beer isn't going to win any awards, we all collectively need more third spaces, and breweries act as a fantastic gathering place for a community.

According to my Untappd account, I've had 7,445 beers since joining the app in August of 2012. Of that, 4,346 of them were unique. I've had 200 different styles of beers, and I've learned that I like Pilsners, Belgians (anywhere from Dubbels to Quads), Extra Special Bitters, Kölsch beers, and straight up, old school IPAs.

I know what good beer tastes like, and I know what breweries make good beers in our state.

So what's the benefit to continuing that app?

I shared a video from Hank Green last year about letting go of the dreams of your past in order to free yourself up for new ones, and that's the mindset I gotta adopt here.

It's always sad to end things. I remember every closing circle after a show would end in theatre was a mess of emotions and tears. I remember losing our final football game in high school, looking around the field, seeing tears and frustrations mount on the faces of my teammates. You never wanna say goodbye to something that gave you so much joy.

It kind of reminds me of this exchange from Hook (one of my favorite movies of all time):1

Hook: Are you ready to die, boy?

Peter: To die would be a great adventure.

Killing off parts of our former self on which we linger is a privilege which allows us to fully move on to the next adventure.

Al Snow on Success

I felt under the weather this month for a couple days, and on one of those days, I decided to watch the Wrestlers documentary on Netflix.

Two things I want to mention about that:

First, the whole thing felt like a work-shoot to me. I love the way professional wrestling blurs the line between what's real and what's made up.

It felt like the documentarians were very intentional about painting Al as the babyface (the good guy) and Matt Jones as the heel (the bad guy).

I hope OVW gets a good boost in viewership as a result of the documentary. They did a great job of showing how the sauce gets made, and I'm sure they know it's the exact sort of thing that hooks in smart marks like me.

Second, since I assume all of those wrestling terms are not meaningful to most of you, here's a great quote that comes at the end of the documentary:

If you equate success in a destination (that destination being WWE), you’re probably not gonna get it. But if you equate success in doing something you’re passionate about and that you love, and that gives you purpose and drive, then you’re successful.

I keep asking myself what success means to me, and while I don't have a solid answer yet, maybe it's because I'm still working on giving myself permission to dream without restrictions.

I'll get there soon, though. I can feel it.

Tracy Chapman's "Fast Car".

After Tracy performed with Luke Combs at the Grammy's this year, I saw a post that talked about her performance of Fast Car in front of an extremely frustrated crowd at Wembley Stadium in 1988.

You can find recaps of the story online, but the long and short of it is that Stevie Wonder was refusing to go on stage at this birthday celebration for Nelson Mandela, so Tracy came back out on stage and performed Fast Car.

When you watch the video, you hear the crowd go from rowdy to genuinely moved.

It's hauntingly beautiful. That song has always been a staple in my rotation, and after hearing it performed in this way, it makes it even more special.

We should use all of our senses to find our way.

I feel like the best metaphor I can give for how depression feels to me is a fog that completely obstructs my vision.

No matter which direction I look, all I see is a dense fog of nothingness.

But what I keep reminding myself is that even when you can't see, you still have at least four other senses you can use.

I'm not sure how to use those other senses yet, but I'm starting to use my ears to listen for opportunities, my nose to sniff out which direction to walk in, and my gut to validate which direction feels right.

The Dan Patch Club serves as a template for who I wanna be when I get old.

My dad invited me to speak to The Dan Patch Club, which is a subgroup of residents and friends of the Masonic Home in Bloomington dedicated to learning and exploring various topics together.

I'm ashamed to admit that I'm not immune from playing the generational blame game. But placing each other into broad, faceless groups like "boomers" or "millennials" only makes it harder for us to pool our collective wisdom and work together to solve real problems that our society faces.

Short of vague jokes about mysticism and ritualistic masonic secrets, I honestly had no idea what to expect when my dad asked me to come speak to these Masons.

I figured the hour would be spent giving a broad introduction to generative AI tools like ChatGPT and Midjourney, but what surprised me was how many hands were raised when I asked "how many of you have used ChatGPT?"

I should've known better because I did know that this room contained two PhDs and a retired attorney. All of these guys had extremely poignant and informed questions about the use of AI in our society.

We talked about the legal implications of deep fakes, the ability to spread election propaganda at unfathomable speed, how these models "reason" and come up with "truth", and the most important question which continues to plague us information workers: "how do you turn off predictive autocomplete in Microsoft Word?"

As we were wrapping up, I actually didn’t want it to end in the same way I haven’t wanted many of my conversations to end lately.

Sparking that curiosity in people is one of the key values I've been aspiring towards as I craft my vision for the next ten years.

I hope when I’m their age, I’m still kickin’ it with my homies, whomever they may be, nerding it up about complex topics, continuing to challenge myself and grow as much as possible.

Is anxiety only reducible when you are focused on your basal instincts and needs?

It seems like the only known treatments and mitigations for anxiety center around mindfulness and getting your brain to live in the present.

Is that really it? Living in the now is the only way to make anxiety go away?

It seems like there should be more we can do to harness our ability to look into the future while keeping the major doom scenarios from spiraling in our heads.

Meditation?

Anyone have any good suggestions for developing a consistant medication practice?

I have tried apps in the past but haven't found them to be sticky or altogether helpful.

Daniel Tiger isn't only for kids.

Toward the end of February, I had a major backslide with my mental health, and it kind of came to a head one day while I was dropping my son off at daycare.

I usually let him pick out what we listen to, and he chose the Daniel Tiger's Big Feelings album.

One of the first songs on that album is called "Close Your Eyes and Think of Something Happy."

I ended up at a red light and, as I found myself descending into some negative thoughts, I decided to do exactly that.

And you know what I saw?

Absolutely nothing.

It crushed me.

I'm a grown ass man, and I couldn't even come up with a single thing in that moment to think of in order to make me happy.

Suddenly, from the back seat, I hear my boy giggling and singing along.

Man.

That moment highlighted to me how badly I needed help through this stuff. That there is a ton to be happy about.

I'm glad my son was able to help me get out of my head.

And I'm glad I'm no longer dismissing those songs as "simple kid songs." We can all use a reminder for how to process sad and angry feelings in a healthy manner.

It's easier to venture out when you know you can return home.

I heard Dr. Becky mention it in that Farnam Street podcast, but she was talking about the relationship between teenagers and parents.

I've been considering the sentiment in regards to music.

For the past five years, I've been very curious about genres of music from which I've typically shied away.

I decided to listen through my entire local library of music, which is currently sitting at 83 days of non-stop new tunes.

That library is filled with music of every type of genre imaginable. Country. Experimental free jazz. 70s East African jams. Norwegian death metal. A mashup of Metallica and The Beatles. All kinds of EDM mixes.

It took more than 4 years to get through all of it, but I finished it with an appreciation of the core albums that have been there for me my whole life.

The other day, I decided to shuffle my "key albums", which is any album I've given a star rating of 4.5 or higher.

I was instantly transported back to several happy moments in my life. Building Ralph Wiggum images in front of my computer in my childhood bedroom. Walking home to my (eventually) condemned house in college. Going for a run around the pond in Bloomington. Riding the light rail home.

Solitary moments where I didn't need to worry about what other people would think of what I was listening to.

A place where I can be myself.

That concept applies to much of our soul searching. We are only able to be truly adventurous when we know there's a safe place for us to come home to when we're weary from exploration.

I find myself drawn to people who are able to speak passionately about their cause much in the same way my kids talk about Santa Claus or the Easter Bunny.

There's something magical about believing in something.

There's something special about having solid, firm convictions on which you stand.

It's this palpable energy you can feel emanating from someone sharing their passions.

I felt it at a couple of job interviews I had last month.

I felt it while speaking with friends about AI.

I felt it playing crazy rummy with my wife and talking about what we want to do for our ten year anniversary.

Maybe that's the feeling I should be chasing. Is that feeling "joy"?

I'm not sure where I started getting so disillusioned about that feeling in a professional context.

But I'm eager to find a job where I can surround myself with that energy once again.

Kids simply do not care about success like grown ups do.

When my daughter was 4, I'd watch her play a game where she'd have to pick the right word and she would purposefully pick the wrong one.

Like, I knew she knew the right word, but she intentionally picked the wrong one.

It sent me up a wall.

But one day, I asked her why she was picking the wrong one on purpose.

She said, "I like the noise it makes when I get it wrong."

My kids are way better at learning and dealing with uncertainty than I am.

And success is whatever you define it to be.

I can't thank you all enough.

A lot of my journaling over the past month is just, like, truly dismal.

But there are moments of light, and they're all thanks to you all.

I am forever indebted to the literal hundreds of people who have reached out to ask me how I'm doing. I'm so fortunate that I've got so many people who care about me.

I feel like I'm not able to be my own best friend right now. I find myself continually returning to a place where I can't stop beating myself up.

You know how people used to take their old cars that they don't want anymore and drive them deep into the woods and leave them there? That's how I feel right now. I feel like a beat up old car that's completely rusted through, nature slowly consuming and reclaiming it.

But it's conversations with many of you that are helping me see that's not an accurate picture of reality.

So thanks for checking in on me. It's definitely helping me get through the fog.

👨‍💼 Professional growth insights

If someone calls themselves an "expert", it's because they're trying to sell you something.

This insight came from a talk by the incredible Jim Wilt that technically came from January, but I didn't include it in last month's post and want to make sure I include it now.

My inbox is a prime source of stress.

It's a roulette wheel where sometimes you win big (a job offer, a congratulatory email, a rave review), but you also sometimes lose big (a threat of a lawsuit, a late bill notice).

I'm still learning how to separate work from my personal life, but a good place to start is to go to your settings on your phone and turn the inbox off for your work email.

You don't need to remove it altogether.

But when I was at Bionic Giant, I turned it off, and it helped my stress levels immensely at night.

It allowed me to turn it on if I needed access to a message on my phone during the day, but then I could easily turn it off at night so I didn't get distracted when I went to my inbox to read a newsletter.

It's awfully hard to say "no."

I wrote a lot in my journal this month about how a lot of my anxiety stems from saying "yes" to everyone and everything.

One reason I can't say "no" is because I'm not sure what I actually want. Saying "yes" at least gives me the chance to figure out if it's something I want.

But when I say "yes" to too many things, I never get a chance to sit back and reflect on whether it was something I wanted.

Which basically describes the first decade+ of my professional career. I say "yes" to the point where I have no room in my schedule to reflect.

I need a better analogy for how generative AI arrives at its solutions when compared to a search engine.

If anyone has any ideas, let me know.

I don't get why I feel so guilty for feeling sick.

I find it next to impossible to rest as it is.

But when I'm sick, it's like my anxiety works in overdrive to try and let me know that I'm falling behind on stuff.

I said this earlier, but I felt a little under the weather one day this past month, and I ended up calling folks and cancelling my meetings with them. The guilt I felt was incredible.

I appreciate having anxiety to keep me thinking through possible problems and pushing myself to move forward to fix them, but the combination of the "fight or flight" and "freeze" responses makes it tough to get anything done.

Learning new things becomes a lot harder as you age.

I was turned down from a job I was rather hopeful to get because I don't have the experience in the Javascript framework that they were looking for.

So I decided I was gonna sit down this past week and learn it.

I tell you, I watched three different tutorials, and I could not bring myself to finishing any of them.

The problem here is that I already know how to build web apps. I've been doing it since I was eight years old.

I've learned how to build web apps by hand, by using PHP, by using Laravel (a framework built using PHP), by using Wordpress, and by using Ruby on Rails.

And you know what I've realized after all that learning? They're all slightly different ways of achieving the same thing.

And guess what? There are roughly a dozen different additional popular ways to build and deploy web apps. There's all kinds of containerization techniques to deploy scalable platforms. There are cloud providers that allow you to spin up all sorts of architectures to scale your platform. There are a bajillion different Javascript frameworks to write your code in, along with a quadrillion CSS frameworks to style your apps in.

I may have hit my Morgan Freeman in Shawshank moment where I simply don't care what technology we use anymore.

You feel compelled to use Rails to build a monolith? Great!

You think you're gonna hit a scale that requires a complex microservice infrastructure built on hundreds of lambdas? Fine, sure, let's do it.

The thing is, I don't want to learn a new framework for the sake of learning a new framework.

If I needed to figure out a specific architecture for a job, I am 100% confident that I could do it, even if it requires using a framework that I've never used. That's what nearly 30 years of building on the internet does for me.

[...]

Can I be real with you all for a minute?

Of all the sections I've written in this blog post, this one is the one I am having the hardest time releasing to the world.

I have a feeling I'm coming off as a bit of a crybaby.

I recognize that any craftsperson needs to hone their craft and stay up to date with the latest tooling in order to be marketable.

My problem may be that I'm conflating burnout symptoms with my general interest in learning new things.

In every development project I've ever worked on, I've had to learn new things.

There's always a new API, a new SDK, a new framework to pick up.

It's been part of my agency life for my entire career.

Maybe my problem isn't with learning new things. Maybe it's that I'm exhausted from having to whip around from tech to tech without ever taking an opportunity to go deep on any one of them in particular.

Even as a seasoned Ruby on Rails developer with more than a decade of use, I feel like I'm falling behind with all the fancy new Rails 7 functionalities like serving HTML over the wire.

There are a million different ways to build websites, and I'm struck with the realizing that I'll never learn all of them.

Maybe I have to decide whether I want to sharpen the tools I do know intimately, or whether now is a time to adopt new tools and put in the work to become an expert with those ones.

They say learning new things becomes harder as you get older.

What's next for me

Last month, I committed to coming back with a more clear vision of what I want my life to be. I don't think I'm at a point where I'm ready to articulate my vision, so I am going to continue spending time honing that through journaling, meditation, and conversation. I hope to be in a place to share a rough draft with y'all next month.

I also want to keep up my recent blitz of sharing links here on my blog. I'm going to add in a "tagging" feature to my posts so I can start keeping better track of things I talk about on here and find them more easily.

I also want to start podcasting again. I will commit that by next month, I'll be able to tell you what my new podcast will be about. My friend Dana and I are going to start meeting once a week to hold each other accountable on our various endeavors, and that's what I'll be spending that time plotting.

If you're reading this and want to know how you can help me, here's how:

  1. If you know of a full time (32-40 hr/week) job opportunity where I can help architect a complex software system for a meaningful organization and lead a team of people to get it built, please send it my way.
  2. If you come across any thought leaders who are speaking about AI from a perspective of what it will mean for our humanity (in how we work, how we organize, how we think, etc.), please connect them with me!

Thanks again for reading all the way to the end! If you did, I would love to hear if anything resonated with you. Shoot me an email or a note on LinkedIn.


  1. The next line in this exchange is, ironically, "Death is the only adventure you have left," which I don't feel fits neatly into my narrative here, but it's still a great movie. I can't wait for my kids to be old enough to enjoy it like I still do. 


JavaScript Bloat in 2024


🔗 a linked post to tonsky.me » — originally shared here on

It’s not just about download sizes. I welcome high-speed internet as much as the next guy. But code — JavaScript — is something that your browser has to parse, keep in memory, execute. It’s not free. And these people talk about performance and battery life...

Call me old-fashioned, but I firmly believe content should outweigh code size. If you are writing a blog post for 10K characters, you don’t need 1000× more JavaScript to render it.

I’ll be honest: I’m a bad modern front end dev.

I only have a limited amount of experience with frameworks like Vue and React.

But this blog post gets to the reason why: massive JavaScript framework bloat is often not necessary.

As you can see in this post, many of these incredibly basic sites that display text (like Medium and Substack) still require 4mb of JS code! That’s insane!

It’s like the old axiom goes: use the right tool for the job.

And maybe think twice before slapping a thousand marketing pixels on your landing page. 😅

Continue to the full article


DOOM Turned Thirty


🔗 a linked post to brainbaking.com » — originally shared here on

I can understand how a VGA signal works when you give me a schematic and I’ll probably be able to program something for it. I can understand single-threaded CPU architectures and can probably write assembly or an emulator for it. But I have a lot of trouble understanding the internals of the digital 4K HDMI/USB-C output port, and even if you give me three months, I will never grasp even the basics of what’s under the hood of modern CPU chips. That’s a shame.

In that sense, I’m a bit worried that we’re over-engineering everything just because we can. Something that a single person could understand in 1993 now requires a dedicated team with ten years of experience.

On the one hand, I bet the DOOM team felt the same way thirty years ago about the confusing and complex systems of the mid-1990s.

But on the other, I definitely sympathize with the author. I feel spoiled that I was able to mostly learn how to program websites by right-clicking and viewing source.

Have you ever tried doing that on a modern website? It’s complete gibberish. Everything is obfuscated behind embedded, compressed Javascript libraries and CSS styling that is intentionally complex to prevent things like ad blocking tech from discovering which <div> blocks to hide.

Regardless, we should all wish a very happy birthday to DOOM.

I am currently looking at my Nalgene bottle of stickers and fondly looking at the Chex Quest one.

Also, I will never forget iddqd, idkfa, and idbehold.

Continue to the full article


Dependency rejection


🔗 a linked post to amontalenti.com » — originally shared here on

Dependencies seem to be all around us, both in the real world, and in programming. And they are perniciously distracting in just this way. Have you ever noticed how rare it is for you to just do something?

If so, you might have been worrying, up front, about dependencies.

Being a senior developer means you spend most of your time stressed out about the optimal way to get something shipped.

But I don’t just see that stress manifest in my professional life. Ask my wife how many side projects around the house she wants me to do that have not even been started.

It’s why I admire people who just start projects with no fear.

And it’s a trait I find myself trying to instill in my children, who will naturally jump into a task with both feet and zero regrets while I’m impatiently hovering over them, fretting about “safety” and messes that’ll need to be cleaned up.

Continue to the full article


The Engineer/Manager Pendulum


🔗 a linked post to charity.wtf » — originally shared here on

The best frontline eng managers in the world are the ones that are never more than 2-3 years removed from hands-on work, full time down in the trenches. The best individual contributors are the ones who have done time in management.

And the best technical leaders in the world are often the ones who do both. Back and forth.  Like a pendulum.

Continue to the full article


Solving common problems with Kubernetes


🔗 a linked post to blog.adamchalmers.com » — originally shared here on

I first learned Kubernetes ("k8s" for short) in 2018, when my manager sat me down and said "Cloudflare is migrating to Kubernetes, and you're handling our team's migration." This was slightly terrifying to me, because I was a good programmer and a mediocre engineer. I knew how to write code, but I didn't know how to deploy it, or monitor it in production. My computer science degree had taught me all about algorithms, data structures, type systems and operating systems. It had not taught me about containers, or ElasticSearch, or Kubernetes. I don't think I even wrote a single YAML file in my entire degree. I was scared of ops. I was terrified of Kubernetes.

Eventually I made it through and migrated all the Cloudflare Tunnel infrastructure from Marathon to Kubernetes. I didn't enjoy it, and I was way over my deadline, but I did learn a lot. Now it's 2022, and I'm leading a small team of engineers, some of whom have never used Kubernetes before. So I've found myself explaining Kubernetes to them. They seemed to find it helpful, so I thought I'd write it down and share it with the rest of you.

I immediately identified with this post after the author mentioned he was terrified of Kubernetes, because insert Chris Pratt meme here.

This post not only made the point of Kubernetes abundantly clear, it also was unveiled in such a clever and delightful way whereby each problem unveils a slightly more complex way to utilize Kubernetes.

Continue to the full article