ConfigMgr – 2 Minute Microwave Style

Genesis – I posted a tweet about someone I know getting stressed at learning Configuration Manager in order to manage 50 Windows devices.  All desktops.  The background is basically that his company had planned on 1000 devices running Windows.  But the end-users, who wield more purchasing power, opted to buy mostly Macbooks.  So the total Windows device count was capped at 50, BUT…. they already approved the purchase of ConfigMgr.  It’s worth noting that the end-users also purchases JAMF (formerly Casper) and set it up in their own secret underground lab, complete with a diabolical German scientist in a white lab coat.  Ok.  That last part isn’t really true, but the JAMF part is true.

So, the “discussion” slid into “okay mr. smarty-pants skatter-turd-brainz, what would you want in a ‘perfect’ ConfigMgr world to address such a scenario?” (again, I’m paraphrasing a bit here)

MC DJam, aka DJammer, aka David the Master ConfigMaster Meister of ConfigMgr, popped some thermal verbals in front of the house and the room went Helen Keller (that means quiet and dark, but please don’t be offended, just stay with me I promise this will make sense soon…)

Yes, I’ve had a few beers.  Full disclosure.  I had to switch to water and allow time for the electric shock paddles to bring my puny brain back online.  That was followed by a brief gasp,”oh shit?! what have I started now?”  Then some breathing exercises and knuckle crackings and now, back to the program…

So, Ryan Ephgrave (aka @EphingPosh) stepped in and dropped some mic bombs of his own.

And just like having kids, the whole thing got out ahead of me way too quick.

So, I agree with Ryan, who also added a few other suggestions like IIS logs, Chocolatey package deployments (dammit – I was hoping to beat him to that one).

So the main thing about this was that this person (no names) is entirely new to ConfigMgr.  Never seen it before, and only gets to spend a small portion of their daily/weekly time with it, due to concurrent job functions.  This is becoming more and more common everywhere I go, and I’ve blogged ad nauseum about it many times (e.g. “role compression”)

What do most small shop admins complain about?

  1. Inventory reporting
  2. Remote management tools
  3. Deploy applications
  4. Deploy updates
  5. Imaging
  6. Customizable / Extendable

These are the top (6) regardless of being ConfigMgr, LANdesk, Kace, Altiris, Solarwinds, or any other product.  All of them seem to handle most of the first 4 pretty well, with varying levels of learning and effort.  But Imaging is entirely more flexible and capable with ConfigMgr (or MDT) than any of the others I’ve seen (Acronis, Ghost, etc. etc. etc.)

ConfigMgr does an outstanding job of all 6 (even though I might bitch about number 6 in private sometimes, it is improving).  ConfigMgr is also old as dirt and battle-tested.  It scales to very large demands, and has a strong community base to back it up in all kinds of ways.  In some respects it reminds me of the years I spent with AutoCAD and Autodesk communities and the ecosystems that developed around that, but that’s another story for another time.

The challenge tends to come from just a few areas:

  1. Cost and Licensing – ConfigMgr is still aimed at medium-to-large scale customers.  The EA folks with Software Assurance, are most often interested and courted into buying it.  Some would disagree, but I set my beer mug down and calmly say “Walk into any major corporate IT office and ask who knows about ConfigMgr.  Then walk into a dentist office, car dealership, or small school system and ask that same question.”  I bet you get a different response.
  2. Complexity – ConfigMgr makes no bones about what it aims to do.  The product sprung from years of “Microsoft never lets me do what I want to manage my devices” (say that with a nasally whiny tone for optimum effect).  Microsoft responded “Here you go bitch.  A million miles of rope to hang yourself.  Enjoy!”  It’s an adjustable wrench filled with adjustable wrenches, because it was designed to be the go-to toolset for almost any environment.  And it’s still evolving today (faster than ever by the way)
  3. Administration – Anyone who’s worked with ConfigMgr knows it’s not really a “part-time” job.  But that’s okay.  It’s part of the “complexity” side-effect.  And rarely are two environments identical enough to make it cookie cutter.  That’s okay too.  Microsoft didn’t try to shoehorn us into “one way”, but said “here’s fifty ways, you choose“.  The more devices you manage with it, the more time and staff it often demands in order to do it justice.  I know plenty of environments that have scaled to the point of having dedicated staff for parts of it like App deployments, Patch Management, Imaging and even Reporting.

None of these are noted with the intention of being negative.  They are realities.  It’s like saying an NHRA dragster is loud and fast.  It’s supposed to be.

Now, add those three areas up and it makes that small office budget person lose control of their bowels and start munching bottles of Xanax.  So they start searching Google for “deploy apps to small office computers” or “patching small office computers cheap as hell” and things like that.

So, ConfigMgr already does the top 6 functions pretty darn well.  So what could be done to spin off a new sitcom version of this hit TV show for the younger generation?

  1. Simpler – It needs to be stupid-simple to install/deploy and manage.  This reaches into the UI as well.  Let’s face it, as much as I love the product, the console needs a makeover.  Simplify age-old cumbersome tasks like making queries and Collections, ADRs and so on.
  2. Lightweight – Less on-prem infrastructure requirements: DPs, MPs, SUPs, RPs, etc.  Move that into cloud roles if possible.
  3. Integrate/Refactor – Move anything which is mature (and I mean really mature) in Intune, out of ConfigMgr.  Get rid of Packages AND Applications, make a hybrid out of both.  Consider splitting some features off as premium add-ons or extensions, like Compliance Rules (or move that to Intune), OSD, Custom Reporting, Endpoint Protection, Metering, etc.
  4. Cheaper – Offer a per-node pricing model that scales down as well as up.  Users should be able to get onboard within the cost range of Office 365 models, or lower.

Basically, this sounds like Intune 3.0, which I’ve also blabbered about like some Kevin Kelly wanna-be futurist guy, but without the real ability to predict anything.

Some of the other responses on Twitter focused on ways to streamline the current “enterprise” realm, with things like automating many of the (currently) manual tasks involved with installation and initial configuration (SQL, AD, service accounts, IIS, WSUS, dependencies, etc. etc.), all of which are extremely valid points.  I’m still trying to focus on this “small shop” challenge though.

It’s really easy to stare at the ConfigMgr console and start extrapolating “what would the most basic features I could live with really come down to?” and end up picking the entire feature set in the end.  But pragmatically, it’s built to go 500 mph and slow down to push a baby stroller.  That’s a lot of range for a small shop to deal with, and they really shouldn’t.  That would be like complaining that the Gravedigger 4×4 monster truck makes for a terrible family vehicle, but it’s not supposed to be that.  And ConfigMgr really isn’t supposed to be the go-to solution for a group of 10-20 machines on a small budget.  Intune COULD be, but it’s still not there yet.  And even it is already wandering off the mud trail of simplicity.  It needs to be designed with a different mindset, but borrowing from the engine parts under the ConfigMgr hood.

Maybe, like how App-V was boiled down and strained into a bowl of Windows 10 component insertions for Office 365 enablement, and dayam that was a weird string of nouns and verbs, they could do something similar with a baked-in “device management client” in a future build of Windows 10.  Why not?  Why have to deploy anything?  They have the target product AND the management tool under the same umbrella (sort of, but I heard someone unnamed recently moved from the MDT world into the Windows 10 dev world, so I’m not that far off).

Does any of this make sense?  Let me know.

 

Advertisements

Windows 10 Soup Sandwiches

Version 2.1 (I lost Version 1.0 somehow, from the old blog, but it was focused on Windows 7, 8.1 anyway)

An ad hoc collection of wine-infused recipes to help smoosh Windows 10 like a ball of clay, or like a soggy sandwich.

Disable Windows Firewall (MDT, SCCM)

Disable Windows Firewall (GPO)

Disable Windows Defender (GPO)

Deploy .NET Framework 3.5 with Feature on Demand (GPO)

Enable Controlled Folder Access (GPO)

Create Shortcuts on Desktop, Start Menu (GPO)

Disable IPv6 (GPO)

Configure, Start, Stop Windows Services (GPO)

Block and Disable Cortana (GPO)

Set default Web Browser (GPO)

Waste Time Customizing the Start Menu and Taskbar (GPO, Script, MDT, SCCM)

Configure OEM Support info and Company Logo on Support page (GPO)

Block Windows Store and Store Apps (GPO)

Remove Store Apps during Imaging (MDT, SCCM, etc.)

Remove OneDrive from File Explorer (GPO)

Show File Extensions in File Explorer (GPO)

Show Hidden Folders and Files in File Explorer (GPO)

Show File Explorer Menu Bar (GPO)

Expand to Current Folder in File Explorer (GPO)

Customize and Push BGInfo to Desktops (script)

Customize and Push BGInfo to Desktops (GPO)

Destroy and Annihilate SMBv1 by any means necessary

TLS Configuration Guidelines (hotfix, registry, GPO)

Create and Configure a Group Policy Central Store

Updates 2.1

Add Domain User to Local Administrators Group (GPO)

Add Domain Users to Remote Desktop Users on Servers (GPO)

Modify Registry Key Permissions on Domain Computers (GPO)

Create Scheduled Tasks using Group Policy (script, GPO)

Configure PowerShell Settings using Group Policy (GPO)

Prompt for Computer Name / OSD Variable in Task Sequence (script)

Mass Upgrade Windows 10 using PowerShell (script)

Replicate MDT Boot Images to multiple WDS/PXE servers (script)

Set Google Chrome as Default Browser (GPO)

More to be added (version will be updated too)

The IT Professional’s PlayBook

cant_crash

So, you’re growing tired of trying to convince clueless managers about approving your requests to improve IT operations.  Maybe you’ve been doing it like this…

You: “Good morning sir/ma’am.  If we spend some money on upgrading our WAN links, we can get ahead of our backlog of projects by moving all our deployment processes out of the slow lane.”

Them: “I don’t know who WAN links is, but it sounds like Chinese food.  Go away.”

Maybe you should try rehearsing these tried-and-tested proven methods:

You: “Good morning sir/ma’am.  I ran the numbers and found we could save money by upgrading our WAN links.  A one-time cost of $14k would eliminate our need for additional infrastructure, license upgrades, controlled spaces, and lower power and cooling costs at all our remote facilities.  That alone would reduce our infrastructure costs by $5,000 per year, and cut our deployment times from weeks to hours.  The cost could be a tax deduction and we’d recoup that in less than three years.  And, are you losing weight?”

Them: “Yes, I’ve been working on my chip shot all weekend and I think it’s getting me in shape again.  I like you Bob….”

You: “It’s Ben.  Sir.”

Them: “Right, Bill, anyhow, it sounds like you think this WAN links guy is really that good?  Ok. I’ll approve him, if you think he can help with our taxes.”

Another example…

You: “Good morning sir/ma’am. I ran the numbers and it turns out we’re spending 150 hours per week installing apps by hand.  That’s 5 technicians over 150 hours at $7.50 per hour, oops, I mean $5.50 per hour.  That comes to $8,250 per week, and a backlog on other support requests in the queue.  We could spend a quarter of that packaging or wrapping the installers and procuring a product to help deploy them remotely.”

Them: “I like that idea.  We can then cut 3 of those technician’s jobs and reduce our burden rate at the same time!  Great work Bill!  You can call me Mike.”

You: “Actually, uh, no disrespect, but I don’t think we should cut…”

Them: “Consider it done Bobby!” (strong pat on the back)

And another…

You: “Good morning Ma’am.  I would like to request approval to replace Acronis and Ghost and all our other imaging tools with Microsoft Deployment Toolkit.  It’s free.  It’s very customizable.  It would allow us to reduce our image library from 43 individual images to 1 with a task sequence.  And it’s been around for years and battle tested.”

Them: “That sounds interesting.  But I spoke with Sam, who dates my daughter, and he says it’s better to maintain 43 image files every month because the extra care and feeding makes it an important job.  And he graduated from a 2 year tech school.  And he dates my daughter, so you know how that goes.  But really, Bobby, I appreciate your concern.”

You: “It’s Ben.  But thank you.”

And finally…

You: “Good morning Ma’am.  I heard about the big tax changes and how we’re going to save $20 million this year alone.  I was wondering if you had a few minutes to discuss some ideas I have about infrastructure improvements to help streamline our operations and save money?”

Them: “I’m glad you asked.  Yes, but it’s actually around $22 million.  And we already have plans to apply that towards automation, to reduce our dependency on human labor.  Oh, and what was your name again?”

Or, you could just consider a career in the legal or medical field.

ConfigMgr Script Deployments

Introduction

The following caffeine-induced mess was the result of a quick demo session conducted with a customer about the use of the new “Scripts” feature in Configuration Manager 1710+.  There are other examples floating about the Internet which are equally good, if not better, but just finished unpacking, doing laundry, walking the dog, and needed something to do.

What is it?

The new “Scripts” feature allows you to perform “real-time” execution of PowerShell scripts against a Device Collection or individual members of a Device Collection.  It is worth noting that you cannot deploy to individual Devices from within the Devices node of the console, it only works from within, and beneath, the Device Collections node.  The script is executed on the client remotely, so the shell context is local to the remote client.  This means if you instruct the code to look at C:, it will be looking for C: on the remote device(s).

What Can You Use This For?

The answer to this question depends on your intentions and personality.  If you’re an eager workaholic, the sky is the limit.  If you’re a diabolical evil bastard with malicious thoughts, the sky is also the limit.  Is this potentially dangerous?  Yes.  But EVERYTHING in life is potentially dangerous, even brushing your teeth and going for a walk.  So weigh your risks and proceed accordingly.  I’ve provided a few examples below to illustrate some possible use cases.  Read the disclaimer before attempting to use any of them.

Preliminary Stuff

The first thing you need is to have Configuration Manager 1710 or later.  The second thing you need is to check the box to “Consent to use Pre-Release features” (Administration / Site Configuration / Sites / Hierarchy Settings / General tab).  The third thing you need (for testing anyway) is to un-check the box right below it that says “Do not allow script authors to approve their own scripts”.  If you do not un-check that option, you will be able to create script items, but you won’t be able to deploy them.

The next step is to enable the pre-release feature “Create and run scripts”:  Administration / Updates and Servicing / Features.  Right-click “Create and run scripts” and select “Turn on”. Once you’ve enabled the feature, the first time at least, you may need to close and re-open the console.  This is not always the case it seems, but I have seen this most of the time.

The Process

Create the Script

Once everything is enabled and ready to go, you should be ready to destroy, I mean, ready to begin.

  1. Select “Software Library”
  2. Select “Scripts”
  3. Select “Create Script” on the ribbon menu at top-left (or right-click and choose “Create Script”)
  4. Provide a Name
  5. Import or Paste the script code (only PowerShell is supported as of now)
  6. Tip: Make sure your script code returns an exit code of some sort to indicate success/fail to ConfigMgr (example: Write-Output 0)
  7. Click Next, Next, and Close

Approve the Script

  1. Right-click on the Script item
  2. Select Approve/Deny
  3. Click Next (I still don’t know why, but you have to, at least for now)
  4. Choose “Approve” or “Deny” and enter an “Approver comment”
    NOTE: Many organizations have procedures that require documenting approval authorization directly on the change items involved with a given change.  And to change that would require changing the way you manage change, which would require change management to effect the change and change the way you’re changing things.
  5. Click Next, Next and Close

Deploy the Script

  1. Select Assets and Compliance
  2. Select Device Collections
  3. Navigate to an appropriate device collection
    1. To deploy the script to all members, right-click on the Collection and select “Run Script”
    2. To deploy the script to individual members, select ‘Show Members’, right-click on each member (resource) and select “Run Script”
  4. Choose the approved Script from the library listbox, and click Next
  5. Click Next again (safety switch, good idea!)
  6. Watch the green bar thing slide across the progress banner a few times
  7. When it’s done, review the pretty Bar Chart.

    Select the “Bar Chart” drop-down to change reports to “Pie Chart” or “Data Table” display.
  8. Change the “Script Output” selection to “Script Exit Code” to view results by exit code values.

Parameters

You can include parameter inputs within a script by including the param(…) block at the very top.  As soon as you type in param ( and then enter a variable name, like $MyParam, you should notice the ‘Script Parameters’ node appear in the left-hand panel below “Script”.  Remember to close the parentheses on param ().  This adds a new set of options that you’ll see when you click Next in the Create Script form.

This allows you to make scripts more flexible at runtime, so you can provide specific inputs as needed, rather than making a bunch of duplicate scripts with only minor variations between them.

Examples

So, here are just a few basic examples for using this feature.  You can obviously apply more brain juice to this and concoct way-more amazing awesomeness than this stuff, but here’s a taste.  These are provided “as-is” without any warranty or guarantee of fitness or function for any purposes whatsoever.  The author assumes no liability or responsibility for use,  or derivative use, of any kind in any environment on any planet in any universe for any reason whatsoever, notwithstanding, hereinafter, forthwith, batteries not included, actual results may vary, void where prohibited or taxed, past results do not indicate future performance.

Collect Client Log Files

# Collect-ClientLogs.ps1
# Modify $TargetPath to suit your needs
$SourcePath = 'C:\Windows\CCM\Logs'
$TargetPath = '\\CM01.contoso.com\ClientLogs$\'+$($env:COMPUTERNAME)
if (!(Test-Path $TargetPath)) { mkdir $TargetPath }
robocopy $SourcePath $TargetPath *.log /R:2 /W:2 /XO /MT:16
if (Test-Path $TargetPath) {
  Write-Output 0
}
else {
  Write-Output -1
}

Refresh Group Policy

# Refresh-GroupPolicy.ps1
GPUPDATE /FORCE
Write-Output 0

Modify Folder Permissions

# Set-FolderPermissions.ps1
param (
  [parameter(Mandatory=$True)]
  [ValidateNotNullOrEmpty()]
  [string] $FolderPath
)
if (Test-Path $FolderPath) {
  ICACLS "$FolderPath" /grant 'USERS:(OI)(CI)(M)' /T /C /Q
  Write-Output 0
}
else {
  Write-Output -1
}

Summary

If you haven’t looked into this feature yet, I strongly recommend you give it a try IN A TESTING ENVIRONMENT.

How’s my driving?

Did I miss anything?  Did you find any bugs?  Let me know!

Thank you for reading!

My First Day as Microsoft CEO

Greetings,

First of all, thank you all for being here today, in my 800 bedroom cabin atop the humble foot hill called Mt. Everest. I hope your parachutes all provided a smooth arrival?  It is an honor having you here to listen to me pontificate about my vision for Microsoft, now that I’ve been voted Ultimate Excecutive Officer, or UEO. I plan to outline changes which I feel will help launch our fine organization to the “next level” (air quotes).

Before I continue, I’d like to take a moment to thank Satya for all his hard work.  He exemplifies all of the qualities and traits a CEO and leader should have, of which I have none.  But that’s beside the point.  Actually, he doesn’t yet know I’m the new CEO or UEO, he thinks the plane he’s on is taking him to meet Oprah for an interview, but I paid the pilot to fly in circles over some place near Antarctica, and I had all the door locks changed.  Please thank Satya, if you ever see him again, for the open bar.

So, first things first:

As of today, all former prefixes like “Active”, “Live”, “One”, “Visual” and so on are being changed to “Awesome”.  So it’s Awesome Directory, Awesome Studio, and Awesome Drive.  Get used to it.  And from now on, no product will have a name that takes more than 5 syllables to pronounce.

Licensing is going to change as well.  A new program called “4th grade review” is going live today.  We will randomly-select a 4th grade student in a random school in Kenya.  They will read the EULA to their classmates, and if even one student looks confused, they get to rewrite it.

Servicing channels are going to be renamed yet one more time.  They went from “Current Branch” to “Semi-Annual blah blah”.  But now we’ll have the following names:

  • “I hate change!” (formerly LTSB/LTSC) is now once every 5 years
  • “What’s the hurry?” (formerly CBB/Semi-Annual) is now once every year
  • “I kind of miss getting updates” (formerly CB/Semi-Annual Targeted) is now twice a year
  • and “Where the fuck are my updates?!” (formerly Insider Preview) is now every week

Changes to Windows

Windows 10 “Enterprise” SKU images will no longer include games or media services apps.  In fact, we won’t even allow those to be installed.  If you want them, buy the Home edition.  The Professional edition will offer it as an option, but not installed by default.

The Control Panel will be entirely migrated into Settings by the time I leave the stage and run out the back door.

We have a new edition called Windows “In-Your-Face” edition, which will be entirely FREE as long as you agree to so much telemetry and advertisements that you might forget what apps you were trying to launch.

All application installations will have to be MSI, C2R, App-V or portable .Exe only.  No more legacy garbage.  Stubborn app vendors can suck it.

Other Products

Office 365 is now going to be entirely browser-based.  No more installations.  Every single feature you had in the C2R and MSI packages will be in the new browser-app.  You’re welcome.

A new driver “service” (air quotes again) is being released.  The code name is Device Optimization Universal Configuration Hardware Emulation, or just DOUCHE for short.  All vendor drivers will have to check into our portal and we will manage a true PnP experience without any manual intervention required, ever.  As in never, or ever, or which ever never you ever never prefer.  Vendors can no longer install drivers without coming through us.  PnP is now going to work the way we envisioned it should work, back when we were eating mushrooms atop some mountain in Chile.  Good times (drifts off with a dazed look)…. Oh, yeah, it’ll be like a toaster.  Plug it in, and watch it burn the toast.

More 

All versioning will be consistent across all products from now on.  No more 10 for this, 2017 for that, or 2.3.5550.0000.1000 for the other. There’s going to be one version format only.  We haven’t settled on it yet, but whoever wins the beer funnel challenge gets to pick it.

We signed a deal with Jeff B. to get Alexa installed on every Windows SKU.  We will be including an app that lets you pay to watch Alexa and Cortana fight in a 3D virtual cage of death, only with our Hololens product, obviously, and all proceeds going to charity.

SQL Server is now renamed to Awesome Database Server.

All external web portals like Fast Track, Partner, Azure, O365, and so on are being merged into one web portal and one credential set across all of them.  And speaking of credentials, you can now open multiple Azure instances in a single browser using separate credentials.  You’re welcome.

We will also start a new customer loyalty program next week.  The plan is simple.  Once a day, the first person to show up in front of a Microsoft store with a bullhorn, shouting “Java sucks and so does Flash” gets a t-shirt.

I’d like to continue with more, but I was just told that Satya’s plane is on the way back so I have to meet my Uber ride out back.  Sorry I don’t have time for questions. Thank you!

Finally! Dave’s Master’s Class on Programming Skills

You’ve waited years, in fact, decades, for this once-in-a-lifetime chance to peer inside the vast and empty space of my mind to gain invaluable insight to insightful and invaluable insights behind expert-level coding mastery! Say that ten times.

Well, here it is!

Open your favorite code editor and paste in whatever code you feel like working with right now.  Let’s get started!

Preparation

  • It’s important to keep a can of compressed air nearby in order to cool down the keyboard, as it will likely reach unbearable temperatures
  • I also recommend a small bowl filled with ice cubes to cool your fingers down after each lesson.
  • Liquefied Caffeine
  • Sugary ingestibles
  • Ear buds or headphones
  • Ear plugs for anyone else in the room

Lesson 1 – Code Formatting

  1. Press SHIFT+CTRL+[>] and DEL
  2. Press SHIFT+CTRL+[>] and DEL
  3. Press SHIFT+CTRL+[>] and DEL
  4. Press SHIFT+CTRL+[>] and DEL
  5. Press SHIFT+CTRL+[>] and DEL
  6. Press SHIFT+CTRL+[>] and DEL
  7. Press SHIFT+CTRL+[>] and DEL
  8. Press SHIFT+CTRL+[>] and DEL
  9. Press SHIFT+CTRL+[>] and DEL
  10. Press SHIFT+CTRL+[>] and DEL
  11. Press SHIFT+CTRL+[>] and DEL
  12. Press SHIFT+CTRL+[>] and DEL
  13. Press SHIFT+CTRL+[>] and DEL
  14. Press SHIFT+CTRL+[>] and DEL
  15. Press SHIFT+CTRL+[>] and DEL
  16. Press SHIFT+CTRL+[>] and DEL
  17. Press SHIFT+CTRL+[>] and DEL
  18. Press SHIFT+CTRL+[>] and DEL
  19. Press SHIFT+CTRL+[>] and DEL
  20. Press SHIFT+CTRL+[>] and DEL
  21. Press SHIFT+CTRL+[>] and DEL
  22. Press SHIFT+CTRL+[>] and DEL
  23. Press SHIFT+CTRL+[>] and DEL
  24. Press SHIFT+CTRL+[>] and DEL
  25. Press SHIFT+CTRL+[>] and DEL
  26. Press SHIFT+CTRL+[>] and DEL
  27. Press SHIFT+CTRL+[>] and DEL
  28. Press SHIFT+CTRL+[>] and DEL
  29. Press SHIFT+CTRL+[>] and DEL
  30. Press SHIFT+CTRL+[>] and DEL
  31. Press SHIFT+CTRL+[>] and DEL
  32. Press SHIFT+CTRL+[>] and DEL
  33. Press SHIFT+CTRL+[>] and DEL
  34. Press SHIFT+CTRL+[>] and DEL
  35. Press SHIFT+CTRL+[>] and DEL
  36. Press SHIFT+CTRL+[>] and DEL
  37. Press SHIFT+CTRL+[>] and DEL
  38. Press SHIFT+CTRL+[>] and DEL
  39. Press SHIFT+CTRL+[>] and DEL
  40. Press SHIFT+CTRL+[>] and DEL
  41. Press SHIFT+CTRL+[>] and DEL
  42. Press SHIFT+CTRL+[>] and DEL
  43. Press SHIFT+CTRL+[>] and DEL
  44. Press SHIFT+CTRL+[>] and DEL
  45. Press SHIFT+CTRL+[>] and DEL
  46. Press SHIFT+CTRL+[>] and DEL
  47. Press SHIFT+CTRL+[>] and DEL
  48. Press SHIFT+CTRL+[>] and DEL
  49. Press SHIFT+CTRL+[>] and DEL
  50. Press SHIFT+CTRL+[>] and DEL

Lesson 2 – Refactoring

  1. Highlight a line of code
  2. Press CTRL+C
  3. Click on the next empty line
  4. Press CTRL+V and ENTER
  5. Press CTRL+V and ENTER
  6. Press CTRL+V and ENTER
  7. Press CTRL+V and ENTER
  8. Press CTRL+V and ENTER
  9. Press CTRL+V and ENTER
  10. Press CTRL+V and ENTER
  11. Press CTRL+V and ENTER
  12. Press CTRL+V and ENTER
  13. Press CTRL+V and ENTER
  14. Press CTRL+V and ENTER
  15. Press CTRL+V and ENTER
  16. Press CTRL+V and ENTER
  17. Press CTRL+V and ENTER
  18. Press CTRL+V and ENTER
  19. Press CTRL+V and ENTER
  20. Press CTRL+V and ENTER
  21. Press CTRL+V and ENTER
  22. Press CTRL+V and ENTER
  23. Press CTRL+V and ENTER
  24. Press CTRL+V and ENTER
  25. Press CTRL+V and ENTER
  26. Press CTRL+V and ENTER
  27. Press CTRL+V and ENTER
  28. Press CTRL+V and ENTER
  29. Press CTRL+V and ENTER
  30. Press CTRL+V and ENTER
  31. Press CTRL+V and ENTER
  32. Press CTRL+V and ENTER
  33. Press CTRL+V and ENTER
  34. Press CTRL+V and ENTER
  35. Press CTRL+V and ENTER
  36. Press CTRL+V and ENTER
  37. Press CTRL+V and ENTER
  38. Press CTRL+V and ENTER
  39. Press CTRL+V and ENTER
  40. Press CTRL+V and ENTER
  41. Press CTRL+V and ENTER
  42. Press CTRL+V and ENTER
  43. Press CTRL+V and ENTER
  44. Press CTRL+V and ENTER
  45. Press CTRL+V and ENTER
  46. Press CTRL+V and ENTER
  47. Press CTRL+V and ENTER
  48. Press CTRL+V and ENTER
  49. Press CTRL+V and ENTER
  50. Press CTRL+V and ENTER

Lesson 3 – Expert Refactoring

  1. Place cursor at beginning of first line of code
  2. Press TAB
  3. Press [Down Arrow]+[Home]+TAB
  4. Press [Down Arrow]+[Home]+TAB
  5. Press [Down Arrow]+[Home]+TAB
  6. Press [Down Arrow]+[Home]+TAB
  7. Press [Down Arrow]+[Home]+TAB
  8. Press [Down Arrow]+[Home]+TAB
  9. Press [Down Arrow]+[Home]+TAB
  10. Press [Down Arrow]+[Home]+TAB
  11. Press [Down Arrow]+[Home]+TAB
  12. Press [Down Arrow]+[Home]+TAB
  13. Press [Down Arrow]+[Home]+TAB
  14. Press [Down Arrow]+[Home]+TAB
  15. Press [Down Arrow]+[Home]+TAB
  16. Press [Down Arrow]+[Home]+TAB
  17. Press [Down Arrow]+[Home]+TAB
  18. Press [Down Arrow]+[Home]+TAB
  19. Press [Down Arrow]+[Home]+TAB
  20. Press [Down Arrow]+[Home]+TAB
  21. Press [Down Arrow]+[Home]+TAB
  22. Press [Down Arrow]+[Home]+TAB
  23. Press [Down Arrow]+[Home]+TAB
  24. Press [Down Arrow]+[Home]+TAB
  25. Press [Down Arrow]+[Home]+TAB
  26. Press [Down Arrow]+[Home]+TAB
  27. Press [Down Arrow]+[Home]+TAB
  28. Press [Down Arrow]+[Home]+TAB
  29. Press [Down Arrow]+[Home]+TAB
  30. Press [Down Arrow]+[Home]+TAB
  31. Press [Down Arrow]+[Home]+TAB
  32. Press [Down Arrow]+[Home]+TAB
  33. Press [Down Arrow]+[Home]+TAB
  34. Press [Down Arrow]+[Home]+TAB
  35. Press [Down Arrow]+[Home]+TAB
  36. Press [Down Arrow]+[Home]+TAB
  37. Press [Down Arrow]+[Home]+TAB
  38. Press [Down Arrow]+[Home]+TAB
  39. Press [Down Arrow]+[Home]+TAB
  40. Press [Down Arrow]+[Home]+TAB
  41. Press [Down Arrow]+[Home]+TAB
  42. Press [Down Arrow]+[Home]+TAB
  43. Press [Down Arrow]+[Home]+TAB
  44. Press [Down Arrow]+[Home]+TAB
  45. Press [Down Arrow]+[Home]+TAB
  46. Press [Down Arrow]+[Home]+TAB
  47. Press [Down Arrow]+[Home]+TAB
  48. Press [Down Arrow]+[Home]+TAB
  49. Press [Down Arrow]+[Home]+TAB
  50. Press [Down Arrow]+[Home]+TAB

Lesson 4 – Super Expert Uber Refactoring

  1. Click the little [+] code-folding handle to collapse a bunch of code
  2. Click the tool icon to comment the entire block
  3. Press CTRL+N (new file)
  4. CTRL+V
  5. Repeat for every code block
  6. After every code block is in its own file, reverse the process and paste each file contents back into the original file
  7. Repeat steps 1 through 6 about 5,000 times

Summary

Repeat the above skill drills 5,000 times every day for the next 5,000 days and you’ll be ready to apply for that fantastic junior entry level programmer analyst position you’ve been waiting for!  Don’t wait!  Get started today!

Windows 10 Secrets: Undocumented Hotkeys

The next time you want to impress someone at a social gathering, wait until they’ve finished rambling about how much they know about Windows 10. Then set your drink down calmly, smile and chuckle “That’s cute. I remember when I first learned those tricks. Years ago.  Before I became a man.” (tip: insert woman here, if appropriate)

Then hit them with these proven hotkey secrets:

Un-stick any frozen application

Press CTRL+ALT+Space+ smack the shit out of the keyboard. Any keys will do.

Recover a frozen web form

Press CTRL+ALT+DEL then grasp the keyboard in both hands and forcefully rip the USB connector loose.  Bonus tip: scream as loud as possible while removing the keyboard to speed up the recovery.

Automatically Rebuff an Annoying Facebook Comment

Press CTRL+ALT and press your face against the display screen and scream as loud as you can “you stupid MF-er!!!

Remember, computers don’t kill people.  People kill people… and their computers.