41554 blogs · [ { "id": "01a0878f-4df4-706b-9d6e-f2060bb936c8", "title": "Neighborhoods: giving agents a map before they start walking", "url": "https://johnewart.net/2026/dependency-graph-neighborhoods/", "published_at": "2026-08-02T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f0d2219c", "title": "Agents are the new compilers", "url": "https://johnewart.net/2026/agents-are-the-new-compilers/", "published_at": "2026-06-18T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f130dd7b", "title": "The right agent for the job", "url": "https://johnewart.net/2026/right-agent-for-the-job/", "published_at": "2026-06-15T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f14bcbe6", "title": "Stop the Edit Chaos: How Hashes Solve Agent Conflicts", "url": "https://johnewart.net/2026/hash-based-edits-for-agents/", "published_at": "2026-06-14T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f1d76d36", "title": "Launch plans, interns, and why I built Konstruct", "url": "https://johnewart.net/2026/konstruct-launch-plans-for-agents/", "published_at": "2026-06-10T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f21266be", "title": "There's no place like ~", "url": "https://johnewart.net/2022/nix-how-i-want-to-love-thee/", "published_at": "2022-03-25T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f21a346a", "title": "Observations on the complexity of software", "url": "https://johnewart.net/2021/complexity/", "published_at": "2021-06-29T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f2edb86e", "title": "Systems programming is hard", "url": "https://johnewart.net/2021/systems-programming-is-hard/", "published_at": "2021-06-10T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f2fed818", "title": "Sorry your tests are so slow...", "url": "https://johnewart.net/2021/sorry-about-your-tests/", "published_at": "2021-06-08T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f31fe5a3", "title": "So... emacs? Can we hang out?", "url": "https://johnewart.net/2021/so-emacs/", "published_at": "2021-06-04T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f3b7e219", "title": "Things that I'm grateful for", "url": "https://johnewart.net/2020/wtf-universe/", "published_at": "2020-12-30T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f3dd599f", "title": "eBPF map lookup", "url": "https://johnewart.net/2019/bpf_map_lookup/", "published_at": "2019-05-29T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f466134f", "title": "An introduction to ptrace", "url": "https://johnewart.net/2019/introduction_to_ptrace/", "published_at": "2019-05-01T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f5524fed", "title": "Constants of Software Development", "url": "https://johnewart.net/2019/principles_of_development/", "published_at": "2019-04-01T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f6192ab0", "title": "AWS Glue Python Script Dependencies", "url": "https://johnewart.net/2018/aws_glue_python_script_dependencies/", "published_at": "2018-07-01T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f6e1ade4", "title": "AWS Batch with Spot Block", "url": "https://johnewart.net/2018/aws_batch_spot_block/", "published_at": "2018-05-24T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f7b07696", "title": "AWS Batch and GPU-based Workloads", "url": "https://johnewart.net/2018/aws_batch_gpu_workloads/", "published_at": "2018-04-30T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f884c311", "title": "Lambda routing", "url": "https://johnewart.net/2017/nodejs_lambda_router/", "published_at": "2017-10-16T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f8f0b8e8", "title": "AWS How To Deploy static files to S3 and code to Lambda with Pipelines", "url": "https://johnewart.net/2017/aws_deploy_lambda_static_s3_site/", "published_at": "2017-09-06T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f95a4518", "title": "High Throughput SNS with C#", "url": "https://johnewart.net/2017/high_throughput_sns_with_csharp/", "published_at": "2017-07-31T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225f9dc17d7", "title": "VMWare AHCI Driver Woes", "url": "https://johnewart.net/2017/til_vmware_ahci_driver/", "published_at": "2017-06-21T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fac69dd5", "title": "A personal photo gallery V1: S3, Lambda and Rekognition", "url": "https://johnewart.net/2017/personal_photo_gallery_with_s3_lambda_and_rekognition/", "published_at": "2017-06-16T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fbadb2cd", "title": "Growing your FreeNAS USB root partition", "url": "https://johnewart.net/2017/til_freenas_zfs_grow_root/", "published_at": "2017-06-12T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fbde44dc", "title": "Jenkins and Github", "url": "https://johnewart.net/2016/til_jenkins_github/", "published_at": "2016-10-30T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fbef2f38", "title": "How to scope Filters for JAX-RS services", "url": "https://johnewart.net/2015/jaxrs_name_binding/", "published_at": "2015-10-15T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fc9ce6ab", "title": "How to replace Faraday middleware", "url": "https://johnewart.net/2015/faraday_test_adapter/", "published_at": "2015-10-12T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fd771f74", "title": "The value of boring", "url": "https://johnewart.net/2015/the_value_of_boring/", "published_at": "2015-10-09T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fe06b7c7", "title": "Using Hugo data files", "url": "https://johnewart.net/2015/using_hugo_data_files/", "published_at": "2015-10-08T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225fe87dce4", "title": "Switching Publishing Platforms", "url": "https://johnewart.net/2015/switching_publishing_platforms/", "published_at": "2015-10-07T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225ff4dbc0d", "title": "SOA for Humans", "url": "https://johnewart.net/2015/soa_for_humans/", "published_at": "2015-10-05T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a225ffb2c3bf", "title": "The birth of the monolith", "url": "https://johnewart.net/2015/birth_of_the_monolith/", "published_at": "2015-09-21T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226008b9935", "title": "Setting Boundaries in Your Code", "url": "https://johnewart.net/2015/service_boundaries/", "published_at": "2015-08-22T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226011ac175", "title": "Carving up the Monorail", "url": "https://johnewart.net/2015/rails_services/", "published_at": "2015-07-20T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22601586563", "title": "Guiding Principles for Building Services", "url": "https://johnewart.net/2015/principles_of_services/", "published_at": "2015-07-12T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22601bf4ae9", "title": "Thoughts on Dependencies", "url": "https://johnewart.net/2015/dependencies_in_software/", "published_at": "2015-04-09T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22601cea837", "title": "Moving fast (into sharp corners)", "url": "https://johnewart.net/2015/moving_fast_into_sharp_corners/", "published_at": "2015-03-09T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22602039adf", "title": "Kenshō, a PostgreSQL dashboard for ops folks", "url": "https://johnewart.net/2014/kensho_postgresql_dashboard/", "published_at": "2014-11-03T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226021fe882", "title": "Orchestration of Chef Resources with ZooKeeper", "url": "https://johnewart.net/2014/chef_orchestration_zookeeper/", "published_at": "2014-10-25T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226029a9f85", "title": "Book: Chef Essentials", "url": "https://johnewart.net/2014/chef_essentials/", "published_at": "2014-09-25T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22602ecc911", "title": "Interfaces in Ruby", "url": "https://johnewart.net/2014/ruby_interfaces/", "published_at": "2014-09-25T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260341d806", "title": "Thoughts about Fog.io", "url": "https://johnewart.net/2014/thoughts_about_fog/", "published_at": "2014-09-24T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22603a17210", "title": "Webinar: Automating your infrastructure with Chef", "url": "https://johnewart.net/2014/oreilly_webinar_august_6/", "published_at": "2014-08-09T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226042e8c15", "title": "Compiling psycopg2 under Mavericks", "url": "https://johnewart.net/2014/psycopg2_mavericks/", "published_at": "2014-04-23T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22604d445eb", "title": "Capping Riak Memory Consumption", "url": "https://johnewart.net/2013/capping_riak_memory_usage/", "published_at": "2013-05-10T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226053e68e2", "title": "Mounting LVM partitions from Xen Server", "url": "https://johnewart.net/2013/mount_xenserver_lvm_partitions/", "published_at": "2013-05-10T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226062d1941", "title": "Rackspace Cloud load balancers and WebSockets", "url": "https://johnewart.net/2013/rackspace_cloud_websockets/", "published_at": "2013-04-22T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a226071a4247", "title": "Sphinx, MacTeX and Macports", "url": "https://johnewart.net/2013/sphinx_mactex_macports/", "published_at": "2013-03-04T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22607acd3c2", "title": "Java's date formatter is not thread safe", "url": "https://johnewart.net/2013/java_date_formatter_thread_safety/", "published_at": "2013-01-23T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22607d2c00d", "title": "Creating a custom CRS with GeoTools", "url": "https://johnewart.net/2013/geotools_custom_crs/", "published_at": "2013-01-20T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260835d126", "title": "Converting between Proj4 and WKT with Python", "url": "https://johnewart.net/2013/proj4_to_wkt_conversion/", "published_at": "2013-01-20T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22608f331d5", "title": "USGS Elevation Data with Java", "url": "https://johnewart.net/2012/usgs_elevation_data/", "published_at": "2012-12-30T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22609349cdf", "title": "Migrating your Chef Server", "url": "https://johnewart.net/2012/migrating_chef/", "published_at": "2012-12-21T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22609896f89", "title": "DAO Testing with Hibernate", "url": "https://johnewart.net/2012/dropwizard_dao_testing/", "published_at": "2012-11-20T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a22609db04fd", "title": "Python has a simple HTTP server", "url": "https://johnewart.net/2012/python_http_server/", "published_at": "2012-11-12T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260a231e51", "title": "Xen DomU clock issues", "url": "https://johnewart.net/2012/xen_domu_clock/", "published_at": "2012-11-12T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260ad56626", "title": "Custom Serialization of Models with Jackson", "url": "https://johnewart.net/2012/jackson_custom_serializer/", "published_at": "2012-11-11T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260b128f53", "title": "PostGIS with Hibernate Spatial and Dropwizard", "url": "https://johnewart.net/2012/dropwizard_postgis/", "published_at": "2012-11-10T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260bd999e3", "title": "Using Sphinx for RESTful API docs", "url": "https://johnewart.net/2012/sphinx_restful_api_docs/", "published_at": "2012-11-09T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260cd68b7b", "title": "Riak MapReduce with Ruby", "url": "https://johnewart.net/2012/mapreduce/", "published_at": "2012-10-29T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260d6c77c0", "title": "Ruby Enterprise Edition and Ubuntu 12.04", "url": "https://johnewart.net/2012/ruby_enterprise_edition_ubuntu_precise/", "published_at": "2012-10-01T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260e4351cc", "title": "GeoTools, Maven and JAI, Oh My!", "url": "https://johnewart.net/2012/geotools/", "published_at": "2012-08-18T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260e6e58a0", "title": "Unsetting ZFS share settings on Solaris 11", "url": "https://johnewart.net/2012/zfs_options/", "published_at": "2012-05-01T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260f032f93", "title": "Using PGOPTIONS to stop statement timeouts", "url": "https://johnewart.net/2011/pg_options/", "published_at": "2011-08-24T00:00:00+00:00" }, { "id": "01a0878f-4df5-72de-9424-a2260f28a1a9", "title": "VRDP and VirtualBox", "url": "https://johnewart.net/2011/virtualbox_vrdp/", "published_at": "2011-05-30T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd2b5d4bf", "title": "MySQL, Sub-selects and IN()", "url": "https://johnewart.net/2011/mysql_in_queries/", "published_at": "2011-03-25T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd3523e4d", "title": "Testing asynchronous workers", "url": "https://johnewart.net/2011/testing_asynchronous_workers/", "published_at": "2011-03-11T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd35352fb", "title": "Using Rails controller actions from IRB", "url": "https://johnewart.net/2011/rails_controller_irb/", "published_at": "2011-03-09T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd431a7c0", "title": "Managing background processes", "url": "https://johnewart.net/2011/background_processes/", "published_at": "2011-03-08T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd4e537b2", "title": "Raw disks in VMWare ESXi", "url": "https://johnewart.net/2011/vmware_raw_disks/", "published_at": "2011-03-01T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd5b253a7", "title": "Rid yourself of NWAM", "url": "https://johnewart.net/2011/rid_yourself_of_nwam/", "published_at": "2011-03-01T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd697122e", "title": "Capistrano doesn't play well with background jobs", "url": "https://johnewart.net/2010/capistrano_background_jobs/", "published_at": "2010-07-29T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd788802b", "title": "bash pipes, sub-processes and variables", "url": "https://johnewart.net/2010/bash_pipe_mojo/", "published_at": "2010-07-29T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd7d9c416", "title": "Using OpenDNS as a site filter", "url": "https://johnewart.net/2010/26/", "published_at": "2010-04-06T00:00:00+00:00" }, { "id": "01a0878f-4df6-718e-b69e-3c5cd870fb5a", "title": "Using OpenDNS as a site filter", "url": "https://johnewart.net/2010/opendns_as_site_filter/", "published_at": "2010-04-06T00:00:00+00:00" } ] posts Claim your blog
Back to johnewart.net
Blog · corpus.blog/blogs/johnewart.net/posts

johnewart.net

johnewart.net

2026

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010