<commit_before>---
layout: page
title: About
---

Hi! My name is <NAME>. I teach reading, writing, and arithmetic to kids (as well as history, science, and Latin). This is where I (rarely) blog about software development (usually Swift on Apple platforms). Thanks for stopping in!

Here is a vague computer-focused timeline myself (WIP):

# The Atari

<a data-flickr-embed="true"  href="https://www.flickr.com/photos/unloveable/2388501732/in/photolist-4D4Gmm-a4xs9t-9ExALD-JGiegp-xNBmbc-4ckqTt" title="Atari 400"><img src="https://c2.staticflickr.com/4/3005/2388501732_7819e995d3_z.jpg?zz&#x3D;1" width="640" height="481" alt="Atari 400"></a>

My parents brought home our first computer, [an Atari 400](https://en.wikipedia.org/wiki/Atari_8-bit_family#The_early_machines:_400_and_800), membrane keyboard and everything. (Later, we eventually upgraded to the 800.) It seemed to me at the time that this device existed for my dad and me to play games on. We had [Pac Man](https://en.wikipedia.org/wiki/Pac-Man), [Missile Command](https://en.wikipedia.org/wiki/Missile_Command), [Centipede](https://en.wikipedia.org/wiki/Centipede_(video_game)), [Joust](https://en.wikipedia.org/wiki/Joust_(video_game)), [Space Invaders](https://en.wikipedia.org/wiki/Space_Invaders), [Star Raiders](https://en.wikipedia.org/wiki/Star_Raiders), [Q\*bert](https://en.wikipedia.org/wiki/Q*bert), and probably others I can't remember.

<a href="http://www.atarimania.com/game-atari-400-800-xl-xe-star-raiders_4992.html"><img width="300" height="394" alt="Star Raiders!" src="http://www.atarimania.com/8bit/boxes/hi_res/StarRaiders_i.jpg"  title="Star Raiders"></a>

To play, you hooked up a TV, popped open the hood above the keyboard and inserted the cartridge of the game you wanted to load. We also had a cassette tape peripheral we could use to load software.

<a title="By Bilby (Own work) [CC BY 3.0 (http://creativecommons.org/licenses/by/3.0)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File%3AAtari_410.jpg"><img width="500" alt="Atari 410" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Atari_410.jpg/512px-Atari_410.jpg"/></a>

Reading and writing bits to magnetic tape a few millimeters wide? It was not robust. But I naturally assumed that the computer was listening to music, and that's what allowed it to know what to do.

Another cool thing about the Atari is that it was really easy to open up and see what was going on inside. I remember opening an unresponsive joystick to see what was wrong and realizing that a contact had broken loose. I figured out a way to stabilize it and was back in action again. That's very rewarding.

# Basic

My dad dominated the high scores on all games, especially Pac Man. He wasn't [perfect](http://www.oxfordamerican.org/magazine/item/622-the-perfect-man), but he was always in a different league from me. However, I was the only one in the family who played with [BASIC](https://en.wikipedia.org/wiki/Atari_BASIC). My dad showed me this:
{% highlight BASIC %}
10 PRINT "GOTO CONSIDERED AWESOME!"
20 GOTO 10
{% endhighlight %}
And if you ever went to a Sears in the local mall where they sold personal computers and you saw some lewd statement repeating down the screen, then I may owe you an apology.

I remember a fat 3-ring binder of information related to BASIC programming with listings in the back that I typed into the computer, but the most important software eduction I received in these early days came from [the Micro Adventure book series](https://en.wikipedia.org/wiki/Micro_Adventure), which I drank like water.

<a href="https://en.wikipedia.org/wiki/Micro_Adventure"><img src="https://upload.wikimedia.org/wikipedia/en/0/08/Micro_adventure_book_cover.jpg"/></a>

The premise was that you were this elite hacker, and as part of a small team you stopped evil thugs from destroying the world. When the plot called for a message to be decoded or a robot gun to be controlled, then you fired up your "micro" and typed in the program printed in the text, thus saving the day. [Wikipedia](https://en.wikipedia.org/wiki/Micro_Adventure) agrees that the programs were awesome. I learned two lessons. That you can create program to solve a problem and when you do that and it actually works, it is a tremendous rush. And that there is an insuperable frustration involved in debugging intractable programs.

Besides these, I don't remember much else. I didn't get magazines with programs in the back and there was no internet. I loved these books but I didn't have the wit to research other similar things.

The biggest original project I remember was basically a calculator that would read a math expression from the keyboard and display it in enormous type across the screen along with the answer. My dad was impressed and said I might be able to sell the program to a school. I couldn't if he was being serious.

# College

Later, my dad, "for work", brought home a great big beige monstrosity. This was [after the Mac](https://youtu.be/2B-XwPjn9YY?t=23) but before Windows became ubiquitous. When you switched it on, a DOS prompt would appear and from there you could launch [Word Perfect](https://en.wikipedia.org/wiki/WordPerfect#WordPerfect_for_DOS) or [Lotus 1-2-3](https://en.wikipedia.org/wiki/Lotus_1-2-3#DOS).

We had a few of these over the course of my childhood. I think the first one just had MS-DOS and a one had Windows installed too, where if you typed "win" at the DOS prompt, then Windows would launch. When you switched it off, it would cut the power regardless of what you might have been doing. I took one of these to college, where I got my first email address and made "internet friends" on the Tom Waits usenet newsgroup, my introduction to what we called the [information superhighway](https://en.wikipedia.org/wiki/Information_superhighway). I started college as a mechanical engineering major, taking advanced calculus classes, physics, and chemistry. I later switched to CS and took classes in C, Fortran(!), and logic circuits. Then I switched again to English.

To explain this, you must know that I was a late-blooming reader. Previously, I read nothing that was not required of me for school. Now I finally came to realize that really smart people had existed in the past and that they had preserved their knowledge in books! You could actually read what they thought! Who knew? Anyway, I was reading so much my grades were suffering. Long story short, I withdrew from college, withdrew my savings, and went on an extended road trip all around the country. I ended up in Olympia, Washington where I formed the obligatory rock band, and when that fizzled, I returned to college, an English major.

# PC

In later years, after I started teaching, I downloaded Microsoft's Visual Studio and began to play. I wrote an desktop app to help me organize and format my teaching material so I wouldn't have to reinvent the wheel for every new student.

During the year of Linux on the Desktop, I assembled a pc from parts and started dual booting Windows and Ubuntu. (I needed to use and maintain my Windows app.)

Driven to the brink of madness, I set the box on fire and purchased my first Mac. It was wonderful. I learned Cocoa and ported my app.

# Learning

It turns out that getting a computer to do what you want it to do is relatively easy. The hard part is developing a system that can change.

One of the things I read on [<NAME>](Another important book for me was <NAME> Algorithms. I also watched the Coursera videos and I highly recommend them.)'s blog (back when it was active) was that I should read three books:

#### [Code: The Hidden Language of Computer Hardware and Software](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_2?ie=UTF8&qid=1488823221&sr=8-2&keywords=Code%3A)
If you're ever thought about working through [NAND to Tetris](http://nand2tetris.org), I bet you would like this book.

#### [The C Programming Language](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1488823494&sr=8-1&keywords=k+and+r+c)
A classic.

#### [Structure and Interpretation of Computer Programs](http://sarabander.github.io/sicp/index.xhtml)
This one's very good but alas I still haven't finished it. I read SICP up through chapter 3 and did the exercises up through chapter two. Funnily enough, the things I best remember are from the first two chapters. Seriously, it is an amazing book. Well-written, well-organized. It assumes a certain fluency in math.

#### [<NAME> Algorithms](http://algs4.cs.princeton.edu/home/)
Another important book for me was . I also watched the Coursera videos and I highly recommend them.

# Phosphorescent, LLC

Anyway, I thought my app was amazing. I literally needed to do zero preparation beforehand for any student, but I could still deliver targeted homework assignments on the spot. Automation, for the win!

I stopped developing it specifically for my company and started trying to make it a more general purpose tool that perhaps all teachers might find useful. It is still a work in progress. (Shipping is tough!)
<commit_msg>Fix typo.<commit_after>---
layout: page
title: About
---

Hi! My name is <NAME>. I teach reading, writing, and arithmetic to kids (as well as history, science, and Latin). This is where I (rarely) blog about software development (usually Swift on Apple platforms). Thanks for stopping in!

Here is a vague computer-focused timeline myself (WIP):

# The Atari

<a data-flickr-embed="true"  href="https://www.flickr.com/photos/unloveable/2388501732/in/photolist-4D4Gmm-a4xs9t-9ExALD-JGiegp-xNBmbc-4ckqTt" title="Atari 400"><img src="https://c2.staticflickr.com/4/3005/2388501732_7819e995d3_z.jpg?zz&#x3D;1" width="640" height="481" alt="Atari 400"></a>

My parents brought home our first computer, [an Atari 400](https://en.wikipedia.org/wiki/Atari_8-bit_family#The_early_machines:_400_and_800), membrane keyboard and everything. (Later, we eventually upgraded to the 800.) It seemed to me at the time that this device existed for my dad and me to play games on. We had [Pac Man](https://en.wikipedia.org/wiki/Pac-Man), [Missile Command](https://en.wikipedia.org/wiki/Missile_Command), [Centipede](https://en.wikipedia.org/wiki/Centipede_(video_game)), [Joust](https://en.wikipedia.org/wiki/Joust_(video_game)), [Space Invaders](https://en.wikipedia.org/wiki/Space_Invaders), [Star Raiders](https://en.wikipedia.org/wiki/Star_Raiders), [Q\*bert](https://en.wikipedia.org/wiki/Q*bert), and probably others I can't remember.

<a href="http://www.atarimania.com/game-atari-400-800-xl-xe-star-raiders_4992.html"><img width="300" height="394" alt="Star Raiders!" src="http://www.atarimania.com/8bit/boxes/hi_res/StarRaiders_i.jpg"  title="Star Raiders"></a>

To play, you hooked up a TV, popped open the hood above the keyboard and inserted the cartridge of the game you wanted to load. We also had a cassette tape peripheral we could use to load software.

<a title="By Bilby (Own work) [CC BY 3.0 (http://creativecommons.org/licenses/by/3.0)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File%3AAtari_410.jpg"><img width="500" alt="Atari 410" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Atari_410.jpg/512px-Atari_410.jpg"/></a>

Reading and writing bits to magnetic tape a few millimeters wide? It was not robust. But I naturally assumed that the computer was listening to music, and that's what allowed it to know what to do.

Another cool thing about the Atari is that it was really easy to open up and see what was going on inside. I remember opening an unresponsive joystick to see what was wrong and realizing that a contact had broken loose. I figured out a way to stabilize it and was back in action again. That's very rewarding.

# BASIC

My dad dominated the high scores on all games, especially Pac Man. He wasn't [perfect](http://www.oxfordamerican.org/magazine/item/622-the-perfect-man), but he was always in a different league from me. However, I was the only one in the family who played with [BASIC](https://en.wikipedia.org/wiki/Atari_BASIC). My dad showed me this:
{% highlight BASIC %}
10 PRINT "GOTO CONSIDERED AWESOME!"
20 GOTO 10
{% endhighlight %}
And if you ever went to a Sears in the local mall where they sold personal computers and you saw some lewd statement repeating down the screen, then I may owe you an apology.

I remember a fat 3-ring binder of information related to BASIC programming with listings in the back that I typed into the computer, but the most profound early education in software development I received as a kid came from [the Micro Adventure book series](https://en.wikipedia.org/wiki/Micro_Adventure), which I drank like water.

<a href="https://en.wikipedia.org/wiki/Micro_Adventure"><img src="https://upload.wikimedia.org/wikipedia/en/0/08/Micro_adventure_book_cover.jpg"/></a>

The premise was that you were this elite hacker, and as part of a small team you stopped evil thugs from destroying the world. When the plot called for a message to be decoded or a robot gun to be controlled remotely, then you fired up your "micro" and typed in the program printed right there in the text, thus saving the day. [Wikipedia](https://en.wikipedia.org/wiki/Micro_Adventure) agrees that the programs were awesome. I learned big two lessons. That you can create program to solve a problem and when you do that and it actually works, it is a tremendous rush. And that there is an insuperable frustration involved in debugging intractable programs.

Besides these, I don't remember much else. I didn't get magazines with programs in the back and there was no internet. I loved these books but I didn't have the wit to research other similar things.

The biggest original project I remember was basically a calculator that would read a math expression from the keyboard and display it in enormous type across the screen along with the answer. My dad was impressed and said I might be able to sell the program to a school. I couldn't tell if he was being serious.

# College

Later, my dad, "for work", brought home a great big beige monstrosity. This was [after the Mac](https://youtu.be/2B-XwPjn9YY?t=23) but before Windows became ubiquitous. When you switched it on, a DOS prompt would appear and from there you could launch [Word Perfect](https://en.wikipedia.org/wiki/WordPerfect#WordPerfect_for_DOS) or [Lotus 1-2-3](https://en.wikipedia.org/wiki/Lotus_1-2-3#DOS).

We had a few of these over the course of my childhood. I think the first one just had MS-DOS and a one had Windows installed too, where if you typed "win" at the DOS prompt, then Windows would launch. When you switched it off, it would cut the power regardless of what you might have been doing. I took one of these to college, where I got my first email address and made "internet friends" on the Tom Waits usenet newsgroup, my introduction to what we called the [information superhighway](https://en.wikipedia.org/wiki/Information_superhighway). I started college as a mechanical engineering major, taking advanced calculus classes, physics, and chemistry. I later switched to CS and took classes in C, Fortran(!), and logic circuits. Then I switched again to English.

To explain this, you must know that I was a late-blooming reader. Previously, I read nothing that was not required of me for school. Now I finally came to realize that really smart people had existed in the past and that they had preserved their knowledge in books! You could actually read what they thought! Who knew? Anyway, I was reading so much my grades were suffering. Long story short, I withdrew from college, withdrew my savings, and went on an extended road trip all around the country. I ended up in Olympia, Washington where I formed the obligatory rock band, and when that fizzled, I returned to college, an English major.

# PC

In later years, after I started teaching, I downloaded Microsoft's Visual Studio and began to play. I wrote an desktop app to help me organize and format my teaching material so I wouldn't have to reinvent the wheel for every new student.

During the year of Linux on the Desktop, I assembled a pc from parts and started dual booting Windows and Ubuntu. (I needed to use and maintain my Windows app.)

Driven to the brink of madness, I set the box on fire and purchased my first Mac. It was wonderful. I learned Cocoa and ported my app.

# Learning

It turns out that getting a computer to do what you want it to do is relatively easy. The hard part is developing a system that can change.

One of the things I read on [<NAME>](Another important book for me was <NAME> Algorithms. I also watched the Coursera videos and I highly recommend them.)'s blog (back when it was active) was that I should read three books:

#### [Code: The Hidden Language of Computer Hardware and Software](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=sr_1_2?ie=UTF8&qid=1488823221&sr=8-2&keywords=Code%3A)
If you're ever thought about working through [NAND to Tetris](http://nand2tetris.org), I bet you would like this book.

#### [The C Programming Language](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1488823494&sr=8-1&keywords=k+and+r+c)
A classic.

#### [Structure and Interpretation of Computer Programs](http://sarabander.github.io/sicp/index.xhtml)
This one's very good but alas I still haven't finished it. I read SICP up through chapter 3 and did the exercises up through chapter two. Funnily enough, the things I best remember are from the first two chapters. Seriously, it is an amazing book. Well-written, well-organized. It assumes a certain fluency in math.

#### [<NAME> Algorithms](http://algs4.cs.princeton.edu/home/)
Another important book for me was . I also watched the Coursera videos and I highly recommend them.

# Phosphorescent, LLC

Anyway, I thought my app was amazing. I literally needed to do zero preparation beforehand for any student, but I could still deliver targeted homework assignments on the spot. Automation, for the win!

I stopped developing it specifically for my company and started trying to make it a more general purpose tool that perhaps all teachers might find useful. It is still a work in progress. (Shipping is tough!)

{'fraction_non_alphanumeric': 0.08097364408625572, 'fraction_numerical': 0.020148115878893487, 'mean_word_length': 4.602501525320317, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 46, 'lorem ipsum': 0, 'www.': 12, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '150038', 'n_tokens_mistral': 5459, 'n_tokens_neox': 4999, 'n_words': 2508}