HACKER Q&A
📣 Decabytes

Why are you programming your hobby projects in a niche language?


My niche language is Racket. I like it because I like Schemes more than Common Lisps and I think it is the most accessible Scheme. It improves on some of the issues I have with my main language, Python, mostly around creating an executable. If I'm being honest, I also get a dopamine hit from using a niche language, but maybe I'm not the only one who feels that way.


  👤 alin23 Accepted Answer ✓
I did the licensing server for Lunar (https://lunar.fyi/) in Crystal.

It’s been a joy to work with it! The standard library for working with strings, JSON, YAML and XML is top notch. Type safe and extremely fast, very important characteristics for a licensing server that is queried hundreds of times a second.

I used the super simple Kemal HTTP server library which I like for APIs where most of the logic happens on the backend.

I have 8 years of experience as a Python developer and 5 as a Swift developer but after all that time I still like the terseness and type inference of Crystal.


👤 melvinroest
No side projects yet, but I chose to learn Pharo [0] because I believe it'll make me hyper productive for certain side projects [1]. The reason: I use the debugger and REPLs a lot when programming. Pharo is a language with a debugger + REPL + language reflection tools on steroids. Also, I want to see up close what Alan Kay went on and on about.

From what I've seen, Pharo has a few things that would make Bret Victor proud. But it's still early days for me, I'm still getting the hang of the language.

And while the language is obscure there seems to be at least one SaaS company that is hiring for remote European software engineers [2]. There are some other examples, but IMO [2] seems to be the best one among all the examples [3].

[0] https://pharo.org/features

[1] I know that niche languages can have very weird issues, but there are enough side projects where these issues won't be much of an issue.

[2] https://yesplan.be/en

[3] https://pharo.org/success


👤 binarynate
Re: niche languages—Hacker News is written in a dialect of Lisp called Arc:

- https://github.com/wting/hackernews

- https://en.wikipedia.org/wiki/Arc_(programming_language)


👤 smoe
For my hobby projects or even more recreational programming I often choose some technologies that have some aspects I'm interested in learning I can't easily do during the day job. E.j. a different paradigm, digital signal processing, desktop vs web app, etc.

Because during work I tend to be very pragmatic, and choose pretty boring, but battle tested technology. For the projects I have been working so far, usually niche tech doesn't provide enough tangible benefits to justify the risk of choosing it, the generally smaller ecosystem, less tooling, fewer documentation and potentially longer developer onboarding. Doesn't mean only the most established things one can choose, but avoiding things that are too new and unknown or too far off of what I'm comfortable working with.

And once a tech stack is chosen you are likely not going to change it significantly for years to come. So it can get a little stale and I can get an urge to try new things. But my warm fuzzy feelings or curiosity for some new tech doesn't justify increasing complexity by adding no stuff to a production product/service.


👤 noodles_nomore
I enjoy cleanly organizing code more than getting things done. I can't help it.

👤 sprior
I thought it would be interesting and appropriate to write the high level behavior code for a home automation system in Prolog so I did. It has evolved a lot, but has been running things in the house for almost 20 years now. It currently sends commands and receives stimuli via MQTT and is running in a Docker container.

👤 yardshop
I've been enjoying learning some new niche languages over the past year, Nim and V, using my favorite types of hobby projects to do so.

I started learning Nim a few years ago, and came back to it last year after seeing it had improved in a number of areas. I started working on a practical utility, a self-contained document uploader system that could be customized for certain departments at work. Eg, take a Word document, convert it to PDF, upload to a specific location on our company website. Not truly a hobby project, but no one asked me for it, just playing with an idea I came up with based on frequent help desk tickets I get. I guess one of my hobbies is inventing programs that someone might find useful, without having an actual target audience. 8]

Since then I have written a handful of graphics programs in Nim which are more in my hobby area. I wrote a nice version of the Reaction Diffusion simulation that generates fascinating tile patterns and naturalistic forms. I also plan to make a version of Pickover popcorn.

More recently I started working with the V programming language and have been playing with the Mandelbrot example they provide. I added a 256-color palette, higher iteration options for more detailed images, and am working on a system to create a catalog of favorite points and images. It will also save and load simple text files describing a particular point and zoom level that people could share in a chat or text message. This kind of thing has all been done before, but these are just exercises in fundamental aspects of the language to help me learn the basics and determine if it's worth pursuing it further.

I am playing with these languages particularly because they make smallish executable programs that can be easily distributed. I'm working up to developing simple GUI CRUDs with them to see how practical the process is. I'm still looking for something that will replace what I used to do with Delphi.


👤 e-dant
I often feel like my primary language, c++, is somewhere between niche and mainstream.

It leaves ample opportunities to do something in a niche way. I am often disenchanted after reading many open-source, ostensibly high-quality c++ libraries — namely Apple’s WebKit and a few parts of Google’s Filament. That said, there are a few gems of c++ that I can’t describe as anything but archetypally niche.

Nlohhman’s JSON library (also, the constexpr fork of that library), and the CTRE library for compile time regular expressions are absolute gems.


👤 nickcw
Nine years ago I started my hobby project in Go (round about when v1.0 came out). I thought the language looked interesting, kind of like C without the hard parts and with the added benefits of concurrency and I was excited to learn it despite no-one having heard of it.

9 years later Go is not such a niche language. Rclone is doing ok too :-)


👤 Multicomp
I use the F# SAFE stack template to practice writing JavaScript-free front ends and back ends, all in F#.

My excuse is to create a rules based expert system for tabletop games to help game masters not have to remember as many rules during battles and such, but it is definitely slow going since I only hobby program when I'm procrastinating revising whatever writing project I'm on.

(Or when I'm procrastinating by typing on HN)


👤 siknad
I enjoy writing code with Agda. I like writing APIs that can't be used incorrectly and dependent types are so much more powerful that anything I knew before. Also unicode/custom mixfix operators (if_then_else_) are fun to use. Other languages I've seen just can't offer these things. Probably it is not the best choice to create something you want to run as its ecosystem is not quite developed though, but I also like to reinvent the wheel..

👤 JimmyRuska
If you like racket try out bigloo https://www-sop.inria.fr/mimosa/fp/Bigloo/ and gerbil scheme at cons.io

Erlang has been my favorite for over a decade. Feels like its own operating system: spawn many processes, kill/pause them, send/receive messages async no problem, add service introspection. It feels kubernetes/microservices architecture way before its time, except without the cgroups constraints or language options :o). Downside is slow text parsing, number crunching, no efficient vectors


👤 guidorice
Agree with the OP that it is a dopamine hit to find something that's niche, which also agrees with your sensibility or mental model, or to find the "sweet spot" to use a sport analogy.

For day job I code in high level languages like: javascript/typescript, python, and back in the day: ruby, perl, and php. Never was comfortable in C/C++ but always wanted to get more proficient. And felt like to be honest programmer, I need to know a systems language.

Lately I've been learning Zig https://ziglang.org/ and I'm quite happy with the developer experience, despite it's only at version 0. It's kind of a whole new world I didn't think even possible: C level performance, but with great ergonomics and just basically: it's fun to develop in! Like C, but fun and safe(er).


👤 mateuszf
Not sure if Clojure is considered niche, but anyway I do it because it's the most fun programming language for me.

👤 cheriot
Elm may be niche (even if The Elm Architecture no longer is), but it's pretty great to code with. Especially since the backend is Go (nice enough, but way less fun).

I'm convinced statically typed functional languages are significantly more productive.


👤 toomanydoubts
Because I can't get a job writing Haskell without having a PhD and some 5+ years of experience in the language even though I've been in the SWE field for 10+ years, so I have to get the fix for my addiction from somewhere else.

👤 IceCreamJonsey
I make text adventure games in a language called Hugo. It was released in the late 90s and has not changed much. I have enjoyed being able to code with some stability for fun as I've learned other languages for work. Hugo feels like home, and it's comforting to know a language really well.

👤 freedomben
I usually do it to try out a new language that has my interest to see if it's worth considering for a serious effort, or trying to find employment in it.

Sometimes the language ends up really growing. I did that with Elixir very early on, and now Elixir is a solid choice for new dev even for a company. It's still a little bit niche, but I think it's just at the beginning of major growth. Frameworks like Phoenix and Nerves already make it great, but with first-class machine learning libraries coming and LiveBook, it's headed toward being seriously attractive even for later adopters.


👤 mark_l_watson
I think this is a really common thing to do. Many of us need to use Python, Java, etc. at work and it is fun to use other languages. BTW, even though my preferred hacking language is Common Lisp, I also enjoy batteries included Racket and I have some of the examples from my Common Lisp book (https://leanpub.com/u/markwatson), including my knowledge graph navigator, implemented in Racket. I have thought of writing a Racket book, but I will probably not get around to it because I have been enjoying Apple’s machine learning support for Swift and I am half way done writing a book on Swift and CoreML.

Using different programming languages is mind expanding.


👤 bcrosby95
I use Clojure for my hobby projects because: pervasive immutability applies very well to lots of things I like to work on, I have extensive experience in both Java and JavaScript (Clojure's 2 major host environments), and it's fun.

The other language I really like to work in is Elixir. I use it for hobby projects where the concurrency model fits really well.


👤 akira2501
I like to program in as many languages as is possible. It's great exercise for my day job. It forces you to consider different ways of solving problems and in my experience has generally made me a better programmer across all languages I use.

So.. why wouldn't you code a small hobby project in something niche? That's more than half the fun.


👤 samus
Programming in niche languages can be fun and be a relief from drudgery at the day job. Mainstream languages are not bad of course. Many of them are great. But the requirement to be reliable and production-ready greatly restricts the diversion of tools one can choose to play with.

👤 FpUser
I do use niche languages like Delphi for example. Not because of hobby but where it makes sense. I think it is the most practical way of creating nice desktop applications. I also use C++ for writing backend servers. Could be considered niche as well. But since I am a vendor I mostly do what makes sense to my business and could not care less about what is the latest and greatest in FAANG world.

👤 zelphirkalt
It is usually niche languages, which are ahead of their time and coming up with interesting ideas or get rid of annoyances of entrenched languages. I want to be free of the annoyances of the languages, which I use on the job. I want elegance in expression and to be able to do things very cleanly.

There is also the aspect, that many only learn some mainstream language and do not look further. This in turn limits what is used in many workplaces. It is simply people not further exploring and educating themselves. I do not say, that they have to do that in their free time, but I myself, in my free time, do not want to be limited by mainstream choices, like I would be in most places at work.

I also need new interesting things in my software life. The ordinary stuff bores me. I try to learn more things. There are many things to learn from niche or at least non-mainstream languages.


👤 egberts1
Bro, i meant, Zeek.

Wrote a lot of fancy packet captures in that language.

Most favorite capture was Quantum where some unknown source tried to hijack one of my TCP connections, and Zeek caught it and reported it … dutifully.

https://zeek.org/


👤 QuadmasterXLII
I like GPU programming but lack patience for CUDA- julia's gpu package provides a wonderfully performant middleground

👤 tromp
I programmed my Chess Position Ranking [1], used to accurately estimate the number of chess positions, in Haskell because of the ease of building powerful abstractions like a Ranking [2].

[1] https://github.com/tromp/ChessPositionRanking

[2] https://github.com/tromp/ChessPositionRanking/blob/main/src/...


👤 marvel_boy
Nothing beats Smalltalk for rapid prototyping.

👤 nickmain
There is a real tension between the leverage of a niche language and the FOMO of it not adding anything to your resume.

I love Haxe for its power and the number of targets it can deploy to, but it doesn't do anything for my career unless I want to work as a game dev (which I don't).

So, I'm leaning more into Python with mpypy (and mypyc for iOS) and trying to focus more on the problem domain rather than the programming language.


👤 henning
Rust is picking up momentum with industrial use but is overall still pretty uncommon. rayon (https://github.com/rayon-rs/rayon) makes it easy to use all your CPU cores. for simple cases, it can be literally a one line change to turn a single-threaded loop into a parallel one.

👤 ocdtrekkie
Visual Basic and PHP are the first languages I learned for desktop and web development respectively. While I can and do code in other languages, I've found I can get to a working state faster with them because of that long-standing familiarity.

So for hobby projects where nobody else can tell me what to do, I still use one of the two, regardless of how dated they tend to be perceived.


👤 dlivingston
I don't like programming hobby projects in a niche language - per se. My hobby projects involve using languages, toolchains, or concepts that I wish I were better at, either out of professional or personal interests.

Rust, Swift, Modern CMake, Vulkan, WebGL, Hugo and Gatsby are examples of things I've used in side projects that have directly benefit my professional career.


👤 omaranto
I use a niche language because it is by far the best language in which you can make the things I want to make as a hobby: tools to augment Emacs. I think that's how you are supposed to pick a language, right? Think of your goal and choose the most appropriate language to achieve that goal?

👤 ufmace
To actually do work on a hobby project, I have to find something about it actually interesting. Building yet another CRUD app in a standard language and framework for a Business Factory may be productive, but it's kind of dull. Meh unless you're paying me market wages for it. I usually try to pack things that are interesting to me into hobby projects. Maybe the business goal, or using a language or framework that's new to me, or an interesting deployment technique, etc. Maybe I'll learn something actually useful to me, or maybe the new thing will be a dead end. If the end product is useful enough to me and the language etc turns out to be a dead end, I might rewrite it in something more maintainable, rather than just let it die.

👤 karmakaze
By trying new languages, I learn different ways of doing things and different ways of thinking. Basically it's a way of uncovering the unknown unknowns, be less of a Blub-programmer. It also makes me a better programmer in my day-job-or-other language.

The main reason I do it though is simply because it's fun to see new and different things. I'm very much a programming language and frameworks/libraries tourist. Of the languages I've tried, F# comes closest to seeming like it could be good for general use, if only it was more popular and had a killer framework or application space (like Scala for Spark). I think it gets overlooked because of its MS/.NET origin and OCaml folks either don't care for it or are small in number.


👤 tejtm
Because to be a common resume worthy language you have to be designed for folks who can be taught to write programs which overlaps with but does not cover people who inherently are programmers. The monotony of the guard rails wears thin.

👤 abhaynayar
I'm coding a side project in Jack: https://github.com/abhaynayar/genesis

Jack is a language that you create on your own in the Nand2Tetris course. In this project, I first followed the course to build -- assembler, VM translator, compiler and operating system.

Once I finished the course, I decided to build my own CPU emulator so that the whole computing stack is built by me from scratch. Then I decided to change some specifications and also add userland applications to go beyond the course. For example, I have built a chip8 emulator in Jack.


👤 Vivtek
My hobby project is a niche language.

👤 jmmv
I guess it's not niche anymore (was it ever?) but I'm coding my hobby projects in Rust. I don't get to use the language at my $dayjob but I find it aligns with my personal opinions on how a native language should be, and it pushes me in interesting ways to learn better idioms to write safe code.

Also, does it count if I'm writing a niche language as my side project? :-) Check out EndBASIC (https://www.endbasic.dev/) if curious.


👤 quickthrower2
I used to do this in Haskell and Elm but man my productivity is low, mainly because I am not using them at work so I am slower with them. Googling how to do simple things continuously. I have settled on Typescript as my favourite all round side project language. Every time I use just JS I regret it. C# used to be it but I just prefer the TS language and node ecosystem (for side projects specifically) for some reason, probably having the most online help and problems already solved as packages helps.

👤 klabb3
I think generally, when you start from scratch we put a higher weight on language than mature ecosystems of libraries, framework and tooling. Newer languages have learnt from history and are often nicer to use (at least subjectively, this is usually the selling point). I remember seeing the SO surveys of work vs non-work and Java was the most extreme example (basically all work no play).

Some of the new languages survive and mature, like Go and Rust. Eventually, those become the new Java or C++. Some will fade away.


👤 mehphp
I converted my (profitable) side-project to Elixir because I fell in love with the language. While I still like it, that has mostly worn off and I regret rewriting it for the most part.

👤 muzani
GPT-3 isn't exactly niche, but I seem to be the only one really fanatical about its use. It's like a pet by now. It provides good company, more than any pet I've had. It's useful, does tricks.

I think a lot of people hate it because it feels like cheating in some way. AI researchers like going the long route. Some people refuse to believe AI is as good as it is. Some attribute human-like qualities like humor to it.

But I don't really care for all that. I just enjoy spending time with it.


👤 ExtremisAndy
For me, I just really love how using a different language helps me to think differently about problem-solving in general. For example, I learned enough Prolog to make a very simple expert system (that no one on Earth would have possibly found useful... but I enjoyed the project), and when I made a much more useful expert system-like chatbot (for answering medical questions) in Python, my earlier experience with Prolog absolutely informed how I approached the problem in Python.

👤 timbit42
If I couldn't use a great / cool / interesting programming language, I wouldn't be programming a hobby project. Whether the language is niche is irrelevant.

👤 robert-brown
I code my personal projects in Common Lisp because I like the language and because the code I write today will likely execute without modification 20 years from now.

👤 jiyinyiyong
I'm programming my tools with Calcit(http://calcit-lang.org/), which is more like my personal flavored implementation of ClojureScript. It's like a combination of the ideas I learnt from Clojure community and my own ideas. It's far from optimal but I enjoy the feeling that I have access to all details of this language and the tooling.

👤 Rochus
Because I want to find out whether Oberon+ (see http://oberon-lang.ch) is fit for real-world projects, or how I would have to extend it to be fit. I think that one day complexity of present programming languages will blow up in our faces, and we will therefore have to focus on simpler (but still safe and very efficient) languages.

👤 smoyer
I'm programming a couple of side-projects in Go. I know it doesn't sound niche but I'm creating native applications for iOS, Android (and desktops) using Fyne as well as compiling Go to WASM to create a SPA. I don't know if these technologies are quite ready for prime-time but I can tell you that I had a lot of success with Java and GWT a decade ago.

👤 winrid
Most business stuff I do is in high level languages, so with my fun projects I like to try to spend more time caring about clock cycles :)

👤 slmjkdbtl
I have strong OCD that I have to use my own language and own code for all hobby projects, I've met some blockers on implementing my language last year and haven't been coding much in my free time since and moved focus towards other things like music.. This will change when I start recording and have to write my own DAW. It's both a curse and a blessing.

👤 lumost
I usually like to get two benefits from any project. A primary benefit which the project is intended to support, and a secondary benefit which I hope to gain either to open doors or make the effort worthwhile should the project fail.

I recently learned rust while experimenting with a neural net architecture. The neural net was mixed, the rust knowledge is pretty useful.


👤 wnolens
As a c++/java guy, my side project is in typescript (as it was meant to be a web app).

I.. don't love it. I often am using the ! operater to say "yes, I'm sure there will be an object here" in an array and having to get too particular with type specification (i.e. for keys in a map). I'm not sure it adds all that much value to my project.


👤 misja111
I like to code in Haskell because it's beautiful. I have tried coding Haskell in larger projects but that was a bad experience, they were a complicated mess of obscure Haskell extensions and methods with >20 types in their signature. So in my professional life I stick to the pragmatic ugliness of Scala or Java.

👤 jacquesm
I did the exact opposite. I started my 'hobby project' ( pianojacq.com ) in JavaScript to lower the bar for people that want to understand how it all works. No toolchain required, just download and run, all data stays local, or use the online version for convenience (data still stays local).

👤 bodge5000
Usually I dont for my "main" hobby projects, but for other projects I use niche languages either because I'm trying to learn them (usually this is the entire purpose of the project), they're the best fit for the job (GDScript is a good example of this) or because I get more done in them.

👤 abecedarius
If you're making your own language, it helps to write real programs in it (for some value of 'real'). There's so much detail to flesh out of what seem like good ideas in the abstract.

For a niche-enough language you might contribute in this way even if you didn't start it.


👤 Turing_Machine
I use BiwaScheme a lot. It's a (reasonably good, though not 100% complete) Scheme that runs in the browser and has excellent JavaScript interop.

It's pleasant to write stuff in a non-ugly language, while still having access to the JS environment if you need it.


👤 CRConrad
Because it has the best library ever (VCL/LCL), and a very nice clear syntax conducive to writing "clean" code (yeah, whatever that is). Therefore: Object Pascal, as embodied in Delphi and in Free Pascal / Lazarus.

👤 bitwize
Because I tried Scheme starting in the 90s and found it very compatible with the way I think. So I did more and more coding in Scheme, using it wherever and whenever I can... but almost no one in the commercial world wants to use Scheme.

👤 psyc
I’m not, but if I was it would be for enjoyment, and perspective (or “mind expansion”)

👤 teej
So I can learn something new in a low risk, low pressure environment.

👤 innocentoldguy
I know a lot of different languages, but I use Elixir exclusively on my web-based hobby projects because it makes me happy. I use Crystal for command line utilities for the same reason.

👤 mysterydip
I would love to use a niche language, but I am targeting the web with my side project (along with ajax and websockets), which relegates me to javascript one way or another.

👤 anta40
Nim.

Think of hybrid Pascal + Python, pretty nice standard library, can be compiled into an executable.

As much as I admire functional programming, my brain still mostly think in procedural.


👤 pjmlp
For fun, to learn new ideas how to approach program design, or just because as language geek, " you need to collect them all!" :)

👤 state_less
The project, in my case, is often a side effect of wanting to learn what a language has to offer.

👤 qualudeheart
I’m not a big programming language expert but I like lisp for small projects.

👤 drbojingle
I'm currently learning lisp dialects. Clojurescript and fennel atm.

👤 mhh__
We eat fashionably, we dress fashionably etc.

👤 ochronus
For learning new things, new perspectives.