# Programming

## Resources

### Articles

* [101 Tips For Being A Great Programmer (& Human)](https://dev.to/emmabostian/101-tips-for-being-a-great-programmer-human-36nl) - Emma Bostian
* [20 Things I’ve Learned in my 20 Years as a Software Engineer](https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/) - Justin Etheredge
* [20,000 hours as a Software Engineer](https://ruiper.es/fad733b2e8b147bbbe647906253001be) - Rui Peres
* [A list of programming playgrounds](https://jvns.ca/blog/2023/04/17/a-list-of-programming-playgrounds/) - Julia Evans
* [An incomplete list of skills senior engineers need, beyond coding](https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f) - Camille Fournier
* [Become a Good Programmer in Six Really Hard Steps](https://www.gamedev.net/blog/355/entry-2250592-become-a-good-programmer-in-six-really-hard-steps/) - Mike Lewis
* [Building a CHIP-8 Emulator \[C++\]](https://austinmorlan.com/posts/chip8_emulator/) - Austin Morlan
* [Contributing to Complex Projects](https://mitchellh.com/writing/contributing-to-complex-projects) - Mitchell Hashimoto
* [Design Docs at Google](https://www.industrialempathy.com/posts/design-docs-at-google/) - Malte Ubl
* [Do you know how much your computer can do in a second?](https://computers-are-fast.github.io/) - Julia Evans, Kamal Marhubi
* [Essays on programming I think about a lot](https://www.benkuhn.net/progessays/) - Ben Kuhn
* [Exposing Floating Point](https://ciechanow.ski/exposing-floating-point/) - Bartosz Ciechanowski
* [Fantastic Learning Resources](https://matklad.github.io/2023/08/06/fantastic-learning-resources.html) - Alex Kladov
* [Fixing a Bug in Google Chrome as a First-Time Contributor](https://cprimozic.net/blog/fixing-a-bug-in-google-chrome) - Casey Primozic
* [For your next side project, make a browser extension](https://www.geoffreylitt.com/2023/01/08/for-your-next-side-project-make-a-browser-extension.html?utm_source=hackernewsletter\&utm_medium=email\&utm_term=fav) - Geoffrey Litt
* [Fundamentals](https://blog.ploeh.dk/2024/05/20/fundamentals/) - Mark Seemann
* [Generating sudokus for fun and no profit](https://tn1ck.com/blog/how-to-generate-sudokus) - Tom Nick
* [Hello, PNG!](https://www.da.vidbuchanan.co.uk/blog/hello-png.html) - David Buchanan
* [How To Ask Questions The Smart Way](http://www.catb.org/~esr/faqs/smart-questions.html) - Eric Steven Raymond
* [How to debug](https://philbooth.me/blog/how-to-debug) - Phil Booth
* [How to fix a bug in an open-source project](https://nolanlawson.com/2015/12/28/how-to-fix-a-bug-in-an-open-source-project/) - Nolan Lawson
* [How Wine works 101](https://werat.dev/blog/how-wine-works-101) - Andy Hippo
* [I'm an Impostor](https://davidwalsh.name/impostor-syndrome) - David Walsh
* [It's probably time to stop recommending Clean Code](https://qntm.org/clean) - qntm
* [Mastering Programming](https://tidyfirst.substack.com/p/mastering-programming) - Kent Beck
* [My Software Estimation Technique](https://jacobian.org/2021/may/25/my-estimation-technique/) - Jacob Kaplan-Moss
* [On Good Software Engineers](https://candost.blog/on-good-software-engineers) - Candost Dagdeviren
* [On Pair Programming](https://martinfowler.com/articles/on-pair-programming.html) - Birgitta Böckeler, Nina Siessegger
* [Pair Programming Guide](https://tuple.app/pair-programming-guide/) - Tuple
* [Patterns in confusing explanations](https://jvns.ca/blog/confusing-explanations/) - Julia Evans
* [Programmer Competency Matrix](https://sijinjoseph.netlify.app/programmer-competency-matrix/) - Sijin Joseph
* [Programmer Imposter Syndrome: 6 Ways to Get Over Yours](https://www.codingdojo.com/blog/programmer-imposter-syndrome) - Ethan Urie
* [Programming the C64 with Visual Studio Code](https://retrogamecoders.com/c64-visual-studio-code/) - Retro Game Coders ([Hacker News](https://news.ycombinator.com/item?id=42290861))
* [Reverse-Engineering YouTube: Revisited](https://tyrrrz.me/blog/reverse-engineering-youtube-revisited) - Oleksii Holub
* [QR codes](https://typefully.com/DanHollick/qr-codes-T7tLlNi) - Dan Hollick
* [Reading QR codes without a computer!](https://qr.blinry.org/) - blinry
* [Software Development Then and Now: Steep Decline Into Mediocrity](https://levelup.gitconnected.com/software-development-then-and-now-steep-decline-into-mediocrity-5d02cb5248ff) - Christopher Fox
* [Software Engineering - The Soft Parts ](https://addyosmani.com/blog/software-engineering-soft-parts/)- Addy Osmani
* [The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 (Still No Excuses!)](https://tonsky.me/blog/unicode/) - Nikita Prokopov
* [The biggest-ever global outage: lessons for software engineers](https://newsletter.pragmaticengineer.com/p/the-biggest-ever-global-outage-lessons) - Gergely Orosz
* [The Joel Test: 12 Steps to Better Code](https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/) - Joel Spolsky
* [Things Every Hacker Once Knew](http://www.catb.org/~esr/faqs/things-every-hacker-once-knew/) - Eric Steven Raymond
* [Things I've learned as a Senior Engineer](https://old.reddit.com/r/ExperiencedDevs/comments/nmodyl/drunk_post_things_ive_learned_as_a_sr_engineer/)
* [Things they didn’t teach you about Software Engineering](https://vadimkravcenko.com/shorts/things-they-didnt-teach-you/) - Vadim Kravcenko
* [What a good debugger can do](https://werat.dev/blog/what-a-good-debugger-can-do) - Andy Hippo
* [What every computer science major should know](https://matt.might.net/articles/what-cs-majors-should-know/) - Matt Might
* [What I learned from Software Engineering at Google ](https://swizec.com/blog/what-i-learned-from-software-engineering-at-google/)- Swizec Teller
* [What's the toughest bug you ever found and fixed?](https://stackoverflow.com/questions/169713/whats-the-toughest-bug-you-ever-found-and-fixed)
* [Why you should learn brainf\*ck (or: learn you a brainf\*ck for great good!)](https://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/) - Nick Morgan
* [Write Code Every Day](https://johnresig.com/blog/write-code-every-day/) - John Resig
* [Writing Toy Software Is A Joy](https://www.jsbarretto.com/blog/software-is-joy/) - Joshua Barretto

### Blogs

* [Amos Wenger](https://fasterthanli.me/)
* [Bruce Dawson](https://randomascii.wordpress.com/)
* [Dan Luu](https://danluu.com/)
* [Eli Bendersky](https://eli.thegreenplace.net/)
* [Fabien Sanglard](https://fabiensanglard.net/)
* [Fabrice Bellard](https://bellard.org/)
* [Jeff Atwood](https://blog.codinghorror.com/)
* [Jess Frazelle](https://blog.jessfraz.com/)
* [Julia Evans](https://jvns.ca/)
* [Lambros Petrou](https://www.lambrospetrou.com/)
  * [Read-Watch-Listen](https://www.lambrospetrou.com/read-watch-listen/)
* [Martin Kleppmann](https://martin.kleppmann.com/archive.html)
* [Matthieu Cneude](https://thevaluable.dev/)
* [Patrick McKenzie](https://kalzumeus.com/)
* [Rachel Kroll](https://rachelbythebay.com/)

### Books

* Build Your Own X From Scratch - James Smith
  * [Build Your Own Database From Scratch](https://build-your-own.org/database/)
  * [Build Your Own Redis with C/C++](https://build-your-own.org/redis/)
  * [From Source Code To Machine Code - Build Your Own Compiler From Scratch](https://build-your-own.org/compiler/)
* [Crafting Interpreters](https://www.craftinginterpreters.com/) - Bob Nystrom
* [Hacker News Book Map](https://hnbooks.pieterma.es/)
* [How To Be A Programmer](https://www.doc.ic.ac.uk/~susan/475/HowToBeAProgrammer.pdf) - Robert R. Lead
* [How To Design Programs](https://htdp.org/) - Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
* [Making Software](https://www.makingsoftware.com/) - Dan Hollick
* [Peopleware: Productive Projects and Teams](https://smile.amazon.co.uk/dp/0321934113) - Tom DeMarco, Tim Lister
  * [Notes by Keyvan Akbary](https://keyvanakbary.github.io/learning-notes/books/peopleware/)
* [Program = Proof](https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching/INF551/course.pdf) - Samuel Mimram
* [Programming Languages: Application and Interpretation](https://www.plai.org/) - Shriram Krishnamurthi, Brown University
* [Software Engineering at Google](https://abseil.io/resources/swe-book) - Titus Winters, Tom Manshreck, Hyrum Wright
* [Static Program Analysis](https://cs.au.dk/~amoeller/spa/) - Anders Møller and Michael I. Schwartzbach, Aarhus University
* [Structure and Interpretation of Computer Programs](https://sarabander.github.io/sicp/) - Harold Abelson, Gerald Jay Sussman (first edition [here](https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html))
  * [JavaScript edition](https://sicp.sourceacademy.org/sicpjs.pdf)
  * [SICP in Python](https://wizardforcel.gitbooks.io/sicp-in-python/content/)
  * [YouTube playlist with lectures](https://www.youtube.com/playlist?list=PLE18841CABEA24090)
* [The Architecture of Open Source Applications](https://aosabook.org/en/index.html)
* [The Art of HPC](https://theartofhpc.com/) - Victor Eijkhout, Texas Advanced Computing Center
* [Usborne 1980s Computer Books](https://usborne.com/gb/books/computer-and-coding-books)

### Cheat Sheets

* [Devhints](https://devhints.io/)
* [DZone Refcardz](https://dzone.com/refcardz)
* [Hyperpolyglot](https://hyperpolyglot.org/)
* [Learn X in Y Minutes](https://learnxinyminutes.com/)

### Code Editors

* [Cursor](https://www.cursor.com/)
* [Huly Code](https://hulylabs.com/code)
* [IntelliJ IDEA](https://www.jetbrains.com/idea/)
* [Notepad++](https://notepad-plus-plus.org/)
* [Sublime Text](https://www.sublimetext.com/)
* [Visual Studio Code](https://code.visualstudio.com/)
* [Windsurf](https://codeium.com/windsurf)
* [Zed](https://zed.dev/)

### GitHub Repositories

* [Advent Calendars for Developers](https://github.com/vimode/Advent-Calendars-For-Developers)
* [Amazing Developer On YouTube](https://github.com/ErikCH/DevYouTubeList)
* [Cognitive Load is what matters](https://github.com/zakirullin/cognitive-load)
* [Data-Oriented Design](https://github.com/dbartolini/data-oriented-design)
* [Debugging Stories](https://github.com/danluu/debugging-stories) - Dan Luu
* [Developer Newsletters](https://github.com/jackbridger/developer-newsletters)
* [Every Programmer Should Know](https://github.com/mtdvio/every-programmer-should-know)
* [freeCodeCamp](https://github.com/freeCodeCamp/freeCodeCamp)
* [Hacker Laws](https://github.com/dwmkerr/hacker-laws)
* [Influential CS Books](https://github.com/cs-books/influential-cs-books)
* [Low-Level Programming University](https://github.com/gurugio/lowlevelprogramming-university)
* [Professional Programming](https://github.com/charlax/professional-programming)
* [Programming Best Practices In 2024](https://github.com/dereknguyen269/programing-best-practices-in-2024)
* [Software Engineering Blogs](https://github.com/kilimchoi/engineering-blogs)
* [Software Papers](https://github.com/facundoolano/software-papers)
* [The Art of Debugging](https://github.com/stas00/the-art-of-debugging)
* [The Book of Secret Knowledge](https://github.com/trimstray/the-book-of-secret-knowledge)
* [Today I Learned](https://github.com/jbranchaud/til) - Josh Branchaud
* [Winamp](https://github.com/WinampDesktop/winamp)

### Hacker News Threads

* [Books That Dramatically Transformed Your Programming Skills](https://news.ycombinator.com/item?id=41445664)
* [Books that teach programming by building a series of small projects?](https://news.ycombinator.com/item?id=34412069)
* [How do you come up with side project ideas in 2024?](https://news.ycombinator.com/item?id=39361661)
* [How to find time to learn after full-time job?](https://news.ycombinator.com/item?id=39264751)
* [Is there any software you only made for your own use but nobody else?](https://news.ycombinator.com/item?id=40878765)
* [Name 3-5 books that had the most impact on your career and knowledge?](https://news.ycombinator.com/item?id=32896299)
* [Programming Courses for Experienced Coders?](https://news.ycombinator.com/item?id=38804603)
* [Programs that saved you 100 hours? (2022 edition)](https://news.ycombinator.com/item?id=34069106)
* [Reading material on how to be a better software engineer?](https://news.ycombinator.com/item?id=33854815)
* [Those making $0/month or less on side projects](https://news.ycombinator.com/item?id=34547265)
* [What are some of the best well-written books on computer science?](https://news.ycombinator.com/item?id=29182386)
* [What are some of the most elegant codebases in your favorite language?](https://news.ycombinator.com/item?id=36370684)
* [What books should I read to improve as a software engineer?](https://news.ycombinator.com/item?id=41387062)
* [What is the best code base you ever worked on?](https://news.ycombinator.com/item?id=40818809)
* [What open source projects need help?](https://news.ycombinator.com/item?id=42157556)
* [What side projects landed you a job?](https://news.ycombinator.com/item?id=38511280)
* [What underrated open source project deserves more recognition?](https://news.ycombinator.com/item?id=39635486)
* [What's the best source code you've read?](https://news.ycombinator.com/item?id=32793534)
* [What's your proudest hack?](https://news.ycombinator.com/item?id=33954778)
* [Who else is working on nothing?](https://news.ycombinator.com/item?id=38983067)

### Ideas for projects

* [Books like “Crafting interpreters” or “The ray tracer challenge”?](https://news.ycombinator.com/item?id=31571734)
* [Books that teach you programming languages via systems projects?](https://news.ycombinator.com/item?id=28478751)
* Build your own SQLite - Geoffrey Copin
  * [Part 1: Listing tables](https://blog.sylver.dev/build-your-own-sqlite-part-1-listing-tables)
  * [Part 2: Scanning large tables](https://blog.sylver.dev/build-your-own-sqlite-part-2-scanning-large-tables)
  * [Part 3: SQL parsing 101](https://blog.sylver.dev/build-your-own-sqlite-part-3-sql-parsing-101)
  * [Part 4: reading tables metadata](https://blog.sylver.dev/build-your-own-sqlite-part-4-reading-tables-metadata)
  * [Part 5: Evaluating queries](https://blog.sylver.dev/build-your-own-sqlite-part-5-evaluating-queries)
* [Build Your Own X](https://github.com/danistefanovic/build-your-own-x) - Daniel Stefanovic
* [Challenging projects every programmer should try](https://austinhenley.com/blog/challengingprojects.html) - Austin Z. Henley ([Hacker News](https://news.ycombinator.com/item?id=21790779), [Reddit](https://www.reddit.com/r/programming/comments/ean6ch/challenging_projects_every_programmer_should_try/))
* [Coding Challenges](https://codingchallenges.fyi/challenges/intro) ([Shared Solutions](https://github.com/CodingChallegesFYI/SharedSolutions))
* Coding projects for software developers: Let’s get some hands-on practice - Shivang Sarawagi
  * [Part 1](https://shivangsnewsletter.com/p/coding-projects)
* [Every time you build a to-do list app, a puppy dies](https://www.freecodecamp.org/news/every-time-you-build-a-to-do-list-app-a-puppy-dies-505b54637a5d/) - Hrishi Mittal
* ["I Need Practice Programming": 49 Ideas for Game Clones to Code](https://inventwithpython.com/blog/2012/02/20/i-need-practice-programming-49-ideas-for-game-clones-to-code/) - Al Sweigart
* [Idea List](https://www.ishan.coffee/notes/Idea-List) - Ishan Shah
* [Kindling projects](https://nedbatchelder.com/text/kindling.html) - Ned Batchelder
* [Mega Project List](https://github.com/karan/Projects) - Karan Goel
* [More challenging projects every programmer should try](https://austinhenley.com/blog/morechallengingprojects.html) - Austin Z. Henley ([Hacker News](https://news.ycombinator.com/item?id=25489879))
* [My list of challenging software projects some programmers should try](https://www.andreinc.net/2024/03/28/programming-projects-ideas) - Andrei Ciobanu
* [Project Based Learning](https://github.com/tuvtran/project-based-learning) - Tu V. Tran
* [Projectbook](https://projectbook.code.brettchalupa.com/) - Brett Chalupa
* [Protohackers](https://protohackers.com/)
* [What To Code](https://github.com/joereynolds/what-to-code) - Joe Reynolds

### Images

<figure><img src="https://3287763006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNTfNUTqpRKTqOGTts0%2Fuploads%2FWhO9oh4O2zjUKxVeFqvn%2F10%20Books%20Every%20Software%20Engineer%20Should%20Read.gif?alt=media&#x26;token=dd597160-8f35-48a7-ad25-b1580b6de968" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3287763006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNTfNUTqpRKTqOGTts0%2Fuploads%2FOwAjHgHspaulySClCrzC%2F10%20Soft%20Skill%20Books%20Every%20Developer%20Should%20Read.gif?alt=media&#x26;token=6d93c9ea-6879-4883-a230-6afc04820088" alt=""><figcaption></figcaption></figure>

<figure><img src="https://i.pinimg.com/736x/2d/8b/df/2d8bdf7c1f2d5e422effa1293641abf9.jpg" alt=""><figcaption></figcaption></figure>

### Lobsters threads

* [What software do you dream about, but do not have time to code yourself?](https://lobste.rs/s/btjtkr/what_software_do_you_dream_about_do_not)

### Online IDEs

* [glot.io](https://glot.io/)
* [myCompiler](https://www.mycompiler.io/)
* [OneCompiler](https://onecompiler.com/)
* [RunCode.io](https://runcode.io)
* [TryAPL](https://tryapl.org/)

### Open Source

* [First Contributions](https://firstcontributions.github.io/)
* [Up For Grabs](https://up-for-grabs.net/#/)

### Programming Puzzles

* [Advent of Code](https://adventofcode.com/)
  * [450 Stars: A Categorization and Mega-Guide](https://www.reddit.com/r/adventofcode/comments/1gdw4cj/450_stars_a_categorization_and_megaguide/)
  * [HyperNeutrino](https://www.youtube.com/@hyper-neutrino)
  * [What concepts are generally required to be able to solve all AoC tasks?](https://www.reddit.com/r/adventofcode/comments/1hgegw6/what_concepts_are_generally_required_to_be_able/)
* [Codyssi](https://www.codyssi.com/)
* [Everybody Codes](https://everybody.codes/)
* [Project Euler](https://projecteuler.net/)

### Reddit subreddits

* [r/ExperiencedDevs](https://www.reddit.com/r/ExperiencedDevs/)

### Reddit threads

* [The best dev you’ve ever worked with - what made them so great?](https://www.reddit.com/r/ExperiencedDevs/comments/1gm4y7g/the_best_dev_youve_ever_worked_with_what_made/)

### Videos

* [A Philosophy of Software Design](https://www.youtube.com/watch?v=bmSAYlu0NcY) - John Ousterhout
* ["Am I Senior Yet?"](https://www.youtube.com/watch?v=jcTmoOHhG9A) - Katlyn Parvin, RubyConf 2016
  * [Notes by Keyvan Akbary](https://keyvanakbary.github.io/learning-notes/talks/am-i-senior-yet/)
* [Inventing On Principle](https://www.youtube.com/watch?v=PUv66718DII) - Bret Victor
* [Rethinking the Developer Career Path](https://www.youtube.com/watch?v=yIPbE7BssOs) – Randall Koutnik
  * [Notes by Keyvan Akbary](https://keyvanakbary.github.io/learning-notes/talks/rethinking-the-developer-career-path/)

### Websites

* [/uses](https://uses.tech/) - A list of /uses pages detailing developer setups, gear, software and configs.
* [30 Seconds Of Code](https://www.30secondsofcode.org/)
* [Analysis Tools and Linters](https://analysis-tools.dev/) ([GitHub](https://github.com/analysis-tools-dev/static-analysis))
* [Boot.dev](https://www.boot.dev/) - Learn Backend Development The Smart Way
* [Code Cartoons](https://code-cartoons.com/)
* [Code Catalog](https://codecatalog.org/) - A collection of code examples from prominent open-source projects
* [Coder's Cat](https://coderscat.com/)
* [Denigma](https://denigma.app/) - AI that reads and explains code in understandable English
* [Develop For Performance](http://developforperformance.com/)
* [Developer Roadmaps](https://roadmap.sh/)
* [DevFreeBooks](https://devfreebooks.github.io/)
* [DEV Community](https://dev.to/)
* [Dev Tips](https://umaar.com/dev-tips/) - Umar Hansa
* [Execute Program](https://www.executeprogram.com/) - Gary Bernhardt
* [Free for developers](https://free-for.dev/#/)
* [Free Programming Books](https://ebookfoundation.github.io/free-programming-books/)
* [GoalKicker.com - Free Programming Books](https://books.goalkicker.com/)
* [JetBrains Academy](https://academy.jetbrains.com/)
* [Lagout.org](https://doc.lagout.org/) - Programming books
* [Literate Programming](http://literateprogramming.com/)
* [Monorepo Explained](https://monorepo.tools/)
* [OverAPI.com - Collecting All Cheat Sheets](https://overapi.com/)
* [Paged Out!](https://pagedout.institute/)
* [Pocket Flow](https://the-pocket.github.io/PocketFlow-Tutorial-Codebase-Knowledge/) - Turns Codebase into Easy Tutorial ([GitHub](https://github.com/The-Pocket/PocketFlow-Tutorial-Codebase-Knowledge))
* [ProgrammerHumor](https://programmerhumor.io/)
* [Programming Idioms](https://www.programming-idioms.org/)
* [punks.org](https://punkx.org/) - Games and puzzles to teach children programming
* [Radical Simplicity in Technology](http://www.radicalsimpli.city/)
* [Software Engineering Books](https://software-engineering-books.com/)
* [Software Folklore](https://beza1e1.tuxen.de/lore/index.html)
* [Speaking for Hackers](https://sfhbook.netlify.app/) - Ben Orenstein
* [Stack Overflow](https://stackoverflow.com/)
* [StackShare](https://stackshare.io/)
* [StaffEng](https://staffeng.com/)
* [What does this code do?](https://whatdoesthiscodedo.com/)

### YouTube Channels

* [TIna Huang](https://www.youtube.com/@TinaHuang1/videos)
