New Newsletter, Parser Combinators, Courses, and More
New Newsletter, Parser Combinators, Courses, and More
David Beazley (@dabeaz)
March 4, 2023
Newsletter Migration
After a stint of newsletter hosting at TinyLetter, I've decided to migrate my newsletter to ButtonDown. The deal-breaker was the ability to author the newsletter using markdown--which is a real benefit for code examples and other things. Welcome!
A New Blog Post - Parser Combinators
I originally planned to send out a newsletter dedicated to my recent foray into parser combinators. However, it got a little bit out of hand and expanded into something greater. So, I decided to post it over on GitHub instead.
In short, I recently implemented my compiler class project in Haskell and fell down a rabbit hole related to the implementation of parsers. Normally, in the compilers course, I have everyone implement a hand-written recursive descent parser. However, the Haskell book I was reading ("Programming in Haskell" by Graham Hutton) tackled parsing in a completely different way. I decided it might be fun to try something similar in the world of Python. I use "similar" very loosely here as my solution makes full use of Python's dynamic typing, the so-called "walrus operator", variadic function arguments, and all sorts of other VERY non-Haskell kinds of things. There's more than enough to anger everyone, but it's still kind of cool.
In any event, if you're looking for a bit of crazy fun, here's the post.
Immersion Courses versus Extended Courses
In January, I experimented with my usual course format and offered my Compilers/Raft courses in an extended month-long format. On the whole, I think the results of this experiment were mixed, at best. Some people liked the extended format, but I also felt that it lacked a certain element of "flow."
In the typical weeklong immersion course, we're all working on the same code at about the same time (this includes me). Rarely do we go for more than a couple of hours without pulling everyone back for some discussion. The alternation between coding and discussion offers a kind of pacing and makes it easier for me to know where the project stands at any given moment. For this reason, I'm inclined to stick with the immersion format as my preferred scheduling option. That said...
Would You Ever Consider a 1-on-1 Course?
As an alternative to the month-long group course, would you ever consider signing up for a course taught in an extended one-on-one format? As an analogy, consider it similar to taking music lessons.
We would meet together for a scheduled hour, once a week, and do a bit of code-review, pair programming, debugging, and other things. Upon conclusion, you'd have some homework to work on for next time (e.g., some reading, short video to watch, some project coding objectives, etc.). Maybe we'd work on it together in a shared GitHub repo.
It seems that such an approach could also offer significant flexibility in both pacing and scheduling around timezones.
Would it work? Would it be effective? I don't know. However, I'd really to get your feedback about it. Is it something you would even consider?
Courses for Summer
I have started to post immersion courses for summer:
- Write a Compiler, May 5-9, 2023
- SICP, May 15-19, 2023
- Advanced Programming with Python, June 5-9, 2023.
- Rafting Trip, June 19-23, 2023.
There is also still some space available in some of my spring courses.
Mastodon
Just a quick note that I am mostly active on Mastodon these days. You can currently find me at https://mastodon.social/@dabeaz.
Future Newsletters
That's it for now. I'm still hoping to be a bit more regular with newsletter posts. Things got a little crazy this winter with teaching, Covid, and other matters. However, summer is on the way. Time to code!
Cheers,
Dave