Browsers cache data whenever you load a page. In general, this is a good thing—you’ll save data transfer (very important on mobile), and increase speed on any connection if the browser can use data that it’s already cached.
But there’s one place I hate browser cache: When creating or editing web pages. I’ll edit a file, save the changes, upload the new file, load the page…and nothing. So I edit again, repeat, still nothing. Only then do I remember the cache. Argh!
Thankfully, there are ways around (most) cache issues. I do most of my web development in Chrome and Safari; here are the simple tips I use to manage cache in those browsers when developing.
Enable the Developer menu (Prefs > Advanced > Show Develop menu in menu bar).
Once enabled, use the Developer menu to easily empty the cache via the Empty Caches menu item, which is bound to the keyboard via ⌘⌥E.
Also in the Developer menu, you can completely disable the cache with the Disable Caches menu item. This is what I do when developing—just remember to enable them again when you’re done, or you’ll find browsing quite slow.
To force a single page to completely reload, hold down the Option key and click on the reload icon in the URL bar.
It’s not often I get to use a tweet by Many Tricks own Peter Maurer as the inspiration for a tip. But this tip is such a case, as he recently complained about Console and its inability to see old output. A response from @fzwob taught me something I didn’t know:
@petermaurer for logs from customers of your app on Sierra, use Terminal: log show —predicate ‘processImagePath CONTAINS[c] “processname”’
That command browses the captured macOS log data and pulls out anything that matches the specified process name. This could be useful if you’re having troubles with an app and wonder if anything was logged relative to your troubles. Or you might be asked to send the log data if you’re working with the developer on your issue.
Unfortunately, the quotes and dashes in the command as tweeted have been prettified (by Twitter?); here it is in raw Terminal form, using our own Moom as an example:
log show --predicate 'processImagePath CONTAINS[c] "Moom"'
When you press Return, the command will start digging into the log file, and soon start spewing output—possibly a lot of output—to your screen.
It seems crazy to think that these users are intentionally sharing this information with the world. I wanted to see how it was happening, so I logged into docs.com with my Office365 account to see. I created a simple file to upload as a test. After uploading, you have to set a bunch of options before you save the file; one of the settings is the Visibility, and this is the default setting:
Yes, docs.com defaults any uploaded file to world-visible, “giving it a larger audience.” Yikes!
I use VMware Fusion often—I have virtual machines that span Mac OS X 10.6 to macOS 10.12.4 beta. I use the more-recent of these for supporting our customers on older versions of the OS, and keep the really old versions just for nostalgia purposes. (I have a bunch of non-macOS virtual machines, too, but they’re not relevant to this tidbit.)
In all the time I’ve been using Fusion on my retina Macs, though, I’ve never enabled this setting…
…well, I enabled it once, but turned it off, because the end result was too small to see: In Retina mode, every pixel is an actual pixel, not a doubled pixel. On my 27″ iMac, that meant the macOS VM thought it was running at (for example) 2560×1600 instead of a retina resolution of 1280×800. VMware even warns you of this in their Knowledge Base:
Mac OS X running in a virtual machine is limited to an approximate resolution of 2560 x 1600, and treats the display as a standard DPI device. This makes the text and icons to appear small in the OS X interface.
However, today I stumbled across this solution from Patrick Bougie—and it’s brilliant in its simplicity. Patrick’s post has all the details; I’ll reproduce them here in abbreviated form, just in case his page ever vanishes.
One of the “problems” with Keyboard Maestro is that it’s so useful I use it a lot, leading to a large collection of macros. Due to the number of macros, sometimes when I want to add a new shortcut, I can’t remember if I’ve used that shortcut before or not. Today’s tip comes in two flavors to address that problem: Simple and Complex.
The Simple solution
Short of just trying the shortcut, there’s a way to check from within Keyboard Maestro itself: Type the macro’s activation keys into the search box, as seen in the box at right.
You can’t do this by pressing the actual shortcut keys—you have to type their character representations. You can do this with the “Show Emoji & Symbols” option under the flag icon in the menu bar, if you’ve enabled it in the Keyboard System Preferences panel. But finding those few special keys (if you even know how to search for them) is a pain.
Technically, you could also use the pop-up character palette macro I wrote, except there’s an issue: When the palette activates, it deactivates the search box, so the characters don’t make it there. It’s also overkill for this task, because there are characters that wouldn’t be part of keyboard shortcuts, and you’d never need the HTML codes, just the characters.
So I wrote what wound up being a set of new macros that make searching for assigned keyboard shortcuts much easier.
Before you hit Return, you notice a couple of typos early in the command. You could use cursor movement keys to move around, of course, but with the above command in place, just press Escape and hit v: The entered command will open for editing in vi. Make your changes, then do the usual :wqvi exit dance, and your edited command will then execute.
Note that if you edit a command but then don’t save it (i.e. you press :q!, you may have to hit Return on the command line to get out of an odd “waiting for v to edit” mode. (At least that’s the only way I found to return to normal typing.)
On save, I noticed that the image’s extension was .jpeg rather than what I thought was the usual .jpg. As both of my other Macs save with the .jpg extension, I figured something was messed up on the iMac. So I (of course) tweeted about the issue. A while later, Shawn King replied with this seemingly odd suggestion:
So I tried it, and sure enough, changing the screen capture file format via defaults write com.apple.screencapture type jpg and then restarting the SystemUIServer with killall SystemUIServer changed my default JPEG extension in every app to .jpg.
What’s really strange is that I then switched the screenshot format back to png, and the .jpg extension remained. I even went so far as to delete the pref (defaults delete com.apple.screencapture), and still, the extension remains .jpg. So whatever change occurred when switching the default screenshot format, it appears to be permanent.
I tried the same trick for the .tiff extension (which I rarely use, so it doesn’t bother me as much), and it sort of worked: Captured screenshots got a .tif extension, but images saved from apps still got the four-letter .tiff extension. Weird.
If anyone knows exactly what’s going on with the .jpeg vs. .jpg extension, I’d love to hear the explanation.
Yes, that’s a screen saver running in the background, behind whatever work you’re doing. And if nothing else, it’s a great example of the progress of our CPUs and GPUs since 2002. In the original hint, I noted:
On my G4/733 with the GeForce3, this is simply amazing. The new “flurry” screensaver is running right now on the destop at 1600×1200 in thousands, iTunes is playing, the ink recognition floater is open, and yet the CPU utilization is averaging at or below 50% of thereabouts
Today, I’m testing it on a 5K iMac (5120×2880) with a second connected 4K (3840×2160) display—a total of 23,040,000 pixels, or 12 times as many pixels as in 2002—with Flurry running on both screens, and the CPU usage is somewhere around 10% to 15%. (Flurry does send the iMac’s fans into a tizzy, though.) Other screen savers are even less intensive, and don’t send my iMac’s fans into high gear.
I can’t imagine actually working this way for very long, but it is kind of interesting. Here’s how to start (and more importantly, perhaps, stop) a background screen saver.
Ever wanted a “light” weather check web site, free of ads and other visual clutter? One that you could maybe even use from Terminal? Then you want wttr.in.
Sure, you can use it from your browser, i.e. see the weather in Boston or Montreal, by just appending the zip/postal code of interest to the URL, i.e. http://wttr.in/95014. If you omit the location, wttr.in will get the location based on your IP address—for me, that’s never anywhere near correct when I’m at home, though.
What’s really neat is you can use it in Terminal, too, via curl:
$ curl wttr.in/80301
The output is graphical, but done so with text characters (click for zoomed version):
At a glance, you get a few days’ worth of conditions, including temperature range, wind speed, visibility, and precipitation. There’s even animation—check somewhere with thunderstorms, and you’ll see flashing lightning bolts.
There’s a help page that explains lots of other options, like forcing metric or US units, and looking at weather by airport code.
Between Many Tricks and this blog, I spend a lot of time in browsers. Most of the time, I use Safari, but I do occasionally work in Chrome and Firefox, too—most often to check how a page looks or functions.
I keep my “permanent” bookmarks in Safari, and don’t presently use any sort of cross-browser sync. (I used to use one, but had a lot of trouble with duplicates, so I stopped.)
I wanted a way to open a limited number of URLs in either Safari (if that’s what I was in, or if I wasn’t in a browser), or in the frontmost browser, if that browser were frontmost. I could just create the subset as bookmarks in each browser, but if I wanted to add or remove a page from the list, I’d have to do so multiple times.
In the end, I came up with a set of Keyboard Maestro macros that do exactly what I want. I access my short list of multi-browser URLs via Keyboard Maestro’s pop-up palette, as seen at right.
This appears when I press ⌃1; after that, a single digit opens the desired URL. But how does it know whether to open the URL in Safari or one of the other browsers? It takes one helper macro, then one macro for each URL that I want to open in this manner.