Git Proxy Configuration Guide

Why a proxy matters Slow or unstable networks—think corporate firewalls, cross-border latency, or flaky hotel Wi-Fi—can make cloning or fetching repositories painful. Pointing Git to an HTTP, HTTPS, or SOCKS proxy lets you reuse existing access infrastructure (jump hosts, Clash, Shadowsocks, V2Ray, enterprise proxies) and speed up operations. Enable HTTP/HTTPS proxy quickly Write the proxy endpoint directly into Git configuration: # Global (~/.gitconfig) git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890 Limit the scope to a single repository by omitting --global and running inside the repo: ...

October 10, 2025 · 3 min · 429 words

Applying Table-Driven Design

What table-driven design means Table-driven design replaces sprawling conditionals with structured data. Whenever branching logic keeps growing, move the rules into a table and let the program look up the answer. The approach shines in state machines, permission matrices, pricing rules, and plenty of day-to-day backend tasks. Here are three lightweight examples that demonstrate the idea. Example 1: Rock, paper, scissors Instead of a long if/else chain, keep a victory map and let a lookup drive the full round logic: ...

October 10, 2025 · 3 min · 508 words

Running a Maven Private Repository with Nexus

Why host your own repository As teams grow, pulling everything from Maven Central slows builds and wastes bandwidth. A Nexus-backed private repository solves this by caching dependencies, hosting internal artifacts, and letting you proxy regional mirrors for a smoother developer experience. Install Nexus 3 Download Nexus OSS 3.7+ (requires JDK 17). Unpack it and note two key paths: nexus-3.77.1-01/ # application binaries sonatype-work/nexus3/ # data and config Control the service with: ...

October 10, 2025 · 2 min · 288 words

Getting Productive with Vim

Why Vim stays in my toolbox Whenever I touch servers, configs, or quick scripts, Vim is still the most reliable option. Keeping my hands on the keyboard beats jumping between mouse and shortcuts. This cheat sheet captures the commands I use daily so I don’t lose the muscle memory. Think in modes Vim revolves around distinct modes: Normal: default mode for navigation and commands. Insert: type text with i, a, o, etc. Visual: select text via v (character), V (line), or Ctrl+v (block). Command-line: press : to save, substitute, run macros. Hit Esc to return to Normal, then decide your next move. ...

October 10, 2025 · 2 min · 412 words

Team CI/CD Playbook

Branches map to environments We keep the pipeline simple: develop deploys automatically to the integration environment. master is paired with semantic version tags for production releases. The split keeps day-to-day iteration fast while giving releases a single, traceable entry point. Rhythm of a feature release Branch off develop using a date + feature slug like feat/20251010-user-login. Commit locally in small, focused steps. Push and open a PR back to develop. The moment the PR appears, CI takes over. CI tasks cover the basics: ...

October 10, 2025 · 2 min · 333 words

Understanding the SPI Extension Pattern

Why SPI matters Framework authors often need to hand over execution to third parties without touching the core code. Java’s Service Provider Interface (SPI) solves this by letting the framework publish contracts while external providers deliver implementations. The two sides meet through a well-defined loading routine. Visualising the flow briefly: Framework interface -> Provider implementation -> Runtime invocation | | | API contract META-INF/services file ServiceLoader wiring The framework owns the interfaces and life-cycle, providers contribute implementations, and ServiceLoader stitches things together at runtime. ...

October 10, 2025 · 2 min · 363 words

Building a Zero-Cost LLM API Rotation Stack

The idea Side projects deserve reliable LLM access too. Combine three generous free tiers—Aiven-hosted MySQL, a Docker-powered Hugging Face Space, and the open-source gpt-load gateway—to assemble a lightweight backend that rotates API keys and balances rate limits without extra spend. High-level flow: Client request │ ├─> Hugging Face Space (gpt-load container) │ └─ Reads the key pool from Aiven MySQL └─< LLM response after rotation Step 1: Provision Aiven MySQL https://aiven.io/ ...

August 3, 2025 · 2 min · 426 words

Git Collaboration Basics (2)

Rebase for clean history Interactive rebase Reorder, squash, or rewrite a range of commits: git rebase -i HEAD~5 Common directives: pick: keep the commit reword: edit the message squash: merge into the previous commit edit: pause to adjust content Resolve conflicts and continue git status # fix conflict markers <<<<<<< ======= >>>>>>> git add <resolved-file> git rebase --continue git rebase --abort Coordinate with the team Rewriting shared history requires coordination. Prefer git push --force-with-lease to avoid overwriting teammates’ work. ...

April 14, 2022 · 3 min · 445 words

Git Collaboration Basics (1)

Configure and inspect Before committing on a new machine, confirm each configuration layer and avoid stale credentials: git config --system --list git config --global --list git config --local --list git config --list --show-origin Set identity and useful aliases: git config --global user.name "Team Member" git config --global user.email "[email protected]" git config --global core.editor "code --wait" git config --global alias.st status Share ignore rules across repositories: git config --global core.excludesfile ~/.gitignore_global echo '.DS_Store' >> ~/.gitignore_global Path from working tree to commit Know how changes move between working tree, index, and repository: ...

April 13, 2022 · 3 min · 604 words