Handmade Network»Blog

[News] What do *you* want to see on the wiki?

Handmade Folks,

The news remain the same as the previous one -- and we're also streaming education staff meetings weekly (previous one here). So today I'd like to make a request:

Handmade Content

Each software project on the network will have a dedicated wiki for themselves. They will decide what goes in there -- usual common sense caveats apply (NSFW things, vicious attacks on any individual, etc.)

However, Handmade Network will display a sitewide wiki, and we'd like suggestions on what to have shortly after release. Here are some examples already given and mentioned on Patreon: (1) documenting API irregularities in MSDN, (2) central list of OpenGL bugs, (3) detailed schematics (think IP / TCP) and sample implementations of protocols, etc.

You can make a comment here, start a dedicated thread, or contact us directly.

This is Meaningful

You might think your suggestions may be "too dumb" or "everyone probably already suggested this." Suggest anyway! You'd be surprised how many lurkers are around because they're afraid they'll be seen as someone who doesn't have programming foo. We're doing this to help everyone learn and grow in the handmade space.

Obliged,
Abner
Mārtiņš Možeiko, Edited by Mārtiņš Možeiko on
"API regularities in MSDN" ? What do you mean by regularities?
Abner Coimbre,
Hehe, fixed.
Martin Fouilleul,
How about a comparison of system APIs for different platforms ? (eg. how to do file IO, manage threads, get inputs, on Mac/Win/Linux). It would be great for project owners wanting to port their stuff to platforms they're not familiar with.
Martin Fouilleul,
Code reviews of open source libraries / engines by people who used them or contributed would be great too ! (but time consuming for sure) It would help users to understand what they're using, and also encourage to read code.
Histories of an api and how it influenced the current version. (Yes like my writeup on vertex attributes in opengl).

Understanding the reason for seemingly dumb decisions in an api helps me a lot to understand what to do because then I can keep things in perspective with regards to what technical debt I'm working around.

It usually means I'm more lenient for that api and less likely to rant against it.
What about listing different implementations by concept - by means of projects on HMN? What I mean by that is for example you have a section 'string buffers' and there you have different implementations from projects and their pros and cons, notes and what they've (project owners) considered when making and why they did/didn't stick with it. That could make decision making and exploring faster for someone who is new to that branch of problems. There exists something similar at this point in time - project updates and news (forums), but making it easier to navigate and search would be pretty nice.
Simon Anciaux,
- A subject on memory management: stack, heap, virtual memory, allocator, cache, memory alignment, struct layout, calling conventions...
- How to use a debugger / How to debug / introduction to debug tools (CPU and GPU)
- "Famous" programmers are not geniuses, they worked hard for a long time (and you can do it)
- When is it time to share a project / publish a library and what it entails.

If it's good enough, my post on keyboard inputs
Tristan Dannenberg, Edited by Tristan Dannenberg on
mrmixer
- A subject on memory management: stack, heap, virtual memory, allocator, cache, memory alignment, struct layout, calling conventions...


On that note, different techniques for manual memory management (i.e. different types of allocators), when/how to use them. Most of my C code gets by with statically allocated memory, in part because that's enough for my hobby projects, in part because I couldn't find any such resource.

More generally, I'd like to have pages on high-level language features; what problem they are intended to solve (if we allow opinions on the wiki, this should also include a section on whether they deliver on that promise - with justification, of course), how they are implemented and what the implications of that are for performance. I'd be willing to put some time into writing some of these myself.
I think a section on programming concepts and c implementation details would definitly be useful.
How about a forum page for concept request.
Each sub-topic could then be linked to a forum page for further discussion and improvements.

I imagine it could go something like this:

1 Someone posts on the request forum "How to do x"
2 Someone with experience on that topic creates a wiki page on that subject.
3 On the forum page for that subject, people discuss alternative, pro and con, corrections.
4 The Wiki page is updated to correct errors and include other methods.
5 goto 3 :)
Corey Parsons, Edited by Corey Parsons on
I would love to see a page on C/C++ metaprogramming. Not much has been said about CaseyLang despite Casey saying that he almost exclusively uses it at work. I understand Handmade Hero has already covered introspection but it would be nice to see a write-up of appropriate ways to implement code generation / injection, and what higher level problems could be solved with this type of programming.
Abner Coimbre,
Jotting all these down. We'll be discussing these and suggestions given to me elsewhere on our streams. By process of elimination (not necessarily permanent elimination!) we'll pick the ones we should prioritize first.

Keep 'em coming!
Connor , Edited by Connor on
It's been a long, long time since I've been on here. I just wanted to shout out to everyone working on handmade.network because it's come so far since I was last here.

I miss Handmade Hero, and those glory days, when I accidentally tripped onto the stream. Casey was just setting up dsound. Can't wait to start watching again.

I agree with Martin's suggestions, a comparison of APIs would be cool.

P.S. Abner, do you still like chocolate wine ;)
Connor_Rentz
It's been a long, long time since I've been on here. I just wanted to shout out to everyone working on handmade.network because it's come so far since I was last here.

I miss Handmade Hero, and those glory days, when I accidentally tripped onto the stream. Casey was just setting up dsound. Can't wait to start watching again.

I agree with Martin's suggestions, a comparison of APIs would be cool.

P.S. Abner, do you still like chocolate wine ;)


hmh is still going on, just in the weekends now.
Martin Fouilleul, Edited by Martin Fouilleul on
Hello !

After watching the vod of the educational stream I realize that "code review" in my comment wasn't probably the right word. I was rather thinking about something like fabien sanglard's blog posts where he gives an overview of the architecture and underlying decisions of various engines/libraries...

From a user perspective it could be useful to have such a high level overview, especially if the documentation is only a reference of the API. And I think it could learn people to read code from outside their own codebases, which is (I think) a good habit to encourage.

Abner Coimbre, Edited by Abner Coimbre on
Oh, I see! I didn't mean to actively misinterpret what you wrote.. I guess we all got caught up with the conventional "code review" where coworkers criticize each other's submitted code.

This is a much better suggestion.
Anton Swifton,
How to program networking in games.
What makes an API good or bad.
The proper way to make GUI, if there is one.
How to do web programming without frameworks.
David Butler,
This may sound mundane, but I think something that would help out newcomers would be a guide on how to ask good questions on the forum. It seems that most of the first time posters require a bunch of follow up questions for info that probably should have just been part of the original question, and this causes a bunch of unneeded round-trips... I have a couple specific items in mind, but I think It would be easy to build a list by just going through old posts...
Ben Visness,
Croepha
This may sound mundane, but I think something that would help out newcomers would be a guide on how to ask good questions on the forum. It seems that most of the first time posters require a bunch of follow up questions for info that probably should have just been part of the original question, and this causes a bunch of unneeded round-trips... I have a couple specific items in mind, but I think It would be easy to build a list by just going through old posts...


I like this a lot. It makes sense for the overall network wiki to have information about the network in general.
A github tutorial!!
(please...)
Mārtiņš Možeiko, Edited by Mārtiņš Možeiko on
github or git? I'm not sure how github can be difficult? Just click buttons around to browser repo or create issues/wiki pages and pull requests. What else is there?
Raytio,
More text based breakdowns of the game engine programming techniques covered in Handmade.
It would be interesting to see an explanation of C++ language features in terms of how the equivalent functionality would be implemented in C and how they are actually implemented behind-the-scenes by the compiler (usually these are pretty similar). Figuring out this information for myself removed a lot of the confusion and mysticism surrounding C++ (and other object-oriented languages), but I had to accumulate it piecemeal, because I don't know of any existing central resource that explains these sorts of things. It seems like a lot of people, especially other beginners, have a hard time finding this kind of information as well.

It might also make sense to have behind-the-scenes information about how features are implemented in other high-level languages as well, besides just C++.
Andrew Bromage, Edited by Andrew Bromage on
hazmat_suitor
It would be interesting to see an explanation of C++ language features in terms of how the equivalent functionality would be implemented in C and how they are actually implemented behind-the-scenes by the compiler (usually these are pretty similar).

I like this! But I wouldn't just talk about how to implement it in C, because there are a few C features which might also be useful to know about too.

Off the top of my head:

  • Calling conventions (including this and varargs)
  • Virtual calls
  • Basic inheritance: construction, deconstruction, static casting
  • Advanced inheritance: dynamic casting and RTTI , multiple inheritance, virtual inheritance
  • Exceptions and stack unwinding
  • Linking and loading (e.g. relocation, dynamic linking)
  • Templates and the One Definition Rule
  • Static initialisation
  • Thread-local storage
nj,
I'd like to know how to do QT stuff the handmade way, how to set it up so it will act only as GUI library and not infect too much of the program's logic.