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