Archives

Sat 07 December 2024
Exploding memory usage in Django/uWSGI containers
Fri 04 October 2024
Keynote-worthy talks (I think?)
Mon 27 May 2024
3 places to eat: Florence
Fri 24 May 2024
Quit Simplifying (Config Management Camp & PyCon Italia 2024)
Sun 14 April 2024
Torrtija de las señoritas Tatin
Sun 25 February 2024
Lievito madre
Sat 10 February 2024
My talks are good (and suitable for a big audience)
Sat 18 November 2023
3 places to eat: Vienna
Wed 15 November 2023
3 places to eat: Stockholm
Sat 28 October 2023
Are you working in a remote office?
Thu 26 October 2023
Rootless Podman, systemd, and Docker Compose files
Wed 25 October 2023
On Responsibility
Sat 07 October 2023
Follow-up and follow-through
Thu 25 May 2023
Creativity (PyCon Italia 2023)
Sun 19 March 2023
The trouble with Key Results
Thu 23 February 2023
Making docs with MkDocs
Fri 10 February 2023
Brown M&Ms, UTC, and ISO 8601
Fri 06 January 2023
Handy Git aliases
Thu 29 December 2022
3 places to eat: Berlin
Mon 19 December 2022
3 places to eat: Tel Aviv
Sat 17 December 2022
Creativity (DevOpsDays Tel Aviv 2022)
Sun 11 December 2022
No, you won't get a PowerPoint from me!
Sat 12 November 2022
Bye, Birdsite
Sat 15 October 2022
Nebulous Percentage Shenanigans
Thu 29 September 2022
Uncertainty, industrious compliance, and the illusion of control
Sun 18 September 2022
Writing Professionally (DevOpsDays Berlin 2022)
Fri 19 August 2022
Jammy, don’t snap at me!
Sat 16 July 2022
Something interesting happened at work the other week...
Sun 26 June 2022
Python package dependency checking in a CI pipeline with pipdeptree
Mon 30 May 2022
Writing Professionally (C!Conf 2022)
Sun 15 May 2022
Batch-processing stereograms with StereoscoPy
Sat 14 May 2022
My experiment: an interim update
Sat 14 May 2022
Running a solar-powered laptop
Tue 10 May 2022
Drizzle: the most influential software project you’ve (probably) never heard of
Sun 08 May 2022
Sweet & savoury stir fry
Sat 07 May 2022
Entropy, management, and xkcd 927
Fri 06 May 2022
An experiment
Thu 05 May 2022
This site now lives on GitHub
Sat 29 January 2022
The Review Review
Sun 16 January 2022
Scaling the flat organization
Sun 05 December 2021
Voice messages
Sun 21 November 2021
Creativity: How we lost it, why that’s bad, and how we get it back
Sun 14 November 2021
Meaningless Metrics, Treacherous Targets
Sat 30 October 2021
Warnock’s Dilemma, Objections, and Acknowledgements
Wed 27 October 2021
This Meeting Should Have Been an Email
Sat 23 October 2021
Please, Make My Company Distributed!
Sat 23 October 2021
No, We Won’t Have a Video Call for That: The Companion Pieces
Sun 17 October 2021
Universal tox tests (from just about any CI)
Thu 07 October 2021
On Contravictions
Thu 07 October 2021
The Review Review
Sun 03 October 2021
Getting out of Meeting Hell: As a top-level executive
Sat 02 October 2021
Getting out of Meeting Hell: As a mid-level manager
Fri 01 October 2021
Getting out of Meeting Hell: As a regular employee
Thu 30 September 2021
Getting out of Meeting Hell: What this is about
Sun 26 September 2021
No, We Won’t Have a Video Call for That: Reader Feedback
Thu 16 September 2021
Rules are rules
Fri 27 August 2021
How to write a decent job ad
Tue 24 August 2021
Audience feedback on online conference platforms: a speaker's view
Sat 21 August 2021
Add Depth! Stereoscopic imagery for everyone
Sun 17 January 2021
Running (Almost) Anything in LXC: Applications Using Your Webcam
Sun 17 January 2021
Fixing powerline flicker on your webcam feed with a udev rule
Sat 16 January 2021
Running (Almost) Anything in LXC: Sound
Sat 09 January 2021
Running (Almost) Anything in LXC: X applications
Mon 28 December 2020
Running (Almost) Anything in LXC: The Basics
Fri 06 November 2020
Add depth! Stereoscopic imagery for everyone
Thu 22 October 2020
I Don’t Think This Means What You Think It Means: Red Herrings in OpenStack
Tue 08 September 2020
What I now know about HAproxied Django database connections, and wish I'd known sooner
Sat 22 August 2020
No, We Won’t Have a Video Call for That!
Sat 22 August 2020
No, We Won’t Have a Video Call for That: Slides and Recordings
Wed 06 May 2020
Celery to Chew On
Tue 04 February 2020
Paying People
Tue 04 February 2020
Why do they always lie?
Wed 01 January 2020
Salacious Salad and Omelette
Tue 31 December 2019
My 2010s
Mon 30 December 2019
Exceptional Pan Pizza
Fri 20 December 2019
DevOpsDays Tel Aviv 2019
Fri 13 December 2019
Slidecraft updates
Sat 30 November 2019
Ceph Erasure Code Overhead Mathematics
Tue 05 November 2019
The Little Bag Of Tricks: 10 Things You Might Not Know You Can Do With OpenStack
Wed 21 August 2019
Using ftrace to trace function calls from qemu-guest-agent
Mon 12 August 2019
Learn Complex Skills, From Anywhere: Combining Django, Ansible and OpenStack to teach any tech skill
Thu 06 June 2019
Team meetings
Sat 25 May 2019
Learn Ceph — For Fun, For Real, For Free!
Tue 21 May 2019
Geographical Redundancy with rbd-mirror
Wed 08 May 2019
I Don’t Think This Means What You Think It Means: Red Herrings in OpenStack
Tue 07 May 2019
One For All: Using Terraform to manage OpenStack and Kubernetes resources
Wed 01 May 2019
Configuring CLI output verbosity with logging and argparse
Sat 27 April 2019
Nonexisticon
Wed 24 April 2019
No, really, don't chuck everything in Slack: communications for distributed teams
Tue 23 April 2019
Talk submissions
Tue 23 April 2019
Writing for learners: best practices for creating, developing, and maintaining self-paced learning resources
Sun 21 April 2019
If you’re a leader in tech, “non-technical” is not a free pass
Mon 25 March 2019
Why upload filters don’t work (really simple math!)
Thu 21 March 2019
Article 17: The time to act is now.
Sun 10 March 2019
Using coverage with multiple parallel GitLab CI jobs
Sat 09 March 2019
Building a nested CLI parser from a dictionary
Wed 23 January 2019
Learn Complex Skills, From Anywhere: Combining Django, Ansible and OpenStack to teach any tech skill
Sat 08 December 2018
1,000 routers per tenant? Think again!
Wed 10 October 2018
The Little Bag O’Tricks: 10 Things You Might Not Know You Can Do With OpenStack
Sun 18 February 2018
Working from home, with little kids in the house
Thu 03 August 2017
More recommendations for Ceph and OpenStack
Fri 17 February 2017
Importing an existing Ceph RBD image into Glance
Thu 02 February 2017
Replacing the built-in Open edX forum with a suitable alternative
Mon 28 November 2016
The Dos and Don'ts for Ceph for OpenStack
Mon 07 November 2016
High Availability and Disaster Recovery in OpenStack
Thu 27 October 2016
Heat and its Alternatives: Application Deployment in OpenStack
Thu 06 October 2016
CephFS and LXC: Container High Availability and Scalability, Redefined
Sat 20 August 2016
Fragile development: Why Scrum sucks, and what you should be doing instead (full talk)
Tue 05 July 2016
Fragile Development: Scrum is terrible, and you should ditch it
Tue 05 July 2016
Wiping and resetting your SUSE OpenStack Cloud Crowbar configuration
Wed 29 June 2016
Why Scrum sucks, and what you ought to be doing instead
Sun 21 February 2016
Containers: Just Because Everyone Else is Doing Them Wrong, Doesn't Mean You Have To
Fri 12 February 2016
Dogfooding Dogwood
Sat 30 January 2016
Pacemaker's best-kept secret: crm_report
Tue 26 January 2016
Hosting a web site in radosgw
Tue 05 January 2016
My first Open edX contribution
Wed 23 December 2015
Removing buckets in radosgw (and their contents)
Wed 23 December 2015
A minimal Ubuntu OpenStack Juju configuration in just four nodes
Thu 17 December 2015
A Python one-liner for pretty-printing radosgw utilization
Wed 18 November 2015
Understanding radosgw benchmarks
Tue 10 November 2015
OpenStack for Open edX: Inside and Out (SWITCH ICT-Focus 2015)
Wed 28 October 2015
Clusters, Routers, Agents and Networks: High Availability in Neutron
Tue 27 October 2015
Automated OpenStack deployment: A comparison
Mon 12 October 2015
Open edX
Wed 07 October 2015
Manageable Application Containers: Lightning Quick Updates, Scaleable Security, Easy High Availability
Mon 15 June 2015
OpenStack Orchestration and Automation
Wed 27 May 2015
Ceph Tech Talk: Placement Groups
Sat 15 November 2014
Have Data, Want Scale, Indefinitely: Exploring Ceph
Wed 22 October 2014
Ceph Performance Demystified: Benchmarks, Tools, and the Metrics that Matter
Tue 14 October 2014
OpenStack High Availability: Are We There Yet?
Thu 24 July 2014
Speak! How to talk in public and not wreck your voice
Thu 27 March 2014
Hands On Trove: Database as a Service in OpenStack
Mon 24 February 2014
Fun with extended attributes in Ceph Dumpling
Tue 28 January 2014
Unrecoverable unfound objects in Ceph 0.67 and earlier
Mon 20 January 2014
linux.conf.au 2014, or My Annual Journey To Awesome
Tue 10 December 2013
Greetings from Havana: A fresh perspective on globally distributed OpenStack
Fri 31 May 2013
Ceph: object storage, block storage, file system, replication, massive scalability and then some!
Tue 28 May 2013
Ceph: The Storage Stack for OpenStack
Tue 07 May 2013
Enter the cuttlefish!
Wed 17 April 2013
More Reliable, More Resilient, More Redundant
Thu 21 February 2013
High Availability Update: You can now vote our talk into the OpenStack summit!
Wed 20 February 2013
High Availability Update (Grizzly and Havana)
Mon 28 January 2013
My week at linux.conf.au 2013
Sun 13 January 2013
Solid-state drives and Ceph OSD journals
Sun 16 December 2012
Thoughts on "ecosystems"
Thu 06 December 2012
On the merits of working from home, in a distributed virtual team
Tue 04 December 2012
Adding MySQL/Galera resources to Pacemaker
Tue 04 December 2012
Bootstrapping the Galera cluster
Tue 04 December 2012
Configuring Corosync
Tue 04 December 2012
Dealing with node failure
Tue 04 December 2012
MySQL/Galera in Pacemaker High Availability Clusters
Tue 04 December 2012
Recovering from full cluster shutdown
Tue 04 December 2012
Setting Galera-specific MySQL options
Tue 04 December 2012
Starting Pacemaker
Tue 04 December 2012
Testing resource recovery
Mon 03 December 2012
MySQL High Availability Deep Dive
Thu 08 November 2012
GlusterFS in High Availability Clusters
Thu 08 November 2012
Hands-On With Ceph
Wed 24 October 2012
Talking Ceph and GlusterFS at LinuxCon Europe
Mon 22 October 2012
Migrating virtual machines from block-based storage to RADOS/Ceph
Wed 26 September 2012
Pacemaker and the recent GitHub service interruption
Mon 24 September 2012
Maintenance in active Pacemaker clusters
Thu 30 August 2012
High Availability in OpenStack
Mon 20 August 2012
Speaking and BoFing at CloudOpen in San Diego!
Tue 17 July 2012
Highly Available Cloud: Pacemaker integration with OpenStack
Mon 09 July 2012
Configuring radosgw to behave like Amazon S3
Fri 18 May 2012
Fencing in VMware virtualized Pacemaker nodes
Thu 03 May 2012
An exciting day for the Ceph community
Tue 24 April 2012
A look back at my first OpenStack Design Summit & Conference
Fri 20 April 2012
Reliable, Redundant, Resilient: High Availability in OpenStack
Tue 03 April 2012
Speaking at OSCON 2012
Wed 28 March 2012
Presentation accepted for OpenStack Spring 2012 Conference
Thu 22 March 2012
Mandatory and advisory ordering in Pacemaker
Wed 21 March 2012
High Availability in OpenStack
Tue 20 March 2012
On my (ex-)maintainership of the DRBD User's Guide
Mon 19 March 2012
Managing cron jobs with Pacemaker
Mon 19 March 2012
Storage Replication in High-Performance High-Availability Environments
Mon 19 March 2012
Roll Your Own Cloud
Thu 15 March 2012
What's a Totem "Retransmit List" all about in Corosync?
Tue 13 March 2012
The Zen of Pacemaker
Fri 09 March 2012
Finding out which OSDs currently store a specific RADOS object
Thu 08 March 2012
Ceph: tickling my geek genes
Tue 06 March 2012
Solve a DRBD split-brain in 4 steps
Sun 04 March 2012
Checking Corosync cluster membership
Wed 29 February 2012
Fencing in Libvirt/KVM virtualized cluster nodes
Mon 27 February 2012
Network connectivity check in Pacemaker
Mon 27 February 2012
Speaking at the 2012 Percona Live MySQL Conference
Sun 26 February 2012
GFS2 in Pacemaker (Debian/Ubuntu)
Sun 26 February 2012
Interleaving in Pacemaker clones
Fri 24 February 2012
OCFS2 in Pacemaker (Debian/Ubuntu)
Tue 01 November 2011
Fencing and Maintaining Sanity in High-Availability Clusters
Tue 01 November 2011
MySQL High Availability Sprint: Launch the Pacemaker!