Notes & guides

Blog

Posts about software, Java, Spring, and community.

$ ssh deploy@server
$ systemctl status app
$ journalctl -u app -f
$ df -h
November 4, 2026linuxnetwork

Linux Networking and Troubleshooting Commands: curl, ss, dig, tcpdump

Finding out step by step why a service can't be reached — ip, ping, dig, curl, ss, traceroute/mtr, nc, tcpdump and firewall commands.

$ cat notes.md
# Java · Spring · DevOps
November 3, 2026rediscache

Redis Basics and Caching

Data types with redis-cli (string, hash, list, set, sorted set), TTLs, the cache-aside pattern, Spring Boot and Node.js integration, persistence and monitoring commands.

$ cat notes.md
# Java · Spring · DevOps
November 2, 2026postgresqldatabase

PostgreSQL and psql Basics

Connecting with psql, meta-commands (\l, \dt, \d), users and privileges, backup/restore, query analysis and day-to-day maintenance commands.

$ javac Main.java
$ java Main
Hello, World!
November 1, 2026java

What's New in Java 21: Virtual Threads, Records and Pattern Matching

The Java 21 LTS features that change day-to-day code the most — virtual threads, records, switch pattern matching, record patterns, sealed classes and sequenced collections.

$ ssh deploy@server
$ systemctl status app
$ journalctl -u app -f
$ df -h
October 31, 2026sshlinux

SSH Config, Key Management and Tunneling

Generating ed25519 keys, ssh-agent, shortcuts with ~/.ssh/config, jump hosts, port forwarding (-L, -R, -D) and server-side hardening.

$ ssh deploy@server
$ systemctl status app
$ journalctl -u app -f
$ df -h
October 30, 2026linuxsystemd

Writing a Linux Service with systemd

Running an app as a systemd service — unit files, restart policies, environment variables, reading logs with journalctl, and scheduled jobs with timers.

$ git switch -c feature/x
$ git add -p
$ git commit -m "fix: …"
$ git push -u origin HEAD
October 29, 2026githubci-cd

CI/CD with GitHub Actions — Build, Test and Deploy to Your Server

A step-by-step GitHub Actions workflow that builds and tests on every push and deploys to your own server over SSH when changes land on main.

$ sudo nginx -t
$ sudo certbot --nginx \
    -d sukrucakmak.com
$ systemctl reload nginx
✓ https://
October 28, 2026nginxlinux

Setting Up an Nginx Reverse Proxy with Let's Encrypt SSL

Putting a Node.js or Spring Boot app behind Nginx, getting a free SSL certificate with Certbot, and setting up automatic renewal.

$ docker compose up -d
$ docker compose ps
api    running  :8080
db     healthy  :5432
redis  running  :6379
October 27, 2026dockerdevops

Running Multiple Services with Docker Compose

Bringing up an app, a database and a cache from a single compose.yaml — services, networks, volumes, healthchecks, env files and everyday commands.