Feb 6
Re-mapping “Quit” to “About” in Safari on macOS
One of the most annoying things for me about the QWERTY keyboard is the location of the “Q” key next to the “W” key. If you’re not a Mac user and if you’re not someone who heavily uses keyboard shortcuts you probably have no idea what I’m talking about. However if you are a keyboard heavy Mac user like myself you’ve probably run into the situation where you meant to hit Command-W to close a window but you accidentally hit Command-Q to close the entire application.
This can range from annoying to near data loss situations depending on the application you’re in. For me in the case of Safari, I have a lot of tabs and windows. Hundreds of tabs and tens of windows at one stage. Hitting Command-Q on that doesn’t lose me data but it does unload it from memory. Then I need to relaunch Safari again and it has to reload all of those tabs. This can range from a mild annoyance if I’m not in the middle of something right up to being a massive pain because I’m not somewhere with good internet or potentially any internet like a plane.
Now I have a work around I use to prevent me from unintentially quitting Safari when all I wanted to do is close a window or even tab to another application. This workaround just saved me from accidentally quitting Safari and triggered me to write this blog post!
No commentsJan 30
Using MySQL as a time series database to track my podcasts
In my previous blog post I covered how I used InfluxDB and Grafana to do analytics on my podcast backlog reaching the depressing conclusion that I wasn’t in fact making progress on my backlog. Oh my. If you look carefully though you’ll also note that the time series used ranged from the 15th February 2016 to the 22nd September 2016. One might have also noticed that in the graph close ups there were these unusually straight lines which whilst not visible to you were actually gaps in the data where Grafana was connecting the dots. There were actually a couple of these points and they were periods where InfluxDB for what ever reason hadn’t started. The final reason it ends in September was that InfluxDB at the time was refusing to start and until I got around to writing the blog post had been dead. Instead in late November 2016 I decided to try something different: to use MySQL as a time series database instead!
No commentsJan 23
Apple’s Courage
Apple said it took “courage” to take away the 3.5mm headphone jack from the iPhone 7. And then none of this courage was on display with the MacBookPro that removes the USB ports, the Thunderbolt 2 ports, MagSafe port and SD card slot to replace them with four USB-C ports…and left the 3.5mm headphone jack there. What?
Instead of taking the chance with the iPhone 7 to converge on USB-C for the connectivity, Apple decided to stick with Lightening. I was also mildly annoyed that when they moved from the old 30 pin connector they went to Lightening but it was obvious there were some advantages over the USB options at the time. Now with USB-C many of those advantages have disappeared and having USB-C would make it a standard connector. They’re not going to do that because Apple makes money changing people for the “Made for iPhone” brand though I don’t see why they couldn’t continue to do so with USB-C but it’d obviously not be as well controlled.
One of the other issues that going to USB-C could have solved would have been one of the first USB-C accessories: the wired headphones for the iPhone 7. Tied with the USB-C only MacBookPro you’d have the first connector that works out of the box. This would be a synergy between the Mac and the iPhone that Apple is supposed to be the go to platform on.
Of course it’d take “courage” to shy away from the “Made for iPhone” profit. Maybe Apple has some more spare?
No commentsJan 16
Tracking my podcast backlog with influxdb and grafana
I have a lot of podcasts in my backlog. Over 2000 podcasts remain behind in my history and I’ve got more than enough audio to go on for years. However the problem I had was that I wasn’t sure if I was making any progress on my podcasts or if I was slowly trending backwards (which I had been for years). Before I started at LinkedIn, my commute to work was generally a 15 minute train ride from downtown San Jose straight up North First Street. With the walking time (~10 minutes to/from stations), that landed me with less than 50 minutes of audio time each day. The problem with that was of course the one podcast I was most behind on, Radio National’s Late Night Live, is 50 minutes long and at the time aired five nights a week (now it’s four nights a week, they dropped the Friday night “classic” show which were episodes from their archive). At the time I think I was delayed to around 2009, maybe even as far back to 2007. But I didn’t have the data to see that. Now with a couple of years of LinkedIn, it felt like I was making progress but show me the data!
No commentsJan 9
Using Cacti to analyse your inbox
For a few years now I’ve had a Cacti instance set up to monitor my inbox. It started ages ago when I realised I had a massive email backlog (over 9000 emails!) and I wanted to track my progress on getting back on track. To do this I turned to a Cacti install I had set up to monitor an Airport Extreme that was my network gateway.
Here’s what that looks like for my unread email for the last day. You can see that email slowly creeps up overnight and then around 8am I woke up and read the email. This gives you an interesting insight into when you get email and when it gets read. So let’s get this set up!
No commentsJan 2
Alexa versus Siri – you said what?
For a while now I’ve had an Amazon Echo which is powered by Amazon’s Alexa platform in my living room and for much longer Siri on my phone. Having the two is interesting to see how each of them behave in different situations, which bot understands what I’m saying versus the others. Now while Alexa doesn’t always understand generally it isn’t offensive (usually isn’t offensive anyway [NSFW]), Siri on the other hand will quite happily quip back at me something snarky.
No commentsOct 21
Rotating Apache log files on Mac OS
Recently I went through setting up a new Mac from scratch instead of porting it from another machine. As part of this process I set up Apache with a bunch of log files for various VHost’s I’m working on for a side project I’m playing with. This means plenty of logs files. In the past I’ve generally not worried about doing anything with the log files, I just let them grow and if they got too big, nuked them by hand. However this time round I figured I’d get them rotated properly so that I could have clean logs each day that I’m working.
Read more
Jun 18
Restoring lost Chrome Tabs
For some reason today my Mac decided it didn’t want to work any more and essentially froze up. It was getting slower over the morning and eventually ground to a halt. I think I might have been able to wait it out and kill some stuff but I ended up hard resetting it. When the machine came back most everything recovered…except for Google Chrome’s tabs.
Google Chrome had opened and left me with a blank window without the normal “It looks like Chrome crashed, do you want to restore the tabs?” button. I have the “Continue where you left off” setting so I’m not sure why that didn’t kick in either. Restoring the tabs restored tabs from one window out of the 10 or so windows I had but also interspersed some tabs I’d closed prior to the crash. A quick Google search for “restore closed tabs after quitting Chrome” gave me a lifehacker article which covered the process. It had some notes on prevention but it had a “Recovery Mode” section which mentioned editing the “Local State” file and changing the “exited_cleanly” entry to be “false”.
The article covers four files in the User Data Directory that are relevant to session and tab restore: Current Session, Current Tabs, Last Session and Last Tabs. The suggestion in “Recovery Mode” is to restore these files. Given I’d lost this data, I wasn’t sure what else had gone so I decided to stop Chrome, rename the “Default” user data directory and then restore the one from an hour ago back in place. Once the restore was done, I edited the “Local State” file as mentioned above and started Chrome. Chrome started and showed the “Chrome didn’t shut down correctly” bar and gave me the option to restore my tabs.
To put this in bullet form, the steps to fix this:
- Stop Chrome.
- Go to ~/Library/Application Support/Google/Chrome/ and rename “Default” to something else. (TIP: You can use SHIFT + APPLE + G in Finder you can paste the path to go straight to that folder).
- Connect to Time Machine.
- Restore the “Default” folder from the Time Machine backup into ~/Library/Application Support/Google/Chrome/ again.
- Start up Google Chrome and click on “Restore” in the bar where it says “Chrome didn’t shut down correctly”.
- All of your windows and tabs should be restored!
This process is very similar to the one for restoring lost Safari tabs. The important piece in both of these cases is to have regular routine backups. Time Machine on Mac OS X provides hourly backups automatically which is invaluable when these sorts of issues occur. Any routine backup solution will work properly (e.g. CrashPlan), you’ll need to adjust the steps to be appropriate for your platform.
Edit: It looks like the Local State file is gone and you may not need to set it anyway according to ssorgs’s comment on this post. If your tabs aren’t automatically restored when you restart, try using SHIFT + APPLE + T to reopen recently closed tabs and that should bring them back.
6 commentsApr 16
Migrating to pfSense as gateway router
For the longest time I’ve used an AirPort Extreme as my gateway router. When I moved to the US, I purchased an Airport Extreme 5th Generation and it worked well. It tied in with a Mac Mini Server I purchased at the time and the Mac OS X Server application integrated nicely with the device to handle port forwarding. I also set up Cacti in a Linux VM to monitor this device over SNMP and that worked reasonably well. Then Apple redesigned the AirPort Utility to become a much simpler interface. A lot of the settings and control that used to be there disappeared with the version 6 release. AirPort Utility 5.6 provided extra details like logs and a list of wireless clients with their relative connection strength. For a while I continued on using Airport Utility 5.6 with various levels of hacks to keep it working. Somewhere along the line I also ended up picking up a 6th Generation Airport Extreme to play with the 802.11ac support and found that it lacked many of the features like SNMP that the 5th generation supported. In a recent move I ended up coming across the 6th generation first, unpacked it and set it up as my main gateway but was disappointed by the lack of introspection into the device which put me on the path of looking at pfSense.
Read more
May 2
Staying at companies too long and rethinking manufacturing
Another post that floated through my Facebook feed was a Forbes article on employees who stay in companies longer than two years get paid 50% less. These are always interesting because I’ve seen everything posted in this article including the too many jobs too soon. If you are in an industry in demand then that gives you flexibility though not everyone has that flexibility. Silicon Valley has a lot of competition for everything so it‘s likely a bad example more broadly. For example I wouldn’t expect a teacher to be able to make the same sort of beneficial changes. Which makes me wonder for the future of many of these jobs: if there isn’t upwards pressure on wages then it’s likely they’re stagnant or decreasing.
No comments