I wasted a ton of time tonight trying to convert some old Apple sample code from an obsolete version of Swift to the current one that compiles. If only I had checked the Swift Package Index first! Of course, someone else had already done it and created a package based on it.
A big success is made up of many smaller ones. A coworker reminded me of that today, and I really needed to hear it.
The Thin Veneer of Modernity
Modernity is a thin veneer over thousands of years of baser and humbler human history. Almost everything we take for granted today—like electricity, telecommunications, antibiotics, vaccines, knowledge of the internals of the atom, an understanding of DNA, the discovery of plate tectonics, limited space travel, microchips, complex computer modeling, the internet, and so on—was invented or discovered within the span of two or three lifetimes.
When I was a little kid, some of the things I was taught in science class had only been discovered or agreed upon within the past twenty years. A lot more things, such as nuclear energy and weapons, had been invented or discovered in the prior fifty years. As a six-year-old first-grader in the 1980s, fifty years ago may as well have been five-hundred; I couldn’t understand how new everything was around me. For instance, I didn’t realize that my dad had been born before the atomic bomb had been invented. Just today I learned that he was born even before helicopters, which he helped manufacture throughout most of his career, were invented.
It is absolutely astonishing to be alive at such a time, when the past hundred years or so invented nearly everything around us, and we expect new scientific discoveries and new inventions practically every week. It is also very troubling that humans, after only such a short time enjoying the fruits of our ingenuity, seem to be unable to focus on and solve the climate crisis that modernity caused. I fear that thousands of years of baser and humbler human history could return to us at some point in the future if we do not learn to work together to preserve our planet.
The Tower of Babel
When I first started work as a systems analyst I knew nothing about business and nothing specific about systems, but I knew a lot about language. I realized early on in my career that technical and non-technical people approach problems so differently that they are, in many cases, not even speaking the same language. In meetings between the business team and the IT team, I would always either start the meeting, or steer the meeting toward, defining common terms for both sides to use to talk about the problem. It is a tactic I still employ a lot to this day, especially when people seem confused about what the problem is or when the conversation isn’t going anywhere.
Today was my son’s fifth birthday. We had two family parties for him this weekend and all had a great time. He got presents. We ate cake. We spent a lot of time together. The important thing to me is that he knows he is loved.
Grounds for Sculpture
My son turns five tomorrow. As part of our celebration for him, we all took a trip to Grounds for Sculpture. It is a huge sculpture garden that my kids love to visit.
Part of their fun, which my wife and I can’t fully understand, is that they both bring their nearly-identical stuffed penguin toys there to stomp on some of the sculptures. They have also named a bunch of the sculptures and enjoy visiting them and pretending to have a chat with them.
We have been there four times now, and have discovered new things to see and marvel at every time we have visited. I took a bunch of great shots of the family today, but for my blog I will only post pictures of some of the cool sculptures we saw there.








🎵 I love the album All Mirrors by Angel Olsen. Everything about it is stunning.
🎵 A new album from an old favorite of mine dropped today: Lucifer on the Sofa by Spoon. A straight-ahead rock album is a great excuse to turn up my speakers today.
Knock-off Laser Toner
Tonight I performed some surgery on my color laser printer’s empty toner cartridges and installed knock-off ones in their place. I feel a little dirty, but I saved about $400.
I resent that toner cartridges now have microchips in them that are required for the printer to print. The chips help the printer report its toner levels, but otherwise are there to make a rather generic toner cartridge into into something proprietary and overpriced. The knock-off toner cartridges I bought came with tools and instructions for transferring the chips from the original printer cartridges to them. It was pretty easy to do, and the printer prints in color again with the new cartridges installed.
The printer will always report low toner now, no matter what the toner level actually is. I expect to field questions about it from my family for the rest of my life.
My soon-to-be-five-year-old son is typing…something…into Swift Playgrounds and thinking he is programming. It’s not that different from what I do most days. 😂 At least he is very excited about it.
📺 The Book of Boba Fett
I am sitting down to watch the final episode in the weakest Disney+ series I have watched so far: The Book of Boba Fett1. The show is flawed in many ways, but some of it is fun, some of it looks good, and it is, in all but name, a continuation of a show I do like, The Mandalorian.
-
Not a book, by the way. ↩︎
Maybe I’m lying to myself, but it’s working
Last month I started a new, private ritual. Every morning, before I start work or before cleaning up the family breakfast table, I say to myself, “This is going to be a good day.” Sometimes I say it to myself again in the middle of the day when I have a break from work, or when I see the moon or stars in the evening at the start of an errand. I could be imagining it, but I think that doing this is helping me stay positive when things get stressful. It’s my way of saying to myself, “It’s OK. We’re going to get through this. Things are going to end well.”
How I manage my work emails now
At my job, we use Webex and Jabber and Microsoft Office 365 for messaging and collaboration, but email is still king. Over the years I have organized my emails by year, project, and client using the various tools that Microsoft Outlook provides: folders (sometimes nested), categories (which are tags with names and color coding), and flags. Recently, I have simplified my filing system to use no categories, no flags, and only four essential folders:
- Inbox
- Archive
- @Action
- @Now
Inbox is self-explanatory; it’s where all my emails enter the system. From there, I pick out messages that are really to-do items and move them to the @Action folder. I set up a Quick Step to perform this with a single click or keyboard shortcut. I move every other email1 to the Archive folder. Thankfully, Outlook 365 has a toolbar button that makes this a one-click operation.2
I spend most of my email time looking through the @Action folder, which normally has between 5 and 25 emails in it, for emails related to my next task. From there, I move all emails associated with that task to the @Now folder. I keep those messages in the @Now folder as I perform the task, refer to them as reference material as I perform the task, and reply to at least one of them to complete my task. After I complete the task, I move all the emails in the @Now folder to the Archive folder. If I am interrupted in the middle of a task for more than a few minutes, I will move all the messages in the @Now folder back to the @Action folder.
I try not to let any of the folders, except for Archive, end up with a glut of emails in them for too long. Outlook’s email search capabilities are capable enough to allow me to find anything I need in my Archive folder quickly enough for me not to need to organize archived messages in any way.
Overall, this system has been working well for me and I plan to continue to use it in the future.
Everybody wishes to be seen and heard
At some point, everyone wishes to be seen and heard. Giving people the attention and consideration they deserve takes focus, patience, and a commitment to preserving their dignity.
Sometimes the person wanting to be seen and heard is a victim; other times that person is a bully. It can be very difficult to see and hear them both.
Recent wins
I tend to minimize good things that happen to me, but am trying to change that. To that end, here is a list of small wins for me this week.
- I got a complimentary email about my productivity guide, PlainText Productivity.
- I got a complimentary email about my free call blocking app for iOS, Simple Call Blocker.
- I responded to a bug report in my todo.txt app, SwiftoDo for iOS, fixed the bug, and published the update.
- I recently resumed work on the next version of SwiftoDo for iOS. It uses the Swift Package Manager for dependencies, rather than CocoaPods.
- In Xcode, I learned how to override a Swift package with a local copy of the package to make editing and debugging to the package code much easier1.
- My Chess Elo rating for daily chess on Chess.com rose to over 800.
-
It is actually pretty easy. From the Finder, you drag the package’s folder to your Xcode project (in Xcode). ↩︎
Memory selects the wrong things
The worst part of memory is its selectiveness. I can remember, in excruciating detail, every embarrassing moment, every incidence of social awkwardness, every chance I should have taken but didn’t, every blunder or pratfall, every mistake on an important exam, every poorly written paper, every taunt hurled at me, and every dressing down I ever received. I wish I could say that I remember all the successes and great things in my life just as vividly, but it simply is not true.
From what I gather, the way my mind works is entirely normal. I wonder if all it takes to remember all the winning moments in life just as well as the embarrassing ones is to make the effort to do so. For some reason—human nature, I always figured—it feels much harder to celebrate the wins than to mull over the losses.
Strong punctuation preferences
One thing I never planned for in adulthood is developing a strong preference for trailing punctuation to remain outside of quotation marks1 unless the period, comma, or other punctuation mark itself is being quoted. I wonder if the people I work with, who read my emails and technical writing every day, think I don’t know how quotations marks are supposed to work in American English2. No one has ever called me out on it. Either they don’t know that trailing punctuation is supposed to go inside quotation marks in most cases, they don’t care about it, or they don’t notice it at all.
Moonlighting as a terribly inefficient coder
One of the bad parts of moonlighting as a programmer1 is that, at the time of day I can code, I am often a terrible inefficient coder.
The time I have available for coding is very late at night, typically 11 PM to 1 AM. For the most part this is fine. I can’t get to sleep until 1 AM or later most nights, no matter what I do, and going to bed before I feel tired is counterproductive. Rather than staring at a ceiling in bed for hours, it is far better for me to stay up doing something I enjoy, like coding on my Mac while listening to music on my headphones.
Lately I have noticed that I am getting very little done in these coding sessions. The night before last I fixed one tricky bug, then decided to quit coding (but not yet go to sleep) for the night. Last night I wrote about half of one feature. To be fair, I wrote several implementations of the feature until I found one that would be most compatible with Apple’s frameworks. Still, I quit for the night before finishing it because the other part of the feature seemed too tricky to tackle after midnight.
Fortunately, when I brain is tired, I don’t end up coding a buggy mess. I have the sense to slack off for the rest of the night, so I don’t spend my next evening throwing away the garbage I coded the night before. Still, I get very little done compared to the time I spend on it. At least I enjoy the time I spend doing it.
-
To be clear, I am a hobbyist and don’t have a second job. ↩︎
Tom Brady Announced His Retirement Today
Tom Brady finally retired today.
For most of my adult life, I was a football fan. The whole time, my love of the game sat uncomfortably beside my real concerns about how dangerous it is.
In the 1990s and early 2000s, there was some false controversy about whether the NFL was dangerous to the athletes who played in it. I never got caught up in it: I was always certain football was a dangerous sport. As a kid, my parents said they wouldn’t let me play tackle football. (They didn’t have to worry.) My high school fielded no football team (at least in my first one or two years), nor did my college for the same reason: Back when both schools fielded football teams, kids died of injuries on the field.
Still, a combination of learning about the strategy of the game from Madden games and John Madden broadcasts with his telestrator and the fact that almost everybody around me was a football fan led me to become a fanatic myself. As a New Englander, the Patriots were my default football team. It was not much fun watching them, though, until Tom Brady took over as quarterback. Watching the Brady/Belichick team outsmart and outplay opponents was a little like watching an expert play Madden: thrilling if you are a fan, and boring for everyone else. Football games catalyzed house parties, bar nights, conversations with friends, minor holidays, and generally acceptable excuses to eat junk food, drink beer, and do almost nothing on the weekends.
I promised myself I would stop paying attention to football when Tom Brady retired. I actually gave it up a few years ago, before Brady even moved to the Buccaneers. At some point, I could no longer ignore the dangers of CTE or the horrible physical toll that professional football puts on athlete’s bodies. Watching the big hits on the field became dreadful rather than exiting. Seeing injured players carted off the field became so upsetting I could no longer shrug it off after the inevitable commercial break.
I fell out of love with the sport entirely. I no longer want to watch any sport where people intentionally hurt each other. Instead of helping me have a good time, seeing people battered on the field—or long after they stopped playing the game—now makes me sad.
Things I am learning from playing chess, part 2
You aren’t the best. You’re not even close. And that’s OK.
I love chess now, but I am not very good at it. When I first got into it again, however, I thought I was hot stuff. I beat a bunch of bots with higher and higher ratings until I reached what I thought my level was (Elo 1,000). I thought that was a pretty good rating for me, considering I hadn’t played in 20 years.
When I started playing humans, however, I discovered that I am not a 1,000-level player at all. It was humbling. Since then I learned that I am not along. There are players at every level striving to learn the game and get better. Despite my early hubris, I am still a beginner. There is nothing wrong with that. We are all beginners at something.
I am having fun learning the game, and think that I am establishing basic competence. That alone is something to be proud of. I have also made an internet friend (or chess rival!), have introduced the game to my son and daughter, and am playing online games with my father-in-law, too. All of these things have made my life better than it was before.
I hope that my interest in the game remains high enough to play a little each day, and to continue to develop my skills. While I will certainly never become a grandmaster (Elo 2,500 and up), perhaps I will become a level 1,000 player someday. I may even remain a beginner for the rest of my life, and that’s OK.
For now, I just want to learn the game and have fun playing it. In broader terms, I want to use the skills I have—however meager they are—to participate, contribute, and have fun.
I have discovered that past me was also me, at least on the page
I have been converting my high school essays from their borked Word .doc format to Markdown, to preserve them for future readability. So far, I have converted my ninth grade work and half of my tenth grade work.
As I go, I don’t read each essay in depth, but I have read some of them and found them to be incredibly, unmistakably me. I could have written them yesterday—even my very first high school paper. Sure, I would have made fewer spelling mistakes and would have employed the em-dash (which I did not know how to type at the time) a lot more, but, for the most part, I would make the same writing decisions now as I made back then.
It has been unnevering to see that I already knew how to write pretty well as a newly minted high school freshman. It makes me worry that I have not grown that much as a writer since then.
I am certain, however, that I have grown much as a thinker and as an organizer of information. Writing long papers in college and grad school (20+ pages) encouraged me to prioritize structure over style, to plan my writing process, and to organize the work and pre-work that goes into writing each section. In my career I developed technical writing skills that built off these concepts and techniques. Lastly, as I shifted more into non-technical work in my career, I also developed an intense focus on clarity, which can only gained through experience writing for many people over a long time period.
Things I am learning from playing chess, part 1
Take your time
I have played most of my chess games against the bots found on Chess.com. When playing against a bot, it will make its moves instantly. It is tempting to keep pace with it. You shouldn’t.
Unlike bots, humans—especially those of us who are not chess masters—need time to look at all the pieces on the board, weigh different moves against each other, and consider both the good and the bad outcomes that would come from each move. If that sounds like a lot of things to do for every move, that’s because it is. Chess is a complex game, which is what makes it so fascinating.
My worst mistakes on the chessboard have been due to hasty decision-making: I want to capture a piece or put the king in check so badly that I don’t bother looking at what moving that piece might do, or without figuring out all the ways my opponent can escape or counter it. I play with haste mostly to match the tempo of my opponent. Maintaining the pace is not important at all—at least at the beginner level I am playing at—and is impossible against a bot anyway. It is a habit I am working to outgrow.
If you are a chess beginner like me and want to improve your game, don’t be hasty. Stop and think before you make a move. Consider what effect that move will have on the future. And weigh multiple options if you have them. These are good rules of thumb not just for chess, but for life, too.
Things are going pretty well
The last two days I have been busy doing work for people and myself, busy achieving things, and have gotten positive feedback from my coworkers, my family, and the world. Things are going pretty well.
I have been so active doing things that I have not been reading the news, engaging with politics, or thinking deep thoughts all this time. Maybe that’s why things are going well.
FancyZones, Microsoft’s tiling window manager for Windows
Last week I started using FancyZones, one of Microsoft’s PowerToys for Windows, on my work computer. I think I love it.
FancyZones lets you create a tiled window layout and snap windows into pre-defined zones (or areas on your screen) via drag-and-drop. It makes it easy to divide your monitor into halves or thirds and arrange multiple windows neatly. Compared to manually sizing and placing multiple windows, it is much faster to snap them all into place by dragging them anywhere onto a zone or by typing a keyboard shortcut.
A tiled window layout is useful for arranging multiple apps for drag-and-drop, or for keeping multiple documents or apps visible at the same time. While it does limit where you can place windows on your screen, it is flexible and easy to adjust the layout. At any time you can call up a zone editor via a hotkey (Shift+Win+`). You can set presets for the different arrangements you like, and switch between them quickly.
FancyZones really clicked for me when I figured out that it can be configured to take over for the default window snapping feature’s keyboard shortcuts. Now I have windows shuffling between zones set up across my two screens using Win+Left and Win+Right key commands. I can still maximize with Win+Up whenever I need to, and then restore down with Win+Down as well.
Another neat feature of FanzyZones is that every zone represents a stack of windows. You can cycle through the windows in the currently-focused zone with keyboard shortcuts (Win+Up and Win+Down). These shortcuts are very useful because they operate on a smaller set of windows than the Alt+Tab or Win+Tab switchers do. It is much quicker to page through three or four windows within a zone than to go through all ten or twenty I have open system-wide.
If you are curious about tiled windows layouts, and you are a Windows user, I recommend checking out FancyZones. It is free, published by the platform vendor (Microsoft), and is even open source.
Converting my old school papers to Markdown
Last night I started converting the essays I wrote in high school from the old Microsoft Word .doc format to Markdown, so they will be readable as long as plain text files are readable. My process is simple:
- Open the Word .doc in LibreOffice.
- Copy the text and paste it into Ulysses
- Replace double-spaces after periods with single spaces.
- Fix all the paragraph breaks, using the version opened in LibreOffice as a guide.
- Fix all the italics that were dropped in the copy/paste operation, again using the version opened in LibreOffice as a guide.
- Create a title and a brief heading (with the document date and the subject I wrote it for, if they are in there) in Ulysses.
- Run a spell-check in Ulysses.
- Export the document from Ulysses to a Markdown file.
- Close and delete the Word .doc version.
Strangely, many of my essays have no titles. LibreOffice displays a blank page and some random junk at the top of every file. This leads me to believe that my paper headings—which were required, because I wrote them for school—have been lost in file format translation somewhere. I have been adding titles to my old papers, which is challenging sometimes because I have no idea why I wrote some of them.
I found some interesting files in my archive that are actually worth preserving: humorous essays from my freshman year; serious papers about nuclear power and Chernobyl; and brief biographies I wrote of my father and grandfather, which are now treasures to me because they died years ago. I also found a some topical essays full of ten-dollar words and purple prose that I no doubt learned how to write by reading syndicated newspaper columnists every day. The teachers who read them must have thought I was precocious and possibly insane.
Overall, converting these files has been a rewarding diversion from my normal computing tasks. Unfortunately, between high school and college essays, I have hundreds of these Word .docs to convert, so I will be at it for a long time.