Author Archives: Lou Franco

Aspirational Plans for 2025

On this blog, when I talk about my annual plans, I am talking about aspirations. The vast majority of my time is spent on living my normal life: work, home, cooking, travel, time with wife, family, and friends, etc. When I look back at 2024, I see what I can do with my marginal time—an hour for fitness and a couple of hours a day to either write or work on my own software added up to a lot.

So, this year I hope to apply that lesson to marketing my finished work better. My strategy is to create content that supports it. I will toot, blog, post on LinkedIn, and email my list — but try to make the content useful in of itself (not promotional). I also want to podcast and YouTube too, but that’s a stretch goal. The written posts don’t take very long—but podcasting and videos are much harder for me.

For fitness, I am going to swim at least twice a week. My apartment has a pool, but I rarely take advantage of it. I need low-impact cardio alternatives anyway, but this will also remind me of my book (Swimming in Tech Debt) and my general 2025 theme to “Just Keep Swimming”. Another advantage to swimming is that it’s very hard to listen to something while doing it, so I have 30 minutes with just my own thoughts—it’s very meditative. It’s an analog hobby that affords solitude (like in Digital Minimalism by Cal Newport [affiliate link]).

My work since the late nineties has been mostly in developer tools or tools for productivity, and even the startup I’ve been working on is in this general area (personal productivity). I want to expand on this. I have ideas for tools that support the themes I write about, and I want to explore those in 2025. To play on my book title and theme, the ideas are fins (to help you go faster) and goggles (to help you see debt better)—I wrote about Tech Debt Detectors on this site and in my book, and these ideas are variations on that.

I’m going to apply The Four Disciplines of Execution [affiliate link] like I did last year, which I’ll write about later this week.

2024 Retrospective

At the beginning of the year, I set out to do three things along the three areas of my life: personal growth, career, and fitness. I had mixed results.

For personal growth, I set a goal to write a 50-page book on a subject in software development. I have been blogging for over 20 years, so I looked over my posts for material and found that I had written a lot about technical debt. I thought there was enough there for a short book, but it needed to be organized and expanded.

I set a goal to write for at least one hour on five days of each week, which was enough to get to fifty pages in a couple of months. It was easy to keep to this schedule because, following the advice of The Four Disciplines of Execution [affiliate link], I joined a writing accountability group. We met three times a week to write together, but adopting their culture of sharing works in progress had the biggest effect on my work. Sharing my text exposed me to conversations that helped me think more deeply about my subject. I didn’t finish the book I set out to write, but I have about 160+ pages with an editor right now, and I plan to release it by March 2025 (sign-up to be notified).

For my career, I wanted to release an MVP of a startup idea I am working on with a friend. We did get an MVP, but realized that it wasn’t the right product, so we pivoted. We are getting close to the next MVP, which is a complete rewrite of the front-end. We hope to onboard a cohort of users in January. I’ll talk about it more when it’s ready to look at.

For fitness, I tried to lose body fat. I tried a lot of things and kept to all of my exercise goals, but nothing I did had an effect. I am satisfied with my overall fitness, but it would have been nice to achieve this. In 2025, I am not going to worry about this any more. I am healthy, and I think I just need to accept my body for what it is: fit, but with a belly.

For each of the three things, I had varying levels of commitment to the actions I set out to do. Writing the book had the highest adherence, probably because of the accountability group. I also had feedback in the middle of the year that people liked my work so far (an excerpt was published in The Pragmatic Engineer). My fitness routine was also easy to follow, also because I was in a group. Working on the startup was harder—there is some accountability, but both of us are doing this on the side, so it gets less time.

In my plan for 2025, I mostly just want to build on what worked in 2024 and finish things up. Here’s what worked and I’ll keep doing

  1. Working in a group—especially literally meeting and working at the same time
  2. Sharing work in progress
  3. Concentrating on hours spent doing activities that will build up to a goal (the lead indicators)

I need to stop doing these things:

  1. Worrying about the things that I might never achieve (like losing body fat)
  2. Setting bars too high on skills in progress. I keep wanting to podcast more, but I’m held back by my inner-audience that doesn’t think it’s good enough.

And I need to start these new things:

  1. Pushing myself out of my comfort zone. In 2025 I need to do marketing for the work that I have done, which means I have to put myself out there more.
  2. Paying more attention to what I eat in addition to my exercise.

Make a Space For Each Day in Your Journal

One thing I have learned in the last two years is that I am much more likely to write in my journal each day if it has a pre-designated space for each day.

In my Recurring Journals I split each open spread of two-pages into quadrants and then put corresponding dates from each 13-week “quarter” in them. So, the first page of 2024 had the Mondays: January 1 and April 1 on the left-hand side and July 1 and September 30 on the right-hand side. The next two-page spread had the Tuesdays: January 2, April 2, July 2, and October 1. I explained why I do this in My Year in Weeks, but the important thing is that every day had a space.

Having a space for each day made it much more likely that I would write something in that space. Even if I missed a day, I went back and recreated it. I did this even when I missed a few days. And because it was a recurring journal, when I got to the end of The First 13 Weeks, I went back to the first page and went through each spread again for The Second 13 Weeks. If I noticed a blank space in the past, I would see if I had any way to recreate what happened that day (from my calendar, git logs, blogs, etc).

This year (2025), I am not going to be using a recurring format, but I am still using pre-dated pages. I will have to be more diligent about checking the previous days, but my weekly retro pages will probably be good enough to make me do that.

Supernote Manta First Impressions

I got my Supernote Manta (A5) two days ago. I haven’t used it much—mostly learning the UI and getting an idea of the features. Mostly, I wanted to get my own 2025 planner on that I made with Page-o-Mat and then get to planning 2025.

Generally, I like it and I still think it is the best choice given my preferences. Here are a bunch of unstructured impressions.

  • The on-screen keyboard is bad. I hope this can get better in software. Luckily, I think of this as a writing device and won’t want to type much. When I have to, it’s painful.
  • I wish I could give files names with handwriting (because typing is so bad)
  • The pen/paper feel is really good—even better than I expected.
  • The pen doesn’t perfectly make marks all of the time, but no worse than real pens.
  • The left and right sidebar gestures are ingenious.
  • Inside of their notes, you can make links to other pages and notes, but you can’t do this inside a PDF. Since standard PDF Annotations supports this, I hope it comes in a software update—I would use that journalling.
  • I use a passcode to lock the device. I would love it if I could put contact info on that screen so that the journal could be returned if I lost it.

Everything else is as widely reported in reviews. It’s a thoughtful device. I appreciate that I can upgrade the hardware and the software is generally high-quality so far. I am looking forward to having this device for many years.

My Year in Weeks

I released my 2025 Journal PDF (for Supernote) yesterday, and in the middle of describing it, I realized that I have never explained how I plan my year around weeks and 13-week blocks. There are mentions of it in a few posts, but nothing canonical.

I use a week as my main planning timespan, not months or quarters. Additionally, I use Monday as the first day of the week, which is normal for a lot of the world, but not Americans. When I think of how a week flows, the Saturday and Sunday are a unit. I think of them as the start of the week, but almost no software will let you do that, so I got used to them being at the end.

So, all of my projects are estimated in terms of weeks, and I program in sprints that are a multiple of weeks. Then, I split the year into four 13-weeks “quarters”, which is close to a year (364 days). This year, 2024, started on a Monday, and because it was a leap year, April 1 and July 1 were exactly on 13-week boundaries (Oct 1 was only a day off), so my system correlated to normal quarters about as well as it ever could. This doesn’t happen again until 2052. I hope I am there to see it and that I still care.

My journal is set up to follow the flow of a week. Days of the week tend to be similar to each other—so, there is a feel to a Monday, a Tuesday, a Sunday, etc. But March 3rd will not be like April 3rd or October 3rd. A lot of recurring meetings are weekly or bi-weekly, or on the “Third Thursday of the Month” or some other pattern that works well with my system.

When a year doesn’t start on a Monday, I have to incorporate some of the previous year into it. For me, 2025 starts on December 30, 2024. I usually start my yearly goals in the previous year just to get a running start, so it doesn’t really matter if a few extra days get into my journal.

If I have to deal with something that is on a month or quarter boundary, they are just a regular day in the journal. External deadlines can be on any day.

If this sounds good to you, you can use my 2025 Journal (PDF).

My 2025 Journal PDF for Supernote A5

I finished adding features to Page-o-Mat to support the journal I wanted to make for 2025 to use on a Supernote Manta. I fixed some bugs and added the following features:

  • Internal Links to pages: This is supported in titles, section titles, and rectangles
  • Start/End Dates on Pages: This is so I can show a date range in a title
  • More support for using expressions as values: This is so I could calculate a page link inside a loop or do more date math.

My Journals do not use heavily templated pages—Most pages are nearly blank, but they have a 5mm dot grid on them. You could do bullet-style journaling, sketches, or whatever you like.

The main opinionated thing I do is that my year is based around four 13-week “Quarters”, not the months or the typical quarters, and my weeks start on a Monday.

So, 2025 starts on Monday, December 30, 2024 and goes to Sunday, December 28, 2025. I did add on the week after, though so that Dec 29-31 are in the Journal (and the rest of that week). The full 2025 journal is 53 weeks with a little of 2024 at the beginning and a little of 2026 at the end.

Download my 2025 Journal

Since this was created with Page-o-Mat, you could customize it and make your own. See the config file in /config/2025-journal.yaml in the repo. The script uses Python—I added installation instructions to the README.

EDIT: More explanation of my system in My Year in Weeks

Page-o-Mat Updates for Electronic Journals

I wrote Page-o-Mat because I had an idea for a paper journal that I wanted to make. I could have just made a PDF, but making each page was a repetitive task that was easier to do with code. I could have just made a python script to make just that journal, but I was still designing the journal, so I put some configuration in a YAML file. Once I did that, the config grew to the point that it became a language for making journals. I made my 2023 journal with it and got it printed by LuLu.

In mid 2023, I wanted to make a different kind of journal (one for writing Morning Pages), and so I added some features to draw shapes on pages, which I also used to make covers. Later that year, I made my 2024 journal with it without needing more features. I hadn’t touched it since then.

I like my custom paper journals, but they are thick and heavy, so I am trying something different for 2025. I finally found an E-Ink tablet that I can use to replace my Kindle and get a more portable writing/journaling solution too.

I’ve been looking at E-Ink writable tablets. After considering the Kindle Scribe, Daylight, and Remarkable, I decided that I cared about a few things:

  1. It had to be hard to use the machine for anything but reading and writing because I want it to be more like factory equipment.
  2. It had to have a long battery life (like the Kindle).
  3. It had to be easy to get files to and from the device (unlike the Kindle).
  4. It had to be able to read Kindle books.
  5. It had to be readable in sunlight (I live in Florida and read at the beach).
  6. It had to be A5-sized.

The only device I found that met all of these criteria was something that Supernote used to make and said they would make again. I signed up for updates and waited. Then, I forgot it existed. I almost got a Daylight in the meantime, which is a nice device, but it’s too nice—it can easily run any Android software, so it’s too general purpose. I want a “worse is better” machine.

But a few weeks ago, I got an email from Supernote that the A5 is available, so I bought one—it arrives later today. In the meantime, I’ve been reading more about its capabilities, and I see that I can make my own planner for it by just bringing over a PDF, which is what Page-o-Mat produces.

I could make one just like my 2023/2024 planners right now with Page-o-Mat, but one of the advantages of an electronic journal is internal linking. So, I could be looking at a page of all months, tap and jump to a month overview, then tap and jump to a day overview (and back). All you need to do is add tappable zones to the PDF that link to a page.

So, yesterday, I added simple support for that to Page-o-Mat and pushed up the change along with a simple example.

This won’t be enough for my 2025 journal, but helped me get back into the codebase again. I have a week to get the features in so I can make a journal and use it on January 1st.

Christmas Computing Memories

When I was thirteen, my mom got me an electric typewriter for Christmas. It didn’t work, so we had to take it back to Radio Shack. I convinced her to get me a TRS-80 Color Computer instead (they were both $50—so an even trade). It had 4k and no permanent storage. I booted every day, wrote programs and then when I shut it off, those programs were gone.

The next year I got a Commodore 64 for Christmas, but still without a disk drive. The only thing you could do with this computer was program it in BASIC, which is what I did.

When I was sixteen, I was taking digital electronics in high school. Some students in the class wrote a version of The Twelve Days of Christmas except with the names of chips instead of the usual gifts. The only line I can remember is “Five 555’s”.

The only two things you need to know about software project management

  1. If someone asks when something will be done, they are asking for the date when they can use it.
  2. Every day, ask yourself what could happen to make it so the software won’t be ready to use by that date and do something about that.

The result of project management is that the software is ready to be used on the publicized date.

The details about how to figure out the date should be, what it will be, negotiating that difference, how to communicate it, how to change it, who “they” are, what “they can use it” means, changing that definition, what kinds of problems could happen, what to do about a problem, how to track all of this, etc is what project management work is, but in the end it just boils down to those two things.

How to introduce tests to a codebase without them

I wrote Unit Testing Old Code in January 2004, and I stand behind the recommendations. In short, use unit tests to accomplish what you are trying to do right now. Tests will help you refactor and optimize without breaking something, they will help you represent new learnings as you read code, and they are a good thing to write to reproduce a bug before you fix it. In all three cases, it’s a means to an end.

Later that year, Working Effectively with Legacy Code [affiliate link] came out with the definitive advice on how to add tests to a codebase without them—introducing the concept of seams. Generally, seams are a way to change what code does with external control. It might not be the way you’d design it from the start, but it’s a good way to migrate untestable code to being testable. I reread it recently and the techniques are still useful and easy to adapt to modern languages.

If I were to update my advice from 2004, I’d say to adopt diff-cover. It’s a script that filters down your code coverage reports to show the test coverage of the changes in your branch. This lets you try to hit high coverage numbers on each PR without necessarily having high coverage overall.

Other than that, if you have an untested codebase, I’d still say not to make it a project to add tests widely. It’s something I do it in my codebase even though its coverage is high. I want to keep it that way.

If you don’t have any tests, I’d get the infrastructure into place to run tests locally and in CI and a few to get a few tests going. Then, use tests to get your work done faster. I cover this in my book, Swimming in Tech Debt, which isn’t coming out until March, but I have a story of how I did this at Trello that was published in The Pragmatic Engineer.