6
115
lambdabeta

@lemmy.ca

I'm a software engineering developer from Ottawa, Ontario, Canada.

lambdabeta 4 points 6 days ago

I fear this will be one of those questions that may get unfriendly answers. I personally use none of those programs (I'm using i3-gaps/i3blocks/arch). The good news is that ricing is usuallly easier than you think. And as much as I hate a lot of "AI" these days, it can certainly help you get your specific tools configured how you want them.

As for why youomight get unfriendly answers, you basically asked the linux equivalent of: "I want to put stickers on my laptop to make it mine, how do I do it?" I answered "I use patches on backpacks, but just find stickers you like and ask AI how to put them on". Not the best answer, but hopefully decent.

Maybe I'm wrong though and you'll get more concrete advice. Anyways, ricing is a form of self-expression. Do what works for you. And enjoy the journey!

path: 0 26251619, hotness: undefined, score: 4, children: 0
lambdabeta 91 points 3 years ago path: 0 1682429, hotness: undefined, score: 91, children: 2
lambdabeta 43 points 3 years ago

After years, and many languages, I still have to say Ada. Kotlin, Rust, Julia, and Nim are my current contenders to overtake, but here's what Ada does well enough to still be my preferred tool when appropriate:

  • strictness: typically my code works the first time it successfully compiles with few or no bugs. Rust is almost on par in this respect.
  • structure: a corollary of the above is that it forces me to "plan ahead" more than just "start coding" which I find fits my programming style better, and leads to better "Unix Philosophy" product designs. I haven't found any other language that has the same effect other than maybe Haskell.
  • speed: I honestly find that Ada code outperforms C/C++ code most of the time. The only times C/C++ outperform Ada is after optimizations that come at the cost of readability.
  • multitasking: Ada's first-class tasks and protected objects are the only way I've ever been able to write bug-free concurrent programs that are more complex than async/await and/or producer/consumer structures (and I took a dedicated elective on concurrency at university!). Kotlin is almost on par in this respect with its coroutines.
  • hardware: The fact that Ada basically ships with a hard real-time OS built-in and can compile to e.g. AVR means that all my fancy libraries I've written or saved work just as well for a desktop game, a website backend, or an embedded microprocessor. Just look into representation clauses and interrupt pragmas to see its unique powers.
  • design: The whole design of the language has lead it to be the only language where I can consistently return to a multiple year old passion project with no attempt to write maintainable code, and fully understand what its doing and modify it with little effort.
  • tooling: While this is the biggest downside of Ada (see below) gprbuild is still my favourite build tool. I have no idea why strongly-typed build systems aren't more common. Its always a joy to work in gprbuild, once you get gprbuild working of course.
  • static polymorphism: Ada's generics are some of the best I've found. But they have some limitations that leads us into...

There are some situation where Ada shows its age:

  • static calculation: I love Nim (and Zig, etc) for the ability to run arbitrary code at compile time. It allows me to describe what would normally be an opaquely initialized data structure or code path in a clear and descriptive manner.
  • terseness: Ada is verbose, that's not such a big deal, but I find its just a tad too verbose which can lead to some slight difficulty when parsing code. func/proc (Nim) vs fun (Kotlin) vs fn (Rust) doesn't make much difference to me, but function X returns Y/procedure X starts to add a lot of visual noise to a file.
  • web compilation: The ability for both Kotlin and Nim to compile to either ASM or JS is AWESOME. If I have to write a "full stack" application, Kotlin multiplatform with ktor every day.
  • operator overloading: Only the built-in operators can be overloaded in Ada. It always makes me wish I could overload arbitrary operators. A small thing, but a symptom of...
  • TOOLING: Ada's tooling is BY FAR the hardest I have ever seen to get working. It takes the "eat your own dog food" too far. The fact that even in Arch Linux you have to install a bootstrap package, then the real package shows how hard it is to get a consistent build environment. ALR is helping in this respect, but is still not quite mature in my opinion.

Here's when I use the alternatives, and their biggest weaknesses:

  • Kotlin: anything where I want both one or more JS artifacts and one or more JVM/native artifacts. Weaknesses: performance, static analysis, on the fence about tooling (gradle is cool, but sometimes seems too over-engineered), Biggest weakness: IDE dependency, writing Kotlin outside of IntelliJ is a pain, which is somewhat fair given who maintains it!
  • Rust: so close to beating Ada, if not for two things: ugly code - so many operators and glyphs that pollute the reading experience, maybe I'll get used to it eventually, but for now I can't scan Rust code, nor pick up and revisit it nearly as easily as Ada; language scale - I find Rust suffers from the C++ design attitude of "we can add this as a language feature" it takes too much mental effort to hold the entire design of the language in your head, which you sort-of have to do to develop software. Java and C are IMHO the undisputed kings in this respect. After reading through the specifications of both languages, neither will ever have any surprises in store for you. There's no magic under the hood or special case. All the cool features are done by libraries and rely on the same simple syntax. Every time I learn a new cool thing Rust can do, its at the expense of another edge case in the compiler that modifies my conceptual model of the code.
  • Julia: multiple dispatch and mathematics plus clean module design and easy unicode incorporation leads to clean code for math-y/science-y code.
  • Nim: templates and macros are excellent, concept system gives access to Rust-style traits without all of the additional "ugliness" of Rust, excellent performance, tiny executables. I just find that the syntax can get clunky. The UFCS easily cleans up a lot of the mess that Rust creates with its added features, since it keeps the parsing the same even when using some fancy language feature.

Thank you for attending my TED talk :P. Any questions?

path: 0 2023515, hotness: undefined, score: 43, children: 4
lambdabeta 42 points a year ago

My favourite part has to be the fact that a box of poptarts contains 8 poptarts...

path: 0 19359394, hotness: undefined, score: 42, children: 13
lambdabeta 40 points 2 years ago

One of the rare cases where I hear of a death and check wikipedia to still see the word "is". I wonder how long confirmation will take.

path: 0 13855904, hotness: undefined, score: 40, children: 4
lambdabeta 32 points 3 years ago

In case anyone wants the real meanings: I am not a lawyer, read the f***ing manual, bank of america.

path: 0 6474519 6474857 6475101 6475135, hotness: undefined, score: 32, children: 3
lambdabeta 32 points 8 months ago

Except that AWS is (for better or for worse) a tier 1 network solutions provider, in part because of advertised uptime. Due to that, it is possible for a minor AWS outage to result in lack of 911 service in an area, for example. Hopefully they have the common sense to try out these new things on less critical nodes though.

path: 0 22259105 22260317, hotness: undefined, score: 32, children: 5
lambdabeta 28 points 3 years ago

Wait until you learn about the shell specific /dev "files" like /dev/udp and /dev/tcp (which can send/recv IP traffic as if from a file)!

path: 0 410391 410471, hotness: undefined, score: 28, children: 1
lambdabeta 25 points 7 months ago

Oh boy. I had a crazy experience as a coop student (software engineering). Written on mobile, so may have some typos/styling quirks, sorry.

Term X: I worked for company Y, it went well, they wanted me back.

Term X+1: I get the automated message from the university job system saying I have an offer from company Y for the upcoming term, do I accept? I do. 3 months later, urgont email from university's coop office. The offer was glitched in the system. Company Y got a rejection from me, hired someone else. I have about a week to land a job from the dregs that nobody else accepted.

There's no CS related jobs left, but luckily I can speak french at about a B2ish level, so I look at a few french-english translator postings. Get a job doing translations for a mobile app. It'll probably suck a bit, but at least its something.

Fast forward to first day on the job. They say "we saw on your resume that you can code, one project you made was an android app. Here's our competitor's suite of 7 android apps (SAP). We want you to 'translate' them and make us our own versions. Here's a link to our API document." So I guess I got a CS job anyways. I'm put in a cubicle with Mr Doe. My supervisor, Mr Smith says Mr Doe will show me the ropes.

Mr Doe tells me "its a pretty casual place, no real fixed hours, just try to get your work done, no big deal." he then pulls out his lunch and starts eating at his desk saying "I'll just be here if you need anything" I ask about the dev team. He says "we're an HR consulting firm, we don't have a dev team" So I guess I'm on my own. 7 apps in 4 months isn't really feasible, but I'll try to make at least a quality MVP for one or two of them that they can use as a starting point.

Fast forward again, 2.5 months into the 4 month term. Mr Smith barges into Mr Doe and my cubicle. He yells at Mr Doe saying we run a tight ship here, I told you before our hours are 8 to 4 and you keep coming in at 10. Plus our corporate policy is clear about taking your lunch at your desk. You are fired. Mr Doe protests a bit, but ultimately ends up being let go. Mr Smith says he noticed that I've been late and eating at my desk too and he's going to send a letter to the university that I am violating company policy and am now on probation. I tell him this is the first I've heard of this, but he insists it was in the employee manual. I never got any manual. He insists that Mr Doe must have given me one, but relents and gives me a 'new' one.

Next he asks to see how the apps are coming along. I tell him one is almost ready to test as a minimum viable product and show him it, also show a second work in progress and demonstrate that it can make writes to the database (I started with the easiest app that only needed read access).

He is furious. Saying I should have at least 3 full apps done, not 1 partially complete app and 1 completely broken one. I told him that without a dev team or even a senior dev that was unreasonable. He says "they're just mobile apps its not like we're asking you to make full programs or anything, just copy the ones SAP made" I tell him that a mobile app is still a full program, and they really should hire a full dev team for it, but he's not having it.

Anyways, I finish the term the best I can. When I get back I of course get called in to the coop office and the dean of my program is there. They got a letter of complaint saying I couldn't speak french, I was always late, I was a slob, etc. The university has a reputation to maintain, I was representing them and made them look bad...

Luckily when I told them the whole story, plus showed proof (which I was documenting extensibly ever since Mr Doe was fired), they took my side, unlisted that company, and gave me a free pass on my next coop term (so a 4 month vacation).

That HR consulting firm took 3 years to send me my tax forms btw... Yeah, they're out of business now. Good riddance.

path: 0 22780016, hotness: undefined, score: 25, children: 0
lambdabeta 25 points 2 years ago

Sadly front end, like "High Level" is a very relative term. For example, in compiler design, the bit that parses code is called the "front end" since the "back end" is what emits machine code. I think that's what they mean here, the "front end" that understands D3D8 code has been added, presumably there is also a "back end" that converts the parsed/analyzed D3D8 code into valid opcodes for consumption by GPU/CPUs.

In the other direction, a UI/UX is sometimes called a "back end" when it is part of a more complex embedded project where physical controls are the "front end".

path: 0 11045856 11046141, hotness: undefined, score: 25, children: 2
lambdabeta 24 points 2 years ago

IIRC it takes about 30ish minutes for caffeine to "kick in". So if you have a bit, then take a nap, it can give you a nice 20ish minute power nap, then naturally wake you up so you don't feel groggy. The key is to be able to fall asleep quickly enough to have a decent power nap before it kicks in.

path: 0 13383862, hotness: undefined, score: 24, children: 2
lambdabeta 24 points a year ago

Thanks to Elections Canada it's actually a lot better than the states. We also get answers sooner. There's nothing like an American election to make Canadians thankful for Elections Canada.

path: 0 16689381 16689738, hotness: undefined, score: 24, children: 1
lambdabeta 24 points a year ago

I think this is the real answer. HDR is a thing and the baseline for expected dynamic range is higher than both what older displays can produce and older eyes can consume.

path: 0 20303362 20303756, hotness: undefined, score: 24, children: 0
lambdabeta 23 points 10 months ago

Thats exactly what I so often find myself saying when people show off some neat thing that a code bot "wrote" for them in x minutes after only y minutes of "prompt engineering". I'll say, yeah I could also do that in y minutes of (bash scripting/vim macroing/system architecting/whatever), but the difference is that afterwards I have a reusable solution that: I understand, is automated, is robust, and didn't consume a ton of resources. And as a bonus I got marginally better as a developer.

Its funny that if you stick them in an RPG and give them an ability to "kill any level 1-x enemy instantly, but don't gain any xp for it" they'd all see it as the trap it is, but can't see how that's what AI so often is.

path: 0 20898771 20899946 20900523, hotness: undefined, score: 23, children: 0
lambdabeta 22 points 2 years ago

Ada, hands down. Every time I go to learn Rust I'm disappointed by the lack of safety. I get that it's miles ahead of C++, but that's not much. I get that it strikes a much better balance than Ada (it's not too hard to get it to compile) but it still leaves a lot to be desired in terms of safe interfacing. Plus it's memory model is more complicated than it needs to be (though Ada's secondary stack takes some getting used to).

I wonder if any other Ada devs have experience with rust and can make a better comparison?

path: 0 12735669, hotness: undefined, score: 22, children: 3
lambdabeta 20 points 3 years ago

All praise our lord and saviour git rebase -i!

path: 0 6706530, hotness: undefined, score: 20, children: 3
lambdabeta 18 points 3 years ago

If you read the linked document, it outlines how reverse engineering may fall under a certain level of fair use, e.g. for reasearch and/or backup/archival purposes.

It really isn't as clear-cut as it seems at first.

path: 0 1645206 1647179 1648745 1651459, hotness: undefined, score: 18, children: 9
lambdabeta 17 points 2 years ago

I believe it stands for Free/Libre Open Source Software. I think the idea is to explicitly indicate both free as in beer and free as in speech. However, to me it just sounds like throwing in a romance term for the sake of it. But maybe I'm just ill versed on the whole free/libre divide?

path: 0 14193086 14194465, hotness: undefined, score: 17, children: 3
lambdabeta 17 points 2 years ago

I'm one of the very rare people that have the gene that makes cilantro taste like soap, but likes it. I blame the soap flavoured gum I had as a kid here in Canada.

So maybe save a little soaplantro for those that want it ;)

path: 0 13721730 13724722 13725186 13725244, hotness: undefined, score: 17, children: 2
lambdabeta 16 points 3 years ago

I'm also wondering what's in the top-left. Is it a bowl of stones?

Wait! I figured it out.

You were close with C-section, but got the direction wrong. Clearly this is getting ready for urgent replacement of gizzard stones! :)

path: 0 6871648, hotness: undefined, score: 16, children: 1

thanks for using Leebra!

go to feed...