56,966 blogs ยท [ { "id": "01a087a4-39e7-7031-9108-5178490dc1dd", "title": "Safe Yolo Mode: Running LLM Agents in VMs with Libvirt and Virsh", "url": "https://www.metachris.dev/2026/02/safe-yolo-mode-running-llm-agents-in-vms-with-libvirt-and-virsh/", "published_at": "2026-02-10T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517849e9f4e4", "title": "What Caught My Eye in January", "url": "https://www.metachris.dev/2026/02/what-caught-my-eye-in-january/", "published_at": "2026-02-01T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784a7ad0e2", "title": "2025 - Year in review", "url": "https://www.metachris.dev/2026/01/2025-year-in-review/", "published_at": "2026-01-01T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784aa77d3e", "title": "Sandbox Your AI Dev Tools: A Practical Guide for VMs and Lima", "url": "https://www.metachris.dev/2025/11/sandbox-your-ai-dev-tools-a-practical-guide-for-vms-and-lima/", "published_at": "2025-11-25T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784b569ed0", "title": "How to Query GitHub for User Contributions in a Specific Timeframe", "url": "https://www.metachris.dev/2025/10/how-to-query-github-for-user-contributions-in-a-specific-timeframe/", "published_at": "2025-10-10T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784bf74d31", "title": "TLS Certificate Cheat Sheet - OpenSSL & Curl", "url": "https://www.metachris.dev/2025/09/tls-certificate-cheat-sheet-openssl-curl/", "published_at": "2025-09-22T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784cce404c", "title": "My Mac Dev Setup and Favorite Tools", "url": "https://www.metachris.dev/2024/01/my-mac-dev-setup-and-favorite-tools/", "published_at": "2024-01-12T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784d81b811", "title": "Terminal and Bash - Tips & Tricks", "url": "https://www.metachris.dev/2024/01/terminal-and-bash-tips-tricks/", "published_at": "2024-01-04T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784d8d03fe", "title": "Bid cancellations considered harmful", "url": "https://www.metachris.dev/2023/05/bid-cancellations-considered-harmful/", "published_at": "2023-05-05T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784e3240b9", "title": "Block Building inside SGX", "url": "https://www.metachris.dev/2023/03/block-building-inside-sgx/", "published_at": "2023-03-23T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784ec8b5cf", "title": "Running Geth within SGX: Our Experience, Learnings and Code", "url": "https://www.metachris.dev/2022/12/running-geth-within-sgx-our-experience-learnings-and-code/", "published_at": "2022-12-20T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51784f516424", "title": "Securing private keys with a high-performance, threshold signature-based protocol", "url": "https://www.metachris.dev/2021/07/securing-private-keys-with-a-high-performance-threshold-signature-based-protocol/", "published_at": "2021-07-21T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785016f4af", "title": "Creating Go Bindings for Ethereum Smart Contracts", "url": "https://www.metachris.dev/2021/05/creating-go-bindings-for-ethereum-smart-contracts/", "published_at": "2021-05-30T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178509532bb", "title": "Starting a TypeScript Project in 2021", "url": "https://www.metachris.dev/2021/04/starting-a-typescript-project-in-2021/", "published_at": "2021-04-15T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa33034780d", "title": "PDFx update and new version release (v1.4.1)", "url": "https://www.metachris.dev/2021/04/pdfx-update-and-new-version-release-v1.4.1/", "published_at": "2021-04-12T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517851693eea", "title": "Starting a TypeScript Project in 2021", "url": "https://www.metachris.dev/2021/03/bootstrapping-a-typescript-node.js-project/", "published_at": "2021-03-24T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3308bc313", "title": "MicroPython-Ctl - a TypeScript library for talking to MicroPython devices", "url": "https://www.metachris.dev/2021/01/micropython-ctl-a-typescript-library-for-talking-to-micropython-devices/", "published_at": "2021-01-29T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa330916823", "title": "A new version of logzero is released (v1.6) ๐ŸŽ‰", "url": "https://www.metachris.dev/2020/10/a-new-version-of-logzero-is-released-v1.6/", "published_at": "2020-10-30T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178531216b3", "title": "It's been a while!", "url": "https://www.metachris.dev/2020/10/its-been-a-while/", "published_at": "2020-10-08T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517853f8a940", "title": "City of Zion Project Report โ€” June to August 2018", "url": "https://www.metachris.dev/2018/10/city-of-zion-project-report-june-to-august-2018/", "published_at": "2018-10-06T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517854d00109", "title": "NEO dApps review - CoZ first dApps competition", "url": "https://www.metachris.dev/2017/11/neo-dapps-review-coz-first-dapps-competition/", "published_at": "2017-11-23T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517855492949", "title": "How to build an ICO on NEO with the NEX ICO smart contract template", "url": "https://www.metachris.dev/2017/11/how-to-build-an-ico-on-neo-with-the-nex-ico-smart-contract-template/", "published_at": "2017-11-19T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178561e41fc", "title": "How to run a private network of the NEO blockchain", "url": "https://www.metachris.dev/2017/11/how-to-run-a-private-network-of-the-neo-blockchain/", "published_at": "2017-11-03T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3309fcb3a", "title": "logzero - Simplified logging for Python 2 and 3", "url": "https://www.metachris.dev/2017/06/logzero-simplified-logging-for-python-2-and-3/", "published_at": "2017-06-29T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178567fa4e4", "title": "How to test Vue.js plugins and extensions", "url": "https://www.metachris.dev/2017/05/how-to-test-vue.js-plugins-and-extensions/", "published_at": "2017-05-31T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785774fdba", "title": "Continuous Deployment: Hugo + Travis CI โ†’ GitHub Pages", "url": "https://www.metachris.dev/2017/04/continuous-deployment-hugo--travis-ci-github-pages/", "published_at": "2017-04-25T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178587108c7", "title": "KubeCon Europe 2017 Impressions", "url": "https://www.metachris.dev/2017/04/kubecon-europe-2017-impressions/", "published_at": "2017-04-07T22:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785918a142", "title": "Interesting facts from the Snapchat IPO filing", "url": "https://www.metachris.dev/2017/02/snapchat-files-for-ipo-interesting-facts-from-the-filing/", "published_at": "2017-02-02T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785923df59", "title": "Vue.js Syntax Highlighting with highlight.js", "url": "https://www.metachris.dev/2017/02/vuejs-syntax-highlighting-with-highlightjs/", "published_at": "2017-02-01T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517859fed7eb", "title": "How to install Node.js 6.x Long-Term Support (LTS) on Ubuntu/Debian and CentOS", "url": "https://www.metachris.dev/2017/01/how-to-install-nodejs-6-lts-on-ubuntu-and-centos/", "published_at": "2017-01-12T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785a229b22", "title": "How to install Node.js 7.x on Ubuntu/Debian and CentOS", "url": "https://www.metachris.dev/2017/01/how-to-install-nodejs-7-on-ubuntu-and-centos/", "published_at": "2017-01-12T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785aded488", "title": "Custom Errors in TypeScript 2.1", "url": "https://www.metachris.dev/2017/01/custom-errors-in-typescript-2.1/", "published_at": "2017-01-06T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785af6c609", "title": "Great Talks and Presentations at 33C3", "url": "https://www.metachris.dev/2017/01/great-talks-and-presentations-at-33c3/", "published_at": "2017-01-03T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa330bbd660", "title": "Python Utilities by Peter Norvig", "url": "https://www.metachris.dev/2016/12/peter-norvigs-python-utilities-advent-of-code/", "published_at": "2016-12-27T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa330de26d4", "title": "Python Thread Pool", "url": "https://www.metachris.dev/2016/04/python-threadpool/", "published_at": "2016-04-11T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3314adc8d", "title": "How to install Qt 5.6 and PyQt5 in a Python 3.4 virtual environment on Mac OS X and Linux", "url": "https://www.metachris.dev/2016/03/how-to-install-qt56-pyqt5-virtualenv-python3/", "published_at": "2016-03-24T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3321ea318", "title": "Find broken hyperlinks in a PDF document with PDFx", "url": "https://www.metachris.dev/2016/03/find-broken-hyperlinks-in-a-pdf-document-with-pdfx/", "published_at": "2016-03-19T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785d5513cb", "title": "Free Transactional Email Services - The Best Alternatives to Mandrill & Co.", "url": "https://www.metachris.dev/2016/03/free-transactional-email-services-the-best-alternatives-to-mandrill/", "published_at": "2016-03-08T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785de6c44f", "title": "How to Optimize Wordpress Performance with nginx and WP Super Cache", "url": "https://www.metachris.dev/2016/02/how-to-optimize-wordpress-performance-with-nginx-and-wp-super-cache/", "published_at": "2016-02-21T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51785e71a9b4", "title": "Comparison of 10 ACME / Let's Encrypt Clients", "url": "https://www.metachris.dev/2015/12/comparison-of-10-acme-lets-encrypt-clients/", "published_at": "2015-12-14T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa332e15a75", "title": "Creating standalone Mac OS X applications with Python and py2app", "url": "https://www.metachris.dev/2015/11/create-standalone-mac-os-x-applications-with-python-and-py2app/", "published_at": "2015-11-28T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3339d70f0", "title": "Python Helpers for String/Unicode Encoding, Decoding and Printing", "url": "https://www.metachris.dev/2015/11/python-tools-for-string-unicode-encoding-decoding-printing/", "published_at": "2015-11-23T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51786022fcb2", "title": "Machine Learning on Amazon AWS GPU Instances", "url": "https://www.metachris.dev/2015/11/machine-learning-on-amazon-aws-gpu-instances/", "published_at": "2015-11-22T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa334241e06", "title": "David Beazley - Python Concurrency From the Ground Up (LIVE @PyCon 2015)", "url": "https://www.metachris.dev/2015/11/david-beazley-python-concurrency-from-the-ground-up-live-pycon-2015/", "published_at": "2015-11-13T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517861194c6a", "title": "How to install Node.js 5.x on CentOS and Ubuntu/Debian", "url": "https://www.metachris.dev/2015/10/how-to-install-nodejs-5-on-centos-and-ubuntu/", "published_at": "2015-10-30T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa334248897", "title": "PDFx v1.0 - Extract metadata and URLs from PDFs, and download all referenced PDFs", "url": "https://www.metachris.dev/2015/10/pdfx-extract-metadata-and-download-references-from-pdfs/", "published_at": "2015-10-26T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517861ee2cb7", "title": "How to install Node.js 4.x (LTS) on CentOS", "url": "https://www.metachris.dev/2015/10/how-to-install-nodejs-4-on-centos/", "published_at": "2015-10-22T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178628127c9", "title": "Retrofit 2.0 Samples", "url": "https://www.metachris.dev/2015/10/retrofit-2-samples/", "published_at": "2015-10-12T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517862b606bf", "title": "Yet Another DMCA Takedown", "url": "https://www.metachris.dev/2011/12/yet-another-dmca-takedown/", "published_at": "2011-12-21T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3349c979e", "title": "App Engine Boilerplate 2.0 โ€“ Using html5-boilerplate v2 on Google App Engine", "url": "https://www.metachris.dev/2011/08/app-engine-boilerplate-2-0-using-html5-boilerplate-v2-on-google-app-engine/", "published_at": "2011-08-12T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa33565ebd9", "title": "App Engine Boilerplate", "url": "https://www.metachris.dev/2011/04/app-engine-boilerplate/", "published_at": "2011-04-05T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517864e0c58e", "title": "How to get 4 to 5 stars in the Android market (Appirater for Android)", "url": "https://www.metachris.dev/2011/03/how-to-get-4-to-5-stars-in-the-android-market-appirater-for-android/", "published_at": "2011-03-07T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa336305d44", "title": "Scaling Python Servers with Worker Processes and Socket Duplication", "url": "https://www.metachris.dev/2011/01/scaling-python-servers-with-worker-processes-and-socket-duplication/", "published_at": "2011-01-29T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa336e6e70e", "title": "Unicode and UTF Overview", "url": "https://www.metachris.dev/2010/12/unicode-overview/", "published_at": "2010-12-27T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51786720a682", "title": "Advice for Android Developers: Prepare for App Acquisition", "url": "https://www.metachris.dev/2010/12/advice-for-android-developers-prepare-for-app-acquisition/", "published_at": "2010-12-20T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517867abbe5d", "title": "Useful Linux Command of the Day - compgen", "url": "https://www.metachris.dev/2010/12/useful-linux-command-of-the-day-compgen/", "published_at": "2010-12-11T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-51786811f540", "title": "How to Setup Android 2.3 (Gingerbread) in Eclipse, including the Galaxy Tab SDK", "url": "https://www.metachris.dev/2010/12/how-to-setup-android-2-3-gingerbread-in-eclipse-including-the-galaxy-tab-sdk/", "published_at": "2010-12-06T00:00:00+00:00" }, { "id": "01a0821d-6aaf-7392-98d2-8aa3373a419e", "title": "Python, Threads and the Global Interpreter Lock (GIL)", "url": "https://www.metachris.dev/2010/10/python-threads-and-the-global-interpreter-lock-gil/", "published_at": "2010-10-13T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-5178681ce791", "title": "History of What.CDโ€™s Bittorrent Tracker Software", "url": "https://www.metachris.dev/2010/10/history-of-what-cds-bittorrent-tracker-software/", "published_at": "2010-10-13T00:00:00+00:00" }, { "id": "01a087a4-39e7-7031-9108-517868bd2819", "title": "About", "url": "https://www.metachris.dev/about/", "published_at": null }, { "id": "01a087a4-39e7-7031-9108-517869087728", "title": "Contact", "url": "https://www.metachris.dev/contact/", "published_at": null }, { "id": "01a087a4-39e7-7031-9108-517869987805", "title": "Most Simple Ajax Chat Ever", "url": "https://www.metachris.dev/projects/most-simple-ajax-chat-ever/", "published_at": null }, { "id": "01a087a4-39e7-7031-9108-51786a92c662", "title": "PDFx - Extract references and metadata from PDF documents, and download all referenced PDFs", "url": "https://www.metachris.dev/pdfx/", "published_at": null }, { "id": "01a087a4-39e7-7031-9108-51786b0e3f77", "title": "Projects & Previous Work", "url": "https://www.metachris.dev/projects/", "published_at": null } ] posts Claim your blog
Back to Chris Hager
Blog ยท corpus.blog/blogs/metachris.dev/posts

Chris Hager

metachris.dev

2026

2025

2024

2023

2022

2021

2020

2018

2017

2016

2015

2011

2010

Undated