How I backup my phone

23 November 2022 by Lincoln Ramsay

I use a combination of TitaniumBackup and ssh/rsync to backup my phone.

I have TB backing up new user apps and new versions every night (with a filter so it only gets user apps, not system apps). It backs up changed data once a week (again only for user apps). Finally, it backs up the call logs and SMS/MMS once a week.

I don’t use TB’s remote backup support. Instead, I have a script that uses ssh (dropbear) and rsync to do an (erasing) mirror of the whole /sdcard directory, with a non-erasing copy of the TB directory. I use crond to actually run the script overnight.

The end result is that my server has a current mirror of /sdcard, plus the complete history of my TB backups, while the phone only keeps recent TB backups.

The script is hand-written by me. I originally used random dropbear and rsync binaries I found online, but recently compiled new ones from source in order to get up-to-date versions. These instructions proved useful.

My server sends me an email to let me know if the backup didn’t happen for some reason. There’s a log file I can check on the phone to see why it failed. Sometimes my phone drops off wifi overnight.

I have some scripts that help me manage the giant TB directory on the server.

I have used TitaniumBackup for a very long time. I paid for the Pro version after trying to move a backup from one device to another because silent install (crucial for batch operations) only works on Pro.

The thing is, Android has changed a lot from that first tablet and phone that ran 2.3, and TitaniumBackup hasn’t quite been able to change with it. Also, there’s some things that TB is just a bit picky about. Here’s a collections of tips I’ve developed over time:


  • Backup your call logs and SMS/MMS as XML. Restoring a snapshot to a new phone is almost guaranteed to fail but the XML backup seems to work reliably (I have 10 years of messages that have moved across 4 phones using TB).
  • To restore SMS/MMS, you need to manually set TB as the default app for messages or it’ll just freeze (not sure which version of Android this broke with).
  • You can’t reliably backup and restore system data so don’t bother to try (apart from call logs and SMS/MMS). I’m sure this worked a long time ago but it’s been unreliable since at least Android 6. System settings won’t really translate from one phone to another anyway, and useful things like wallpaper and widgets never worked properly anyway.
  • Downgrading apps stopped working (Android … 8?), but you can remove the current version and install the old version as a workaround. Home screen icons will go away when you do this 🙁
  • Many apps no longer even install via TB. My solution to this has been to download the apk manually from the internet (if it’s an old or non-store app), or to install the app from the play store and just restore the data using TB. Turning off “Verify apps installed via USB” in the phone’s Developer Settings menu helps this, though I have still had problems with some apps (seemingly failing to restore everything properly, leading to crashes when starting the app).

The smart watch killer app

23 November 2022 by Lincoln Ramsay

I have come to realise that being able to create my own watch face is the killer app for a smart watch. I’m kinda sad it took me so long to get around to it.

  • Custom themed UI with fancy animations? Sure! I’ll even throw in a bonus screen that puts the animations in the foreground!
  • Fully custom display of complication data? Sure!
  • Filled all 3 fitness bars? Here’s a little animation for motivation!
  • Passive display of notifications and currently playing music? Sure!
  • Album art in the background? Sure! I’ll even throw in a bonus screen that puts the art in the foreground!
  • MediaSession won’t send over the album name? Just encode it into the album art (I also wrote the media player on my phone, so I can do this) and I’ll pull it out again to display it!
  • The watch goes to ‘ambient’ mode a little too quickly? I can fix that!

Even though my watch is ancient and slow, none of the above have caused it performance or battery issues. Since I previously had to use separate, non-passive screens to get to fitness data or music controls, it’s arguably improved the performance of the watch.

It’s also gone from a device I don’t hate, but don’t really use much except to look at the time, to something that excites me.

I’d love to share this with the world, but … there’s some legal things I should check on first. Stay tuned…

Yay for boring macOS updates

23 November 2022 by Lincoln Ramsay

I’ve been a Mac user since the classic days. But I’ve also used BSD/*nix so I jumped over from the classic Mac OS to Mac OS X with the public beta and never looked back. Those early days were rough though. The system was improving fast, but that meant major changes all the time, which broke things. Then there were the transitions. Apple is on its third processor family, but there have been at least 5 architectures (once you factor in 32/64-bit variations). All this has meant that doing major OS updates has always come with risk.

I don’t have detailed notes, but I am fairly sure that almost every upgrade has broken (or removed support for) something I was depending on. It has been common for me to delay installing new releases, for years in some cases. It was especially bad when I upgraded from an older Intel machine to an M1 machine.

I don’t know what possessed me to install Ventura only days after it came out. Faith in Time Machine is definitely part of it I guess… The thing is it just … worked? Well, technically it failed, but then it worked. There is the obvious System Settings rewrite (that to be fair, isn’t any worse than the initial Mac OS -> Mac OS X preferences UI change) but otherwise it’s just … the same? I read a review that kinda complained at how “boring” macOS updates were these days, but boring is fine, especially if it means everything keeps working. more…

Writing a Wear OS watch face

24 August 2022 by Lincoln Ramsay

I got a Wear OS watch a while back. I had initially thought I’d do some development for it, but it just kinda didn’t happen.

Recently, I played The Division and got the urge to make a watch face again. Samsung made a “no code” app for this, but it requires “Wear OS 2”, which really means Android 9. My watch has Wear OS 2 but only Android 8 so I gotta do this the old fashioned way. more…

MacBook Pro Review

25 March 2022 by Lincoln Ramsay

This is my review of a MacBook Pro 14″ (2022). I’m coming from a MacBook Pro 13″ (2011) so that’s my reference for how a machine should be. more…

The Big Upgrade

28 February 2022 by Lincoln Ramsay

I finally got a new laptop. It’s a MacBook Pro 14″.

It’s been as hassle to get it going, but I had several things going against me…

  1. My old machine never upgraded to Catalina, so I never had to worry about 32-bit binaries. It turns out I still had quite a few of them!
  2. Just like the last time Apple changed processors, Rosetta is amazing, but it’s not a complete solution.

For some time now, I’ve been dragging my OS from machine to machine, so much that I wouldn’t be surprised to find a powerpc binary somewhere on here still. I was a bit concerned that I wouldn’t be able to easily move onto the new machine but thankfully there was a “restore from x86 Time Machine” process.

Actually, it turns out dragging my whole backup was maybe not a great idea. The sheer amount of cruft I have accumulated over many decades is astounding. So many barely-remembered binaries (no longer working), strange folders in Library, etc. I found a non-functioning install of homebrew in /usr/local which prevented me from installing a current version in /opt/homebrew.

This isn’t a review of the machine itself. I might do that later. For now, this is just some notes I’ve been making as I setup the machine. more…

RIP MacBook Pro

15 January 2022 by Lincoln Ramsay

My venerable MacBook Pro, a 13″ early 2011 model has finally died.

For years now I’ve been considering what to do when this happens. Every time I had to spend money to keep it going I debated the likelihood that it’d last long enough to make the upgrade worthwhile. More recently, I’ve been debating throwing another OS on it, since Apple stopped supporting it some time ago and its software is both old and starting to become unsupported by apps. more…

Jira: View recent comments while sorting by oldest first

01 April 2021 by Lincoln Ramsay

Jira added comment sorting by newest first, in addition to the traditional oldest first. They even forced this on for everyone by default (ugh). Of course, I hate it because it puts things in the wrong order. But the worst part of the update is that they broke the existing behaviour of sorting by oldest first.

Before, it would show you the most recent comments, with a “View older comments” button. Now, it shows you the oldest comments, with a “View newer comments” button. WTF?! Why would anyone want to see only the oldest comments on an issue?!

Since I can’t stand this broken logic, I have created a userscript to fix it. All this script does is locate the button on the page and click it. Once again, scrolling to the bottom of the page will show the most recent comments (and new comment box)!


Moving web hosts

16 February 2021 by Lincoln Ramsay

I have written about how my site was hosted at nosupportlinuxhosting a few times. They were recently hacked, and since it was their admin server, rather than just their hosting servers that were broken into, they were apparently unable to continue and have shut down. RIP nosupportlinuxhosting.

Of course… that meant I had to move my site to a new host. more…

← Older posts