1. Software Architecturehistorical

    What architecture is, why it is needed, its categories, architecture patterns, and the hard and soft skills needed to become an architect.

  2. Architecture Patternshistorical

    Monolithic, layered, event-driven, CQRS, microservice, and plug-in architecture patterns.

  3. Monolithic Architecturehistorical

    What monolithic architecture is and its advantages and disadvantages.

  4. Layered Architecturehistorical

    What layered architecture is and its evolution from one, two, and three tiers to DDD four-layer, hexagonal, and onion architectures.

  5. Read/Write Separation Architecturehistorical

    What read/write separation is, why it is needed, where it applies, how to design it at the service and storage layers, and the materialized-view pattern.

  6. Event-Driven Architecturehistorical

    What event-driven architecture is, why it is needed, its real-time trade-off, and publisher-subscriber and event-stream design patterns.

  7. Domain-Driven Designhistorical

    What DDD is: domains, ubiquitous language and bounded contexts, entities and value objects, aggregates, domain events, repositories and factories, and a DDD design process.

  8. Microserviceshistorical

    Historical notes on what microservice architecture is, its relationship with SOA, trade-offs, decomposition, project architecture, and the microservice technology stack.

  9. OpenID Connecthistorical

    Historical notes on what OpenID Connect is and how its flow differs from OAuth by adding OpenID identity information and an ID Token.

  10. JWThistorical

    Historical JWT notes covering what JWT is, why it is used, JWT versus sessions, token structure, and the basic request flow.

  11. OAuthhistorical

    Historical OAuth 2.0 notes covering why OAuth is needed, the authorization flow, grant modes, token refresh, and scopes.

  12. How to Design a Configuration Centerhistorical

    What a configuration center is, why it is needed, storage, client notification, service discovery, caching, canary release, and an example configuration-center database design.

  13. How to Design a Load-Balancing Componenthistorical

    What load balancing is, why it is needed, common algorithms, hardware/software/DNS choices, L2/L3/L7 approaches, and client-side versus server-side load balancing.

  14. How to Design a Service Registryhistorical

    What a service registry is, why it is needed, server-side and client-side design, service discovery and routing, registry components, and ZooKeeper versus Eureka.

  15. How to Design an API Gatewayhistorical

    What an API gateway is, why it is needed, request forwarding and filtering, I/O models, common gateway components, BFF, and gateway aggregation.

  16. How to Design a Monitoring Systemhistorical

    What monitoring is, why microservices need it, and the three parts: logs, metrics, and tracing.

  17. How to Design Distributed Tracinghistorical

    What tracing is, why it is needed, Span/Trace/Annotation data, sampling, collection approaches, storage, display, and common tracing components.

  18. How to Design a Fault-Tolerance Componenthistorical

    What fault tolerance is, service avalanche, and common techniques including timeouts, retries, rate limiting, circuit breaking, isolation, and degradation.

  19. How to Design Log Monitoringhistorical

    What log monitoring is, why it is needed, logging strategy, collection, aggregation, indexing and storage, analysis, and ELK.

  20. How to Design Metrics Monitoringhistorical

    What metrics monitoring is, why it is needed, what to monitor, how to collect and store metrics, alerting, and common metrics components.

  21. How to Design Authentication and Authorizationhistorical

    Authentication, authorization, and credentials; common techniques; and how authentication and authorization are integrated into a microservice architecture.

  22. ER Diagramhistorical

    What an ER diagram is, with a PlantUML example showing entities, attributes, and relationships.

  23. UMLhistorical

    A note index for structural modeling, behavioral modeling, architecture modeling, and common UML tools.

  24. Class Diagramhistorical

    What a class diagram is, how classes/interfaces and common class relationships are represented, with PlantUML examples.

  25. Sequence Diagramhistorical

    What a sequence diagram is, with a sanitized PlantUML example showing interactions among a user, development platforms, a service, and its deployed node.

  26. Flowcharthistorical

    What a flowchart is, with PlantUML examples for a verification workflow and a login-interface activity flow.

  27. State Diagramhistorical

    What a state diagram is, with a PlantUML example describing login-state transitions.

  28. Component Diagramhistorical

    What a component diagram is, with a sanitized PlantUML example showing dependencies among services, libraries, storage, and local memory.

  29. Deployment Diagramhistorical

    What a deployment diagram is, with a sanitized PlantUML example showing hardware/network topology and deployed software components.

  30. Architecture Diagramshistorical

    Business, application, technical, data, security, and deployment architecture diagrams, plus the 4+1 architectural view model.

  31. Functional Options Patternhistorical

    A Go functional-options example for constructing an object with default values while allowing selected fields to be changed flexibly.

  32. Function Types as Interfaceshistorical

    What an interface function is, why it is useful, and a Go implementation that allows either function values or structs to satisfy the same interface.

  33. Event Sourcinghistorical

    What event sourcing is, why it is needed, how it addresses some CRUD problems, its disadvantages, and design notes.

  34. Publish–Subscribe Patternhistorical

    What the publish–subscribe pattern is, why it is needed, how it differs from producer–consumer and observer patterns, and a Go implementation.

  35. Producer–Consumer Patternhistorical

    What the producer/consumer pattern is, why it is needed, and Go implementations using channels, timeouts, object-oriented encapsulation, and error handling.

  36. Open–Closed Principlehistorical

    What the open–closed principle is, why it is needed, and how to implement it through abstractions, inheritance, composition, and aggregation.

  37. Liskov Substitution Principlehistorical

    What the Liskov substitution principle is, why it is needed, and how subclasses should preserve the meaning of parent-class behavior.

  38. Dependency Inversion Principlehistorical

    What the dependency inversion principle is, why it is needed, and implementation guidance centered on interfaces and abstract classes.

  39. Single Responsibility Principlehistorical

    What the single responsibility principle is, why it is needed, and how to separate different responsibilities into different classes or modules.

  40. Interface Segregation Principlehistorical

    What the interface segregation principle is, why it is needed, and how to keep interfaces small and tailored to their callers.

  41. Law of Demeterhistorical

    What the Law of Demeter is, why it is needed, and how to reduce coupling by limiting what objects depend on and expose.

  42. Composition Reuse Principlehistorical

    What the composition reuse principle is, why it is needed, and how composition or aggregation can be preferred over inheritance for code reuse.

  43. Object-Oriented Design Principleshistorical

    What object-oriented design principles are, why they are needed, and the main principles covered by these notes.

  44. Object-Oriented Design Patternshistorical

    What design patterns are and the three main categories: creational, structural, and behavioral.

  45. Singleton Patternhistorical

    A class has one and only one instance, with Java and Go implementations including eager, lazy, DCL, static-inner-class, enum, mutex, and sync.Once approaches.

  46. Proxy Patternhistorical

    The proxy pattern adds functionality around an existing class or function without changing the original code, with static, dynamic, AOP, Go, and cache-proxy examples.

  47. Template Methodhistorical

    The template-method pattern applies when the overall algorithm steps are fixed while some parts vary, with Java and Go implementations and a combined template/factory/strategy example.

  48. Factory Methodhistorical

    The factory-method pattern uses multiple factory classes and delays concrete product creation to subclasses.

  49. State Patternhistorical

    The state pattern selects different processing logic according to the current state, with Java and Go examples.

  50. Builder Patternhistorical

    The builder pattern constructs a complex object from many smaller parts; the builder creates the parts and the director assembles them.

  51. Strategy Patternhistorical

    The strategy pattern selects one of several algorithms for accomplishing the same task according to a type or context, with Java and Go examples.

  52. Observer Patternhistorical

    The observer pattern broadcasts state changes from a subject to observers, with Java, Go, and application examples.

  53. Decorator Patternhistorical

    The decorator pattern adds new functionality to a class or function without changing the original code, with Java and Go examples.

  54. Chain of Responsibilityhistorical

    The chain-of-responsibility pattern links handlers that can process the same type of request, with Java, Go, and filter-chain examples.

  55. Adapter Patternhistorical

    The adapter pattern is used to make an old-system interface compatible with a new interface, with Java and Go examples.

  56. Service Meshhistorical

    Historical notes on cloud native, cloud platforms, VPCs, and the evolution, purpose, and common implementations of Service Mesh.

  57. Pluggable Architecturehistorical

    Original VNote placeholder for pluggable architecture.

  58. How to Design a Container Scheduling Systemhistorical

    A short note on what container scheduling is, why it is needed, and Kubernetes as a scheduling component.

  59. How to Design a Pipeline Systemhistorical

    A short note on CI/CD pipelines, their purpose, design, and Jenkins.

  60. Soft Skillshistorical

    A short pointer to the programmer career-development note.

  61. dothistorical

    Notes on the DOT language and Graphviz: graphs, nodes, edges, attributes, subgraphs, ports, and example diagrams.

  62. draw.iohistorical

    A short note containing a custom diagrams.net shape library and reference links.

  63. Use-Case Diagramhistorical

    What a use-case diagram describes, with a simple PlantUML example.

  64. Fan-In / Fan-Outhistorical

    Reference links for Go pipeline fan-out and fan-in concurrency patterns.

  65. Pipelinehistorical

    Reference link for the Go pipeline concurrency model.

  66. Prototype Patternhistorical

    Prototype-pattern notes with UML, Java and Go clone examples, plus a generic DAO example that returns cloned data.

  67. Abstract Factory Patternhistorical

    Abstract-factory notes showing related product families and a Go implementation with engines, wheels, factories, and a client.

  68. Simple Factory Patternhistorical

    Simple-factory notes in Java and Go, followed by a generic template-method + simple-factory + strategy example.

  69. Design Patterns I Have Usedhistorical

    A short interview-style note on where singleton, prototype, factory, builder, facade, decorator, template method, state, strategy, and proxy patterns were used.

  70. Flyweight Patternhistorical

    Flyweight-pattern notes with UML and a Java example using a chess-object pool.

  71. Facade Patternhistorical

    Facade-pattern notes with UML plus Java and Go examples that wrap a complex process behind one interface.

  72. Bridge Patternhistorical

    Bridge-pattern notes for class hierarchies with multiple varying dimensions, with UML and a Java brand/device example.

  73. Composite Patternhistorical

    Composite-pattern notes for tree-shaped whole/part structures, with Java and Go file-tree examples.

  74. Mediator Patternhistorical

    Mediator-pattern notes with UML, a Java department example, and a Go computer-component example.

  75. Command Patternhistorical

    Command-pattern notes with a Java Course example, command objects, and a command invoker.

  76. Memento Patternhistorical

    Memento-pattern notes showing how to save an object's state and restore it later.

  77. Interpreter Patternhistorical

    A minimal original note for the interpreter design pattern.

  78. Visitor Patternhistorical

    Visitor-pattern notes separating data structures from operations, with a Java course example.

  79. Iterator Patternhistorical

    Iterator-pattern notes showing Java and Go implementations for traversing aggregate objects.

  80. Object-Oriented Programminghistorical

    A short index note linking object-oriented design principles and design patterns.

  81. Programming Paradigmshistorical

    A short index of procedural, event-driven, object-oriented, and functional programming paradigms.

  82. Software Engineeringhistorical

    A minimal note outlining the software-development process and the development, testing, and production environments.