<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Adam Fallon</title><link>https://adamfallon.com/</link><description>Notes on technology, software engineering, and things I learn along the way.</description><language>en-GB</language><atom:link href="https://adamfallon.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Monitoring</title><link>https://adamfallon.com/monitoring.html</link><guid>https://adamfallon.com/monitoring.html</guid><pubDate>Fri, 18 Sep 2026 00:00:00 +0100</pubDate><description>Things that might be important in the future.</description></item><item><title>Docker Send Email with Bash Scripts (bytemark/smtp + Gmail SMTP)</title><link>https://adamfallon.com/send_email_simply.html</link><guid>https://adamfallon.com/send_email_simply.html</guid><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><description>Docker send email guide using bytemark/smtp and Gmail SMTP. Set up automated email notifications with a simple bash script for cron jobs and backup alerts.</description></item><item><title>LLM Translation: Building Real-Time Multilingual Features with Claude</title><link>https://adamfallon.com/llm_translator.html</link><guid>https://adamfallon.com/llm_translator.html</guid><pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate><description>How we built a real-time LLM translation service at Trainline using Claude 3.5 and AWS Bedrock to translate travel disruption messages across languages.</description></item><item><title>Elasticsearch Data Breach Analysis: Searching 500M Records</title><link>https://adamfallon.com/elasticsearch_data_breach.html</link><guid>https://adamfallon.com/elasticsearch_data_breach.html</guid><pubDate>Thu, 22 Dec 2022 00:00:00 +0000</pubDate><description>How to use Elasticsearch and Kibana to search through the Facebook data breach. Step-by-step guide to indexing millions of records with Docker.</description></item><item><title>iOS Network Logging: On-Device Debugging Without a Proxy</title><link>https://adamfallon.com/ios_network_logging.html</link><guid>https://adamfallon.com/ios_network_logging.html</guid><pubDate>Sun, 04 Sep 2022 00:00:00 +0100</pubDate><description>Learn how to build an iOS network logging tool that captures HTTP requests on-device, eliminating the need for proxy setup during mobile release testing.</description></item><item><title>Postgres Geospatial Queries: Building Location-Based Features Like YikYak</title><link>https://adamfallon.com/yikyak_postgres.html</link><guid>https://adamfallon.com/yikyak_postgres.html</guid><pubDate>Mon, 08 Aug 2022 00:00:00 +0100</pubDate><description>Learn how to build location-based features using Postgres geospatial extensions. Use earthdistance and cube to find nearby posts like YikYak did.</description></item><item><title>Stop all containers docker</title><link>https://adamfallon.com/til-stop-all-containers-docker.html</link><guid>https://adamfallon.com/til-stop-all-containers-docker.html</guid><description>To stop every running container in Docker, pass the output of docker ps -q to docker stop.</description></item><item><title>Spell checking in emacs</title><link>https://adamfallon.com/til-emacs-spellcheck.html</link><guid>https://adamfallon.com/til-emacs-spellcheck.html</guid><description>You can install a spellchecking tool like ispell or aspell and use a package in Emacs to do spell checking, then fix words with a handful of shortcuts.</description></item><item><title>Setup a yubikey for authenticating in macOS</title><link>https://adamfallon.com/til-setup-a-yubikey.html</link><guid>https://adamfallon.com/til-setup-a-yubikey.html</guid><description>Change the default PIN and PUK on a YubiKey with the YubiKey Authenticator app, since it defaults to 123456 and you don't want that in case someone finds your key.</description></item><item><title>Retrieve secret from GCP secret manager</title><link>https://adamfallon.com/til-retrieve-secret-from-gcp-secret-manager.html</link><guid>https://adamfallon.com/til-retrieve-secret-from-gcp-secret-manager.html</guid><description>List the secrets in a GCP project and read the latest version of one with gcloud, grepping out just the bit you need.</description></item><item><title>MX records from command line</title><link>https://adamfallon.com/til-mx-command-line.html</link><guid>https://adamfallon.com/til-mx-command-line.html</guid><description>To get the mail (MX) records for a domain, you can ask dig for them from the command line.</description></item><item><title>How to search inside json blob in PostgreSQL</title><link>https://adamfallon.com/til-sql-looking-for-json.html</link><guid>https://adamfallon.com/til-sql-looking-for-json.html</guid><description>To dig into a JSON blob in Postgres, use the @&gt; containment operator to match objects inside a JSON array.</description></item><item><title>How to pick a lock</title><link>https://adamfallon.com/til-lock-picking.html</link><guid>https://adamfallon.com/til-lock-picking.html</guid><description>To lock pick a pin tumbler you need two tools: a tensioner and a pick. Then you push the pins up past the shear line so you can turn the key.</description></item><item><title>How to mirror two folders so they are identical</title><link>https://adamfallon.com/til-mirror-folders.html</link><guid>https://adamfallon.com/til-mirror-folders.html</guid><description>Using rsync you can mirror one folder to another, deleting anything in the destination that isn't in the source.</description></item><item><title>How to make a public claim ahead of time</title><link>https://adamfallon.com/til-public-claims.html</link><guid>https://adamfallon.com/til-public-claims.html</guid><description>To make a claim now that you only want to reveal later, you can shasum the message, post the hash publicly, then reveal the original later to prove it matches.</description></item><item><title>How to get results between two dates in SQL</title><link>https://adamfallon.com/til-sql-data-range.html</link><guid>https://adamfallon.com/til-sql-data-range.html</guid><description>To grab rows between two dates, use BETWEEN in your WHERE clause.</description></item><item><title>Get fingerprint of SSH key</title><link>https://adamfallon.com/til-get-fingerprint-of-ssh-key.html</link><guid>https://adamfallon.com/til-get-fingerprint-of-ssh-key.html</guid><description>On github.com your SSH keys show a fingerprint, not the full public key. So if you had multiple keys, how could you figure out which one maps back to the one on GitHub?</description></item><item><title>Find text inside a folder of files</title><link>https://adamfallon.com/til-grep.html</link><guid>https://adamfallon.com/til-grep.html</guid><description>Search files recursively for a term with line numbers, or pipe find into grep to match on file names.</description></item><item><title>Find in use ports</title><link>https://adamfallon.com/til-find-in-use-ports.html</link><guid>https://adamfallon.com/til-find-in-use-ports.html</guid><description>How do I tell what ports are in use on my computer?</description></item><item><title>Export SQL to CSV</title><link>https://adamfallon.com/til-exporting-sql-query-to-csv.html</link><guid>https://adamfallon.com/til-exporting-sql-query-to-csv.html</guid><description>Wrap psql in a small shell function and use COPY ... TO STDOUT WITH (FORMAT csv, HEADER true) to export a query straight to a CSV file.</description></item><item><title>Describe a GCP cloud run job</title><link>https://adamfallon.com/til-describe-a-gcp-cloud-run-job.html</link><guid>https://adamfallon.com/til-describe-a-gcp-cloud-run-job.html</guid><description>Running gcloud run jobs describe shows a Cloud Run job's tasks, parallelism, container image, memory and more.</description></item><item><title>Creating new roles in Postgres</title><link>https://adamfallon.com/til-create-new-role-in-postgres.html</link><guid>https://adamfallon.com/til-create-new-role-in-postgres.html</guid><description>Grant a new Postgres user connect, schema usage and table privileges, then check what they've been granted.</description></item></channel></rss>