Remix.run Logo
fbias 3 hours ago

Take George Hotz as an example. He’s not in this thread and I doubt he wants to swing his massive dick but he’s a poster child for a pattern that comes up. Here are a few.

- Precocity and curiosity. Access to tech, resources, ways of actually getting answers instead of just hypothesizing. Though a curious mind will always conjure theories of all sorts.

- Working on an assortment of devices. Recent, old. Take them apart, ask how do they work. Read up about how they are constructed. Repeat.

- Robotics. Dead give away because robotics means embedded and embedded knowledge is gold. As is electronics knowledge among all the knowledge of how sensors actually work and what they do. You don’t wake up knowing how software and hardware interfaces. Along with learning this you learn a ridiculous amount regarding protocols, tools like logic analyzers and oscilloscopes, and patterns that repeat again and again. [0]

- Free time. This one is a given. This shit takes too long and all you’ve got are hunches along the way.

Take the recent CCC presentation on Miele appliances. The young presenter practically gives the punch line away: he fixes his parents’ house appliances, he rummages forum posts looking for information. He reads data sheets of processors and knows what pin does what. He looks at what others have done and wonders “what if?”. His whole presentation was so textbook and the appliance is an early 2000s model that it’s begging for someone with a shred of curiosity to take it apart and learn how it works. He finished by successfully dumping the firmware even when he thought it couldn’t be done. Along the way his “hunches” show he knows how things work because he’s worked on it before. The only people surprised are people who haven’t done it. He was going to succeed before he began - that’s how prepared you need to be.

Now, if you’re not a super talented 12 year old, that’s okay. Start programming microcontrollers and get comfortable with reading voltage levels and signals of GPIOs and peripherals. Learn how your firmware gets loaded at startup. Build some basic protocols and confirm on a logic analyzer. Decode your work with your eyes. Reading binary and hex should be second nature. Read and decode a USB protocol. An SPI protocol. And don’t complain it’s too much work.

[0] https://m.youtube.com/watch?v=C1C-DrRZAfw