Hi, I'm Corey Haines.

Check out and follow the github repository here!

A few years ago I did a fun talk called "I Don't Know Prolog, And So Can You." I had been learning some Prolog, and I wanted to share what I had learned. The intent wasn't to teach people enough Prolog to have the audience writing applications, but to give a taste of "what does Prolog even feel like" and "here are a couple things I found cool." After all, you might have heard about logic programming (of which Prolog is a part), but you've not taken the time to really dive in; after all, you've got other things to do and learn that are more relevant to your day-to-day life and work. But, you might have time to watch a 30- to 45-minute talk on "neat things about Prolog." A lot of people seemed to, at least, as the talk and video were fairly popular.

I don't give a lot of talks at conferences these days (of course, in the current time, there aren't that many conferences going on), but I still like to share things I learn. The other day, some folks I know (Hillel Wayne, Glen Vanderburg, and Brian Marick) mentioned the Icon programming language on Twitter. Glen mentioned the power for text processing in a different form than regular expressions.

I decided to take a look, and it does seem pretty neat on the surface. I don't know much, yet, of course, but I'm planning on diving in and learning how to write in it a bit. When I was thinking about this, I remembered the Prolog talk and how people enjoyed it. So, I got the idea: why not dive in on some lesser-known, possibly older, languages and learn enough to put together some short- to mid-length introductions to them, sort of a highlight reel of the language. While the intent won't be to have you go out and use the particular language, by seeing a range of interesting features of different languages, you will definitely expand the way you think about your primary languages and how you use them. After all, none of the languages we use regularly were birthed in a vacuum; they all have a heritage.

This project is going to start small, focused on the next 8 weeks w/ an incremental approach. For the first 4 weeks, I'm going to be dive into Icon, play around a bit, write some programs, learn some history around it, generally find neat things. I'll then share it in a weekly newsletter. For the second set of 4 weeks, I'll pick another language. But this time, alongside the newsletter format, I'll be doing some streaming as I go through the learning process in a more real-time format. Then, at the end of the 8 weeks, I'll put together two short- to mid-length, say 30- to 45-minutes long, presentations on these languages. If folks are interested in the project at that point, then I'll pick another language and keep going.

What languages will I be focusing on? I don't have a defined set of criteria, but I am looking for them to be non-"mainstream" languages. So, you probably won't see me doing ones like TypeScript, Elixir, Clojure, etc. Rather, I want to find languages that people maybe have heard of, but never seen or know much about. Icon is a good example (for me, at least). There are a lot of these in our history. I think together we can do some spelunking through the past (and present). If it takes off, we might even dip our feet into some esoteric languages for a really good time.

So, sign up for this newsletter and join me on this journey. Should be fun!

Subscribe to Corey's Learning Icon

Corey learns a bit about lesser-known programming languages and shares cool things about them with you. Currently learning the Icon language to write a JSON parser. Follow the Icon repository here: https://github.com/coreyhaines/learning-icon