41554 blogs · [ { "id": "01a0d59d-4f40-71ef-99cb-c3dc34831f94", "title": "Models are getting better AND releasing faster", "url": "https://blog.john-pfeiffer.com/models-are-getting-better-and-releasing-faster/", "published_at": "2026-09-14T06:59:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7b7e06d55", "title": "Multi-Region Active-Active on AWS in Hours instead of Weeks", "url": "https://blog.john-pfeiffer.com/multi-region-active-active-on-aws-in-hours-instead-of-weeks/", "published_at": "2026-09-03T01:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7b8667a73", "title": "Real velocity from a Backlog Deferred and a Skill'd Agent", "url": "https://blog.john-pfeiffer.com/real-velocity-from-a-backlog-deferred-and-a-skilld-agent/", "published_at": "2026-08-10T16:11:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7b91d1612", "title": "Getting stable with DeepSeek-V4-Flash-0731 on a single Nvidia B300", "url": "https://blog.john-pfeiffer.com/getting-stable-with-deepseek-v4-flash-0731-on-a-single-nvidia-b300/", "published_at": "2026-08-04T22:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7b9250a8a", "title": "Beyond the ratelimit - hosting the model yourself on a GPU with vLLM", "url": "https://blog.john-pfeiffer.com/beyond-the-ratelimit-hosting-the-model-yourself-on-a-gpu-with-vllm/", "published_at": "2026-07-31T15:08:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7b9c87f58", "title": "Reproducing a coding benchmark with Harbor and Terminal Bench 2.1", "url": "https://blog.john-pfeiffer.com/reproducing-a-coding-benchmark-with-harbor-and-terminal-bench-21/", "published_at": "2026-07-22T06:59:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bac57ca7", "title": "A coding agent in the cloud with Factory and Railway", "url": "https://blog.john-pfeiffer.com/a-coding-agent-in-the-cloud-with-factory-and-railway/", "published_at": "2026-06-22T16:10:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bb392230", "title": "AI opportunities need improved Spec Driven Development with TLA+", "url": "https://blog.john-pfeiffer.com/ai-opportunities-need-improved-spec-driven-development-with-tla/", "published_at": "2026-05-02T19:33:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bc129530", "title": "AI Natives do not question the gifts from the gods", "url": "https://blog.john-pfeiffer.com/ai-natives-do-not-question-the-gifts-from-the-gods/", "published_at": "2026-04-04T06:59:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bc5d543b", "title": "What a Security Hackathon Taught Me About Agents in the Cloud", "url": "https://blog.john-pfeiffer.com/what-a-security-hackathon-taught-me-about-agents-in-the-cloud/", "published_at": "2026-03-17T03:20:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bd438fd7", "title": "Pragmatic Summit - Nobody has the Answers on AI", "url": "https://blog.john-pfeiffer.com/pragmatic-summit-nobody-has-the-answers-on-ai/", "published_at": "2026-03-10T04:21:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bde2744f", "title": "Image Diffusion experiments with HuggingFace and Google Colab", "url": "https://blog.john-pfeiffer.com/image-diffusion-experiments-with-huggingface-and-google-colab/", "published_at": "2025-12-20T17:42:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bdff4554", "title": "AI with Agents aka LLMs with Tools", "url": "https://blog.john-pfeiffer.com/ai-with-agents-aka-llms-with-tools/", "published_at": "2025-08-31T01:18:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7be255f87", "title": "Experiment fast with Cloudflare - Pages and Workers and LLMs", "url": "https://blog.john-pfeiffer.com/experiment-fast-with-cloudflare-pages-and-workers-and-llms/", "published_at": "2025-08-28T03:20:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7be74aac2", "title": "Intro to MCP - give your LLM tools with model context protocol", "url": "https://blog.john-pfeiffer.com/intro-to-mcp-give-your-llm-tools-with-model-context-protocol/", "published_at": "2025-07-28T02:20:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bf2bba46", "title": "Maximum leverage and Minimum Ops with Google Cloud Run and the Jules Coding Agent", "url": "https://blog.john-pfeiffer.com/maximum-leverage-and-minimum-ops-with-google-cloud-run-and-the-jules-coding-agent/", "published_at": "2025-06-07T13:07:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7bfc83d3c", "title": "Building a desktop app with Golang and Wails", "url": "https://blog.john-pfeiffer.com/building-a-desktop-app-with-golang-and-wails/", "published_at": "2025-04-06T17:10:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c075b3ff", "title": "Web scraping and crawling as a rite of passage", "url": "https://blog.john-pfeiffer.com/web-scraping-and-crawling-as-a-rite-of-passage/", "published_at": "2025-01-11T19:11:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c133af15", "title": "Intention is all you need - Writing with LLMs", "url": "https://blog.john-pfeiffer.com/intention-is-all-you-need-writing-with-llms/", "published_at": "2024-12-21T11:14:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c212f938", "title": "Cars not helicopters, or running a local LLM with MLX on a Macbook Pro", "url": "https://blog.john-pfeiffer.com/cars-not-helicopters-or-running-a-local-llm-with-mlx-on-a-macbook-pro/", "published_at": "2024-11-24T03:21:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c280b103", "title": "React with Material-UI and Google SSO", "url": "https://blog.john-pfeiffer.com/react-with-material-ui-and-google-sso/", "published_at": "2024-09-07T19:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c2a500ec", "title": "React JavaScript Intro", "url": "https://blog.john-pfeiffer.com/react-javascript-intro/", "published_at": "2024-08-25T19:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c302abaa", "title": "Behind the scenes of the challenges for a Hiring Manager", "url": "https://blog.john-pfeiffer.com/behind-the-scenes-of-the-challenges-for-a-hiring-manager/", "published_at": "2024-04-29T19:01:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c3a4edc6", "title": "Golang Concurrency Part 1 WaitGroup", "url": "https://blog.john-pfeiffer.com/golang-concurrency-part-1-waitgroup/", "published_at": "2024-04-24T05:22:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c3d167e5", "title": "One of the Hardest Parts of the Job - Leading Through Layoffs", "url": "https://blog.john-pfeiffer.com/one-of-the-hardest-parts-of-the-job-leading-through-layoffs/", "published_at": "2024-02-29T20:01:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c442e0e7", "title": "Compensation Planning is Sudoku with Feelings", "url": "https://blog.john-pfeiffer.com/compensation-planning-is-sudoku-with-feelings/", "published_at": "2023-11-25T20:34:00+00:00" }, { "id": "01a0d59d-4f40-71ef-99cb-c3dc40af22b1", "title": "Firewalls in the cloud", "url": "https://blog.john-pfeiffer.com/firewalls-in-the-cloud/", "published_at": "2023-02-27T05:21:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c4732bc0", "title": "The answer is not the solution", "url": "https://blog.john-pfeiffer.com/the-answer-is-not-the-solution/", "published_at": "2023-01-16T18:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c4a4833f", "title": "Front Line Manager or Director - Managing People Managers", "url": "https://blog.john-pfeiffer.com/front-line-manager-or-director-managing-people-managers/", "published_at": "2022-12-03T20:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c4ebba7f", "title": "Code Review and Project Structure - Consistency and Consensus", "url": "https://blog.john-pfeiffer.com/code-review-and-project-structure-consistency-and-consensus/", "published_at": "2022-06-04T18:22:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c5699bcb", "title": "Monkeys Stealing Spoons - Why managers struggle and what to do about it", "url": "https://blog.john-pfeiffer.com/monkeys-stealing-spoons-why-managers-struggle-and-what-to-do-about-it/", "published_at": "2021-12-29T20:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c6255559", "title": "CircleCI for a Pelican static Github site", "url": "https://blog.john-pfeiffer.com/circleci-for-a-pelican-static-github-site/", "published_at": "2021-09-04T04:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c6f57a75", "title": "Using CircleCI as continuous integration and continuous deployment", "url": "https://blog.john-pfeiffer.com/using-circleci-as-continuous-integration-and-continuous-deployment/", "published_at": "2021-04-15T03:43:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c7e3326e", "title": "Bitcoin is a bad business model and when to invest in your Cost Center", "url": "https://blog.john-pfeiffer.com/bitcoin-is-a-bad-business-model-and-when-to-invest-in-your-cost-center/", "published_at": "2021-01-23T16:44:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c8c30f42", "title": "Sorting in Golang", "url": "https://blog.john-pfeiffer.com/sorting-in-golang/", "published_at": "2020-09-30T07:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7c9ba24f3", "title": "Using AWS CDK to configure deploy a Golang Lambda with APIGateway", "url": "https://blog.john-pfeiffer.com/using-aws-cdk-to-configure-deploy-a-golang-lambda-with-apigateway/", "published_at": "2020-09-27T21:48:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7ca2aec25", "title": "Localstack APIGateway Lambda and S3 integration testing", "url": "https://blog.john-pfeiffer.com/localstack-apigateway-lambda-and-s3-integration-testing/", "published_at": "2020-03-06T05:10:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7ca84059c", "title": "Career Development and Software Engineering Roles - Helping your engineers grow", "url": "https://blog.john-pfeiffer.com/career-development-and-software-engineering-roles-helping-your-engineers-grow/", "published_at": "2019-01-01T20:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7caa49d1d", "title": "Career Development and Software Engineering Roles", "url": "https://blog.john-pfeiffer.com/career-development-and-software-engineering-roles/", "published_at": "2018-12-31T20:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cb676847", "title": "Go FaaS with AWS Lambda", "url": "https://blog.john-pfeiffer.com/go-faas-with-aws-lambda/", "published_at": "2018-06-12T02:48:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cbcd24bf", "title": "Infrastructure as Code with Terraform and AWS", "url": "https://blog.john-pfeiffer.com/infrastructure-as-code-with-terraform-and-aws/", "published_at": "2018-05-12T14:35:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cc2cc900", "title": "Go Web Development and Templates with Heroku", "url": "https://blog.john-pfeiffer.com/go-web-development-and-templates-with-heroku/", "published_at": "2018-05-02T03:37:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cc4319d9", "title": "More Go Data Structures with Heap and Tree and Trie", "url": "https://blog.john-pfeiffer.com/more-go-data-structures-with-heap-and-tree-and-trie/", "published_at": "2018-02-10T15:07:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7ccb0692f", "title": "Working successfully with remote contractors", "url": "https://blog.john-pfeiffer.com/working-successfully-with-remote-contractors/", "published_at": "2018-01-21T05:14:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cd3c0dd5", "title": "Golang Buffalo Tutorial To Create A Web Site With Authentication", "url": "https://blog.john-pfeiffer.com/golang-buffalo-tutorial-to-create-a-web-site-with-authentication/", "published_at": "2017-12-03T03:44:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cddb430e", "title": "Dynamic Programming and Memoization and the Compute versus Storage Tradeoff", "url": "https://blog.john-pfeiffer.com/dynamic-programming-and-memoization-and-the-compute-versus-storage-tradeoff/", "published_at": "2017-11-07T04:45:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7ce3a2827", "title": "Productivity is a Myth", "url": "https://blog.john-pfeiffer.com/productivity-is-a-myth/", "published_at": "2017-06-30T04:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cefe768b", "title": "Continuous Delivery with Bitbucket Pipelines and Google App Engine Deployment and the storage.objects.list error", "url": "https://blog.john-pfeiffer.com/continuous-delivery-with-bitbucket-pipelines-and-google-app-engine-deployment-and-the-storageobjectslist-error/", "published_at": "2017-05-24T05:24:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cfad02f8", "title": "Mid 2017 technology and business prediction for 2018 and beyond", "url": "https://blog.john-pfeiffer.com/mid-2017-technology-and-business-prediction-for-2018-and-beyond/", "published_at": "2017-05-08T03:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7cfdbb967", "title": "Golang Concurrency Goroutines and Channels", "url": "https://blog.john-pfeiffer.com/golang-concurrency-goroutines-and-channels/", "published_at": "2017-04-13T05:54:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d05d2a5c", "title": "Code is for Humans", "url": "https://blog.john-pfeiffer.com/code-is-for-humans/", "published_at": "2017-02-26T04:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d12019c2", "title": "Security Encryption HTTPS OpenSSL SSH Keygen VPN Letsencrypt Certbot", "url": "https://blog.john-pfeiffer.com/security-encryption-https-openssl-ssh-keygen-vpn-letsencrypt-certbot/", "published_at": "2017-02-17T07:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d1c4990d", "title": "Golang JSON is challenging", "url": "https://blog.john-pfeiffer.com/golang-json-is-challenging/", "published_at": "2016-12-31T04:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d29dc048", "title": "Golang Testing Benchmark Profiling Subtests Fuzz Testing", "url": "https://blog.john-pfeiffer.com/golang-testing-benchmark-profiling-subtests-fuzz-testing/", "published_at": "2016-10-23T03:44:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d3848051", "title": "Golang Interfaces Stack Linked List Queue Map Set", "url": "https://blog.john-pfeiffer.com/golang-interfaces-stack-linked-list-queue-map-set/", "published_at": "2016-10-06T03:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d3887853", "title": "Golang Slices Functions Filters Mergesort", "url": "https://blog.john-pfeiffer.com/golang-slices-functions-filters-mergesort/", "published_at": "2016-10-03T06:45:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d460e31a", "title": "Consul Service Discovery and Cluster Configuration", "url": "https://blog.john-pfeiffer.com/consul-service-discovery-and-cluster-configuration/", "published_at": "2016-08-28T04:01:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d4d54701", "title": "A micro story about migrating a personal monolith into microservices", "url": "https://blog.john-pfeiffer.com/a-micro-story-about-migrating-a-personal-monolith-into-microservices/", "published_at": "2016-07-30T03:59:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d589d178", "title": "Drupal with Docker Compose and nginx and php-fpm and mariadb", "url": "https://blog.john-pfeiffer.com/drupal-with-docker-compose-and-nginx-and-php-fpm-and-mariadb/", "published_at": "2016-07-29T06:59:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d5b8db7d", "title": "Alpine Linux Introduction Tutorial", "url": "https://blog.john-pfeiffer.com/alpine-linux-introduction-tutorial/", "published_at": "2016-02-29T05:19:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d656c05e", "title": "Debian Packages for Deployment and Reprepro for a local apt repository", "url": "https://blog.john-pfeiffer.com/debian-packages-for-deployment-and-reprepro-for-a-local-apt-repository/", "published_at": "2016-02-25T04:40:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d72bca92", "title": "Python packaging pip wheels", "url": "https://blog.john-pfeiffer.com/python-packaging-pip-wheels/", "published_at": "2016-01-06T04:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d73fe1ba", "title": "Static site with Bitbucket and Shippable and Pelican", "url": "https://blog.john-pfeiffer.com/static-site-with-bitbucket-and-shippable-and-pelican/", "published_at": "2015-12-21T20:24:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d7d3344d", "title": "Go Programming Intro with VS Code and Arrays Slices Functions and Testing", "url": "https://blog.john-pfeiffer.com/go-programming-intro-with-vs-code-and-arrays-slices-functions-and-testing/", "published_at": "2015-11-16T05:19:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d8c2a334", "title": "Build Automation using packer to build an AMI use immutable not chef", "url": "https://blog.john-pfeiffer.com/build-automation-using-packer-to-build-an-ami-use-immutable-not-chef/", "published_at": "2015-07-07T03:40:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d94c0583", "title": "nginx with Docker", "url": "https://blog.john-pfeiffer.com/nginx-with-docker/", "published_at": "2015-06-13T15:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7d9f3c17e", "title": "Meeting Bjarne Stroustrup, creator of C plus plus, in the Atlassian Dev Den", "url": "https://blog.john-pfeiffer.com/meeting-bjarne-stroustrup-creator-of-c-plus-plus-in-the-atlassian-dev-den/", "published_at": "2015-06-04T03:30:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dacb3c10", "title": "Pragmatic testing, from Makefile to CI with Docker", "url": "https://blog.john-pfeiffer.com/pragmatic-testing-from-makefile-to-ci-with-docker/", "published_at": "2015-05-25T17:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7db117448", "title": "HAProxy in Docker", "url": "https://blog.john-pfeiffer.com/haproxy-in-docker/", "published_at": "2015-05-22T03:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dbe7059f", "title": "Caching data and common gotchas and an intro to redis memcached and varnish", "url": "https://blog.john-pfeiffer.com/caching-data-and-common-gotchas-and-an-intro-to-redis-memcached-and-varnish/", "published_at": "2015-03-26T07:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dc060bfe", "title": "Subunit and Subunit2JunitXML to get JUnitXML test result output from UnitTest", "url": "https://blog.john-pfeiffer.com/subunit-and-subunit2junitxml-to-get-junitxml-test-result-output-from-unittest/", "published_at": "2014-11-01T07:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dca7cdc3", "title": "Virtualenv Python Interpreter from source", "url": "https://blog.john-pfeiffer.com/virtualenv-python-interpreter-from-source/", "published_at": "2014-10-31T07:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dcdaac49", "title": "Xubuntu hotkey shortcuts and Zoom (also for xfce)", "url": "https://blog.john-pfeiffer.com/xubuntu-hotkey-shortcuts-and-zoom-also-for-xfce/", "published_at": "2014-10-08T23:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dda80729", "title": "Static site pelican blog with GitHub Pages and Travis CI", "url": "https://blog.john-pfeiffer.com/static-site-pelican-blog-with-github-pages-and-travis-ci/", "published_at": "2014-09-15T11:04:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dde99528", "title": "Mobile edit cloud execution of python code", "url": "https://blog.john-pfeiffer.com/mobile-edit-cloud-execution-of-python-code/", "published_at": "2014-09-08T04:37:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7de5501cf", "title": "Fix Fn screen brightness Ubuntu 14.04 intel graphics", "url": "https://blog.john-pfeiffer.com/fix-fn-screen-brightness-ubuntu-1404-intel-graphics/", "published_at": "2014-08-27T05:36:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7de6cdefc", "title": "Ubuntu Bootable USB, apt-get and dpkg, and the best packages to install", "url": "https://blog.john-pfeiffer.com/ubuntu-bootable-usb-apt-get-and-dpkg-and-the-best-packages-to-install/", "published_at": "2014-08-20T07:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7deaeed22", "title": "ListJS: Sort, Filters, Search and more for HTML lists and tables in Javascript", "url": "https://blog.john-pfeiffer.com/listjs-sort-filters-search-and-more-for-html-lists-and-tables-in-javascript/", "published_at": "2014-08-09T04:37:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7df1d7770", "title": "Intro to Amazon AWS Elastic Beanstalk", "url": "https://blog.john-pfeiffer.com/intro-to-amazon-aws-elastic-beanstalk/", "published_at": "2014-08-09T03:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7dfe3a93d", "title": "Publish a pelican blog using a Bitbucket POST Webhook", "url": "https://blog.john-pfeiffer.com/publish-a-pelican-blog-using-a-bitbucket-post-webhook/", "published_at": "2014-08-08T13:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e0130d16", "title": "Using Vagrant to deploy instances on AWS", "url": "https://blog.john-pfeiffer.com/using-vagrant-to-deploy-instances-on-aws/", "published_at": "2014-07-17T04:12:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e0fe7d74", "title": "Docker Intro install run and port forward", "url": "https://blog.john-pfeiffer.com/docker-intro-install-run-and-port-forward/", "published_at": "2014-07-11T00:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e1aeef82", "title": "Markdown syntax cheatsheet", "url": "https://blog.john-pfeiffer.com/markdown-syntax-cheatsheet/", "published_at": "2014-07-03T03:21:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e207f429", "title": "Creating a static web site with Bitbucket", "url": "https://blog.john-pfeiffer.com/creating-a-static-web-site-with-bitbucket/", "published_at": "2014-07-01T03:20:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e2420ba9", "title": "How to set up a Pelican static blog site", "url": "https://blog.john-pfeiffer.com/how-to-set-up-a-pelican-static-blog-site/", "published_at": "2014-06-22T03:21:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e2569184", "title": "Cumulus compatible S3, nginx, and HMAC signed requests", "url": "https://blog.john-pfeiffer.com/cumulus-compatible-s3-nginx-and-hmac-signed-requests/", "published_at": "2013-11-27T01:10:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e2c1f117", "title": "Selenium headless browser automated testing with PhantomJS and Python", "url": "https://blog.john-pfeiffer.com/selenium-headless-browser-automated-testing-with-phantomjs-and-python/", "published_at": "2013-09-18T04:04:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e308d2ae", "title": "Attack of the Spiders, Bots, and Crawlers", "url": "https://blog.john-pfeiffer.com/attack-of-the-spiders-bots-and-crawlers/", "published_at": "2013-07-21T06:00:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e396ff2a", "title": "Git Basics and Hard to Scratch Itches", "url": "https://blog.john-pfeiffer.com/git-basics-and-hard-to-scratch-itches/", "published_at": "2013-07-07T19:34:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e3e277a4", "title": "Logic Puzzles", "url": "https://blog.john-pfeiffer.com/logic-puzzles/", "published_at": "2013-05-13T12:31:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e3faad6c", "title": "Best Computer Science online and a More Complete Education", "url": "https://blog.john-pfeiffer.com/best-computer-science-online-and-a-more-complete-education/", "published_at": "2013-05-09T23:52:00+00:00" }, { "id": "01a0874c-60b2-72fd-b464-f3c7e3fad301", "title": "Jinja2, a web html template layout for everyone", "url": "https://blog.john-pfeiffer.com/jinja2-a-web-html-template-layout-for-everyone/", "published_at": "2013-04-30T11:35:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-33363ebc319a", "title": "Fix Byobu infinite scroll bug on Ubuntu 12.04 Precise Pangolin", "url": "https://blog.john-pfeiffer.com/fix-byobu-infinite-scroll-bug-on-ubuntu-1204-precise-pangolin/", "published_at": "2013-02-16T01:36:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-33363f324e5d", "title": "Google App Engine Python", "url": "https://blog.john-pfeiffer.com/google-app-engine-python/", "published_at": "2013-01-26T23:01:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-3336402a1d2e", "title": "Server Operations: Cloud versus Build Your Own", "url": "https://blog.john-pfeiffer.com/server-operations-cloud-versus-build-your-own/", "published_at": "2012-11-09T01:06:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-3336406c69bd", "title": "Tomcat deployment on Openshift for free", "url": "https://blog.john-pfeiffer.com/tomcat-deployment-on-openshift-for-free/", "published_at": "2012-09-11T20:48:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-33364093b77f", "title": "Creating Economies of Scale in Software Development", "url": "https://blog.john-pfeiffer.com/creating-economies-of-scale-in-software-development/", "published_at": "2012-07-29T11:39:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-333640dc2aa1", "title": "An Evolution of Questions and Answers", "url": "https://blog.john-pfeiffer.com/an-evolution-of-questions-and-answers/", "published_at": "2012-06-22T00:46:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-333641dbec47", "title": "Mid 2012 technology and business prediction for 2013 and beyond", "url": "https://blog.john-pfeiffer.com/mid-2012-technology-and-business-prediction-for-2013-and-beyond/", "published_at": "2012-05-31T23:00:00+00:00" }, { "id": "01a0874c-60b3-7175-b607-3336421f2eca", "title": "Amazon S3 Bucket HTML Redirect", "url": "https://blog.john-pfeiffer.com/amazon-s3-bucket-html-redirect/", "published_at": "2012-04-14T06:57:00+00:00" } ] posts Claim your blog
Back to blog.john-pfeiffer.com
Blog · corpus.blog/blogs/blog.john-pfeiffer.com/posts

blog.john-pfeiffer.com

blog.john-pfeiffer.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012