Skip to content
SparkTime, home
Topic · 137 pieces · page 2 of 8

Software Engineering

Architecture, backend, practices and lessons from production.

Earlier in Software Engineering

Page 2 of 8

Technology

29 min read

JPA and Hibernate: Entities, the Persistence Context, Spring Data and Flyway Migrations

Replace the in-memory repository with a real PostgreSQL database using JPA, Hibernate and Spring Data: map an entity, manage the schema with Flyway migrations, understand the persistence context and dirty checking, write queries, and read the SQL Hibernate actually generates, including a real failure only PostgreSQL revealed.

Technology

18 min read

Dependency Injection and Inversion of Control: The Idea Behind Spring

Understand dependency injection and inversion of control from first principles: wire objects by hand, build a tiny container, then see the real Spring container create beans, resolve ambiguity, manage scopes and lifecycle, and fail with the errors you will actually meet.

Technology

20 min read

HTTP, JSON and REST APIs: How Web Backends Talk

Understand what actually travels between a client and a Java backend: the HTTP request and response, methods and their guarantees, status codes, headers, JSON and how Java maps to it, and how to design a clean REST API, with real captured traffic and real JSON mapping.

Technology

30 min read

Project 2: Move the Expense Tracker to PostgreSQL with JDBC

Take the Expense Tracker CLI and add a PostgreSQL repository behind the same interface: an idempotent schema, a transactional bulk import, a connection pool, one shared contract test for every implementation, a fat jar, and an honest review.

Technology

25 min read

JDBC: Talking to a Database from Java

Learn JDBC, the standard way Java programs use a relational database: connecting with a driver, running queries with PreparedStatement, mapping rows, preventing SQL injection, transactions, error codes, batching and connection pooling, with every program run against PostgreSQL 18.

Technology

21 min read

SQL and PostgreSQL Fundamentals for Java Developers

Learn the SQL that backend developers use every day on PostgreSQL: tables and constraints, inserting, querying, joining and grouping data, transactions and isolation, indexes and query plans, and normalisation, with every statement run on a real PostgreSQL server.

Technology

29 min read

Project 1: Build an Expense Tracker CLI in Plain Java

Build your first complete Java application: a command-line expense tracker with a clear design, money handled correctly, a file-based repository behind an interface, automated tests, a Maven build, and a runnable jar, then review it honestly.

Technology

15 min read

Maven: What It Does and How to Use It

Learn what a build tool does and how Maven does it: the standard project layout, the pom.xml, dependencies and scopes, transitive dependencies, the build lifecycle, plugins, and the common failures, all checked against a real project.

Technology

18 min read

Debugging: Errors, Stack Traces, the Debugger and Logging

A method for finding bugs instead of guessing: read compiler errors and stack traces properly, form and test hypotheses, use breakpoints and stepping in a debugger, log usefully at the right level, and reach for thread dumps and heap dumps when the problem is a hang or a leak.

Technology

16 min read

File I/O and Serialization

How to read and write files in modern Java with Path and Files, why character encoding matters, how to stream large files safely, how to avoid path traversal, and what Java serialization really is, why it is risky, and what to use instead.

Technology

16 min read

Executors, Futures, Concurrent Collections and Virtual Threads

The concurrency tools you should actually use: thread pools with ExecutorService, Callable and Future, producer-consumer with BlockingQueue, ConcurrentHashMap and friends, CompletableFuture pipelines, and virtual threads from Java 21, including what they do and do not do.

Technology

15 min read

Concurrency Fundamentals: Threads, Races and Synchronisation

Concurrency taught from the problems: lost updates, visibility and deadlock. Threads and the Java Memory Model, race conditions and atomicity, synchronized, volatile, atomic classes and locks, with runnable demonstrations and honest advice on what each tool does and does not guarantee.

Technology

16 min read

How the JVM Runs Your Code: Memory, GC and JIT

A working mental model of the Java Virtual Machine: how classes are loaded and initialised, what lives on the stack and the heap, how garbage collection decides what to free and why memory leaks still happen, and what the JIT compiler does. Each simplification is marked, and common myths are corrected.

Technology

12 min read

Null and Optional

Why null causes so many bugs, what Optional is actually for, how to use map, flatMap, orElse, orElseGet and orElseThrow, and the common misuses (fields, parameters, get without a check). Optional is a tool for return values, not a universal replacement for null.