Tag: Java
Liveness is not health
The worst Kubernetes outage I keep seeing is not a node dying. It is a slow database, a liveness probe that talks to that database, and a cluster that then kills every pod that was still doing useful work.
Liveness does not mean “the app is healthy.” It means “this process is so stuck that Kubernetes should shoot it.” If you point that gun at a dependency, you will shoot the fleet.
Spring @Transactional does not mean what you think
In review I still see @Transactional used as a blessing: put it on a method, and the database will behave. It will not. Spring starts a transaction when a proxy intercepts an incoming call. If the call never hits the proxy, you have no transaction, no rollback, and a very confusing production bug.
What I believed → what I do now
I used to sprinkle @Transactional on every service method “to be safe.” I now put it on the one method that is the use-case boundary, I write a test that proves rollback, and I treat same-class private calls as a smell.
Java, Spring, Kubernetes
A map of how I actually run backend software: Java on the JVM, Spring as the application layer, Kubernetes as the place it lives. Start here, then open the note that matches the problem in front of you.
This is not a tutorial index. It is the order I would walk a teammate through after an incident.
If you are new here
- Spring
@Transactionaldoes not mean what you think — where transactions actually start, and why a method calling another method onthissilently does nothing. - Liveness is not health — the Kubernetes outage that looks like a crash loop but started as a slow dependency.
- Reliability lessons from SQLite — why a tool that solves more problems than it creates stays in production.
The Java course is the longer path if you want to write this stack with me, not only read about it.
Tag: Kubernetes
Liveness is not health
The worst Kubernetes outage I keep seeing is not a node dying. It is a slow database, a liveness probe that talks to that database, and a cluster that then kills every pod that was still doing useful work.
Liveness does not mean “the app is healthy.” It means “this process is so stuck that Kubernetes should shoot it.” If you point that gun at a dependency, you will shoot the fleet.
Java, Spring, Kubernetes
A map of how I actually run backend software: Java on the JVM, Spring as the application layer, Kubernetes as the place it lives. Start here, then open the note that matches the problem in front of you.
This is not a tutorial index. It is the order I would walk a teammate through after an incident.
If you are new here
- Spring
@Transactionaldoes not mean what you think — where transactions actually start, and why a method calling another method onthissilently does nothing. - Liveness is not health — the Kubernetes outage that looks like a crash loop but started as a slow dependency.
- Reliability lessons from SQLite — why a tool that solves more problems than it creates stays in production.
The Java course is the longer path if you want to write this stack with me, not only read about it.
Tag: Production
Liveness is not health
The worst Kubernetes outage I keep seeing is not a node dying. It is a slow database, a liveness probe that talks to that database, and a cluster that then kills every pod that was still doing useful work.
Liveness does not mean “the app is healthy.” It means “this process is so stuck that Kubernetes should shoot it.” If you point that gun at a dependency, you will shoot the fleet.
Spring @Transactional does not mean what you think
In review I still see @Transactional used as a blessing: put it on a method, and the database will behave. It will not. Spring starts a transaction when a proxy intercepts an incoming call. If the call never hits the proxy, you have no transaction, no rollback, and a very confusing production bug.
What I believed → what I do now
I used to sprinkle @Transactional on every service method “to be safe.” I now put it on the one method that is the use-case boundary, I write a test that proves rollback, and I treat same-class private calls as a smell.
Tag: Spring
Liveness is not health
The worst Kubernetes outage I keep seeing is not a node dying. It is a slow database, a liveness probe that talks to that database, and a cluster that then kills every pod that was still doing useful work.
Liveness does not mean “the app is healthy.” It means “this process is so stuck that Kubernetes should shoot it.” If you point that gun at a dependency, you will shoot the fleet.
Spring @Transactional does not mean what you think
In review I still see @Transactional used as a blessing: put it on a method, and the database will behave. It will not. Spring starts a transaction when a proxy intercepts an incoming call. If the call never hits the proxy, you have no transaction, no rollback, and a very confusing production bug.
What I believed → what I do now
I used to sprinkle @Transactional on every service method “to be safe.” I now put it on the one method that is the use-case boundary, I write a test that proves rollback, and I treat same-class private calls as a smell.
Java, Spring, Kubernetes
A map of how I actually run backend software: Java on the JVM, Spring as the application layer, Kubernetes as the place it lives. Start here, then open the note that matches the problem in front of you.
This is not a tutorial index. It is the order I would walk a teammate through after an incident.
If you are new here
- Spring
@Transactionaldoes not mean what you think — where transactions actually start, and why a method calling another method onthissilently does nothing. - Liveness is not health — the Kubernetes outage that looks like a crash loop but started as a slow dependency.
- Reliability lessons from SQLite — why a tool that solves more problems than it creates stays in production.
The Java course is the longer path if you want to write this stack with me, not only read about it.
Tag: Transactions
Spring @Transactional does not mean what you think
In review I still see @Transactional used as a blessing: put it on a method, and the database will behave. It will not. Spring starts a transaction when a proxy intercepts an incoming call. If the call never hits the proxy, you have no transaction, no rollback, and a very confusing production bug.
What I believed → what I do now
I used to sprinkle @Transactional on every service method “to be safe.” I now put it on the one method that is the use-case boundary, I write a test that proves rollback, and I treat same-class private calls as a smell.
Tag: Jvm
Java, Spring, Kubernetes
A map of how I actually run backend software: Java on the JVM, Spring as the application layer, Kubernetes as the place it lives. Start here, then open the note that matches the problem in front of you.
This is not a tutorial index. It is the order I would walk a teammate through after an incident.
If you are new here
- Spring
@Transactionaldoes not mean what you think — where transactions actually start, and why a method calling another method onthissilently does nothing. - Liveness is not health — the Kubernetes outage that looks like a crash loop but started as a slow dependency.
- Reliability lessons from SQLite — why a tool that solves more problems than it creates stays in production.
The Java course is the longer path if you want to write this stack with me, not only read about it.
Tag: Databases
Reliability Lessons From SQLite
Talk from SSW 2026.
Takeaways
- SQLite is used so much because it solves more problems than it creates.
Notes
- DO-178B Software considerations in Airbone Systems and Equipment Certification
it leads to create Fossil: Better Project Management MC/DC
Tag: Sqlite
Reliability Lessons From SQLite
Talk from SSW 2026.
Takeaways
- SQLite is used so much because it solves more problems than it creates.
Notes
- DO-178B Software considerations in Airbone Systems and Equipment Certification
it leads to create Fossil: Better Project Management MC/DC
Tag: Example
Example: video note
This is a starter video note. Copy it, or delete it once you add your own.
Use note_type = "video" and put the YouTube URL in source so the video embeds at the top. Headings like 12:40 make timestamped notes easy to scan.
Takeaways
- The browser event loop is a queue: JavaScript runs one thing at a time, then picks the next callback.
- Rendering and I/O are not the same queue as your JS callbacks.
setTimeout(fn, 0)does not run immediately; it waits until the current stack is clear.
Notes
01:15 — Call stack
JS is single-threaded. Each function call is pushed onto the stack and popped when it returns.
Example: book note
This is a starter book note. Copy it, or delete it once you add your own.
Use note_type = "book", creator for the author, and one heading per chapter. Set status to in-progress while you are still reading.
Takeaways
- Reliability, scalability, and maintainability are the three reasons we bother with data systems.
- There is no single storage engine that is best for every access pattern.
- Replication and partitioning are separate problems; most systems need both.
Chapter 1 — Reliable, Scalable, and Maintainable Applications
Reliability means the system keeps working when things go wrong, not only in the happy path.
Tag: Javascript
Example: video note
This is a starter video note. Copy it, or delete it once you add your own.
Use note_type = "video" and put the YouTube URL in source so the video embeds at the top. Headings like 12:40 make timestamped notes easy to scan.
Takeaways
- The browser event loop is a queue: JavaScript runs one thing at a time, then picks the next callback.
- Rendering and I/O are not the same queue as your JS callbacks.
setTimeout(fn, 0)does not run immediately; it waits until the current stack is clear.
Notes
01:15 — Call stack
JS is single-threaded. Each function call is pushed onto the stack and popped when it returns.
Tag: Distributed-Systems
Example: book note
This is a starter book note. Copy it, or delete it once you add your own.
Use note_type = "book", creator for the author, and one heading per chapter. Set status to in-progress while you are still reading.
Takeaways
- Reliability, scalability, and maintainability are the three reasons we bother with data systems.
- There is no single storage engine that is best for every access pattern.
- Replication and partitioning are separate problems; most systems need both.
Chapter 1 — Reliable, Scalable, and Maintainable Applications
Reliability means the system keeps working when things go wrong, not only in the happy path.