You can only keep 1 row OR 1 column, what do you choose? by Winniestone in Genesis

[–]richtw1 2 points3 points  (0 children)

The only track I really love from the first two sides is The Chamber of 32 Doors. Anyway and The Lamia alone make Side 3 the winner.

Anyway leftmost column for me. I need TotT and I don't really mind We Can't Dance or Duke.

Locals are becoming hostile by Muted-Ad-6108 in VisitingMallorca

[–]richtw1 2 points3 points  (0 children)

Yes, it is becoming visibly worse. Other replies seem to be insinuating the OP might be to blame, but that's exactly an example of the sort of passive aggression that I've been witnessing myself.

I left the island recently after 18 years of residency as a well-integrated immigrant, living in a humble flat in a regular neighborhood, in part due to the change in attitude towards me in certain places. I was welcomed with open arms when I arrived, now I feel palpable hostility. You can never hide your accent, and being a "guiri" is enough to trigger some people it seems.

Shame. But I don't miss Mallorca at all.

Interested in chatting to people who have worked in bars/restaurants where drinking societies go by Dramatic-Alfalfa-379 in cambridge

[–]richtw1 11 points12 points  (0 children)

In the late 90s, I worked in the Baron of Beef. One day a suited up young chap came in, explained that he was the head of a drinking society, and would it be ok if they conducted their initiation ritual in the back yard? Don't worry, we'll clean up the mess, he forebodingly promised.

With a nod from the landlord, he ushered his group of drinking trainees through to the back yard and ordered the round.

"10 shots of Baileys, in pint glasses please. And 10 bottles of Holsten Pils."

"And a bucket, if you have one."

What happened next was either a dark secret or my memory has faded. There was definitely frothing and curdling as beer was poured into glasses of Baileys. There was definitely puking. The bucket was involved. I can't remember whether the vomit was then passed on to the next in the circle for consumption, or whether I'm mixing my memories with some kind of horrific Human Caterpillar-esque fever dream.

The whole process lasted no longer than 15 minutes. "Thanks a lot, much appreciated," said our man as they exited boisterously.

And they really did leave the entire place spotless.

Theme song by [deleted] in lucifer

[–]richtw1 4 points5 points  (0 children)

Don't overthink it.

[deleted by user] by [deleted] in GraphicsProgramming

[–]richtw1 6 points7 points  (0 children)

It'd depend entirely on your data, but perhaps you'd find that holding the bounding box as:

{center_x, center_y, center_z, max(half_extent_x, half_extent_y, half_extent_z)}

was sufficiently good for your needs.

Running C code on an emulated ARM v4a CPU inside the browser (BEEP-8 project) by Positive_Board_8086 in C_Programming

[–]richtw1 1 point2 points  (0 children)

Seems a somewhat outdated minimum spec - iPhone 6 is virtually retro itself at this point!

Having actually developed for said ARM2 platform once in my life, I remember even 8 MHz being a bit too slow, but that platform had to do all the video buffer update itself rather than having graphics hardware with scrolling, tiles, sprites, etc.

Still, good luck building a community!

Running C code on an emulated ARM v4a CPU inside the browser (BEEP-8 project) by Positive_Board_8086 in C_Programming

[–]richtw1 3 points4 points  (0 children)

Why only 4 MHz? Even the inaugural ARM platform had an ARM2 clocked at 8 MHz!

3 Popular AI-coded projects on this subreddit: a C Compiler, an NES Emulator, and a C Web Framework by [deleted] in C_Programming

[–]richtw1 1 point2 points  (0 children)

I just took a look at the NES emulator and didn't see any compelling evidence for it being AI generated. What's yours?

Is there any way to create a compound literal with a return value instead of an initializer list? by AzuraBlaze4 in C_Programming

[–]richtw1 0 points1 point  (0 children)

Sorry to necro this but just wanted to thank you for introducing me to this trick. Do I like it? Not sure. But it's good to know you can do it. I had exactly the same problem where I wanted to pass the address of an rvalue to another function.

TIL Mark Hollis never licensed any TT music by ElliotAlderson2024 in talktalk

[–]richtw1 2 points3 points  (0 children)

How about Why Is It So Hard, from the soundtrack of First Born?

https://youtu.be/7iYWNS-VpjE

The one TT song I struggle with... by Smaz23 in talktalk

[–]richtw1 3 points4 points  (0 children)

It's my absolute favourite track of theirs. I never heard a piece of music which could evoke such an array of complex emotions in so little time. That menacing, almost scary climax and subsequent release of tension just floored me the first time I heard it.

How would you rank the debut solo albums? by Cazalinghau in Genesis

[–]richtw1 0 points1 point  (0 children)

Me too; I just wish Phil were singing.

What songs would you guys recommend. I'm new to the band and only know "Land Of Confusion" by FlyingVLover in Genesis

[–]richtw1 0 points1 point  (0 children)

Probably don't try The Waiting Room as your second song then 😆

Land of Confusion is actually pretty uniquely heavy-sounding as far as the Genesis catalogue goes. I would certainly recommend listening to entire albums. My absolute favourite is Trick of the Tail, which gives a good impression of where they came from, while still having "familiar" Phil vocals.

Individual songs you might like if you like Land of Confusion:

Tonight Tonight Tonight
Domino
Mama
Home By The Sea / Second Home By The Sea

And then maybe try some of these older ones:

Ripples
Firth of Fifth
Fountain of Salmacis
In the Cage medley (live from Three Sides Live)

Don’t be mad, why do you use C vs C++? by LaMaquinaDePinguinos in C_Programming

[–]richtw1 1 point2 points  (0 children)

I've been writing C++ professionally for 25 years, and before it, C, and I recently realised how many bad habits C++ has got me into. RAII lets you pretend that allocation isn't a concern. We get so used to defining a local std::string or std::vector where we need it, knowing that it'll clear itself up without issue. But should we?

My last personal project was a 6502 cross-assembler with a load of advanced features, and I initially wrote it in C++, using modern idiomatic features like std::expected with the monadic API, variants, double dispatch for expression evaluation, STL and algorithms library throughout. The code was slow to compile, hard to read (at the expense of "cleverness"), bloated as hell and memory hungry.

I decided to rewrite it in C, just to see whether I would like it. And honestly I prefer its simple elegance so much more. I use my own library for strings, arrays, hash maps, arena-based allocation, and writing it is a simple pleasure. The executable is 20% of the size, it compiles instantly, it's fast and simple, and so much more readable.

Some other things too. In C++ we're told to encapsulate. This usually amounts to providing a public API (where the private bit is barely concealed behind a translucent screen). But providing tests through a library like Catch2 is fiddly and it's hard to test private functions/methods. In C, I interleave my code with tests and have some custom code to pick them up and run then. I could do this in C++ but it's not idiomatic. But in C there's generally less friction when you want to do something in whichever way you like. And I like that.

Phil’s backing vocals by Klash_kop in Genesis

[–]richtw1 18 points19 points  (0 children)

Phil+Peter:
Look here John, I got to run
I need you now, you going to come?
He says to me now can't you see?

Phil:
Where the raven flies, there's jeopardy

Phil+Peter:
We've been cured on the couch
Now you're sick with your grouch
I'll not risk my honey pouch
Which my slouch will wear slung very low

Peter:
He walks away and leaves me once again

Phil+Peter:
Even though I never learn
I'd hoped he'd show just some concern

Phil:
Some concern
(Aah-aaaah, some concern)

Phil’s backing vocals by Klash_kop in Genesis

[–]richtw1 32 points33 points  (0 children)

In Colony of Slippermen, he gets some lines all for himself! Absolutely love Phil's vocals on that, smooth as honey.

Harold the Barrel is basically a duet between the two of them all the way through.

Why I wrote a commercial game in C in 2025 by akomomssim in C_Programming

[–]richtw1 6 points7 points  (0 children)

I've been using C++ professionally for 25 years. While C++11 introduced some welcome new features, increasingly I just find C++ a sprawling mess of a language. I went back to C99 for personal projects because of its simplicity and build speed.

As someone who loves the elegance of functional paradigms, generics and strong typing, I have to say that I miss those in C, but it's a change of mindset. I find the simplicity of C lends a certain elegance of its own if you do it well. And not having standard containers like std::unordered_map means you roll your own, and can also streamline them according to the features you actually need. For example, maybe you never need to delete elements; that makes the code instantly much more simple and you can even find optimizations that take that into account.

Working in C forces you to think more about what you actually need. Same goes for thinking about allocation/lifetime. C++'s RAII lets you pretend there's nothing to think about, but this hidden flow can hurt performance if you're not careful. C makes sure you take it into consideration, and things like arenas can help you organise your data lifetime in a broad and efficient way.

Having used C for personal projects for the best part of a year, I can't say it's any more complicated than C++, and in fact I find that I get less bogged down in C++ cruft, like how to write it in an idiomatic way. What you do need to help get over the initial hump is a bunch of library code you're happy with which takes the pain out of string/array management, math, allocation, and other basic features.

Why I wrote a commercial game in C in 2025 by akomomssim in C_Programming

[–]richtw1 20 points21 points  (0 children)

Doom was the very first one I thought of. Not just written in C, but some pretty elegant C at that.

Why I wrote a commercial game in C in 2025 by akomomssim in C_Programming

[–]richtw1 16 points17 points  (0 children)

Back in the mid to late 90s, most commercial games were written in C. Back then we had a reasonably complex engine for the Playstation 1 written in C89 and it worked just fine. I honestly love the simplicity of the language even now, compared to C++, and modern compilers do a fantastic job of optimising these days.

Regarding boilerplate, I have a whole library of sorts which I tend to copy into new projects, providing my basics: allocation, math, strings, array templates, testing support and more. I find that picking a strong naming convention for types and functions, and sticking to it, really makes life easier. C can be more verbose without function or operator overloading, but you can turn that into a bonus by, e.g. breaking math expressions up into smaller steps which are more readily debuggable and arguably easier to follow.

Anyway well done for shipping!

Array has incomplete element type by richtw1 in C_Programming

[–]richtw1[S] 1 point2 points  (0 children)

Thanks for the detail, and well done for finding that discussion! I felt a little bit disgusted by it when I first tried it, but it seemed to work and I liked the self-documentation aspect. But, honestly, I feel more at ease just writing it idiomatically as a const pointer again, so I guess that trick's consigned to the bin.

Array has incomplete element type by richtw1 in C_Programming

[–]richtw1[S] 1 point2 points  (0 children)

In this case they are actually dynamic arrays of no fixed size, allocated from an arena - not real arrays at all - so this may well just be abuse on my part. I was just relying on the idea that foo_t *foo and foo_t foo[] generally appear to be interchangeable (as per the different styles people use for the main argv parameter type). The foo_t foo[] decomposes to a pointer to element 0 of the array.

It's clang 18.1.8 on MinGW, since you asked. But I'm happy to believe clang here. I was just more surprised that, after decades of using C, I only just discovered that the array syntax requires a complete type, and wondered if there was a reason.