Be Hacker

Be Hacker

A lot of people/friends ask me how I learned about [X] topic. Here's a list of how to learn about computers in general. For the best result follow the list chronologically, but feel free to skip some steps if you want. (i.e trying to be a web dev in 3 months)

Roadmap:

  • Learn to Google

    • must-have first skill
    • learn how to find answers to all of your questions1
    • explore by yourself, figure out solutions to problems
    • I won't explain some of the things below in depth, that's your job
  • Get Unix

    • first thing you should do is get a copy of Linux (or macOS) - you can dual boot any distro with Windows.2
    • tinker with it, learn the shell and how to use the terminal
    • useful resource for learning commands
    • (optional) make it more useful with plugins, and a bonus: prettier ✨
  • Open-source

    • learn about Git, and how to do version control2
    • start using Git from the start with all of your projects
    • try open-sourcing everything you do on GitHub
  • Low level3

    • to understand computers fully, you have to start from the father of everything
    • follow different tutorials/courses, and go from the transistor to the OS
    • 12 week course by geohot
    • transistors
    • logic gates
    • latches
    • digital circuits
    • comp arch (CPU, memory)
    • machine language
    • assembly
  • C/C++

    • learn about source & machine code
    • compilers
    • header files
    • types
    • overflow, floating-point imprecision
    • variables, conditionals, loops
    • preprocessing, compiling, assembling, linking, debugging4
    • pointers, seg fault dynamic memory allocation, heap, stack, file I/O
  • DSA

    • linear & binary search
    • sorting, merge sort, quick sort
    • queues, stacks
    • linked lists, trees
    • hash tables, tries
    • graphs
    • big O notation
  • OOP

    • classes
    • decorators
    • inheritance
    • methods
    • overloading
  • Python

    • be grateful & appreciate how simple it is opposing of C
    • just hack projects
  • SQL

    • tables
    • types
    • statements
    • SQL injection attacks
  • Network

  • HTML

    • tags, attributes
    • Exercises
    • build basic pages, make your page
  • CSS

    • proprieties, selectors, frameworks
    • tailwindcss
    • Exercises
    • improve your existing page
  • Javascript

    • variables, conditions, loops, events
    • MDN
    • build some apps, use tutorials (like rock-paper-scissors)
  • Web Frameworks

    • use either React or Svelte
    • build apps with tutorials / hack around with the web
    • clone an existing website, like Twitter
  • Backend

    • routes, decorators, requests
    • sessions, cookies
    • auth
    • use flask for Python, or node.js for js
  • Design

    • learn the basics of color theory, typography, spacing5
    • admire and take inspiration from other UIs (don't look at dribble, use are.na)6
    • recreate some existing UI consistently for 2-3 weeks and you'll get good at design7
    • observe patterns in UI
  • Metaprogramming

  • Data Science

    • numpy, pandas
  • ML

    • torch, CUDA

Make sure to spend time debugging and finding solutions to problems by yourself. Google around, search forums, but ultimately, try to finish the task at hand. This list may not be complete, but I will add completions as time goes on...

Footnotes

  1. https://news.ycombinator.com/item?id=26911629

  2. http://www.catb.org/~esr/faqs/hacker-howto.html 2

  3. https://twitter.com/var_epsilon/status/1673003254903459841

  4. https://cs50.harvard.edu/x/2023

  5. https://twitter.com/danqing_liu/status/1576997489529344001

  6. https://www.are.na/tanya-prokofeva/moves-h_2ti_6rtsw

  7. https://recreatecode.substack.com/p/recreating-apple-wallet-payment-ring