Toni MaxxToni Maxx

What the DOS Era Still Teaches Me

nostalgia pseudocode lean essay

I got my first computer when I was ten, in the early 1980s. It was an Apple II. A home computer in those years did what you told it, and nothing else.

That feeling has never left me. It is also where my favourite habit comes from: lean code.

AppleSoft BASIC and a lot of disks

I learned to program in AppleSoft BASIC. There was no search engine to ask and no package to install. You had a few lines, a small amount of memory, and an idea. If the idea was too big, you made it smaller.

The Apple II came out in 1977, so it was already a few years old. Every program I wrote had to be short enough to finish.

My first love in tech was Beagle Bros. I had many of their disks. Apple Mechanic was one of them. The company started in 1980, and Apple Mechanic came out in 1982. Those disks were small, clever and a little playful. They taught me that a tiny tool, made with care, can be better than a big one.

A small company in high school

In high school, in 1990, I started a small software company. I called it T-Software House. It was a small company, and a small start.

FoxBase and the floppy disk shuffle

In my first year at Chiang Mai University, I built my first real software in FoxBase. It was a proper program, and it had one big limit. It did not fit on one disk, so running it meant swapping floppy disks.

If I wrote that logic in plain words today, it would look like this.

LOAD program FROM disk 1
WHILE user IS working
  IF next screen IS NOT on this disk THEN
    ASK user TO insert the right disk
    WAIT until the disk is ready
  END IF
  SHOW the screen
WEND

Nobody likes that. But the limit made me think about what the program really needed, and what it could leave out.

FoxPro and real business work

After FoxBase, I moved to FoxPro and used it for many business projects. Business software gets used every day, and people notice when it is slow or confusing. That work kept the same habit alive. If a feature was not needed on day one, it waited.

Karaoke on Windows 3.1

Later I wrote karaoke software for Windows 3.1. Microsoft released that version on 6 April 1992. I sold my software to many shops in Chiang Mai and Bangkok.

A shop owner does not care how clever the code is. They care that it starts, works and does not get in the way. That is a good test for any software.

Lean code, then and now

The tools changed a lot. Floppy disks went away. Memory grew from kilobytes to gigabytes. The habit stayed.

I never decided to keep it. It just stayed, from BASIC to FoxPro to Windows 3.1 and on to the web. Each new tool gave me more room. Each time, I found that the work was still better when I used less of it than I was allowed.

For me, lean code means a few plain things.

  • Build the smallest thing that works, and put it in front of someone early.
  • Leave out what the first version does not need.
  • Measure the size of what you ship, because a small thing is faster for everyone.

The smallest thing that works, today

I try to follow the same rule on this site and in my projects. Two examples are public, so I can show them.

NativePress is a WordPress plugin with an Expo app. The plugin has its own REST namespace, nativepress/v1. It serves lightweight Markdown instead of the default heavy wp/v2 output, and the app draws it with native components. You can read more on the NativePress page.

This site is the second example. The home page went from 25.3 KB to 7.8 KB over the wire after I turned on compression. I measured that with the raw and gzip sizes of the page. Same page, same words, far fewer bytes.

Neither change is clever. Both come from asking the old question: what is the smallest thing that works?

My rule for new features

When someone brings me a project, I use the same loop I would have used on the Apple II.

WHILE project IS NOT shipped
  IF feature IS NOT needed TODAY THEN
    CUT it
  ELSE
    BUILD it, TEST it, SHIP it
  END IF
WEND

Interactive · toy

WHILE project IS NOT shipped
  IF feature IS NOT needed TODAY THEN
    CUT it
  ELSE
    BUILD it, TEST it, SHIP it
  END IF
WEND

My rule for every feature: if it is not needed today, I cut it and put it on a later list. If it is needed today, I build it, test it and ship it.

It is short, and it works. I like it because it is honest. It asks whether the feature is needed today, not whether it is nice to have. Features that are cut are not lost. They go on a list, and we look at them after the first version is live.

If you have an idea and you are not sure how small the first version can be, I am happy to talk it through. You can also see how I work on the services page and the notes.

Book a free consult

Where this comes from

The personal story is mine. The dates for the Apple II (1977), Beagle Bros (1980), Apple Mechanic (1982) and Windows 3.1 (6 April 1992) come from public history sources. The page sizes for this site come from my own compression check on the home page. NativePress is described on its work page.