RSSAmplifier

Blog

Oxymoronical

Recent content on Oxymoronical

oxymoronical.comRSS feed ↗253 posts

Latest posts

Barn owl on approach

I attended a bird of prey photography workshop with my photography club over the weekend which was a fantastic experience. We got to photograph the birds both in static poses and flying, though the birds were a little uncooperative when it came to trying to get them to fly where we wanted! The falconer was great and more than willing to put the birds in the positions we requested so we could get…

Sunrise in Boston

I was on a work trip to Boston recently and one of the benefits of jetlag is that you wake up early enough to be able to get out and take photos on the sunrise. When I first got out I didn’t think I was going to get anything good because of the clouds but in the end the clouds were perfectly spaced to reflect the early morning sun and light up the harbour.

A dream of a robin

Normally what I look for in photos is sharp focus. I want to make out every detail. But as I was editing this photo of a robin perched in a magnolia bush I found the background turning all milky and making it all look dreamlike. So I leaned into it and in the end this might be one of the best photos I’ve ever taken.

Antiquey Chrysler Building

I took this from the Empire State Building on a recent trip to New York. Most of the photos I took were of a fairly stock skyline variety but as I was editing this one it started looking like a vintage photo so I played with that a bit and I am pretty happy with how it turned out.

Can't you do this faster with AI?

I’m hearing this question asked a lot lately. Both within Mozilla and from others in the industry. You come up with a plan for implementing some feature, put your best estimate on how long it will take to implement, and then you get push back from folks several levels removed from the project along the lines of “Wouldn’t this be faster if you used AI?” , or…

Chupmunk against leaf

While I’ve spent a quarter of my life in the US I still grew up in the UK and got used to the wildlife here. So sometimes when I’m back in the US I will find an animal that while quite common is quite new to me. Such was the case when I came to this park (actually in Toronto) and found a bunch of chipmunks running around the paths. I think some of the passers by thought me a little…

Perched long-tailed tit

One of my favourite things to photograph is birds. And one of my favourite birds is the long-tailed tit. They’re really cute but unfortunately quite skittish and so hard to capture. This year I treated myself to a big zoom lens and at the time I would have said it was for shooting deer or eagles, but one of the first things I did with it was sit out in my garden and waited for a long-tailed…

Dragonfly resting

Many animals seem to be creatures of habit. They’ll keep doing the same thing over and over unless you interrupt them. This is great for photography because if you’re careful you can predict what an animal will do. This was true for this dragonfly. Any time I tried to walk up to it it would fly off. But it kept landing in the same spot. So I just stood right there with my camera…

London skyline at night

I was staying near the O2 Arena in London for a conference and went out for a stroll one evening. The skyline was so pretty I had to spend some time trying to capture it. I love taking long exposure night photos but this was tricky because I didn’t have a tripod with me. Still I managed to get a 2 second exposure to come out, partly thanks to my camera’s image stabilisation.

What would you say you do here?

I’m currently joining a couple of new projects and the inevitable first step is introductions over Zoom and the usual questions: who are you, where are you based, and what is your role on this project. I’m a Principal Engineer here at Mozilla, which might make you think that my role is going to be a lot of development. But this isn’t the case and I thought others might be…

Making a case sensitive directory on Windows and macOS

Now that Firefox has switched to git as its canonical source code repository a number of us have been longing for all the nice features that Mercurial used to provide that are much more awkward with git. So many of us have been experimenting with Jujutsu which provides a lot of what is missing. It’s pretty good, I recommend giving it a go if you are also forced to use git! 
 But it has…

Some thoughts on coding with AI

As you probably know AI tools are here and expectations range from “This is going to destroy the environment and make everyone unemployed” to “This is going to usher in a golden age freeing humanity from drudgery”. The reality is of course somewhere between the two and I don’t think we’re really going to know exactly where for many years. 
 I believe…

A non-fitness expert review of the Pixel Watch 3

It’s been many years since I went to the gym regularly. I’m reasonably active, I enjoy long hikes and I try to ride my bike to the co-working space I use weekly. But weather and kids often get in the way of doing any of that and frankly the lack of exercise is starting to show. So it’s time to start hitting the gym again. And what better way to encourage me to do that than buying…

Controlling a dual boot desktop from Home Assistant

I do most of my work on a MacBook Pro but occasionally I do need a Windows or Linux environment to
test platform specific things and so under my desk is a reasonable powerful desktop which dual
boots between Windows and Linux. I have it all set up for remote connections and a while ago I
figured out a command to tell the Linux bootloader to boot to Windows on the next boot (but only…

Tests don't replace Code Review

I frequently see a bold claim come up in tech circles. That as a team you’re wasting time by doing code reviews. You should instead rely on automated tests to catch bugs. This surprises me because I can’t imagine anyone thinking that such a blanket statement is true. But then most of the time this is brought up in places like Twitter where nuance is impossible and engagement farming is…

Lifeguard station at sunset

Many years ago me and my family used to live in Ventura County in California. There are many things we miss about the place and this beach is one of them. Silver Strand in Oxnard has fine silky sand, and a wide beach that is never really crowded. We try to rent a beach house here whenever we’re in the area and this is a sunset I caught one evening. A print of this hangs on the wall above my…

A review of the Canon EOS R7

I’ve always enjoyed photography. I’ve had a Nikon D7000 for nearly 12 years and apparently I’ve taken some 80,000 shots with it. But over the past few years I’ve been taking less and less photos and finding I wasn’t enjoying it as much. I’d rarely take the camera out with me and even when I did I found I was throwing away most of the photos I took. I finally decided it was time to try something…

Using VS Code for merges in Mercurial

I’ve always struggled to find a graphical merge tool that I can actually understand and up until now I have just been using merge markers along with a handy Mercurial command to open all conflicted files in VS Code, my editor of preference. 
 Well it turns out that since version 1.69 VS Code now has built in support for acting as a merge tool and after trying it out I actually found it to be…

Recording UK Gas and Electricity usage in InfluxDB

I’m not going to do the online recipe thing. Or at least I’m going to give you the thing you probably want before the context. If you want a free tool for accessing your UK smart energy meter readings you should install and register the Bright mobile app . Once you’ve done so my Rust crate can access their API to let you pull data from the command line for various uses including submitting the…

Announcing LocalNS

I mess around with a bunch of different projects in my spare time but it’s been a long time since I’ve thought one was worth tidying up into an actual release. Maybe it will be useful to you? 
 The problem I faced was that I had a whole bunch of services that I installed on my network, some in docker, some as standalone servers, some behind a Traefik proxy. In the docker case I was using…

Creating HTML content with a fixed aspect ratio without the padding trick

It seems to be a common problem, you want to display some content on the web with a certain aspect ratio but you don’t know the size you will be displaying at. How do you do this? CSS doesn’t really have the tools to do the job well currently (there are proposals ). In my case I want to display a video and associated controls as large as possible inside a space that I don’t know the size of. The…

A simple command to open all files with merge conflicts

When I get merge conflicts in a rebase I found it irritating to open up the problem files in my editor, I couldn’t find anything past copying and pasting the file path or locating it in the source tree. So I wrote a simple hg command to open all the unresolved files into my editor. Maybe this is useful to you too? 
 [alias]
unresolved = !$HG resolve -l 'set:unresolved()' -T…

Please watch your character encodings

I started writing this as a newsgroup post for one of Mozilla’s mailing lists, but it turned out to be too long and since this part was mainly aimed at folks who either didn’t know about or wanted a quick refresher on character encodings I decided to blog it instead. Please let me know if there are errors in here, I am by no means an expert on this stuff either and I do get caught out sometimes!

Bridging an internal LAN to a server's Docker containers over a VPN

I recently decided that the basic web hosting I was using wasn’t quite a configurable or powerful as I would like so I have started paying for a VPS and am slowly moving all my sites over to it. One of the things I decided was that I wanted the majority of services it ran to be running under Docker. Docker has its pros and cons but the thing I like about it is that I can define what services run,…

Welcoming a new Firefox/Toolkit peer

Please join me in welcoming Bianca Danforth to the set of peers blessed with reviewing patches to Firefox and Toolkit. She’s been doing great work making testing experiment extensions easy and so it’s time for her to level-up.

Taming Phabricator

So Mozilla is going all-in on Phabricator and Differential as a code review tool. I have mixed feelings on this, not least because it’s support for patch series is more manual than I’d like. But since this is the choice Mozilla has made I might as well start to get used to it. One of the first things you see when you log into Phabricator is a default view full of information.

Searchfox in VS Code

I spend most of my time developing flipping back and forth between VS Code and Searchfox . VS Code is a great editor but it has nowhere near the speed needed to do searches over the entire tree, at least on my machine. Searchfox on the other hand is pretty fast. But there’s something missing. I usually want to search Searchfox for something I found in the code. Then I want to get the file I found…

Even more new peers

Please welcome the latest new peers to Firefox and Toolkit: 
 
 Johann Hofmann 
 Nihanth Subramanya 
 
 As you might gather I’ve been updating the peer list a lot lately trying to catch up with reality. If there is anyone I’m missing then please let me know!

How do you become a Firefox peer? The answer may surprise you!

So you want to know how someone becomes a peer? Surprisingly the answer is pretty unclear. There is no formal process for peer status, at least for Firefox and Toolkit. I haven’t spotted one for other modules either. What has generally happened in the past is that from time to time someone will come along and say, “Oh hey, shouldn’t X be a peer by now?” to which I will say “Uhhh maybe! Let me go…

New Firefox and Toolkit module peers

Please join me in welcoming another set of brave souls willing to help shepherd new code into Firefox and Toolkit: 
 
 Luke Chang 
 Ricky Chien 
 Luca Greco 
 Kate Hudson 
 Tomislav Jovanovic 
 Ray Lin 
 Fischer Liu 
 
 While going through this round of peer updates I’ve realised that it isn’t terribly clear how people become peers. I intend to rectify that…

New Firefox and Toolkit module peers in Taipei!

Please join me in welcoming three new peers to the Firefox and Toolkit modules. All of them are based in Taipei and I believe that they are our first such peers which is very exciting as it means we now have more global coverage. 
 
 Tim Guan-tin Chien 
 KM Lee Rex 
 Fred Lin 
 
 I’ve blogged before about the things I expect from the peers and while I try to keep the lists…

Thoughts on the module system

For a long long time Mozilla has governed its code (and a few other things) as a series of modules. Each module covers an area of code in the source and has an owner and a list of peers, folks that are knowledgeable about that module. The full list of modules is public. In the early days the module system was everything. Module owners had almost complete freedom to evolve their module as they saw…

More new Firefox/Toolkit peers

A few things are happening which means there are a bunch of new Firefox/Toolkit peers to announce. 
 First since I’m now owner of both Firefox and Toolkit I’ve decided it doesn’t make much sense to have separate lists of peers. Either I trust people to review or I don’t so I’m merging the lists of peers for these modules. Practically since Toolkit already included all of the Firefox peers this…

Welcome to a new Firefox/Toolkit peer, Shane Caraveo

It’s that time again when I get to announce a new Firefox/Toolkit peer. Shane has been involved with Mozilla for longer than I can remember and recently he has been doing fine work on webextensions including the new sidebar API. As usual we probably should have made Shane a peer sooner so this is a case of better late than never. 
 I took a moment to tell Shane what I expect of all my peers:

hgchanges is down, probably for good

My little tool to help folks track when changes are made to files or directories in Mozilla’s mercurial repositories has gone down again. This time an influx of some 8000 changesets from the servo project are causing the script that does the updating to fail so I’ve turned off updating. I no longer have any time to work on this tool so I’ve also taken it offline and don’t really have any intention…

Globes

I got bored over the weekend and decided to try my hand at fractal art again. I used to play around with this years ago but not so much recently. I was pretty disappointed to find that nothing has really changed when it comes to the tools available for creating fractals. Most of them haven’t been updated in years and there don’t seem to be much in the way of new kids on the block that I can see…

On Firefox module ownership

It has been over eleven years since I first wrote a patch for Firefox. It was reviewed by the then-Firefox module owner, Mike Connor. If you had told me then that at some point in the future I was going to be the module owner I probably would have laughed at you. I didn’t know at the time how much Mozilla would shape my life. Yet yesterday Dave Camp handed over the reigns to me and here we are.

A new owner for the add-ons manager

I’ve been acting as the owner for the add-ons manager for the past little while and while I have always cared a lot about the add-ons space it is time to formerly pass over the torch. So I was pleased that Rob Helmer was willing to take it over from me. 
 Rob has been doing some exceptional work on making system add-ons (used as part of the go faster project) more robust and easier for Mozilla…

New Firefox reviewers

I’m delighted to announce that I’ve just made Andrew Swan (aswan on IRC) a reviewer for Firefox code. That also reminds me that I failed to announce when I did the same for Rob Helmer (rhelmer). Please inundate them with patches. 
 There are a few key things I look for when promoting folks to reviewers, surprisingly none of them are an understanding of the full breadth of code in Firefox or…

Got bored, built a thermostat

Well sort of. The other week we had the fun of having most of our heating ducts torn out and replaced to get rid of some asbestos and add A/C. They also gave us a new thermostat for reasons that are beyond me, the old one has exactly the same functions but is slightly easier to use. These cheap thermostats are all the same, same functionality, almost identical controls and all terrible to use.…

Let's talk about social anxiety

It took me a long time to publish my last post . I spent months trying to start it until I finally felt brave enough. I must confess that for a few hours after it was published I felt my anxiety levels rising. No-one responded. Nothing on Twitter or Facebook. Was everyone horrified at what I’d said? What had I done? 
 I’m glad to say that those feelings soon subsided as friends and colleagues…

Me and my dumb brain

Today those polite folk from up north have been talking about mental health and how it affects them and those around them. Mental health is one of those issues that we too rarely talk about. I think it’s partly because you can’t see the problem and unless you have experienced it yourself it can be very difficult to understand. There has always been a stigma attached as if for some reason having…

Improving the performance of the add-ons manager with asynchronous file I/O

The add-ons manager has a dirty secret. It uses an awful lot of synchronous file I/O. This is the kind of I/O that blocks the main thread and can cause Firefox to be janky. I’m told that that is a technical term. Asynchronous file I/O is much nicer, it means you can let the rest of the app continue to function while you wait for the I/O operation to complete. I rewrote much of the current code…

Linting for Mozilla JavaScript code

One of the projects I’ve been really excited about recently is getting ESLint working for a lot of our JavaScript code. If you haven’t come across ESLint or linters in general before they are automated tools that scan your code and warn you about syntax errors. They can usually also be set up with a set of rules to enforce code styles and warn about potential bad practices. The devtools and Hello…

Running ESLint on commit

ESLint becomes the most useful when you get warnings before even trying to land or get your code reviewed. You can add support to your code editor but not all editors support this so I’ve written a mercurial extension which gives you warnings any time you commit code that fails lint checks. It uses the same rules we run elsewhere. It doesn’t abort the commit, that would be annoying if you’re…

Delivering Firefox features faster

Over time Mozilla has been trying to reduce the amount of time between developing a feature and getting it into a user’s hands. Some time ago we would do around one feature release of Firefox every year, more recently we’ve moved to doing one feature release every six weeks. But it still takes at least 12 weeks for a feature to get to users. In some cases we can speed that up by landing new things…

Making communicating with chrome from in-content pages easy

As Firefox increasingly switches to support running in multiple processes we’ve been finding common problems. Where we can we are designing nice APIs to make solving them easy. One problem is that we often want to run in-content pages like about:newtab and about:home in the child process without privileges making it safer and less likely to bring down Firefox in the event of a crash. These pages…

hgchanges is back up

The offending changeset that broke hgchanges yesterday turns out to be a merge from an ancient branch to current tip. That makes the diff insanely huge which is why things like hgweb were tripping over it. Kwierso point out that just ignoring those changesets would solve the problem. It’s not ideal but since in this case they aren’t useful changesets I’ve gone ahead and done that and so hgchanges…

hgchanges is down for now

My handy tool for tracking changes to directories in the mozilla mercurial repositories is going to be broken for a little while. Unfortunately a particular changeset seems to be breaking things in ways I don’t have the time to fix right now. Specifically trying to download the raw patch for the changeset is causing hgweb to timeout. Short of finding time to debug and fix the problem my only…

Welcome the new Toolkit peers

I have been a little lax in my duty of keeping the list of peers for Toolkit up to date and there have been a few notable exceptions. Thankfully we’re good about disregarding rules when it makes sense to and so many people who should be peers have already been doing reviews. Of course that’s no use to new contributors trying to figure out who should review what so I am grateful to someone who…