It’s 2021 so, continuing a tradition I’ve never done on this blog before and am unsure of starting in the first place, I’m going to outline a couple tech- and programming-related resolutions for the new year. These is going to look a lot like a hasty, disorganized TODO list, but it definitely is. This list, in addition to it’s other virtues, is also woefully unordered.

ParserObjects v3.0.0

I was hoping to have the v3.0.0 release of ParserObjects out before the end of 2020, but it didn’t work out like that. Every time I looked at this project I found more and more things I wanted to add, change or cleanup. It has been consuming my time and attention in a serious way for the past few months. But, the first beta is already out and I am am hoping to release the final 3.0.0 version very early in 2021. There’s nothing else I want to do for the library right now except maybe improve test coverage by a few points. Basically I’m just waiting on a little bit of feedback and I’m using it myself in some downstream projects to make sure I like it enough.

After 3.0.0 things become a little bit more interesting. I have more features I want to add which I didn’t think I would have ready in time for this release. I’ll be posting more about these new features and my other plans for this library in the coming weeks.

In addition, I want to learn a few more parsing algorithms. Among them, the Earley algorithm and GLL. If I can learn them comfortably enough, one or both of these might be integrated into ParserObjects itself (in fact, I have already started local branches for both, and both algorithms require serious, but manageable adaptations to integrate properly). I’ll have more to say about these algorithms in future posts, be they fun announcements or insult-laden tirades.

StoneFruit v2.0.0

The StoneFruit project has taken a bit of a backseat since I started the push on ParserObjects. I’m hoping to wrap up the 2.0.0 release of StoneFruit early this year, so the cool new features I’ve been developing can go into use.

With that library released, I have a few little tools using StoneFruit that I have developed and want to develop. Some of those apps are small, private things that don’t make sense as a public project, but others very possibly might have a broader appeal. I’ll post updates about all this when the time comes.

CastIron v2.1.0

There are a few little features and improvements that I want to make to the CastIron library, which didn’t make it in to the v2.0.0 release. v2.1.0 will be a small feature-full release, and I’m hoping it won’t take me too long to integrate and test the new features I have planned.

I’m also starting to get the itch to redesign and simplify a few parts of the library, efforts which would necessitate breaking changes and another major version bump. None of my ideas so far have reached the level of urgency that I’m ready to commit to a project of that size, but the ball has started slowly rolling in that direction. Either way, expect more CastIron in 2021.

SQL Parser

I mentioned my SQL Parser project on this blog over a year ago and it has been sitting in waiting ever since. I needed to have a full-feature parsing library ready to go first before I could continue working on this project. With ParserObjects 3.0.0 imminent, there are no more roadblocks standing in the way. I am hoping to make some serious progress on this project in 2021, maybe even leading up to a public release of it. A lot of this is going to depend on how much of the language I think a “minimal viable” implementation must have.

The fun feature of this library is that it’s going to contain parsers for multiple dialects of SQL without having to copy+paste the source code from one to the other. I’ll talk more about all this later, but suffice to say that there’s going to be a lot more shared infrastructure than you might expect if you aren’t familiar with combinator-based parsing ideas.

Learn F# and Elixir

It’s been a while since I sat down and tried to learn a new programming language, and I think I’m far over-due to pick up a functional one. To that end, I’ve decided to learn not one, but two functional languages in 2021. I’m going to start with F#, which I think will be an easy on-ramp for me considering my C#/.NET background and then I also have heard a lot of good things about Elixir that make me want to learn it as well. I’ve tried to learn a few functional languages in the past and always found myself turned off by various aspects of them, but this time I want to make a serious concerted effort to get past the tutorials and start doing some real work with these languages.

I have started poking around at a few tutorials, and there are a few things that already annoy me. I’ll post updates along the way, though I’m not sure yet if they’re going to be gushing love-letters or long lists of grievances.

I don’t yet have plans for anything to do with these languages once I learn them. It’s enough right now to just add them to the toolbox. Maybe I’ll get inspired to work on some kind of library or other project in these languages once I get more comfortable with them.

There are also a couple other languages I might like to learn, relearn, or brush up on: Rust, Go, Python 3 and Erlang are definitely on the list.

New Languages

Details are short, but I have kicking around inside my head some ideas for two new programming languages. One is going to be a very modern, aggressively-OO relative of C#. The other is going to be even weirder than that. Both of these rely on ParserObjects for the front-end, but also are going to require big investments of time and energy to get them moving. Expect to see at least a design manifesto or two show up on this blog, if nothing else.

Let’s Get Real

2021 is an entire year, and years are quite long. But they are also painfully finite. Several of the projects I described above are major time sinks, and unless conditions are very ripe it’s hard to imagine that I can get to all of them. If COVID quarantine and the work-from-home situation it has created persist long enough I will definitely get time to focus on a good chunk. Otherwise, some things are inevitably going to fall off the cart. Again, expect to see more blog posts in the coming months describing both planned and completed work.