Category Archives: Personal

26 for 26 3rd Quarter Update

As of my last update, I was at 11 of 26 of my 2026 mini-quests done.

Here’s what changed:

  1. ✅ Make a meal with soy curls: Butler Soy Curls are amazing and everyone should try them (especially vegans)
  2. ✅ Find a place locally where I can get Fermented Bean Curd: Also amazing. Available in asian markets (for me it was a Vietnamese market)
  3. 👌 Go to a live musical: I have tickets to Oh! Mary in NYC, so this should happen.
  4. ⚠️ Go for a weekend away to a new place in Florida: Not Done, but I have booked a vegan retreat near Gainesville in January.
  5. ✅ Get App-o-Mat on current Django and back to being a live server (not static pages): Done. Also updated to latest Python, Django and other deps. Used my local AI setup for a lot of updates.
  6. ✅ Write 10 Amazon Book reviews for books I love: Done

So 15/26 done. I will definitely come up short, but here are the ones I think I could also knock off:

  1. 👌 Hang pictures of my family in my guest room: I am definitely going to do this.
  2. ⚠️ Go to at least one arena-sized concert: I could just do this to do it. Maybe.
  3. ⚠️ Have a coffee or lunch with someone who lives in my building (see Improving My Social Connection Index): I will definitely do this.
  4. ⚠️ Host someone new for dinner at my place: I will do this to do it — it will be easy.
  5. 👌 Release something new to open-source: I will do this to do it.

That would get me to 22.

Identities Under Failure

Associating goals with a personal identity works for me. It becomes a North Star. Something I can always strive for and a source of motivation. Thinking of myself as a programmer causes me to program even when there is no reason to. I believe an identity is what you do. So, a runner runs, a writer writes, and I did the things I had to do to become those things.

If an identity is leverage on the way to success, then, like other forms of leverage, it can compound failure as well. Warren Buffet clarified Charlie Munger’s quote on leverage this way:

“My partner Charlie says there is only three ways a smart person can go broke: liquor, ladies and leverage,” Buffett said during a 2018 CNBC interview. Then came the twist: “Now the truth is — the first two he just added because they started with L — it’s leverage.”

Leverage is just a way of multiplying a force, so this makes sense. Identities can compound failure in multiple ways.

  1. You want an identity that others decide. This one is common, and even though I know this is bad, I am not immune. I know that I would like to have achievements that come with recognition, and I know that I might not reach that. At some point, when I accept that, it might make me quit.
  2. You want an identity that harms you to achieve. For me that’s being a runner. My knees and ankles can’t handle it any more and last year I was sidelined for months because I was too stubborn to give it up. I have since picked something more sensible to strive for: being “Strong”. I think I can ride that out for a couple of decades.
  3. You want an identity, but not only if it’s easy. I worry that this is what is holding me back from working at understanding Spanish. I hope that my demotivation is that my plan is bad and I need to work on finding a better one.
  4. You want an identity for money. I can’t say money is not in the mix for me, but I see people fail or give up doing things that they only wanted because of the money. I can’t deny that it does also seem to work for some. I don’t think it’s a bad way to get started, but most high paying activities only pay off to the skilled and that often requires work that isn’t always paid (or worse for this problem, costs money).
  5. You want an identity that you don’t really want. For me that was “home owner”, which I thankfully don’t care about any more. This happens a lot to kids who internalize their parents’ wishes for them.

The main way these work against you is they turn setbacks into quitting. For me, the main way I check this for myself is by really asking myself if I want the identity for external reasons (like recognition or money) or if I want it because of the change it will make in me and for the fun of working at it. For self-esteem. Something I experience mostly in my own mind. Can I reframe what I call it in that way?

In some cases, quitting might be good. Better to fail fast at something you don’t want than to toil away at it for years. Even if you get it.

An Identity is What You Do

I think of Identities as Forever Goals that I might never fully achieve or could always “be more of”. So, while I am definitely a “Programmer” and am proud of that ability and my accomplishments, I can see that there is a lot I could still learn and achieve. My other aspirational identities like “Writer” or “Spanish speaker” might never be realized. I’m ok with that as long as keeping trying.

To me, my identity is what I do, not what I am. If I keep writing, even on this blog, even if no one reads it, then I am doing what a writer does. That’s enough.

I have to keep reminding myself because I am struggling with Spanish, and it’s mostly because I don’t do the work. It won’t matter how much I want it or think about it or hope I get better. The truth is that I haven’t fully embraced the work I need to do. Yet.

Forever Goals

I like infinite games. These are things you do over and over because they are fun and you want to get better at them. You want to get better so that you can make the game more fun and want to play it more. The game is the point. But I often do have a secondary reason to play them: to make progress on a forever goal.

My podcast, Write While True, is one example. Its name is even a nod to infinite games because it’s an infinite loop. The goal is not to get listeners or make money. The podcast’s forever goal is to make me into a better speaker. Now that I have a co-host, it’s also to make me a better listener and conversation partner.

This blog is another example. I mostly write just to write. But it has the secondary effect of making it more likely that I could express these opinions more eloquently later. The forever goal is something like: to organize my thoughts. This blog has also led to serendipitous opportunities, and I would always want that.

I would also say that cooking is an infinite game for me. I enjoy the activity of cooking, and I do want to do it more to get better at it. But, of course, I have a forever goal of eating regularly and being healthy, which this game supports. Similarly, I go to Crossfit, which has lots of infinite games embedded in it and supports my forever goal of becoming fit.

I also have forever goals that I haven’t figured out a supporting infinite game. One that I struggle with right now is being fluent in Spanish. I started last year, and while I have gotten better, it’s a struggle. The studying I do is not a fun game.

To be clear, I am not looking for something like DuoLingo, which is gamified, but not a game. I use it, and it’s fine, but I wish I could turn off streaks, trophies, badges, leader boards, gems, and treasure chests. These features don’t make the app more fun. They are slapped on. This is also true of Fluent Forever, but not as much. Parts of that app are genuinely fun.

In the next post, I’m going to think out loud about this problem a little more.

26 for 26 Half Year Update

At the beginning of the year, I made a 26 for 26, which is a list of 26 mini-goals for 2026. Here they are with their status. I use ✅ for done, 👌 for easy, ⚠️ for hard but possible, 🛑 for probably will not get done.

  1. ⚠️ Bench my weight: getting closer but at a plateau — might need to lose 10 pounds :)
  2. ⚠️ Be able to do 10 pull-ups: I think I might get there. Losing 10 pounds would also help this
  3. 👌 Make a meal with soy curls: Not done
  4. 👌 Find a place locally where I can get Fermented Bean Curd and Nattō: Farmer’s market had Nattō. Still looking for bean curd
  5. ✅ Add A+ Content to the Amazon page for my book: Done
  6. ✅ Try Amazon ads: Done (wasn’t worth it)
  7. ✅ Go to an intermediate Spanish meetup: I use iTalki instead, but I’ll probably try this too.
  8. ✅ Cook one new thing from each vegan cookbook I have: Done
  9. ✅ Leave 10 books in the donation mini-libraries around town: Done
  10. 👌 Hang pictures of my family in my guest room: Not done, but my excuse is that I moved apartments. Should be easy though.
  11. 👌 Go to a live musical: Not done yet, but did go to a play about Earth Kitt. Should be easy.
  12. ✅ Go to a NY Liberty game: Done. Went to opening day in NY.
  13. ⚠️ Go to at least one arena-sized concert: Not done.
  14. ⚠️ Have a coffee or lunch with someone who lives in my building (see Improving My Social Connection Index): Not done, which is a little embarrassing
  15. ✅ Join a gym that has a social component: Done. Crossfit.
  16. ⚠️ Host someone new for dinner at my place: Not done yet, but maybe doing #14 will fix this.
  17. ✅ Try three new restaurants for dinner in Sarasota: Done
  18. ✅ Try two new restaurants for dinner in NYC: Done
  19. ⚠️ Go for a weekend away to a new place in Florida: Not Done
  20. ✅ Attend a local political gathering: Done.
  21. 👌 Release something new to open-source: Not done, but my raylib game could either be a candidate or spawn off something.
  22. ⚠️ Get App-o-Mat on current Django and back to being a live server (not static pages): Not done.
  23. 🛑 Publish 10 articles on third-party sites: Not done, and probably will not happen.
  24. 🛑 Appear on 5 podcasts: Not counting my own, I’ve been on two.
  25. ✅ Publish 10 episodes of my podcast: Write While True Podcast: Done, and more are coming
  26. 👌 Write 10 Amazon Book reviews for books I love: Done some, should knock this off soon

So 11/26 done, which is less than 13 at the halfway point. Not horrible.

26 for 26 March Update

At the beginning of the year I wrote down 26 fun mini-goals to try to do in 2026. I gave an update at the end of January and here’s another one with an update since then.

  1. I’ve been doing well with my vegan recipe books and I also found a great new recipe online for Sopa Locro de Papa that connects me to my Ecuadorian roots.
  2. I’ve donated all of the books I don’t want to keep (way more than 10), so that goal is done.
  3. I went to a new restaurant for valentine’s day in NYC.
  4. I appeared on the Thinking in Tech podcast where I talked about tech debt and AI.
  5. I released episode 48 of Write While True.
  6. I wrote one new Amazon Book Review for Forever Fit [ad] by Maxime Sigouin
  7. I started a new open-source project to package up some visualizations I have made in D3 and want to use in the Google Sheet I ship with my book, Swimming in Tech Debt.

If you want to see the sheet that I use to manage tech debt and get free emails on how to use it, sign up below:

Finding My First Open Source Contribution

I keep track of my GitHub open source contributions on this site’s GitHub page, but only back to 2013. According to GitHub, I opened my account in late 2010 to open a couple of issues on Yammer.net, which I was using to build an internal tool for Atalasoft that needed access to our Yammer data (Yammer was a precursor to Slack).

My first GitHub source contribution was to YUICompressor (a JavaScript compression tool) to output a Munge Map to aid debugging. I PR’d it in 2011. I needed this to help debug Atalasoft’s JS code in production.

But, that’s just GitHub. I’ve been posting code in other places before that. Here’s a multithreaded prime number sieve in clojure from 2008. Here’s a port of Apple’s CPPUnit to run on Windows from 2006. I found evidence that I published a JavaScript Code39 Bar Code Generator on my Atalasoft blog in 2008, which also has a Code39 web app based on it (which hosts the JS code). I have a lot of code snippets on StackOverflow, but only after 2008. My first post with code was in 2003 (comparing jUnit and NUnit).

I had a distinct memory of emailing an open source dev with a multi-threaded race condition fix for a C++ data structure that we used at Spheresoft. Looking at a list of our external libraries jarred my memory that it was WFC by Samuel R. Blackburn. I also found the WFC release notes in the Wayback Machine that mention my fix. He migrated WFC to GitHub much later, but I found a comment mentioning my fix. The actual diff predates the migration, but it’s the double-checked locking directly below the comment:

    // 1999-12-08
    // Many many thanks go to Lou Franco (lfranco@spheresoft.com)
    // for finding an bug here. In rare but recreatable situations,
    // m_AddIndex could be in an invalid state.

So, that’s 1999. Ironically, my oldest verified contribution is actually on GitHub, but predates its release by about eight years. Where’s my green square?

Before that, I have to go by memory because I can’t find the originals.

One thing that came to mind was back in college. I co-developed code for our computer center to draw plots on a Unix PC terminal (saving paper). Using that code, we also built a Unix PC driver for GNU Plot and sent it to them. I am pretty sure this was hosted on MIT’s Athena.

That would be in 1991 or so. I did some simple searches and didn’t find it, but supposedly there are FTP archives from that era, so I might try looking later.

What Makes a Good First Vibe Coding Project

Code can be dangerous to run. It could have security issues. It could leak secrets. If you don’t know what you are doing yet, vibe coding is a good way encounter those problems fast.

Here are some aspects of a project that make it a good one to start learning how to vibe code. This won’t make them perfectly safe (no code that you don’t read could be). But, here’s where to start.

  1. It is a tool that only you will use
  2. It doesn’t need to deploy code to a server that is exposed to the public Internet
  3. It doesn’t need access to any services that require authentication
  4. It is meant to be a prototype
  5. It is run client-side only in a sandbox. For example: a 100% in-browser JavaScript or mobile app.

Games fit most of these.

I’ve been having fun with my nephew writing JavaScript games using PhaserJS. Agents seem to know this library well and we almost never need to look at the code. The games run in a sandbox (the browser) and don’t require any server-side code (that could be hacked).

26 for 26 in January

A few weeks ago, I made a list of small wins I am going to try to have in 2026. To help me be accountable to them, I am going to make an update post each month. Here’s what I have done so far:

  1. I found a place to get Nattō (my farmer’s market) and got a jar last week.
  2. I added A+ Content to the Amazon page for my book.
  3. I tried Amazon Ads (I’ll write a post next week about my thoughts on that).
  4. I cooked one new recipe from one of my vegan cookbooks last night (I think it will be worth doing again).
  5. I left 4 books in donation mini-libraries.
  6. I joined CrossFit again (it’s my best option for a 3rd Place).
  7. I made a reservation for a new (to me) restaurant in NYC.
  8. I went to a gathering of neighbors in my building and met a few new people.

And I am making progress on some of the other things on the list.

26 for 26

I heard this idea from Gretchen Rubin originally and was recently reminded of it by John August. The idea is to make a checklist of things to do in the upcoming year (i.e. 26 things to do in 2026). It’s another alternative to resolutions (see also: Yearly Themes).

Each item should be doable. To me, it’s an extension of Making Happiness a Priority and my aspirational goals to be Fuerte Y Suerte.

  1. Bench my weight
  2. Be able to do 10 pull-ups
  3. Make a meal with soy curls
  4. Find a place locally where I can get Fermented Bean Curd and Nattō
  5. Add A+ Content to the Amazon page for my book
  6. Try Amazon ads
  7. Go to an intermediate Spanish meetup
  8. Cook one new thing from each vegan cookbook I have
  9. Leave 10 books in the donation mini-libraries around town
  10. Hang pictures of my family in my guest room
  11. Go to a live musical
  12. Go to a NY Liberty game
  13. Go to at least one arena-sized concert
  14. Have a coffee or lunch with someone who lives in my building (see Improving My Social Connection Index)
  15. Join a gym that has a social component
  16. Host someone new for dinner at my place
  17. Try three new restaurants for dinner in Sarasota
  18. Try two new restaurants for dinner in NYC
  19. Go for a weekend away to a new place in Florida
  20. Attend a local political gathering
  21. Release something new to open-source
  22. Get App-o-Mat on current Django and back to being a live server (not static pages)
  23. Publish 10 articles on third-party sites
  24. Appear on 5 podcasts
  25. Publish 10 episodes of my podcast: Write While True Podcast
  26. Write 10 Amazon Book reviews for books I love