Category Archives: Tech

Clean-up Your Inbox With Retention Policies

I get a lot of email, and I can’t always keep up with it. My first line of defense is rules. Rules help me filter out a lot of noise and tag messages in meaningful ways, but I find that if I move things out of my inbox, they slip into the out-of-sight, out-of-mind void that is everywhere-except-my-inbox.

I get a lot of notifications from Azure DevOps for things like pull request reviews. These are things that I want to know about, but it’s not something I’m realistically going to get back to if I put it off for a few days. I wanted to create a rule that was something like “delete messages that match [whatever criteria] that are more than [x] days old,” but I couldn’t find a way to do it other than by moving the messages away from my inbox to a folder with a custom archiving policy (i.e. into the void where I won’t see them) or by doing some custom development.

But then I found them: retention policies.

Retention policies control how long messages messages are kept, and they’re perfect for these sorts of highly-relevant-but-only-for-a-short-while messages. You apply the policy to a message, which can be done quite easily with inbox rules, and Office 365 takes care of the rest.

Sounds awesome; sign me up, right? It took me an embarrassingly long time to figure out how to add the policies to my account and use them. I’m talking 2 or 3 sessions where I gave up, defeated. Fear not, though, friends! For I have figured out the path forward and present it to you here in just four easy steps.

1-3. Add Policies to Your Account

This was the part that escaped me for so long, and the issue is that I was trying to do it from Outlook instead of through the Outlook Web App.

  1. Log into O365 > Outlook
  2. Settings > View all Outlook settings > Retention Policies
  3. Add new policy > (add some policies)

Alternatively, you can jump directly to the following URL:
https://outlook.office365.com/mail/options/mail/retentionPolicies

4. Make a Rule

Now that you’ve added some retention policies, you can apply them to messages with rules. As mentioned earlier in the post, I want to delete messages from Azure DevOps after a few days, so I created a rule that applies the “1 Week Delete” policy to them.

When these messages come in, they can sit comfortably in my inbox and compete for my attention. If I happen to get a behind–which happens frequently enough for me to have pursued this several times and then write a blog post about it–these stale messages will conveniently self-destruct and go away all by themselves. Wonderful!

Advertisements

Two Ways to Send Emails to Slack

I get a lot of emails where I want to discuss with my team in Slack, and I was really excited when the Send to Slack Outlook add-in was created. It’s really nice to click a button, specify a channel, and have the email show up.

Unfortunately, I noticed yesterday that things like screenshots & images contained in an email message may not show up when the add-in is used. However, just today I happened upon another setting in Slack preferences that allow you to generate a unique email address. When you send emails to this address, they come as a direct message from Slackbot–and images that didn’t show up in emails sent with the Outlook add-in did show up when I sent them to this email address.

The setting is found in Preferences > Messages & Media > Bring Emails into Slack.



Sync Any Folder Between PCs with OneDrive

OneDrive is great for backing up data to the cloud, but one of its limitations is that you are only allowed to specify a single folder. I had an application that I used frequently between two computers, and I needed to manually copy files between the computers any time I changed settings.

After doing a bit of research, I found a great solution utilizing OneDrive and junctions created using mklink. The secret to this approach is to keep the “real” files in your OneDrive folder, and then create the links from the original path.

Here’s a quick example to demonstrate. Let’s assume I have a directory c:\users\adam\foo\settings that I want to sync between computers. I would perform the following steps:

  1. Make a backup of c:\users\adam\foo\settings just in case something goes wrong.
  2. Copy settings into my OneDrive folder → c:\users\adam\onedrive\foo\settings
  3. Delete c:\users\adam\foo\settings
  4. From a command prompt, run the following:

    mklink /j "c:\users\adam\foo\settings" "c:\users\adam\onedrive\foo\settings

That takes care of one PC so that it will use the files that are now contained in the OneDrive folder, but it’s only half the battle. Now we need to switch over to the other PC and configure it to use the OneDrive files, too. I’ll use a different username in my path to help illustrate that these steps are being performed on computer #2.

  1. Make a backup of c:\users\adam.prescott\foo\settings
  2. Delete c:\users\adam.prescott\foo\settings
  3. From a command prompt, run the following

    mklink /j "c:\users\adam.prescott\foo\settings" "c:\users\adam.prescott\onedrive\foo\settings"

Now both computers are configured to use the files contained in the OneDrive folder, and changes will sync between them as changes are made. Perfect!

Introducing Quick File Search | Bitbucket Blog

I’m glad I found this, I’ve really been needing/wanting it. In Bitbucket, you can press ‘F’ to bring up a quick-search dialog and type in any file name to find & jump directly to a file in the repository. Until now, I’ve been manually clicking through directories and hating every second of it! (But this is apparently old news. Using ‘.’ to open the Omnibar is the way to go now. Exact same idea, though!)

Introducing Quick File Search | Bitbucket Blog.

New Home Office & the IOGEAR Dual View Dual Link DVI

I just recently moved back into my house, and a lot’s changed since I was here. Perhaps the most notable difference is that home and work have combined. So, when it came time to configure my home office, I wanted to make sure I had everything I needed to adequately work and play in the same space while also keeping them sufficiently separate.

Let’s talk needs. Two monitors is a minimum for work. Some people like a third display, but it’s give-or-take for me. I find that I’ll be looking at the far-left monitor and not notice something important that’s happening on the far-right. I’m not anti-third display; it’s just not something that I particularly care about. I like two displays for home for some of the same reasons. If I’m learning something, I want to have a page up on one screen while I work on the other. Or, maybe I want to poke away at some code while watching some TV. Either way, two screens makes life better. The old home office had my home and work computers in different rooms because I didn’t have a proper office, but it was time for them to unite.

This union created a dilemma: two computers, three monitors, two keyboards, and two mice. Seems like a perfect job for a KVM, but I was surprised to find that multi-display KVMs aren’t cheap. After a night of research, I decided it would be worth it to splurge and get an IOGEAR 2-port MiniView Dual View Dual Link DVI. On paper, it’s just what I needed. Two monitors, a keyboard, and mouse could be shared between the two computers. The third monitor would be hooked up to a DVR for some entertainment on the side, but it could also be used as a third display for either computer if desired. (I’d change the third display manually using its built-in source selection.)

iogear-miniview

The MiniView is a cool piece of hardware. It’s got some decent weight to it, and the metal case and buttons look nice–essential for a desktop peripheral! I ran into some hiccups hooking everything up, but I think it may have been because I was hot-swapping everything instead of turning everything off like recommended in the user manual which, of course, was not read until after the fact. The functional shenanigans during setup caused the initial configuration to take the better part of 2 hours and was really frustrating. I was definitely feeling some buyer’s remorse and considering sending it back, but I got it working after a few reboots and do-overs.

Okay, initial setup was done. Displays were working; keyboard was working; mouse was funky. I’d read some reviews about issues with wireless mice, so I wasn’t entirely surprised by this. I had a nice gaming mouse, so I decided to just roll with that, but I couldn’t do it. I missed my Logitech Performance MX and had to go back. Fortunately, the MiniView has a USB port to share a single peripheral between computers. I plugged my Logitech universal receiver into it, and the mouse worked just fine. Boom, problem solved.

I was all done, or so I thought. I ran into another problem a day or two later, this time with the keyboard. The “t” got stuck, and even unplugging and re-plugging it in didn’t solve the issue. So, I grabbed a cheap 3-port USB hub that I had laying around, plugged it into the single shared port on the KVM, and plugged my mouse, keyboard, and wireless headphones receiver into it. Now I’m not using either of the KVM’s dedicated USB keyboard or mouse ports, but everything works perfectly. I lose out on the KVM-specific keyboard and mouse commands, but the KVM is front & center on my desk so I probably wouldn’t be learning or using those commands, anyway.

Everything’s been good for another day or two at this point, and so far, so good. I’m feeling good about this configuration and hope it keeps working!

Oh, and if you’re curious about the monitor/computer connections, my two monitors connect to the KVM via HDMI-to-DVI cables. Computer 1 is connected to the KVM using the KVM’s provided DVI+USB cable and a DVI-to-HDMI cable. Computer 2 uses the DVI+USB cable and an additional standard DVI cable. The third display connects to Computer 1 using a VGA cable (Computer 1 only supports 3 displays if one is VGA), Computer 2 using a standard HDMI cable, and the DVR using a standard HDMI cable. I’m generally keeping the third display disconnected from the computers (through their display control panels) and just using it as a TV, though.

OCR in OneNote

OneNote is good for a lot of things–like taking notes–but did you know that you can also use it as a quick & dirty OCR? It’s a snap to use, too. Just copy an image from the clipboard onto a OneNote page, then right-click and choose Copy Text from Picture.

copy-text-from-picture

OneNote works its magic and copies the text it finds to the clipboard. Here’s what the image above produces:

File Edit Format View 
I love text! 
Texty, text, text! 
Untitled - 
Help 
Notepad 
Ln2, Col

You can see that it’s far from perfect. I’m not sure why “Untitled -” and “Notepad” aren’t together or why they’re not at the top. It also didn’t do a great job with the text in the status bar, reading Ln 2, Col 19 as Ln2, Col. But it did a good job with the meaty part that I’d actually care about.

Let’s try a more complicated example. Behold, a screen-grab of the lipsum.com Lorem Ipsum generator homepage!
lorem-ipsum

This image has a little bit of everything. There are letters, numbers, columns, different fonts and sizes, and even a background with words! Here’s what OneNote gives us:

Lorevn Ipsuvn 
"Neque porro quisquam est qui dolorem 'psum quia dolor sit amet, consectetur, adpsci vellt 
'There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain 
What is Lorem Ipsum? 
Lorem Ipsum IS simply dummy text of the printing and typesetting 
industry Lorem psum has been the industry's standard dummy text 
ever since the ISOOs, when an unknown printer took a galley of type 
scrambled t to make a type specimen boobc It has survwed not 
only fwe centuries, but also the leap into electronic typesetting, 
remaining essentially unchanged It was popularised in the 1960s with 
the release of Letraset sheets containing Lorem psum passages, and 
more recently with desktop publishing software like Aldus ageMaker 
including versions of Lorem 
Where Does it come from? 
Contrary to popular belief, Lorem psum is not simply random text It 
has roots in a piece of classical Latin literature from 45 BC, making it 
over 2000 years old Richard McClintock, a Latin professor at 
Hampden-Sydney College in V'rgnia, looked up one of the more 
obscure Latin words, consectetur from a Lorem psum passage, and 
gong through the cites of the word in classical literature, discovered the 
undoubtable source Lorem psum comes from sections UllY32 and 
IA1133 of "de Finibus aonorum et Malorum- (The Extremes of Good 
and Evil) by Cicero, written in 45 BC This book is a treatise on the 
theory of ethics, very popular during the Renaissance The first line of 
LÆrem psum, "Lorem ipsum dolor sit amet comes from a line in 
section 32 
The standard chunk of Lorem Ipsum used since the ISOOs is 
reproduced below for those interested Sections T1032 and IAIY33 
from "de Finibus aonorum et Malorum" by Cicero are also reproduced 
in their exact original form, accompanied by English versions from the 
1914 translation by Rackham 
Why Do we use it? 
It is a long established fact that a reader will be distracted by the 
readable content of a page when looking at its layout The point of using 
Lorem psum is that t has a more-or-less normal distribution of letters 
as opposed to using 'Content here, content here making it look like 
readable Many desktop publishing packages and web page 
editors now use Lorem psum as their default model text and a search 
for 'lorem ipsum' will uncover many web sites still 'n their infancy 
Various versions have evolved over the years, sometimes by accident, 
sometimes on purpose (injected humour and the like) 
Where can I get some? 
There are many variations of passages of Lorem Ipsum available, but 
the mayorty have suffered alteration In some form, by Injected humour, 
or randomised words which dom look even slightly believable If you 
are going to use a passage of Lorem psum, you need to be sure there 
ism anything embarrassing hidden n the middle of text All the Lorem 
Ipsum generators on the Internet tend to repeat predefined chunks as 
necessary, making this the first true generator on the Internet It uses a 
dictionary of over 200 Latin words, combined wth a handful of model 
sentence structures, to generate Lorem psum which looks reasonable 
The generated Lorem psum is therefore always free from repetition, 
injected humour, or non-characteristic words etc 
paragraphs 
by tes 
Start with 'Lorem 
ips um dolor sit 
Generate Lorem Ipsum 

Okay, pretty good. It did an admirable job of detecting the paragraphs and columns. Most of the words came out fine, but there were problems with numbers (1500s read as ISOOs) like we saw with the simple Notepad example. There were a lot of small typos (reados?), like dropped periods or a missing letter here and there. The takeaway here is that any decent amount of text that you care about should be proofread. If you’re too lazy for proofreading, you might be able to clean it up a bit by pasting into Word and using its spelling and grammar checking.

Despite its flaws, it’s a really fast, really easy way to OCR just about anything you can get on your computer screen. Take a screenshot using Snipping Tool or something better, paste it into OneNote, and OCR that mamma jamma!

JIRA Plug-In for Greenshot

A couple weeks, I wrote about Greenshot–a wonderful free & open-source screenshot utility. During the installation, there were a number of optional plug-ins that I didn’t select because I was skeptical of the application, one of which was for JIRA. I was intrigued and, after my trust was earned, I re-ran the installation and selected to include the plug-in.

The plug-in is pretty cool. I have Greenshot configured to always open the image editor, and the plug-in adds a little JIRA button to the toolbar. When I click it, a dialog pops up that allows me to pick a JIRA issue from a saved filter or enter the JIRA number manually. Click the Upload button, and the image is attached to the specified issue in JIRA. I actually prefer this to JIRA’s attach file process. Quick & easy!

While the plug-in itself is slick, the configuration was not. The first time I clicked the button, it straight-up crashed. I figured out where to enter my JIRA URL, clicked it again, and it crashed. I restarted Greenshot, clicked again, and it crashed. Finally, I ran as administrator, and it worked. Jeesh!

It’s pretty easy to configure once you know what’s up, but knowing what’s up is tricky. So, without further ado…

Configuring the Plug-In

I haven’t taken any time to figure out how to add the plug-in if you didn’t select to include it during installation. So, if you were like me and didn’t install it, go re-run the installer and include it. Once installed, the plug-in is configured in Greenshot’s Settings dialog. Right-click the task tray icon and choose Preferences, then go to the Plugins tab.

configure-plugins

Click to highlight the JIRA plug-in and click the Configure button. Another dialog is displayed, prompting you for a URL. Enter the following:

https://YOURJIRAURL/rpc/soap/jirasoapservice-v2?wsdl

configure-jira-plugin

You can test the URL you’ve entered by browsing to it in your favorite browser. If it’s good, you’ll get the WSDL XML. (The plug-in works by generating a class at runtime using the WSDL, so it’s not going to work if you can’t get to the WSDL.) Click Ok to save your changes and Ok to close the Settings window. You need to restart Greenshot for the changes to go into effect. Right-click the task tray icon and choose Exit, then start it back up.

Now you should be good to go. Click the JIRA button in the Greenshot image editor, and you’ll be prompted for your credentials. If you elect to save your credentials, you’ll only be prompted once. If the credentials work, you’ll get the upload-to-JIRA dialog.

jira-button-in-greenshot

upload-to-jira

In the upload dialog, you can pick a saved filter to see a list of issues. Picking from the list populates the issue number text box at the bottom. You can also manually enter the issue number into the textbox. When a valid issue is entered, the Upload button enables, and clicking it uploads the image to the specified JIRA issue. Good stuff!

Got UAC?

As mentioned previously, the plugin works by dynamically generating a proxy class from the JIRA service WSDL. It saves the generated assembly to disk and then uses it to interact with the JIRA web service. Since it’s generating and saving an assembly to disk, it needs to have administrative priveleges. If you click the JIRA button and receive a crash message that says it can’t find an assembly with a seemingly-random name, try running Greenshot as Administrator.

Mountek nGroove Snap 3

Back before everybody’s cell phone had built-in GPS, I had a TomTom GPS. It came with a suction cup so you could stick it to the window, but that never really worked that well for me. It would constantly fall off the window, and it drove me nuts. So, I bought a beanbag friction mount that I could stick it to, and it would sit nicely on the dashboard whenever I was driving somewhere that I needed directions.

Fast forward to present day. I use my cell phone for directions when I need them, but I prop it up in a little groove below my car’s instrument panel. If I turn too fast, it goes flying, and it’s low enough that I’m constantly looking down for the next turn. The solution is a cell phone mount, and I’ve been shopping for the perfect one for a long time.

I didn’t want something that used a suction cup because of my previous bad experience, and I didn’t want something that used an adhesive because I worry about it doing permanent damage or failing over time. The vents in my car are not in a good location, so any clip-on mount’s not so great. I was considering going for a suction cup to re-use with my beanbag, but I was turned off by storing it. I wouldn’t want to leave it out all the time because the rubber could melt on a really hot day, it’s too big to store with the base & mount assembled, and the idea of disassembling & reassembling with each use is less than ideal, too.

Enter the Mountek nGroove Snap 3 magnetic car mount.

mountek_ngroove_snap3

This thing is great. First, it attaches to the CD slot in my car which is perfect. It’s right where I want it in the middle of the instrument panel, and I don’t think I’ll ever put another CD in there, anyway. The mount is small and reasonably unobtrusive, so I won’t have some big, bulky bracket that’s either out all the time or being stored with each use. It’s magnetic, so I just stick a metal badge under my phone’s case and it just sticks–super easy to mount and remove with one hand. There are no brackets, so I can put it in any orientation with whatever cables I might need (charging, stereo). It’s universal, so it’ll work with phones or tablets or anything else that’s light enough to be held by the magnet (which is pretty strong). It can also be used as a desktop stand for your phone, if you’re into that kind of thing, too.

The only thing that I can even think to complain about is that my phone blocks the clock a bit when it’s mounted, but I can still see the time by leaning a little to my left. (So be sure to think about what controls or displays it might be blocking.) Other than that, it’s amazing. Even my wife was impressed, which is really saying something. Best mount ever.

Greenshot for Screenshots

I used to knock on Snagit from TechSmith. I didn’t get why somebody would pay for a screenshot utility when Windows comes with one built-in. Then I got a license, and I was converted. I loved not having to hand-draw crappy arrows, boxes, and highlights. It upped my screenshot game, big-time!

snipping_tool

But, like all good things, my time with Snagit came to an end. I left the job that brought us together, and with it, my license. I was back to living in the screenshot dark ages with Snipping Tool and Paint. After a few months, I’d had enough. I was ready to put down $50 for a personal Snagit license so that I’d never be without it again. I’m pretty sure I even went as far as putting it into my cart on the TechSmith website, but I never quite pulled the trigger.

I don’t know why it took me so long to think of this, but I finally headed over to Google and searched for Snagit alternatives. And that’s where I met one of my new best friends: Greenshot.

Greenshot has all the features that I’d grown to love about Snagit, but it’s free & open-source. Here’s a quick list of what I love most:

  • PrtSc to select a region (Ctrl+PrtSc for entire desktop, Alt+PrtSc for current window)
  • Screen grabs open in editor with drawing tools like rectangles, ellipses, arrows, highlighter, textboxes, and speechbubbles
  • Obfuscation tool to draw a box around & blur sensitive data
  • Auto-incrementing counter circles — perfect for giving directions!

greenshot

The only thing I didn’t love right out of the gate is that the default keybinding for copying the image from the editor to the clipboard is Ctrl+Shift+S instead of just Ctrl+C. But I’ve gotten used to it, and it’s nice being able to use Ctrl+C/Ctrl+V to copy/paste elements in the editor. It lets me do things like have arrows that are the exact same size and parallel, which is great since I’m super anal about stuff like that!

So, if you’re stilling using Snipping Tool and/or Paint or looking for a great alternative to Snagit, give Greenshot a try. You won’t be disappointed! Unless you want something that also takes videos. Then you’d be disappointed and would probably want to go get Snagit. But for screenshot editing, go Greenshot!