Honestly “C + SDL + Lua” is basically the best, most sane"full stack" I have ever used.
IMO it allows for the perfect level of abstraction.
I moved from Visual Basic (3 no less!) to C because I needed to optimize the performance of a software synthesis (like, sound synthesis) application I was developing at the time (mid-1990s). It boggles my mind to this day how much fucking work you had to do just to create a simple window in C. It instantly made clear why UIs at the time were so bad and I went back to Visual Basic for the UI with a compiled C DLL to do the heavy lifting.
There’s no excuse for why UIs are still so bad today.
The “excuse” is more or less the 20 or so replacements that have been made and died. I think Microsoft alone is responsible for 5 over the life of Windows.
We’ve more or less kinda settled on HTML only because it’s already wide spread. But it’s not perfect so more standards for the standards pile. Don’t worry, react will end up buried by the next thing on the pile eventually.
We’ve more or less kinda settled on HTML
It’s funny, one of the modern UI glitches that I hate the most is when a long bit of text is just truncated with ellipses instead of the whole thing being shown and you have to hold the mouse over to get it in a tooltip, or shudder actually click on the thing. HTML is great at word-wrapping and allowing the whole UI to “flow” with variable heights and widths as necessary - and yet that is never allowed to happen in apps.
this is like when I built that web server in x86 assembly lol.
This. This project drained my soul lol.
I once write a web app in C, but this terrifies even me… though Tsoding, the guy in the video, did that, too…
My favorite so far is either my websever in bash or my webserver in Common Lisp. my webserver in C was fun too though
I bet that thing was fast!
Meh. Even hosting static files in a RAM disk over localhost, you’re 99% as good as you can be by using the
sendfile()
system call. The kernel can copy data from one file descriptor to another faster than any userspace program can. Implementing theLength
header is astat()
call.If you’re not on a RAM disk and not on localhost, then disk access or network throughput will predominate.
Assembly is not magic go faster sauce.
I mean, just because you implemented something in a low level lang, it doesn’t mean you’re gonna have the fastest implementation. Even in high level langs, there’s usually heavy optimization involved in things that are done all the time (e.g. web servers)
yeah, in one sense it was lol.
Who do you think is better at writing assembly? @harbard@fedia.io or a modern compiler with hundreds of contributors.
It’s definitely not me
can your React do that?? didn’t fackin think so dabs mockingly
How I love mista azozin…
React Native
I see your pitiful vibe coding and raise you… SPITE CODING 👿
Spite coding is almost the original coding.
I have definitely gone into a rageful fugue state and woken up a week later after reworking an entire code base from being an inconsistent mess of slop…
…into actually having a common library of functions instead of just rewriting slightly different versions of them 8 times, having those functions only actually instantiated for necesarry classes…
…rewriting every variable name and function name to an actually consistent and intelligible naming scheme…
… and finally, moving a whole bunch of shit out of some kind of global ‘think’ type loop that doesn’t actually need to be called or checked every goddamned micro second.
Done that more than once actually.
Never look inside ‘baby’s first video game mod’ code, unless you have healthy blood pressure.
But uh yeah, spite, hatred, and anger are indeed powerful motivators for making good code, lol.
… so many idiots just jam everything into a global, called every tick loop, and then claim that it just can’t be optimized, because “the game engine just can’t handle it”…
I spent a good fraction of my career taking over and trying to fix code bases that my company refused to scrap and replace outright because they didn’t want to admit their worthlessness. Complete rewrites would have taken maybe a tenth of the time I spent.
My favorite thing to encounter (which was nearly universal) was the phenomenon of a young programmer fresh out of college encountering SQL for the first time, deciding he hated it, and writing a huge mess of code to handle auto-generating the necessary SQL. I remember taking over one C# application that had classes named “AND.cs” and “OR.cs” which just took a String as a parameter and returned that String with " AND " and " OR " appended to it, respectively. In about an hour, I replaced three months of this guy’s work that had bottlenecked the project with like five SQL statements.
It’s insane to think what the civil engineering world would be like if it had the career structure of the software world.
Jesus Fucking Christ.
I’ve done a lot of SQL/Database type work as well, and yep, I’ve been the person learning their insane spider web of db structures, and then either trying to enforce some kind of actual defined standards going forward, or in some instances, succeeding at restrucuring the dbs, transitioning them, and convincing corporate that this actually needed to be done.
It’s insane to think what the civil engineering world would be like if it had the career structure of the software world.
Points at understaffed ATC tower, collapsing bridge that hasn’t been even evaluated in a decade, general state of roadway disrepair and constant re-repair, also the new highway/overpass/lane expansion being built to ‘solve traffic’ despite doing that literally never working
First thing I tell my interns: “The guys that made that database are smarter than you, they got PhD’s for the algorithms the database uses. You are going to use SQL properly, and query properly, because the database will always do it better than your python code.”
Nah, we’ll just SELECT * from both tables and loop through the arrays in JavaScript to associate the records.
Job interviewer: “What’s the best sorting algorithm for {whatever}?”
Me: “The SORT BY clause in SQL.”
Holy shit, have we worked with the same guy?
This guy’s code once fired a 125 mph knuckleball a foot above a 10-year-old kid’s head. Probably not the same guy.
./clears_throat.sh
The engine doesn’t suck. I do. I suck.
I prefer the term “spite-driven development”.
I wrote an SDL replacement but worse after SDL refused to work with audio streams for me even after a week of googling, it took me the same amount to get it work with WASAPI directly as looking up audio streams, instead of the many easymp3playback.dll type solution. Another one week was making ALSA working. At least it’s in D, so I have an easier time with development.
I also almost was involved with a YanSim clone development called “Love Letter: My True Feelings”, but shit just started to hit the fan (character designer just left), so I decided to not get involved as a coder.
Vibe coding in assembly.
I tried vibe coding a simple assembly program and it couldn’t do it
I’m still waiting for the day we get a proper alternative to JavaScript.
If I had to make one, it would have a Bash-like syntax
Speaking of coding out of spite, is nobody going to mention that his C code features a
struct
with over 20 fields in it?Oh man. You should see the source code for IOS (the Cisco one not Apple).
Spent 5 years working on it out of college. I think it’s the most cursed code base you can imagine.
Not necessarily because of the massive struct defs everywhere. They are kinda needed when you’re running an entire OS as basically a set of interacting Linux processes pretending to be an OS.
At some point Cisco realized they could not compete without putting a Linux kernel as their base. So they basically just copy and pasted the old code written in the early 90s for the IOS and put it into a set Linux processes.
To be clear. It’s not just the front end. They didn’t really change the code much from the old IOS. Its a cluster fuck of interprocess communication hacks that probably seemed like a good idea at the time.
It is a massive pain in the ass to code because you’re basically doing everything on the Linux kernel and then frustratingly have to write the CLIs for IOS just so Cisco can continue to sell their proprietary OS with some of the most unnecessary hardware locks. Massive learning curve for any new engineer.
Literally, no one on the entire switching team knew how to send a message from a specific process to the IOS process. I had been assigned something that needed it. So I somehow figured it out and was “the guy” for that for the time I spent there.
Fuck. I’m gonna start ranting more if I go any further. But yeah, sometimes you need a massive struct because some idiot decided that forcing a closed source CLI on the market is a good idea for profits.
Definitely not a good idea for coding. But you learn quickly that no one actually cares about good code in this industry. There is no time for it. There is no reason for it. Just spit out garbage until it works and your manager won’t care.
If you want clean code. Go write an open source project or a personal project.
I used to work for Cisco but I can’t say what it’s like internally. Not because of an NDA but because I literally have no idea. I worked for a much smaller competitor of theirs that they acquired, obviously just to remove a competitor from the marketplace. We were all allowed to work remotely but given nothing at all to do for six months and then everybody (except the executives, of course) was laid off.
Literally just had the same thing happen to me. This time at Microsoft. Worked for a small startup. It got bought out in 2023 after investments in actual hardware that wasn’t named Nvidia died.
Layoffs on most of our engineers. Somehow I survived and basically did no work for 2 years. Was finally laid off.
I hated it. But I basically stole a salary from Microsoft for two years. Fuck these big tech companies.
Sometimes you can’t not have a god class (struct in this case). When doing UI specifically, I always end up with one.
You can try using encapsulation to reduce the amount of fields technically, but in the end it’s the same amount of information in a single god class.
That’s not uncommon, is it?
Not really, but I’d probably try to organize those into sub structures where it made sense. A data structure holding the UI state and FFT data all flat is kinda messy imo since it becomes unclear what is actually required where.
You can tell there ought to be substructures because he used comments to label the different groups. That’s a code smell right there.
Agreed
It is spite coding though.
He probably has a bunch of gotos too.
Yeah that’s what I usually do, as long as it’s passed by reference there isn’t anything too bad here.
That’s the
State
struct. Globally accessible, I’d bet
What’s this dude talking about?! Everyone knows no one hates React like people who code in React 😂 No one is gonna get pissed off watching this.
I used to be a React dev. The only thing I hated more than React was my boss.
I remember years ago when React was the savior of web apps Swooping in engineers from the clutches of JQuery and AngularJS (not to be confused with Angular 2+). Components we’re gonna make things simpler than the mess of JS files and global state.
And generally that’s true but we’ve traded that off for a mess of hooks and 700 line nested functions in nested functions and obtuse rules that only apply to react and not JS.
Complex web apps are hard.
Do React devs really hate React?
Isn’t the adage that you either have haters or no users?
I think it’s great and I’ve been working with it for 6 years. Many issues were resolved over time. We didn’t even have hooks back when I started! Those were dark times. And the new compiler helps with memoization.
I don’t, but it can be really annoying when I accidentally fall for a common trap that I supposedly know how to avoid after all these years! Gah.
This reminds me. I got a search engine to build.
I love this guy he’s a fucking freak of nature
laughs in Vaadin
Umm this is just being retro. Like using a film camera.
Raw film is objectively higher quality than raw digital. Are you saying that C is objectively higher quality than Rust?
Excerpt film isn’t objectively better…
That’s what your original comment was eluding to, so I was confirming with you that that’s what you meant.
Data visualization ≠ UI and signal processing is traditionally done in C
That looks like buttons in the thumbnail, on the left of the visualisation.
I’d say that’s enough to call it UI.UI. User Interface. The bridge between a system and a user. So anything, literally any information transfer from the user to the system OR from the system to the user, is a User Interface.
A definition so broad as to be useless.
Is it a UI when someone calls memcpy to move data from a file to a screen buffer?
why would you take the least charitable interpretation? there is no need to be hostile.
and the answer, of course, is that it can be, as long as the information copied is meaningful for displaying to the user.
you’re basically asking the equivalent of whether putting things into an array is an algorithm, which of course has the answer “it can be, depending on how you put it in”. so basically, the operation you’re highlighting is not the point.Not it isn’t.
A command line literally is a UI.
You seem to be confusing GUI and UI?
You seem to be confusing C stdlib with a CLI?
This isn’t hard, you’re just trying to make it to be.
Memcpy from a file to a screen buffer is as much a UI as pouring water in a pot is a soup.
I did not make this definition. However, this does not give you the freedom to make up your own definition and treat it as a fact. Don’t spread wrong information.
I’m going to go with no, since that step is not transferring data to a human, it’s transferring it internally within the computer.
UI can refer to either the medium, such as a visual display, speaker system, or keyboard, and it can also refer to a specific layout of information (like the Qwerty layout, or a webpage layout). I wouldn’t consider the USB protocol UI just because it can transmit HID Events, only the keyboard or mouse as a whole is UI.
You could almost call HID events UI, but I’d still argue they’re more of a computer-device interface than a human-device interface
Would you agree that the dashboard of a car is UI? If so, isn’t that just data visualization?
Dashboard is a UI fed by signal processing code which is the backend.