Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save langdon0003/69d1edfc8743118a5f0cabb1f166bda8 to your computer and use it in GitHub Desktop.
Save langdon0003/69d1edfc8743118a5f0cabb1f166bda8 to your computer and use it in GitHub Desktop.
Modern Software Engineering Resources

Modern Software Engineering

Knowledge and Education should be open and free. Hierarchy and Exploitation must be abolished.

Wayback Machine (archive of the internet), Anna's Archive (open ebooks/papers library), 1337x (archive of all media).

  • Z. (down) Notes below. Avoid funnel sales, if you spent money, there's something wrong. Also don't forget good OpSec, self defense gears, and physical/mental strength.
  • A. (go) Development Environment (10 items) (Linux, Neovim, Dev Tools, Languages, Configs, Security, and Dotfiles).
  • B. (go) Complementary Subjects (283 items) (Linguistics, English, Security, OpSec, Psychology, Anthropology, History, Philosophy, Economics, Business, Cooking, Xenology, and Self Defense).
  • C. (go) Fundamentals of Science and Technology (131 items) (Logic, Physics (Classical/Quantum Mechanics, Thermodynamics, Electricity, Relativity, Electronics, Electromagnetism, Optoelectronic, Semiconductor, Fusion), Mathematics (Calculus, Linear Algebra, Statistics, Applied Math), Game Theory, Geology/Geography, Business, Biology, Medical, MCAT, and Their Applications).
  • D. (go) Computer Science and Competitive Programming (181 items) (CPU/OS/Linux/CMake, Git/Vim/Cronjob/Regex, Object Oriented/Functional Programming, Lua/Python/C/Haskell/C++, Data Structures and Algorithms, Artificial Intelligence, Design Patterns, Database Design, Networking/Security/Encryption/Cryptography, Distributed Systems, and System Design).
  • E. (go) Low-Level Programming (10 items) (Assembly/C, Embedded Systems, Interpreter/Compiler, Control Theory, and Robotics).
  • F. (go) Game Dev and Digital Arts (215 items) (Game Theory, Worldbuilding, Game Design, GDevelop, Lua/Love2D, Python/PyGame, TypeScript/KaboomJS, JavaScript/P5JS/Canvas/Phaser, C/Raylib, Godot, C++/OpenGL, C#/Unity, Unreal Engine, Aseprite/LDtk/Tiled/Krita/Inkscape, Gimp/Blender/Kdenlive, and BeepBox/LMMS/Audacity).
  • G. (go) Fullstack Dev and Backend Engineering (286 items) (Figma/JS/TS/Vue/React/NextJS, Java/Spring, Go/Pprof/Testcontainers, Python/Django, Bun/HTMX, C#/DotNet, PostgreSQL/MongoDB/Supabase, REST/GraphQL/GRPC-Protobuf/NSQ/NATS/Kafka, NGINX/Certbot, Docker/Kubernetes/OpenTelemetry/Prometheus/Grafana, AWS/Jenkins/Ansible/OpenTofu (Free Terraform), Angular, Dart/Flutter/Android, and Rust).
  • H. (go) Optional Practice (30 items) with other stacks (Zig, Svelte, PHP/Laravel, Ruby on Rails, CNCF IoT Edge Computing, Data Science/Machine Learning/Large Language Model/PyTorch, and CTF/Reverse Engineering/Hacking).
  • I. (go) Preparation for Job Search and Realities of the Industry (70 items) (Head Ups, Pathways, Resume, Interview, and Reflections).
  • J. (go) Pet Project Ideas (20 items) and advice on open-source contribution.
  • K. (go) Interview Questions (50 items) that I've been asked (Fundamentals, DS&A, Go, JS, and React).
  • L. (go) Interview Preparation Template (7 sections) (Frequent questions, how to avoid traps and answer them properly).
  • M. (go) Non-free Resources (32 items) (Books & Udemy courses, wait for sales).
  • N. (go) Streamlined Noob to SWE L7 Roadmap (500 items) with 9 milestones (Fundamentals, Languages, Tools, Game Dev, Web Dev, Infrastructures, and Production-grade Software).
  • O. (go) Productive Daily Plan (2 sections) for NEETs (Daily normal days and Uposatha/Sabbath days).
  • P. (go) Philosophy in Action (3 sections) (Internal Analysis, External Influences, and Layman's Primer).
  • Q. (go) Chess Practice (25 items) (Fundamentals, London, CaroKann, NimzoIndian, and Bullet).
  • R. (go) Speedcubing Resources (39 sections) (Rubiks, Big Cubes, Blindfolded, and Side Events).
buddhistanarchism

(a manifesto).

Hierarchy is inherently problematic because it will always have the problem of asymmetries: power and information, and thus, will inevitably lead to corruption and exploitation.

Copyright Law is a capitalist mechanism created for the perpetuation of domination and monopoly. All form of knowledge and education should forever be open and free without any restriction.

"Wage slavery refers to a person's dependence on wages or a salary for their livelihood, in a world where the distribution of and conditions for these wages is determined by a specific class."

"A wise man should avoid unchastity as a pit of glowing charcoal. If unable to lead a celibate life, he should not go to another’s wives." - KN Snp 2.14

(up).


A. Development Environment

B. Complementary Subjects

C. Fundamentals of Science and Technology

D. Computer Science and Competitive Programming

E. Low-Level Programming

F. Game Dev and Digital Arts

G. Fullstack Dev and Backend Engineering

H. Optional Practice with other stacks

I. Preparation for Job Search and Realities of the Industry

J. Pet Project Ideas

Try to build them yourself without watching tutorials. I gathered some these on the internets, not all are my original ideas. If you want to work with an open source project, contact their team first and see how it goes. Please don't spam open source projects fishing for contribution, it's just not worth it and you only degrade yourself. Build ones that are not too basic and you can explain them well. Also check the project based learning list.

  • 1. Something that you are interested on or have a need to solve, your personal website, discord bots, tools and mods for hobbies or video games you're playing, emulator, memory trainer, repertoire trainer, maze solver robot, automated irrigation system with an app for calibrations and monitoring, sudoku solver, ant simulator, genetic algorithm visualizer, invent a new board game, schema generator, or just simply automate and sync your daily repetitive tasks (up).
  • 2. Try to create something that will help people, make the world a little bit better for somebody (up).
  • 3. A fully functional text editor that support undo/redo, search/replace, tables, and drawing (up).
  • 4. A free blog/writing collection website with headless CMS (up).
  • 5. A statistical analysis and solution website that based on the United Nation's 17 Sustain Development Goals (up).
  • 6. A peer-to-peer messaging app (up).
  • 7. A habits, health, and nutrition tracker (up).
  • 8. A free course website (Netflix clone but instead of movies you deliver educational content) (up).
  • 9. A content/project management system with task synching and scheduling (up).
  • 10. A 4chan clone (up).
  • 11. A multi-threaded web indexing spider (up).
  • 12. An e-commerce website/app (Amazon clone) that integrate with map, payment, and delivery (up).
  • 13. A decentralized peer-to-peer (not blockchain) barter transaction app with proper backend system that can support a large Anarchy society (up).
  • 14. 3D Printing hardware and software (up).
  • 15. A grid gallery portfolio website with pure HTML/CSS and host on GitHub Pages (up).
  • 16. A personal project/habit/income/expense planner from scratch with NextJS (up).
  • 17. Code 15 classic games from scratch with ECS using Rust/Bevy and Aseprite/LDtk (Street Fighter, Pokemon-like RPG, Shoot 'em Up, Bomberman, Tower Defense, Graph Visualizer, Pacman, Tetris, Galaga, Asteroid, Arkanoid, Frogger, Snake, Cellular Automata, and Pong) (up).
  • 18. A turn-based 2D RPG with physics-based-slingshot-combat from scratch with Godot/Krita and release on Steam and Google (up).
  • 19. Setting up a production-grade REST API with tests, autho/en, caching, PostgreSQL database, and GitHub CI in Go from scratch with Docker/Pprof and AlwaysData/Oracle Cloud Free Tier hosting (up).
  • 20. A fullstack market app for mutual aids with distributed system in Go, NodeJS, GRPC, NextJS frontend, and Docker/K8s/OpenTelemetry/Prometheus/OpenTofu/AWS (up).

K. Interview Questions

  • That I've been asked (Fundamentals, DS&A, Go, JS, and React) (up).

  • 1. (DSA) Explain and compare Procedure, Object Oriented, and Functional Programming.

  • 2. (DSA) Explain the concept of array, linked list, tree, hash map, stack, queue, and priority queue.

  • 3. (DSA) Explain DFS, BFS, and their practical applications.

  • 4. (DSA) Implement a string reverser, palindrome checker, prime number checker, or reverse a linked list.

  • 5. (DSA) Solve an array problem.

  • 6. (DSA) Solve a dynamic programming, a medium string manipulation with trie, or an easy graph problem (up).

  • 7. (JS) Explain hoisting, scope, and closures.

  • 8. (JS) Difference between var, let, and const.

  • 9. (JS) Explain DOM manipulation; how to center a div both horizontally and vertically.

  • 10. (JS) Explain class, arrow function, map-filter-reduce.

  • 11. (JS) Explain async and await.

  • 12. (JS) Explain Node's single threaded event loop model.

  • 13. (JS) Explain callback and promise.

  • 14. (JS) List and explain some ES6 features.

  • 15. (JS) Implement an event emitter from scratch.

  • 16. (JS) Implement map-filter-reduce from scratch.

  • 17. (JS) Implement promise and async/await from scratch; resolve chain promises.

  • 18. (JS) Implement signal from scratch (up).

  • 19. (React) What's the difference between function component and class component.

  • 20. (React) What are props and how children prop works.

  • 21. (React) How Virtual DOM works.

  • 22. (React) Explain all built-in React hooks; explain react router.

  • 23. (React) Best practices of using Redux, Store, State Management, Context and Redux Middleware.

  • 24. (React) How to use GraphQL with React; the difference between REST and GraphQL; the n+1 problem.

  • 25. (React) Implement a listing page in React with TDD using a public API (up).

  • 26. (Go) What's the difference between ACID and BASE; explain in the context of PostgreSQL and MongoDB.

  • 27. (Go) Which features of PostgreSQL/MongoDB did you use.

  • 28. (Go) How to use JSON data in PostgreSQL.

  • 29. (Go) Explain normalization and indexing.

  • 30. (Go) How to drop all required data in PostgreSQL.

  • 31. (Go) How to read 10gb of data from PostgreSQL; how would you read a 10gb file with Go.

  • 32. (Go) What's the difference between HTTP, TCP, UDP, WebSockets, and GraphQL.

  • 33. (Go) Explain HTTPS; what's the difference between certificate and public key.

  • 34. (Go) What's the difference between symmetric and asymmetric encryption.

  • 35. (Go) Name and explain some important services in a cloud platform; cronjob scheduling.

  • 36. (Go) How to scale with and without a cloud platform; how Kubernetes works.

  • 37. (Go) Identify bottleneck in production environment; explain tracing, distributed logging, and metrics (up).

  • 38. (Go) Explain some design patterns that are commonly used in Go.

  • 39. (Go) The difference between parallelism and concurrency; Go's concurrency features and their use cases.

  • 40. (Go) How Go's scheduler works; compare it with the OS scheduler.

  • 41. (Go) Practical ways to use closure in Go.

  • 42. (Go) Explain context package in Go; how would you implement time out; how would you handle errors.

  • 43. (Go) How would you write unit tests in Go; explain mocking and dependency injection.

  • 44. (Go) How would you test a database layer, a service layer, a handler layer, or a third-party callback layer.

  • 45. (Go) Explain common concurrent patterns in Go and their usages.

  • 46. (Go) Explain CAP theorem; how Event Driven works in Go services; orchestrate a micro-services architecture.

  • 47. (Go) Explain producer, consumer, and offset in Kafka; how to concurrently consume and retry.

  • 48. (Go) Implement a task with generics; design and implement an inventory and storefront system.

  • 49. (Go) Implement a parallel URL fetcher with 5 async processes and print a specific field in the JSON respond.

  • 50. (Go) Implement a REST API with a database layer, caching, and rate limiting using only standard libs ((up).

L. Interview Prep Template

I'm looking for a full-time software development job in X (A, B, C; great if remote). Back-end or full-stack regarding anything Go and/or JavaScript (NodeJS, ReactJS, NextJS). I love to work on a quality product or project with proper git workflow, code review, and unit tests. My salary requirements: $X-X/month gross with standard benefits (9-to-5, 13th month pay, full social insurance, health insurance, yearly health check, etc.).

Introduction (up)

  • I'm Lavantien, a Y born in X, and I studied computer engineering at UIT, majoring in embedded systems, and minoring in robotics. Now I'm working mostly as a web developer, I enjoy programming and solving problems. I mostly use Go and JavaScript. I can do front-end but I love develop my back-end skill because there's always something new to learn, like networking, protocols, security, dealing with distributed systems and databases, setting up a robust testing pipeline, and working with third-party integrations and cloud services. During the 7 years of my web development career, I've been involved in some large projects like ETCC E470 and Ackio Mesh, but most of them were small projects and startups where I had the chance to build things from the ground up and participate in the whole development process.

Values that I will bring to the team (up)

  • Good sense of responsibility.
  • When in doubt, I always directly ask questions and clarify with others. I'm open to feedback and welcome criticism.
  • I am good at analyzing problems, reading documentation, and searching for solutions. I always try to find the best ways to save costs and improve profitability for my clients.
  • I have a strong foundation of core programming techniques, data structures and algorithms, design patterns, and networking. I have a robust mental model for debugging and writing code.
  • And I am very intimate with all aspects of backend development and all the nuances of the Go and JavaScript languages. I am very familiar with complex code bases, distributed systems, and third-party integrations.
  • I focus on team objectives. I have a win-win mentality.
  • I love to learn from other people and to constantly improve myself.

Potential incompatibilities with company culture (up)

  • I don't want to speak with anyone unless it's necessary for the job.
  • I don't like to work on a legacy code base or just pure maintenance work.
  • I don't like most of the meetings where people are just bantering and wasting time on what could be just email.
  • I don't like to give vague estimations. I hate it when PMs give unrealistic timelines just to
  • I might come across as being critical, as I don't want to flatter.
  • I love meritocracy. I hate micromanagement, nepotism, cronyism, and favoritism regarding performance reviews.

Description of my favorite project (up)

  • It was a remote international team at Dropezy, a quick commerce app that allows customers to quickly buy necessities like food, vegetables, water, toiletries, etc., applies discounts with a seamless payment process, guaranteed delivery in under 15 minutes, no matter where they are located in supported cities. Our code base is entirely in Go and Flutter. We use GRPC with Protobuf for communication, HTTP callbacks for third-party integrations, and Docker Compose for local development. Our code base is comprised of four monorepos: one for the backend, one for the mobile app, one for the protobuf schemas, and the last one for platform tools like Kubernetes, Terraform, and GCP. I'm fortunate to join in very early in the development process, and I'm also fortunate to be a part of the first production release. My work there focuses mostly on the inventory-order-payment-delivery pipeline, delivery services integration, research on geolocation optimization, writing unit tests to ensure proper coverage, and lastly optimizing MongoDB aggregation pipelines.

Points I would like to clarify with HR (up)

  • Real salary range? Full social insurance? Payment method and frequency?
  • Yearly health checkup? PTO policy? OT policy? Work log?
  • 13th month policy? Project bonus?
  • Who are the clients of the company? What are the domains of projects in the company? What are the sources of funding? How stable is the profitability of the company?
  • What is the longest project in the company, and how did it end up?
  • Layoff possibility? "We can keep the contract but no more salary, or you can write a resignation letter"?
  • Is there nepotism in the company (e.g., HRM is the CEO's wife and CTO is the CEO's brother)? Cronyism? Favoritism regarding performance reviews? Micromanagement?

Questions I would like to ask the tech lead (up)

  • Is there a minimum standard for the code base? Like, regression testing, 80% on the test coverage, or all PRs need to be reviewed and rebase before merging? And what does the CI pipeline look like?
  • Are there sufficient onboarding documentation and a development wiki? How many SLOC in the code base?
  • What are the problems that you expect this position to solve? Could you describe a typical ticket or story?
  • How are stories and tickets divided? What does a typical sprint look like? Timeline and release cycle?
  • How are estimations and decisions made? Evident-based solutions, data-driven approach, i.e., profiling and benchmarking first? Does the team keep decision records?
  • How many users are the system serving? What kind of architecture? Why chose microservices? What are the network latency between each service and the amount of serialization and deserialization on each request? Are you solving problems you don't have?
  • How does the team evaluate performance? What are the specific metrics? Are there peer reviews?
  • What are the types of meetings? How does each of them go? What does a typical working day look like?

Feedback for the interview process (up)

  • Try to focus on the positive.

M. Non-free Resources


N. Streamlined Noob to SWE L7 Roadmap


O. NEET Productive Daily Plan

Normal days

  1. 7 hours of sleep (11pm-6am); 30 minutes of morning stretching and breath meditation, 30 minutes of night stretching and breath meditation.
  2. 2 sets of 30 minutes of walking meditation; 15 minutes of melee combat (Muay, Boxing, Jiu-jitsu) and weapons training (Knife, Staff, Bow, Gun, Concealed); 15 minutes of alternate-day body-weight exercises:
    1. On Mon, Wed, Fri: Strength, 4 sets of:
      1. upper body: 7 push ups, 2 pull ups;
      2. lower body: 14 squats;
      3. core: 7 hanging knee raises;
      4. rest: 21 breaths.
    2. On Tue, Thu: Cardio, 7 sets of 40 jumping rope reps with a 21 breaths rest.
    3. On Sat, Sun: rest day.
  3. 1 hour of training Pali or English (7am-8am).
  4. Abstain:
    1. from killing any being whether human or animal, abortion, euthanasia, suicide, wars;
    2. from stealing, thievery, slavery, exploitations, fraud, bribery, nepotism, cronyism, favoritism;
    3. from sexual misconducts, assaults, adultery, prostitution, masturbation, hookups, transactional relationships;
    4. from lying, deceiving, cheating, forgery, propaganda;
    5. from alcohol, drugs, smoking, gambling, pornography, overeating, clubbing, partying, etc.
  5. 30 minutes of one meal of vegetables, fruits, and pasture raised chicken eggs; 15 minutes of house chores.
  6. 8 hours of programming (8am-4pm).
  7. 5 hours of gaming, chess, cubing, or researching, writing, and making videos (5pm-10pm) (up).

Uposatha/Sabbath days, average 4 days per month, base on lunar calendar

  1. 7 hours of sleep (11pm-6am); 1 hour morning stretching and breath meditation (6am-7am), 1 hour night stretching and breath meditation (9pm-10pm).
  2. 2 sets of 1 hours of walking meditation.
  3. 2 hours of reading scriptures (8am-10am).
  4. Abstain:
    1. from killing any being whether human or animal, abortion, euthanasia, suicide, wars;
    2. from stealing, thievery, slavery, exploitations, fraud, bribery, nepotism, cronyism, favoritism;
    3. from all sexual activities;
    4. from lying, deceiving, cheating, forgery, propaganda;
    5. from alcohol, drugs, smoking, gambling, pornography, overeating, clubbing, partying, etc;
    6. from meals at the wrong times and at night;
    7. from entertainments and beautification;
    8. from sleeping on high or luxury beds.
  5. 30 minutes of one meal of vegetables, fruits, and pasture raised chicken eggs; 30 minutes of house chores.
  6. 8 hours of programming (10am-4pm, 5pm-7pm).
  7. 2 hours of listening to dhamma talks (7pm-9pm).
  8. 1 hours of reflection and contemplation (10pm-11pm) (up).

P. Philosophy in Action

1. Internal Analysis (Buddhism) (up)

  • 8 external influences: gain and loss, fame and disgrace, blame and praise, pleasure and pain.
  • The keeping of the five precepts and eight precepts on Uposatha days; strengthening Right View and analysis frameworks.
  • The training in Noble Eightfold Path.
  • The training in healthy lifestyle, strength, and endurance.
  • The training in self defense and weapons usage.

2. External Analysis (Anarchism) (up)

  • 8 core aspects of a society: infrastructure, healthcare, welfare, education, council of direct democracy, economics, defense, intelligence.
  • 3 core analyses of hierarchy: mean-end disunity; violent domination, exploitation, and deception; self perpetuation.
  • The abolition of all forms of hierarchy, state, class, slavery, involuntary servitude, exploitation, domination, prison system, and taxation; the uprooting of any chance of re-arising of any form of hierarchy, state, or class; the prevention of any form of upstartism and exploitation.
  • The abandonment of all forms of private property and land ownership or representation, and the protection of personal properties based on usage.
  • Freedom and solidarity; stateless classless moneyless society via library economy; freedom of movement, of speech, of assembly, of horizontal association, of religion, to self defense and to keep and bear arms, of restoration or social sanction or eviction or excommunication of bad people from a community; the protecting of the ecology and the conscious continuous ongoing revolution, of mutual aids.

3. Layman's Primer - A collection of 30 discourses (up)

Read and try to understand and memorize by heart the discourses to develop Right View, what’s right and what’s wrong, what’s to be done and what’s not to be done, and to be able to recall the Dhamma in dire circumstances. Keep the five precepts (understand all the specificities, not break them yourself, not encourage the breaking of them, and not praise the breaking of them) everyday, keep the eight precepts on Uposatha days. Practice the Noble Eightfold Path according to the Buddha’s instructions (pay attention to Right Livelihood as you’re a lay person). Develop the habit of contemplation and meditation (both sitting and walking), see what’s obstructing the mind and what’s nourishing it.

(up)


Q. Chess Practice

R. Speedcubing Resources


Notes

My reference resources and some experiences as a software engineer (60% backend/game/robotic, 30% frontend, 10% ops, working in game dev since 2007, robot engineering since 2015, and web dev since 2018), it should be a good “birds-eye view” for a programmer who want to learn things the bottom-up approach. This list is handcrafted and not generated by AI nor contains any affiliation. Some notes before proceeding with the list (up):

  • This guide is based on 100% free and quality resources vetted and curated by me. It’s not mean to be an exhaustive list. It aims to provide just a minimum skeleton that built from the ground up. If you found something cool please share in the comment below and I can add it to the list after vetting. Copy/clone/fork this so that you can use the checkboxes.
  • Avoid sinking time into pointless videos made by grifters and course/dream sellers, don’t let them exploit your emotions and insecurities for views and money. This is not a get rich quick course, or get 6 figures salary roadmap, it's just my knowledge base.
  • Practice the habit of always checking official documentations first before watching tutorials, endure the inconvenient in the moment, you'll become much better and more independent in the long run. Take the knowledge and leave, don't worship the educator.
  • For YouTube videos, just blast through them in 2x speed, enjoy the ride, and code along. Beware the sales funnel in some videos and don't waste money on those. Make sure the concepts are well sticked to your mind before moving on or else you're just wasting your time. Use uBlock Origin and SponsorBlock to combat the evil advertisement industry.
  • For someone who’s self-taught, it will take more than 18 months to thoroughly finish the whole Streamlined Noob to SWE L7 Roadmap, assumes that you spend at least 8 hours everyday working on it, there is no shortcut.
  • Remember the 80/20 rule: you only need to do 20% (easy things first) to achieve 80% of results (good enough). The rest 20% is exponentially expensive, so tread carefully. Have a plan in mind and focus on a certain niche, for example, if you want to be hirable fast focus on web dev with Go and NextJS, if you want to have a lot of fun and can do useful things right away and can earn money via selling games on Steam then focus on game dev and robotics first. And also participate in free competitions or game jams if you have chance.
  • Have a Daily Routine planed out in details and stick with it. Cultivate good habits and drop bad habits gradually. Please stay healthy in both body and mind.
  • Just go through the list in a top-down order, one-by-one, and you’re good to go. Stuffs inside parentheses mean optional. Numbers in the bracket are total duration in 2x speed and number of video in that playlist.
  • All you need is a large sample size (build a lot of projects) for a comprehensive mental model. It all comes down to muscle memory. And also to have a beefy portfolio of finished projects.
  • Think about the problems in your life or others that you want to solve and try to apply your knowledge.
  • Regarding code editor, using whatever feels comfortable is good enough, but Vim motions is a must-have. I recommend Neovim, it’ll be much more enjoyable when you have full control of your dev environment.

(up).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment