learning-notes icon indicating copy to clipboard operation
learning-notes copied to clipboard

Notes regarding things I have learned

Project status:

  • ✅ Actively maintained
  • 🐢 Limited bandwidth
  • 🔒 Not looking for contributions from others

Learning notes

These are some notes regarding things I have learned.

You can read the notes at learning-notes.mistermicheels.com or directly on GitHub. If you prefer to read them on GitHub, you can use the overview below to navigate (generated by markdown-notes-tree).

  • Architecture and design
    • Architectural boundaries
    • Architectural fitness functions
    • Architecture and people
    • Circular dependencies
    • Deletes
    • Deployable components
    • Duplication
    • Exception handling
    • Humble Object pattern
    • Inversion of control
    • Names
    • Separation of concerns
    • Architectural boundaries details
      • Boundaries and the database
      • Boundaries and duplication
      • Boundaries and third-party dependencies
      • Boundaries and the web
      • Horizontal versus vertical separation
      • Separation mechanisms
    • Object-oriented design
      • Avoiding fat service classes
      • Composition over inheritance
      • SOLID principles
    • Reference architectures
      • Clean Architecture
      • Layered architecture
      • Microservices
      • Package by feature or component
    • Visualizing architecture
      • C4 model
      • Visual dependency analysis tools
  • Data
    • CAP theorem
    • Data schema migration
    • SQL, NoSQL, NewSQL
    • SQL
      • ACID properties
      • Database normalization
      • Optimistic and pessimistic locking in SQL
      • Transaction isolation levels
  • Java
    • Concurrency
    • Date and Time API
    • Equals
    • Exceptions
    • Generics
    • Interfaces
    • Java Platform Module System
    • Lambda expressions
    • Optional type
    • Overloading, overriding and method hiding
    • Streams
    • Concurrency details
      • Locking
      • Thread safety
      • Threads
  • JavaScript
    • Event loop
    • Object prototypes and classes
    • Scope and closures
    • Spread syntax, rest parameters and destructuring
    • The this keyword
    • TypeScript
      • Compiler API
      • Conditional types
      • Index types
      • Nullable types and optional parameters/properties
      • Runtime type checking in TypeScript
      • Type guards
  • Mindset
    • Ask the dumb questions
    • Concepts, not code
    • Fail fast
    • Hammock-driven development
    • It depends
    • It's about people
    • Keep it simple
    • Pragmatism and imperfectionism
    • Work-life balance
  • Processes and techniques
    • Branch By Abstraction and application strangulation
    • Client-first design
    • Code review and collaboration workflows
    • Dealing with uncertainty
    • Feature flags
    • Issue troubleshooting
    • Managing technical debt
    • Refactoring
    • Small commits and pull requests
    • Static analysis
    • Team decision-making
    • Testing
    • Trunk Based Development
    • Testing details
      • Testing after production
      • Testing patterns
  • Soft skills
    • Expectation management
  • Web
    • Cookies and Web Storage
    • CSS
      • Box model
      • Browser compatibility
      • Flexbox
      • Grids
      • Inheritance, the cascade and specificity
      • Naming classes
      • Positioning
      • Responsive design
      • Sass/SCSS
      • Selectors
      • Units

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0