Category Archives: Personal

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 it. You want to get better at it 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

Blind Sketching

I want to sketch more, but it seems a little like a chore sometimes. For example, I used to go to life drawing sessions, but it’s a four hour commitment with travel. So, instead I’ve been doing more quick, blind sketches. In ink.

A blind sketch is a sketch you do by looking only at the subject and not your paper at all. It takes at most a couple of minutes for me.

Here’s one I did from a hotel bed last week:

Blind sketch of some stuff on a shelf in a hotel

I like doing it in ink because there is no way to fix a mistake. You have to just move on.

Evening Pages

I have been doing Morning Pages on and off for a few years. If you are new to them, it’s the practice of writing handwritten, non-stop, stream of consciousness, non-edited text for three pages. It takes about 20-30 minutes once you get going. The benefit to me is that it proves that I can force myself to write. It trained me to push past whatever it was that held be back from writing more.

I started doing them again as an exercise in The First 13 Weeks of 2026. It’s part of how I am Making Happiness a Priority. It’s a small boost to the day when I’m finished.

But, for a couple of days this week, I didn’t find time in the morning and decided to do them at night instead—close to bedtime. In these sessions, I treated it more like a shutdown than a boot up.

In the morning, I search for ideas to write about later in the day. At night, though, I have been unloading my thoughts. The things that might occupy my mind as I try to drift to sleep get their final say.

Making Happiness a Priority

My running coach, Holly Johnson, wrote a book a few years ago called How To Make Feeling Good Your Priority [ad] (my review). In it, she wrote about how she applies her running mindset to everyday life. Specifically, when feeling bad during a run (tired, hurt, etc), she would find a way to feel good right now. She’d seek one small adjustment that could make an immediate difference. Her aim was to stop a bad moment from becoming a bad day.

Related to that, I once got some advice to maintain a list of small things you could do to make you happy. They could be quick, or more involved. Perhaps some are situational and some could be done whenever. The idea is that you could use them to substitute out a bad habit or for a pick-me-up. Like, instead of doom scrolling, you listen to a song you like.

In that spirit, I have developed a list of small things that make me happy (or will make me feel like I had a good day). I am not trying to get all of them every day. They’re meant as a way to fill time with things that lift me up instead of doing things I would prefer to do less of. A lot of them are tied to my 2026 theme of Fuerte y Suerte, but not all.

  1. Work towards 10,000 steps
  2. Hang on a pull up bar (there’s one in my office)
  3. Sit in a deep squat for 5 minutes
  4. Go for a walk outside
  5. Work towards my daily protein goal
  6. Read a book
  7. Do Morning Pages
  8. Journal
  9. Selfie Video (5 min) to practice extemporaneous speaking
  10. Call, text, or meet with a friend
  11. Listen to Spanish (Podcast, Music)
  12. Fill a page with Spanish writing
  13. Code on a side project
  14. Tidy
  15. Meditate
  16. Quality time with my wife
  17. Listen to music
  18. Sketch

One nice thing is many of them can be combined. I can go for a walk outside, get steps, and listen to Spanish Music. Or go for walk outside with my wife. Read a book on the elliptical. I did my morning pages in Spanish yesterday. Many take just a few minutes. A hang is less than a minute right now. I can do it while waiting for a compile (jk, I use Python).

And, if I do want to just watch some YouTube, I can sit in a squat or find something in Spanish to watch. Or find some music videos (and dance).

If you are looking to find a way to break a bad habit, a list like this is useful to implement a substitution strategy. If January 1st makes you motivated to make change, then Use Motivation To Program Your Environment—make the list and put it somewhere you can see it.