Paul Mucur /pɔːl 'mʌdʒəʳ/

I’m a Senior Principal Engineer at Raspberry Pi. I was an independent software development consultant at Ghost Cassette from 2019–2023, CTO of Altmetric from 2013–2018 and a Technical Lead at the scientific journal Nature.

I’m an open source software maintainer and contributor including Ruby 2.6’s function composition operators and the Ruby bindings to the RE2 regular expression library used in GitLab.

I was an organiser of London Computation Club and a speaker at the London Ruby User Group.

Posts  

Scripting Photos for macOS with JavaScript
Automatically editing photo metadata for iCloud Photos using JavaScript for Automation.
Using a Raspberry Pi for Time Machine
How to share a disk with Samba and Avahi on a Raspberry Pi for use with macOS backups.
Cross-Compiling Rust for a Raspberry Pi on Travis CI
How to compile binaries from a Rust project that will run on a Raspberry Pi using Travis CI.
What Is a “Successful” Software Development Team?
Thoughts on the difficulty of gauging and improving the success of development teams following Scale Summit 2016.
Data Structures as Functions (or, Implementing Set#to_proc and Hash#to_proc in Ruby)
Experimenting with using hashes and sets as functions in Ruby.
A Summit for Scaling
A summary of my time at 2014’s Scale Summit: a performance and scalability unconference.
Implementing if in Ruby
Using multiple blocks in Ruby to implement Smalltalk-style control flow.
Testing Vim Plugins on Travis CI with RSpec and Vimrunner
How to continuously integrate and test-drive Vim plugin development with the Vimrunner gem.
Naming Dynamically Created iframes
Working around issues with setting iframe names in Internet Explorer.
Managing Web Application Servers with Puppet
A transcript of my August 2011 LRUG presentation regarding configuration management and Puppet.
Combining and Compressing Disqus’ and Google Analytics’ JavaScript
A step-by-step refactoring of Disqus’ and Google Analytics’ JavaScript.
Passing Blocks in Ruby Without &block
Using yield and Proc.new to avoid unnecessary Proc object creation in Ruby.

Weeknotes  

Weeknotes #103
Travelling to Brighton, migrating to Porkbun, and self-hosting GitHub Actions runners.
Weeknotes #102
Another holiday, a cousin calculator, the dangers of i-SPY, the inhumanity of siblings, and avoiding thinking about computers.
Weeknotes #101
A trip abroad, winding up my company, hearing aids and failing to discipline.
Weeknotes #100
Self-hosting Mastodon, MIME negotiation for Rails APIs take two and tooting with abandon.
Weeknotes #99
Pulling keycaps, a refactoring wishlist and the virtue of leaving jobs.
Weeknotes #98
Hosting YARD documentation on GitHub Pages, pattern matching and the IKEA nesting instinct.
Weeknotes #97
Not saving money on a Sonos Port, an update to re2 and telling a lie.
Weeknotes #96
Fewer pills, more ducks, being wrong about database transactions, scratching someone else’s car and carpet fitting.
Weeknotes #95
Weeding, filing, finishing video games, a spa town called home, parenting hell and a butt full of rain.
Weeknotes #94
Birthdays.
Weeknotes #93
Soldering remote control cars, emotional furniture, noodling with Tailscale, finishing The Last of Us Part II and the relationship between pasta and running.
Weeknotes #92
Testing negative, a leaky gutter, failing to block YouTube videos, compressing assets with Propshaft and recording video game sounds with OBS.
Weeknotes #91
Testing positive.
Weeknotes #90
MIME negotiation and the Accept header in Rails APIs, detecting client disconnects and the guilty pleasure of action films.
Weeknotes #89
Improved lighting, de-duplicating photos in Shortcuts, sourdough variations, rusty Clojure and too many YouTube videos.
Weeknotes #88
A seemingly impossible puzzle, avoiding lost updates, fridge drains and draughts.
Weeknotes #87
Types of ambulance, expecting the worst, someone else doing a better job, reverse engineering a nursery app and immense satisfaction.
Weeknotes #86
Archiving recipes, making family tech support less frustrating, the kindness of neighbours and migrating away from Sprockets and Webpacker.
Weeknotes #85
A stack of books, YouTube weaning, Treat Days and exactly one weather app.
Weeknotes #84
Correcting mistakes, end-of-year podcast episodes, the best loaves yet, house pride and why you should have some Steri-Strips in your first aid kit.
2021 Yearnotes
Another year of notes.
Weeknotes 109
Switching to Apple Silicon, focus, securing wall plugs and needing a cuddle.
Weeknotes 108
Nuzzling, replacing Enzyme, Tailwind CSS and our current TV rotation.
Weeknotes 105–107
A future gourmand, skipping a generation, HTTP headers and a backlog of Starmix.
Weeknotes 95–104
Numbering, a false start to a holiday, learning CSS, moving S3 static websites and an end to DIY.
Weeknotes 83–94
The past twelve weeks in summary.
Weeknotes 80–82
Legally baht ’at, checklists, vaccinations and the Will of the Wisps.
Weeknotes 79
Watermarking PDFs, alarming conditionals and other Computation Clubs.
Weeknotes 78
Conveyancing, ice packs on my laptop and a norny.
Weeknotes 77
Duggee o’clock, wall repair, ten hours of Worship the Sun, terrific tedium and a hot tub made of tweed.
Weeknotes 76
Rushing, playing Worship the Sun and a very first haircut.
Weeknotes 75
Wasps, requiring Ruby 3.0, buses of all sizes, the finished Tree Delta-based importer and a surprising lullaby.
Weeknotes 74
The fate of the AirPod, Calky, an ancient robot in the consultation room, a SOAP integration and ASCII trees.
Weeknotes 73
Rabbits, livecheck, how to stop clobbering files, relative font sizing, seemingly innocuous bugs and a single AirPod.
Weeknotes 72
Very hot dough, all the toy cars, re2 1.3.0 and how do you solve a problem like WordPress?
Weeknotes 71
Getting busted by Nintendo, who is fantastic when gymnastics is what you need, a greenfield Rails application and being spooked by Facebook.
Weeknotes 70
Fixing Joy-Con drift, a surprise encounter with my favourite type of duck, parsing Data URLs and a wardrobe malfunction.
Weeknotes 69
A lot of hours writing YAML, pancake day, channelling Elon Musk and product names that maximise embarrassment in Homebase.
Weeknotes 68
Hoarding tools, the trap of doing jobs and a new buzzword.
Weeknotes 67
Bidding our flat farewell, attempting to apply for probate and a new reason to tease me.
Weeknotes 66
Project managing life decisions and what even is pudding?
Weeknotes 65
Separating out weeknotes, scaling a Rails application, plugging a memory leak and a little boat, no bigger than your hand.
Weeknotes 64
Playing old adventure games, extracting subdirectories from git repositories, programming robots, a photo book follow-up and more than five minutes ahead.
Weeknotes 63
Arctic scenes, pointless defiance, networking problems and photo books.
Weeknotes 62
A snowman, this time last year, reconsidering exercise, dental instruments, optionally rotating eyes and colour schemes.
Weeknotes 61
The annual cleansing ritual, first words, festive soldering, learning Go and a lot of Christmas specials.
Weeknotes 59 and 60
Decamping to the north, two significant DIY projects and things learnt while continuing the migration to Active Storage.
Weeknotes 58
Dealing with bad news, very specific tools for the job and migrating from Paperclip to Active Storage.
Weeknotes 56 and 57
Cooking as a balm in troubled times, boil in the bag routine change, mistaken Twitter identity, meditating with DUPLO, sending cookies with the Fetch API, increasing errors by nearly 500,000%, trying to collect truly anonymous usage data and not thinking about a child's jaws.
Weeknotes 55
Integrating Shopify BuyButton.js with Turbolinks, the M1 SoC, testing signed Stripe webhooks and cavorting.
Weeknotes 54
Handling numeric user input with React, cleaning up unused Homebrew dependencies, Command Line Tools woe, losing control of your eyes and comparing our son to icons in IKEA instruction manuals.
Weeknotes 53
An unwelcome return, low spirits and removing a special case.
Weeknotes 52
A year of weeknotes, inconsequential quests, kernel extensions, using Terraform to manage multiple AWS accounts at once, testing feature flags and the secret fantasy of a future self.
Weeknotes 51
Pizza crusts, London Computation Club wiki, what to do with an inherited codebase and collective disbelief.
Weeknotes 50
Baby-proofing, Richard Osman’s role in my life, carrying pliers, zeitgeist marketing, ergonomic experiments and escaping from Hades.
Weeknotes 49
Paracetamol suspensions, 90s music and final shaping.
Weeknotes 48
Mentor envy, calculating the surface area of pizza, separation, adding HTTP headers and how to use your entire body to express dissatisfaction.
Weeknotes 47
Settling in, potentially diseased garlic and being at a loss for notes.
Weeknotes 46
T'north, Netflix tips and tricks and coffee brewing theory.
Weeknotes 45
A birth story.
Weeknotes 44
A young child's unsteady walk, deep cleaning and a holiday.
Weeknotes 43
New experiences, starting over and Daddy Pig holding a mirror up to society.
Weeknotes 42
A void that cannot be filled with ergonomic equipment, tech brain and decapitating cardboard dogs.
Weeknotes 41
Almost all the colours of the rainbow, what we wear on our feet, reminiscing with Radiohead, René Redzepi and technical tests.
Weeknotes 40
Not owning a microwave, uncanny turns of phrase, Parts Unknown and the therapeutic power of Taylor Swift.
Weeknotes 39
Nurseries, unwinding with wooden blocks, things people say to you when you wear a baby carrier and a computation anniversary.
Weeknotes 38
Gold trees, some small sense of freedom, quartz glass platters and the villain in your history.
Weeknotes 37
How I discovered adventure games, saving your life, converting cups of sifted flour into moon masses and feeling out of sorts.
Weeknotes 36
Visiting other islands, comfort food TV, a market trader mystery, not understanding prescriptions and unexpected sobbing.
Weeknotes 35
Pixels per inch, kicking up the 4d3d3d3, the importance of ventilation and genuine Computer Science.
Weeknotes 34
Shia LaBeouf, bad bakes, vertical rhythm, finding a stranger in the Alps and the streetlight effect.
Weeknotes 33
Generating human-friendly codes, keeping my cool running a Raspberry Pi and threatening my marriage.
Weeknotes 32
Replacing a Pi-hole with Unbound and ISC DHCP, speeding up deployments and a reckless root vegetable investment.
Weeknotes 31
Unexpected socialising; your mission, should you choose to accept it; computer means and a lifelong commitment.
Weeknotes 30
A birthday, the island of Custard, more public keys and a new earworm.
Weeknotes 29
An infernal whining, an update on EOL Ruby versions, the pit of success, a GPG rabbithole and teaching babies about quantum mechanics.
Weeknotes 28
A new thought technology, supporting old Ruby versions, making the most of the long weekend and filling the hole left in my life by Keith Brymer Jones.
Weeknotes 27
Getting emotional about cups and saucers, a home haircut, the only two good types of advert, new kitchen scales and a debugging adventure.
Weeknotes 26
The importance of editing, unminifying JavaScript, inappropriate Zoom virtual backgrounds and a thirst for life.
Weeknotes 25
Bank holiday noodling, coffee paraphernalia, a use for Shortcuts and life advice from a Learn with Me Zebra walker.
Weeknotes 24
Repairs, a new Raspberry Pi, an unforgettable ant update, overcomplicated cooking and an unusual birthday.
Weeknotes 23
Reassuring TV shows, negotiating pavements, baby sign language, a home baking first and is Bear Grylls’ TV career over?
Weeknotes 22
Driveway picnics, “The Baby Club”, a new enemy at home and the etymology of DIY.
Weeknotes 21
COVID-19, asynchronous working, surprise Smash Mouth fandom, flower arranging and being judged by book titles.
Weeknotes 20
Working from home, low sodium bread, workplace superpowers and yet another secure shoelace knot.
Weeknotes 19
The Missing Hit, hot lemon and honey, Ugly Delicious and a reassuringly dumb baby monitor.
Weeknotes 18
The Tube, dad chat, “Shape Up”, improving sleep with first-order logic and what it means when the clown is down.
Weeknotes 17
A car park disaster, animated GIFs, not rewriting legacy systems and how the internet really works.
Weeknotes 16
Typing practice, an erosion of attention, puzzle solving and wishing we’d done everything differently.
Weeknotes 15
Looking for work, laughter, stinging nostrils and writing weeknotes for the future self.
Weeknotes 14
The anaesthetic properties of cloves, saline rinses, split keyboards and yelling at clouds.
Weeknotes 13
Posture, mouth guards, Guy Fieri’s “Trash Can Nachos” and hearing things in the noise.
Weeknotes 12
Yearning for space, failing to make a video, ruining Christmas presents, smart meters and musculoskeletal woes.
Weeknotes 11
Redesigning the site, swimming lessons, first cousins once removed and screwdrivering.
Weeknotes 10
Revisiting 2018’s yearnotes, sharing podcasts in the park, the rhythm of baby talk and why you wouldn’t be able to cut much with Apple’s scissors emoji.
Weeknotes 9
Learning to do nothing, a deep, mirk widd and exactly which grandparent you can shove off a bus.
Weeknotes 8
Being extraordinarily lazy, cobbling together a homemade banneton and this year’s obligatory bit of family busywork.
Weeknotes 7
Great-grand relatives, the joy of tying knots and Turkish soap operas.
Weeknotes 6
Christmas films, participating in democracy and things a true Englishman will never countenance.
Weeknotes 5
The unexpected joy of baby cinema, doing everything wrong and our daily multiplayer crossword routine.
Weeknotes 4
Struggling with structured data, Christmas puddings, the joy of repairing things and everything being a trade-off.
Weeknotes 3
Writing, solving logic puzzles and the Bake Off we deserve.
Weeknotes 2
Fixing dates on old videos in Photos, using a Raspberry Pi for Time Machine and the right tool for the job.
Weeknotes 1
Dadding, baking, TV and being a paranormal insurance investigator.
2018 Yearnotes
Reflecting on the past year, both personally and professionally.