beneater
I fixed a number of the low-hanging a11y issues that you identified.
As for using modern web tooling, keep in mind there are many business and technical tradeoffs that go into any engineering decision. In this case, dynamically rendering the content makes it easier in the future to require aspiring hardware engineers to pass a test demonstrating knowledge of WCAG 2.0 standards before unlocking any educational hardware content.
But I've got a lot of other ideas too, so who knows...
The night zombie smartphones took down 911
Khan Academy adds apps for young children
Engineering career development at Khan Academy
Perhaps I could have saved even more than 15% if I'd just gone with it. :D
Does anyone know if sparklines are actually used that way? The only place I've seen really dense sparklines are Tufte's books. Most I've seen in the wild seem to have just a handful of data points.
Pixar in a Box – Khan Academy
Khan Academy collaboration with Pixar explains why math is important
I made a few videos demonstrating it:
https://www.youtube.com/watch?v=9PPrrSyubG0
https://www.youtube.com/watch?v=35zLnS3fXeA
I'm slowly working on putting together a more detailed tutorial for building such a thing. I actually think with the right guidance this is a very accessible project for someone without much background in electronics or computer architecture to learn a lot from.
None of the other reasons you mention are really relevant.
When you send ACKs, not only do you send the acknowledgement number indicating which byte you expect next, but you also send a window size indicating how many bytes you're willing to receive before the remote end has to wait for another acknowledgement. Normally you want this to be somewhat large so you don't spend lots of idle time waiting around for ACKs. (But not so large that packets get dropped). This is the key to TCP flow control, which was kinda glossed over in the blog post in the interest of keeping things simple.
But perhaps by default, you're advertising a too-large window considering the circumstances. I bet you could make this a lot more reliable just by advertising something smaller.
Good TCP implementations have overcome a lot more than some unwanted buffering.
It turned out I was much better suited to (and motivated by) real world work. (I already had a reasonable amount of software development experience prior to college.) I quickly proved my usefulness, was able to take on more responsibility, and learned a ton about networking hardware over the next year or so. I should point out that during this internship, I was working a lot. I was really into what I was doing, really enjoyed everything I was learning, and seeking lots of feedback from everyone around me.
Since dot-coms were all the rage at the time, there were tons of places hiring anyone who knew anything about the internet (today, it would be mobile or web development perhaps). After a year or so, when I started interviewing, it was apparent I had the relevant experience and no one cared that I hadn't finished college.
I got lucky with the internship, I got lucky with timing (dot-com boom), and I got lucky that I really enjoyed doing something that happened to be highly marketable. But I also was really motivated and worked hard. I hated school because it felt so pointless. But entering the real world, I felt super-motivated because I felt I was doing something productive that wasn't just a contrived assignment to be graded and discarded. If this sounds like you, maybe you'll follow a similar path. On the other hand, if your poor performance in school is a reflection of general lack of motivation that would carry over to work, you've got a tougher problem to solve. My guess is that based on your previous internships, you already know the answer.