[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)