13 ms·
Ask HN: 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.
- mhh__ 5y agoWe eat fashionably, we dress fashionably etc.
- egberts1 5y agoBro, 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/ https://zeek.org/
- marvel_boy 5y agoNothing beats Smalltalk for rapid prototyping.
- rossjudson 5y agoTrue! Smalltalk's weakness has always been not prototyping.
- bitwize 5y agoJust put your prototype in production; if it crashes, a debugger will pop up allowing you to fix it and continue!
- akira2501 5y agoI 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.
- bodge5000 5y agoUsually 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.
- dlivingston 5y agoI 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.
- firebaze 5y ago
- Turing_Machine 5y agoThis is a site for programmers, not a world affairs site. "Discussing pet languages" is entirely within the scope of the site. There are about a zillion other places on the web to discuss current events. Maybe try one of them instead? (edit) From the FAQ: Off-Topic: Most stories about politics, or crime, or sports, unless they're evidence of some interesting new phenomenon. Videos of pratfalls or disasters, or cute animal pictures. If they'd cover it on TV news, it's probably off-topic. (emphasis mine)
- firebaze 5y ago
- Turing_Machine 5y agoSee my excerpt from the FAQ above. I'm not sure why you think it's important to discuss that stuff here. As I said, it's not like there aren't hundreds, probably thousands of other forums on the web explicitly for that kind of topic. Now, if Ukraine or Russia were using some kind of novel radar jamming technology, or they were using a neural net to control their troop movements, or something like that, that would be within the scope of the site. Two armies beating the crap out of each other is not novel in any way.
- deleted 5y ago[deleted]
- kstrauser 5y agoI'll be real: I only have so much emotional bandwidth to deal with the flood of news right now. I welcome having a place to talk about literally anything else for a few minutes, if only to relax and catch my breath before I go back to the world stuff.
- Turing_Machine 5y agoI 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.
- firebaze 5y agoWhat are other non-ugly languages from your perspective, and why?
- mateuszf 5y agoNot sure if Clojure is considered niche, but anyway I do it because it's the most fun programming language for me.
- capableweb 5y agoSame here. I don't use Clojure because it's niche, I use it because it's the programming language I'm the most efficient in (even though years-wise, I have the least Clojure experience compared to other languages), build the most bug-free software with that has acceptable performance and because as you said, it finally makes writing software fun again. I think Clojure's niche-ness is a hidden strength as well, as the community is so strong and knowledgeable that you get very good help when you need it, from all angles. It's been a pleasure to use Clojure and interact with the community, even though the language is effectively built by one person instead of a committee (which, I think is another one of Clojure's strength [but not so hidden]).
- gbourne1 5y agoClosure is awesome, but I wouldn’t define it as niche.
- ithrow 5y agoClojure is indeed niche, but this is compensated by being able to use Java libraries.
- ncmncm 5y agoClojure is absolutely niche. The only non-niche languages are COBOL, Fortran, C, C++, Python, Java, Javascript, Go.
- deleted 5y ago[deleted]
- FpUser 5y agoI 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.
- noodles_nomore 5y agoI enjoy cleanly organizing code more than getting things done. I can't help it.
- smoyer 5y agoI tend to do the same thing but try to remember the adage that "perfection is the enemy of good". I might also be guilty of trying to write tests that are a small amount of code but cover lots of edge-cases.
- bluedays 5y agoI seriously thought I was the only one. I could spend hours refactoring and organizing code
- mysterydip 5y agoI find it's also a great way to procrastinate. "Trying to fix this elusive bug or design this new feature is becoming time consuming and boring... but I bet I could shave a few cycles off my rendering loop (again)"
- giraffe_lady 5y agothe core protocol implementation is 90% there but in a way that prevents the entire project from functioning? time to refactor an unrelated state machine for the third time. literally a decision I made on a side project a few weeks ago.
- baash05 5y agoI think 90% of devs love to refactor. On toys app's it's great fun.
- huhtenberg 5y agoAlso managing to give 5 temporary variables names of the same length makes for a day well spent.
- psyc 5y agoI’m not, but if I was it would be for enjoyment, and perspective (or “mind expansion”)
- abecedarius 5y agoIf 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.
- siknad 5y agoI 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..
- mbrodersen 5y agoI enjoy programming in Agda as well. However I can’t decide whether to focus on Agda, Idris, LEAN, Coq, F* or Isabell/HOL. There is a lot of overlap but none of those choices seems to have it all.
- binarynate 5y agoRe: niche languages—Hacker News is written in a dialect of Lisp called Arc: - https://github.com/wting/hackernews https://github.com/wting/hackernews - https://en.wikipedia.org/wiki/Arc_(programming_language) https://en.wikipedia.org/wiki/Arc_(programming_language)
- oaiey 5y agoThat explains the stable feature set :)
- lloydatkinson 5y agoSuch as being unable to do pagination when there’s too many comments.
- capableweb 5y agoIf you do want to get into it, checkout first the arc forums (the UI might be familiar to you: http://arclanguage.org/forum http://arclanguage.org/forum) and then after that check out Anarki which is a community-maintained fork of Arc, seems more up-to-date and has some QoL upgrades, https://github.com/arclanguage/anarki https://github.com/arclanguage/anarki Coincidentally, seems my post have been the top #1 post on the Arc forums since I first made it, ~17 days ago. That forum could do with a bit more of traffic :)
- turndown 5y agoIt's funny - I actually found Hacker News just because I had tried out another website, named Hubski, that was written in Arc.
- samus 5y agoProgramming 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.
- smoe 5y agoFor 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.
- mehphp 5y agoI 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.
- throwamon 5y agoWould you mind expanding on why you regret it?
- mehphp 5y agoIt's nothing specific about Elixir itself, it's just that I don't use it for literally anything else (nor do I see that changing). So, for me, it's just another tech stack to keep up with when I could have just stuck with the tech stacks I already know and work just fine. I still think Elixir/Phoenix/LiveView are great technologies, but I don't think they offer me anything professionally that the current stuff doesn't; at least not for my use cases. There was an opportunity cost to making the switch too, and I feel like that was a poor use of time.
- stanski 5y agoYour brain probably thanked you for the mental exercise so it wasn't all for nothing.
- smoyer 5y agoI'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.
- nickcw 5y agoNine 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 :-)
- jjice 5y agoThe ending game me a good laugh, Rclone is a fantastic tool.
- warent 5y agoNice! My server uses Restic with Rclone as its backend. Thank you!
- Tempest1981 5y agoI was happy to find that with Go, I can target my low-end NAS, which runs a Marvell Armada CPU. The binaries run just fine. (If this is easy with other compiled languages, let me know. Maybe gcc?)
- wazzaps 5y agoPretty easy with gcc: https://toolchains.bootlin.com/ https://toolchains.bootlin.com/
- bbertelsen 5y agorclone is wonderful. Really excellent software. Thank you for that!
- aluminum96 5y agoAnother really nice feature of Go is that the language preserves backwards compatibility. If you built a hobby project in some other 1.0 languages, you’d be pretty out of luck (ahem, looking at you, Dart).
- sprior 5y agoI 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.
- pedrovhb 5y agoI'd love to see this! That exact idea has been tingling through my mind for a while. I did some experiments, but Prolog (and anything logic programming, really) is a bit of a pain to integrate nicely with Python, which is what I'm building my system with. I'm looking to make things declarative as much as possible, but having Prolog manage the automation rules would be next level. I imagine it abstracts away a lot of the boilerplate and unnecessary implementation details.
- sprior 5y agoSee my reply to ojford with a bigger description below.
- sprior 5y agoInstead of trying to directly integrate for example Prolog and Python I set up services in whatever language/hardware and communicate between then using JSON messages transported via MQTT. With this method I've got Docker containers running Java, Python, and Prolog code interoperating with ESP8266 and ESP32 devices I programmed in C++ and anyone can talk to anyone. I also wrote a Java server that interfaces with an Insteon gateway so my little MQTT cluster can respond to devices turning on/off or send a MQTT message to control a device. The pieces don't know or care what language the other pieces are written in. On the Prolog side of things with not that much framework code here is a trivial example: message(['Smarthome','Notify','brain','ping'],_):- publish(['Smarthome', 'Notify', 'brain', 'ping_response']). This code receives a MQTT message with a topic of Smarthome/Notify/brain/ping ignoring the message body and then publishes a return message on topic Smarthome/Notify/brain/ping_response I even have a container that runs nothing but cron with a mqtt client installed that sends mqtt messages at various times of the day and all Prolog has to do is subscribe to those topics and handle those messages.
- teej 5y agoSo I can learn something new in a low risk, low pressure environment.
- henning 5y agoRust is picking up momentum with industrial use but is overall still pretty uncommon. rayon (https://github.com/rayon-rs/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.
- ufmace 5y agoTo 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.
- timbit42 5y agoIf 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.
- drbojingle 5y agoI'm currently learning lisp dialects. Clojurescript and fennel atm.
- QuadmasterXLII 5y agoI like GPU programming but lack patience for CUDA- julia's gpu package provides a wonderfully performant middleground
- bcrosby95 5y agoI 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.
- tromp 5y agoI 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 https://github.com/tromp/ChessPositionRanking [2] https://github.com/tromp/ChessPositionRanking/blob/main/src/Data/Ranking.hs https://github.com/tromp/ChessPositionRanking/blob/main/src/...
- e-dant 5y agoI 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.
- User23 5y agoCommon Lisp has had compile time regexes for well over a decade.
- bmitc 5y agoSeveral languages support compiled regular expressions. Also, I interpreted the parent comment as talking about the implementation/architecture of the projects, not the projects themselves.
- User23 5y agoThe neat thing about Common Lisp is that cl-ppcre is just a library, but it still builds native code recognizers. That’s neat about C++ templates too which is why I drew the comparison. Personally I think Lisp macros are considerably more readable than C++ templates, especially when it comes to errors, but I’m happy to agree that reasonable minds may differ on that.
- mbrodersen 5y agoThere are 5+ million C++ programmers out there. And the number is going up. So I think it is safe to say that C++ is not a niche language :)
- transfire 5y agoThat’s just sad.
- IceCreamJonsey 5y agoI 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.
- thrtythreeforty 5y agoHow does Hugo compare to Inform?
- toomanydoubts 5y agoBecause 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.
- ParetoOptimal 5y ago> 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 I got a Haskell job and don't even have a degree.
- noloblo 5y agoWould love haskell advice
- ParetoOptimal 5y agoLike what? Feel free to post questions here or contact me with the info on my profile.
- noloblo 5y agoNeed haskell help pls ping email in profile
- alin23 5y agoI did the licensing server for Lunar (https://lunar.fyi/ 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.
- bingo-bongo 5y agoCrystal is great! After ~10 years with Ruby, I decided to try out Crystal for my latest weird hobby project (a modern style bbs) and I have enjoyed it so much! Considering the relatively short lifespan of Crystal, I was positively surpriced how good the documentation was and how fast, easy and stable the language it already is :)
- ushakov 5y agoi love Crystal too! one downside for me is the development speed, compile time is definitely noticeable if you come from an interpreted language
- sundarurfriend 5y agoDid you know Ruby before learning Crystal? I've been looking into it on and off, but it seems the documentation is mostly written as an "on top of Ruby docs" thing, as in it seems to assume you mostly already know the Ruby way of doing things and mentions only where things are different. That makes it harder to figure things out in the language, having to search the Crystal docs and then Ruby docs and figure out which one applies where. (I mean this for the very basic syntax and semantics of the language, nothing fancy yet.)
- alin23 5y agoI didn’t know Ruby, and yes, some things had to be figured out through old Ruby knowledge. But that wasn’t as much of a barrier. Every language that gets a little creative will have these features that you probably never saw, have no idea what to do with them and when is a best practice to use them. Things like fibers, or the ways to do iteration without a for-loop, or the do…end closure syntax. They’re new and weird for non-Ruby devs, but they have their advantages, and you just have to try and use them a few times and they’ll become as common as your previous language.
- Multicomp 5y agoI 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)
- Rochus 5y agoBecause I want to find out whether Oberon+ (see http://oberon-lang.ch 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.
- JimmyRuska 5y agoIf you like racket try out bigloo https://www-sop.inria.fr/mimosa/fp/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
- Decabytes 5y agoI’ve had my eye on gerbil since it was announced. I’m very interested in it’s goals
- JimmyRuska 5y agoGerbil looks a lot like what one very prolific and opinionated hacker calls home. There's an incredible amount of work just by 1 author https://github.com/vyzo/gerbil/graphs/contributors https://github.com/vyzo/gerbil/graphs/contributors Whereas racket looks steered mainly by the academic group working on it, with some attention shifting to the new Rhombus project https://github.com/racket/rhombus-prototype https://github.com/racket/rhombus-prototype These days everything looks like it's using json/yaml and trying to add logic/constraints to it to make it declarative, either through logic controllers (eg kubernetes operators) or by embedding it in the syntax, eg terraform HCL, declarative UI frameworks. Scheme DSLs are a good alternative and could be used to generate code or glue between the components you use.
- klabb3 5y agoI 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.
- nickmain 5y agoThere 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.
- urthor 5y agoPracticing in a highly focused single paradigm language (Haskell/F#, Smalltalk et al) translates well on the resume when you shift to a multi paradigm industrial language (Python/Javascript/C#)
- pjmlp 5y agoFor fun, to learn new ideas how to approach program design, or just because as language geek, " you need to collect them all!" :)
- zelphirkalt 5y agoIt 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.
- winrid 5y agoMost 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 :)
- mysterydip 5y agoI 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.
- pksebben 5y agothere's always WASM
- mysterydip 5y agoI'll have to look into it more, but I'm not sure how networking is possible through WASM. I could see some external hooks in an API of some sort but not sure how you'd compile to access it.
- innocentoldguy 5y agoYou could use Elixir/Phoenix/LiveView and virtually eliminate the need for JS development on your part. You could probably to this with the latest version of Ruby on Rails too, but I'm not 100% sure about that.
- cheriot 5y agoElm 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.
- innocentoldguy 5y agoI 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.
- deleted 5y ago[deleted]
- guidorice 5y agoAgree 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/ 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).
- yardshop 5y agoI'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.
- ihateolives 5y agoIf you used to use Delphi then why not use freepascal and Lazarus? Seems like an ideal match for your needs.
- yardshop 5y agoI started with them a couple times, and will try again. The first time, after several years of working with Python, I missed the dynamic data structures like lists and dictionaries. Open arrays work pretty well, but Pascal still requires a lot of overhead to set things up compared to `d = {}`. The next time I got a bit further with it, but I remember everything being just slightly different enough that I had to dig for examples and documentation to do simple things I used to do easily in Delphi. I think I got some of my old graphics programs working but there was enough friction that I lost interest and moved on. But its worth giving it another shot since I have a lot of old Pascal code I'd like to play with again, and knowing about these difficulties going in I might do a better job next time. What I like about Nim is the terse syntax similar to Python, and the more dynamic data structures like sequence, but also the typing similar to Pascal and the compiling to executable thanks to C. I like the V language too for its batteries-included nature, but haven't gotten far enough with it yet to tell if I will stick with it. The docs are a good start, but they only have Discord for a community and that is hard to work with.
- jmmv 5y agoI 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/ https://www.endbasic.dev/) if curious.
- mbrodersen 5y agoI consider a programming language to be mainstream if there are more than 1 million programmers using it professionally. By that measure Rust isn’t mainstream yet AFAIK.
- freedomben 5y agoI 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 5y agoI 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 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.
- qualudeheart 5y agoI’m not a big programming language expert but I like lisp for small projects.
- ExtremisAndy 5y agoFor 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.
- state_less 5y agoThe project, in my case, is often a side effect of wanting to learn what a language has to offer.
- Vivtek 5y agoMy hobby project is a niche language.
- cpeterso 5y agoBut are you writing your niche language in a niche language? Or even better, self-hosted in your niche language itself? :) Just curious: what’s your niche language called?
- Vivtek 5y agoIt's written in Perl - I think Perl is a niche language these days, right? I wrote a version of part of it in Racket, too, which definitely qualifies. I keep thinking I might move development to Zig. The language is Decl. I think at this point it's more a notation than a language; it relies on a host language for execution. My understanding of what I set out to do has evolved over time, and the past couple of years I've thought of it more as a DSL along the lines of SQL (not in that it's used for database access, for which we already have SQL; I just mean that it's used by embedding it in something else that defines actions).
- ocdtrekkie 5y agoVisual 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.
- codazoda 5y agoI’m in the same boat. I’ve been using PHP and writing web services for a long time and I can be productive quickly. I still use the language professionally too, which keeps my working knowledge of it oiled. Go is a pleasure to work with, however, so I’m exercising that more and more. I loved VB for a long time but finally moved away from it after the VB 6.0 years, primarily because my daily driver switched to Linux and I stopped writing software for windows. I now use a Mac but I tinker with Linux. My family has so much trouble with Windows I’m very unlikely to ever try it again and it’s been 23 years anyway.
- bitwize 5y agoBecause 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.
- robert-brown 5y agoI 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.
- lumost 5y agoI 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.
- omaranto 5y agoI 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?
- melvinroest 5y agoNo 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 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 https://yesplan.be/en [3] https://pharo.org/success https://pharo.org/success
- nsm 5y agoI would also really like to use Pharo more. I tried it for Advent of Code last year [0]. However, I just can't get over the unmanageable custom windowing system going on within the main window. Their isn't an easy way to iterate through windows, find windows, close windows and stop them from overlapping with each other all the time! It would be great to have some kind of Jetbrains/VSCode/modern IDE style layout where all the ancillary structures become panes that are always in a particular position and can be toggled on and off. That and the lack of a vim editing mode (sorry, but I find it very hard to write code in an editor without vim style bindings, even though I don't use vim itself most of the time), make it a pretty painful experience. In general, while Smalltalk the environment is a great idea, I think its UI could use some improvements and be much more keyboard driven. Also, namespaces/modules please. [0] https://nikhilism.com/post/2021/experiencing-smalltalk/ https://nikhilism.com/post/2021/experiencing-smalltalk/
- abecedarius 5y agoWould https://github.com/unchartedworks/SmalltalkVimMode https://github.com/unchartedworks/SmalltalkVimMode help with your vim needs? (I'm not into vim so I have no idea if that's the best place to start.)
- karmakaze 5y agoBy 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 5y agoBecause 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.
- slmjkdbtl 5y agoI 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.
- anta40 5y agoNim. 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.
- wnolens 5y agoAs 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.
- deleted 5y ago[deleted]
- abhaynayar 5y agoI'm coding a side project in Jack: https://github.com/abhaynayar/genesis 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.
- ochronus 5y agoFor learning new things, new perspectives.
- misja111 5y agoI 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.
- Larrikin 5y agoAs someone who dabbled in Scala in school and a professional Kotlin programmer, hearing someone recommend Scala as a sane alternative makes me fearful of Haskell.
- misja111 5y agoIt's not so much Haskell that is to blame, but how it's used in practice. To be fair, I have seen similar over-complicated projects in Scala and even in Java: but there it seems to be more rare. The problem is, you have this language which offers you a million handy little tricks which seem very useful for all kinds of little niche problems. The boring and common sense approach would be not to use them, because it would give your colleagues too many headaches to figure out what they are and why you chose to use them. But in practice the temptation is often too strong.
- ParetoOptimal 5y ago> you have this language which offers you a million handy little tricks which seem very useful for all kinds of little niche problems. The focus should be on the core abstractions like Functor, Monad, Monoid, Applicative, etc that are sound, non-leaky, universal abstractions that are useful for all kinds of little niche problems. > The boring and common sense approach would be not to use them, because it would give your colleagues too many headaches to figure out what they are and why you chose to use them. But in practice the temptation is often too strong. The boring Haskell approach you describe should include taking advantage of those core abstractions. If your coworkers don't get them, they should learn the core abstractions and how to use them.
- 5y ago
- quickthrower2 5y agoI 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.
- jiyinyiyong 5y agoI'm programming my tools with Calcit(http://calcit-lang.org/ 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.
- jacquesm 5y agoI 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).
- CRConrad 5y agoBecause 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.
- muzani 5y agoGPT-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.