Learning new languages on Exercism
Tags: learning, watercooler, selfpromotion
Published: 2023-06-06 02:30:32

...or alternatively titled: "What have I been up to?"...

This post is meant as an update on some of the things I have been working on recently. I promise that learning languages on Exercism is one of those things... If you came here for that, feel free to skip to [that section](#exercism).

1. [Hey there!](#hello)
1. [Functional programming in JavaScript](#fpjs)
1. [Using Elixir at work](#elixir)
1. [Learning new languages on Exercism](#exercism)
1. [Streaming on Twitch](#twitch)

## Hey there!<a name="hello"></a>
It's been a while since my last post (and over a year since the last post in the series on functional programming in JavaScript). 

Maybe some of you checked out my posts on functional JavaScript and have been wondering what's been up with the change in content (or lack thereof).

Maybe some of you saw the post on setting up Vue with Phoenix 1.6 (which weirdly ended up being a primary resource on that topic). 

Maybe you recently joined dev.to and I was assigned as one of your initial people to follow.

Whatever reason brought this post up in your feed/notifications, thanks for reading this far!

## Functional Progamming in JavaScript<a name="fpjs"></a>
So... I have had a post on functional programming in JavaScript in draft for over a year. I was pretty happy with it, and even had a coworker look it over.

But then I just let it sit there. And as it sat there, I became increasingly discontent with it. I really wanted this post to convey practical applications of functional programming in JavaScript without being just another impractical fluff piece.

And then I started to question myself whether FP (I'm already tired of writing out the whole thing) is even practical in JavaScript. Or at least the bits of FP that I was writing about.

Part of this introspection was prompted by my experience with using Elixir at work (more on that in a bit). Elixir is an FP language, but is very different from the "real" FP languages that I initially was drawn to such as Haskell and OCaml.

Well, long story short, I've come back around and I still think that FP in JavaScript can be a practical and even enjoyable approach to programming in many situations. So, I'll be dusting off that post and continuing on with the series very soon!

## Using Elixir at Work<a name="elixir"></a>
Most of our codebase is written in Elixir. To be honest, we all learned the language on the job, and we're still figuring out how to do it "right".

Elixir has zero mutability. Absolutely none. Even most MLs have some mutable data structures. Not Elixir.

Coding with this constraint really forces you to think of new approaches to problems. Elixir does add some nice features that give you the tools you need to solve these problems, but you have to learn how to use these new tools effectively.

Maybe I'll write more about Elixir sometime. There are some neat things worth talking about, but I still haven't decided what I like or don't like about it (mostly because I'm still not sure I'm doing it right).

## Learning new languages on Exercism<a name="exercism"></a>
Exercism has a 12in23 challenge going on where the goal is to... well, learn 12 languages in 2023. So far, I've tried out Clojure, OCaml, Julia, Rust, and Pharo (Smalltalk).

My goal is to broaden my view of programming languages by learning languages that are very different from each other.

(I've been putting off languages like Java or C# because I am not a fan of OOP as an outside observer, but I do think I should give them a fair shot.)

Exercism lets you solve the exercises directly in the website in a code editor, but I wanted to also get a feel for the tooling and development experience, so I have been downloading the exercises using the CLI.

I was also hoping to build a real life project using each language to get a feel for the ecosystem, build process, and deployment/delivery. I am not sure I'll end up following through with that, but I do plan to use OCaml and maybe Rust to finish the [Crafting Interpreters](https://craftinginterpreters.com/) book.

I recommend joining the challenge! Even though it's already halfway through the year, it is not too late to jump in and check it out!

## Streaming on Twitch<a name="twitch"></a>
And if you would like to join me in the learning journey, I'll be streaming on Twitch!

I don't have a regular schedule yet, and it's not a polished presentation, but I enjoy it, and maybe you will too.

I can be found most places at sethcalebweeks:

- Twitch: [https://www.twitch.tv/sethcalebweeks](https://www.twitch.tv/sethcalebweeks)
- YouTube: [https://www.youtube.com/@sethcalebweeks](https://www.youtube.com/@sethcalebweeks)
- Exercism: [https://exercism.org/profiles/sethcalebweeks](https://exercism.org/profiles/sethcalebweeks)
- GitHub: [https://github.com/sethcalebweeks](https://github.com/sethcalebweeks)
- Twitter: [https://twitter.com/sethcalebweeks](https://twitter.com/sethcalebweeks)