Coders Notes is a programmer's personal blog on game development, low-level code, compression, operating systems and computing history.
Commenters recommend his TempleOS essay and his explanation of Deflate, which one calls an elegant pairing of two algorithms.
I've spent the last seven years working on video game middleware and have had plenty of experience to many development environments. I've spent years developing for Windows, Linux, and Mac OS, and worked on every console that has been available on the market in that time.
GDB is different, but it's different in a bad way. Jonathan is completely correct in that it's a much worse experience because it doesn't easily give you the information you need to consume in order to find the problem you're looking to solve. Using the text user interface helps considerably but it still gets in the way. Sure, seeing source is fine, but what if you want disassembly too? Mixed source/assembly? Register view? Watches? Switching between threads easily? Viewing memory? DDD is an improvement but it still feels like it's 8 years behind. I'm glad to hear you're productive in that environment, most people (especially most game developers) aren't, and based on my experience getting people up to speed and fixing problems it's easier to get them going on Windows than on Linux.
That said, it's not the worst though. Green Hills takes that crown by a country mile.
The SN Systems debugger for PS3 is the best one I've used, bar none. It gives you all the data you need, is responsive, and has a few really nice features (write memory region to disk).
Not quite sure why you used gcc for PS3, SNC is far superior. It's faster at compiling and generates both faster and smaller code.
Both sed and grep are…
It seems like commenters here on HN are caught on the point that GDB does provide a reasonable machine interface. That's not the author's point; responding specifically to that fact is missing the forest for one mis-labeled non-tree.
Here's two paragraphs from later on that sum much better:
> We've seen it hundreds of times in all kinds of software. Functions that return bool instead of an error code. Where did the precise error vanish to? Poof, it's gone! What used to be a useful error message became false, and if you're lucky you'll get a generic "Unexpected error" appearing on screen. And that's if your program is using a library. If it's calling out to a command-line worker, the most likely case is it won't get checked at all and will just get printed out into a log file you'll never find, and then never seen again.
> (image) Homer's typing bird: http://www.codersnotes.com/notes/something-rotten-in-the-core/pecking.gif
> We're making systems that are fragile, because they're just glued on rather than bolted together. We're wrapping complex things up a wrappers that don't take the same responsibilities as the things they rely on. Like Homer's pecking bird in the Simpsons, they work just fine when everything is as expected, but when the slightest change in situation happens then everything breaks.
I think the article is worth reading in full.
I write on my own website, where I scream into the wind endlessly like an elderly person shaking his fist angrily at passing clouds. I don't believe anyone reads any of it but I find it helps me get my thoughts in order.
It's hosted on DreamHost. It's all custom, I glued it together with Markdown, CSS, and a little Python. I've been with them for years and I can still recommend them. I'm not sure the exact location matters though. Success comes not from the venue but bringing an audience.
Also the key to successful self-promotion is to spam your own stuff tirelessly until the heat death of the universe, so here we go:
http://www.codersnotes.com/notes/why-build/
Quite frankly, the W3C stopped having any say on the matter when the WHATWG supplanted the XHTML standard with the HTML5 committee.
They had enough weight at the time to say "The Web is XHTML2, you can make your own internet if you want " compared to what they can bargain for these days.
Maybe at the time it was a somewhat reasonable decision to abdicate their responsibility over to big internet companies, but that's what brought us to the current state where we're basically going back to original version of The Microsoft Network[1].
[1]http://www.codersnotes.com/notes/the-microsoft-network/
I loved this article on the elegance of deflate http://www.codersnotes.com/notes/elegance-of-deflate/ finishes with this:
It's not one algorithm but two, that dance and weave together in harmony. You can pick dictionary matching, or entropy coding, and you can select between them on a per-byte basis with no overhead. That's what I find so clever about it - not that it can do one thing or the other, but that it can choose either, and yet represent them using the same language. No extra markers, nothing to say "oh, now we're switching to entropy mode", nothing to get in the way.
TempleOS has many interesting features, but remember that TempleOS is rather different at a very fundamental level.
Meaning, both kernel and userland run on a privileged ring, the file system has no permissions, etc. This is not a flaw but it is rather by design.
This is a paradigm that might be incompatible to that of Linux.
However, I think there is potential for porting things. Some good articles about Temple OS are:
- http://www.codersnotes.com/notes/a-constructive-look-at-templeos/
- https://www.jwhitham.org/2015/07/porting-third-party-programs-to-templeos.html