The 18 coding interview patterns that cover almost every Blind 75 and NeetCode 150 problem, in Java — grouped, with when to reach for each and a deep dive on all of them.
Longest Common Subsequence (LeetCode 1143): the match-or-drop grid recurrence, why the DP table is 2D, and a rolling O(min(m,n))-space solution in Java.
Palindromic Substrings (LeetCode 647): count every palindrome by expanding around each center for O(n^2) time and O(1) space in Java, plus the DP alternative.
Non-overlapping Intervals (LeetCode 435): sort by end time and greedily keep the earliest-finishing intervals, so the fewest removals fall out for free.
Longest Repeating Character Replacement (LeetCode 424): why a window is valid when its length minus its most-frequent letter stays within k, solved in Java.
Pacific Atlantic Water Flow (LeetCode 417): flip the flow and DFS inward from each ocean's border, then intersect the two reachable sets. Java solution.
Sum of Two Integers (LeetCode 371): add two numbers using only XOR and AND. Here's why XOR is the sum, AND is the carry, and how the loop lands in Java.
Top K Frequent Elements (LeetCode 347): count with a hash map, then beat the O(n log n) bound by bucketing values by frequency for an O(n) answer in Java.
Coin Change (LeetCode 322): why grabbing the biggest coin fails, and the bottom-up DP that finds the fewest coins for an amount in O(amount × coins) — in Java.
Longest Increasing Subsequence (LeetCode 300): the O(n^2) DP for the intuition, then the O(n log n) patience-sorting trick with binary search, in Java.
Alien Dictionary (LeetCode 269): turn a sorted word list into a character graph, then topologically sort it with Kahn's BFS in Java — cycles and prefixes included.
Meeting Rooms (LeetCode 252): sort intervals by start, then one pass reveals whether any two overlap. Java code, the strict-vs-equal trap, and complexity.
Valid Anagram (LeetCode 242): why a 26-slot frequency count beats sorting, the one-array Java solution, and how the Unicode follow-up changes the answer.
Lowest Common Ancestor of a BST (LeetCode 235): use the sorted-order property to walk down until the two targets split, an O(h) one-pass solution in Java.
Kth Smallest Element in a BST (LeetCode 230): why an inorder walk visits values in sorted order, so the kth node you touch is the answer — solved in Java.
Invert Binary Tree (LeetCode 226): swap every node's children with a three-line recursion, plus the iterative BFS version and the null base case that matters.
Design Add and Search Words (LeetCode 211): store words in a trie, then DFS through it so a '.' wildcard can branch into every child. Java solution explained.
Implement Trie (LeetCode 208): build a prefix tree in Java where each node branches 26 ways, so insert, search, and startsWith all run in O(word length).
Course Schedule (LeetCode 207): the whole problem is 'does this directed graph have a cycle?' Solve it with Kahn's topological sort in Java, plus the DFS alternative.
Reverse Linked List (LeetCode 206): the three-pointer flip that reverses a singly linked list in place, plus the recursive version and why order matters.
Number of 1 Bits (LeetCode 191): counting set bits with a plain shift loop, then Brian Kernighan's n & (n-1) trick that only loops once per set bit — in Java.
Reverse Bits (LeetCode 190): peel the low bit, stack it onto the result 32 times, and the >>> vs >> shift nuance in Java. Plus the byte-cache follow-up.
Reorder List (LeetCode 143): interleave a linked list front-to-back in O(1) space by combining three classic pointer moves — find the middle, reverse, merge.
Linked List Cycle (LeetCode 141): why two pointers moving at different speeds must collide inside a loop, and the O(1)-space Floyd's algorithm in Java.
Word Break (LeetCode 139): why a greedy longest-match fails, how prefix DP with dp[i] = 'is s[0..i) segmentable' fixes it, and the prefix-DP Java solution.
Binary Tree Maximum Path Sum (LeetCode 124): why one DFS returns a single-branch gain to the parent while tracking a global best that bends through a node.
Construct Binary Tree from Preorder and Inorder Traversal (LeetCode 105): why preorder hands you the root and inorder splits left from right, in O(n) Java.
Same Tree (LeetCode 100): compare two binary trees for identical shape and values with a four-line recursion, plus the iterative queue version and its traps.
Word Search (LeetCode 79): how DFS plus in-place marking walks the grid, why you restore each cell on the way out, and the clean Java backtracking solution.
Set Matrix Zeroes (LeetCode 73): why an in-place mark-then-sweep needs the matrix's own first row and column as scratch, plus the O(1)-space Java code.
Insert Interval (LeetCode 57): why an already-sorted list lets you insert in one linear pass — the before / merge / after sweep in Java, no sorting needed.
Merge Intervals (LeetCode 56): sort by start, then sweep once and extend the last interval whenever the next one overlaps — the Java sort-and-merge template.
Jump Game (LeetCode 55): why one greedy pass tracking the farthest reachable index beats the O(n^2) DP, and why a trailing zero is the real trap, in Java.
Spiral Matrix (LeetCode 54): walk the grid clockwise by tracking four edges and peeling one row or column off after each pass — clean Java, no visited set.
Rotate Image (LeetCode 48): why transpose-then-reverse rotates a matrix 90° clockwise in place, with the O(1)-space Java solution and the index math behind it.
Valid Parentheses (LeetCode 20): why a stack is the natural fit for matching brackets, a clean Java solution, and the empty-stack edge cases interviewers probe.
Remove Nth Node From End of List (LeetCode 19): why a two-pointer gap lets you delete the nth-from-last node in one pass, plus the dummy-head trick in Java.
Longest Palindromic Substring (LeetCode 5): why expanding around each center beats the DP table, the two-center trick for even lengths, and clean Java.
Advanced graphs in Java need named algorithms: Dijkstra for weighted shortest paths, Prim/Kruskal for a spanning tree, Bellman-Ford, and topological sort.
Math and geometry problems in Java split two ways: manipulating a matrix in place with careful index arithmetic, and simulating arithmetic without overflow.
2D DP in Java: when state needs two indices — two strings, a grid, or a mode — reading the recurrence from neighbor cells and rolling the table to O(n) space.
A trie makes prefix a first-class query in Java: insert and startsWith in O(word length), wildcard matching, and a prefix tree that prunes a grid word search.
Interval problems in Java almost all start by sorting, then one sweep: what to sort by, the overlap test, and counting concurrent intervals for room counts.
Backtracking is a decision-tree DFS with an undo step. The choose/explore/unchoose template in Java, pruning dead branches, and the duplicate-skipping trick.
Heap patterns in Java: the size-k trick for top-k, two heaps for a running median, and why a priority queue beats sorting when you only need the extreme.
Stacks do two interview jobs in Java: matching what you must resolve later (parentheses, RPN), and the monotonic stack that finds next-greater in one O(n) pass.
House Robber II (LeetCode 213): the circular twist solved by running the linear House Robber twice — once excluding the first house, once the last — in Java.
Climbing Stairs (LeetCode 70): why the answer is Fibonacci, the memoized and bottom-up solutions in Java, and the rolling trick that drops it to O(1) space.
Linked list problems in Java are three pointer moves: the dummy head, fast and slow pointers, and in-place reversal — plus the one that's a data structure.
Most graph interview problems are disguised — grids, prerequisites, connectivity. How to spot them, the visited set trees never needed, and BFS vs DFS in Java.
Binary tree problems in Java are recursion plus the right traversal: pre/in/post-order DFS vs BFS, what each recursive call returns, and the BST in-order trick.
Greedy algorithms are quick to write and often wrong. How to tell when the greedy choice is provably optimal, the exchange argument, and the NeetCode problems.
Dynamic programming in Java without the fear: how to name the state and find the recurrence, the 1D DP problem families, and when to memoize vs tabulate.
Binary search in Java, beyond the sorted-array lookup: the boundary template that kills off-by-one bugs, searching on the answer, and rotated-array problems.
The sliding-window pattern in Java: fixed vs variable windows, what to track inside, and how it solves Longest Substring and Minimum Window in one O(n) pass.
The hard part of a Claude Code agent loop isn't repeating work. It's a stop condition you can trust: convergent vs exploratory, and who enforces the verdict.
Karpathy's autoresearch pattern rebuilt for Claude Code: a Bash loop that scores each AI-tried hypothesis, keeps improvements, and rolls back failures with git.
Imgur's OAuth flow stopped working, so I moved my Obsidian attachments local: the /assets + UUID setup, the migration, and the settings that cost me an evening.
Three Claude Code skills for downloading YouTube captions as SRT, transcribing audio with a local Whisper server, and translating embedded subtitle tracks.
Widen the Obsidian Nord editor with a CSS snippet, and keep Korean aligned by stacking JetBrains Mono with D2Coding. No theme edits, just a snippet and a few fonts.
Move a self-hosted Ghost blog on Synology NAS from port forwarding to a Cloudflare Tunnel: no open inbound ports, home IP hidden, ads.txt via a free Worker.
Run the Ralph Loop in Claude Code: four ways to repeat work and stop on clear completion criteria — the ralph-loop plugin, /loop, a prompt loop, and Bash.
The Claude Code debate over Markdown vs HTML for AI output — and why the real issue isn't the format but how clearly AI communicates structure and intent.
Optimistic locking in Spring Boot and JPA: how it works and how to make it production-ready with retries, backoff, jitter, observability, and fallback.
Zed's Terminal Threads run Claude Code, Codex, and other CLI AI agents right inside the editor — a lightweight AI workflow without moving to VS Code or Cursor.
The Liskov Substitution Principle in Java: why the classic Rectangle/Square example violates LSP, and how smaller interfaces or composition fix the design.
Apply the Open-Closed Principle in Java with the Strategy Pattern — add new behavior without editing core logic, shown with a payment-processing example.
DIP vs DI in Java: they work together but differ — DIP keeps logic depending on abstractions, DI supplies dependencies from outside. Explained with examples.
SOLID principles in Java explained with simple examples — SRP, OCP, LSP, ISP, and DIP, each with backend-focused code. The full series index starts here.
The Interface Segregation Principle in Java: why one fat interface forces empty methods and UnsupportedOperationException, and how small focused interfaces fix it — with phone, printer, and backend examples.
The Liskov Substitution Principle in Java: why a subclass that breaks its parent's contract violates LSP, shown with bird, Flyable, and discount policy examples.
The Open-Closed Principle in Java: add new behavior without touching stable code, shown with payment methods, interfaces, and Spring Boot style examples.
The Single Responsibility Principle in Java: what 'one reason to change' actually means in practice, with backend service and Spring Boot style examples.
Fuzzy search in PostgreSQL with pg_trgm: the operators, the GIN vs GiST index decision, and the tuning that keeps autocomplete from breaking in production.
tmux keeps your sessions alive through dropped SSH connections and closed terminals. Here’s how to install and set it up on Ubuntu/Kubuntu, plus a Ghostty workflow.
Claude Code’s /statusline shows the project, model, and git branch right in your terminal — so you never lose track of which AI session is in which tab.
Pair Claude Code with Codex in one workflow: how I set it up, and why using one model to generate code and another to review it leads to better results.
Longest Substring Without Repeating Characters (LeetCode 3): the sliding-window O(n) approach, and why the int[128] version can jump the left pointer instead of stepping — with interactive visuals.
Valid Palindrome (LeetCode 125): the two-pointer O(n) check that skips non-alphanumerics in place, why it beats building a cleaned string, and the edge cases.
3Sum (LeetCode 15): sort then two-pointer for an O(n^2) solution, why sorting unlocks it, and the three places duplicate triplets sneak in — with an interactive visualization.
Container With Most Water (LeetCode 11): the two-pointer O(n) approach, and the short proof for why moving the shorter line never skips a better answer — with an interactive visualization.
A practical Kafka testing strategy using Spring EmbeddedKafka and Python testcontainers. Learn how to test producers and consumers with real Kafka instead of mocks.
Implement a Kafka producer in FastAPI with aiokafka (async-first): pydantic-settings, event schema design, lifecycle management, and production best practices.
Implement a Kafka producer and consumer in Spring Boot: KafkaTemplate, @KafkaListener, manual ACK, retry handling, and Dead Letter Topic best practices.
Set up Kafka locally with Docker Compose and design scalable topic naming: partition keys, debugging, and real-world best practices in one practical guide.
Kafka essentials for beginners: topics, partitions, consumer groups, and ACKs explained in a practical, easy-to-understand way — core concepts made simple.
Set up a local Docker registry on your LAN to build and deploy images across machines with no cloud costs — plus automated redeploys with Watchtower, all free.
Log in to the TELUS Network Access Hub (NAH) at 192.168.1.254 to set up DDNS and port forwarding — how to tell the NAH from the Wi-Fi Hub and find its IP.
MapStruct is a compile-time mapping tool for Spring projects that reduces boilerplate, improves safety, and makes DTO mapping cleaner and more testable.
FastAPI vs Spring Core: how Python and Java differ on DI, singleton scope, resource lifecycle, and execution models — a practical developer comparison.
FastAPI dependency injection is a request-scoped resource engine, not just object passing. Covers lifecycles, dependency chains, testing, and clean architecture.
The Python Singleton pattern ensures one instance per process. Here are the Pythonic ways to do it (module-level, decorator, metaclass), plus thread safety and when not to use it.
Set up SSH key-based login from Ubuntu to a Synology NAS (DSM 7.1) for secure, passwordless access — enable User Home, add your key, and disable password auth.
Claude Code Skills package repeatable workflows so Claude automates code reviews, enforces project conventions, and keeps quality consistent across a team.
AI code generation breaks architecture without guardrails. Learn how .claude/rules enforce consistent FastAPI layers with practical, team-driven constraints.
Install the NVIDIA 535 driver on Ubuntu 24.04 and fix the dependency conflicts (pkgProblemResolver breaks) — clean purge, right driver, then verify PyTorch CUDA.
Generate speaker-labeled subtitles on Ubuntu 24.04 with Whisper and pyannote.audio (CUDA GPU) — a full working setup from Python 3.10 to a combined transcript + speaker SRT.
Docmost on Synology NAS with Docker, step by step — including the reverse proxy + WebSocket setup that fixes the 'Real-time editor connection lost' error.
Use DeepSeek-Reasoner directly with Claude Code CLI via its Anthropic-compatible endpoint — no local proxy or router. Set a few env vars and switch models.
Claude Code can add Co-authored-by metadata to your commits, causing Claude to appear in GitHub Contributors. Here’s why it happens and how to disable it.
Claude Code forgets everything when a session ends. Install claude-mem to persist context, fix common issues, and enable long-term memory for real workflows.
PostgreSQL TIMESTAMP WITH TIME ZONE (timestamptz) normalizes everything to UTC and prevents timezone bugs that only surface in production. Here's why it should be your default and how to migrate safely.
Secure PostgreSQL by separating admin and app roles: SQL scripts for schema hardening and automated permissions, for Cloud SQL, AWS RDS, or self-hosted.
GCP Service Account Impersonation lets your MFA-authenticated account borrow a service account's permissions with short-lived tokens instead of risky key.json files. Here's the 3-step setup.
Run an Ubuntu laptop in clamshell mode — lid closed on an external monitor — while it still sleeps normally in your bag. The conditional HandleLidSwitchDocked fix, plus the display and input setup.
Back up and restore your full SecureCRT configuration on Ubuntu with simple terminal commands so you never lose saved sessions when migrating or reinstalling.
Set up a serial console connection in SecureCRT to HP servers (DL380/DL580, HP-UX) — the exact baud rate, data bits, parity, and flow-control settings.
Binary Search runs in O(log n) because it halves the search space every step. Here's the intuition, the math proof, and how it compares to linear search.
Dynamic Programming demystified: at its core, DP is just Divide and Conquer plus memory. See the connection and it gets far easier to explain in interviews.
Fix the SecureCRT "Key exchange failed" error on Ubuntu 22.04. Learn how to enable compatible algorithms like curve25519-sha256 for a successful connection.
Fix the ACPI BIOS Error when installing Ubuntu 22.04 on an ASUS GA502GU: bypass the install freeze with GRUB parameters and repair the bootloader after.
Maximum Subarray (LeetCode 53): Kadane's algorithm explained as one decision — extend or restart — plus the O(n) to O(1) space drop and a full worked trace.
Design effective custom exceptions in Java: structure them well, separate business and system errors, and integrate cleanly with Spring Boot error handling.
Why real Spring Boot developers prefer unchecked exceptions over the textbook rules — modern exception-handling patterns for clean, maintainable service code.
Product of Array Except Self (LeetCode 238): the prefix and suffix product trick that avoids division for an O(n) solution, with an interactive visual.
Prefix Sum and Suffix Product explained: what these algorithm terms really mean, why they beat naive recomputation, and where they show up in problems.
Contains Duplicate (LeetCode 217): compare the brute-force, sorting, and hash-set approaches — and why 'just use a hash set' isn't always the right reflex.
Understand Java's Throwable hierarchy — Error vs Exception, checked vs unchecked, and RuntimeException — to write safer error handling in production apps.
Best Time to Buy and Sell Stock (LeetCode 121): the single-pass O(n) solution that tracks the lowest price so far, with an interactive step-by-step visual.
Set up Vim with vim-plug on Ubuntu step by step: create the required directories, configure your .vimrc for a better coding setup, and install plugins.
Publish private Python libraries to GCP Artifact Registry with Poetry: the critical publish-vs-install URL distinction that avoids 404s, plus auth tokens.
Add math rendering to Ghost with KaTeX: lightweight LaTeX support via Code Injection to display algorithm complexity like O(n) and equations beautifully.
Run an old Ubuntu laptop as a 24/7 headless server with the lid closed: stop it sleeping from the lid, idle timeout, and every sleep target — the logind.conf fix plus systemctl mask (20.04/22.04/24.04).
Spring Boot 'required a bean of type String' error? It often hits when switching to constructor injection. How to correctly inject @Value into constructors.
Rate Limiting vs Throttling: often used interchangeably but different — rate limiting controls user quotas, throttling protects system health. The key differences.
Connect to GCP Cloud SQL (PostgreSQL) from your local machine with Cloud SQL Auth Proxy — an IAM-authenticated TLS tunnel, no public IP or static passwords.
Reliability vs availability: reliability is how long a system runs without failing; availability is how much of the time it's up. Examples and how to raise each.
Manage FastAPI projects with Poetry: project setup, dependency locking, virtual environments, and testing — the full pyproject.toml workflow for teams.
Checked exceptions are enforced by the Java compiler; unchecked ones aren't — here's the difference, with the class hierarchy, code examples, and when each applies.
Remove ^M (carriage return) characters from text files on Linux/Unix after transfer from Windows — fixes with dos2unix, sed, tr, and Vim, how to verify, and why they appear.
Bulk-rename files in Linux with the rename command and Perl regex: normalize whitespace, strip unwanted metadata, and batch-rename in one quick command.
Two Sum (LeetCode 1) two ways: the brute-force O(n^2) scan vs the hash-map O(n) approach — with the intuition, edge cases, and the space-time trade-off.
Fix Vim keeping your IME active in Normal mode (stray Korean/Japanese on j or dd): set up vim-im-select with ibus for automatic, seamless IME switching.
Longest Substring Without Repeating Characters (LeetCode 3): the sliding-window O(n) approach, and why the int[128] version can jump the left pointer instead of stepping — with interactive visuals.
Valid Palindrome (LeetCode 125): the two-pointer O(n) check that skips non-alphanumerics in place, why it beats building a cleaned string, and the edge cases.
3Sum (LeetCode 15): sort then two-pointer for an O(n^2) solution, why sorting unlocks it, and the three places duplicate triplets sneak in — with an interactive visualization.
Container With Most Water (LeetCode 11): the two-pointer O(n) approach, and the short proof for why moving the shorter line never skips a better answer — with an interactive visualization.
Run an Ubuntu laptop in clamshell mode — lid closed on an external monitor — while it still sleeps normally in your bag. The conditional HandleLidSwitchDocked fix, plus the display and input setup.
Maximum Subarray (LeetCode 53): Kadane's algorithm explained as one decision — extend or restart — plus the O(n) to O(1) space drop and a full worked trace.
Contains Duplicate (LeetCode 217): compare the brute-force, sorting, and hash-set approaches — and why 'just use a hash set' isn't always the right reflex.
Run an old Ubuntu laptop as a 24/7 headless server with the lid closed: stop it sleeping from the lid, idle timeout, and every sleep target — the logind.conf fix plus systemctl mask (20.04/22.04/24.04).
Remove ^M (carriage return) characters from text files on Linux/Unix after transfer from Windows — fixes with dos2unix, sed, tr, and Vim, how to verify, and why they appear.
Two Sum (LeetCode 1) two ways: the brute-force O(n^2) scan vs the hash-map O(n) approach — with the intuition, edge cases, and the space-time trade-off.
Claude Code Skills package repeatable workflows so Claude automates code reviews, enforces project conventions, and keeps quality consistent across a team.
Move a self-hosted Ghost blog on Synology NAS from port forwarding to a Cloudflare Tunnel: no open inbound ports, home IP hidden, ads.txt via a free Worker.
The Interface Segregation Principle in Java: why one fat interface forces empty methods and UnsupportedOperationException, and how small focused interfaces fix it — with phone, printer, and backend examples.
The Liskov Substitution Principle in Java: why a subclass that breaks its parent's contract violates LSP, shown with bird, Flyable, and discount policy examples.
The Open-Closed Principle in Java: add new behavior without touching stable code, shown with payment methods, interfaces, and Spring Boot style examples.
The Single Responsibility Principle in Java: what 'one reason to change' actually means in practice, with backend service and Spring Boot style examples.
tmux keeps your sessions alive through dropped SSH connections and closed terminals. Here’s how to install and set it up on Ubuntu/Kubuntu, plus a Ghostty workflow.
Pair Claude Code with Codex in one workflow: how I set it up, and why using one model to generate code and another to review it leads to better results.
Product of Array Except Self (LeetCode 238): the prefix and suffix product trick that avoids division for an O(n) solution, with an interactive visual.
Best Time to Buy and Sell Stock (LeetCode 121): the single-pass O(n) solution that tracks the lowest price so far, with an interactive step-by-step visual.
Prefix Sum and Suffix Product explained: what these algorithm terms really mean, why they beat naive recomputation, and where they show up in problems.
Rate Limiting vs Throttling: often used interchangeably but different — rate limiting controls user quotas, throttling protects system health. The key differences.
Reliability vs availability: reliability is how long a system runs without failing; availability is how much of the time it's up. Examples and how to raise each.
MapStruct is a compile-time mapping tool for Spring projects that reduces boilerplate, improves safety, and makes DTO mapping cleaner and more testable.
FastAPI dependency injection is a request-scoped resource engine, not just object passing. Covers lifecycles, dependency chains, testing, and clean architecture.
The Python Singleton pattern ensures one instance per process. Here are the Pythonic ways to do it (module-level, decorator, metaclass), plus thread safety and when not to use it.
Understand Java's Throwable hierarchy — Error vs Exception, checked vs unchecked, and RuntimeException — to write safer error handling in production apps.
Why real Spring Boot developers prefer unchecked exceptions over the textbook rules — modern exception-handling patterns for clean, maintainable service code.
Design effective custom exceptions in Java: structure them well, separate business and system errors, and integrate cleanly with Spring Boot error handling.
Checked exceptions are enforced by the Java compiler; unchecked ones aren't — here's the difference, with the class hierarchy, code examples, and when each applies.
Fix Vim keeping your IME active in Normal mode (stray Korean/Japanese on j or dd): set up vim-im-select with ibus for automatic, seamless IME switching.
Spring Boot 'required a bean of type String' error? It often hits when switching to constructor injection. How to correctly inject @Value into constructors.
Set up Vim with vim-plug on Ubuntu step by step: create the required directories, configure your .vimrc for a better coding setup, and install plugins.
Fix the ACPI BIOS Error when installing Ubuntu 22.04 on an ASUS GA502GU: bypass the install freeze with GRUB parameters and repair the bootloader after.
Manage FastAPI projects with Poetry: project setup, dependency locking, virtual environments, and testing — the full pyproject.toml workflow for teams.
Connect to GCP Cloud SQL (PostgreSQL) from your local machine with Cloud SQL Auth Proxy — an IAM-authenticated TLS tunnel, no public IP or static passwords.
Publish private Python libraries to GCP Artifact Registry with Poetry: the critical publish-vs-install URL distinction that avoids 404s, plus auth tokens.
GCP Service Account Impersonation lets your MFA-authenticated account borrow a service account's permissions with short-lived tokens instead of risky key.json files. Here's the 3-step setup.
Dynamic Programming demystified: at its core, DP is just Divide and Conquer plus memory. See the connection and it gets far easier to explain in interviews.
Binary Search runs in O(log n) because it halves the search space every step. Here's the intuition, the math proof, and how it compares to linear search.
Bulk-rename files in Linux with the rename command and Perl regex: normalize whitespace, strip unwanted metadata, and batch-rename in one quick command.
Add math rendering to Ghost with KaTeX: lightweight LaTeX support via Code Injection to display algorithm complexity like O(n) and equations beautifully.
Back up and restore your full SecureCRT configuration on Ubuntu with simple terminal commands so you never lose saved sessions when migrating or reinstalling.
Fix the SecureCRT "Key exchange failed" error on Ubuntu 22.04. Learn how to enable compatible algorithms like curve25519-sha256 for a successful connection.
Set up a serial console connection in SecureCRT to HP servers (DL380/DL580, HP-UX) — the exact baud rate, data bits, parity, and flow-control settings.
Secure PostgreSQL by separating admin and app roles: SQL scripts for schema hardening and automated permissions, for Cloud SQL, AWS RDS, or self-hosted.
PostgreSQL TIMESTAMP WITH TIME ZONE (timestamptz) normalizes everything to UTC and prevents timezone bugs that only surface in production. Here's why it should be your default and how to migrate safely.
Claude Code forgets everything when a session ends. Install claude-mem to persist context, fix common issues, and enable long-term memory for real workflows.
Claude Code can add Co-authored-by metadata to your commits, causing Claude to appear in GitHub Contributors. Here’s why it happens and how to disable it.
Docmost on Synology NAS with Docker, step by step — including the reverse proxy + WebSocket setup that fixes the 'Real-time editor connection lost' error.
Generate speaker-labeled subtitles on Ubuntu 24.04 with Whisper and pyannote.audio (CUDA GPU) — a full working setup from Python 3.10 to a combined transcript + speaker SRT.