Sterling has too many projects

Blogging about Raku programming, microcontrollers & electronics, 3D printing, and whatever else...

Perl 6 is dead. Long live Perl 6 (as Raku).

I am going to be honest and upfront with you. I have almost no opinion about the name change of Perl 6 to Raku. I can see going to war for something meaningful, like religion. I cannot imagine doing so for something trivial, like a programming language. I won’t be upset if you call my hammer a mallet. There are certainly advantages and disadvantages to the name change, but as far as I’m concerned, it was inevitable as long as the issue kept being brought up year after year.

However, I do want to take this opportunity to tell a story about my history with programming, the Perl language, and how my story intertwines with Raku.

Commence third person:

Once upon a time, there was a nerdy little boy named Andy. Andy’s father was nerdy too, in his own way. His father had a thing for electronics. He spent his daytime hours helping people from his ambulance, then helping people buy and sell homes. After that he was helping people learn the benefits of Augmentin, Timentin, Paxil, Bactroban, and whatever other pharmacological wonders Beecham or SmithKline-Beecham were making. (His son remembers the names of all these because he still has a few packs of pens or notepads with these names on them sitting around multiple decades and half a dozen moves later.) Despite his day time work paying the bills, he maintained a certain evening passion for computers and electronics.

Andy’s father thought personal computers were really cool. He would visit the hobby computer store downtown and look over all the 'wares. He would browse computer magazines like Compute! and checkout the latest and greatest equipment and software ads. He didn’t have a lot of money, so he decided to start modestly, with an Atari 400. Armed with an Atari 400, Atari BASIC, and a special cassette tape deck, he taught Andy how to copy BASIC programs out of Compute! magazine to make simple video games. A new software developer was conceived in the slow hours of pushing buttons on that horrid membrane keyboard. Being only 5 or 6 and barely able to read, his programs didn’t work, but his father painstakingly debugged these programs, armed only with a pre-med degree, a desire to teach, and a love for these quirky electronic computer boxes.

As Andy got older, Andy got tired of being Andy. He decided that he need a more mature moniker. So he became Andrew. Andrew’s father eventually replaced the Atari 400 with a Zenith Heath Kit 8086 (properly pronounced the “eight-oh-eighty-six” in case you didn’t know). It was an amazingly heavy and bulky machine, with an external keyboard and a green monochrome monitor. It was very powerful, though, with its bank of 16KB of memory and two 5¼" double-density floppy drives. No more fiddling with cassettes! But it had to be assembled. It was a Heath Kit after all. While Andrew’s dad was assembling this 8086, solder by solder, Andrew spent the summer taking computer classes from Ms. Francisco at the local community center.

One of Andrew’s father’s favorite stories is the day he finished putting that 8086 together. He snarkily said to his son, “Well, now that it’s built, what do we do with it?” His son, being a very literal young man rolled his eyes and replied, “You put a disk in like this and turn it on like this.” He quickly booted up this new machine and showed his father how to use this new fangled DOS thing.

Andrew continued to copy programs out of new editions of Compute!, but now for GW-BASIC running on Zenith Z-DOS 1.19. He also began dabbling in writing his own programs. These were extremely simple, but his knowledge was beginning to expand and mature. Along the way the 8086 picked up another 48KB of RAM, a 20MB hard drive, a text-to-speech board, a 2400-baud modem, and then a final upgrade to 640KB. That final upgrade mod involved Andrew’s father spending days soldering hundreds of memory chips to a circuit board that seemed a mile long. He had to hot wire in extra connections from the power supply to allow it to work as the regular bus connection could not provide the required amperage by itself.

Around the age of eleven, things were changing rapidly for Andrew. The old 8086 was not aging well and was replaced by an 80386DX. His best friend, Lucas, who would eventually secure his own pre-med degree, had recently secured a copy of Turbo Pascal. He reluctantly shared a bootleg copy of this software as well as the name of a file on the local Sherwood dial-in BBS containing a Pascal tutorial. Armed with a ream of continuous feed paper printed all day and all night on the tremendously loud Epson dot-matrix printer, he began to teach himself the wonders of Pascal.

After moving from his childhood home in Lawrence, Kansas to a new home in Wichita, Andrew kept working in Pascal. He had few friends in his new home and none with whom he really felt close. In a period which is as pathetic as it sounds, Andrew’s computer was his best friend, now a 486DX2/66. Continuing in Pascal, he could build tools for generating character sheets and manage the Mechwarrior games and other table top games he played with his brother. (Though, we called them “RPGs” even when they weren’t RPGs in those days.) Soon, Pascal started to even edge out video games as a dominant use of his time.

High school offered new opportunities to Andrew. The school taught an intro to programming course and an AP computer science course in Pascal. Pascal was old hat. He thought it would be a breeze and it was. He completed the intro course on the ancient Apple 2e computers the school still had in only 4 weeks, and spent the rest of the semester helping others and writing graphics demos for fun. The AP course was completed with equal speed, but it taught him several new tricks he hadn’t learned before along the way but now on newly acquired Apple PowerMacs.

At this point, however, he was no longer satisfied with Pascal. He really wanted to learn the language that all the best software of the day was written in, C++. [insert laugh track] He managed to get his hands on a copy of Turbo C++ and delved into the details of memory models, embedded assembly, and graphics drivers. For his sixteenth birthday, Andrew’s father did not buy him a car or any of the things more typical 16 year old might like. Instead, Andrew received Borland C++ 3.1 with Application Framework. Twenty pounds of manuals, forty 3½" floppy installation disks, and all. Best. Birthday Present. Ever.

Along the way here, he became convinced that Christianity was a pretty big deal in his life. And so, when he went to choose a college, he picked one where he could learn more about Christianity and computer science. At the small college where he ended up in, there were two other Andrews on his floor. They decided that it was too confusing for everyone to be Andrew, so the sophomore kept his name and the two freshman changed to use a different name. Our Andrew became Sterling, a middle name Andrew shared with his grandfather, who despised the name. (His grandfather much preferring his own first name, Delmont, but that’s a story for another time).

At college, everything was Java because Sun had managed to convince State U. to teach it. Sterling definitely never liked Java. It always seemed slow, verbose, and weirdly stilted. He was used to passing around function pointers, Java had none. Sterling had become accustomed to releasing his own resources, Java didn’t let you, preferring instead to lock up your program for multiple seconds at a time to do that for you more efficiently. He much preferred C++, but even C++ was troublesome, especially as that language continuously increased in complexity in a false search for perfection. He wasn’t satisfied with what he knew. He even began reading books on language design and grammars with the thought that maybe he wanted something different.

However, life goes on and while he may have written a few toy langauges, he didn’t dive deeply enough to make anything meaningful. Besides, he needed a real job. So to help pay for college (and pay for being married and to help his wife through college), he took a job as a Network Consultant. Between classes he would travel around northeast Kansas in his Dodge Dakota and plug in computers at grain distributors, configure NetWare servers at accounting offices, and pull all-nighters to rebuild Linux mail servers for police stations, etc.

Along the way, Sterling encountered his first Perl program, Anomy Sanitizer, an early e-mail protection program. Sterling’s boss wanted to customize it to deal with a particular problem one of his clients was having. Sterling did and in the process was introduced to Perl 5.6. He didn’t think much about it in 1999. Perl looked sufficiently C-ish that he could wade through it without really learning it. So he solved the problem and moved on.

As he finished up his undergraduate degree and begin grad school (to the surprise of everyone, including himself), he briefly took a job as a research assistant. The research Sterling was helping with generated copious piles of data in long log files. However, to understand the data, he needed to summarize it, as anyone familiar with C can tell you, parsing textual data in C and summarizing it is a real pain, which is why almost no one uses it for that task directly. Sterling decided to write the summarizer in new language he’d just heard of called Python and quickly discovered he was not a fan. So he decided to try again in Perl, and he found the language to be familiar and expressive and wondered why he hadn’t noticed how nice it was during his previous experience.

This was around the time when Perl 5 was first experiencing some pain around major changes certain members of the Perl community wanted to see made to the language. This was the era of the first Perl Apocalypses. As Larry and Damian began writing apocalypses, then exegeses, and finally synopses, Sterling read these avidly and found them fascinating. Sterling drank it all up. He really liked the way Larry Wall thought about software problems. Part of it was the way he entangled his Christian beliefs was intriguing. This just felt right to Sterling. So Sterling decided that if he could, he wanted to work in Perl until this Perl 6 become a reality and he could work in this fantastical new language.

Over the years, he watched developments of tooling like Parrot and Pugs and MoarVM and NQP, mostly from afar. Though, Sterling did briefly teach a Computer Architecture class at State U. He taught the VM part of the class using Parrot back in 2003. He also completed his Master’s Report using Perl to build a multi-agent system coordinated through a Perl-based ticketing system, called RT.

Then, he got a real job. His real jobs initially involved programming PHP, Perl, and Java, then focused on Perl and JavaScript, and later became an amalgam of Perl, Python, JavaScript, Go, Bash, and various others. His hobby and home projects generally involved Perl, but also Bash, C, C++, Java, JavaScript, PHP, Python, and Scala. As with anyone who lives in the unix-ish world, Sterling was a polyglot, of course.

Fast forward to around 2015 and the rumors were getting louder that when Larry Wall said Perl 6 would be released on Christmas, he meant this Christmas. It was finally time to start really digging in. Sterling started by seeing about porting some modules. He then got to remake his efforts following the Great List Refactor of 2015. Since 2015, Sterling has worked to steadily improve his fluency in the language, releasing more than a dozen modules to the Perl 6 ecosystem, and giving some talks at The Perl Conference related to his O(fun) work.

For those fun at-home projects in his spare time, if it can be reasonably done in Perl 6, Sterling has been doing it in Perl 6. Moving forward, if it can be done in Raku, he will be doing it in Raku. However, over the past 20 years, he’s also developed a deep and loving knowledge of Perl 5. Perl 5’s greatest weakness is its commitment to reverse compatibility. Raku’s greatest weakness is its commitment to break things in a significant way every year. This year’s break: Renaming to Raku.

That’s Sterling’s story of Perl/Raku, the Universe, and Everything.

Returning to first person, Perl still pays my bills (rather well!) and I see no reason to believe that’s going to change. As of this writing, I just completed my first production project in Raku as a volunteer gig. (I hope to write about that soon.) Yet, I have never been paid to write Raku and can’t imagine at this point when I ever will be. Times change, but I’m a go-with-the-flow kind a guy, so it’ll happen if and when it happens. In the meantime, I’m having fun using both of these hammers (or mallets) to bang on the problems I come across. I love both Perl and Raku and I don’t intend to give up loving either of them just because of this name change. I hope to keep a foot in both communities as well.


P.S., Special thanks to my wife who helped edit this. I love you.