4 ms·
Here are some ways to learn deeply and be relevant: 1. Pick a data structure (such as a hash table or LSM-Tree) then read all the literature there is to read,
by jorangreef 6y ago
Here are some ways to learn deeply and be relevant:
1. Pick a data structure (such as a hash table or LSM-Tree) then read all the literature there is to read, every single paper that's great, following the best conferences year after year, and implement a 10x faster or more scalable version for the std lib of your favorite language.
2. Pick a fault model (such as storage faults, network faults, cryptography faults) then read all the literature there is to read, every single paper that's great, following the best conferences year after year, and write a fault injection or fuzzing harness to break some of the most respected storage/network/cryptography systems (for examples, see the work done by Remzi and Andrea Arpaci-Dusseau on storage faults, Kyle Kingsbury on Jepsen, and Guido Vranken on Cryptofuzz: https://github.com/guidovranken/cryptofuzz https://github.com/guidovranken/cryptofuzz).
3. Pick a software field (such as web applications, mobile applications, native applications, file formats such as Office Open XML, or protocols such as SMTP, MIME, HTTP, QUIC) then read as many CVE reports and bug bounty reports as you can find, and then start participating in bug bounty programs within this field. Pick a target and give yourself a goal, e.g. DoS, RCE or read/write access, and do the work to make it happen. Chain as many steps as you can. Automate and enumerate. You'll find a way in if you keep at it. There's nothing like crafting an exploit to change the way you think about programming.
As you gain experience in data structures, storage/networking/cryptography, and security, you'll find this translates well to most software engineering work. You'll gain a speed/safety/security way of thinking, you'll have fun being curious and learning along the way (and hopefully you'll earn a bounty or two and get some CVEs under your name).
- enumjorge 6y agoLet’s say I’ve picked a data structure. How would you suggest identifying the great papers and best conferences related to it?
- jorangreef 6y agoA few ideas: 1. Add "abstract" to your search query to surface papers. 2. Search for "... reading list". For example, Heidi Howard maintains https://github.com/heidihoward/distributed-consensus-reading-list https://github.com/heidihoward/distributed-consensus-reading... 3. Read blogs like "The Morning Paper" (https://blog.acolyer.org https://blog.acolyer.org) but skip fields that are outside your scope. You don't have time to follow more than one or two (or three) major fields. 4. Use Google Scholar to find the most cited papers, or to find papers that build on papers you think are good. 5. Keep an eye out for the conferences where these papers were presented. Then read the other papers that were also presented. 6. When you come across an amazing paper, read other papers by the same authors or supervisors. 7. If you're lucky you might also find good "survey" papers that cover and reference the state of the art. 8. Lecture notes from Stanford or MIT or another university can also be a great way to get a big picture of the evolution of techniques for a given data structure or problem. For example, these lecture notes are just brilliant for getting started with stuff around memory hierarchies: https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2018/slides/pdf/memory2.pdf https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_d... These are a few tricks that I find useful. What else?
- randomsearch 6y agoYeah similarly “review” “survey” in google scholar will work. Identify major authors (they keep cropping up). Find the big textbooks. See who those kinda people cite, follow that trail.
- jasonwatkinspdx 6y agoStart with the foundational paper(s) on the topic. Then use google scholar or your bibliography tool of choice to see who's cited it. It takes a little work but just burn down the list reading abstracts as well as noting how heavily each of these papers has in turn been cited. Those are likely the most influential derived works. It's common for grad students to do survey papers as well, so keep an eye out for those as they often give you a great roadmap to the current state of things. Also pay attention to authors. If someone has done an influential paper on a topic, it's likely there will be additional work or tech reports in that area on their homepage or with their research group. To find conferences/venues just note where the more recent papers are published.
- deeeeplearning 6y ago>following the best conferences There are conferences for hash tables?
- username90 6y agoYes? Why wouldn't people talk about hash tables at conferences? https://www.youtube.com/watch?v=aXj_DsIx1xs https://www.youtube.com/watch?v=aXj_DsIx1xs https://www.youtube.com/watch?v=ncHmEUmJZf4 https://www.youtube.com/watch?v=ncHmEUmJZf4 https://www.youtube.com/watch?v=M2fKMP47slQ https://www.youtube.com/watch?v=M2fKMP47slQ https://www.youtube.com/watch?v=JZE3_0qvrMg https://www.youtube.com/watch?v=JZE3_0qvrMg
- CyberDildonics 6y agoTalking about hash tables at a conference and a conference dedicated to hash tables wouldn't be the same thing.