Category Archives: Personal

Knowing Assembly Language Helps a Little

I can’t say I recommend learning assembly, and I never really had to write much professionally, but knowing it has been helpful in giving me a mental model of what is happening inside a computer.

I started with assembly soon after I started programming in BASIC. In the eighties, all of the computer magazines listed assembly programs because that was the only way to do some things. Jim Butterfield’s Machine Language for the C64 [amazon affiliate link] was a classic.

In college, I used assembly in a few classes. In Computer Architecture we had to write a sort algorithm in VAX assembly, and in my Compilers course, we had to generate assembly from C (and then we were allowed to use an assembler to make the executable).

This was last time I wrote any significant amount of assembly, but in all of the time I worked in C, C++, Java, C#, and Objective-C, I found myself needing to read the generated assembly or bytecode on a lot of occasions. There were some bugs that I probably could have only figured out this way. Knowing how different calling conventions work in C on Windows was part of my interview at Atalasoft (and it was actually important to know that on the job).

So, if you have any interest in it, I would try it out. The main issue is that modern instruction sets are not optimized for humans to write. But, I learned 6502 assembler on a C64, and if you learn that then you can get into the wonderful world of C64 Demos.

The Second 13 Weeks

At the beginning of the year, I wrote The First 13 Weeks which summarized how I usually set up the first 13 weeks of the year. I am using a Recurring Journal that I designed using Page-o-Mat to run my daily tasks and help me reflect on the year as it progresses. We are almost at the end of the second 13 weeks of the year, so I wanted to give an update.

I build my schedule around weeks, which is why I use 13 week periods instead of months or quarters. They do line up pretty well since 4×13 is 52 and 52×7 is 364. In 2023, I treated Jan 1 as special day, and started the recurring part of the journal on Jan 2, which was a Monday.

The first two pages of the journal show Mondays Jan 2, April, 3, July 3, and October 2, which are exactly 13 weeks apart. In the first 13 weeks, I filled out the top-left quadrant of each page, and this “quarter” I am working on the bottom left of each page. But I can see the day exactly 13 weeks ago. I take time to reflect on that day and notice progress. Since the days that are shown together are always the same day of the week, they are usually comparable.

Doing this motivates me to journal because I know that I will be revisiting each day. There is an empty space waiting to be filled, and I don’t want to come back in a few months and see it still empty.

I have been journaling for many years, but most years there are gaps, usually in the late summer. I seem to have the most energy in the beginning and end of the year and drop journalling for a bit around August. This may yet happen in the 3rd 13 weeks. I’ll check in then to see how it’s going.

My Typing Teacher was a Genius

When I was in middle school, typing was a required subject. I don’t really know why.

In the early eighties it was not common for people to type at work. There were still specialists for that. Even in the late eighties when I worked in an accounting office and there were secretaries that took dictation and typed up memos. Computer spreadsheets existed, but the accountants there still used pencil and paper and secretaries typed them up if they needed look more formal.

This was the world my typing teacher, Mrs. Cohen, grew up in and probably worked in before becoming a teacher. I think, that deep down, she knew that we wouldn’t find typing relevant, and honestly, the class didn’t take it that seriously.

But one day, she read us an article from the local paper that said that kids needed to learn how to type because computers were going to be a big thing and soon everyone would need to know how to type. It had a huge impact on me—I still remember it very clearly.

I had already been exposed to programming and even had a computer at home. But, coding was just for fun. I didn’t think it would be a job, or that I would be typing every day at work. Mrs. Cohen was the first person that made me think that computers would be more than a toy.

May 2023 Blog Roundup

I started writing much more frequently this month. I happened to be on vacation for two weeks of it, which gave me a lot of time for writing.

The main thing that got me going was wanting to start up my podcast again. I released four episodes in May.

I also updated my podcast workflow, which makes it a lot easier to do, and I think will make them better.

In Blog Posts, Randomness, and Optionality, I talked about my most popular blog post, and how it had more hits than the rest of my site combined (by far), mostly driven by search. That post hosts my UML Cheatsheet and is from 2006. I made the post following a talk I gave at a local meetup to try to get a job.

I am trying to write more about diagramming generally (to build on a past success). First I wrote that For Diagramming, Favor in-Document Editing and then I wrote that you should use C4 Context Diagrams in GitHub READMEs, and to help make these, I wrote The System Boundary is Defined by the External Pieces.

I’ve been interested in developer productivity metrics, so when I read about DevEx, I was interested, but I wrote a critique in Making Sausage and Delivering Sausage. But, then I wrote about the CRAP metric in Use Your First Commit to Fix CRAP and realized that both CRAP and DevEx are Metrics that Resist Gaming. CRAP always makes me think of refactoring, so in the middle of that I wrote about the First Rule of Refactoring Club.

June has four weekends, so I am expecting to make four podcasts. I also want to spend the bulk of my time thinking about diagramming, so I expect a lot of posts about that.

Two Color Journaling

I journal in black and red. Almost everything is black because I reserve red for anything on theme or particularly important to me. By “on theme”, I mean consistent with my yearly theme, which is to Make Art with Friends.

This has advantages in review and while journalling the day.

I am using a Recurring Journal this year, which means that when I journal I am seeing a past day on a different part of the page. If that past day was particularly red, I can try to match it. I can also easily see the red ink as a flip around. At the end of the year, when I review the journal, it will be easy to pick out the important parts.

During the day, I can see how much red ink I have or have not used and try to see if I can get something in to make the day more red.

Not every day needs to have some red on it, but sometimes I have a free moment, and since I have a low bar for making art, I can easily do it.

I Write During Times of Personal Change

Looking at the history of this site, I noticed that I started this blog in December 2003, and I know why—I had decided to leave my job, and thought I would go into consulting for a bit while I figured out what was next. I wrote about things related to client work I was doing.

I wrote fairly often up until about March 2004, which is when I started a new full-time job. There is a two year gap until February 2006, which is when I decided I wanted to work for Atalasoft. I wrote posts because I had a link to this site on my resumé, and I didn’t want it to look abandoned.

I was at Atalasoft for seven years, and I blogged on-and-off. But, I got much more active in the month before I left to consult full-time. A year later, I joined Trello, blogged on-and-off for six years and got very active as I was preparing to leave to become permanently independent in March 2021. I had about 9 months or so of very frequent blogging and then trailed off in 2022.

And now, I’m picking up again.

In the past, this was planned during transitions. It was partly to help with marketing myself, partly because I had the time and energy for it, and partly because new jobs came with a lot of new learning.

This time, I’m not consciously planning any big change. But, based on my past patterns, I seem to be preparing for one.

I can’t wait to find out what it is.

Lessons from My First Published Article

When I was in first grade, our class visited The Daily News and saw how newspapers were printed. When we got back to the classroom, our teacher had us collaboratively create a newspaper that she printed on a mimeograph, which used blue ink that smelled great.

Super News (All kinds of news) June, 1977

I think she went through a real newspaper and pulled out topics. So, we were assigned “articles” to write on Sports, Science, Politics, International News, etc. It was 1977, so there are prominent mentions of Jimmy Carter, Pele, and the oil crisis.

I had to write about “Neighborhood News”—here’s my article in full:

Neighborhood News - The Pathmark people are building a supermarket on Northern Boulevard. There are lots of potholes in the city. The cold weather caused the potholes and people are fixing the potholes. by Louis Franco
My first published work

Looking at it, here’s where my current work is similar to my 1st grade work.

  1. I try to keep it short
  2. I mostly write about what I am seeing/experiencing (we passed by that Pathmark construction site every day).
  3. I still end my posts abruptly

Co-working First Impressions

I started working remotely in 2013 and haven’t spent significant time in an office since then. When I went to Trello’s NYC office, it was mostly for offsites or to onboard a new team member, so I wasn’t planning on getting a lot of programming done. Even so, the Trello founders were highly influenced by Peopleware, and knew that company offices needed to provide a quiet working environment.

But, now that I’m working alone, I do miss having some interactivity with people during the day, so I am trying out a co-working space once a week. Today is my 2nd day.

Some random thoughts.

I am really glad I brought noise cancelling headphones. It’s just enough (along with listening to ocean sounds) to drown out the one-sided zoom meetings when I am trying to code or write (luckily, it seems to be somewhat rare).

Sitting by a window is nice. It’s on the third floor across the street from a residential neighborhood. All I see are shade trees, rooftops, and the big blue sky. At home, my window is on my left, slightly behind me. This gives me a place to stare to rest my eyes.

A view outside of a co-working office showing tree tops, rooftops, and the sky

The weather is hot enough for shorts and a t-shirt, but like everywhere else in Florida, when you get inside, they have the AC cranked up. I get to wear jeans, which I miss.

I thought I would miss my monitor more. They have a place to store one, and I was already planning to do that, but I’m getting a lot done right now without it. If that keeps up, I probably won’t bother.

Doing this on Mondays sets up the week well. I guarantee that I won’t have a meeting (because I am blocking the whole day). I would not have done that if I was working from home. Since I end each week with a plan for the next week, I can just get going when I get here.

They have regular and counter-height desks. You can stand at the latter.

The First 13 Weeks

The first 13 weeks of the year ends on my birthday, and so each year I try to set up those months to try new things. It’s not a resolution or a goal, but more of a direction to explore. This year, I’m trying to make “make more art”, where “art” is very loosely defined. To start, I’m doing more sketching, writing, and I’m even going to drop in on an improv group.

I journal in a Recurring Journal I made last year for 2023 — it splits the year into four 13 week cycles where you journal the same day in the cycle on the same page spread. So, on April 3rd, I’ll be journaling on the same page as January 2nd. The idea is that I can see some progress and renew my energy for the next 13 weeks.

Lessons from My First Real Program

(I commemorated this program in a t-shirt)

In 1983, in the wood shop of JHS 125 in Woodside, Queens, perhaps sensing that my friend and I we’re acting up out of boredom, our teacher asked if we’d rather be in “computer shop”. Mr. Abbe had good instincts.

My new shop teacher, Mr. Penner, gave us each a sheet of graph paper and told us to count 80 columns and 25 rows and draw a picture by filling in squares. I drew a skull (I think it might have been getting close to Halloween). Next, he taught us enough BASIC so that we could write a program to draw our pictures on the screen.

I looked up an old Commodore PET manual, PETASCII table, a PET memory map, and downloaded VICE, a PET emulator, to recreate it here (lines 1010+ would have the coordinates from the drawing):

10 REM DRAW AN AWESOME SKULL!!
20 REM BY LOUIS FRANCO
30 READ X, Y
40 IF X = -1 THEN END
50 POKE 32768 + y * 80 + x, 160
60 GOTO 30

1000 REM (THE X, Y COORDINATES FOR THE SKULL)
1010 DATA
1020 DATA
2000 DATA -1, -1

What I love about this introduction to code:

  1. It is pretty much the minimum code you can write to get a drawing on the screen.
  2. It has conditionals and loops, so it’s more interesting than Hello World.
  3. It takes advantage of something a 13 year-old might know — X, Y coordinates.
  4. He gave us lines 30-60 because you have to know minutia of PET architecture to understand it. He did explain it, but didn’t expect us to be able to write it.

The next lesson was to animate the drawing (cycling two frames), which we were mostly on our own to do.

T-shirt showing a PET computer with a pixelated skull on it in green