Handmade Network»Blog

[News] Special Event Stream Date/Time

Hi, folks!

The vote results are in, and in accordance with them, I've made the decision to have the stream on August 19th at 6:00 PM PDT. Don't miss out; we'll be having a discussion about Handmade Network and a special appearance!

If you cannot make it, it's no problem; the stream will be recorded and uploaded later for your viewing leisure.

That being said, I'm so excited to see all of you there!

Stream Date/Time: August 19th at 6:00 PM PDT
Stream Location: On the Handmade Network home page or here.

(Here's a web timezone converter, thanks to AsafGartner)

Asaf Gartner,
This thing seems to work for timezone conversion: https://www.timeanddate.com/world...sg=Webcast&iso=20180819T18&p1=234
Simon Anciaux,
Maybe I should have verified the time conversion at the time of the vote. Now that's 3am for me.
Anton Swifton, Edited by Anton Swifton on
Triple thumbs up for project-based education. You mentioned it several times, but I'm afraid that it will be forgotten and lost among other things, so I will make a big comment about it to start a more concrete conversation.

Abner made a pretty good point that projects on HMN are themselves education. They may not always result in educational content or even usable software, but they make the author a better programmer. (And if HMN provides education, it doesn't necessarily mean providing educational content.) I think that going through the experience of working on an HMN project may bring more educational value to some people than following all the lessons we could have made.

There are many things that could be done to make project-based learning more feasible on HMN.

First, explain to the public that beginners can make projects. Right now HMN doesn't have a clear description of who an author of a project should be. Many people probably think that authors can only be people with enough knowledge to make Handmade Hero, 4coder, or some other large project.

Second, encourage exchange of knowledge and attention between authors: it will make people more committed to their projects. A feed of replies to user's comments and posts would help a lot. A more difficult question would be, how to let people engage with other people's projects without having to spend too much time and attention doing that. Everybody is very constrained in time and attention, and we don't want to be wasteful with it. (And we absolutely can't afford to be as wasteful as mainstream social networks like Twitter.) This is an open question, I don't have an answer yet.
Anton Swifton, Edited by Anton Swifton on
Third, can HMN make people with knowledge and experience interested in passing it to junior people? You said that those who do it now, do it only for its own sake (which can work). However, if teachers can benefit from teaching, it will result in higher-quality education and generally a better system. So what can we offer? We know that they are busy people. (Not my personal observation. For example, Jon Blow said multiple times that this is the main reason why you don't see a lot of high-quality tutorials.) Can we make them less busy? Are there projects that they want to work on but never get around to do it? If so, they can submit projects and invite students of HMN to work on those projects under their supervision.

This system already works in academia. It's debatable how applicable that experience is to the HMN situation, because academia also has a peculiar system of incentives, but it's something to learn from. Professors don't sit down with a pen and paper, and they don't wash test tubes. They usually do things like this:


I'm not claiming that there will be a lot of experienced people interested in this type of work. However, it will probably be more than just people educating for vanity or for its own sake.

Professors also get paid for their work. You laughed at the prospect of paying educators, presumably because HMN doesn't really have money. Does it have to be this way, though? Are you completely dismissing the possibility of applying for grants and raising funding? Or the possibility of giving supervisors a share of revenue if the project is commercial?
Anton Swifton, Edited by Anton Swifton on
Ben brought up the topic of what Handmade education would look like. We actually talked a lot about it when we were just starting with lessons, but now I have a somewhat better understanding of what it could be. If you formulate what HMN fights against, and cut out all parts that have something to do with software, you will get something like this:

Pervasive views and practices that yield poor results.

People in education have been thinking about this for quite a while:

In short, current system of education was created mostly in the industrial age, with the industrial mindset, was later corrupted by inferior thinking, and needs replacement badly. What should come to replace it? That's an open question, and it's up for debate. I gave you part of my perspective: project-based education looks like a promising paradigm. More generally, I think that everyone who tries to teach should think of it in terms of people, not subjects or material. You aren't trying to create knowledge and put it on the website. You are trying to take your students from one point on the mental landscape to another. And it's best to start by trying to understand the people who come to HMN, where they are and where they want to go.
Abner Coimbre, Edited by Abner Coimbre on
You aren't trying to create knowledge and put it on the website. You are trying to take your students from one point on the mental landscape to another.

Ding ding. That's a useful way to conceptualize it.

I want to reiterate what I said in the stream, because it is increasingly important we keep this in mind as low-level folks decide on messaging, education, and presentation.

(1) The low-level stuff is finite: The fundamentals are well-established and following industry progress at the hardware-ish level is easy once you've mastered the basics.

On the other hand, there are endless high-level APIs to interact with, and knowing little beyond function calling and parameter-passing puts anyone at a disadvantage. To be fair, trusting Ruby on Rails with limited understanding saves A LOT of time, and it's productive for many developers, and we can't deny that. I appreciate why most of us would go this route, and I'm not picking on Ruby devs. My problem with that over-reliance, though, is that Rails may be subsumed by any other framework, and we would probably not be able to implement missing functionality if pressed to do so by managers. Thus—and here's my point—we end up with the situation where an engineer claims it's impossible to add X feature, because the technical constraints "are too high." That may be true, but often it's just lack of lower-level knowledge. And most managers would believe them! Because we're the engineers! And now we're slowing down actual technological progress.

It would be nice if more and more of us are capable of at least partially implementing a framework ourselves.

So, I know it's practical to prefer learning an Android SDK plugin over, say, studying PC-relative addressing to compute some effective memory address (actually this is immediately useful for compiler writers, because an ELF relocation entry may specify this type over absolute addressing...). It's the same class of problem people face when they're told to study philosophy and to grapple with abstract concepts over many years, as opposed to just getting life advice from a friend (who may or may not know any better). However, if the person is serious, they may come out ahead. Successful people, and those in power, often cite old philosophers and their ideas as influential.

(2) Perception Matters: AFAICT the where, how, and when a message is presented is crucial to its acceptance. Handmade Hero succeeded, in part, due to a confluence of Twitch promotion, influential friends, personal expert knowledge, charismatic personality, and a well-packaged presentation. Seeing all of that strike a chord is what allowed an impressive number of people to even recognize that it's OK to peek behind the curtains of software.

So let's say that this is our message: It would be nice if more and more of us are capable of at least partially implementing a framework ourselves.

How can a community of low-level programmers present that? Once people are convinced, they've been "taken from one point on the mental landscape to another", and we will have succeeded.

(8/30/2018) EDIT: Typos; trivial edits.
Abner Coimbre,
(Re: Education) There's a time-constraint problem, too, among experts and influential people willing to help. I'm far from an expert or influential, but it took me a good 4-5 days to write my previous reply to Anton. And that was just a blog post comment! In general, the mmozeikos and the simons of the world are rare creatures, and not the norm.

Securing more funding is helpful. Small cash gifts to volunteers, or paying a programmer veteran for mentorship for a Handmade project. Maybe continuing promotion of the Handmade Fund is worthwhile? Should that be a focus? Why, or why not? Etc. It's OK to galvanize the goodwill of volunteers, but then realistic expectations must be set as a result.
Oliver Marsh,
thumbs up for the project learning as well. i think having some sort of list of projects that an experienced person would like/see and give guidance on (like Casey and the debugger) would be great.

I think some lower stake project system would be good, where you show the source code and is commented well and maybe some extra resources, but I think making it to rigid makes people over think things and their best doesn't come out. something like what quikstart is to kickstater (smaller projects). similar to the thread at the moment about making something each month, and there could be teams. I think reading source code with context seems to be very beneficial for learning.

regarding the short time allowance that experienced people have. I think overlapping the two as much as possible. i think job blow releasing the game engine code with the compiler, and libraries with example programs is something like this.
Oliver Marsh,
thinking about the lower stake projects, it would be cool if there was a library/collection of small projects ranging from a 100 line command line program to retro games to a small language parser. and for each project have a quick video or screen shot of what it looks like, a summary of what you might learn and the source code and exe. you could search based on tags or topics to find the projects. This would give a low barrier for creators (don't have to think about a curriculum or prior knowledge). And I think with an emphasis on having smaller projects makes it easier to read the source code as opposed to a full 3d engine source code. then the reader could piece together there own learning journey.
Anton Swifton,
I feel like convincing people that it's nice is only the beginning. They also have to learn all that low-level stuff, and it's not an easy walk. It may be less learning in the long run because the low-level stuff is finite, but in the short term it's actually way more difficult than reading a couple of tutorials on a framework. Especially if you aren't a computer enthusiast, but only want to get a quick result.