stories-matter Writing about programming: FreePascal from Square One

We asked one technical writer about his latest book and his writing process.

We love to share stories about technical writing. One recent example caught our attention: Jeff Duntemann is a longtime technical writer and author, and he recently announced a free ebook about programming. Jeff's FreePascal From Square One is a distillation of several of his other Pascal books, and an excellent starting point for anyone who wants to learn about programming.

We asked Jeff about his background as a technical writer, how he wrote his new book, and what readers can learn:

Let's start with an introduction

I'm Jeff Duntemann. As best I know (and I have traced the Duntemann line back to a chap born in 1687) I'm the only Jeff Duntemann who has ever lived. That's a big plus for a writer; I've known three guys named Mike Smith. Fortunately for them, none are writers. I'm a contrarian, and enjoy defying conventional wisdom. This allows me to live my life as I damned well want to. As for what I do, it's a long list. First and foremost, I'm a writer. I'm also an editor and layout artist, though I use the term "artist" loosely here. I read, and read all sorts of things. Not all readers are writers, but all writers are readers. (It's a kind of metaphysical law.) 

I coordinate a writers group. I program—(almost entirely) in Pascal. I'm a ham radio op, callsign K7JPD. I tinker with electronics. I build and use telescopes. Big ones. I build and fly kites, doubtless a habit inherited from my childhood in the Windy City. I work out. My great-grandmother made it to 96. That's my target. And on an irregular but frequent basis, I sit back in my big cushy chair and think.

You have a long history in technical writing. How did you get started?

When I was 8 (1960) I wrote a story about my toy dogs building a spaceship and beating the Russians to the Moon. It was my very first story. My journey as a writer actually began when I was 6, when my father took me to the local Chicago library branch to get my own library card. The librarian refused; the rules said kids had to be 7. My father threatened to call the alderman. I got the card.

I continued to write stories, and the fiction I wrote incorporated the nonfiction that I had read in library books. Rockets. Space. Astronomy, Volcanoes. Submarines. Much else. At 11, I taught myself electronics from library books, and built crystal sets, 1-tube radios, and a Geiger counter, among other things. In 1973, I began selling science fiction short stories to science fiction magazines and anthologies. Later on, in 1976, I wire-wrapped my first computer, out of an article in Popular Electronics about RCA's 1802 microprocessor. 1-tube radios were cool in their way, but computers, yikes! I did a lot of wire-wrapping in the late '70s, and in 1978 built a robot with two computers in it. I took Cosmo the Robot to a science fiction convention, and a reporter for Look Magazine who I met there included Cosmo in an article about robots in Look. Now that I knew how computers worked, right down to the metal, I began writing articles about them—on a typewriter, sheesh. My technical articles appeared in Creative Computing, Kilobaud, Byte, 73 (a ham radio magazine) and a few newsletters and anthologies.

I bought a "real" computer in 1980, an S100 box with floppy drives, a word processor, and a printer. I retired my typewriter. A year later, I bought an IBM PC. The PC was my programming machine, on which I taught myself BASIC, FORTH, and Pascal, using the now long-extinct compiler Pascal/MT+. I began selling technical articles to Ziff-Davis' PC Tech Journal in 1983, and later went on to work there as technical editor. 

A colleague introduced me to an acquisitions editor at the office of book publisher Scott, Foresman in 1983, and I pitched him a book on Pascal. He bought it on the spot. It took most of a year to write Pascal/MT+ From Square One. While I was writing it, this new Pascal product popped up out of nowhere, and rapidly drove most other Pascal compilers into the sea. When I turned in the manuscript, my editor asked if I would rewrite the book to focus on Turbo Pascal instead of Pascal/MT+. By then I was already programming in Turbo Pascal, so although it delayed the book for almost another year, I did the job and turned it in. Alas, Scott, Foresman changed the title without consulting me, to Complete Turbo Pascal. That didn't hurt sales. The book went through four editions, the last one, in 1993, to a different publisher, after Scott, Foresman was acquired and closed down its tech books division. Bantam Books allowed me to change the title to Borland Pascal 7 from Square One. I had written an advanced topics book about Turbo Pascal in 1988, mostly about using assembly language from the compiler. Turbo Pascal Solutions didn't sell all that well, but it re-kindled my interest in Intel x86 assembly language.

Assembly language. Yes. It was a hidden passion, rooted in having to hand-code binary executables on my wire-wrapped 1802 boards back in the '70s. I mentioned that experience to my new editor at Scott, Foresman, and she pitched me a series about assembly language, with me as author of one title and editor of the series, in exchange for a fair chunk of money. I knew a lot of technical authors from my years at PC Tech Journal, and planned the series as a beginner book, an intermediate book, and an advanced book. I wrote the beginner book, Assembly Language from Square One. The other two books came in well, especially the third book, Michael Abrash's Zen of Assembly Language, which became legendary. But alas, as I mentioned earlier, Scott, Foresman was acquired by Harper Collins in 1991, and our series was put out of print. I took my beginner book to John Wiley & Sons, who published four editions starting in 1992. They changed the title to Assembly Language Step By Step, and it has sold very strongly up to the current day. I rewrote it heavily to include x64 assembly for the 2024 fourth edition.

In 1989 I co-founded The Coriolis Group with writer Keith Weiskamp. It was a publishing company, established to publish a programmers' magazine and (a little later) technical books. In 1996 I co-wrote The Delphi 2 Programming Explorer with Jim Mischel and Don Taylor and published it under the Coriolis imprint. The book was a great success, as it also taught object oriented programming and Windows event-driven programming, foreshadowing FreePascal and Lazarus.

I wrote the "Structured Programming" column in Dr. Dobb's Journal from 1989 to 1993. I touched on Modula 2 here and there, but in truth almost everything I wrote for DDJ was focused on Pascal.

I sold my first science fiction novel to a small press in 2005. After we closed down Coriolis in 2002, I self-published several more volumes of my own science fiction and fantasy. My fiction has done well in the Kindle era, but I'm best known for my technical writing.

Where did the FreePascal From Square One book project come from? Why write this book?

I discovered FreePascal and Lazarus in the late oughts. At that time I was still programming in Delphi, mostly for fun, and as Delphi's price tag began to soar, my interest in it waned. I teach programming, and I can't teach programming using a product that costs $1000 or more per user. Turbo Pascal? Fifty bucks, sure. A thousand bucks or more? No way.

Early in my tech writing career I discovered that I had a talent for explaining technical concepts to newcomers. By 2010, all my Pascal material was long out of print and slowly being forgotten. With FreePascal becoming popular, I had a chance to create a new beginner book for Pascal. I decided to release it for free. Why free? I was paid for that material four times, and paid rather well. It was my way of thanking everyone for buying my Pascal books down through the years. 

The project began in 2010, and I tinkered with it on and (mostly) off for fifteen years. Beginning with Borland Pascal 7 from Square One, I removed all the platform-specific stuff, like interrupt and system calls, the Borland Graphics Interface, and anything else focused on DOS. I also decided early on that I wouldn't attempt to teach object oriented programming or GUI events. The plan was to have two goals:

  1. Teach the fundamental nature of programming, for people who had never programmed before.
  2. Teach the basics of the Pascal language, without going into object oriented programming or exotica like generics.

I wanted to keep the length of the book to 350 pages in the A4 trim size. The final PDF that I released on May 7, 2025 came to 354 pages. Nailed it. The idea was to make it long enough to be useful but not so long as to be intimidating. Now, object oriented programming is important, especially for GUI work using component-oriented GUI builders like Lazarus. I have the material extracted from my parts of my Delphi book. It will go into building a new book that will assume familiarity with programming and Pascal itself, and go further.

This time it won't take fifteen years.

You mentioned that this book is a distillation and update from your Turbo Pascal books. What else have you added?

What I did was a close developmental edit on my Turbo Pascal material to make it line up with FreePascal. In truth, I mostly took extraneous material out of Borland Pascal 7 From Square One. What I added I can rightly call focus, not only on FreePascal but on the ideas behind programming in general. I want the book to be accessible to hobbyists and especially homeschoolers. That focus, and an emphasis on brevity, allow the book to be used by sharp kids as young as 12 or 13.

I also added text explaining how to use Lazarus as a text IDE for FreePascal, without going into the Lazarus GUI builder. That will star in my current tech writing project: Lazarus from Square One.

What's your process for writing a book like this?

The first step after I get an idea for a book is to draw a conceptual line between what's in it and what's not in it. My discussions with people learning programming from books has taught me that focus is very important. Too many wandering threads tend to obscure the core material. So in a sense I write a description, then edit the description to remove things that don't contribute to the book's focus. I distill this description into an outline, where each major point in the outline is a chapter, and secondary headings naming subtopics are sections of the chapter.

The toughest decision I made in outlining FreePascal from Square One was stopping short of object oriented programming. Object orientation is important, critically important, but it's a subtle business and should be described only after the student has worked through the fundamentals of the language. The example programs in the book are short and fairly simple. The idea is to get across things like IF/THEN/ELSE, REPEAT/UNTIL, simple data types up to and including records, and so on. OOP is about conceptualizing a program under a specific paradigm. Starting with that paradigm requires a separate and more advanced book, one I'm working on.

What word processor or other software did you use to write this book?

I've used Microsoft Word as my word processor for 35 years now. Before 1990 I used WordPerfect, and prior to 1985 I used Wordstar. Word was originally created in 1983 by people hired away from Xerox. I worked at Xerox my first ten years out of college, programming in-house languages that are now best forgotten. (Not Mesa or Cedar. I wish.) But I mingled with people who used and developed GUI apps, and I played with Smalltalk on the Alto machine in our building's lab. Late in my career there I taught staffers how to use the Xerox Star workstations being installed in our building. Xerox laid the foundations for GUI software, and it shows in Word.

Layout for print books and PDF ebooks I do in Adobe InDesign. Layout for reflowable ebooks (which I do not do for technical books because of reflowing hassles) I do in Jutoh, a British layout program designed specifically for creating reflowable ebooks.

And a fun question: Everyone has a favorite font. What are your favorite fonts for print?

I bought Albertina when I started laying out my own books in the midlate oughts, because I wanted to be sure that I had the rights to embed the font in the books. All my new material is done in Times New Roman, as rights issues for that font have been settled. As for title/spine fonts, my favorite font is the free Good Times font from DaFont.com for science fiction, and for fantasy books I use various others. I use free fonts to avoid rights issues. For me, Good Times is the best.


Thanks to Jeff for this excellent interview about his journey in technical writing, and about his new book! You can explore FreePascal From Square One on Jeff's blog, which has a link to download the ebook in PDF format. Learn more about Jeff and his other books at his contrapositivediary.com website.