Languages
houseofleft @ houseofleft @slrpnk.net Posts 1Comments 54Joined 11 mo. ago

It's not easier to do getters or setters but especially in python there's a big culture of just not having getters or setters and accessing object variables directly. Which makes code bases smaller.
Same with the types (although most languages for instance doesn't consider None a valid value for an int type) Javascript has sooo many dynamic options, but I don't see people checking much.
I think it boils down to, java has a lot of ceremony, which is designed to improve stability. I think this makes code bases more complex, and gives it the reputation it has.
Before someone says it, I know a lot of this stuff doesn't need to be done. I'm just giving it as examples for why Java has the rep it does.
I think a lot of it is "ceremony", so it's pretty common in java to:
- create a get method for every object variable
- create a set method for every object variable
Then add on top that you have the increased code of type annotations PLUS the increased code of having to check if a value is null all the time because all types are nullable.
None of that is hugely complicated compared to sone of the concepts in say Rust, but it does lead to a codebase with a lot more lines of code than you'd see in other similar languages.
So, putting aside the questionable morals of this person. I'm not sure alt right reddit threads are the election swing spot they seem to think.
Yazi sounds ideal! Does river involve as much set up as dwm? I really love the ideas behind suckless tools but they normally involve a lot or set up to configure hoe I like.
I read 'Computer Science Distilled' early on and it really helped me. It's a very shallow summary of some CS fundamentals, but that's kind of what you want when you're starting out- just enough knowledge to know what exists to learn later.
Here's a link: https://www.goodreads.com/book/show/34189798-computer-science-distilled
Never heard of river but looks really cool! Come to think of it, I haven't heard or a bunch of this stuff- yazi looks really neat
I feel like in a lot of ways, most languages are great candidates for this, for lots of different reasons!
- Rust: Great choice because it produces a small, very well optimised binary. If you just care about the output binary being small and non-memory intensive, then this is probably a good call.
Buuuuut, Rust's compilation can be pretty resource intensive, so if you're actually developing on limited hardware:
- C (or curveball option, Hare): produces a small, well optimised binary, with faster compilation. But less framework type things to help you on your way to apis/servers/etc.
Then there's the fact that it's a home server, so always on, meaning you actually have generous resources in some ways, because any available CPU is kinda just there to use so:
- Python: has a runtime and can be pretty heavy CPU wise, but lots of frameworks, and in all honesty, would wind up being a lot faster to put stuff together in than Rust or C. Probably a great default option until you hit resource issues.
And then why not go whole hog into the world of experimental languages:
- Roc: Doesn't have versions yet, so super new, but should produce a pretty small binary and give you higher level ergonomics than something like Rust or C, especially if you're into FP.
And then we're forgetting about:
- Haskell: Haskell is the only true programming language, and any time there's a selection of programming languages, picking the one that isn't Haskell is the wrong choice. Just ask anyone who programs in Haskell.
But that doesn't factor in:
- Javascript: Sooner or later, everything is just javascript anyway, why even try to resit?
Plus:
- Assembly: Can you even trust that it's well optimised unless you're writing the assembly yourself?
Edit: My actual serious answer is that Rust + Rocket would be great fun if you're interested in learning something new, and you'd get very optimised code. If you just want it to use less memory that java and don't want to spend too much time learning new things then python is probably fine and very quick to learn. Go is a nice halfway point.
I'm a data engineer, use parquet all the time and absolutely love love love it as a format!
arrow (a data format) + parquet, is particularly powerful, and lets you:
- Only read the columns you need (with a csv your computer has to parse all the data even if afterwards you discard all but one column)
- Use metadata to only read relevant files. This is particularly cool abd probably needs some unpacking. Say you're reading 10 files, but only want data where "column-a" is greater than 5. Parquet can look at file headers at run time, and figure out if a file doesn't have any column-a values over five. And therefore, never have to read it!.
- Have data in an unambigious format that can be read by multiple programming languages. Since CSV is text, anything reading it will look at a value like "2022-04-05" and say "oh, this text looks like dates, let's see what happens if I read it as dates". Parquet contains actual data type information, so it will always be read consistently.
If you're handling a lot of data, this kind of stuff can wind up making a huge difference.
I'm a data engineer, and have seen an ungodly ammount of 200-but-actually-no-stuff-is-broken errors and it's the bane of my life!
We have generic code to handle pulling in api data, and transforming it. It's obviously check the status code, but any time an API implements this we have to choose between:
- having code fail wierdly further down the line because can't parse the status
- adding in some kind of insane
if not response.ok or "actually no there's an error really" in response.content
logic
Every time you ignore protocols and invent your own, you are making everyone sad.
Will take recommendations of support groups I can join for victims of terrible apis.
Take a look at retropi, which is more or less what you're talking about!
Depending what you're wanting to get out the project:
- You might be happy just using retropi
- You might be happy working on top of retropi
- You might want to build something from scratch and just use retropi as a refence
Anywag, I'll stop being a shill now and just give you the link: https://retropie.org.uk/
I lile this a lot. This reminds me a lot of KQL (a microsoft query language that's used for a bunch if azure logging).
I use a lot of python pandas/dask- I've definitely got used to viewing a table as a series of operations to perform rather than the kind of declarative queries you get in SQL.
At what point is it no longer SQL? If we're changing fundamental stuff, I'd love a way of writing loops or if statements that isn't painful too.
I though this would be some kind of scifi future Venice type thing, and was pretty stoked. Even more exciting that it's a real project!
I surf and it's amazing just how many beaches aren't always safe to swim at, let alone city rivers and lakes. I think we forget how surreal it is how little lives in those waters.
Ah Marginalia is absolutely awesome! I feel like modern search is almost an extension of website names now, so if I want to find netflix but don't know it's website, I might search for "netflix". Marginalia is actually a cool way to find new stuff- like you can search "bike maintenance" and find cool blog posts about that topic.
I honestly can't remember if that's something google and the like used to do, but doesn't now, or if they never did. Either way, I love it!
Yeah, that's my experience too. I think once projects get to a certain size, you really reap the benefits of strong opinions, regardless if what those opinions are.