I work as a UX designer, program manager, and general IT consultant to help non-profits that are making a real, positive difference in the world. This blog is one of the ways I give back to the community.
We use Google accounts for our email. But when you are on an airplane, or in some remote location in the bush without internet access, it’s useful to have an offline solution for your email.
I’ve tried out several different alternatives including Apple Mail, Gmail Offline, Outlook, and Thunderbird. Spark is by far the best option out there. Of course it only does email, so if you want your calendar offline as well, Apple Calendar is a decent option. Although these days I just use the Google Calendar app on my iPhone.
If you want a disk so that it works with both Mac and Windows, format as ExFAT and use the GUID partition map. The old FAT32 is too small for current drive sizes, NTFS won't work on the Mac (current Macs can read, but not write), and Mac formats won't work at all on Windows.
Sometimes you want an item sorted to the top or bottom of a list of files. For example, an older versions folder for example.
Here are characters that sort below z on a Mac:
† (option t)
µ (option m)
π (option p)
Ω (option z)
(shift option k)
I just tested it, and last 3 work in Windows (although definitely not as easy to type!). I personally have been using Ω since it is really easy to type, and makes sense as the last character of the Greek alphabet.
At least half of the emails I send include a web link, such as a shared file. These days most sites use cookies or the fact that you are signed in to give you a custom experience, and that can include custom links that break when viewed by others.
I try to make it a habit of testing a link before sending it by bringing up a New Incognito Window in Chrome, or a New Private Window in other browsers and pasting the link in there. This will give the experience the recipient will see.
I got a 64 GB USB* flash drive (I prefer the design of Kingston Data Traveler. SanDisk Ultra is a good choice too.) and then used this process to create a bootable install drive:
Download the latest macOS installer from the App Store app. I delete the old one and download a new one every time Apple releases a new point release. That way I am always installing the absolute latest version.
Download DiskMaker X. I strongly encourage you to donate to the project. It is a very useful utility and I’d be sad to see it go away.
Open DiskMaker X and follow the prompts to create the bootable installer.
At this point you are technically done. You can insert this USB drive into any Mac, hold down the option key as you power it on, and then boot from it to do a clean install of macOS.
But you also have about 58 GB of space remaining. I fill it up with essential apps and other files I want to install once I boot up and configure the new computer. Here's a list of my essentials that go onto every new computer:
Microsoft Office installer
The latest versions of the Office apps (These can be copied into the Applications folder after running the installer to avoid having to download and install the latest updates.)
Adobe Acrobat Pro installer
Apple productivity apps: Keynote, Numbers, Pages
AVG AntiVirus installer
Brother print drivers
DaisyDisk
Google Chrome
Google Drive
LastPass installer
Resilio Sync
RingCentral
Skype
Spark (email)
TextWrangler
The Unarchiver
VLC
fonts used by our org (Lato, Source Sans Pro, Source Serif Pro…)
And here are some optional ones that only go onto select computers:
I just updated the name and code (SKU) of one of our programs in SalesForce. We had nearly 1500 donation records whose name needed to be updated. NPSP will auto-generate the name based on a format you configure in NPSP settings. But after the record is first created, there are only 2 ways to trigger that code: by manually clicking a button on the record, or updating all of the records in your system.
So I decided to manually update the records. Here's how I did it.
1. Create a new Donations report in SalesForce The report must include the ID of each record, and in my case also the Name.
2. Export the report results to a CSV file Click Export Details in the button bar. Change the format to CSV.
3. Edit the data in your favorite spreadsheet app I did a simple search and replace in Excel to swap the old code out with the new one. Be sure to save!
4. Sign into dataloader.io Use your production SalesForce credentials.
5. Click NEW TASK > Import at the top of the page
6. Choose Update as the operation
7. Select Donation (Opportunity) as the object
8. Click Next
9. Drag and drop the CSV file from step 3 here The fields should map automatically. If not, you need to do it yourself.
10. Click Save and Run I just leave these values set to the defaults.
Go get coffee. When you get back, your records will be updated.
I have enabled a catch-all email address for our domain. The benefit is that I can actually make up email addresses on the fly as needed and I will always be sure to receive messages sent there (useful for testing transactions and email list sign ups).
However as a result, I do end up with a fair amount of spam, especially from people trying to guess email addresses of our staff. Gmail is actually pretty good at filtering out most spam, but it won't catch most hand-crafted “cold emails”. Some are good about including opt-out instructions, but many are not. For those, I have crafted a boilerplate response that I send.
Sorry, we do not accept unsolicited commercial offers. Please add this email address—and all other @nonprofit.org email addresses—to your "do not contact" list. Thank you.
FYI, your message does not comply with the US CAN-SPAM requirements, most notably:
5. Tell recipients how to opt out of receiving future email from you. Your message must include a clear and conspicuous explanation of how the recipient can opt out of getting email from you in the future. Craft the notice in a way that’s easy for an ordinary person to recognize, read, and understand. Creative use of type size, color, and location can improve clarity. Give a return email address or another easy Internet-based way to allow people to communicate their choice to you. You may create a menu to allow a recipient to opt out of certain types of messages, but you must include the option to stop all commercial messages from you. Make sure your spam filter doesn’t block these opt-out requests.
We use a VOIP (voice over internet protocol) for our phone system at work. In addition, we’ve standardized on Skype for our video conferencing and screen sharing. In both cases, I need to give priority to voice and video data.
First order of business was to get everyone on the wired network. WiFi just increases the chance of lag and dropouts, especially since we are in a high-density area with a lot of other wireless routers and devices around.
It surprised me how hard it was to find network gear that made this easy. My research convinced me that Qualcomm’s StreamBoost technology was the way to go. I started with a NetGear router: the venerable NightHawk R7000. I then upgraded to the R8500 when we doubled our office space to get more range on the WiFi. But NetGear’s QoS console required me to go in and set the QoS for every new device that joined the network. This is 1) a management hassle, and 2) isn't the right strategy as I want to prioritize traffic, not devices. So once I ran into a bug prevented me from setting the QoS of new devices (NetGear support told me to do a factory reset; no thanks), I scrapped NetGear altogether.
I currently have a D-Link AC3200. It has the ability to manage by application. I have placed Streaming Media in the Highest bucket, Online Chat (e.g. Skype) in High, and the rest in the Medium bucket.
Overall it has worked pretty well, although I did have a problem of the QoS settings getting reset which made our phones unusable. I'm not sure why that happened, and of course now I am concerned it could happen again.
Does anyone out there have other suggestions for an easy-to-use QoS system for ensuring high-quality voice and video?
Friday I was trying to set the default value for a field when creating a new donation record. Turns out you can’t for standard fields (but ironically you can for custom fields).
The workaround is to use a workflow rule. Here’s the one I created, which basically says that we must generate a paper thank you letter for all in-kind donations. It’s a bit convoluted, as you need to also create a workflow action that will be run (in this case, Check "Needs Paper Letter" filed) separate from the trigger conditions.
The downside to this is it isn’t obvious to the person creating the new record that the field will be changed the instant they press Save. It would be better if there were an option for the rule to run when the new record form comes up (which is actually before it has been created in the database).
This might surprise you, but not all image files are created equally. Programs that save images often do so in an inefficient way. Thankfully a lot of smart, dedicated people have built utilities that correct this.
If you are on a Mac, install ImageOptim. On Windows, install FileOptimizer. They work essentially the same way. You drag an image over (remember to always operate on a copy), and it runs a bunch of different utilities to compress the images without any loss of resolution. It’s pretty impressive how much you can save. For simple illustrations and icons, I’ve seen savings of up to 80–90%. More typically is in the 10–30%. But that definitely adds up. I’ve compressed entire folders of raw images from my phone and digital camera to save space before I save them into my photo archive.
A quick note on file formats. For real-world photographs and realistic paintings/illustrations, JPEG is the format to use. For logos, maps, and other illustrations—especially those with a limited color palette—use PNG. I don’t recommend GIF, TIFF, BMP, PICT, or any of the legacy file formats anymore. These are the two best and most widely supported.
If you want to reduce the size and don’t mind losing a bit of quality, then get an image resampling app like ImageAlpha. It has a live preview, so you can see instantly how the new file with a reduced color palette will look. In many cases, it’s difficult to see much of a difference and you can save a lot more space.
And for cases where you don't care about quality at all, I use the most excellent Mac dropletMake JPEG. It’s quick and very useful for significantly reducing a full fidelity screen capture to a workable file you can send over email.
Finally, there is a great web-based utility for optimizing PDFs called PDF Compress. A word of warning: it will significantly degrade the quality of high-resolution images in the file, so don’t use if you are planning to print.
So why do we care? Because speed matters. You want people who are viewing your web site or email messages to see your content as quickly as possible. This is especially true for mobile devices when network speeds can be a lot slower. Google is one company that really gets this. Yes they have high-quality search results. But part of the value of their product is the speed. To this day they still show the amount of time taken to return a search. You might not notice it, but it’s always there right above the top result (and the ads). Back in November Google Research announced a very clever tool that allows you to scale down images to ¼ their original size and then use software on the other end to regenerate the details. I'm looking forward to being able to use that on our web site to double the speed.
Running IE on a Mac used to involve buying a copy of Parallels or VirtualPC, then getting a Windows installer and a license activation code. But thanks to some visionaries over at Microsoft and Oracle, the whole process is fairly straightforward and best of all, free.
First, install the latest VirtualBox host. This is the software that makes your look like a standard PC computer.
Next, head over to Microsoft and download a free virtual machine with the version of Windows and IE that you need. If you're not sure, I recommend the latest stable version of Windows (currently Microsoft Edge on Windows 10 stable); It includes bothInternet Explorer and Microsoft Edge. Make sure you unzip usingThe Unarchiver.
I just use the defaults when creating the new virtual machine. I don't need anything high-powered here; I'm just using it for the browser. Start it up, and first thing click the Windows logo (lower-left), Settings (gear icon), Update and Security, Check for Updates. Apply all updates, restarting if necessary. Once your are completely up to date, click Take Snapshot in the Machine menu.
When the license evaluation period is over, you can reset the machine to this snapshot by clicking Snapshots in the upper-right corner of the VirtualBox Manager window. Or you can just keep the source ova file around, delete the VM and create a new one from the ova.
Many file formats these days are actually a folder containing multiple files and folders that are zipped up into a single binary file.
As always when you are mucking around with files like this, create a copy and work only on the copy.
Simply change the file’s extension from .docx, .pptx, or .pdf to .zip. Note: this will not work on the old Office formats .doc and .ppt. In that case, open the file, then save as the new file format (that ends in a x). For PDFs, it's not obvious if it's an older format. You can try saving to a newer version, but sometimes it just doesn't work, unfortunately.
Once you have the zip file, unzip it. On the Mac, the built-in Archive Utility doesn’t always work, so I recommend The Unarchiver app.
For PDFs, all the images show up in the top level of the unzipped folder. For Office documents, it will be under word > media or ppt > media.