Ask HN: I just want to have fun programming again

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • makepad

    Makepad is a creative software development platform for Rust that compiles to wasm/webGL, osx/metal, windows/dx11 linux/opengl

  • 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

  • ScreenPlay

    See https://gitlab.com/kelteseth/screenplay - Modern, Cross Plattform, Live Wallpaper & Widgets ! Free on Steam : https://store.steampowered.com/app/672870/ScreenPlay/

  • 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

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • racket

    The Racket repository

  • 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.

  • raylib

    A simple and easy-to-use library to enjoy videogames programming

  • 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?

  • iced

    A cross-platform GUI library for Rust, inspired by Elm

  • Elm

    Compiler for Elm, a functional language for reliable webapps.

  • 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.

  • Phoenix

    Peace of mind from prototype to production

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • pharo

    Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk.

  • 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:

  • wordsandbuttons

    A growing collection of interactive tutorials, demos, and quizzes about maths, algorithms, and programming.

  • 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.

  • kubo

    An IPFS implementation in Go

  • go-app

    A package to build progressive web apps with Go programming language and WebAssembly.

  • go-orbit-db

    Go version of P2P Database on IPFS

  • crystal

    The Crystal Programming Language

  • dioxus

    Fullstack GUI library for web, desktop, mobile, and more.

  • 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

  • uitk

    Cross-platform UI toolkit

  • 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.

  • bit-therapy

    Desktop Pets for macOS!

  • https://github.com/curzel-it/pet-therapy

  • micronaut-libgdx-teavm

    Demo of a pure-Java webapp tech stack. Java GUI widgets rendered in WebGL/Canvas. JDK 8-17 bytecode conversion to JS. Integrates LibGDX, TeaVM, and Micronaut.

  • 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.

  • Agents.jl

    Agent-based modeling framework in Julia

  • htmx

    </> htmx - high power tools for HTML

  • 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

  • Home Assistant

    :house_with_garden: Open source home automation that puts local control and privacy first.

  • 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!

  • nim-html-dsl

    Nim HTML DSL

  • Flutter

    Flutter makes it easy and fast to build beautiful apps for mobile and beyond

  • 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.

  • unitary

  • Come help us build a quantum physics game engine: https://github.com/quantumlib/unitary

  • Caddy

    Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

  • 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/

    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 public cloud instances.

    > https://letsencrypt.org/docs/challenge-types/#dns-01-challen...

    Caddy is really easy to deploy as a Docker instance too. There are many, many ways to accomplish LetsEncyrypt with HA though!

  • haxe

    Haxe - The Cross-Platform Toolkit

  • 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?

  • rust

    Empowering everyone to build reliable and efficient software.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts