[HN Gopher] Ask HN: I just want to have fun programming again
       ___________________________________________________________________
        
       Ask HN: I just want to have fun programming again
        
       I've written in many very different languages in a professional
       full-time capacity in my many-year career. Now I'm interested in
       building something new and I have a clear idea in mind with some
       code already in C++ to proof-of-concept it for myself, but I'm
       struggling to find a direction forward that would be... fun. I
       don't mind challenging work, but I like an environment that feels
       sane and logical and where I am not facing loads of incidental
       complexity along the way. I'm also attracted to implementing my app
       cross-platform.  I just want to have some fun writing something
       without headaches, and that is seemingly less and less easy to
       achieve today. I'm not a fan of the complexity of either JavaScript
       or C++, and while I very much like Swift and working in the UIKit
       world, it's not so portable to platforms that many use.  I feel
       like there aren't really any good options in software development
       any more. It's always one big compromise with lots of possible
       decision fatigue. Every direction has drawbacks.  If I could write
       an app in a good static-compiled language that did not require
       extraneous expertise in CSS but that shipped on a web page and
       looked good using tools only in that language, with good interop
       with an HTML Canvas, that would be one possibility, but it is again
       a compromise -- no _easy_ multithreading, dealing with all the
       front-end baggage to bundle or deploy such an app, etc.  Any
       recommendations? I'm not afraid of learning an entirely new
       language too.
        
       Author : jb1991
       Score  : 191 points
       Date   : 2023-02-08 12:07 UTC (10 hours ago)
        
       | sumnole wrote:
       | >> I just want to have some fun writing something without
       | headaches, and that is seemingly less and less easy to achieve
       | today
       | 
       | Pick something that sounds refreshing and fun to you. A few
       | recommendations for you: make a game for a fantasy console like
       | pico8, walk through an adafruit embedded project, or get
       | interested in the front end / design part of web development
       | (look through dribbble for inspiration). You don't necessarily
       | need much CSS and it's not hard to learn anyway.
       | 
       | >> I feel like there aren't really any good options in software
       | development any more. It's always one big compromise with lots of
       | possible decision fatigue. Every direction has drawbacks.
       | 
       | It seems most of your dissatisfaction comes from whining about
       | the tech stack. Either focus less on the technology stack and
       | more about the end product, or stop attaching emotion to
       | decisions that are best made logically. It's okay if you choose
       | options that have drawbacks if every option has drawbacks.
       | There's no such thing as a silver bullet. Choosing the wrong
       | option is rarely going to kill your project and you can always
       | change directions later so breathe easy.
        
         | zabzonk wrote:
         | he has an idea for product - he is explicitly asking about the
         | tech stack
        
       | Curzel wrote:
       | Find something wacky and fun project! I did this:
       | https://github.com/curzel-it/pet-therapy Desktop pets for macOS,
       | and having lots of fun.
       | 
       | Btw, I'm looking into porting it to Windows and Linux, if anyone
       | is interested... :P
        
       | jadbox wrote:
       | For any bored programmers here, I'd recommend donating some time
       | towards open source projects. For some examples: Gnome, KDE, and
       | Cosmic DE are all looking for contributors.
        
       | catapart wrote:
       | Sorry if this has been said elsewhere, but - Makepad! You should
       | check out Makepad!
       | 
       | https://github.com/makepad/makepad
       | 
       | It's a Rust library for developing cross-platform apps. It's not
       | 1.0 yet; there's still things to finish, but it's being actively
       | developed (https://fosstodon.org/@rikarends#), and it's already
       | pretty fun to play with. And the fact that it compiles and runs
       | with the same widgets on Web as it does for Windows and Mac
       | (Linux and Android are imminent, according to the dev's updates)
       | makes it very appealing for my "write once, deploy anywhere"
       | sensibilities.
       | 
       | Fast, easy, and free. Just waiting on it to be "live", for now!
       | Don't forget to check out the demos.
       | 
       | https://makepad.nl/makepad/examples/fractal_zoom/src/index.h...
       | 
       | https://makepad.nl/makepad/examples/ironfish/src/index.html
       | 
       | https://makepad.nl/makepad/examples/simple/src/index.html
       | 
       | https://makepad.nl/makepad/examples/numbers/src/index.html
        
         | injidup wrote:
         | It says on the front page Mac and Web only
         | 
         | https://github.com/makepad/makepad#prerequisites
         | 
         | (windows and linux are coming )
        
           | catapart wrote:
           | Yeah, but check the mastodon updates and the commits. I've
           | run my makepad app on Windows. And you can see from his
           | updates that he's finishing up Linux and moving on to
           | Android, now.
        
       | keepquestioning wrote:
       | [dead]
        
       | eckza wrote:
       | https://elm-lang.org
       | 
       | https://elmlang.slack.com
       | 
       | Static FP lang targeting the web as a runtime environment.
       | Wonderful people. The nicest compiler in the game. Tight dev
       | loop. Good tooling.
       | 
       | No JavaScript knowledge required. Join us.
        
         | tasuki wrote:
         | +1 for Elm. Easy, fun, reliable.
         | 
         | And the Elm Slack is the most helpful Slack I've ever seen.
        
         | mayoff wrote:
         | Programming in Elm with mdgriffith's elm-ui package is the only
         | way I've ever been able to tolerate developing a 'modern' web
         | app.
        
         | declnz wrote:
         | This
         | 
         | Elm brought back joy _and_ longevity for side projects to
         | front-end for me (that had been ground down by the JS ecosystem
         | sadly)
        
       | andreygrehov wrote:
       | Some recommendations for fun (web) programming:
       | 
       | - Forget about the JavaScript ecosystem, don't even touch it,
       | it's a monster
       | 
       | - Use htmx on the front-end (https://htmx.org/)
       | 
       | - Use plain-old CSS with minimum dependencies (sanitize.css)
       | 
       | - Use lightweight CSS framework if you need one (bulma or
       | purecss)
       | 
       | - Use Go on the backend (all other modern languages are bloated)
       | 
       | - Use AWS Lambda
       | 
       | - Use DynamoDB if you don't need data processing
       | 
       | - Use Postgres if you hate or don't want to learn DynamoDB
       | 
       | - Compile SQL to type-safe code (https://sqlc.dev/)
        
         | Taylor_OD wrote:
         | Meh. I enjoy doing full stack javascript work over all other
         | stack including Go. To each their own I guess.
        
           | Xeronate wrote:
           | If you already know the javascript ecosystem then it's
           | probably fun. But if you don't its heavily draining. Also Go
           | is decidedly antifun so maybe not a good comparison.
        
       | amelius wrote:
       | If something ceases to be fun, automate it.
        
       | difflens wrote:
       | I wonder if you can pick your favorite language/framework and
       | write a daemon that serves as the "backend". Then, write a UI in
       | whatever you like, and send calls to the backend to modify state.
       | It's the same concept as MVC, but implemented in different
       | processes
        
       | latexr wrote:
       | > while I very much like Swift and working in the UIKit world,
       | it's not so portable to platforms that many use.
       | 
       | Your title says you _just_ want to have fun programming but your
       | post is full of other requirements. You need to decide if having
       | fun really is what you're after--in which case it seems you've
       | found your answer--or if it's secondary to some other metric such
       | as customer reach.
       | 
       | There is _always_ a compromise. No solution is all good things at
       | once, including easy, performant, and cross-platform. If that
       | existed we'd all be on it. You're clamouring for a past which I'm
       | doubtful truly existed.
        
         | chubot wrote:
         | Yeah exactly, even though I'm more of a Linux user than an
         | Apple user, one thing I do admire is that there a lot of apps
         | with UI polish because they JUST build for one platform.
         | 
         | They just focus on making it exist, without premature
         | generality.
        
       | atomicbeanie wrote:
       | I had similar feelings, and I get the same feelings looking at
       | today's front end development which looks increasingly like
       | embedded C++ development. I had always tinkered with Lisp but
       | expected it to be forever marginalized given how good Common Lisp
       | was, and how poorly it had been adopted by industry. But Clojure
       | changed that for me. The fun seems to come from agency, the
       | ability to affect outcomes with reasonable amounts of time and
       | energy expended. Agency is the ability to change one's
       | circumstances, and modern tool chain's vast incidental complexity
       | takes such agency away. But restore agency, and fun will follow,
       | I suspect.
       | 
       | Now I don't mean to imply there are not good uses for tool chains
       | like C++'s etc. Only I will say that the disconnection from the
       | end result caused by the long write-debug-ship cycle leads to a
       | certain programmer malaise. The same is true for things like
       | coding chips with Verilog. The production chain is so long with
       | respect to the creative endeavor itself that motivation and
       | satisfaction is hard to get.
       | 
       | So, for me, doing SaaS software, which ships "all the time" with
       | Clojure, has restored my ability to 1) read the std library and
       | most others easily to understand them, 2) Create control,
       | preprocessing and IO primitives myself for special purposes which
       | easily rival standard ones, 3) use interop to access large
       | libraries written in another long lived language (Java), 4) build
       | and use tools that simply introspect the code, producing my own
       | tool additions and automations without AST's, and elaborate
       | tooling, after all, code is just data.
       | 
       | Obviously YMMV. One blog post documented someone who changed from
       | C++ to Clojure and did not find satisfaction. But he was
       | attempting to do something, embedded I believe, that is not well
       | suited to a JVM. So changing to Clojure does involve changing to
       | an area that favors one of the two big Clojure host language
       | machines, JVM or Javascript based environments.
        
         | christophilus wrote:
         | Clojure is my favorite language that I've never used in
         | production. It truly is a joy to use. I just get nervous when
         | thinking about building a real application in it because of:
         | lack of static typing and my temptation to be clever when
         | writing it (this is inversely correlated with long-term
         | maintenance).
         | 
         | But I'd agree that if you want to find joy in programming
         | again, Clojure might do that for you. It's a lot of fun.
        
           | atomicbeanie wrote:
           | I think the difference here is that static typing gives a
           | poverty of real reliability guarantee's but one must always
           | pay the cost. Since Clojure gives agency back to the
           | programmer, there is a choice here. Clojure for production
           | should check its types at the domain level or as close as
           | possible, be simple, and spare. Personal experiments and
           | tooling can be in a different style. It is just like building
           | anything else, design and construction for maintainability is
           | very different than prototyping or experimenting. Clojure has
           | all the tools required to make robust production software.
           | But it takes the intention and proper decision making to do
           | so.
        
       | m3kw9 wrote:
       | Fun would be to build utilities for your own use that would
       | actually enhance it. I can think of home type projects with
       | embedded system that interfaces with HomeKit. It could be
       | anything actually, maybe work with another person with similar
       | needs on that fun project.
        
       | st00 wrote:
       | Come help us build a quantum physics game engine:
       | https://github.com/quantumlib/unitary
        
       | prewett wrote:
       | If you want UI, there currently is no good solution. In my
       | opinion, AppKit/UIKit is the only well-designed UI with any
       | currency at the moment, but as you point out, it is not cross
       | platform. If you're okay with using Dart, Flutter might be an
       | option. Qt is well-designed, but last I worked with it they were
       | embracing JavaScript, and why would you want JavaScript if you're
       | using a C++ library? C++ is too philosophically opposed to JS.
       | But Qt just feels slightly foreign on a Mac, anyway. GTK is in C,
       | which is not really how I want to use an object-oriented design,
       | plus its cross-platform feels buggy. And HTML is just simply not
       | designed for user interface; writing a UI in HTML + JavaScript is
       | basically equivalent to writing an app in MS Word macros. Plus,
       | it's hard to take the NPM ecosystem seriously when you're old-
       | skool enough to think that left-pad is the equivalent of fizz-
       | buzz and putting it in a package should not even cross one's
       | mind, let alone actually using said package.
       | 
       | I'm writing a cross-platform UI library (C++, but I hope to add
       | Swift, Python, and maybe Rust bindings), because I'm in the same
       | boat: https://github.com/eightbrains/uitk. It is usable, but
       | still under development, and while the .h files are fairly
       | heavily documented, there are no examples yet.
        
       | adelarsq wrote:
       | My two cents would be on F#.
       | 
       | Yes, isn't a mainstream language but there are a lot of
       | interesting things with it:
       | 
       | - build for .NET or languages supported by Fable (JavaScript,
       | Dart*, Python*, Rust*, PHP*) - I did build a proof of concept
       | Flutter app with it
       | 
       | - multiparadigm - FP or OO, you choose
       | 
       | - clean syntax - based on indent just like Python
       | 
       | - Type providers, type inference, ...
       | 
       | * These are on Fable 4.0.0-theta-018 at moment
        
       | maldev wrote:
       | C# with maui can natively compile (on most things), otherwise you
       | can just ship the .net runtime with your app, you can target a
       | webview on "any" platform with the same codebase and same tools
       | using Blazor. Blazor has it's own syntax that works similar to
       | Angular, but ALOT different. And you can pretty much do straight
       | up C# in it. You also have super easy multithreading. And since
       | all the frontend code is baked into your backend, it's super
       | easy. You can also build webapps which function pretty much alone
       | with no backend. Or have a backend linked into it. It also works
       | in the browser and can target WASM, with the exact same codebase
       | and UI as Linux, Windows, Iphone, ANdroid, etc(Assuming you use
       | the webview with blazor)
        
       | cyanf wrote:
       | Many seems to enjoy Elixer + Phoenix.
       | https://www.phoenixframework.org/
        
       | ge96 wrote:
       | My day job is boring to me but I build hardware projects on my
       | own time. These I just code up/go at free will, no tedious
       | testing or CI process.
        
       | HarHarVeryFunny wrote:
       | You seem to have two very conflicting wishes here:
       | 
       | 1) To have fun 2) To write a cross-platform web-base app with
       | good HTML canvas inter-op ...
       | 
       | If you really want to deliver this cross-platform app, then it
       | seems that's going to be more work than fun, although no doubt
       | good tool/framework choice can help minimize the headaches.
       | 
       | For a fun project it seems better to avoid all of the things that
       | you already know are going to make it not fun!
       | 
       | My current fun project is writing a compiler to run on an old
       | 8-bit system (initially targeting en emulator) ... 99% useless,
       | but fun, and I get to choose whether to implement the bits that
       | are stupidity on behalf of the language spec, or extend the
       | language to make it better, etc, etc - no practical
       | considerations forcing requirements on me, since it is purely for
       | fun.
        
         | heisenbit wrote:
         | Exactly, there are plenty of frameworks which make this
         | possible but even with the best you are hitting plenty of
         | potholes adding incidental complexity on the way to a polished
         | end product.
         | 
         | Limit ambitions and focus on getting velocity into roughly the
         | right direction. Have fun and worry not about having fun.
        
       | ramesh31 wrote:
       | >If I could write an app in a good static-compiled language that
       | did not require extraneous expertise in CSS but that shipped on a
       | web page and looked good using tools only in that language, with
       | good interop with an HTML Canvas, that would be one possibility,
       | but it is again a compromise -- no easy multithreading, dealing
       | with all the front-end baggage to bundle or deploy such an app,
       | etc.
       | 
       | Rust/Yew may be what you're looking for. It takes all the good
       | ideas of web UIs (namely declarative FRP) and works cross
       | platform natively, as well as compiling to WASM for the browser.
       | 
       | https://yew.rs/docs/concepts/function-components
        
       | dimitar wrote:
       | I'm going to suggest Clojure. It is a very opinionated language
       | made a person who was about to quit professional programming
       | because of an explosion of complexity (both accidental and
       | incidental).
       | 
       | Check out the talks by Rich Hickey to see if you have the same
       | sentiment or perhaps this paper:
       | https://download.clojure.org/papers/clojure-hopl-iv-final.pd...
       | 
       | The community of the language largely follows this philosophy,
       | the ecosystem is very stable and there is little churn. The most
       | common implementation is on the JVM making the language very
       | portable.
       | 
       | The headaches historically were with getting your environment
       | setup, but there are amazing tutorials and good tooling or
       | VSCode, IDEA, Emacs and vim.
        
         | TacticalCoder wrote:
         | And as a bonus, once you know Clojure (on the JVM) you
         | basically get ClojureScript, on top of JavaScript, for free,
         | which is amazing.
        
         | gorjusborg wrote:
         | I love Clojure, and listening to Rich Hickey talk is often
         | enlightening.
         | 
         | I don't know that learning clojure was a good investment from a
         | practical standpoint, but I took a deep dive into lisp-like
         | languages and don't regret it.
        
         | jimbo9991 wrote:
         | I would like to throw in Erlang and or Elixir with this. Not as
         | stable as Clojure in the case of Elixir of course (or even just
         | the BEAM environment tbh, certainly not as popular as JVM), but
         | it's possible OP has already done the traditional functional
         | programming thing.
         | 
         | This is absolutely not a criticism of Clojure or your
         | recommendation. I'm a huge fan of Clojure, but I don't know
         | where OP is coming from/if they've done a LISP before.
         | 
         | I don't know why but whenever I get depressed of bureaucracy at
         | work I turn to functional programming in my spare time.
        
           | gorjusborg wrote:
           | > I don't know why but whenever I get depressed of
           | bureaucracy at work I turn to functional programming in my
           | spare time.
           | 
           | I have noticed the same thing about myself.
           | 
           | I think for me, I am drawn to remember how simple programming
           | _can_ be.
        
           | fredrikholm wrote:
           | > (or even just the BEAM environment tbh, certainly not as
           | popular as JVM)
           | 
           | It has run some ~40% of global telephone communications for a
           | few decades now, on top of the usual suspects (WhatsApp,
           | Discord, (old) Facebook Messenger, Motorola, Blizzard chats,
           | a number of banks...) and predates the JVM by a couple of
           | years.
           | 
           | I'd go out on a limb and say that it's one of the most battle
           | tested VM's there is.
        
       | tiku wrote:
       | For me personally it helps to build something directly with my
       | customers. Wow them with my solution, think of better ways to
       | solve their problems.
        
       | tiku wrote:
       | For me personally it helps to build something directly with my
       | customers. Wow them with my solution, think of better ways to
       | solve their problems.
        
       | elcritch wrote:
       | Nim is a fun language to program and also meets some of your
       | requirements. It can compile to JS and has some libraries to
       | interop with html. Admittedly it's a bit limited on those
       | packages but they exist.
       | 
       | HTML template: https://github.com/juancarlospaco/nim-html-dsl
       | 
       | SDL on emscripten: https://jipok.github.io/Nim-SDL2-and-
       | Emscripten/
        
       | MrDresden wrote:
       | Left my job late last year with the intention of striking out on
       | my own.
       | 
       | Instead I realized quickly that what drove me to quit had been
       | the fact that the joy of coding had left me. And so for the last
       | two months I have been working towards regaining it.
       | 
       | And at this point I realize I have gained it back.
       | 
       | The only projects I have been working on are small libraries and
       | apps whose ideas had written down over the years but never
       | touched.
       | 
       | The longest project has been 3 weeks. Others, like the library I
       | worked on today, have only taken a couple of days. Also done some
       | open source contributions here and there.
       | 
       | I would now recommend it to anyone, given if their financial
       | situation allows for it, to step off the hamster wheel on
       | occasion and work on the things that really motivate them.
       | 
       | When I re-enter the job market, it will be with renewed vigor and
       | plenty of new know-how.
        
         | HeyLaughingBoy wrote:
         | > Left my job late last year with the intention of striking out
         | on my own.
         | 
         | I read a quote from Amy Hoy (/u/ahoyhere) last week that summed
         | it up pretty well, "most people who think they want to start
         | their own business really just want a better job."
        
         | hawski wrote:
         | I think of doing something like this, but I'm afraid my problem
         | is that I'm self-directed and my motivation comes from within.
         | Working for someone makes it again a job and making me fix
         | problems someone else have created within limits they envision.
         | 
         | Is it different for you?
        
       | grafelic wrote:
       | Write some C for your own pleasure and fun on an undead platform,
       | like AmigaOS.
       | 
       | Due to the constrained nature of the undead platform there is no
       | real possibility of decision fatigue, since the ways of solving a
       | problem are few.
        
         | shanebellone wrote:
         | I'm doing something similar with an old laptop I've repurposed
         | as a web server. If I can't deploy it there, alongside my other
         | applications, it will not get built.
         | 
         | I really like constraints. I also believe that's what made the
         | early Internet so special.
        
       | [deleted]
        
       | nixpulvis wrote:
       | Last time I was in a serious rut I formatted my Thinkpad and
       | setup an environment to fresh. Doing this alongside a small
       | project was a good way to relearn some tricks and discover new
       | workflows. Ultimately leaving me more proficient and happier.
       | 
       | I should probably work up the motivation to do that again come to
       | think of it.
        
       | kixxauth wrote:
       | Learn to love JavaScript. Then you'll always have fun building
       | side projects.
       | 
       | Sounds snarky, but I'm serious. You can build anything with it,
       | and it can be fun to use too.
        
       | al2o3cr wrote:
       | I'm also attracted to implementing my app cross-platform.
       | I just want to have some fun writing something without headaches
       | 
       | Building cross-platform native apps is like consuming the
       | contents of a bottle labeled "CONCENTRATED HEADACHES". Those two
       | goals are fairly incompatible...
        
       | nicoburns wrote:
       | The premier cross-platform UI toolkits today are definitely:
       | 
       | - QT in C++
       | 
       | - Electron in JS/TS
       | 
       | But if you want to avoid those then you could try the Rust GUI
       | ecosystem. That gives you a few options:
       | 
       | - gtk-rs which uses GTK but allows you to write in Rust rather
       | than C
       | 
       | - Dioxus which does use CSS layout (renders using Tauri webview
       | under the hood) but allows you to write the code generating that
       | in Rust. And the "backend" code is entirely Rust.
       | 
       | - Iced which is pure Rust with it's layout system. But tbh it's
       | still pretty immature and you'll be writing a lot of widgets
       | yourself.
       | 
       | You could also look at Flutter which works cross-platform and
       | works completely within Dart.
        
       | machiaweliczny wrote:
       | Javascript isn't complex. It was implemented in 2 weeks. React is
       | also simple (in concept, not implementation).
       | 
       | I suggest programming with chat-GPT. I got it to help me to get
       | started, research and break down very ambitious project that
       | alone I just couldn't muster.
       | 
       | You didn't specify exactly what you problem is but if you are
       | looking for easy UI that's canvas based then I guess
       | https://flutter.dev/ might be just for you.
        
         | butz wrote:
         | ChatGPT has actually helped to get unstuck with my hobby
         | project. I asked for a SQL query, it got it wrong, but I got
         | hooked on fixing its mistakes and somehow overcame the
         | "programmers block" to continue building my app.
        
       | logn wrote:
       | I was looking for a tech stack like you describe and came up with
       | this: https://github.com/hollingsworthd/micronaut-libgdx-teavm
       | 
       | It uses Java 17 and LibGdx for graphics, compiled to JS (Canvas)
       | by TeaVM, and served by Micronaut.
        
       | okaleniuk wrote:
       | Pure JavaScript is fun and simple. If you want a hobby project,
       | ditch all the frameworks, and go vanilla.
       | 
       | I started https://wordsandbuttons.online/ looking for something
       | fun and meaningful to do. I wanted to practice interactive
       | writing and wanted to involve the bare minimum of technology to
       | go forward. So I use rudimentary HTML for layout, JavaScript for
       | interactive illustrations and UI elements, and Python for massive
       | code changes. I have a bit of CSS, but I don't use "cascading"
       | feature of it so whenever I want to change a style overall, I
       | write a Python script for that. On the plus side, every page is
       | entirely self-contained, and my CSS is outrageously simple.
       | 
       | There are no dependencies not external no internal, so the
       | workflow is entirely stress free. Well, rather stress isolated.
       | If I break anything, I know that the breaking change is exactly
       | in the thing I am currently working on and not anywhere else.
       | 
       | If you don't care about productivity and want to enjoy
       | programming with as little tools and dependencies as possible,
       | vanilla JavaScript is the way to go.
        
       | samsquire wrote:
       | You can achieve something useful and enjoyable at the same time
       | if you don't set a goal too large.
       | 
       | Start with something you think is interesting and that you can do
       | in an evening.
       | 
       | Do a little bit at a time.
        
       | Udo wrote:
       | You may not realize it, but frameworks and libraries are your
       | enemy. Write something with minimal dependencies. Take a language
       | you already know and think of a simple, fun thing to make from
       | scratch (for an arbitrary definition of 'from scratch').
       | 
       | You rightfully complained about the complexity of JavaScript or
       | C++, but you don't _have to_ use the majority of the features.
       | With minimal external dependencies and no other programmers in
       | the mix, you can choose a subset of the language and just stick
       | with that.
       | 
       | It sounds like C/C++ would be a good fit if doing low level
       | things is fun for you. Javascript/HTML/Canvas is also not a bad
       | choice _per se_ , you just don't need externalities such as
       | bundlers, wasmers, deployers, dependency managers.
       | 
       | Whichever environment you decide to go with, start with an empty
       | directory. NO package managers, either. If you absolutely must
       | use an external library, copy it in deliberately and manually.
       | 
       | See how few things you actually need to make something fun and
       | worthwhile!
        
       | matthewmacleod wrote:
       | _I feel like there aren 't really any good options in software
       | development any more. It's always one big compromise with lots of
       | possible decision fatigue. Every direction has drawbacks._
       | 
       | This has, literally always, been the case. You need to pick where
       | you want to compromise, because there is no "one-fits-all"
       | solution.
       | 
       | - Use Electron/Typescript/React/Tailwind or some similar stack if
       | you want to pull together something quickly that works across
       | multiple platforms
       | 
       | - Use Flutter if you want to do that but don't mind it's kinda
       | poor re-implementation of platform-native widgets
       | 
       | - Use Qt if you don't mind the C++ dialect and complexity
       | 
       | - Keep it simple and use Dear Imgui
       | 
       | - Use something like Blazor to build a web app in C#
       | 
       | There are loads of options with different tradeoffs.
        
       | Qem wrote:
       | At work I program mostly in Python. But if it's for fun, I
       | strongly recommend Pharo. It's a language in the Smalltalk
       | family, forked from Squeak: https://pharo.org/
       | 
       | The whole environment makes the programming experience much
       | better, and it's self-contained, so you don't need to spend a lot
       | of time wrangling dependencies just to get started. Also there's
       | a MOOC for it: https://mooc.pharo.org/
        
       | Cody_C wrote:
       | Generally when this happens it is because of context. You are
       | clearly setting out to have fun and searching for the joy you did
       | find originally. Most of the time this context is either the
       | problem space, team/political issues or the random tooling in the
       | ecosystem that complicates a solution for better or worse.
       | 
       | I'd say your best bet is find something cool you would like to
       | build. Ideally, there will be some part you have to deeply focus
       | on a tech problem that will require you to stop thinking about
       | anything else and really immerse yourself. This would count even
       | if it is only a few hours.
       | 
       | I've found it fun and useful to have a small list of tools/utils
       | or mini projects that I could use day to day or even something I
       | could just randomly say I built. It is also usually the case that
       | for tech people the most joy comes from the idea and early stages
       | of creation and then finally shipping it. I'd say it would be
       | best to have one or two small projects you can definitely wrap up
       | instead of a massive one that becomes a drudge.
       | 
       | Also focus on truly how much power we have with computers. It is
       | one of the only disciplines where the biggest and almost only
       | limitation is what you can imagine and design.
        
       | senojsitruc wrote:
       | Qt?
       | 
       | https://www.qt.io/
        
         | jb1991 wrote:
         | I've used Qt in past years. Qt is to C++ what C++ is to other
         | languages. It's the "rich man's rich man." It has some nice
         | qualities, but it takes the complexity of C++ to a new level
         | IMO. Also its most easily-used editor (Qt Creator) has
         | historically been buggy on mac, which I typically use.
        
       | Madmallard wrote:
       | Spend a while building a template for a Phaser game that has
       | display and controls working nicely on mobile and in the main
       | browser, package that up, and then start cranking out game
       | prototypes. That's what I do, minus the cross platform stuff
       | since I don't know or care much to do it for pet projects. The
       | results have been fun as hell though. Examples:
       | 
       | https://explorerdude.net https://novagame.net
       | https://choreomania.net
        
       | residualmind wrote:
       | I've really been having fun with go compiled to wasm for the
       | browser. Ebiten is a nice engine for pixel graphics/game stuff,
       | but there are also more traditional canvas libraries.
        
       | freilanzer wrote:
       | Julia has agents.jl* with which you can do fun stuff like this:
       | https://juliadynamics.github.io/AgentsExampleZoo.jl/dev/exam...
       | 
       | * https://github.com/JuliaDynamics/Agents.jl
       | 
       | Might be interesting.
        
       | mar1n3r0 wrote:
       | https://go-app.dev/ + https://github.com/ipfs/kubo
       | 
       | easily deploy wasm full-stack p2p apps
        
         | mar1n3r0 wrote:
         | plus https://github.com/berty/go-orbit-db for a distributed p2p
         | db
        
       | flohofwoe wrote:
       | I found fun again in two easy steps:
       | 
       | (1) Unlearn the "large team workflow mindset" and embrace the
       | "single developer mindset" again. You don't need a plan, a Kanban
       | board or a bug database, just an idea in your head. Get rid of
       | "big languages" which are good for team work, but just a
       | hinderance when working alone. In my case this meant: dropping
       | C++ and embracing C (today that would be: Zig). Focus on getting
       | shit done like when you started out with programming instead of
       | agonising over design decisions. It's better to throw away
       | something that doesn't work than wasting too much time upfront
       | with planning (and then it still won't work). At least you still
       | learned something valuable. Try to do the 'planning' part
       | passively in the back of your head out in nature while taking a
       | walk or some other outdoor activity.
       | 
       | (2) Pick a challenging problem where you have no idea yet how it
       | works, but which you would like to know. In my case this was
       | "home computer emulators".
       | 
       | ...well 3 steps, step 3 would be: don't set yourself any
       | deadlines for this sort of "fun stuff".
        
         | 0xdeadbeefbabe wrote:
         | > (1) Unlearn the "large team workflow mindset"
         | 
         | That's how Darth started.
        
           | snow_mac wrote:
           | Like darth vader?
        
             | 0xdeadbeefbabe wrote:
             | Yeah, the dark side has interesting problems to solve too.
        
         | agumonkey wrote:
         | I did microagile extreme few years ago, trying to make a tiny
         | feature with a minimal amount of impact and a tiny bit of
         | parametricity for obvious options. Was a fun constraint to find
         | fun.
        
         | shortcake27 wrote:
         | > Unlearn the "large team workflow mindset" and embrace the
         | "single developer mindset" again
         | 
         | This worked for me. A few months ago I quit a really great job
         | partly because I was struggling with motivation. Fast forward
         | to today and I've got a couple freelance projects on the go
         | which aren't even that interesting, yet sometimes I can't stop
         | working on them.
         | 
         | I think the large team workflow took far more of a toll on me
         | than I realised at the time. A single line of CSS might start
         | with a discussion in Slack, followed by a ticket, which then
         | gets brought into a sprint some unknown time in the future.
         | Make the change and wait days for the PR to get approved, PR
         | might have a discussion so you need to find the original
         | discussion in Slack, someone might suggest multiple different
         | ways you could have made the change even though it makes no
         | difference. Someone else might suggest that because you've
         | touched this line of code you should refactor the entire file,
         | to avoid conflict you just make all the changes even though you
         | disagree, put it up for review again, someone else says they
         | liked the first way you solved before any changes but whatever,
         | tag it in a release go through QA, QA and BAs interrogate you
         | on why you refactored more than the ticket, QA picks up issues
         | that have nothing to do with your change so you have to figure
         | out how long those issues have existed for, finally 4 weeks
         | later your change is in prod and you can move onto the next
         | task.
         | 
         | Working by myself has been incredible. I don't miss having to
         | justify every technical decision to a team that can't ever seem
         | to agree on anything. I'm able to react and ship so much faster
         | and the product is more stable and of a higher quality
         | (subjective) than anything I worked on within a team. I'm not
         | sure what this means for my future prospects, but also not too
         | worried at the moment.
        
       | arbuge wrote:
       | It is awesome to see all the comments in this thread recommending
       | some form of embedded programming as a side project. I strongly
       | recommend it too.
       | 
       | Here's my own fun embedded programming project... it's been 5
       | years now, so I should really do something like this again:
       | 
       | https://foundrytechnologies.com/relay.php
       | 
       | It didn't too well commercially, perhaps because the 3d-printed
       | case I designed for it in looked a bit cheap. But the embedded
       | coding was very fun, as well as putting all the pieces together
       | (embedded coding, website & web app, PCB design, CAD and
       | 3d-printing were all involved).
       | 
       | I did sell a few units, and shipped them worldwide. I still see
       | them checking in with the server for updates every 5 minutes from
       | around the world, and there's about half a dozen working around
       | my house today, including one outside by the front door bell.
       | That one's been exposed to the Texas elements for 5 years now and
       | hasn't missed a beat, except that it needed a new case last year
       | to keep it looking fresh.
        
       | Leftium wrote:
       | How about Unity? https://unity.com/products/unity-platform
       | 
       | Or Racket? https://racket-lang.org/
       | 
       | ---
       | 
       | I only have a little experience with the suggestions above; I
       | personally like SvelteKit, but it doesn't fit your requirements.
        
         | kroltan wrote:
         | Unity and application development are not a fun combination.
         | Their UI system is notably terrible in both performance (not
         | only the redraw-every-fraction-of-a-second paradigm, but just
         | the plain ol' software architecture and layouting, or even
         | simple things like culling offscreen elements) and features
         | (Event bubbling/propagation? Naaah who needs that? It's not
         | like you're putting a button inside another button! Or a button
         | on a slippy map... Oh wait).
         | 
         | And while the prospect of cross-platform is appealing, it has 0
         | accessibility support and no way of embedding or being embedded
         | into native widgets.
         | 
         | It's just a little bit better than passable for game UIs (non-
         | interactive HUDs and one-screenful-at-a-time interactive
         | menus), but once you start needing to implement things like
         | drag&drop, virtualized scrolling, or non-trivial layouts, it
         | get exponentially harder when compared to a "proper"
         | application UI library.
         | 
         | Believe me I use it for a living :)
        
       | bitwize wrote:
       | Try a Lisp. I got seriously into Lisp because of Guile, a Scheme
       | -- but Common Lisp is also a great place to start and the
       | Portacle environment is an easy way to jump into that.
       | 
       | Lisp is the easiest, most fun language I've encountered to work
       | in. It's like clay out of which you can sculpt a solution. Every
       | programmer should give it a go.
       | 
       | For an even easier way to get started, consider building an app
       | in Emacs Lisp. It needn't be huge, it could just be an automation
       | for a pain point in your daily work. Emacs is easier, and more
       | fun, to extend than just about any other editor.
        
       | friedman23 wrote:
       | There is no purely fun way to build a production app. If there
       | were everyone would do it. The hard part of building an app is
       | the slog through the tedious parts. If you just want to build a
       | toy app for fun, I recommend you just mess around with processing
       | or pygame.
        
         | wbsun wrote:
         | This! The fun of programming won't come out of a software
         | project.
         | 
         | I find fun in programming by writing code solving small
         | challenges. Something people really hate, e.g. LeetCode, is
         | actually the fun place for me: I really enjoy writing some
         | small size program to solve a made-up problem with my scattered
         | time. I don't need to worry about language, library, framework,
         | platform, UI, etc. The only thing matters is coding, and that's
         | the thing makes me happy.
        
       | DesiLurker wrote:
       | try doing GPU shaders, I have seen you could get decent ROI on
       | effort.
       | 
       | you can try out your own shaders in a browser here:
       | www.shadertoy.com
        
       | easeout wrote:
       | I'm sensing that engineering compromises are what you'd call
       | work, not fun? You may be asking for elegant cross platform
       | tooling that may not exist because of the compromises it would
       | require to hit a common denominator. I would pick my favorite
       | platform and make something uncompromising using its strengths.
        
       | shaunxcode wrote:
       | Pico8
        
       | thatguyagain wrote:
       | Check out Flutter?
        
       | bobleeswagger wrote:
       | Nothing in life worth doing is easy.
        
         | undershirt wrote:
         | Somehow, your comment has convinced me to just learn native
         | development. Cross-platform work feels like an absolute slog,
         | with or without portable code. I guess I'll find out which one
         | is less tolerable.
        
           | nevertoolate wrote:
           | So you will try to find least tolerable branch of programming
           | to have the most fun. I love it!
        
       | edfletcher_t137 wrote:
       | Write something for _yourself_. When you 're the user, the
       | motivation to continue working on it is much stronger.
        
       | Kelteseth wrote:
       | Qt/QML? I have been doing cross-platform development with Qt for
       | a few years now [1]. It does have a learning curve, but I do like
       | the split of C++ logic and Qml for the UI. I can recommend the
       | qml book [2].
       | 
       | [1] https://screen-play.app/
       | 
       | [2] https://www.qt.io/product/qt6/qml-book
        
         | jb1991 wrote:
         | Thanks, I've used it. I left another comment about it [0].
         | Perhaps I should give it another look. Qt doesn't really
         | satisfy my desire to use something fun and relatively simple,
         | but you and the other commenter are pointing out the obvious --
         | it is clearly a viable choice.
         | 
         | [0] https://news.ycombinator.com/item?id=34707057
        
       | petersonh wrote:
       | Try using Jupyter Notebooks or another notebook based programming
       | environment. Good way to change things up and very enjoyable to
       | use :-)
        
       | [deleted]
        
       | emmelaich wrote:
       | Seems like Haxe (https://haxe.org/) might be fun for you.
       | 
       | Per others, though, perhaps it's the motivation that's required.
       | Do you want to write games?
        
       | mattgreenrocks wrote:
       | If you want to have fun, dig into some subfield of computer
       | science, like databases, ray tracing, etc. Something that has
       | been studied rigorously. There, knowledge actually compounds and
       | builds on itself, rather than being thrown out every two years
       | for no gain. Build something small and see if the subject gels
       | with you. If it does, go deeper. If it doesn't, try another one
       | and see if it works. Once you find something you like, you can
       | start self-studying more with books and harder projects.
       | 
       | "But it's hard!" That's the point: surmounting the challenge is
       | where the fun comes from. And then you have skills that 90% of
       | devs don't even attempt because they believed it was "hard."
        
         | didgetmaster wrote:
         | The OP is a bit ambiguous about where they want the project to
         | go. If the whole point is to just have 'fun' while learning
         | something new, then there are many different directions you can
         | go with no accountability except to yourself. Pick any area of
         | personal interest and start prototyping. It can be really fun
         | to create something that does something nothing else does or
         | does some common thing much faster or better than other
         | solutions. Even if no one else uses it, it can be rewarding in
         | its own right (i.e. a hobby).
         | 
         | If, on the other hand, you want to actually build something
         | that you hope other people will try, adopt, give feedback, and
         | (heaven forbid) actually pay you something for your
         | trouble...then that is hard. You have to worry about things
         | like what operating system or browser it runs on. If you want
         | the project to also be rewarding to many other people, then all
         | the business processes come into play (finding market fit,
         | raising capital, evangelizing it, etc.) which can often be not
         | fun to a technical person.
         | 
         | I know from experience with my own project. Shameless plug:
         | https://didgets.com/
        
         | adql wrote:
         | > There, knowledge actually compounds and builds on itself,
         | rather than being thrown out every two years for no gain.
         | 
         | That's most of fields. Webshit development is very much
         | exception here, although one with a lot of market share.
        
           | elil17 wrote:
           | I think that is exactly what they are saying.
        
       | jb1991 wrote:
       | I just discovered and it seems enticing:
       | https://github.com/raysan5/raylib
       | 
       | > no fancy interface, no visual helpers, no gui tools or
       | editors... just coding in pure spartan-programmers way. Are you
       | ready to enjoy coding?
        
         | joenot443 wrote:
         | Doesn't it also say no debugger? You're a brave soul, my friend
         | :)
        
           | suby wrote:
           | It's a c library. You'll have very powerful and mature
           | debugging and tooling available to you.
        
       | weird_user wrote:
       | I'm writing a book[1] with a variety of coding projects.
       | 
       | Programming is not always about building the app foo with the
       | language bar. You can have fun by recreating and understanding
       | how existing stuff works.
       | 
       | [1] https://build-your-own.org/b2a/
        
       | mavu wrote:
       | Crystal is what you are looking for.
       | 
       | https://crystal-lang.org/
       | 
       | - Human friendly syntax
       | 
       | - Static compiled
       | 
       | - Type inference
       | 
       | - Incredible standard library
       | 
       | - Easy concurrency
       | 
       | - Incredible performance.
        
       | ilc wrote:
       | I'm a many year old programmer myself.
       | 
       | The one thing I'd say is: Let the project select your tools, not
       | the reverse.
       | 
       | Take your time, select your tools and libraries... and it is
       | amazing things just seem to come together. Not every problem will
       | fall to what you know today.
       | 
       | Yes, there will be compromise, but step back, and ask yourself...
       | just how thankful you'd be for any of these options 10+ years
       | ago. If the answer is not... don't use that tool. But many times,
       | what we face is really a plethora of great decisions, and we try
       | to look for the best... not realizing it doesn't exist today,
       | only in retrospect.
        
       | bitexploder wrote:
       | Pick a language that speaks to you and use it. Ignore any
       | technical bike shedding in your head. I like Rust and continue to
       | hack on projects in it, but my happy place is Go. It is safe
       | enough, productive enough, and checks all my boxes for serious
       | hobby work. Find your own happy environment and projects
        
       | hawski wrote:
       | For fun use something you already know. Download needed stuff and
       | offline documentation, then cut the Internet cable.
        
       | retrocryptid wrote:
       | Everyone is different, I suppose, so ymmv.
       | 
       | I went back to coding stupid small games in a scheme-like Lisp on
       | 8 and 16 bit cause.
       | 
       | I started out with Lisp in the 70s but followed the money to C,
       | C++, Java and DotNet with side-trips into Smalltalk and Self. And
       | a metric tonne of x86 16 bit assembly.
       | 
       | But I always had a fondness for Lisp and FORTH.
       | 
       | One thing I remember from the old days was (as Sussman pointed
       | out) we used to build larger programs by composing smaller
       | programs. Now we use monolithic blobs where you spend a lot of
       | time writing tests to see how the API works because there's very
       | little documentation (and it's a black box where a LOT of
       | functionality is hidden behind a single API instead of smaller
       | components you combine how you see fit. Look at any Microsoft
       | Crypto API for an example.)
       | 
       | So my fun is now had on personal projects.
       | 
       | I have moved some professional projects over to Erlang and Elixr.
       | Others use closure, and I get a similar feel. I feel like I'm in
       | control. JavaScript used to give me that feeling, but my
       | management chain insists we do things like import packages to
       | test whether an object is null (and it turns out it does the
       | comparison wrong.)
       | 
       | Your sense of "fun" will no doubt be different, but I guess my
       | point is... the freedom to choose your development environment
       | can provide a bit of happiness to your life. Not just what you
       | work on.
        
       | bor0 wrote:
       | > I like an environment that feels sane and logical and where I
       | am not facing loads of incidental complexity along the way
       | 
       | You should try my (esoteric) programming language (theorem
       | prover), Budge-TP :)
       | 
       | You might find useful my recent write-up about
       | https://bor0.wordpress.com/2023/02/05/writing-your-third-pro...
        
       | breck wrote:
       | > where I am not facing loads of incidental complexity
       | 
       | This is my dream. Unfortunately there is no easy path to get
       | there. We have to replace all the languages. Build replacements
       | without the noise.
       | 
       | > looked good using tools only in that language
       | 
       | I think you can have a universal syntax, but not a universal
       | language. I think Racket's term "Language Oriented Programming"
       | is the holy grail. You need lots of DSLs because you almost
       | always work across different domains.
       | 
       | It is possible to have a universal syntax, however ;)
        
       | actually_a_dog wrote:
       | Stop doing it professionally.
       | 
       | Try a project that's either completely useless or at least wildly
       | impractical. Don't be afraid to throw away code.
        
       | alexdevbr wrote:
       | I don't know of a current way to do front end dev without CSS.
       | The frameworks which allowed you to do that, like Flash, Java
       | Applets, Silverlight are long gone. You could try Blazor, it's
       | statically compiled in C# and can run either on the server or in
       | the browser, using WebAssembly.
        
       | whartung wrote:
       | Well, I'm going to chime in with Java and JavaFX. Yes, its still
       | used. Yes, its still active. Yes, its still updated.
       | 
       | Java is Java. A nice aspect of Java is that you can find pretty
       | much anything in Java. Not written in something else and
       | integrated with Java. Written IN Java. That helps limit the long
       | running impact of "dependency hell". Of course you'll have
       | dependencies, but in the end you have a static distribution, and
       | its the same code, across the platforms. I'm currently working
       | with Apache Jena and RDF (and this has nothing to do with the
       | semantic web). For my purposes, RDF is a hoot, and adding Jena to
       | my project was drag and drop.
       | 
       | There are exceptions. JavaFX is one in itself, as it does have a
       | platform dependent binary component. If you're lazy on tooling
       | (I'm lazy, I hate tooling, I should say I hate fiddling with
       | tooling), just bundle all the platforms everywhere. But you can
       | also make platform specific builds. In the end though, you don't
       | have any environmental dependencies. All of them are brought with
       | you. You can static link lots of things, but in Java, its
       | routine.
       | 
       | Java is evolving into a multi-paradigm language. Still dominantly
       | OOP, but it has the low hanging fruit of others as well. All of
       | it is imperfect, but it's pragmatic as all get out.
       | 
       | JavaFX is a pretty solid piece of kit. It's modern, it's STILL
       | modern. As old as it is, its held up really well. It's different,
       | it's not Swing by any measure. My hurdles picking it up was
       | taking preconceived notions learned from older frameworks and
       | trying to square peg round hole them into FX. FX is opinionated
       | enough to make that kind of effort frustrating.
       | 
       | But it comes with a scene graph. It comes with CSS. It comes with
       | animation. It comes with 3D. It even has boolean 2D geometry
       | operations. It comes with a bevy of layout containers. It has GUI
       | screen builder. It has FXML, which is an XML based format for
       | specifying scene graphs. With a bit of boiler plate, you can
       | actually do entire screens and logic in an FXML file with
       | embedded JavaScript, if you're so inclined. Perhaps not the
       | greatest idea, but for certain applications the idea of being
       | able to have an end user add a screen to your application can be
       | very interesting.
       | 
       | I really like the Property and Binding mechanic. It's one of
       | those things that's compelling and can lead to abuse and trouble.
       | But that's OK. Just dial it back and it sings. It can also be
       | used for simple rules, or as a simple constraint system.
       | 
       | Make no mistake, there will be battles. But for me, someone who
       | hates Fiddly. Who tolerates tooling. Having everything underneath
       | the one overarching canopy of the JDK is useful. But, it's still
       | Java. Java can be wordy, to be sure. This doesn't bother me so
       | much. Even my Common Lisp is wordy. CLOS isn't a poster child of
       | terse coding. You still have your setters/getters (that can be
       | sort of mitigated with the lombok project, but it doesn't have
       | support for the JavaFX property idioms).
       | 
       | I do have one complaint about FX. The components and such are
       | pretty locked down. It's really hard to extend them in ways
       | they're not designed to be extended. Which means if something
       | you're working with won't work for you, its baby out with the
       | bathwater.
       | 
       | I've been playing with it all year. I have several half baked
       | projects floating about. It's all been mostly fun for me. Desktop
       | GUI work has a lot of minutia, which I've never been very good
       | at. It's also a GUI, which is about presentation, and make this
       | blue, and that 3 pts bigger and line all this up and can we have
       | a shadow here. Most of which I hate. But that's an inner conflict
       | unrelated to the environment. That's just GUIs and bike shedding.
       | I've suffered this since they offered color to smart terminals.
       | 
       | GUIs also have a bunch of things that have nothing to do with
       | your application per se. Global state, where do you put the logs,
       | preferences (dare I mention Java has a cross platform preferences
       | API built in?), perhaps capturing window layout on close, etc. I
       | wish I could point to simple framework that supplies all that,
       | but I can't. They exist, they're not simple, they come with a lot
       | of baggage. That may or may not be "fun" for you.
        
       | jve wrote:
       | > I don't mind challenging work, but I like an environment that
       | feels sane and logical and where I am not facing loads of
       | incidental complexity along the way.
       | 
       | > I'm not a fan of the complexity...
       | 
       | My recommendation that helps me having joy: Just do something
       | other than writing code for that particular app. Write a decent
       | (build scripts)|(CI/CD pipeline) that will abstract away that
       | complexity and will reduce cognitive load of
       | building/testing/deploying an app. That's a good feeling.
        
       | RangerScience wrote:
       | Top (currently) comment is, IMO, the most correct. Find a fun
       | project, probably with Pi and/or Arduino.
       | 
       | Otherwise, my 2 cents is that I pretty much always have fun
       | programming in Ruby.
        
       | barbinbrad wrote:
       | I've been building with Remix + Supabase with Chakra for my side
       | projects. It feels great. I haven't open-sourced it yet, but I'd
       | be happy to share it with you if you want to take a look.
       | 
       | There's no CSS. No useEffects. No BE vs FE. It's almost
       | beautiful.
        
       | eddieroger wrote:
       | This thread has a lot of language suggestions, but I think you
       | need a fun problem to solve. Pick a toy app and work on it. Learn
       | embedded programming with an Arduino. Write an iPhone app to
       | track when you feed the dog. Make a karaoke app for Android. If
       | you pick a project you'll enjoy, the language won't matter. Use
       | whatever is best for the platform. The fun doesn't come with the
       | language, it comes with seeing your project come to life, or
       | others' reaction to the cool thing you made. Every language sucks
       | and every language is the best depending on who you ask. Don't
       | focus so deeply on that part. Solve cool and fun problems.
       | 
       | I've had a long time dream of getting a broken jukebox and
       | gutting it for a Raspberry Pi, but keeping the external interface
       | in tact. I know next to nothing about hardware engineering, and
       | can't write more than ten lines of Python without needing to
       | Google something, but I finally got a broken juke in need of
       | fixing, a multimeter, and a hard drive full of music ready to go.
       | The fun isn't the Python or learning GPIO, it's that eventually I
       | will have a cool retro jukebox with hardware and software I wrote
       | in my basement.
        
         | scubbo wrote:
         | Big +1 on this. If you're OK with a broader definition of
         | "programming" and have a bit of money to throw around, I've
         | found tinkering with https://www.home-assistant.io/ to be very
         | satisfying. I got more sense of accomplishment from scripting
         | "text me when I leave the house if I forgot to set the alarm,
         | and turn on the front porch lights when I arrive back if it's
         | after sunset" than I did from months of corporate work, even
         | though the actual _difficulty_ was much lower. I can _see_ the
         | results of my work, and benefit from them most days!
        
           | giobox wrote:
           | Deploying Home Assistant is largely how I taught myself
           | Docker, Kubernetes etc. Its much easier to learn solving a
           | "real" example.
           | 
           | You can learn a ton just trying to do a production grade home
           | assistant deployment - move on to SSL termination at the load
           | balancer with letsencrypt, try different deployment
           | strategies for upgrading the server with zero down time,
           | write custom extensions... etc etc.
           | 
           | I've now got a small Pi cluster running k8s to deliver a
           | bunch of services at home, and its all really easy to
           | maintain. I've absolutely used the skills and knowledge
           | gained in my day job too, which is nice. Home Assistant is
           | great to learn a lot of production web app stuff, all you
           | need to get started is as little as the PC you already own,
           | or something like a Pi to host it. As it can solve problems
           | in your actual life, it's rewarding enough to be interesting
           | I've found.
        
             | mirchiseth wrote:
             | Homeassistant is such a useful project. I use it for self
             | hosting bitwarden, ubiquiti addon and bunch of smart home
             | devices. For SSL I have been using local root authority but
             | is a pain to maintain. I am able to access HA client from
             | browser and Android phones but iPhones don't want to play.
             | How did you do LetsEncrypt with HA?
        
               | giobox wrote:
               | I just did Caddy container as reverse proxy for my HA
               | server - Caddy has support for Letsencrypt built in.
               | Needs very little configuration. This approach lets you
               | put SSL on any webservice you are running, the
               | configuration is not specific to HA at all.
               | 
               | https://caddyserver.com/
               | 
               | https://en.wikipedia.org/wiki/Reverse_proxy
               | 
               | If you use LetsEncrypt's DNS-01 challenge to setup the
               | SSL automatically, you can even deploy valid working SSL
               | for IPs in the private range (192.168.x.x, 10.x.x.x etc
               | etc), allowing auto-deployment of SSL for private
               | services on your LAN, not just publicly
               | accessible/exposed IPs. You can get around port
               | forwarding during initial letsencrypt setup with this
               | too, as all happens via DNS providers public APIs.
               | 
               | > https://letsencrypt.org/docs/challenge-
               | types/#dns-01-challen...
               | 
               | Caddy is really easy to deploy as a Docker instance as
               | well. There are many, many ways to accomplish
               | LetsEncyrypt with HA though! It's really just an example
               | of a common generic reverse proxy problem - searching for
               | "reverse proxy letsencrypt" will show you many other ways
               | to do it too. If you are using Docker to host your
               | services at small scale, there are some really clever
               | options now that auto-configure Caddy and SSL via
               | letsencrypt all just using docker compose:
               | 
               | https://github.com/lucaslorentz/caddy-docker-proxy
        
             | grep_name wrote:
             | Ha, I also got most of my initial experience the same way
             | :) I use k8s at work now, am somewhat frustrated with it
             | and would like to run a k8s cluster at home, but I have a
             | hard time justifying it. I'm not sure if a pi k8s cluster
             | would make sense for me either, although I do have enough
             | pis laying around for a small-ish one. I've considered
             | ordering a couple (more) r210 ii's and making a cluster,
             | but don't know what the stack would be exactly.The beefiest
             | machine in my home currently is an unraid server, and I run
             | a small number of services in a docker-compose stack on a
             | vps.
             | 
             | Do you find that there are functions that are unique to k8s
             | for a selfhoster that demand a system with that kind of
             | overhead?
        
             | tmaly wrote:
             | I knew this guy that automated his home with Prolog. It was
             | quite a cool project. I 100% agree with picking a project
             | to learn.
        
               | p4l4g4 wrote:
               | How i love these quirky side project! Do you have a link
               | to a repo? Would like to see his setup!
        
               | tmaly wrote:
               | I do not think he publishes it. But I would not be
               | surprised if he sees this comment on HN.
        
         | bbarn wrote:
         | Sounds like a super fun project. Did you find one with the
         | moving pages for album pictures or with the pink yellow and
         | blue "ticket" like song listings, or? Those are so awesome, I
         | can think of all kinds of fun ideas to retro-mod either.
        
           | eddieroger wrote:
           | Thanks! It is ticket listing kind. It's closed so you can't
           | see the record mech, which is what I wanted, and I will
           | replace song cards with ones I add to the Pi. Then I will add
           | all kinds of hidden ones for giggles because it would be a
           | waste to only play 200 songs. I got particularly lucky in
           | that it came with the field repair guide, which has a solid
           | wiring diagram and sequence that I can more or less recreate
           | in code. My goal is to do the least amount of destruction to
           | it that I can so I could some day replace the broken parts
           | (ironically, the central computer) and have it restored. It
           | being "Computer Controlled" was one of the most appealing
           | aspects to me - there's a light up panel that reads that on
           | the outside.
           | 
           | It's an AMI Rowe R-88 if you'd like to see it.
        
         | jasode wrote:
         | _> , but I think you need a fun problem to solve. Pick a toy
         | app and work on it._
         | 
         | I think you've read the op's question too fast and not fully
         | empathized with his situation. He already found a problem when
         | he wrote, _" I have a clear idea in mind with some code already
         | in C++ to proof-of-concept it for myself, ..." _
         | 
         | The bulk of op's words surrounding that goal is asking about
         | _the process of coding_ being fun. But then we get several
         | (well-meaning) advice to just focus on the _end goal_ being fun
         | rather than the coding process being fun. Yes, that 's a valid
         | perspective -- but a lot of people _also require the process
         | itself to be fun too_.
         | 
         | E.g. Let's say a programmer wants to code a custom music
         | library manager:
         | 
         | - John wants to use Lisp because having a REPL for quick
         | iteration and feedback loop is "more fun".
         | 
         | - Jane would rather use Python because having a bunch of 3rd-
         | party libraries for lots of tasks is "more fun" than coding a
         | lot of boring low-level tasks from scratch.
         | 
         | Advising people to have a sort of zen enlightenment of only
         | caring about the final product and being totally detached from
         | the process is unrealistic for many programmers. It's a
         | perspective that may work for you but for many others, _the
         | particular tools do matter_ in terms of joy.
         | 
         | In the op's case, he wished that there was a tool that was
         | cross-platform, with easy multi-threading, no incidental
         | complexity, etc. (To answer op's question, there isn't such a
         | tool that meets all requirements.)
         | 
         | We often see variations of the lament: _" I wish programmers
         | would quit focusing on particular programming languages.
         | They're all Turing Complete. Just pick one and get on with
         | it."_
         | 
         | That's true if the product is corporate project. In that case,
         | the employee needs to suck it up and just use whatever (not-so-
         | fun) programming tool to get the job done. But personal
         | projects like the op's question can try to look for alternative
         | coding environments that are more fun to use.
         | 
         | An analogy in woodworking was illustrated by 2 different shows
         | on PBS:
         | 
         | - Norm Abrams (The New Yankee Workshop) used _power tools_ to
         | build his projects.
         | 
         | - Roy Underhill (The Woodwright's Shop) used _hand tools_ to
         | build his projects.
         | 
         | Roy Underhill likes hand tools because power tools are noisy.
         | On the other hand, Norm Abrams uses power tools as they're
         | fast. Neither are wrong. Both can craft a chair but the tools
         | still matter.
         | 
         | A lot of woodworkers can't just detach themselves from the
         | usage of tools and only focus on the final product. The _choice
         | and use of particular tools_ is a core part of the joy.
        
         | beamgirl wrote:
         | I've found that sometimes the hardest issue is getting mentally
         | unblocked enough to find a problem that seems approachable. One
         | of the best ways I've found to prompt you is to start browsing
         | libraries till you find some that imply a goal you might enjoy.
         | My last fun personal project was making a command line AppleTV
         | remote with a lib for doing such. I'd been so burnt out till I
         | saw a random link to the lib, and it just sucked me in.
        
         | codazoda wrote:
         | I did a similar fun project. I created my own slot machine. I
         | made a small shelf like cabinet out of wood, set a TV on it in
         | portrait mode leaning against the wall, added a few lighted
         | push buttons, and dropped a Raspberry Pi inside. I never
         | finished the software side, but I was pretty proud of the looks
         | of the machine.
        
       | jyriand wrote:
       | Maybe not a popular opinion, but after I bought a new MacBook, I
       | decided to try out some iOS and Mac apps development. After years
       | of frontend and backend development, it felt like fun thing to
       | do. No more endless npm modules, css files, javascript quirks.
       | Things just work.
        
       | giantg2 wrote:
       | "I just want to have fun programming again"
       | 
       | You can... just not as a professional. Work kills the joy. As
       | only a hobby it could be fun again.
        
       | didip wrote:
       | In programming, the sky is literally limitless. But you have to
       | find it within yourself to find what's "fun".
       | 
       | No one could possibly suggest "fun" to you.
        
       | makerofthings wrote:
       | I was getting a bit bored of c++ a few years ago and learned
       | Haskell http://www.learnyouahaskell.com/ I used Haskell stack at
       | the time and it was zero hassle to get coding. I did nothing
       | practical, learned a lot and had a great time. My C++ is now way
       | better.
        
       | RexFactorem wrote:
       | Zig looks logical, It has amszong WASM support.
        
       | curiousllama wrote:
       | I remember I had the most fun when my code sucked. I made all
       | sorts of silent tradeoffs because I didn't know that I was
       | trading things off.
       | 
       | "Look! I built a whole App that does the thing! Isn't it cool?
       | Oh, yea, you need to use this gnarly url and - crap - yea, use
       | chrome. Refresh it... Hold on, let me restart the Raspberry Pi...
       | Got it! Look at that! So cool! Wait - did someone HACK this?"
       | 
       | The grown up version of this might be just building for one
       | platform, and one happy path. Who cares if lots of people can't
       | use it? If it's popular, you can turn it into a job then. But
       | until that happens - just make the computer do something cool!
        
       | phoehne wrote:
       | This will probably get lost in the noise. But I think what sucks
       | the fun out of side projects is where your agency is taken away
       | by the 'right way' to do things. That's what makes embedded and a
       | lot of Raspberry Pi projects so fun. There isn't a large
       | collective telling you to use X build tool plus Y framework, and
       | if you don't, it's because you're doing a bad job and don't care.
       | And if you ask a question like 'how do I...', the response is Y
       | takes care of that for you, you should really use Y.
       | 
       | Pick up an Arduino and there's no one right answer. It's still
       | very hobby oriented, so a lot of people do fun an wacky things.
       | The learning curve is fairly short. What I call the 'book count,'
       | or how many books you need to read to be productive, is pretty
       | low. On the other end of embedded, it gets very formal, very
       | quick, but that's for professional embedded developers.
       | 
       | Or, pick a 'dead' language. Go to some vendor like thrift books,
       | or hunt used book stores, for books on that language. You might
       | find some for $5. There's no pressure, and you have full agency
       | to make the greatest or the worst decisions you want. And a lot
       | of the communities around these 'dead' languages are a lot of
       | fun.
        
         | robinsonb5 wrote:
         | Agreed - there's a lot to like about embedded programming -
         | it's the antidote to bloat, and encourages a "bonzai"
         | philosophy towards programming. It also means you can have
         | total control and understanding of every byte of the firmware,
         | which - for me at least - is much more conducive to fun than
         | sellotaping together chunks of opaque bloatware.
         | 
         | > Or, pick a 'dead' language.
         | 
         | Or a dead platform! Loads of retro platforms still have active
         | and creative communities, and finding new ways to make an old
         | computer do cool things is a lot of fun.
         | 
         | That's where I find my fun, anyway - nothing about what OP want
         | to achieve sounds compatible with fun to me - but that's
         | probably just me showing my age!
        
       | college_physics wrote:
       | > I feel like there aren't really any good options in software
       | development any more
       | 
       | Totally empathize. Why we ended up this way when "tech" has been
       | eating the world for so long is another story...
       | 
       | One little corner that might be worth exploring is KDE apps based
       | on QtQuick / Kirigami. You can leverage your C++ and deploy on
       | android too.
       | 
       | https://develop.kde.org/frameworks/kirigami/
        
       | reacweb wrote:
       | I give remote math courses (GoStudent 4h per week). I also have a
       | student in computer science. She sends me her lessons and I
       | explain to her what she didn't understand. I help her to do her
       | lab work. If a subject doesn't suit me, I tell her. The level on
       | the theoretical courses is excellent. To explain something, you
       | have to know the subject well. This allows me to progress on all
       | subjects at a very fast pace without spending much time (it is in
       | addition to my usual work).
        
       | habibur wrote:
       | Note down the good things you find in programming languages, and
       | build your own language writing its compiler. That will be a good
       | exercise.
        
       | jjk166 wrote:
       | Might I recommend instead of looking for a way to make things
       | easier, instead you look for a way to make them harder.
       | 
       | There's more than one way to skin a cat, and for a project with
       | even minimal complexity there are going to be tons of perfectly
       | legitimate choices for how to bring it to fruition. In theory
       | this is great, it's so easy to find a tool that works for you,
       | but it's also very easy to get into analysis paralysis. If that's
       | something that really bogs you down and makes the experience
       | unpleasant, then you need a way of easily reducing the number of
       | options. If you set out from the beginning to make a challenge
       | out of it and add some stupid requirement that you have to
       | satisfy, that can do the trick. You're no longer looking for the
       | optimal choice, just an acceptable option.
       | 
       | There are other benefits: a handicap makes doing boring routine
       | things stimulating and forces you to think about problems in new
       | ways. If you choose a handicap that forces you to use something
       | you don't have a lot of experience in, then it's a great way to
       | learn. You tend to develop a deeper understanding of the
       | fundamental principles underlying what you're trying to do. You
       | can also be a bit easier on yourself about the quality of the end
       | product since hey, it's pretty amazing that you could get it to
       | work at all.
        
       | Invictus0 wrote:
       | Fun? C++? Bruh.
        
       | 0ptr wrote:
       | Ok so basically how we have fun nowadays is
       | 
       | 1) write some random control plane 2) create yaml interface for
       | that control plane 3) watch how your users lose will to live
       | 
       | That is fun by definition
        
         | scubbo wrote:
         | I'm sure this was funny in your head, but it was not helpful.
        
       | Sentury wrote:
       | I'm on the same boat since months...
       | 
       | I created a little SaaS product with some HTML, VueJS 3 and
       | Laravel for fun. No code reviews needed here. Also not my daily
       | stack. Was quit funny ;). I have to mention I don't like JS very
       | much and I was never a Frontend guy, but I gave VueJS a try. And
       | I think somehow I finally found something to build nice Webpages
       | without digging into React or using jQuery for now.
       | 
       | It was great relief and somehow I became a little aware that
       | programming in the corporate world is relatively often just no
       | fun. No idea what I'm doing with the knowledge currently. Cheer
       | up and try to do some sports. I know, an often used advice, but
       | it helps.
        
       | sam0x17 wrote:
       | I've found that writing in Rust has re-ignited the spark of
       | programming being fun for me again if you derive fun from writing
       | some elegant and sexy code rather than finishing something per
       | say, but that's true of anything with coding
        
       | cmrdporcupine wrote:
       | It's not "fun", but it's perhaps best to start with the problem
       | you're trying to solve rather than the tools you want to use.
       | 
       | As for "fun" for UI, I found doing UI in Dear ImGui strangely
       | liberating. It sounds like a web front end is part of your
       | requirements, maybe, but if not, try one of the "immediate mode"
       | UI toolkits like that. They have their limitations, for sure, but
       | they come with a lot less "normative lifestyle assumptions" and
       | it's strangely enjoyable to toss a UI together in them.
       | 
       | Also I started having a lot more "fun" once I start doing my
       | hobby projects in Rust rather than C++... once I got past the
       | initial learning curve... I say this not so much for the language
       | side of things -- which can be a little straightjackety -- but
       | for the fact that I was no longer fighting all the sharp corners
       | in the C++ ecosystem (CMake, different 3rd party lib packaging
       | styles, dubious 3rd party library programming styles/standards,
       | etc.). Rust+Cargo simplifies a lot. And the third party crates
       | are generally of pretty good quality _and consistency_.
       | 
       | Or learn another language, like Zig. That looks fun, too.
        
         | jb1991 wrote:
         | My main problem with Dear ImGui is that it just looks pretty
         | terrible on a high DPI screen like most macs' Retina screens.
         | The scrolling behavior feels clunky too compared to how
         | scrolling works in every other app or browser on mac. If those
         | two things were fixed without my having to figure out
         | workarounds myself, I'd probably use it.
        
       | tarkin2 wrote:
       | Make apps--however you want regardless of current trends--that
       | you will use and find useful.
        
       | rjmill wrote:
       | Write it as a CLI first, if you can. Python with rich (for output
       | formatting) is a great choice. But if you have appropriate tools,
       | working with what you're comfortable with is a great choice too.
       | 
       | Until recently, I was in a similar situation. I had an idea of
       | what I wanted to do. I had some prototype code written up as a
       | web app in JS. It was going to be this beautiful thing that would
       | help so many people.
       | 
       | But then I realized it was too much pressure. I wanted this for
       | myself more than anything else. So I sat down and hammered it out
       | in python in an afternoon. (Full disclosure, python is my main
       | language, and I already knew exactly what this thing needed to
       | do. I also found a library that did the Hard Part for me.)
       | 
       | And the best part: when I tell certain people about what I built,
       | they don't care that it's a janky CLI. They're just happy they
       | don't have to build/commission it themselves.
       | 
       | Embrace jankiness and get something working. You'll have fun.
        
       | CrimsonRain wrote:
       | Go with Flutter. If you want, you can use Riverpod + GoRouter.
       | 
       | You will need a week or two learning curve if you are really good
       | at picking up things. After that, the noise will fade away. You
       | will be able to fully focus on building stuff and have fun.
       | 
       | If you are trying to interact with native platform in very
       | advanced way, the non-fun parts will be back for a bit. It is
       | still better than others.
        
       | rufius wrote:
       | Honestly - if you like UIKit and Swift then build in that. Better
       | to make progress and exercise the idea than hem and haw about the
       | perfect tool.
        
       | RexFactorem wrote:
       | Zig sounds logical to me if you already know C++.
       | 
       | It has grest WASM support, too.
       | 
       | Stuff like Bun.sh which is an entire JS platform is built upon
       | Zig with a very small team. That speaks of Zig complexity.
        
       | kilgnad wrote:
       | If you're looking for the type safety afforded by swift I
       | recommend two languages:
       | 
       | Elm and elm-ui for the front end. Elm is so safe that with the
       | exception of the FFI and OOM it cannot have runtime errors.
       | 
       | Rust for the backend. You already know C++ so borrowing (move
       | semantics) references and whatnot should be pretty familiar. Rust
       | is like C++ but without all the horrible baggage and swift esque
       | type safety.
       | 
       | Other people are like build stuff with this! Build stuff with
       | that! They don't get it. I know what you're looking for: type
       | safety in a good language without the garbage. Look into the two
       | things above^^^^
       | 
       | Anyway the thing that's sort of related here is functional
       | programming. Swift and Rust both share the same creator and the
       | type systems from both are derived from Functional programming
       | languages like haskell and OCaml. Elm derives its syntax from the
       | same family, but elm is strictly functional while rust is not.
        
       | User23 wrote:
       | The nuclear option is to transition to a job that isn't
       | programming. Then let it rest a bit and most likely the itch to
       | write some code will strike you, so go ahead and do it. Solve
       | problems you care about the way you like. Treat it as a hobby
       | again.
       | 
       | Of course, if your most marketable skill is programming, then
       | that strategy will likely involve a reduction in compensation.
       | Whether or not that trade-off is worth it is something only you
       | can answer.
        
       | rr888 wrote:
       | For me its not the language its the tools. Writing code is
       | getting easier but to deploy and monitor microservices on a cloud
       | requires dozens(!?) of little tools, scripts, config files all
       | different.
        
       | agentultra wrote:
       | Modern OS's are to blame. If it's not your cup of tea but you
       | still want to release on them I'd look into a framework, toolkit,
       | or game engine.
       | 
       | I don't know what project you have in mind but what about
       | targeting an older platform? If it's purely for fun/satisfaction
       | try making an Amiga or DOS program. Plenty of emulators for
       | modern platforms to help you run it on a Mac or Windows machine.
       | 
       | Depending on your project one route to consider is to build your
       | UI with an immediate-mode style library (or write one yourself,
       | it's not terribly difficult). You'd be sacrificing accessibility
       | likely but it would get something out there fast that's pure code
       | and doesn't require a ton of fiddling to get going.
       | 
       | Another "fun" area is to try Common Lisp or Emacs; both have
       | options for UI and graphics programming and all usual facilities
       | on modern systems. The benefit is that you can stay in warm-and-
       | fuzzy parentheses and get a highly interactive development
       | environment that you rarely have to leave.
        
       | codeptualize wrote:
       | For UI I do think JS is your best option atm. You don't have to
       | write JS to generate JS, you can use Typescript or go more exotic
       | to things like Rescript.
       | 
       | In terms of CSS; you'll need some form of styling in whatever
       | language, there are plenty of abstractions on top of CSS if you
       | want [something not css].
       | 
       | I would suggest having a look at Next.js if a web app would work,
       | React Native (use Expo) if you want mobile, or Tauri if you want
       | to focus on desktop (Electron, but in Rust, more performant,
       | smaller size, more secure).
       | 
       | Another thing worth checking out is Flutter. I'm personally not a
       | huge fan for irrelevant reasons but it is cross platform, and
       | it's compiled not-JS (Dart).
       | 
       | I also want to say FE has come a long way, the web platform is
       | much more stable, there are great frameworks and libraries, the
       | tooling is amazing, and above all it's really fun and productive.
       | Give it a shot, you might enjoy it. (Do use TS, or Rescript, or
       | something, JS is better with types).
        
         | 65 wrote:
         | For front end, there are a ton of UI libraries and CSS
         | frameworks out there that can minimize the amount of styling OP
         | would need to do. I am a big fan of Tailwind, but that might be
         | too much. Maybe some Bootstrap/Material UI React components
         | would do the job.
        
         | codeptualize wrote:
         | Another option I forgot as it's so far away from my world;
         | .NET, they have Xamarin and I think they just released .NET
         | MAUI. That would be C# or F#.
         | 
         | It's not my jam, but it's def cross platform and used quite a
         | bit afaik.
        
       | flippinburgers wrote:
       | https://github.com/iced-rs/iced
        
       | flopriore wrote:
       | Try Flutter, it lets you build multi-platform apps without any
       | HTML/JS/CSS and Dart is a pretty nice language
        
       | rco8786 wrote:
       | Ruby on Rails is desperately waving hello. Though it's not
       | x-platform...and I don't think the magical x-platform
       | tool/framework you're looking for really exists.
        
       | terhechte wrote:
       | I'm very happy with Dioxus, a Rust UI framework. It might tick
       | most of your boxes, except that it is still quite unfinished. On
       | the positive side, the source code is easy enough so you can
       | create PR's for missing features or bugs that you run into.
       | Here's what's interesting
       | 
       | - You write everything in Rust. Dioxus runs by patching the
       | output from your Rust code onto a VirtualDom in a Webview. So
       | your code runs native, the WebView is just one big canvas that
       | you use to display your UI. It's using WebKit/Tauri not Chromium,
       | so apps are much smaller.
       | 
       | - It is super cross platform (macOS, Windows, Linux, Terminal,
       | Wasm & (very unfinished) iOS/Android)
       | 
       | - You still need to understand some CSS but you could also use an
       | existing framework like tailwind.
       | 
       | - BUT: The way Dioxus is structured, you don't have to Render to
       | a WebView. You can plug in a custom renderer which gets told
       | which elements should be placed in the UI with which parameters.
       | That makes it easy to write a native AppKit or GTK renderer which
       | just places widgets and uses a Flexbox system to figure out the
       | sizing.
       | 
       | Most importantly, working with it is kinda fun. It also supports
       | hot code reloading and so on.
       | 
       | https://dioxuslabs.com
        
       | Operyl wrote:
       | I found fun, recently, in helping out non-profit organizations or
       | places that could use a programmer but just don't have one for
       | whatever reason it might be. I am building a Digital Signage
       | solution that can swap to a live seating availability chart for a
       | performing arts theatre, I'm working with some local theatre
       | groups on helping flesh out some cool custom QLab integrations,
       | etc.
       | 
       | You can find some fun projects in places least expected.
        
       | bayesian_horse wrote:
       | F# via Fable or Webassembly. Rust via webassembly.
        
       | _benj wrote:
       | I relate to this so much!
       | 
       | What I've been enjoying A TON lately is embedded development for
       | hobby. Not Arduino, but bare metal, flipping registers and
       | configuring devices in a STM32, writing linker scripts and
       | scripting gdb.
       | 
       | It feels awesome to understand a system completely (sort of). I'm
       | writing C but I also wrote the assembly that bootstraps my C
       | environment and calls main()
       | 
       | That combined with some reverse engineering to figure out the
       | MIDI protocol and a buzzer and LED and I've made a little
       | instrument that I can play with my keyboard!
       | 
       | Next I'm planning to understand how USB works and maybe make the
       | little instrument controllable over USB? Who knows!
       | 
       | I've realized that what I enjoy about programming is the puzzle,
       | the thing that I don't know, and then learning it, and then doing
       | something fun with it.
       | 
       | Wish you the best and tons of fun in your journey!
        
       | k2enemy wrote:
       | Maybe play around with PICO-8?
       | (https://www.lexaloffle.com/pico-8.php)
       | 
       | The highlighted programs are mostly games, but people have made
       | all sorts of fun things like 3D CAD, music synthesis, text
       | editors, etc.
       | 
       | It is certainly a break from complexity. And it is easy to export
       | your program as a webpage.
        
       | CodeWriter23 wrote:
       | Employ a risk containment strategy, "how can I get the next
       | micro-piece to MVP in the least time/energy/resources/money." I
       | enjoy that challenge, it gets a lot of my what I call "head crap"
       | out of the way, and reveals new ways to approach problems. I call
       | that fun. Constructively I'll say it appears you may have some
       | "head crap" in play. I say that because your stated goals of the
       | perfect app, with fun, and simplicity are totally at odds. Risk
       | containment, you might choose to flesh out your idea as it is. If
       | it flies and starts making cash, then tackle more platforms.
       | Rewrite from the ground up in a different language/framework if
       | necessary AFTER getting traction and money. Because making the
       | money is the real fun.
        
       | elil17 wrote:
       | If your true goal is to have fun while programming, why not just
       | play a Zachtronics game (TIS-100 or Shenzhen I/O)? Same
       | difficulty as programming a piece of software (if not more
       | difficult), but no dealing with all of the complex annoyances of
       | programming languages.
        
       | anigbrowl wrote:
       | Do internet-of-things stuff on embedded devices. It's fun and you
       | can run on bare metal or a minimal stack, but you don't have to
       | compete with the entire internet on the same computer.
        
       | a-saleh wrote:
       | I am currently writing a small app for my partner. I asked
       | friends what should I use. Decided on react native. It is
       | literaly a slideshow of a praticular pdf (rules for a new dog-
       | sport), just as dedicated app. It is maybe 100 lines. Maybe I
       | will add some anki-like functionality if I feel like it. It was
       | fun.
       | 
       | The crucial thing was, speed of feedback-loop? And the expo stuff
       | is good. It does the bundling, it has hot reload. I don't mind
       | typescript and the embedded xml.
        
       | magic_hamster wrote:
       | May I recommend making a simple game? Developing small games is a
       | lot of fun, and you have complete control over the complexity
       | you'd like to delve into, as well as the scope.
       | 
       | I've been making games with varying degrees of seriousness. I
       | even released a full solo game last year, which was a wild ride.
       | I'm lucky enough to have a job I'm satisfied with, but even so,
       | creating games has never failed to introduce super interesting
       | challenges, it's just a great creative outlet for code and art
       | alike.
       | 
       | I think Godot (Python-like with C# support) is in a very
       | interesting place right now, and it's easy to get into and start
       | making some prototypes. If you want something more involved, try
       | Monogame (C#). There are always Unreal (C++) and Unity (which IMO
       | is getting harder and harder to recommend due to their business
       | model and decisions as of late).
       | 
       | Plus, game developers have some of the best online communities on
       | virtually any platform you can think of. You can always find
       | someone to consult or even join a project, from modding to rev-
       | share game development.
        
         | fierro wrote:
         | what games have you developed? Can I play one?
        
       | NortySpock wrote:
       | Your long list of desired features and properties, especially
       | cross compatibility, is sucking all the fun out of the project. I
       | also suspect the hobby project you chose (whatever it is) has so
       | much idealism in it that it implies a lot of toil, e.g. a cross
       | platform messaging app or one-storage-system-to-rule-them-all or
       | The Next Great MMORPG.
       | 
       | The goal is too big and you are but one person with a day-job.
       | 
       | Don't quit your day job.
       | 
       | If you want to finish a project and have fun: Do not attempt to
       | solve world hunger or censorship or any big problem, because you
       | will find it is big and thorny.
       | 
       | Do: make a list of tiny projects. Extra tiny. Make sure they are
       | fun, e.g. asteroids or Snake or displays-a-random-emoji or
       | something silly.
       | 
       | Make a list of non-goals for your project: e.g. it will not be
       | cross-compatible, it will not be multi-threaded, it will not
       | support multiple users, it will not be scalable, it will not
       | support multiple resolutions, etc. Try to make it so dang simple
       | you think you can knock it out in 2 days. (It might still take a
       | month)
       | 
       | If you need a framework or library, pick one and only one
       | library. (write the rest yourself) Pick the smallest one you can
       | find that covers the part of the project you don't wanna do,
       | whether that's game physics calculations or databases or
       | whatever.
       | 
       | And then write your project, preferably all in one big ugly file
       | that does not meet anyone's definition of organization or
       | documentation or quality.
       | 
       | That's when it's fun, when the scope is small and understandable,
       | and there is no expectation of having to fix anyone else's bug
       | reports but your own.
       | 
       | (To be clear, these rules are only for personal projects, I do
       | not recommend this level of anarchy on a team or a "real
       | project", just a project where the goal is to have fun.)
       | 
       | I've made snake, asteroids and Galaga clones in JavaScript. I had
       | fun with them, and I threw the code over the wall for other
       | people to look at; but for personal projects I am not promising
       | anything other than that I had fun writing the code and playing
       | the game I wrote.
        
       | siva7 wrote:
       | You might be interested in a role change where you are coding
       | less
        
       | perlgeek wrote:
       | From the way you write, I get the impression that the project
       | idea you have in mind isn't fun for you to implement.
       | 
       | If dealing with "front-end baggage" doesn't sound like fun to
       | you, don't do a project that needs (much) front-end. Maybe you
       | can build a bot (discord maybe?) instead? Or try some other
       | interaction paradigm?
       | 
       | Or maybe abandon your project idea, and ask yourself what kind of
       | project would be fun to implement, not fun to have finished
       | implementing.
       | 
       | > I feel like there aren't really any good options in software
       | development any more. It's always one big compromise with lots of
       | possible decision fatigue. Every direction has drawbacks.
       | 
       | The beauty of a hobby project is that you can decide what's
       | important for you. You can decide to screw portability, or
       | accessibility, or security (as long as it's just on your
       | device/home network), or whatever else feels like a burden to
       | you.
        
       | noloblo wrote:
       | haskell, fp, ocaml, elixir/erlang, f#, racket, common lisp/scheme
       | [for general enlightment] to broaden your horizons
       | 
       | monads, type-classes, pattern matching to get out of the
       | imperative mindset from cpp, java,python, ruby
       | 
       | [to be clear avoid java, cpp,python, ruby]
       | 
       | c is needed for performance,
       | 
       | elixir/erlang for concurrency/parallelism,
       | 
       | haskell/racket/common lisp for enlightenment
        
       | mxkopy wrote:
       | Find out which sort of language features you find really cool
       | that apply to your project. For example I have this idea in my
       | head of writing ML stuff in Haskell, since everything is lazy and
       | you could run models off disk. That would be really fun not only
       | because of the end goal but because writing Haskell code is a
       | borderline psychedelic experience. Using core language features
       | tends to give you that feeling of using divine tools as opposed
       | to writing a textbook in a second tongue.
       | 
       | Other than that I'd recommend C. It's ubiquitous and can be as
       | simple as you want it to be. With macros or source to source
       | transformation you can have your cake and eat it too by picking
       | how you want your code to be written then figuring out how it
       | would compile to C.
        
       | schwartzworld wrote:
       | You don't need much expertise in CSS to build common web UI
       | patterns. It's been around a long time, and tropes like "it's
       | hard to center a div" aren't really true anymore.
       | 
       | It's absolutely possible to build JavaScript apps in a single
       | page with no external dependencies. All you need is a single
       | .html file and a simple development server (I use python
       | http.server).
       | 
       | Writing in typescript is a easy as a single dev dependency to
       | compile the code. There's no multithreading but first class async
       | support.
       | 
       | Additionally, JS / TS are very flexible. You can implement almost
       | any programming paradigm you want to learn. I love doing FP in
       | typescript personally.
        
         | ri0t wrote:
         | Trouble with CSS is still this:
         | https://media.giphy.com/media/yYSSBtDgbbRzq/giphy.gif (Peter
         | Griffin trying CSS)
         | 
         | And centering a div can still be _very_ hard depending on the
         | circumstances.
        
           | schwartzworld wrote:
           | It gets better as you practice and learn good practices, and
           | for the kinds of "fun" projects OP wants to do, there's no
           | real downside to using a css framework that abstracts a lot
           | of it away.
           | 
           | > centering a div can still be very hard depending on the
           | circumstances.
           | 
           | Only thing i could think is targeting ancient browsers. I'm
           | curious, do other UI languages not have quirks or edge cases
           | to learn?
        
           | bob1029 wrote:
           | > And centering a div can still be very hard depending on the
           | circumstances.
           | 
           | Are the circumstances that you are banned from using flex or
           | grid?
        
           | kroltan wrote:
           | I always see this meme going around, but it's just plain and
           | simply untrue now that Grid can be used reliably.
           | 
           | You can center anything by making the container display:grid;
           | align-content:center; justify-content:center; I don't know of
           | any situations where that wouldn't work. Flex is a bit
           | finnickier to understand with its major/cross axis concept
           | and wrapping, but you can write Grid layouts with your eyes
           | closed.
        
       | [deleted]
        
       | zumu wrote:
       | > I feel like there aren't really any good options in software
       | development any more. It's always one big compromise with lots of
       | possible decision fatigue. Every direction has drawbacks.
       | 
       | You just gotta pick something and go. I know nothing about your
       | app, but there's plenty of general purpose languages out there
       | that wouldn't be a bad choice. Over-optimizing is gonna kill the
       | fun and you'll get nowhere. Choose some tech that solves your
       | immediate problems and maybe keep things modular so you can break
       | out the pieces that aren't working later.
       | 
       | Remember the fun part is building things. So go build something.
        
       | philliphaydon wrote:
       | C#/.NET is cross platform. I find it more fun than doing things
       | like php or node. But I also don't follow the whole "everything
       | needs an interface" crap, or the insane level of abstractions
       | people seem to implement.
       | 
       | I'm sorry learning rust tho. Like it a lot.
        
         | nend wrote:
         | C# also allows you to use blazor, eliminating the need for
         | js/multiple languages to write a web app.
         | 
         | I personally find that a much more fun way to program.
        
         | bob1029 wrote:
         | I'm using C#/.NET7 for a side project. I use .NET6 at work.
         | 
         | For me, the language itself has no bearing on fun. Having
         | something that "just works" in most areas without having to
         | antagonize over 3rd party dependencies _allows_ me to have fun.
         | 
         | I'm sure if I was as familiar with Java or something I'd
         | probably use it for my fun projects instead.
         | 
         | If you want the language itself to be an amusement, then I
         | don't think C# is for you. It is about as boring and
         | straightforward as it gets. I use it because it lets me work on
         | fun problems without getting in the way very much.
        
           | kroltan wrote:
           | If you want some fun, try working with the allocation-
           | minimizing parts of the standard libraries, or lambdas-as-
           | Expression, or even Roslyn analyzers/generators. C# has loads
           | of "fun language features" to play around with, but what I
           | find useful is that you can just use them boringly if you
           | need to.
        
           | runevault wrote:
           | C# can go in both directions because if you don't go full of
           | shenanigans and simply write what you need it can be
           | reasonably elegant. But to your point it won't necessarily be
           | "fun", however if the fun is more in the problem it can be a
           | great answer.
           | 
           | F# I'm finding to be a language I can have some fun with
           | because some of the syntax just speaks to me (being able to
           | use pipe operators aka |> to chain work so that what you work
           | on is at the front and then it flows into each step without
           | explicitly writing out intermediate variables or writing code
           | inside out feels GOOD to me). It certainly isn't for everyone
           | though.
           | 
           | At some point I want to play with Avalonia because I need to
           | get back to doing non-web UI but I never have the right idea
           | other than some of my game stuff and that's getting done in
           | Godot or Unity.
        
           | philliphaydon wrote:
           | I find alot of difficult to solve problems fun with C#, but
           | C# doesn't get in my way so when I work on personal projects,
           | its fun because of what I'm building, not so much the
           | language.
           | 
           | I suggested C# mainly it lets me focus on what I'm building.
           | Node I feel like I'm thinking "is there a package for that"
           | "how to use the package" "this doesn't work the way you would
           | think it does"...
           | 
           | If that makes sense...
        
       | warrenm wrote:
       | Best way I found to "have fun programming" is to _not_ do it
       | "for work"
       | 
       | That's personal experience, of course, but the most "fun" I have
       | in almost _any_ task /topic/field is when it's not 'forced' on me
       | by $WORK
        
       | serial_dev wrote:
       | My go to language for the last couple of years has been Dart, and
       | I stuck with it because it's the first language I really enjoy.
       | 
       | Dart's "Rails" is Flutter, it lets you write apps for mobile on
       | iOS, Android, web, desktop on Windows, Mac and Linux, and it's
       | used on large enterprise projects, startups, and solopreneurs /
       | pet projects.
       | 
       | Dart is a very consistent language (compared to others, at
       | least), super easy to learn, null safety, great type system. You
       | can write web apps with it even without Flutter (it can also
       | compile to js), churn out command line tools, run your server,
       | and write user interfaces for desktop, mobile and web apps with
       | Flutter. It feels like it has the best parts of Java, Javascript.
       | 
       | It's been a fun couple of years for me and I created some fun
       | stuff with Flutter and Dart, so if you want to try something new,
       | consider taking a better look at them.
        
       | sorry_outta_gas wrote:
       | You're over thinking minor stuff
        
       | logicalmonster wrote:
       | > I'm also attracted to implementing my app cross-platform.
       | 
       | Depending on your project, you might consider working on the
       | backend and API to drive this app and contract/partner with
       | somebody who can do a killer job on a great frontend.
        
       | qbasic_forever wrote:
       | If frontend stuff is fatiguing just use Bootstrap. You barely
       | have to touch CSS with it (beyond using its classes on elements)
       | and it is extremely polished and capable. Sure the stock output
       | is a little corporate and bland but who cares, just get stuff
       | done with it and worry about making it look unique later.
       | 
       | edit: Material design is another good frontend option that lets
       | you stop worrying about fiddling with design and CSS. There isn't
       | as nice of a single framework for it like bootstrap though.
        
         | bob1029 wrote:
         | I stopped using bootstrap for my side projects once I learned
         | how to use grid/flex. Breaking free of the front-end frameworks
         | feels like flying when you are working on solo projects. MDN is
         | the only web reference you need if you go completely vanilla.
         | 
         | For team/professional work, I'd still stick with something like
         | bootstrap.
        
           | joelaul wrote:
           | This validates me. MDN is the bible.
        
       ___________________________________________________________________
       (page generated 2023-02-08 23:02 UTC)