#software
2026
- Android's 24 hour sideloading wall
I was showing a friend the Pokémon gen1recomp project on my phone the other day, and he wanted it on his. Easy enough. Hand over the APK and the files it needs, walk him through the setup, ten minutes while we’re sat in the same room.
- Using split view in Chrome
Chrome’s split view tabs is one of those features that silently arrived and slipped into my workflow. I’ve found myself using it more and more over the past couple of weeks since it rolled out at the end of 2025. It’s as intuitive as tab grouping (hold shift when selecting multiple tabs), and genuinely useful. The kind of feature that slots in and makes me wonder how I managed without it.
2025
- Replacing the macOS audio switcher with SwiftBar
The built-in audio output menu in macOS has always felt a bit limited. The icons aren’t very helpful, the device names can’t be customised, and if you’ve got a few different outputs, it becomes tricky to quickly tell what’s what.
2018
- Some Notes About Android Virtual Devices
Running AVD emulator from the Windows command line/Powershell/mingw32 This assumes you’ve got Android Studio installed. First you need to have the tools path in your $PATH variable, to do this edit Path in Windows’ Environment variables to include for example: C:\Users\Max\AppData\Local\Android\Sdk\tools Then you can use emulator.exe from anywhere. The Android Studio docs fail to mention this. $ emulator -no-boot-anim -accel auto -writable-system -no-snapshot -gpu host -avd K10_API_22 Installing Google Play Services I’ve been messing around with older device profiles, and trying to run things in Chrome on Android 5.0 (API level 21). You’ll need to sideload the Google Play services system APKs (from a gapps package for your target system, e.g. for Android 5.0, but you might find that the /system partition is full. No problem, you can sideload to /sdcard and symlink: $ adb remount # Fails... $ adb push .\GmsCore.apk /system/priv-app $ adb: error: failed to copy '.\GmsCore.apk' to '/system/priv-app/GmsCore.apk': No space left on device # Works... $ adb push .\GmsCore.apk /sdcard/system/priv-app $ adb push .\GoogleLoginService.apk /sdcard/system/priv-app $ adb push .\GoogleServicesFramework.apk /sdcard/system/priv-app $ adb push .\Phonesky.apk /sdcard/system/priv-app # Symlink them $ adb shell ln -s /sdcard/system/priv-app/GmsCore.apk /system/priv-app/GmsCore.apk $ adb shell ln -s /sdcard/system/priv-app/GoogleLoginService.apk /system/priv-app/GoogleLoginService.apk $ adb shell ln -s /sdcard/system/priv-app/GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework.apk $ adb shell ln -s /sdcard/system/priv-app/Phonesky.apk /system/priv-app/Phonesky.apk $ adb shell stop $ adb shell start Messing around with /etc/hosts It’s trivial to edit the /etc/hosts on your AVD, but it only works if you have blank new line at the end of the hosts file. $ adb pull /etc/hosts hosts $ nano hosts # make your changes to the hosts file locally... $ adb push hosts /etc/hosts
2017
- VPN Connection Indication on Windows
As of tomorrow I’m going to be switching to working remotely. Same job, just from the comfort of my home office (and without 2-3 hours of commute daily!). With this change I figure I’ll have about 8-10 hours of extra time per week to work on things.
2015
- In which I find a better Imgur screenshot uploading application
… Well not much of a battle really, rather just some comments on my needs of an Imgur uploader, what I’ve been using historically, and what I’m now going to be using.
- Launching Sketch Toolbox from inside Sketch
I’ve been making use of Sketch a lot lately. One of the coolest features of Sketch is it’s plugin support. I’m using a tool called Sketch Toolbox to manage plugins in Sketch – this functions a lot like Package Control for Sublime Text, but it’s a stand-alone application.
- Maintaining updates for a bunch of WordPress sites with Google Spreadsheets
Here’s a useful trick I’ve come up with, to maintain a list of WordPress installations and easily see if they’re up to date.
- Vivaldi: Another contender to the array of Webkit-derived browsers
Earlier this week a new browser called “Vivaldi” sprung up across many of my early-morning technology news feeds. I managed to put off trying it out for a couple of days, due to my being too busy, and agreeing with many of the pessimistic comments that were strewn across the release announcement posts.
- Creating 'Material Design' shadows in Photoshop
Somebody over on Designer News asked how to re-create the various z-height shadow effects from Google’s Material Design in Photoshop.
2014
- Using the Zed editor with Arch Linux ARM on your Chromebook
I’ve been using Arch Linux on my HP Chromebook 11 for a little while now. One of the problems I’ve had with the setup has been that Sublime Text is not available for the ARM architecture.
- Compressing PDF files from your Mac or Linux terminal with Ghostscript
I arrived at this solution recently when looking to compress a massive print-quality PDF for the web. If you search for “compressing pdf files on mac” you’ll get lots of bad results. There are lots of paid applications out there that claim to be able to do this, but they’re (obviously) not free.
2013
- On second thought...
… Google Hangouts for Chrome needs some work.
- Converting SVG to PNG online and in your terminal
This post is mostly for my own benefit on the rare occasion that I have to convert SVG files to PNG. I always spend a large amount of time looking for an online SVG to PNG converter or a terminal one-liner to do this.
- Chrome 'Add to Trello' extension
I attended the third Refresh Oxford hack day yesterday, hosted at Incuna’s offices in Summertown.
- Google's relaunched Hangouts -- Wow.
The long-speculated consolidation of Google Talk, Google+ Hangouts, and Google Video Chat has finally occured, and it’s pretty spectacular. My digital life is so dependent on Google services that it’s nice to find some cross-platform consolidation.
- These tabs they are a changin'
The latest update to Chrome (25.0.1364.99) seems to have brought some slight tweaks the interface. The tab bar has seen some tweaks to the spacing of the close button, as well as the hover/active/inactive states of tabs, and the infamous blank ‘new tab’ button has been stretched a little. The inactive state of tabs and the ‘new tab’ button seems to blend in to the background a bit more too.
- Testing responsive layouts with the RWD bookmarklet
Lately I’ve been doing some work with responsive CSS and media queries. This bookmarklet has been very useful. It allows you to switch between four different browser widths (for iPad and iPhone in portrait/landscape orientations).
2012
- Saving your CSS changes in the Google Chrome inspector
In the process of rapid prototyping and trying out new CSS styles I often find myself making changes to styles within the inspector in Google Chrome. This works quite well, but I’ve always had a process like the following:
- Dynamic location based desktop on your Mac with Satellite Eyes
I came across this awesome application today, it sets your wallpaper to a satellite view of your current location. The application features a number of rendering mode, and full support for multiple monitors.
- Updates to my 'install all firefox' bash script for Mac OS X
I wrote briefly about my install-all-firefox shell script back in December last year. Since then the script has received a complete rewrite, and some new features.
- On migrating from Tumblr to Jekyll Bootstrap
I’ve been toying with the idea of moving away from Tumblr for a long time now, having had my own share of problems with Tumblr downtime.
- Synchronising your Sublime Text 2 preferences with Dropbox
I use Sublime Text 2 both at work and at home, and it’s hard to manually keep my settings/packages in sync.
2011
- prev/next to left/right arrow key bind userscript
This is a userscript for Google Chrome (it might work with Firefox/Greasemonkey but I haven’t tested). It binds the left/right keys to click on prev/next links.
- Bash script to install all major versions of Firefox on OS X
I wrote a nice bash script that automatically downloads and installs the major versions of Firefox, sets up profiles for each and modifies the .app launchers so that they start with their designated profiles.
- Grooveshark view-modes userscript for Fluidapp/Chrome/GreaseMonkey
I’ve created a userscript to give the Grooveshark website some view modes. This is specifically for use with Fluid, but I imagine it would work okay with Chrome/etc too. More information about the userscript/setup after the break!
2010
- Using Greasemonkey scripts with Google Chrome
This isn’t new news, but it’s something I’ve found quite useful. You can use userscripts created for Firefox/Greasemonkey in Google Chrome. Many of the scripts that you can find over on userscripts.org can be used effortlessly by Google Chrome, and once installed can be disabled/uninstalled from the Extensions tab.
2006
- Human foobar buttons
These buttons were requested by ‘ynnoj’ to match the Windows port of the great ‘human’ theme for linux. human-foo.zip
- heart rating icons for foobar
Somebody requested these over at hydrogen audio. rating hearts
- My foobar setup
After the great response to screenshots of my foobar setup, I have decided to post how to make you foobar look just like, or similar to, my foobar setup. Keep reading to find out how.
- Grey Media Icons
I made these to be used with foobar2000, but I guess you could use them anywhere that you need some media-control icons. 24bit PNG, 16x16, goes well with most colours.
- New Columns_UI Config
I’ve been working on this for a while, on and off.. it’s not too complicated, and it comes with 5 colour schemes!
- New foobar buttons
created some new buttons for foobar2000, based on the playback buttons in windows media player 11.
- Foobar2000 Tutorial
Well, i’ve started putting together a tutorial for setting up foobar2000. I’ve seen plenty around, and there are plenty of cryptic foobar wiki’s, but none of them made it simple enough. so without the crap, here it is it’s still being written, but what’s down is good
- Pointless software
.. what the hell is the point in this songbird crap :| imagine if itunes and firefox made love, songbird is the demonspawn of that unfortunate circumstance. i’ll stick with foobar2000, thankyou very much. .. its only a preview release, but damn.. they need to work on the interface a bit, and perhaps “think different” even if that is hard enough to do, stealing the apple dream.