Monday, March 27, 2017


via Facebook
Matt felling his first tree! Sue, Matt & I took Marco Good's 3-day Tree-Felling & Chainsaw Safety course @ North House Folk School over the weekend. Excellent class! πŸ‘πŸ˜€Felled trees, learned to limb & even skid 'em out. Wonderful afternoon of practice Sun at Mike Hero's acreage.
via Facebook

Thursday, February 2, 2017

Two is one, one is none

And this... why I run both Google Drive & Dropbox. This morning Google Drive fired up on my laptop and promptly threw the prompt above, and refused to sync in the latest changes from home. πŸ˜’

I use drive sync'ing to pull daily changes in files back and forth between work & home. And I frequently hit the ground running in the morning, and don't have time to monkey with mandated forced-marches to, "The Latest Revision™", that the above reflects. *eyeroll*

All of which means, having my data concurrently synced into Dropbox as well as GDrive, keeps me rolling when one of the vendor's unilaterally decides to  fold it's tent. Keeping some fault-tolerance in critical links helps yield up a smooth, impact free, and productive work flow. Regardless of vendor mandates...

And don't get me started on the New-n-Improved™, "Patch & Regression-testing's for Weenies!",  methodology behind releasing half-baked patches for apps like Office 365, Windows-itself, and any number of 'modern' rolling apps. πŸ˜’

Sure, when it comes to security - for yer granny - Herd Immunity's a thing, and has statistical benefits across thousands to millions of folks. But that doesn't help much when you're the individual that got floored by the vaccine. 😜  And as a power-user, it's more important that I get my work done quickly and with minimal hurdles, than it is that I be 'protected' from clicking idiot-exploit links that I'd never go near with a 10-foot-pole...

Yea, it'd be nice to have some choice on the patch timing.Patching reboots and downtime per month seems to have _doubled_ now that Office 365 runs it's own patch requests, out of sync with desktop patching... Used to be one set of Black Tuesday patches per month could get'r all done neatly. Ahh, for those less-thrilling days of yesteryear. :D

Is it just me, or have vendors gotten awfully dictatorial in the last 5 years?  Heh, welcome to, "One Size WILL Fit All!"

Tuesday, November 29, 2016

Visual Studio Code: Autohotkey-based popup Cheatsheet for Keyboard Shortcuts

11/29/2016: I like Visual Studio Code a lot - it's got some warts, and gaps, but there's some thing's it does amazingly well (and some it sort of stumbles at). If you write in Powershell, it's probably the best/lightest/most-stable editor I've found, with the range of features you get, and rampant-growth and availability in user-created extensions -  (Though it really needs better-rounded debugging... *grumble* ;P) .

Anyway, one of my pet peeves for 'Code.exe' is it's lack of good quick popup references for common tasks - well that and some of it's interface & control choices that don't match most of the common keystrocks and mouse behaviors I've gotten used to in other editors.

Autohotkey fills the gap!

Toward that end, the below is an Autohotkey-based quick-n-dirty Popup Cheatsheet for Visual Studio Code. If you use  AHK & 'Code', you might find this gapfills a niche.

I don't doubt you can hack Code.exe itself to display a menu with a hot key binding. But I work for a living ; I don't want to burn a lot of time learning how to build objects in code.exe itself. :P But I do make tons of use of AutoHotKey these days -- (automation tied to working for a firm with a lot more user-interaction than I've had in the past: BOILERPLATE! AUTOMATE!) --  so I decided yesterday to take a few minutes and whip up a quick popup dialog in AHK that just lists out the key keyboard shortcuts I want to use (especially where addon extension commands and bindings are concerned).

It's pretty simple, docs are inline in the script (stored & kept updated at Github):
Two chunks below: the .ahk script file, and a .csv file that drives the displayed menu.

Lemme know if you have any questions. :^D

Static-source follows (for folks in RSS readers, or disabling scripting):
(check the linked Gist/Github links below for _current_ versions).


;;; vsc-cheatsheet.ahk

#*------v NOTES v------
vsc-cheatsheet.ahk - Quick`nDirty Autohotkey-based popup reference menu for Visual Studio Code keyboard shortcuts
Written By: Todd Kadrie

Change Log
;;; 8:28 AM 10/25/2016

vsc-cheatsheet.ahk - Quick`nDirty Autohotkey-based popup reference menu for Visual Studio Code keyboard shortcuts
configurating AHK is beyond the scope of this script. See for more information
This script leverages an Excel (or other spreadsheet app) exported 'Formatted Text (Space delimited) .PRN file. 
I know you can build fancier dialogs with AHK, but for my purposes, a space-delimted PRN using the Lucida Console
font, gives me a simple way to alighn columns, without wrestling with fancier nested tables & other controls
from AHK. 
To use the script: 
1) Add the functions below to your normal .ahk script. And update the sAHKSdir entry to point to 
    the directory where you store your AHK scripts. 
2) Copy the .csv file to your AHK script dir 
3) Open the included csv file in Excel (or your spreadsheet of choice): 
    a. Select all of the columns and dbl-click on vertical line on the header row, between Col A and Col B. 
        This has the effect of auto-sizing all of the selected columns, fully & neatly displaying the cell contents
    b. Play with he column widths to approximate the layout you want. At the current time, the csv 
        Contains the VSC/Code keyboard shortcuts I want to see. Pretty straight forward stuff
    c. Save-As the spreadsheet, and select 'Formatted Text (Space delimited) (*.prn), give it the name 
    d. Then Save-As the spreadsheet again in .xlsx format (or your spreadsheets native format), for future
        editing & changes to your 'menu'
4) Restart your primary autohotkey script. 
5) As written below, the popup dialog is bound to the Capslock & F1 key (CAPS+F1). 
    The dialog can be dismissed by clicking on the Close window.
*----------^ #*/

;;;            ======
;;;#*======^ VSC-RELATED ^======
sAHKSdir :="C:\sc\ahk\ahkscripts\"
;;;*------v hs-vsc-cheatsheet (QuickRef) v------
capslock & F1::
 tBPFname :=sAHKSdir . "vsc-cheatsheet.prn"
 IfNotExist, %tBPFname%
  MsgBox, Error! missing %tBPFname%!.`n aborting.
 } else {
  FileRead, MyText, %tBPFname%
  ;;; create GUI object with Font assigned
  Gui Font,, Lucida Console
  ;;Gui Add, Text, HwndhwndStatic, % myText
  Gui Add, Text,, % myText
  ;;; 8:31 AM 12/1/2014 plice in a close btn
  Gui, Add, Button, Default, Close
  CoordMode, Mouse, Relative
  Gui, Show
  ;;hwnd:=WinExist("ahk_class ^AutoHotkeyGUI$") ;;; 7:46 AM 7/3/2014 click-close is broken, don't use regex even with regex matching...
  hwnd := WinExist("ahk_class AutoHotkeyGUI") ;;; 7:46 AM 7/3/2014 click-close is broken, switch out of regex, works
;;;*------^ END hs-vsc-cheatsheet (QuickRef) ^------
;;;#*======^ END VSC-RELATED ^======
;;;            ======


'==Editing:,,,'==Navigation:,,,vsco7,Vscode open & recyclewin,,,
Bracket/Brace Matching,Ctrl+Shift+\,,Goto Line,Ctrl+G,,,,,,
Comment: (4key combos),,,Move Line Up/Down,Alt+Up,,,,,,
Uncomment:,"Ctrl+k, Ctrl+c",,Al+Down,,,,,,,
"Ctrl+k, Ctrl+u",,,Page Dn Scroll,Alt+PgDn,,,,,,
Define Key binding,"Ctrl+k, Ctrl+k",,Page Up Scroll,Alt+PgUp,,,,,,
"Find, Select Next Find Match","Ctrl+k, Ctrl+d",,Find,Ctrl+F,,,,,,
Search for file/Pallette,Ctrl+P [type name],,Replace,Ctrl+H,,,,,,
Trim Trailing Whitespace,"Ctrl+k, Ctrl+x",,Find Next,F3,,,,,,
Ctrl+Shift+X,,,Find Prev,Shift+F3,,,,,,
'==Code-related:,,,Select all occur of Find Match,Alt+Enter,,,,,,
Code Formatting (adjust indents etc auto),Shift+Alt+F,,"Find, rgx Toggle",Alt+R,,,,,,
Code Folding,Ctrl+Shift+[,,'==View Layout:,,,,,,,
Ctrol+Shift+],,,Preview toggle (Markdown et al),Ctrl+Shift+V,,,,,,
"Comment, Add Ln","Ctrl+K,Ctrl+C",,Preview side-by-side,Ctrl+K V,,,,,,
"Comment, Remove Ln","Ctrl+K, Ctrl+U",,Problem pane (warnings/errors),Ctrl+Shift+m,,,,,,
"Comment, Toggle Ln",Ctrl+/,,Side by Side Edit,Ctrl + \,,,,,,
"Comment, Toggle Block",Shift+Alt+A,,Explorer window,Ctrl+E,,,,,,
'==Ext:change-case: ,,,Zoom In/Out,Ctrl+= / Ctrl+-,,,,,,
Case - Lcase,Ctrl+T l,,Access Terminal Console,Ctrl+` (like quake),,,,,,
Case - Ucase,Ctrl+T u,,User Settings,"Ctrl+P, sett ",,,,,,
Case - Ucase 1st,Ctrl+T u1,,New Edit Win (3 max),Ctrl + \,,,,,,
Case - Lcase 1st,Ctrl+T l1,,Switch wins,Ctrl+[1-3],,,,,,
Case - Camelcase,Ctrl+t c,,Hide Sidebar,Ctrl+B,,,,,,
Case - TitleCase,Ctrl+T t,,History: Navigate,Ctrl+Tab,,,,,,
Find all references,Shift+F12,,History: Back,Alt+Left,,,,,,
Intellisense Suggest,Ctrl+Space,,History: Fwd,Alt+Right,,,,,,
"Symbol, Goto Def","Select it,  F12",,Rect Select/Column Select,Alt+Shift+Up,,,,,,
"Symbol, Peek (vari, func etc)","Select it, 
Alt+F12 (or context mnu)",,Alt+Shift+Down,,,,,,,
"Symbol, Rename (variable, func etc)","Select it, F2",,Copy Line (dupes below or above),Shift+Alt+Down,,,,,,
Powershell: Open in ISE,Ctrl+Shift+i,,Copy w Contextual Duplicate,"Ctrl+k, d",,,,,,
Debug View,Ctrl+Shift+D,,Shrink / expand selection,Shift+Alt+Left ,,,,,,
Stop,Shift-F5,,Select current line,Ctrl+I,,,,,,
Step (Debug),F10,,Cut Line (no selection),Ctrl+X,,,,,,
Step Into (Debug),F11,,Delete Line,Ctrl+Shift+K,,,,,,
Step Out (Debug),Shift-F11,,Insert Line Below,Ctrl+Enter,,,,,,
,,,Insert Line Above,Ctrl+Shift+Enter,,,,,,
,,,Move Line Down,Alt+Down,,,,,,
,,,Move Line Up,Alt+Up,,,,,,
,,,Insert cursor @ EOL each line selected,Shift+Alt+I,,,,,,
,,,Select all occur of curr selection,Ctrl+Shift+L,,,,,,
,,,Select all occur of curr word,Ctrl+F2,,,,,,

And the current revision can always be found at Github: vsc-cheatsheet.ahk vsc-cheatsheet.csv

What's your revision, Exchange?

11/29/2016: More quick-shared code: This is a tweaked variant of Bhargav Shukla's script that polls all Exchange 2007/2010/2013 boxes in the org, and reports on current Exch patch revision.
Changes I made were pretty minimal: adding pshelp, reformatting layout a tad, adding progress echo's, and renaming the output to a timestamped csv file, named for the script itself (easier to track changes over time, than the default 'results.csv' in your script directory). 

Here's the code

Autohotkey hotkeys for Ecco Pro

11/29/2016: I've committed to actively trying to post more of what I write for code snippets, time-permitting. :D
Today, frustration at a lack of the functional hotkeys I wanted in the old EccoPro outliner, led me to throw together some quick functions in Autohotkey.

This is very sketchy very quick & dirty, simple menu-automation. Gets the job done. I guess at most it'd save someone five mins or so tossing the necessary AHK Send commands together from scratch. :D
Here's the code

Monday, November 21, 2016

Inside Shooter Jennings' Dystopian, Trump-Predicting Concept Album I find myself listening to 'Black Ribbons' a lot these days. I've owned it for 3-4yrs, and though it clearly was relevant _during_ the election run-up, it's actually become even more resonant post-election. I recently picked up the newly-released 2lp+2cd+stack-of-digital-downloads, 'Ultimate Edition', and I'm liking it a alot (no, I don't need the LPs, but there's much more there). Yes it's for completionist fans, but there's a lot there to like if you like the base disc. :D And no, in spite of his father (Waylon Jennings), and Shooter's broad array of legit-'Country' albums, this one's straight up Rock (see the Rollingstone write up below for details).
via Facebook