Introduce yourself!

i always felt like tackling a new language each year sounds like a marvelous resolution ( in theory ), except for that fact that ( in practice ) it is just WAAAY too time consuming / fatiguing. :sweat_smile:

It certainly takes some time, but I don’t spend more than maybe 1-2 hour per day reading books, watching talks, tinkering with the language and digging into the wider ecosystem/community.

To be clear, I’m by no means proficient or even effective with all of these languages. What I find interesting is to get a high-level understanding of the languages and how they compare; their unique features, strengths and weaknesses, etc. Broadening my horizon. Reducing unknown unknowns.

anyway, when you say that you managed to pull if off more often than not over the past 8 years, i am thinking KUDOS! ( …just out of curiosity, may i ask what languages you picked? )

I sat down yesterday and tried to list them all from memory the first time… I’m sure I forgot something and probably got the order wrong. To my surprise, it seems like there are more languages than years! I realize now that I’ve only spent a couple of months with some of these languages for a particular purpose, so I wrote down the context/my main motivation for checking them out at the time.

Here is the list:

PHP - Quick and dirty websites (mostly WordPress) for various ā€œfriends and family projects.ā€ You know, when someone asks ā€œHey, could you make a website X for me?ā€

Python (for work) - Pipeline tools for MMORPG asset baking for Windows, XBos and Playstation. Game server deployment orchestration. Later, data science/machine learning.

C/C++ (for work) - Huge and old codebase for proprietary client-server MMORPG game engine and 3D real-time rendering engine for DirectX and OpenGL. Games targeting Windows, XBox and PlayStation.

C# (for work) - Developed suite of proprietary desktop tools for game content creation. The tools were used by game designers to create NPC behavior, in-game items and loot system, skill systems, etc. Replaced a bunch of legacy tools written for Microsoft Access in Visual Basic. Later, worked on bespoke web applications (.NET MVC) for banks internal compliance processes.

Lua (for work) - Scripting language for game designers (embedded in C/C++ game engine). We also created an in-house IDE (written in C# .NET) with ā€œIntellisenseā€-style auto-completion, etc. for game designers and scripters who had previously been using an old visual programming tool we made.

Ruby (for fun) - I dabbled with some web apps with Rails, hoping to replace PHP/WordPress at first. Wrote some simple language-learning scripts for to help my wife learn Norwegian. We also considered embedding Ruby into our game engine at some point, but opted for Lua instead.

Objective-C (for fun) - Got interested in developing apps for iPhone (prior to the advent of Swift). Read a bunch of the ā€œNerd Ranchā€ books, but never actually made any apps except some ā€œtoy projects.ā€

Classic ASP (for work) - Worked for a company who had a legacy CMS written in it… that had many active customers who we wanted to keep. Eventually replaced those sites with PHP/WordPress.

XSL (for work) - Pre-processing/re-formatting/layout of physical books prior to printing. Whoever thought is was a good idea to code in XML must have been a self-masochist.

Common Lisp (for fun) - Was gifted with a copy of ā€œLand of Lispā€ and absolutely loved it. This was also my first ā€œrealā€ experience with a functional programming language.

JavaScript (for work) - Working on SPA-application for bank compliance processes. Long story short: It was painful. I never want to touch JavaScript again in my life if at all avoidable, especially on the server-side (Node.js is an abomination). Prototypal inheritance is kind of cool, though.

Scala (for fun) - I enrolled in the course ā€œFunctional Programming with Scalaā€ with Martin Odersky on Coursera. Tried to force myself to complete the course, but I eventually dropped out. The language seemed extremely verbose/complicated and the course material was way over my head at the time.

Erlang (for fun) - My interest was peaked by a former coworker years ago, when we considered rewriting parts of our MMORPG game servers from C/C++ to Erlang, primarily due to insidious memory leaks and race conditions. I put it off for a long time due to the alien syntax. Some years later, I challenged myself to learn this language because of its ā€œweirdnessā€ and I absolutely loved it. The low-level support for processes and message-passing (actor model implementation) is superb. The ā€œhappy pathā€-style coding with pattern-matching also makes for very terse and readable code.

Elixir (for fun) - Really liked Erlang, but the syntax was rather exotic. I wanted to see what Elixir brought to the table. I really like Elixir and it’s probably my favorite language so far. The community is fantastic.

Clojure (for fun) - Interest was peaked by a friend :slight_smile: Put it off for a long time because I am (was) allergic to the term ā€œJVM.ā€ I eventually swayed to check out some talks because I love Lisp. Rich Hickey’s talks blew me away and convinced me to take the plunge. I’m really enjoying it so far!

These languages are currently on my radar for possible future exploration:

R - It seems to be very useful for data science and machine learning with ā€œtidyverse.ā€ My day job is data science/machine learning and some of my peers are raving about R. It also looks more ā€œLispyā€ and functional than Python, which I enjoy. I also like the wholistic development environment with R Studio.

Elm - I’ve heard many people raving about Elm in various communities, especially in the Elixir community (prior to the advent of Phoenix’s Live View). It also seems to be a hot topic in the Clojure community as an alternative to ClojureScript. I would prefer to keep it all in the same language.

Rust - Looks like it’s shaping up to be a ā€œsafer C/C++.ā€ When I was learning Erlang/OTP and Elixir, I kept hearing about interop with Rust for computationally heavy aspects through NIFs, etc. I suspect Clojure could fulfill the same need. Nevertheless, I suspect Rust will see an adoption surge.

F# - The algebraic type system looks neat and clean for domain modelling. I’ve watched several of Scott Wlaschin’s talks on functional programming and he uses F# for his examples. There’s something very appealing about the composability of algebraic type systems.

Swift - Really like what I’m seeing with ā€œSwitch for TensorFlow.ā€ Chris Lattner is doing a fantastic job on this. I would also like to be able to develop native apps for iOS. Learned Objective-C some years ago, so I’m also curious to gauge the difference in experience for iOS app development.

Go - Their deployment story seems amazing with just a single artefact. The language itself seems a bit ā€œboring,ā€ but its adoption rate looks promising. Google seems to be committed to it as well, but who knows… maybe they’ll drop it at some point. They seem to have a tendency to drop things.

Haskell - I like the idea of static typing in general, and its type system looks great. I tried learning it some years ago, but couldn’t grok it. It felt too ā€œmathematicalā€ and impractical. Still keeping an eye on it from a distance. It doesn’t seem like I’m smart enough to use Haskell :smile:

I should also mention that I have spent most of my career as a technical project manager/team leader; not as an engineer. This also meant I was moved around a lot between different teams and projects, and thus exposed to many different technologies. As I do not have a university degree, I felt the need to learn to ā€œkeep upā€ with my teams, understand the code and partake in the conversations.

Edits: Expanded a bit and fixed some typos.

3 Likes