corpus.blog
Most cited
Talked about
Blogs
41554 blogs · [ { "id": "01a0d4a8-b6ff-7276-bfc3-7cc0751adb6f", "title": "My AI coding agent looks exactly like a reverse shell", "url": "https://victoronsoftware.com/posts/ai-coding-agent-reverse-shell/", "published_at": "2026-09-18T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00a146e2e", "title": "Comprehension debt: the hidden cost of AI-generated code", "url": "https://victoronsoftware.com/posts/comprehension-debt/", "published_at": "2026-05-24T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00b0eeba7", "title": "Understanding HTTP message signatures: A developer's guide", "url": "https://victoronsoftware.com/posts/http-message-signatures/", "published_at": "2025-12-09T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00b20f9c1", "title": "The modular monolith that wasn't", "url": "https://victoronsoftware.com/posts/modular-monolith-attempt/", "published_at": "2025-11-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00c1cf455", "title": "Multitasking with AI agents: When it works and when it fails", "url": "https://victoronsoftware.com/posts/multitasking-with-ai-agents/", "published_at": "2025-08-19T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00d0fb947", "title": "Why transparency beats everything else in engineering", "url": "https://victoronsoftware.com/posts/engineering-transparency/", "published_at": "2025-08-12T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00de4297a", "title": "Why developers should use OpenTelemetry in dev", "url": "https://victoronsoftware.com/posts/opentelemetry-for-devs/", "published_at": "2025-08-05T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00e677d64", "title": "Will AI agents replace software developers?", "url": "https://victoronsoftware.com/posts/will-ai-agents-replace-developers/", "published_at": "2025-07-16T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00ea9d2e6", "title": "mTLS vs HTTP signature faceoff: securing your APIs", "url": "https://victoronsoftware.com/posts/mtls-vs-http-signature/", "published_at": "2025-07-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00f83decf", "title": "How to use TPM 2.0 to secure private keys", "url": "https://victoronsoftware.com/posts/how-to-use-tpm/", "published_at": "2025-07-02T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00faaaced", "title": "My first conference talk experience", "url": "https://victoronsoftware.com/posts/first-conference-talk/", "published_at": "2025-05-28T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00fadbfc6", "title": "Full-featured engineering metrics—for free", "url": "https://victoronsoftware.com/posts/engineering-metrics-no-cost/", "published_at": "2025-05-16T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c00fc51eea", "title": "Introducing MCP: Lessons from building an AI-driven server", "url": "https://victoronsoftware.com/posts/introducing-mcp/", "published_at": "2025-05-08T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c010332b3d", "title": "How to speed up a large Go test suite", "url": "https://victoronsoftware.com/posts/large-go-test-suite/", "published_at": "2025-04-09T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01074a7bf", "title": "4 key Mermaid diagrams for software developers", "url": "https://victoronsoftware.com/posts/mermaid-intro/", "published_at": "2025-03-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c010bb4887", "title": "6 business benefits of software modularity and cohesion", "url": "https://victoronsoftware.com/posts/software-modularity/", "published_at": "2025-03-19T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0112692ad", "title": "6 lessons from literate programming", "url": "https://victoronsoftware.com/posts/literate-programming-lessons/", "published_at": "2025-03-12T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01177057c", "title": "Top code complexity metrics every software dev should know", "url": "https://victoronsoftware.com/posts/code-complexity-metrics/", "published_at": "2025-03-05T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01191689b", "title": "How to use AI for software development (2025)", "url": "https://victoronsoftware.com/posts/ai-for-software-developers/", "published_at": "2025-02-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01205c97a", "title": "How to analyze Go build times", "url": "https://victoronsoftware.com/posts/analyze-go-build/", "published_at": "2025-02-19T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c012f73263", "title": "Top code refactorings every software engineer should know", "url": "https://victoronsoftware.com/posts/common-refactorings/", "published_at": "2025-02-12T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0139022cf", "title": "How to find package dependencies of a Go package", "url": "https://victoronsoftware.com/posts/go-package-dependencies/", "published_at": "2025-02-05T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01440d5d6", "title": "How to scale your codebase with evolutionary architecture", "url": "https://victoronsoftware.com/posts/scaling-codebase-evolutionary-architecture/", "published_at": "2025-01-29T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c014d58bed", "title": "What is readable code and why is it important?", "url": "https://victoronsoftware.com/posts/readable-code/", "published_at": "2025-01-22T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c015c9527c", "title": "Top 5 metrics for software load testing performance", "url": "https://victoronsoftware.com/posts/software-load-testing/", "published_at": "2025-01-15T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c016249e41", "title": "Secure private CDN content with CloudFront signed URLs", "url": "https://victoronsoftware.com/posts/cloudfront-signed-urls/", "published_at": "2025-01-08T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c016b5b562", "title": "Create a MySQL replica database in 4 short steps (2025)", "url": "https://victoronsoftware.com/posts/mysql-master-slave-replication/", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01772b572", "title": "How to override methods in Go", "url": "https://victoronsoftware.com/posts/method-overriding-in-go/", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0185e5a62", "title": "How to easily track engineering metrics", "url": "https://victoronsoftware.com/posts/track-engineering-metrics/", "published_at": "2024-12-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c018a263f0", "title": "How to quickly edit Google Sheets spreadsheet using the API", "url": "https://victoronsoftware.com/posts/google-sheets-api/", "published_at": "2024-12-18T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c018da6bbf", "title": "What are launchd agents and daemons on macOS?", "url": "https://victoronsoftware.com/posts/macos-launchd-agents-and-daemons/", "published_at": "2024-12-11T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c018ed2164", "title": "Go modules and packages — which one to use and when", "url": "https://victoronsoftware.com/posts/go-modules-and-packages/", "published_at": "2024-12-04T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c018f39a45", "title": "What is a VLAN and why you need it in your home network", "url": "https://victoronsoftware.com/posts/why-you-need-vlan/", "published_at": "2024-11-27T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c019e2b5e3", "title": "How to connect to remote Active Directory server in 4 steps", "url": "https://victoronsoftware.com/posts/connect-to-remote-active-directory/", "published_at": "2024-11-20T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01a1c0eb6", "title": "2 ways to turn a script into a macOS install package", "url": "https://victoronsoftware.com/posts/script-only-macos-install-package/", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01afa7abc", "title": "Is staticcheck linter useful for my Go project?", "url": "https://victoronsoftware.com/posts/staticcheck-go-linter/", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01b2cccb6", "title": "Is OpenTelemetry useful for the average software developer?", "url": "https://victoronsoftware.com/posts/opentelemetry-with-jaeger/", "published_at": "2024-10-30T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01b41b913", "title": "How to create a custom GitHub Action using TypeScript", "url": "https://victoronsoftware.com/posts/typescript-github-action/", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01c118bea", "title": "Use Go to unmarshal JSON null, set, and missing fields", "url": "https://victoronsoftware.com/posts/go-json-unmarshal/", "published_at": "2024-10-09T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01c469492", "title": "How to test a Windows NDES SCEP server", "url": "https://victoronsoftware.com/posts/test-ndes-scep-server/", "published_at": "2024-10-02T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01c4890f4", "title": "How to set up a remote development environment", "url": "https://victoronsoftware.com/posts/remote-development-environment/", "published_at": "2024-09-22T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01cd257f7", "title": "Top 3 issues with GitHub code review process", "url": "https://victoronsoftware.com/posts/github-code-review-issues/", "published_at": "2024-09-15T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01d6f7ea9", "title": "How to create an EXE installer for your program", "url": "https://victoronsoftware.com/posts/exe-installer/", "published_at": "2024-09-11T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01e4ae5bb", "title": "How to measure the execution time of Go tests accurately", "url": "https://victoronsoftware.com/posts/go-test-execution-time/", "published_at": "2024-09-04T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01ea596fd", "title": "How to benchmark performance of Go serializers", "url": "https://victoronsoftware.com/posts/optimizing-performance-of-go-app/", "published_at": "2024-08-28T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01ec99ce9", "title": "How to secure MySQL Docker container for Zero Trust", "url": "https://victoronsoftware.com/posts/secure-mysql-docker/", "published_at": "2024-08-20T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01f204f86", "title": "Why you should use STDIN to read your program arguments", "url": "https://victoronsoftware.com/posts/get-args-from-stdin/", "published_at": "2024-08-12T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01f223a3d", "title": "Find required code owner approvers for a PR in 3 steps", "url": "https://victoronsoftware.com/posts/find-code-owners-for-pull-request/", "published_at": "2024-08-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01fc55b54", "title": "Add unit tests to Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/add-unit-tests-to-chrome-extension/", "published_at": "2024-07-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c01ff829f2", "title": "Using a distributed lock in production distributed systems", "url": "https://victoronsoftware.com/posts/distributed-lock/", "published_at": "2024-07-18T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c020e7662c", "title": "Add CSS framework to Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/add-css-framework-to-chrome-extension/", "published_at": "2024-07-10T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c021a7d323", "title": "Adding options page to Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/add-options-to-chrome-extension/", "published_at": "2024-07-03T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c021ed08f5", "title": "How git merge works with GitHub pull requests", "url": "https://victoronsoftware.com/posts/git-merges-and-pull-requests/", "published_at": "2024-06-26T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c021ef50cd", "title": "Linting and formatting TypeScript in Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/linting-and-formatting-typescript/", "published_at": "2024-06-19T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c021ef7e1e", "title": "Message passing in Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/message-passing-in-chrome-extension/", "published_at": "2024-06-12T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c022815103", "title": "Build a production-ready Chrome extension in 7 steps", "url": "https://victoronsoftware.com/posts/chrome-extension/", "published_at": "2024-06-11T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c022b3b9c1", "title": "Building a webhook flow with Tines", "url": "https://victoronsoftware.com/posts/webhook-flow-with-tines/", "published_at": "2024-06-05T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0234c40dd", "title": "3 database gotchas when building apps for scale", "url": "https://victoronsoftware.com/posts/database-gotchas-when-scaling-apps/", "published_at": "2024-05-29T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0236cfd77", "title": "Add webpack and TypeScript to a Chrome extension (2024)", "url": "https://victoronsoftware.com/posts/add-webpack-and-typescript-to-chrome-extension/", "published_at": "2024-05-23T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c023f868cb", "title": "Create a Chrome extension from scratch step-by-step (2024)", "url": "https://victoronsoftware.com/posts/create-chrome-extension/", "published_at": "2024-05-15T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02478a9ab", "title": "Create an IPv6-only Linux server in 3 easy steps", "url": "https://victoronsoftware.com/posts/create-ipv6-only-linux-server/", "published_at": "2024-05-08T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0248bfd63", "title": "Optimize MySQL query performance: INSERT with subqueries", "url": "https://victoronsoftware.com/posts/mysql-query-performance-insert-subqueries/", "published_at": "2024-05-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c024b44fe8", "title": "How to reuse workflows and steps in GitHub Actions (2024)", "url": "https://victoronsoftware.com/posts/github-reusable-workflows-and-steps/", "published_at": "2024-05-01T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0254347ef", "title": "MySQL deadlock on UPDATE/INSERT upsert pattern", "url": "https://victoronsoftware.com/posts/mysql-upsert-deadlock/", "published_at": "2024-04-28T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c025522bf9", "title": "Build a React app from scratch: getting started (2024)", "url": "https://victoronsoftware.com/posts/react-hello-world/", "published_at": "2024-04-24T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02586b1e6", "title": "Fix security vulnerabilities in Yarn", "url": "https://victoronsoftware.com/posts/fix-security-vulnerabilities-yarn/", "published_at": "2024-04-10T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0263ddc07", "title": "Mutual TLS (mTLS): building a client using the system keystore", "url": "https://victoronsoftware.com/posts/mtls/", "published_at": "2024-04-01T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c026e64cc8", "title": "Code signing a Windows application", "url": "https://victoronsoftware.com/posts/code-signing-windows/", "published_at": "2024-03-27T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c0270ea2b1", "title": "Mutual TLS (mTLS) Go client using Windows certificate store", "url": "https://victoronsoftware.com/posts/mtls-go-client-windows-certificate-store/", "published_at": "2024-03-20T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c027e942b9", "title": "Mutual TLS (mTLS) with Windows certificate store", "url": "https://victoronsoftware.com/posts/mtls-with-windows/", "published_at": "2024-03-06T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c028b22c07", "title": "Fully supporting Unicode and emojis in your app", "url": "https://victoronsoftware.com/posts/unicode-and-emoji-gotchas/", "published_at": "2024-02-29T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c029884888", "title": "Mutual TLS (mTLS) Go client using macOS keychain", "url": "https://victoronsoftware.com/posts/mtls-go-client-using-apple-keychain/", "published_at": "2024-02-22T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c029f32f43", "title": "Mutual TLS (mTLS) Go client with custom certificate signer", "url": "https://victoronsoftware.com/posts/mtls-go-custom-signer/", "published_at": "2024-02-14T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02aa288a1", "title": "Mutual TLS (mTLS) Go client", "url": "https://victoronsoftware.com/posts/mtls-go-client/", "published_at": "2024-02-07T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02b54bf16", "title": "Mutual TLS (mTLS) with macOS keychain", "url": "https://victoronsoftware.com/posts/mtls-with-apple-keychain/", "published_at": "2024-01-31T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02bc09600", "title": "Mutual TLS intro and hands-on example", "url": "https://victoronsoftware.com/posts/mtls-hello-world/", "published_at": "2024-01-24T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02bc0e3d8", "title": "Using C and Go with CGO is tricky", "url": "https://victoronsoftware.com/posts/using-c-and-go-with-cgo-is-tricky/", "published_at": "2024-01-18T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02c5018e0", "title": "Use GitHub Actions for general-purpose tasks", "url": "https://victoronsoftware.com/posts/use-github-actions-for-general-purpose-tasks/", "published_at": "2024-01-11T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02c93ad60", "title": "Fuzz testing in Go", "url": "https://victoronsoftware.com/posts/fuzz-testing-with-go/", "published_at": "2024-01-04T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02c9f6ee7", "title": "Understanding the intricacies of Fleet policies", "url": "https://victoronsoftware.com/posts/understanding-the-intricacies-of-fleet-policies/", "published_at": "2023-12-30T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02d564798", "title": "Get current telemetry from your devices with live queries", "url": "https://victoronsoftware.com/posts/get-current-telemetry-from-your-devices-with-live-queries/", "published_at": "2023-12-29T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02e4cb226", "title": "Nil slice versus empty slice in Go", "url": "https://victoronsoftware.com/posts/nil-slice-versus-empty-slice-in-go/", "published_at": "2023-12-28T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02e8a8961", "title": "Physical security meets cybersecurity with Matter", "url": "https://victoronsoftware.com/posts/physical-security-meets-cybersecurity-with-matter/", "published_at": "2023-12-20T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02f64fd43", "title": "SQL prepared statements are broken when scaling applications", "url": "https://victoronsoftware.com/posts/sql-prepared-statements-are-broken-when-scaling-applications/", "published_at": "2023-12-14T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c02fd5d427", "title": "You need a personal dev docs DB (GitBook)", "url": "https://victoronsoftware.com/posts/you-need-a-personal-dev-docs-db-gitbook/", "published_at": "2023-11-30T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c03068c535", "title": "Setting up a virtual router (pfSense on Proxmox)", "url": "https://victoronsoftware.com/posts/setting-up-a-virtual-router/", "published_at": "2023-11-22T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c03087ceca", "title": "Inspecting keychain files on macOS", "url": "https://victoronsoftware.com/posts/inspecting-keychain-files-on-macos/", "published_at": "2023-11-16T00:00:00+00:00" }, { "id": "01a08c5c-e1d2-7379-8bc2-53c03185d8fb", "title": "Catch missed authorization checks during software development", "url": "https://victoronsoftware.com/posts/catch-missed-authorization-checks-during-software-development/", "published_at": "2023-11-10T00:00:00+00:00" } ] posts
Claim your blog
Back to victoronsoftware.com
Blog · corpus.blog/blogs/victoronsoftware.com/posts
victoronsoftware.com
victoronsoftware.com
2026
My AI coding agent looks exactly like a reverse shell
original ↗
18 Sept 2026
Comprehension debt: the hidden cost of AI-generated code
original ↗
24 May 2026
2025
Understanding HTTP message signatures: A developer's guide
original ↗
9 Dec 2025
The modular monolith that wasn't
original ↗
26 Nov 2025
Multitasking with AI agents: When it works and when it fails
original ↗
19 Aug 2025
Why transparency beats everything else in engineering
original ↗
12 Aug 2025
Why developers should use OpenTelemetry in dev
original ↗
5 Aug 2025
Will AI agents replace software developers?
original ↗
16 Jul 2025
mTLS vs HTTP signature faceoff: securing your APIs
original ↗
6 Jul 2025
How to use TPM 2.0 to secure private keys
original ↗
2 Jul 2025
My first conference talk experience
original ↗
28 May 2025
Full-featured engineering metrics—for free
original ↗
16 May 2025
Introducing MCP: Lessons from building an AI-driven server
original ↗
8 May 2025
How to speed up a large Go test suite
original ↗
9 Apr 2025
4 key Mermaid diagrams for software developers
original ↗
26 Mar 2025
6 business benefits of software modularity and cohesion
original ↗
19 Mar 2025
6 lessons from literate programming
original ↗
12 Mar 2025
Top code complexity metrics every software dev should know
original ↗
5 Mar 2025
How to use AI for software development (2025)
original ↗
26 Feb 2025
How to analyze Go build times
original ↗
19 Feb 2025
Top code refactorings every software engineer should know
original ↗
12 Feb 2025
How to find package dependencies of a Go package
original ↗
5 Feb 2025
How to scale your codebase with evolutionary architecture
original ↗
29 Jan 2025
What is readable code and why is it important?
original ↗
22 Jan 2025
Top 5 metrics for software load testing performance
original ↗
15 Jan 2025
Secure private CDN content with CloudFront signed URLs
original ↗
8 Jan 2025
Create a MySQL replica database in 4 short steps (2025)
original ↗
6 Jan 2025
How to override methods in Go
original ↗
1 Jan 2025
2024
How to easily track engineering metrics
original ↗
26 Dec 2024
How to quickly edit Google Sheets spreadsheet using the API
original ↗
18 Dec 2024
What are launchd agents and daemons on macOS?
original ↗
11 Dec 2024
Go modules and packages — which one to use and when
original ↗
4 Dec 2024
What is a VLAN and why you need it in your home network
original ↗
27 Nov 2024
How to connect to remote Active Directory server in 4 steps
original ↗
20 Nov 2024
2 ways to turn a script into a macOS install package
original ↗
13 Nov 2024
Is staticcheck linter useful for my Go project?
original ↗
6 Nov 2024
Is OpenTelemetry useful for the average software developer?
original ↗
30 Oct 2024
How to create a custom GitHub Action using TypeScript
original ↗
23 Oct 2024
Use Go to unmarshal JSON null, set, and missing fields
original ↗
9 Oct 2024
How to test a Windows NDES SCEP server
original ↗
2 Oct 2024
How to set up a remote development environment
original ↗
22 Sept 2024
Top 3 issues with GitHub code review process
original ↗
15 Sept 2024
How to create an EXE installer for your program
original ↗
11 Sept 2024
How to measure the execution time of Go tests accurately
original ↗
4 Sept 2024
How to benchmark performance of Go serializers
original ↗
28 Aug 2024
How to secure MySQL Docker container for Zero Trust
original ↗
20 Aug 2024
Why you should use STDIN to read your program arguments
original ↗
12 Aug 2024
Find required code owner approvers for a PR in 3 steps
original ↗
6 Aug 2024
Add unit tests to Chrome extension (2024)
original ↗
26 Jul 2024
Using a distributed lock in production distributed systems
original ↗
18 Jul 2024
Add CSS framework to Chrome extension (2024)
original ↗
10 Jul 2024
Adding options page to Chrome extension (2024)
original ↗
3 Jul 2024
How git merge works with GitHub pull requests
original ↗
26 Jun 2024
Linting and formatting TypeScript in Chrome extension (2024)
original ↗
19 Jun 2024
Message passing in Chrome extension (2024)
original ↗
12 Jun 2024
Build a production-ready Chrome extension in 7 steps
original ↗
11 Jun 2024
Building a webhook flow with Tines
original ↗
5 Jun 2024
3 database gotchas when building apps for scale
original ↗
29 May 2024
Add webpack and TypeScript to a Chrome extension (2024)
original ↗
23 May 2024
Create a Chrome extension from scratch step-by-step (2024)
original ↗
15 May 2024
Create an IPv6-only Linux server in 3 easy steps
original ↗
8 May 2024
Optimize MySQL query performance: INSERT with subqueries
original ↗
6 May 2024
How to reuse workflows and steps in GitHub Actions (2024)
original ↗
1 May 2024
MySQL deadlock on UPDATE/INSERT upsert pattern
original ↗
28 Apr 2024
Build a React app from scratch: getting started (2024)
original ↗
24 Apr 2024
Fix security vulnerabilities in Yarn
original ↗
10 Apr 2024
Mutual TLS (mTLS): building a client using the system keystore
original ↗
1 Apr 2024
Code signing a Windows application
original ↗
27 Mar 2024
Mutual TLS (mTLS) Go client using Windows certificate store
original ↗
20 Mar 2024
Mutual TLS (mTLS) with Windows certificate store
original ↗
6 Mar 2024
Fully supporting Unicode and emojis in your app
original ↗
29 Feb 2024
Mutual TLS (mTLS) Go client using macOS keychain
original ↗
22 Feb 2024
Mutual TLS (mTLS) Go client with custom certificate signer
original ↗
14 Feb 2024
Mutual TLS (mTLS) Go client
original ↗
7 Feb 2024
Mutual TLS (mTLS) with macOS keychain
original ↗
31 Jan 2024
Mutual TLS intro and hands-on example
original ↗
24 Jan 2024
Using C and Go with CGO is tricky
original ↗
18 Jan 2024
Use GitHub Actions for general-purpose tasks
original ↗
11 Jan 2024
Fuzz testing in Go
original ↗
4 Jan 2024
2023
Understanding the intricacies of Fleet policies
original ↗
30 Dec 2023
Get current telemetry from your devices with live queries
original ↗
29 Dec 2023
Nil slice versus empty slice in Go
original ↗
28 Dec 2023
Physical security meets cybersecurity with Matter
original ↗
20 Dec 2023
SQL prepared statements are broken when scaling applications
original ↗
14 Dec 2023
You need a personal dev docs DB (GitBook)
original ↗
30 Nov 2023
Setting up a virtual router (pfSense on Proxmox)
original ↗
22 Nov 2023
Inspecting keychain files on macOS
original ↗
16 Nov 2023
Catch missed authorization checks during software development
original ↗
10 Nov 2023