[HN Gopher] Ask HN: Why are you programming your hobby projects ...
       ___________________________________________________________________
        
       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.
        
       Author : Decabytes
       Score  : 51 points
       Date   : 2022-02-26 21:17 UTC (1 hours ago)
        
       | Turing_Machine wrote:
       | 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.
        
         | firebaze wrote:
         | What are other non-ugly languages from your perspective, and
         | why?
        
       | nickcw wrote:
       | 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 :-)
        
         | warent wrote:
         | Nice! My server uses Restic with Rclone as its backend. Thank
         | you!
        
         | jjice wrote:
         | The ending game me a good laugh, Rclone is a fantastic tool.
        
       | sprior wrote:
       | 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.
        
         | pedrovhb wrote:
         | I'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.
        
         | OJFord wrote:
         | That sounds awesome, is anything about it open-source?
        
       | FpUser wrote:
       | 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.
        
       | alin23 wrote:
       | 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.
        
       | noodles_nomore wrote:
       | I enjoy cleanly organizing code more than getting things done. I
       | can't help it.
        
         | smoyer wrote:
         | I 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 wrote:
         | I seriously thought I was the only one. I could spend hours
         | refactoring and organizing code
        
           | mysterydip wrote:
           | I 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 wrote:
             | the 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 wrote:
           | I think 90% of devs love to refactor. On toys app's it's
           | great fun.
        
       | psyc wrote:
       | I'm not, but if I was it would be for enjoyment, and perspective
       | (or "mind expansion")
        
       | teej wrote:
       | So I can learn something new in a low risk, low pressure
       | environment.
        
       | henning wrote:
       | 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.
        
       | abecedarius wrote:
       | 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.
        
       | ufmace wrote:
       | 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.
        
       | Multicomp wrote:
       | 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 wrote:
       | 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..
        
       | Rochus wrote:
       | 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.
        
       | timbit42 wrote:
       | 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.
        
       | JimmyRuska wrote:
       | 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
        
       | binarynate wrote:
       | 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)
        
         | capableweb wrote:
         | If you do want to get into it, checkout first the arc forums
         | (the UI might be familiar to you: 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
         | 
         | 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 :)
        
       | drbojingle wrote:
       | I'm currently learning lisp dialects. Clojurescript and fennel
       | atm.
        
       | klabb3 wrote:
       | 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.
        
       | QuadmasterXLII wrote:
       | I like GPU programming but lack patience for CUDA- julia's gpu
       | package provides a wonderfully performant middleground
        
       | bcrosby95 wrote:
       | 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.
        
       | nickmain wrote:
       | 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.
        
       | tromp wrote:
       | 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/...
        
       | smoe wrote:
       | 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.
        
       | e-dant wrote:
       | 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.
        
       | marvel_boy wrote:
       | Nothing beats Smalltalk for rapid prototyping.
        
       | IceCreamJonsey wrote:
       | 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.
        
         | thrtythreeforty wrote:
         | How does Hugo compare to Inform?
        
       | toomanydoubts wrote:
       | 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.
        
       | akira2501 wrote:
       | 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.
        
       | bodge5000 wrote:
       | 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.
        
       | dlivingston wrote:
       | 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.
        
       | samus wrote:
       | 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.
        
       | mehphp wrote:
       | 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.
        
         | throwamon wrote:
         | Would you mind expanding on why you regret it?
        
       | firebaze wrote:
        
         | Turing_Machine wrote:
         | This 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)
        
           | cglong wrote:
           | I disagree with GP, but one of my favorite parts about HN is
           | that it isn't just "a site for programmers" :)
           | 
           | > On-Topic: Anything that good hackers would find
           | interesting. That includes more than hacking and startups. If
           | you had to reduce it to a sentence, the answer might be:
           | anything that gratifies one's intellectual curiosity.
        
           | firebaze wrote:
        
             | Turing_Machine wrote:
             | See 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]
        
             | kstrauser wrote:
             | I'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.
        
               | firebaze wrote:
               | https://www.vox.com/2015/6/29/8845913/russia-war
               | 
               | Hope you're well, I'm out of here. In at most two weeks
               | this doesn't matter anymore anyhow.
               | 
               | Yeah, fuck that. You're right, I'm wrong, until not. Just
               | fucking do what you can to avoid ww3.
               | 
               | Cheers.
               | 
               | Another last edit: it doesn't matter _the least_ what you
               | think of my posts. See Putin live, or read the link.
        
               | [deleted]
        
       | mateuszf wrote:
       | Not sure if Clojure is considered niche, but anyway I do it
       | because it's the most fun programming language for me.
        
         | ithrow wrote:
         | Clojure is indeed niche, but this is compensated by being able
         | to use Java libraries.
        
         | capableweb wrote:
         | Same 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 wrote:
         | Closure is awesome, but I wouldn't define it as niche.
        
       | smoyer wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2022-02-26 23:00 UTC)