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