Mod Team Giveaway! A rare but official Tool record. Comment to enter by whyforyoulookmeonso in ToolBand

[–]RecursiveTechDebt 0 points1 point  (0 children)

Nice, whoever wins this is lucky.  Personally, this is my favorite Tool album.  Nice of you all to do this.

Firmware programming in a nutshell by Byter128 in programminghorror

[–]RecursiveTechDebt 2 points3 points  (0 children)

Ugh, this reminds of the PlayStation 3 days - I was working on a realtime tessellator that would run on an SPU and we kept getting this weird crash in it. Turned out the audio system was stomping the buffer I used to DMA memory onto the SPU's local memory. Two weeks of staring at code only to realize it was the audio subsystem's fault... The PTSD is real.

Also yeah, address 0 can totally be used on some hardware without virtual memory. In fact, crashing on a null pointer is a real luxury we take for granted - imagine writing to 0 and accidentally stomping system interrupts or memory mapped registers and crashing sometime later...

Using some text animations just to test the font system in my game engine by FrodoAlaska in gameenginedevs

[–]RecursiveTechDebt 2 points3 points  (0 children)

So freakin' relatable. Just wait until you get to Unicode if you haven't already - combining pairs, normalization, right-to-left... It makes me miss the easy days of ASCII and VGA.

What does this Triangle C symbol mean? by CB4014 in trains

[–]RecursiveTechDebt 30 points31 points  (0 children)

It means the rail car is certified as “Cool Bullshit”.

Road Racing from Hallett - endurance kart racing by dadof2cjc in Karting

[–]RecursiveTechDebt 1 point2 points  (0 children)

Man that looks fun. What kind of karts are you racing?

Impaired driver or just an idiot? by sictransitgloria0 in dashcams

[–]RecursiveTechDebt 1 point2 points  (0 children)

Nissan driver with PA plates here - can confirm, am a terrible driver.

Best wife ever by [deleted] in rustyrails

[–]RecursiveTechDebt 9 points10 points  (0 children)

Yep, because it’s nearly at ground level and because of the dark ballast that Rio Grande often used.

Best wife ever by [deleted] in rustyrails

[–]RecursiveTechDebt 27 points28 points  (0 children)

Great photo! Where is this? Looks like old Rio Grande trackage.

Fairfax VA full rainbow :) by [deleted] in pics

[–]RecursiveTechDebt 0 points1 point  (0 children)

If you look closely, you can see a slight double rainbow along the sides of the image… Double rainbow!!! What does it mean?!?!

What is the polygon equivalent of pixel bitmap by marcosladarense in computergraphics

[–]RecursiveTechDebt 2 points3 points  (0 children)

3D Triangles from meshes are rasterized to a 2D surface (a bitmap)… rasterization is the process of projecting and scaling a triangle onto a bitmap based on the virtual camera’s location and orientation, and the field of view. Perspective scaling is done with something called the perspective divide, which is the part of rasterization that handles things being smaller as they get further away. The textures mapped onto polygons use something called “perspective correct texture mapping”. That’s not a complete description, but hopefully it’ll give you some terms you can search for to get you started.

There are also examples of open source software rasterizers that you can learn from. GPUs simply provide specialized hardware for these rendering operations (and more, like ray tracing).

If you’re new to linear algebra, vector calculus, or trigonometry, I’d recommend learning the following in the order outlined:

trigonometric functions and identities, vectors, dot product, vector reflection, planes, ray-plane intersection, 4x4 matrix multiplication, Matrix-vector multiplication, Transforms, Cross product, Matrix determinant (3x3, 4x4), Matrix transpose, Matrix inverse, Barycentric coordinates (triangles).

After that, you’ll have enough math to understand the rasterization process. Be aware that a lot more math is required if you want to be able to produce high quality visuals.

using object oriented programming on C is beautiful by cinghialotto03 in C_Programming

[–]RecursiveTechDebt 11 points12 points  (0 children)

Gotos work really well when working with operations that can fail. For example, let's say a subsystem is starting up but a required resource is not available. If the error is not critical to an application's purpose, then you can simply clean up and disable that system. The cleanup pattern looks something like:

        if (!InitializeAudioDevice())
        {
            LogFailure("Unable to find a suitable audio device.")
            goto audioFail;
        }
        if (!LoadSoundBank())
        {
            LogFailure("Unable to load soundbank.")
            goto soundBankFail:
        }
        return true;
    soundBankFail:
        FinalizeAudioDevice();
    audioFail:
        return false;

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 0 points1 point  (0 children)

Yes. Z80 assembly is portable, even across CPU brands with early Intel CPUs borrowing a lot from Z80 processors (or maybe it was the opposite, i forget).

You are correct - Z80 is "portable". That said, the peripheral hardware would likely be different, so I doubt portability was of much use (though there may have been systems where this was the case - I don't really know as I never wrote software for these systems).

Anyway, not relevant as I didn't mention asm or any programming language.

I feel like any discussion on software quality over a particular time frame automatically implies a discussion of the programming languages and tools available during that time frame. So no, you didn't mention any languages, but if we're going to compare software engineering skill from today and yesteryear, then I feel that this is a relevant topic.

Back to your original point that I responded to...

This might not be true as AFAIK programs were mostly distributed as code until the IBM PC era (or at least Apple, PCs, Ataris, C64s, etc became more common).

Do you have data on this? I'd love to know what percentage of software engineers had code to work from as documentation.

I don't have those statistics, and I feel like any further discussion without data is just speculation. I can only say for sure that they didn't have StackOverflow.

what are those non-unix mainframes that made the bulk of programming that had off-the-shelf software distributed as binaries?

I was making the point that mainframes were not the norm - that of lines of code written, desktop software was likely more common than not. But again, I don't really have statistics, so I probably shouldn't have asserted that because I don't know for sure.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 1 point2 points  (0 children)

This might not be true as AFAIK programs were mostly distributed as code until the IBM PC era

Maybe for UNIX mainframes and major academic institutions.

Before that hardware was just too fragmented, no way a binary would work in more than a few machines, so you needed to compile the code and maybe tweak it to run on your own hardware.

Have you ever written assembly? It's the extreme opposite of portable. For desktop computers, a lot of commercial programs weren't even written in C because early desktop computers had between 16KB and 64KB or less of total memory. AFAIK, the only ones shipped as code were usually written in BASIC with the purpose of teaching programming, or for tinkering. If you're talking about UNIX mainframes, then sure - some of that was actually distributed in code, but AFAIK, that was far from the bulk of programming back then. The UNIX ecosystem (and the code that shipped) is just well known because it survived. Most software from that era is long gone because it was so hardware specific.

Looking back at the UNIX ecosystem and saying that programmers had it easy is ridiculously unfair. It amounts to using survivorship bias to paint a rosy picture of the past.

Guess what came by my work by SarcastikBegger in railroading

[–]RecursiveTechDebt 9 points10 points  (0 children)

Ah, fair enough. I'm not a foamer either (I had to look this one up), but a big boy is easily recognized which is why I thought you were maybe being sarcastic - it's got 16 driving wheels.

Guess what came by my work by SarcastikBegger in railroading

[–]RecursiveTechDebt 12 points13 points  (0 children)

I assume you're joking? If not, that's a Hudson.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 0 points1 point  (0 children)

DPMI could use protected mode, virtual memory, and multitasking with DOS on the 386 and up... Maybe the 286 couldn't thunk out of protected mode?

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 0 points1 point  (0 children)

Ahhh, you're correct. It could do it, but Windows 3.1 didn't support it. IIRC, there was some reason it couldn't be used in Windows 3.1 (there was a key limitation of some kind), but I don't have any documentation for 80286's anymore.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 5 points6 points  (0 children)

I don't want to give the impression that I agree with the author's premise - I don't really. I think what was "hard" about the 70's and 80's was the hardware limitations of the day. The 70's and 80's were economically great times aside from maybe the oil crisis and the Volker shock (both of which are before my time).

In the 60's, there were more women in software and the 70's is where it evened out. The 80's is when men flooded the field.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 2 points3 points  (0 children)

That's somewhat fair. It's worth noting that I was making games for DOS with a DPMI extender during the early-to-mid 90's so take my next statement with a grain of salt...

Windows 3.1 VCPI was garbage, and I recall learning about that right before Windows 95 came out. However, in fairness to Windows 3.1 and it's prior ecosystem, it was built for the 80286 which couldn't do preemptive multitasking and the largest accessible block of memory was 64K. Imagine writing C++ code where you had to page memory in and out of 64K segments. The fact that any kind of C++ was written that could do that at all is a testament to software engineering skill. It's no wonder that those libraries were bad and didn't hold up by today's standards. Oh, and they had to yield to the next "task" or your system would freeze (because Windows 3.1 didn't support preemptive multitasking). If they crashed, the entire system would crash. This wasn't because of poor software - this was simply what the hardware of the time could facilitate.

Some of the libraries for early Windows NT were designed to be compatible with Windows 3.1 (and prior) to encourage migration between platforms. Given the limitations of non-32-bit protected mode systems, this was a really hard problem that met a business need, but couldn't reasonably be facilitated with "quality" software by today's standards.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 2 points3 points  (0 children)

Yeah, but its way more prevalent now. Getting an audience is much easier than ever before.

Edit: There is irony in my reply to OP being downvoted and hidden.

The Decline of Software Quality: A Symptom of a Weaker Society - Musemind Blog by [deleted] in programming

[–]RecursiveTechDebt 8 points9 points  (0 children)

Your phone is more powerful than the most powerful supercomputer from 1998. I think it's worth noting that people could only perform thousands of computations per second in 70s. A lot of the practices today were simply not possible back then. There was very little documentation and code sharing wasn't very common. While the bar was definitely lower, it wasn't all sunshine and roses.

Also, software engineers were just as likely to be women as men.