Anecdotally, reverse engineering and low-level hacking felt more popular back in the 90s and early 2000s. Back then, there were fewer distractions to soak up the free time of young tech enthusiasts. Old IRC chatrooms feel like a trickle of distraction relative to the firehose of Twitter, Reddit, 24/7 news cycles, and modern distractions.
A common complaint among the younger engineers I mentor is that they feel like they never have enough time. It's strange to watch a young, single person without kids and with a cushy 9-5 (or often 11am to 5pm at modern flex/remote companies) job complain about lack of free time. Digging deeper, it's usually because they're so tapped in to social media, news, video games, and other digital distractions that their free time evaporates before they even think about planning their days out.
It's amazing what one can accomplish by simply sitting down and focusing on a problem. You may not reach the levels of someone like Alyssa, but you'll get much farther than you might expect. And most importantly, you probably won't miss the media firehose.
There is a world of difference in free time between "having a 9-5 job" and "being in high school", though.
In high school, I was lucky enough to not have to do laundry, feed myself, or a variety of other tasks and chores that come along with adulthood. I also could sleep like crap and make it up during school the next day. Not to mention that the time I spent at school wasn't spent programming, so when I got home it wasn't more of the same, it was exciting. I could sit at the computer programing from 3pm to 2am.
>There is a world of difference in free time between "having a 9-5 job" and "being in high school", though.
Funny how this works. In high school I had a ton of free time. In college, not a lot of free time and very stressed. Entering the workforce, again a lot of free time and very stress free. I expect free time will disappear if children ever come into play
> I expect free time will disappear if children ever come into play
That would very much depend on how you choose to live.
As for me, living in Thailand and being a father of one daughter, I need to earn about 1.500 USD per month for our monthly needs. Which is easily achievable for me with less than a week of work. All extra money I earn above basic needs, I invest.
My current client sometimes has work for me 40 hours a week, sometimes only 40 hours a months. As such, I have plenty of time to dedicate to my own hobbies.
But this is only achievable because I left The Netherlands and decided to work remotely. And I do understand these kinds of choices are not possible for everyone (some people would find it very hard to live in another country, far away from family and friends, for example).
In our field and by making suitable choices it should be possible to have plenty of time for your own hobbies and projects.
When I was in high school in 2004, I would fantasize about getting done with my work early and then catching the teacher on a good day where she let me get on the class computer so I could go to online forums and read more about programming. I sometimes wonder how far I would have been ahead had I had a smartphone in my pocket when I was in school like kids have today.
It doesn't surprise me that some kids capitalize on it instead of just using it to watch Twitch in class.
Yes, as a high school student who just fools around with their computer during online class (Linux, Gentoo, compiling and all that), it cannot be understated how many of my classmates play video games, watch YouTube, and watch Twitch. Those really are the big 3. I personally had to overcome a YouTube and video game addiction to get to a point where I was spending my free time in a mindful way, so I definitely can relate to everyone else.
YouTube hadn't really taken off until we were in middle school to early high school, so I couldn't imagine what internet addictions may be like in the future, seeing as quite a few toddlers of today grow up watching it. I suppose it's not too different to Television however.
Is doing laundry hard? I put it in the washing machine, turn that on to wash twice a week, put washed clothes on the line then take in when dry. I like to cook, have done since teens and before I can remember was tasked with food prep and washing dishes after a meal. Clean the house once per week engaging passion in various areas in this. And not viewing these as chores but simple things. For sixth-form and university, get to bed by 11, get to school by 8; not a super fan but appreciative of classes so sat in the school /uni library with books.
It isn't that it is hard, it's that it is a thing that has to be done, and so your brain cycles + interruptions are dedicated to these things.
Cooking is generally taken care of by parents, which means ancillary things like grocery shopping are too. You don't even have to dedicate brainwidth to "what groceries do we need to buy". There are so many tiny interruptions and bureaucratic overhead that keeps the brain slightly stressed as an adult that simply don't exist as a child, it is marvelous.
I think there's more to it tha n "if only you'd get off your butt and throw away that phone"
Knowing what to work on, what trends to be aware of, where to present your stuff is something that a modern elite collegiate is intimately familiar with.
Other teens and young adults, not so much. I myself having been one such and friends of other such.
For me, I have more than enough time, especially when working from home. It’s just that after work I feel like a brain dead zombie and programming is the last thing I want to do after work.
In the time before I started work and after finishing school I used to do so much open source stuff in the time that I now spend working.
That issue you describe, while intuitive and obvious to those of us who were around for the transition period is simple to arrive at. Keep in mind that youngsters nowadays may not have much if any experience with the before world or know someone reflective enough and willing to point it out to them. Many just assume we all mastered it somehow.
There is also the possibility, They might be right. Before, communication and the long access lag inherent in accessing data in remote systems meant change propagated by trickle. Now, change can happen and propagate across the world at breakneck speeds. Which means if one is to have an effect, one must be there/be aware.
This leaves precious little time for following the white rabbit. I think everybody could do with a little somber reflection on just the impact that rapid information propagation has had on the world.
I picked up JavaScript (or actually JScript) in 2001, when IE6 was this new hot thing. Back then you could cover most of the material on front-end in a week or two and not have to learn anything new for at least a year.
Fast forward 20 years later and browsers have major releases every few weeks while one of the most stable frameworks available - Angular - every six months.
As one of the older folks here on HN, I fondly remember the time when almost everything had to be done by reverse-engineering. Some friends of mine and I were the first people to reverse engineer the Commodore 4040/8050 disk drive "computers". We had to write all of the software to do this, including custom disassemblers that eventually spat out printouts that we annotated first by hand and later transcribed into source code files. There were no memory maps, and our knowledge of electronics was too rudimentary to figure out much by looking at the traces on the circuit boards. There were no places for folks to discuss these ideas - bulletin boards of the day were one-user-at-a-time things which meant that topics like this were way too niche to garner any discussion at all. I was fortunate enough to grow up in Toronto which was a hot-bed of Commodore hackers and we had a vibrant community that could gather to meet face-to-face to discuss ideas. But in between meetups we had to sit and think harder until we figured it out.
It was a wonderful time to learn about computing from first principles without the distractions that exist today.
But I think we undersell the abilities of college-aged adults in modern times. Watch some top violinists or gymnasts at that age, or just someone who had a couple of kids as a teen and held it together.
The young have unbounded ability; it is only wisdom and experience that they may lack.
Yes, they are for the Atari, just trying to make a point here.
So any smart kid in the age of Internet, instead of having what is available at the local library, is quite capable to build up the skills to achieve this kind of work at the high school level.
Strongly disagree. There is a big difference between doing some interesting hacking at a young age and getting your GPU driver included in the mainline Linux kernel. The author appears to be a true CS prodigy.
Yes, perhaps, and at that time it was also a much simpler proposition to do that.
I would imagine at that time there were also many fewer kids at a high-school level doing that kind of hacking, so it might not be totally wrong to say they were all prodigies.
The Atari did, at least in the technical sense, though not in the sense you mean it.
The Ataris had a display process called Antic that you supplied with a display-list, a set of tokens that defined which antic-mode was next as the electron-dot proceeded down the screen. Antic would halt the CPU and take over the bus in order to transfer data from main memory to use for display purposes, be it character or bitmap data
You could choose from a variety of modes (15 in all, IIRC) and add horizontal or vertical smooth scrolling to each mode-line individually by toggling a bit in the display-list entry.
One further bit allowed you to set a DLI (Display-list interrupt) where the CPU would be interrupted and run your code at that end of the specific display-line on-screen - you had the flyback interval to effect something (not a lot, but you could change colour registers, character-sets, do a few register operations, basically).
So it was minimally programmable, and certainly not comparable to today's stuff - but it was groundbreaking in its day.
High school can be time when you have lots of spare time for learning what you want. I remember spending one year, and almost all of the summer break reverse engineering and writing binary patches for the sl45i phone. There was a huge community around it at the time so you just joined a forum and started asking questions.
It’s easy to think this sort of thing requires an incredibly level of knowledge but it’s often more about dedication and a little lateral thinking. You need a broad understanding of the process of putting something on screen, the ability to construct a program that does something, some way to observe the result, and the willingness to experiment.
Back in the 80s lots of kids that age wrote computer games and often found novel ways to use the hardware because even though video controllers might not be fully documented you still knew where their control registers were in memory and could just try altering the values in them.
Now, modern graphics hardware is more complex and controlled by things like command buffers and shaders, but you can apply similar ideas, and you’ve probably got easier tools for examining the state of your process. Write a program that does a simple thing and dump its state. Do a slightly different thing and compare the states. When you think you understand things either change your program and see if you’re correct or use a debugger to alter the state at runtime and see if you can change the visible result.
The M1 is actually especially forgiving about this, because it's good about isolating errors to your process, i.e. if you do something wrong only your test program will crash. For many GPUs, if you feed them garbage the whole machine panics.
Where did you get your knowledge? With places like HackerNews along with folks like yourself and myself writing posts about this kind of stuff it becomes trivial to walk down a rabbit hole for anyone of any age. Think back to how much you accomplished when you were younger because you were walking in the footsteps of others. :)
A magical thing about high school / college that people fail to appreciate is how few actual responsibilities you have at that age.
It's why kids are able to devote so many hours to video games and other time waster stuff.
Only difference is this person managed due to luck / skill / timing to end up on a more productive path.
Time commitment is the big impediment for most open-source projects. Late adolescence / young adulthood is one of the few periods of life where you both are competent enough to do useful things and have enough free time to actually commit to that work.
When I was 14 I discovered that my computer's CPU (a 186) had two on-chip programmable timers. One was used for DRAM refresh, so I used the other to get fine-grained timing so I could bit-bang the speaker output to get crude PWM sound.
Of course back then, people used to document the components they put in computers...
She was literally reverse-engineering Mali for Panfrost starting in her Sophomore year.