41554 blogs · [ { "id": "01a0821a-5563-706c-aaa1-5b194531d602", "title": "Your New Job is Integrating Code", "url": "https://ahal.ca/blog/2026/integrate/", "published_at": "2026-05-26T13:50:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194562390e", "title": "Using Jujutsu With Mozilla Unified", "url": "https://ahal.ca/blog/2025/jujutsu-with-mozilla-unified/", "published_at": "2025-02-12T20:19:55+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1945cca57f", "title": "Jujutsu: A Haven for Mercurial Users at Mozilla", "url": "https://ahal.ca/blog/2024/jujutsu-mercurial-haven/", "published_at": "2024-11-08T12:19:33+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b19463e9574", "title": "How to Work on Taskcluster Github", "url": "https://ahal.ca/blog/2022/taskcluster-github-dev/", "published_at": "2022-10-31T20:45:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1946706a11", "title": "Taskgraph Diff", "url": "https://ahal.ca/casts/2021/taskgraph-diff/", "published_at": "2021-10-08T20:57:22+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b19476c553f", "title": "Phabricator Etiquette Part 2: The Author", "url": "https://ahal.ca/blog/2021/phabricator-etiquette-part-2-the-author/", "published_at": "2021-04-27T13:33:31+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194778bdeb", "title": "Phabricator Etiquette Part 1: The Reviewer", "url": "https://ahal.ca/blog/2021/phabricator-etiquette-part-1-the-reviewer/", "published_at": "2021-04-13T19:42:41+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1947c03bf0", "title": "A Better Replacement for ls", "url": "https://ahal.ca/blog/2021/ls-replacement/", "published_at": "2021-04-06T15:05:21+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1947ed3d4c", "title": "Advanced Mach Try", "url": "https://ahal.ca/blog/2021/advanced-mach-try/", "published_at": "2021-03-30T13:30:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194873e5b2", "title": "Understanding Mach Try", "url": "https://ahal.ca/blog/2021/understanding-mach-try/", "published_at": "2021-03-23T14:51:01+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1948d35760", "title": "Managing Multiple Mozconfigs", "url": "https://ahal.ca/blog/2021/managing-multiple-mozconfigs/", "published_at": "2021-03-16T13:48:48+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194992de3b", "title": "Hide Your Lint Errors", "url": "https://ahal.ca/blog/2021/hide-your-lint-errors/", "published_at": "2021-03-09T14:15:07+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194a2dc0a0", "title": "DevOps at Mozilla", "url": "https://ahal.ca/blog/2021/mozilla-devops/", "published_at": "2021-03-02T16:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194a388147", "title": "A Better Terminal for Mozilla Build", "url": "https://ahal.ca/blog/2021/mozilla-build-windows-terminal/", "published_at": "2021-03-02T14:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194a9e5f42", "title": "Testing Firefox More Efficiently With Machine Learning", "url": "https://ahal.ca/blog/2020/testing-firefox-more-efficiently-with-machine-learning/", "published_at": "2020-07-10T16:08:34+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194abb61ea", "title": "The Cost of Fragmented Communication", "url": "https://ahal.ca/blog/2019/fragmented-communication/", "published_at": "2019-05-21T19:04:33+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194b245ee4", "title": "Python 3 at Mozilla", "url": "https://ahal.ca/blog/2019/python-3-at-mozilla/", "published_at": "2019-04-30T19:25:50+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194b65c6c3", "title": "Task Configuration at Scale", "url": "https://ahal.ca/casts/2019/task-configuration-at-scale/", "published_at": "2019-03-12T21:10:32+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194bfb920c", "title": "Taskgraph Like a Pro", "url": "https://ahal.ca/casts/2018/taskgraph-like-a-pro/", "published_at": "2018-12-14T17:21:21+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c252a190a8", "title": "A New Look and Feel (and everything else)", "url": "https://ahal.ca/blog/2018/website-refresh/", "published_at": "2018-05-14T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194c1f5e3c", "title": "Try Fuzzy: A Try Syntax Alternative", "url": "https://ahal.ca/blog/2017/mach-try-fuzzy/", "published_at": "2017-08-02T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194c84f6c2", "title": "Absorbing Changes into a Commit Series with Mercurial", "url": "https://ahal.ca/blog/2017/mercurial-absorb/", "published_at": "2017-02-28T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194c939b29", "title": "A Course of Action for Replacing Try Syntax", "url": "https://ahal.ca/blog/2017/fuzzy-try-chooser/", "published_at": "2017-02-23T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194d164192", "title": "Using One Click Loaner to Debug Failures", "url": "https://ahal.ca/blog/2016/taskcluster-interactive-loaner/", "published_at": "2016-08-04T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194d701cd9", "title": "The Zen of Mach", "url": "https://ahal.ca/blog/2016/zen-of-mach/", "published_at": "2016-02-12T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194e1cf4ed", "title": "Looking beyond Try Syntax", "url": "https://ahal.ca/blog/2015/try-syntax/", "published_at": "2015-08-28T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194e5b426c", "title": "Making mercurial bookmarks more git-like", "url": "https://ahal.ca/blog/2015/making-mercurial-bookmarks-more-git-like/", "published_at": "2015-03-30T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194eb45f88", "title": "The New Mercurial Workflow - Part 2", "url": "https://ahal.ca/blog/2015/new-mercurial-workflow-part-2/", "published_at": "2015-01-16T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194eceac7a", "title": "How to Consume Structured Test Results", "url": "https://ahal.ca/blog/2014/consume-structured-test-results/", "published_at": "2014-12-18T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b194fa185ea", "title": "The New Mercurial Workflow", "url": "https://ahal.ca/blog/2014/new-mercurial-workflow/", "published_at": "2014-11-09T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195081eaab", "title": "How many tests are disabled?", "url": "https://ahal.ca/blog/2014/how-many-tests-are-disabled/", "published_at": "2014-10-01T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1951596880", "title": "When would you use a Python mixin?", "url": "https://ahal.ca/blog/2014/when-would-you-use-python-mixin/", "published_at": "2014-05-24T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1951914799", "title": "Part 2: How to deal with IFFY requirements", "url": "https://ahal.ca/blog/2014/part-2-how-deal-iffy-requirements/", "published_at": "2014-04-11T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195208d274", "title": "Part 1: Sharing code is not always a good thing", "url": "https://ahal.ca/blog/2014/part-1-sharing-code-not-always-good-thing/", "published_at": "2014-03-21T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1952b20fd5", "title": "Add more mach to your B2G", "url": "https://ahal.ca/blog/2014/b2g-commands/", "published_at": "2014-03-06T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195342383c", "title": "A Workflow for using Mach with multiple Object Directories", "url": "https://ahal.ca/blog/2014/mach-workflow/", "published_at": "2014-03-03T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1954422ced", "title": "We Are All Enablers", "url": "https://ahal.ca/blog/2013/we-are-all-enablers/", "published_at": "2013-10-10T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1954e3f9f9", "title": "Running B2G unittests with Mach", "url": "https://ahal.ca/blog/2013/running-b2g-unittests-mach/", "published_at": "2013-09-16T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195527c0a2", "title": "How to Push a Custom Test Command Line to Try", "url": "https://ahal.ca/blog/2013/push-custom-test-command-line-try/", "published_at": "2013-07-24T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1955ef10bc", "title": "A Mercurial extension to version multiple patch queues", "url": "https://ahal.ca/blog/2013/mercurial-extension-qqver/", "published_at": "2013-06-13T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c25d236d27", "title": "Python Logging - Format a message without printing it", "url": "https://ahal.ca/blog/2013/python-logging-format-message/", "published_at": "2013-04-25T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1956bea7db", "title": "Crash Stacks - Memoirs of a B2G Unittest", "url": "https://ahal.ca/blog/2013/b2g-unittest-crashstacks/", "published_at": "2013-03-28T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1956e0e8ce", "title": "An Open Invitation to Enable your Favourite tests on B2G", "url": "https://ahal.ca/blog/2013/enable-b2g-tests/", "published_at": "2013-03-08T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1957b44f65", "title": "A Tired Developer's non-Illustrated Primer to B2G Testing", "url": "https://ahal.ca/blog/2012/guide-to-b2g-testing/", "published_at": "2012-12-21T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1957f0cb5e", "title": "Like a Bump on a Tinderbox Push Log", "url": "https://ahal.ca/blog/2012/b2g-emulator-tests/", "published_at": "2012-11-08T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1958ce0afe", "title": "State of Reftests on B2G", "url": "https://ahal.ca/blog/2012/state-reftest-b2g/", "published_at": "2012-09-12T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c25fa8d3a7", "title": "Reddit History", "url": "https://ahal.ca/blog/2012/reddit-history/", "published_at": "2012-03-30T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c260896121", "title": "Top Ten Albums of 2011", "url": "https://ahal.ca/blog/2011/top-ten-albums-2011/", "published_at": "2011-12-14T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1958f119f7", "title": "An Easier way to Manage Mozconfigs", "url": "https://ahal.ca/blog/2011/mozconfigwrapper-introduction/", "published_at": "2011-11-15T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c2613f78ce", "title": "Cycling in the City", "url": "https://ahal.ca/blog/2011/cycling-city/", "published_at": "2011-11-07T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b1959807f18", "title": "Peptest: A new harness for testing responsiveness", "url": "https://ahal.ca/blog/2011/peptest-introduction/", "published_at": "2011-11-05T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195988976c", "title": "Isolating Mozmill's Driver", "url": "https://ahal.ca/blog/2011/isolating-mozmill-driver/", "published_at": "2011-10-20T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c2635fc8df", "title": "Android ExpandablePanel", "url": "https://ahal.ca/blog/2011/android-expandable-panel/", "published_at": "2011-06-24T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195a740fc0", "title": "Why I'm Returning to Mozilla for a Third Internship", "url": "https://ahal.ca/blog/2011/why-mozilla-is-awesome/", "published_at": "2011-05-31T00:00:00+00:00" }, { "id": "01a0821a-5563-706c-aaa1-5b195adb97e4", "title": "How to bulk install Firefox Addons", "url": "https://ahal.ca/blog/2011/bulk-installing-fx-addons/", "published_at": "2011-04-09T00:00:00+00:00" }, { "id": "01a08721-53c4-73b5-8fa8-51c264aaabb9", "title": "I tried to be different and all I got was this crappy website!", "url": "https://ahal.ca/blog/2011/i-tried-to-be-different/", "published_at": "2011-04-04T00:00:00+00:00" } ] posts Claim your blog
Back to Mozilla on Hunting the Shmoo
Blog · corpus.blog/blogs/ahal.ca/posts

Mozilla on Hunting the Shmoo

ahal.ca

2026

2025

2024

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011