Skip to content

Developer Tools & Knowledge

Developer tools and foundational knowledge notes covering algorithms, version control, licensing, and engineering fundamentals.

Algorithms

An algorithm is a finite sequence of well-defined instructions that takes an input and produces a…

General

This resource is created not based on any curriculum, but a amalgamation of what

Git

Git is a (DVCS) designed to track changes in source code During software development. Unlike cent…

Licensing

Every piece of software you write, compile, or deploy is subject to copyright law by default. Und…

Probabilisticml

How to Use These Notes

  1. Start with the fundamentals — build a solid foundation before moving to advanced topics
  2. Work through examples — follow along with the worked examples to build intuition
  3. Test yourself — use the practice problems and flashcards to check your understanding
  4. Review regularly — spaced repetition helps retain what you have learned

Common Mistakes

Choosing the wrong algorithm based on input size: Big-O notation tells you how an algorithm scales, but constant factors matter for small inputs. A O(n^2) algorithm with small constants may outperform O(n log n) for small datasets. Always profile with realistic data sizes before optimising.

Ignoring version control discipline: Committing broken code, writing cryptic commit messages, or not branching for features creates a tangled history that is hard to debug. Use meaningful commit messages, feature branches, and pull requests for reviewable, bisectable history.

Not understanding licensing before using open-source code: Using GPL-licensed code in a proprietary project, or failing to include required attribution, creates legal liability. Always check the license of dependencies before incorporating them into your project.

Cross-References

Intuition

Good software engineering is less about knowing every command and more about building a workflow that scales with complexity. Git lets you experiment without fear — branches are cheap, and the reflog means you can always recover. Understanding version control deeply means you stop fighting your tools and start using them to move faster. Licensing knowledge prevents legal trouble before it starts, and a solid dev environment means you spend less time fighting configuration and more time building.

The tools in this collection — Git, licensing, productivity systems, and probabilistic machine learning — all share a common theme: they help you manage complexity. Whether it is the complexity of a codebase across time (Git), the complexity of legal obligations (licensing), or the complexity of a ML pipeline (probabilistic ML), the principle is the same: structure your work so that each piece is understandable in isolation and composable with the rest.

Approach these notes by first understanding the fundamentals of each tool, then building up to advanced topics. The practice problems and flashcards are designed to reinforce the mental models you need — not just memorisation, but the kind of deep understanding that lets you troubleshoot novel situations.