Family Fun with Super Mario Party on the Nintendo Switch

My family has been playing Mario Party together since our children were big enough to hold a controller. I firmly believe that families who play together, stay together; some of our favorite memories are centered around this title. We’ve been playing the newest edition all weekend, (yeah for cold rain) read-on to find out how it holds up now that the kids are in their teens and accomplished gamers in their own right.

Choose_your_game

If you’ve never played a Mario Party game before you should watch a round on YouTube or Twitch they can be very entertaining. The game is a melding of traditional “roll the dice and pick your space” board games combined with multi-player mini-games as events that are triggered when you land on certain spots. You make your way around the game board to collect coins and stars, the player with the most wins. There is of course far more to it than that, but a fuller description would be boring to read.

Many a gamer disliked the car in Mario Party 10 on the Wii U. It forced the players to move together and removed the strategic element that most board games thrive on. Neither the mini-games nor the board game is strong enough on their own. Thankfully Nintendo has realized that and added path choice on a multi-directional board back to the title. In this version your decisions regarding the route your character takes are more important than ever.

GarmePlay

You’ll need a Joy-Con for each player, your Switch came with two, but if you want to play with four players, you’ll need an extra set. At sixty to eighty dollars for a pair, this can be expensive. Especially if you have no other reason to own an extra pair. The controllers work really well as long as you stay in bluetooth range. Keep in mind the signal runs on the same 2.5 Ghz wave length that Wi-Fi does, so the range can be shorter than the listed 33 feet due to interference. Look in your router’s settings for an option to get along better with bluetooth, some wireless systems have the setting and some don’t.

The mini games are easy in practice or when playing on your own against the AI, but challenging when playing against human opponents. They can make for some spirited play if you are with a competitive group like ours. The bad luck and good luck spaces on the board along with special abilities and random rewards keep the board play fun as well. I expect our family will get lots of entertainment hours out of the game this winter. I liked playing with the kids when they were younger better, I could win that way. Now they are able to beat me seemingly at will, I’m not sure how those tables turned. Apparently this makes the game even more fun for them. Shouts of “Yes, I destroyed dad” were ringing through my living room only moments ago.

If you liked previous Mario Party titles but didn’t care too much for 10 or, if you’re from a board game generation and looking to do something with your video game playing children/grand-children, I think you’ll enjoy Super Mario Party. Happy gaming and remember it’s not the motion controls, it’s just you!

Mario_Gang

Simplified note taking with Plumbago

I spend hours working in Microsoft OneNote everyday.  It’s my go to tool for planning, documentation, and notes. I’ve been using it since the beginning and have evangelized its benefits far and wide. If OneNote has a weakness (not saying it does LOL) it probably lies in being too complicated for some jobs.

Enter Plumbago, from the Microsoft garage. Rather than act as a full digital note solution, Plumbago aims to replicate the paper notebook experience. Removing many of the complications you find in OneNote or Evernote makes the app much easier to use. There is a very small learning curve. A short video that plays the first time you open the program explains everything that you need to know.

Basically, you create a new notebook for each category of notes or sketches that you need. Each time that you make a notebook you can choose the type of pages that it will contain. Ruled, graphed, music, and more templates are available.

Notebooks

Input options are controlled via a simple wheel selector. Pick your tool, color, and stroke size with a few taps and start drawing or writing. The wheel remembers your previous choice for each tool. The sparse tool bar will let you insert pictures, see all of the pages in your notebook, or switch between draw and navigation modes. You can also export your pages to a PNG or PDF for easy sharing.

That’s all there is to it folks, which is the point of the application Keep it simple. If OneNote or Evernote seem overly complicated for your needs give Plumbago a try.

Notebook page

The Apple Watch series 4

The last time I wrote about smart watches I ended up liking the Samsung Gear 3. I purchased the new Apple watch for my wife and we’ve spent the last few days setting it up and putting it through its paces. Have I changed my mind?

She’s upgrading from a series 0 (original) so the differences are as drastic as they can be. The new watch is 40mm vs. the 38mm of the orignal but you can barely tell they’re not the same size. The corners on the series 4 are rounded off at a shallower angle and this hides the small size difference. Surprisingly, her custom leather watch band from the 38mm fit on the 40mm without any issue.

The biggest improvement is that the screen than has significantly more viewable space. The extra size makes things like text messages and certain views in the calendar much easier to read and the numbers on many of the watch faces easier to make out in a quick glance. You can also add more complications.

The new Apple Watch is noticeably faster and the speed boost is most appreciated when opening complex apps that deal with lots of data like the text messaging app or Apple pay. There’s almost no delay between tapping the icon and the app opening. I imagine in the months to come we’ll see apps that can take advantage of the added processing power.

Apple has added haptic feedback to the crown so that you feel it “click” when it rotates. This is a more important update than you might think. I know it impressed me more than expected. Operating the device is more precise when you have some sense of how far you’ve rotated the knob. It’s like the difference between typing on-screen and on a keyboard.

She got the Cellular version of the watch and something we didn’t expect was how much louder the speaker is. You can easily hear music or calls, in fact my wife had to turn the volume down from its default because it was uncomfortably loud. The microphone pics up your voice from almost anywhere. There’s no need to walk around talking into your wrist a’la Knight Rider.

Michael-knight-watch

I expect the EKG feature to be fantastic when it is activated later this year, watch for an article on that (puns are fun). The heart rate sensor is much more accurate than the orignal is. The podcast app is a great addition. The device has finally evolved to something that lets you feel comfortable running to the store or going for a run without your phone. The fall detection and alerting is a great safety feature for people that are home alone.

My only major gripe is that Apple still doesn’t allow 3rd party watch faces. Don’t get me wrong they make some great ones, but for comparison there are some 60,000 available for my Gear 3. Overall, I’m impressed but I won’t be ditching my Samsung for one anytime soon.

Things to do with your Surface Go’

So you’re the proud owner of a shiny new Surface Go, now what? Besides checking your email and surfing the web, what else can you do with the little powerhouse? Of course, you can install the ubiquitous PC applications, MS Office, Photoshop, and what have you. This article is more about doing things you may not know about or considered.

Have you ever wished there was a font that matched your handwriting? Mine is atrocious, I’m always surprised that a computer can read it. My spouse’s on the other hand, is quite elegant. If you write nicely like she does, Microsoft has just the app for you. Download the Microsoft Font maker from the Microsoft store and with a few simple steps your handwritings will be digitized and turned into a font that you can use anywhere.

Fontmaker

It’s time to unleash your inner artist. The Surface pen is one of the most sophisticated digital marking instruments you can purchase. It works incredibly well on this tablet. I have several digital art systems, but the Surface Go is my current favorite. It’s light weight, responsiveness, and accuracy are ideal for drawing and painting anywhere. There are a plethora of different artistic apps in the store. If you’re just starting out I recommend Sketchbook. It’s a good balance of power and ease of use.

langrylink

It seems like every time that I sit down to get my game on, one of my family members wants to watch a movie or something on the home entertainment system. You can use your Surface to play your Steam, Xbox, or Playstation games through their respective streaming services. For Playstation or Xbox games you’ll need to pair a Bluetooth controller. The Xbox app is pre-installed, open it and click the icon on the right hand menu that looks like an Xbox. Follow the prompts to get the service running. If you have a Playstation, download the Remote Play app and follow the on-screen instructions. To stream Steam games from your gaming rig, just install the Steam client app on your Surface and login with the same account. Select a game in your library and pick stream.

Steam_Stream

Most of the whiteboards in my office are old crusty things with the shadows of meetings past bleeding through. Skip the dying markers and eraser arm, use Microsoft’s Whiteboard app instead. Download it from the store and you’ll be collaborating in no time. Features like ink to shapes and ink to tables, help ensure that your art skills don’t derail your ideas. The “invite people” option works when you’re all in the same room or in different countries.

Whiteboard

Hopefully I’ve given you some ideas to think about. The device’s diminutive size and power make it an excellent tool for data consumption and productivity. The Microsoft Store is full of applications that are useful, but don’t forget that if you convert from S mode, all windows software becomes available.

WSUS 2016 Client Connectivity Troubleshooting

WSUS is usually pretty straight forward. Install the service on a server and configure a GPO to point your server’s and workstation’s Windows Update clients at it. I like to use Server Side targeting and a series of scripts to get the most flexibility from it.

Every once in a while you’ll end up with machines that won’t connect to the WSUS server for various reasons. For the most part the only feedback you receive are some hex error codes. You can look them up on-line but they generally fall into either connectivity or software issues. Rather than spend a lot of time researching each individual code I follow my own troubleshooting steps until I get to the culprit.

  • Connectivity – Many of the problems I have run into were caused by the client and sever losing contact with each other.
    • Try to telnet from your client machine to your server’s ip address on port 8530 or 8531 if you’re encrypting traffic. If you see a blinking cursor the port is open, a failed to connect message means you should start checking firewalls.
    • If you don’t have telnet installed, try PowerShell’s Test-connection. Example: Test-NetConnection -Port 8530 -ComputerName WSUSSERVER
    • The connection from client to server is a type of web request and occasionally proxy servers and other security systems get in the way. Open a browser on your client machine and go to http://wsus.server.fqdn:8530/ClientWebService/client.asmx or https://wsus.server.fqdn:8531/ClientWebService/client.asmx you should land on the simple auth service page.
      • If the port is open but the page won’t load, open an admin console window and run: netsh winhttp reset proxy.
  • Software –  If your client is able to talk to the server then your issue is with the software itself. Fear not, there are still several fixes you can employ.
    • Check the logs. On the client computer you’ll find the log @ C:\Windows\Windowsupdate.log there’s a bunch of data but use the find function of your app to search for error and failed. You may find the cause of your issue.
    • Windows update also writes some errors to the Application and System even logs.
    • If all else fails, start over. Occasionally the client and server disagree about what patches are installed or something has been corrupted. Follow the steps below to completely reset the problem machine.
      • Open the WSUS console, right click on the computer and delete it.
      • On the client computer:
      • Stop the Windows Update Service
      • Delete the contents of the C:\Windows\SoftwareDistribution folder
      • Open the registry and remove the contents of the HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate key
      • Open an Administrator CMD or PowerShell prompt and type: gpupdate /force
      • Start the Windows Update Service
      • In the Administrator CMD or PowerShell prompt type: wuauclt /detectnow
      • Run windows update

Yonder The Cloud Catcher Chronicles. The best Switch game you’ve never heard of.

While wondering around one of our local game stores (Vintage Stock) with my family, I saw a game that hadn’t heard of before. I picked it up to read the summary on the case and was given a vague description of an island rather than an idea of the game play. I pulled out my phone and spent a few minutes researching on-line but didn’t find a lot of information.

The single review that I did find said the game was a cross between Zelda Breath of the Wild, Animal Crossing, and Harvest moon. So I took a chance that my wife and daughter would enjoy it and picked it up; they both love all three of those games. It turns out that description is accurate but I would add Stardew Valley to the list. The game takes place in on a whimsically cute island that is divided into 8 environments. There are story based missions, farming, collecting, mining, fishing, and crafting but no actual combat. There are people to talk to, a fairy sidekick, animals to herd and more.

20180908_213513

The graphics are good, the music and sound effects are great and the controls are well thought out. The game is text-based with voiced emotions like the older Zelda games. To be honest I haven’t even had a chance to play it myself. I’ve been watching my wife play and she won’t share. Needless to say they like it. I might even give it a try and I don’t usually like farming/collecting games.

You can fully customise your character at the beginning of the game. As you play you’ll find dye kits, accessories like glasses, and more to enhance your avatar with your own personal flair.

20180908_213116

The game also has seasons and a full day/night cycle.

20180908_214410

I expect to be seeing this on my TV screen and hearing it comming from various Switches in my househould for months to come. If you like farming and mining, social interactivity, and open adventure but don’t care for combat, this is the game for you. At the time of this writing you could get the game for $39.99 on cartridge or as a $30.00 download from the Nintendo store.

The 2018 Microsoft Surface Go

As most of my readers know, I am a fan of tablet computers. Especially those that have a pen input option. I first became interested in them after seeing Bill Gates show off a Windows XP tablet edition device on Good Morning America. I like technology and I also enjoy writing, but some part of my brain does the latter better with a pen or pencil in hand. A system that combined the two was just the thing for me.

I spent countless hours mastering the specialized Graffiti input on my Palm Pilot PDA but it just wasn’t the same as scribbling something on paper. What Mr. Gates demonstrated on that show was true handwriting recognition. I convinced my boss at the time to get me one of the first devices and I haven’t looked back since. I have owned and used nearly every pen enabled computer since then.

This weekend, I picked up the Surface Go. I’m writing this article with it. The last Surface system I bought was one of my favorite computers of all time. Why get a Go if I already own a Pro? In-short, size and weight are a pen writers biggest enemies with this type of tech. Until recently it has been difficult to find devices that are small enough to comfortably hold in a single hand but powerful enough to run real-time handwriting recognition. Most of the tablet devices are large enough to require a table or knee to lean on. The Galaxy Note phones were some of the first devices to allow handheld writing and I still love mine. The Galaxy Book 10.6 was among the first tablets light enough to hold and write but powerful enough to be useful. It’s a great device but the Surface Go has some district advantages that drew me to it.

Foremost in my mind is the integrated kickstand. There’s just nothing else that competes with it, even with HP and Asus trying to copy it. The other manufacturer’s versions don’t stand-up. The Surface Go keyboard has the same fold and attach ability that its big brother does which makes the keyboard more rigid on your lap. It’s one of the few 2-in-1 designs that works well on your lap, on a table, and on the arm of your chair.

20180901_200524
Midna chillin’ on my lap while I write this article.

Next on are the size and weight. The Surface Go weighs 1.15 pounds and feels the same as holding a 9.7″ iPad. It’s light and has a small foot print. The Go is just the right size to slip in your day pack or a purse but still big enough to be worth carrying the extra device. Even as a long time Galaxy Note fan, I find myself tossing this thing in my bag for the extra screen space. It’s comfortable to hold in one hand and write with the other. Every ounce less that a tablet weighs, improves its usability in this regard. The Go is light enough that I find myself reading books on it which is not something I have normally used a tablet for.

Some of the reviews that I had read before purchasing the Go indicated that the processor was weak. I’m not a huge fan of benchmark testing, I find that it is largely irrelevant in the real world. In my very un-scientific testing the Surface Go opens some popular everyday apps like the browser, Facebook, Instagram, and Twitter, a fraction of a second slower than it takes the current iPad to launch the same software. However, Apple has spent considerable time and capital optimizing the iPad for those specific tasks. If we switch our testing to apps like Word, Excel, Onenote, and WordPress, the Surface Go is much faster at launching these programs in some cases several seconds faster. The Surface Go was faster at launching every “Productivity” app that we tested: Sketchbook, Photoshop, Evernote, and Homebudget, all opened faster on it. Full disclosure, my testing method consisted of my wife grabbing her iPad and us launching the same app after a 3-2-1 countdown. In my opinion, this is the only kind of speed test that matters for these types of devices.

Power_Slider
To get the best performance, tell Windows to favor it over battery life by tapping the battery icon.

For me, one of the true tests of a system’s power is to load up a game and see how it plays. The system easily handles “App Store” games like Candy Crush, Modern Combat, and Fruit Ninja so I decided to throw something harder at it. I installed Steam and downloaded Borderlands 2. I let the game auto-dected the resolution and graphics settings (1152 X 854) and was floored by how well it played. It looked good, and was fully playable. I actually enjoyed playing on it and was also able to play Sims 4 (on high at 1080P) along with Stardew Valley. Don’t get me wrong, it’s not a gaming system. It couldn’t play Destiny 2 at all and you won’t be hooking up a VR headset to it, but for a college person or to play on your lunch break at work, it’s surprisingly good.

 

Microsoft says that the battery can last up to nine hours. I’ve been using it all day for the last three days doing everything from writing and surfing to playing and drawing and I haven’t needed to plug-in except for its nightly charge. I also have the 2018 iPad and the battery life seems comparable in real-world use.  I am enabling battery saver mode when reading or doing other low demand tasks.

Overall I’m very happy with this system. It would be nice if it were a little less expensive, but it’s an incredibly good small computer and you’re always going to pay a premium for that. The 128 GB iPad comes in at $429.00 and the 128GB Go is $549.00, for the extra $120 you get a full Windows operating system that can run the full versions of software like Office in a similarly sized package. I’ve already installed Visual Studio, written a PowerShell script, loaded PhotoShop and edited a picture, written countless emails and a few Word documents.

The keyboard is fantastic but I disagree with a lot of the tech blogs that say it is required. If you plan to use this system for “tablet” tasks, it’s on-screen keyboard is leagues above Apple’s. It has multiple sizes and modes that allow it to fit almost any situation. The predictive text is spectacular. If you want to type 100 WPM then you’re going to need a keyboard. If you want to take that keyboard with you, I recommend the one that Microsoft made but you can use any with bluetooth or a USB C adapter. The purpose made keyaboard is nearly perfect as far as small keyboards go. I’ve never used one that was better.

I already owned the new Surface Pen and have written an article about it. It works really well on this tablet. If I had to choose between the keyboard and the Pen I would have picked the Pen! I still think the Norris pencil for the Samsung Galaxy Note is the best stylus I’ve ever used, but this one is a close second and it’s more functional.

I’m very happy with the Surface Go and think that if you mostly use a high-end desktop or big-laptop and need something more portable, this tablet is a great fit. If you’re a college student, home user that doesn’t edit video/play AAA games, or 95% of office workers, you could likley use this as your only computer system with a dock. Microsoft will be releasing a business edition and an LTE equipped version in the near future. I expect this device will be quite popular over its lifetime.

PowerShell Monitoring Part 5. Putting it all together. HTML and scheduled tasks.

In part one of this series, we wrote a script that would get errors and warnings for the last hour for a list of servers and output the results to an HTML file in a simple table. In part two, we capture all services for a list of servers that are set to automatic but not currently running, and output that list to an HTML table. Part 3 describes how to use the Windows Server Status Monitor script available at GitHub and the PowerShellGallery to monitor Online status, CPU Load, Memory Load, and Disk Space.  Part 4  dynamically generates the lists of servers that the first three scripts will need to run.

To make the monitoring system work, there are still a few things we need to do. First, we need to set up a server with IIS or some other web hosting engine. To be honest, I like SharePoint, the newest version isn’t available in a free edition, but if you have an Office 365 subscription it is included. If not, the last free version you can get is SharePoint 2013 Foundation. Speaking of SharePoint, you could add some additional code to the scripts to upload the results of our scans straight into a SharePoint library, but this isn’t as easy as it sounds. I prefer to add another IIS site to the SharePoint server and then proceed with the architecture out-lined below. After you’re done, you’ll use SharePoint’s content viewer web part to build cohesive system report pages which I’ll get into further on in this post.

I’m not going to go through all the steps needed to get a web server up and running here. You can search for the instructions easily enough and including them would make this article a book. In any modern version of Windows server, you add the web server role. If you’re going with SharePoint, when you run the installer it will guide you through the pre-requisites.

Once you have IIS up and running you need to add virtual directories for each group of servers that you want to monitor. Before you can add the VR directories you need to create the actual folders on whichever drive you want to store all of this data on. Make a folder for each environment that you’re going to monitor for example: development and production. Then, under each of those, create a folder for each group of servers: AD, Exchange, SQL, that you built lists for.

The virtual directory alias is the path you will use to access the html files placed into the matching folders by the scripts. You’ll type http://www.webservername.com/vr_directory_alias/name_of_file.html to access the reports for each group of servers. To make a new virtual directory in IIS, right-click on the site that you are using and pick new virtual directory from the drop down menu. Then fill out the pop-up form.

Once you’ve gotten your directory structure and web host all squared away, it’s time to start scanning servers and creating the files that get dumped into the folders you’ve just made. If you followed the instructions in the preceding articles, there should be three scripts in the C:\Program Files\WindowsPowerShell\Scripts folder. We put them in this particular folder to make calling them with additional scripts easier.

We’re going to make another series of scripts that call our scanning tools with the lists we’ve made as input parameters and the folders we’ve made as output paths. Then, we’ll schedule our calling scripts as automated tasks that run every few minutes and wallah, a full system monitoring tool is born.

I like to add a timer and an alert email to my scanning task script so that I know how long each group takes to complete. You will need to change the paths, SMTP server and email addesses in the script below to match your environment. You will make one of these scripts for each group of servers you want to montior (match the folders you made above). Store them all somewhere that makes sense to you, placing them in the VR directory folders will work fine.


$ErrorActionPreference = "SilentlyContinue"

$adtimer = [Diagnostics.Stopwatch]::StartNew()

WinServ-Status.ps1 -List E:\Prod\ad_servers.txt -O E:\ServerStatus\Prod\AD\ -DiskAlert 80 -CpuAlert 95 -MemAlert 85 -Light

Get-StoppedServices.ps1 -list E:\Prod\ad_servers.txt -outputpath E:\ServerStatus\Prod\AD\stoppedservices.html

Get-ServerEvents.ps1 -list E:\Prod\ad_servers.txt -outputpath E:\ServerStatus\Prod\AD\errorevents.html

$adtimer.stop()

$time = $adtimer.Elapsed

Send-MailMessage -SmtpServer smtp.mymailserver.com -From ServerStatus@mydomain.com -To me@my.com -Subject "AD Status Elapsed Time" -Body "All prodcution Active Directory servers processed in $time (Hours, Minutes, Seconds) HTML pages updated."

Once you’ve finsihed creating the scanning task scripts, we’ll need to schedule them as repeating tasks using the Windows task scheduler. Be sure the account that you choose to excute these scripts with has enough permssions to scan the servers and that WinRM is enabled on the systems you are collecting data from.

Scheduled_Task_Folder
Add a folder for all the tasks
Task_trigger
This task runs every 15 minutes, note the Daily and Repeat options.
task_action
Powershell.exe goes in the program or script box. Enter the full path to your script between “” in the arguments.

When you save the task you’ll be prompted for the credentials to run it with. Running the scripts does consume resources from the server(s). Tune your schedule to be frequent enough to be useful, but not too taxing on the servers. Every 15 minutes works well in my environment.

Assuming you’ve followed all the articles in this series and that your scheduled tasks have executed at least once you should now be able to access the pages for each group of systems. In your browser you’ll go to: http://nameofserver/virtualdirectory/errorevents.html
http://nameofserver/virtualdirectory/stoppedservices.html
http://nameofserver/virtualdirectory/winservstatus.html
The system is functional but not very convienient. It would be better to see each group on their own page; all AD status, or all Exchange status for example. There are several ways you could accomplish this.

If you have SharePoint, build a site for ServerStatus. Add a page for each group of servers (AD, Exchange, etc.) and on each page insert three content viewer web parts. Each content viewer web part will reference the output html page of one of the status scripts. Take your time and be sure to title the web parts appropriately. If you’re careful, you can end up with something that looks like a professional monitoring tool. SharePoint’s menu system will build the drop down menus that you see in the title image automatically.

Iframed_Pages

If you don’t have SharePoint you can get a simliar effect by using iframes. You’ll need to create a master html page for each group. AD.HTML for example, then use an iframe to embed the output of each of the three scripts onto the page. The HTML to create an iframe is:






With a lot of work and time you can build a tool that keeps watch over your servers while you work on other things. There’s no limit to how far you can take a tool like this. Alerts for thresholds, reports, and more are just a few lines of code away.

Use layers in Autodesk Sketchbook to draw anything on any device for free.

When I was little, my dad would sometimes entertain me by drawing my favorite cartoon characters. He would sketch them on napkins or scraps of paper while we were waiting for a table at a restaurant or sitting through some other equally boring event. I was always amazed that the Fred Flintstone, Mickey Mouse, or Donald Duck that he drew in a few minutes looked exactly like they did on the Saturday morning cartoon shows.

When I tried to draw them, my best efforts looked like stick figures that had suffered horrible head injuries. I was determined, and enjoyed the process, so I stuck with it. Art was always one of my favorite classes in school. Eventually, I had learned enough technique and developed enough motor control that I could draw nearly anything. It literally took years of practice before I could look at an object, or invent one in my head, and reproduce it on paper.

Digital Enterprise Painting
A freehand digital painting for my dad on Father’s day.

I would have given anything to be able to draw without all of the classes and practice. Many of my lessons involved tracing on a light board. It was a great way to learn how to make complex shapes, master scale, and understand the composition of objects or places. If you have a PC, tablet, or phone with a stylus you can use it in the same manner as a lightboard and I’m going to show you how easy it is.

You’re going to need a good drawing app. I like Autodesk’s Sketchbook. It’s free, powerful, and easy to use. It also runs on everything: iPhone, iPad, Mac, Android, and Windows all have a version. Check your device’s app store or the Autodesk web-site. You’ll need to create an Autodesk account after you install the software, but it doesn’t cost anything either.

After you have the app installed on your device, spend a few minutes on Bing or Google’s image search to locate and save a picture of something that you would like to draw. Just right click or tap and hold on the picture you like and choose the option to save a copy. You can also use a picture that you have taken with your camera.

Watch the short video below to see the details, but essentially we are going to create two layers. One to hold the picture we are going to trace and another to draw on. Once we’ve completed the sketch we’ll remove the picture layer and all that will be left is our drawing. Tracing is easy if you reduce the opacity of the picture layer. To save time I only do a quick outline with a single tool and color below. I suggest using multiple brush types and colors to get the best results.

Knock, Knock, Anybody Home?

True story. While my family and I were in the car on our way down to the Branson area we got a notification from our Ring doorbell. When my wife pulled it up, we watched a guy wait until nobody answered and then walk out to his unmarked truck and grab a ladder. He headed up our drive way and around the side of our house past where the camera could see.

I logged on to our home security bot and piloted it around the interior of our home to be sure nothing was disturbed. The locks and windows were fine and no one had come inside. I parked the drone in the hall where it could see anyone entering from the stairs, back door, or the hall from the bedrooms, and turned on its motion detector with auto-capture and alerts.

The guy was probably just trying to sell a roofing service or something, but what if he hadn’t been? I feel like I would have at least caught him on video and possibly could’ve scared him away by threatening to call the police over the two-way audio on both the Ring and the security drone. Both devices upload to the cloud so even if he had taken them, I would still have had the evidence.

If you’d like to know more about the technology I used to see what was going on at my house when we were out of town, I’ve written about all of this stuff and a lot more in the “Gear I Own” section. https://whatdouknow.com/category/gear-i-own/

Manage personal finances across all of your devices. HomeBudget accounting software.

Who remembers Microsoft Money? It was fantastic software for home accounting. Easy, powerful, and cheap. It worked so well, I know several people who keep a Windows 7 laptop around just to keep running it. Microsoft doesn’t support MS Money anymore but you can still download it for free. A few people have even figured out how to make it run on Windows 10.

One of the reasons Microsoft quit making MS Money was the proliferation of smartphones. People stopped using their computers in favor of phones and tablets. For my family this introduced a problem. My wife uses Apple’s products but I use Android. Actually, I use everything LOL. We both need to track our expenses and bills and we share accounts so separate ledgers didn’t make sense.

There are a few agnostic home accounting apps, many of them are actually websites in disguise. I tried a some of them but decided that my chosen solution would need to work off-line. Neither my spouse or I were keen to share our financial data with a third-party which many of the so-called free solutions require. They promise to protect it and never publish your personal information but so does Facebook. How many times has the old FB been hacked or had a bug that shared your life with the entire Internet? Sometimes free isn’t worth it.

After trying enough demo software that I had to factory reset both of our phones, we picked a winner. Anishu’s Homebudget app runs on Apple (iOS and Mac OS), Android, Kindle, and Windows. It can track your accounts, bills, budget, expenses, and income across all of those devices with ease.

Adding accounts and expenses is easy. All though I do wish they’d add a widget to quickly create an expense. There is a handy feature that allows you to take a photograph of your receipt and this has gotten me out of trouble more than once.

Add Expense
Add Expenses

You can run reports that show your financial status over time, or quickly glance at a Payee to see how much you’ve spent with that vendor.

Payees
See where the money goes

Tracking multiple sources of income and distributing it across multiple accounts is easy. I’ve set up my 401k, stocks, and other income in just a couple of minutes. I distribute the payments across multiple checking and savings accounts and a quick glance at the summary screen when I open the app shows me how much I have, what is spoken for, and forecasts where I’ll be in the next few months.

Income
Track your income

I can’t stress enough how important having a budget and sticking to it is for you financial future. I used to be one of those people who paid zero attention to their finances. Whatever my ATM receipt said I had in the bank, was what I had to spend. After a long time of not getting anywhere, I decided to start tracking everything in detail.

I was shocked to see how much I was spending on trivial things like fast food and movie rentals. I was keeping my local McDonald’s and Subway in the green all by myself. Seriously, if I would have spent that much on the stock instead of chicken nuggets and foot long BMTs, I could have retired by now. I had spent $3600.00 on just lunch in one year!!! Guess who takes their lunch almost everyday now? Lunch out was costing $10 – $15 per day. Taking my lunch costs $2 – $3 per day and it’s better for me to boot. I still get away from work for my break, I just do it in the lunch room with my Switch or a good book.

Budget
Build a budget

Weather you use Homebudget or some other application that suits you better, use something. You won’t know where your money is going until you start tracking it. Don’t be like my younger self and fall for the voice in your head that says you know what you spend. You don’t. Just like you don’t know how much you eat without tracking it. For most of us, our built-in gratification mechanisms keep us from seeing the full truth about things we like or want to do and that little voice that says you don’t need to worry about it, is just part of your ego’s cover-up.

PowerShell Monitoring Part 4. Generating lists of servers.

All of the scripts that we’ve written for the monitoring system have been powered by lists of severs. Where do you get the lists from? You use a script to generate them of course! You could easily configure each of the monitoring scripts to run independently by filtering AD for a specific set of computers and storing them in a variable instead of using a file, but the list method has several advantages.

In our case we want to run multiple scripts against the same group of servers repeatedly. Searching AD over and over again for the same data isn’t very efficient. Especially when it’s a list of machine names that rarely change. That being said, servers do get added and removed. Typing them in a list and calling it a day is a recipe for crap cake surprise. The solution is to script the lists so that they are dynamic.

How you get the lists is going to be dependent on how your Active Directory is structured. I have a pretty strict naming convention in place, so I run filters against the names. You might need to search specific OUs or some other property (see code in box 3).

For example, all my production domain controllers are named PRODAD**** so to build a list of them:

Get-ADcomputer -Filter {name -like "prodad*"} -Properties dnshostname|
select dnshostname -ExpandProperty dnshostname|
out-file C:\Sources\Prod\ad_servers.txt

Create lines like the one above, for each group of systems that you want to monitor. The output path must exist before you run the script or you’ll get errors. My example is C:\Sources\Prod\ so you need to make those folders on your C drive or change the path. I suggest that you create a group of folders on the IIS server you plan on running your monitoring from and storing the files there.

If you need multiple names for a filter just use -or and add as many as you need.

Get-ADcomputer -Filter {name -like "prodexch*" -or name -like "prodmbx*"} -Properties dnshostname|
select dnshostname -ExpandProperty dnshostname|
out-file C:\Sources\Prod\exchange_servers.txt

After you have code for all of your groups, you should consider adding a catch all at the bottom. This will add servers that don’t follow the standards to a file. We all have them LOL. In my environment I search the servers OU that a GPO drops our servers into and add every system that doesn’t match one of my previous groups to a Misc_servers.txt file. Note that the example below uses “-notlike” and “-and” versus the “-like” and “-or” we used above.

Get-ADComputer -Searchbase "OU=Production Servers,OU=Servers,OU=MY_Server_OU,DC=MY_DOMAIN,DC=com" -Filter
{name -notlike "prodad*" -and name -notlike "prodexch*" -and name -notlike "prodmbx*"}|
select dnshostname -ExpandProperty dnshostname|
out-file C:\Sources\Prod\misc_servers.txt

Once you’ve put it all together, run the script and you should end up with a text file for each group of servers in your Active Directory. Open the files and you should see the FQDN for each server that matched its filter, each on a separate line. You can use these lists as the input parameters for the monitoring scripts we’ve already written in PowerShell Monitoring Part 1, PowerShell Monitoring Part 2, and PowerShell Monitoring Part 3.

As you’ll see in a future article regarding remote systems management, these dynamically built lists of servers by type can be used for other useful projects as well. My production script ended up with 19 of the “type” filters plus the “catch all” so expect to spend some time getting this right on your network. Next in this series we’ll configure an IIS server to run all of these scripts as scheduled tasks and display the HTML files.

Modern Virtual Reality; 2.5 years in and better than ever

Way back in 1991, I played an RPG game called Legend Quest at an arcade in Kansas City. I had long been a gamer and spent many an hour trying to own the top scores for games like Pac-Man, Asteroids, 1942, Double-Dragon, and Out-Run, but this game was very different from those.

You stood on an elevated platform with a giant helmet that contained a screen and held a single controller in your hand. I felt like a dweeb getting all of the gear on in the middle of the mall. It was the Christmas shopping season and I was a teenager in the “big” city on a trip with some friends and no parents. I was hoping to meet some girls, but wearing this get-up was absolutely ruining any chances of romance.

1000seriesVR
Not Me I promise!!!!

The game that I was playing was a fantasy adventure, not unlike some of the more modern 3D Zelda games. The graphics were atrocious by today’s standards, but they were more or less 3D and in full color, which was more than some games of the time could say. The graphics weren’t what enticed me spend every dollar I had on this thing.

Legeng Quest

This was one of the first publicly accessible Virtual Reality experiences you could have. At the time, most people had never even heard the term Virtual Reality. Wherever I looked, the view in the game followed. I could move my hand and the sword, bow, or spell I was using moved with it. The thing made me sick and gave me a massive headache, but I didn’t care. I played until I was broke and then borrowed ten bucks from my BFF and played some more. In my head, the potential for this tech was world-changing.

I followed VR like a hawk through the 90’s and 00’s. It seemed like we were on the verge of something great. The Lawnmower Man movie introduced the concept of VR to the masses and several newer versions of the machine that I had played on made tours of the malls, arcades, and amusement parks.

Then it happened. Sega announced at E3 that they were going to make a VR console attachment for home use. They even had several games ready to go. I already had a Genesis console and started saving every penny I made. Eventually they canceled the project because they couldn’t make it cheap enough or good enough.

All was not lost though. Nintendo launched the Virtual Boy in 1995. I didn’t have a Nintendo, but one of my buddies did. He bought the VB and I headed over as soon as he had it hooked up. Unfortunately, it kind of sucked (I didn’t tell him that). The graphics were only in red and black and you had to set the thing on a table and lean into it.

Through the early 2000’s several companies tried various VR headset devices like the VFX 3D but none of them stuck. They were too expensive, too heavy, too low resolution, and too hard to use for any kind of mass appeal. Then in 2012 there was a Kickstarter campaign by a little known company named Oculus. The videos they were showing off of their dev unit looked amazing.

vfx3d

Fast forward to the present day. I’ve had my Oculus Rift for quite a while now. I’ve got the current retail edition and have 3 sensors, the touch controllers and a Xbox remote. I’ve also got a good force feedback steering wheel and pedal set that I use for driving games. It’s all hooked up to a dedicated gaming rig running an I-7, 270 chipset, 32GB of 3000 SDRAM, 1TB M2 SSD, 10 120mm fans, 1000 watt PS, and an 8GB RX480 with Windows 10 Professional as the OS. Everything in the system is overclocked to within an inch of its life. It’s name is the Elder-Wand and you’ve seen it featured in several of my other posts.

20180728_014902.jpg

What’s in the machine matters. If you’ve used an Oculus or Hive and come away feeling motion sick there’s a good chance it was caused by an underpowered box. To skip calling Ralph on the big white phone after a VR session, the system has to be able to play the game at 90 frames per second with no lag outs. It’s the “no lag” area where some rigs fall short. During high action scenes, systems that are on the edge of performance requirements will often drop down into the high seventies. Don’t get me wrong; if you do a barrel role in a fighter jet, you’re going to feel it, but that kind of reaction is normal and in some cases can be lessened with exposure over time.

Besides not getting sick, a beefy box will also allow you to SuperSample. SuperSampling is a technique employed to sharpen an image. A scene with a much higher resolution than the one being displayed is generated and its extra pixels are used by an algorithm to calculate smoother transitions between shapes and colors in the picture that your eyes are actually shown. The effect can be dramatic in some games and goes a long way toward making the VR world less blocky looking. SuperSampling is especially effective in VR because the screens are so close to your eyes. Many newer games have an option in their graphics menu to enable this feature (aka Pixel Density) but if not, your VR Visor (SteamVR or Oculus Home) can be used to turn it on.

Enable SuperSampling in the Oculus app:

  • Close all Oculus programs on your PC
  • Download the Oculus for Windows SDK from here
  • Unzip the download and find the Tools folder
  • Open the Oculus Debug Tool
  • Adjust the Pixels Per Display Override field to your desired multiplier
  • Launch the Oculus app you want to experience
  • Close the Oculus Debug Tool

Enable SuperSampling in SteamVR:

There are several ways to get super sampling working in SteamVR games, you can edit some JSON files or use one of several free utilities out there. Personally, I use this tool because it allows per game profiles and access to several other hidden settings. Be aware that downloading and installing software from the Internet can always be risky and you are doing so at your own discretion.

What’s the Verdict?

Chances are that you’ve read or watched some reviews of VR that were less than flattering. All tech has its detractors and negativity sells, but don’t believe the BS. Once you get the software and hardware sorted out, today’s VR experience is flat-out amazing. The family and friends I’ve shared my setup with have been shocked. Playing Skyrim in VR feels like traveling to another place and time. Driving in Assetto Corsa with a FFB wheel is good enough to make you fear crashing. Launching out of the tube in a Valkyrie space fighter is more exciting than any movie I’ve ever watched.

Is VR perfect? Nope, but name something that is. Does it have annoyances? You bet, the cable can be a problem. The headset can get hot after wearing it for a while; so does my baseball hat. You need a lot of room (8 – 10 square feet) if you want to move around much because the physical movement of a human body takes space.

As with all new gaming platforms, there was a content problem when modern VR first got started. I say was, because we’re a couple of years in and now there are tons of games, simulators and VR worlds to visit and more are being released at a rapid pace. You can visit anywhere like you’re standing there in Google Earth VR, see the inside of the International Space Station, scuba dive, sky dive, watch movies on an 80 ft screen, see the olympics like you bought a ticket, have a chat, paint, sculpt, build, go on an epic adventure, hit the shooting range, play a real-world sport, join a firefight, fly a space fighter, drive that exotic car you’ve always wanted, and get the crap scared out of you without leaving your home. Seriously, the horror games are just freaky.

Right now most of the experiences are focused on entertainment, but I think that in the near future we’ll start to see more educational productions. The ability to teach someone about a historic battle while participating in it, or to study the pyramids while walking through them will be epic. New doctors can practice operations, pilots can learn to fly, the possibilities are endless. Already my children are using VR to learn to drive.

The cost of getting into PC VR has never been lower. You can pick up a basic kit with headset, sensors, controllers, and starter games, for around the same price as a good gaming monitor and now that bitcoin mining has dropped off, you can find VR capable graphics cards for less than $300.00. It’s still not cheap but I’ve spent more than my whole setup costs taking my family to an amusement park for a single day.  #disneyisexpensive

It already lives up to what I imagined it could be like after that first expereince with the idea all those years ago. I can’t wait to see what VR evolves into in the not so distant future.

PowerShell System Monitoring Part 3. Server Status Report

If you’ve been following this series then you know that we’re on a mission to create a poor man’s monitoring system from just PowerShell scripts and a web hosting engine. So far we’ve created HTML pages that show the warnings and errors from a group of server’s event logs. We’ve also made a report that displays all of the server services set to automatic but not running.

The scripts that we’ve written so far, use parameters to specify their file output paths and input of a list of servers to scan. Later in the series, these options will help us create logical groups of systems that make our monitoring system easy to use. For example; all Exchange servers, or all Active Directory servers will be grouped together on separate pages. One of the scripts that we will write, will create the lists of servers that belong in each group. Those groups in-turn will be used to feed the scripts that are collecting our data and creating the HTML reports. It sounds confusing and it is, that’s why I’m writing about it one part at a time. It will all come together in the end, though.

Connectivity, CPU load, memory and storage consumption, are the basic metrics required for any monitoring system worth its salt. I could sit here and bang out the code needed to get the data we’re after from WMI \ CMI and output it to HTML easily enough. One of the great things about PowerShell though, is that its ubiquitous and you don’t always have to invent the wheel yourself. In this case, somebody else has already cranked out 99% of the code we need, so we’ll just modify his.

Mike Galvin, Dan Price, and Bhavik Solanki have written a wonderful PowerShell script called Windows Server Status Monitor. It uses WMI to pull CPU, memory, storage, and online status information from a list of servers and can display the results as a color coded HTML file. It also contains an alerting feature, emailed results, and can run once or continuously. You can download the script from Mike’s Blog, GitHub, or the PowerShell Gallery.

My personal project required trending data. I need to see these performance metrics over time. Mike’s script can output a CSV file instead of HTML, but it deletes the files it creates each time it is run. With just a little tweak to the CSV output file we can ensure each file is unique and therefor not deleted. If you need trending as well, make ths change. Under the comment ## Setting the location of the report output; find $OutputFile and set the variable to something like:

$Outputfile = $OutputPath\WinServ-Status-Report"+"_" + (get-date -Format M-dd-yyyy-h-m)+".csv

This change will create a CSV file that includes the date, hour, and minute in the filename. You could also include seconds or even milliseconds if you’re going to run this in a continous loop. Please be aware that you’ll need to monitor the folders you are outputing these files to. If you’re running WinServ-Status in a 5 minute loop against 20 groups of systems you’ll be making 1200 CSV files per hour. The files are small but they’ll add up over-time.

When we put all of this together a few posts down the line, you’ll see that we run WinServ-Status.PS1 twice; once to create the HTML file and again to make a CSV.  As with the other scripts in this series you’ll want to save them to C:\Program Files\WindowsPowerShell\Scripts\ to make them easier to run as a scheduled task or to call from any PowerShell session. If the “Scripts” folder isn’t in that path, just make it yourself. If you install the WinServ-Status script from the PowerShell gallery or from GitHub it will end up in that folder by default.

In the next article for this series we’ll build our lists of servers to run the data collection scripts against. After that, will be how to get IIS setup to host the HTML reports we are creating, followed by getting the scheduled tasks that run everything setup, and finally how to diplay all of this data in a sensible manner.

Appbot Riley, an affordable home security bot.

Not long ago I jumped on the IoT bandwagon and installed a Ring doorbell. I was surprised by how much peace of mind the thing provides. Getting a notification when somebody approaches my house, a doorbell that not only chimes but beeps my phone, and being able to tell salespeople that I’m not interested without getting off the couch are game changers in everyday life. Knowing that the UPS man dropped off my package on the porch and being able to keep an eye on it until someone gets home is just great, too.

Ring

These high-tech super powers of observation got me thinking that it would be awesome to keep an eye on the inside of my home too. I know there are several systems on the market that facilitate putting multiple cameras throughout your home and connecting them to a controller that monitors, records, and provides control over the camera network. Nightowl offers systems that are both wired and wireless with multiple cameras, indoor and outdoor options, and more. I wasn’t interested in having a system like that in my house though. My family and I think that having cameras staring us 24/7 would be creepy. My goal isn’t to spy on people. It’s to see what’s going on in my home when nobody is there.

I have experience with several models of office bots. You place an iPad or other tablet into them and then connect with 2 way video software to drive yourself around and talk to people (think Facetime on wheels). A couple of the companies that I’ve worked for have had these devices for employees that work from home or remote offices. They are surprisingly effective after everyone gets used to them. There are a couple of problems for my use case though; they are too expensive and just flat-out overkill. I like the idea of a camera I can pilot throughout my home but it doesn’t need to show my face.

ipadbot

I hadn’t run into a solution IRL so I did what I always do, research. It turns out there are a few options for home security bots that are basically web cams on wheels, but not as many as you might think. The lower tier of these devices are children’s toys, which I immediately ruled out. The upper tier is comprised of personal assistant robots, that look cool (to a geek) but are priced out of my budget. Right in the middle are a handful of home security bots that are basically web cams on wheels, or tracks as it were. I narrowed my list down to three based on customer reviews and the features each offered.

  1. YZ MeE Smart Home Security System
  2. FEISIER CLOUD ROVER IV Cloud Companion RC Car
  3. Appbot Riley App Controlled Movable Home Safety Robot Camera

My home has several different floor surfaces; shag carpet, tile, and various rugs, made me think that the option 3 might get around a little easier. Tracks offer excellent traction and weight dispersal. There’s a reason why tanks use them right? So I ordered the Appbot Riley from Amazon.

It had several features that I was interested in without being total overkill. The little bot has: 720P streaming video, a rotating docking station, automatic docking and undocking, a motion detector, IR night vision, picture and video recording (to your phone), face tracking, two-way audio, a tilt camera mount, and automatic self-righting.

We’ve had the robot (we named it Robby) in our home for a couple of months now. I’ve been happy with it overall, there are only two things bug me. When you pilot it at full speed it tends to turn left. There’s a sweet-spot at which you can drive forward at around 70% of the full speed and stay straight. The other is, every time you switch out of the app to say, check a text message, you have to go through the log on process all over again.

When the little guy is on its dock you can use it like a 360 pan/tilt security camera, the dock is motorized and spins while the “head” tilts up and down. We’ve strategically placed it so that its easy to see the front and rear doors without undocking. If we want to see what our dog is up to we just hit the undock button and the app bot orients itself and then backs out of the dock ready to go. When you’re done driving you only need to get it close to the dock (where the camera can see it) and then hit the dock button. It will position itself and start charging all on its own.

You see what the camera sees from the app on your phone and drive with virtual control sticks much like those in any FPS game that you’ve every tried on your smart phone. The controls are simple and the app works great on my Galaxy Note 8 and iPhone 8. It also works on my wife’s iPad. There isn’t a Windows or Linux app for it yet but the developer has mentioned they are considering creating one.

The bot connects to your wi-fi and then to cloud servers hosted by the manufacturer. Your mobile connects to the servers (not the bot directly) so you can use it anywhere that you have an internet connection. I’ve even tested turning off my LTE and was able to pilot it just fine on plain old 4g, although there is some lag and the picture quality degrades at this low-bandwidth.

We’ve traveled away from home a couple of times since setting up Robby and its nice to be able to check the outside of our home through the ring and then take a look inside to check the doors and windows. Once again, I find myself shocked at how much worry it relieves to be able to see that nothing is wrong, I didn’t leave the stove on, and just generally check things out. My son has a pet lizard that almost always stays home, but Gizmo’s tank is on a stand that is fairly high up and difficult to see from the floor. No problem, I just leaned a piece of cardboard up against the stand at a 45 degree angle and Robby can drive right up it to see in the tank. It’s night vision makes it easy to see the bearded dragon holed-up in its den and make sure she’s doing well.

I’ve used it to prank the wife a few times, we’ve checked on the kids when we’ve left them home alone. My dog is slowly getting used to it. At first she’d bark her fool head off when Robby undocked and started moving but now she just gives it the stink eye. It still freaks her out if we talk to her through it, though. It’s night vision and low profile makes it great for looking under beds for lost items.

My mom thought of another excellent use for it. If you have a loved one that isn’t quite fully independent it would be a great way to keep tabs on them. I wish it would have existed when my grandmother lived in her assisted living home. It would have been nice to have had the ability to check on her more often. It would also be great to leave in a vacation property or RV.

wp-1532285456383.jpg

PowerShell; System Monitoring Part 2. Stopped Automatic Services Report

In the first article in this series I explained the goal. I want to help you create a server monitoring dashboard with nothing more than a few PowerShell scripts and a web server. Before we build the web site, we need to create the scripts that gather the information and create the HTML reports.

In an article a while back, I showed how to use PowerShell to list stopped automatic services and suggested that you might want to output the data to HTML. That is exactly what we’re going to do here.

</p>
param (
[string] $list,
[string] $outputpath
)

$style = "&lt;style<span>&lt;/style&gt;BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + ""</span>

Function Problems {
$servers = Get-Content $list

Foreach ($server in $servers)
{Get-Service -ComputerName $server |where {($_.StartType -eq "Automatic") -and ($_.Status -match "Stopped|.*Starting|.*Paused") -and
($_.Name -notmatch "CDPSvc.*|.*gupdate|.*RemoteRegistry|.*MapsBroker|.*sppsvc|.*WbioSrvc|.*iphlpsvc|.*tiledatamodelsvc|.*clr_optimization_v4.0.30319_64|
.*clr_optimization_v4.0.30319_32")}|
select @{n="Server";e={$server}}, @{n="Stopped Service";e={$_.displayname }}
}
}

$report = Problems|Sort-Object Server|ConvertTo-Html -Head $style|Out-String

#Send-MailMessage -SmtpServer my.emailserver.com -From alerts@mydomain.com -To me@mydomain.com -Subject "Stopped Server Services" -Priority High -BodyAsHtml:$true -Body $report}

$report|out-file -FilePath $outputpath

The script above is written to use two parameters when called, -list should be the path to a text file containing the severs you want to scan. The -outputpath parameter is the location to save the HTML report.

You’ll notice the $_.name -notmatch section contains several service names. These services are set to automatic but do not keep running if they don’t have work to do. The regex pattern keeps these services from showing up in the report as false positives. You may need to add a few more for your environment, especially .Net versions.

There’s also an option to email a copy of the report. Just un-remark the line and populate the sever name and addresses. The HTML report will be embedded in the email, not attached.

In the next post for this series, we’ll generate a system status report to go along with the events and services, then we’ll put them all together in a dashboard.

The lazy boy and his quest for the perfect living room chair.

We’ve had the same couch in our living room for a long, long, time. It’s gotten so worn out that there’s a permanent dent where my butt goes and the wooden frame pushes into my back every time I recline in it. The poor thing is permanently bent at an angle on one end and the material looks like a shirt that’s been through the wash one too many times. Furniture shopping time!

We started out at the local furniture store looking at couches that were similar to the one we needed to replace. We like having recliners on each end and cup holders are nice. My parents had recently picked up a unit with power recliners and built-in USB ports that we really liked.

☆▻ Home Furniture : Antique Living Room Chairs Ashley Furniture throughout Ashley Furniture Showroom

One might think that power recliners are just for lazy people; how hard can it be to pull a handle? The thing is, they can do some things that other seating just can’t. Power recliners can maintain any position your heart desires. Wherever you let go of the button is where they stay. For me, this is especially nice on the foot rest. Traditional reclining furniture usually has two foot positions, up or down. Having my feet fully up while sitting puts stress on my hip joints and lower back because they are almost always a too high of an angle for my build. Being fully reclined makes it difficult to watch TV or play a game. These are some serious first-world problems people!

So, power reclining is a requirement for us and you would think there’d be limited choices in the category, but you would be wrong. Apparently while I was working on digging a deeper butt hole in my old couch, the whole furniture world decided to make power everything. Guess we’ll have to pick the old fashioned way; by sitting on a bunch of them.

My wife and I tried out literarily hundreds, possibly thousands, of couches and chairs in a multitude of different stores. Aesthetics aside, we figured out some key features that make a big difference in comfort. First, a power headrest is important; much like power windows in a car, you can get a couch or recliner without the option but the savings aren’t worth it in the end. The power headrest allows you to prop your head and shoulders up for the perfect viewing angle, no matter how far you lay back.diagramThe ability to move the back separate from the footrest also dramatically improves comfort. Being able to get your perfect pelvis angle while sitting, removes stress points. Unfortunately this option is both rare and expensive. Out of the countless examples that we looked at, only a handful had it and most were well over $1300.00 for a single chair. We didn’t find any couches with the option at all.

Most of the power reclining furniture will raise the legs until they reach their maximum height and then the back will lower or vice versa; the two parts are connected via their movement mechanism. This is still better than the old fashioned pull a handle solution but, if you have the funds I suggest you try the indpendant movement before going this route. It’s uncomfortable for me to sit up-right with my legs fully extended and either power recliner configuration will fix this, you can put the legs at any angle that you like. Being able to get the same adjustability on the back is like having  steering wheel that tilts and telesopes; it provides a slightly better fit.

While looking at and testing all of these furniture pieces we both came to the realization that a couch wasn’t what we wanted at all. While they are the more traditional living room seating option, they have a lot of issues for us. Their footprint is too large given the seating surface, they are difficult to arrange in many rooms, and somebody always ends up with a worse view of the TV. We decided to go with two chairs and end-tables in between each.

Now that our list was narrowed down; power reclining chairs with seperate back and footrest mechanisms along with a power headrest our choices were pretty limited. Especially with regard to our budget. We really liked the Lazy Boy Morrison PowerReclineXR but at the time it was almost $1400. It was easily the most comfortable chair either of us have ever sat in but was out of our price range. We ended up finding it at our local Nebraska Furniture Mart for $749.00, the catch was that it only came in one color. Luckily we both liked the indigo fabric. Normally, I would provide you with a link to their site but it currently isn’t listed; the closest thing they have right now is the manual version of the same chair.

Ourchairs

We’ve had them in our home for more than a month now and couldn’t be happier. The chairs are a major uprade in comfort. Being able to slightly move your back, feet, head, and lumbar at any point you feel stress is a huge advantage over traditional seating. Remember when you first sat in a car with power seats and could adjust them just right? It’s like that but more cushy and with a footrest.

These chairs do not have cup holders or USB ports but our end-tables do. We had planned on getting end-tables to fill in the gaps between the chairs so why shouldn’t they be of the hi-tech variety? Again we spent several days looking on-line and in stores before we found the right pieces for our room. We ended up going with Laflorn Chair Side Tables from Ashley Furniture. They have built-in cup holders, power strips, and usb charging, along with closed in storage for all our controllers, game disks, and books. Several furniture stores carry a version of them but we found the best deal on Amazon.

end-tables

I never expected to write a piece about furniture on my tech blog. It just goes to show you how far technology has infiltrated our daily lives when chairs have controllers and motors and end-tables can charge your laptop and your phone. I predict that in the near future we’ll see smart chairs that automatically adjust to your body position and tables that wirelessley charge your devices while they back them up to the cloud.

PowerShell; System Monitoring Part 1. Get-ServerEvents, a windows event log error report.

After you have more than a handful of servers on your network, it can be challenging to catch small issues before they take something down and get noticed by users. What you need is a good monitoring tool; one that captures resource consumption, error events, installed software, shows patching status, and that generally helps you keep an eye on your systems.

If your place is like a lot of the businesses I’ve worked for, you probably have a bunch of emailed reports from various systems that amount to SPAM. You try to watch the emails and texts but they vomit so much useless data all over your inbox that its hard to make sence of it. Important notifications end up lost in the noise.

Purchasing a multi-thousand dollar monitoring tool is not always possible. The more nodes you have, the more expensive a monitoring tool will be. Math says that you won’t need a monitoring tool until you have a lot of stuff to watch, which almost guarantees that a commercial solution it isn’t going to be cheap. Spending money on something that doesn’t directly generate profitable returns can be a challenge for any company but outages hurt customer and worker confidence in your systems. This situation can leave technologists feeling trapped.

As system admins, engineers, or architects, we know that the operating system has and reports most, if not all, of the information that we require. We can connect the MMC Computer Management snap-in or the Server Administrator tool to almost any computer and see its event logs, service status, and more. The problem is, that the data isn’t correlated and filtered in a way that provides us with the up/down, big picture, view that we need to proactively correct small problems before they become big ones.

Computermanagement

In this series we’ll examine how PowerShell can help gather all of the data we need from every windows system attached to our network. We’ll use it to generate HTML reports that, in the end, will be uploaded to a web hosting engine so that we can see our system’s status at a glance. The solution isn’t going to compete with System Center or Solarwinds but its better than 10,000 unread items in your inbox and it is entirely free (assuming that you have Windows CALS).

I have to break this down into component parts, or the post would be a book. Stick with me and I think that you’ll end up with a functioning monitoring tool. Feel free to take all the credit for yourself. Maybe your boss will give you a raise. Just read my blog once in a while without your ad-blocker turned on and we’ll be even.

First up is the Windows event logs. Microsoft, in all of their geniousnous; has been spitting out the classic Application, Security, Setup, and System event logs for as long as I can remember. The amount of data they collect is impressive. Typically, they are my first stop on any trouble shooting endeavor. We all know the drill; open the Computer Management MMC, right-click on the system name to connect to a remote PC, and then filter for errors and warnings. You can configure them to dump to a database for correlation / indexing but most of us never get that far. We end up logging on to a problem system and manually checking the logs for relevant messages one at time. Stop doing that, you’ll go blind!

PowerShell will get us the same information, a nice filtered for errors, view of the logs but it can do it in bulk.. The code below is written to be a module that you can call from a scheduled task or from another script. If you’re going to follow the whole series to build my tool you will want to run it as a module. Copy the code and save it as a Get-ServerEvents.ps1 file in the C:\Program Files\WindowsPowerShell\Scripts folder. If the scripts folder isn’t there; make it.

Poweshell Modules

param (
[string] $list,
[string] $outputpath
)
$style = "
BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + ""

Function Get-Events {
$servers = Get-Content $list
Foreach ($server in $servers) {
Get-WinEvent -ComputerName $server -MaxEvents 5 -FilterHashtable @{Logname ="Application"; Level=2,3;StartTime=(get-date).AddHours(-1)},
@{Logname ="System"; Level=2,3;StartTime=(get-date).AddHours(-1)} -ErrorAction SilentlyContinue|Select TimeCreated, MachineName, Logname,@{n="Level";e={$_.LevelDisplayName}},Message
}
}
$report = Get-Events|Sort-Object Machinename, Logname |ConvertTo-Html -head $style|Out-String
$report|out-file -FilePath $outputpath

The script will gather the last 5 application and system event log errors and warnings that occurred in the last hour for a list of servers and output them into a basic HTML table.

To run the script, create a *.txt or *.csv file containing the hostnames of the systems you want to see events for and then call or run it with the -list and -outputpath parameters. For example; Get-ServerEvents.ps1 -list c:\users\myname\my documents\ad_serverts.txt -outputpath \\reports_server\myreports\ad_serverts.html

If you don’t want to mess with text files you could also use the OU structure in AD as the source of your computer names. Mine organizational units didn’t line up with the way I needed my reports to look hence the text file parameter. If you don’t have that problem try changing the $server variable.

$servers = Get-ADComputer -Filter * -Searchbase “OU=MyOU, DC=mydomain, DC=com | Select dnshostname -ExpandProperty dnshostname
[/Code]

When you run the report you’ll end up with a nice, neat, HTML file like the one below. It’s easy to attach to an email notification; just add a Send-Mailmessage command to the bottom of the script. If you follow the rest of this series we’ll end up publishing the report(s) to a website.

Event report

Do smart doorbells live up to the hype?

In the age of the IoT (Internet of Things) almost any product is available in a model that will connect to the Internet for some reason or another. Cars, refrigerators, cameras, watches, and toys can all connect to your Wi-Fi and do various things that are supposed to improve your life experience in some fundamental way.

As a technologist, I am frequently an early adopter of these gadgets. Some of them turn out to accomplish their goal and make life easier like my smart phone. Some aren’t worth the trouble or money like my “smart” telescope. I was recently gifted with and installed a Ring doorbell (thanks, mom). Does it improve my life or is it a waste?

I didn’t jump on the smart doorbell bandwagon very early. To be honest they were too expensive, a pain to install, and I couldn’t see how they’d significantly make things easier. A doorbell does its job just fine, right? Why would it need to be smart? Ring has turned smart doorbells around. Their original unit can be found for under $100 dollars and is easy to install.

As with all IoT devices there are some technical requirements to using it. Namely, your Wi-Fi router will need to be powerful enough or close enough to reach outside. This is easily testable by taking your phone/tablet/laptop out to where you are mounting the, Ring and make sure you can still surf the web. While you’re out there, run a speed test, I like speedtest.net but any of them will work. You need to have at least 2 megabytes download and 2 Megabytes of upload bandwidth for the ring to work properly. Although we were able to make it work on a relative’s rural DSL with only .6MB of upload; you’ll be out of support if you attempt slower than 2.

It took me about 15 minutes to install my Ring. Everything you need comes in the box including a level, screws and anchors, a screw driver, and well written instructions. If you don’t like to read, install the app on your phone before you get started and it will play a high quality instruction video.

  1. Disconnect the power to your current doorbell (find the breaker).
  2. Remove your door bell. Usually two screws and then pry it off with a flat head screw driver.
  3. Attach the level to the mounting bracket.
  4. Pass the old door bells wires through the ring’s mounting bracket.
  5. Square up and level the bracket against your house.
  6. Drive in the four included screws; I cheated and used a drill. I also drilled four small pilot holes to make it easier.
  7. Attach the two wires from your original doorbell to the terminal screws on the mounting bracket. It doesn’t matter which one goes where. If your existing doorbell is digital (plays a tune instead of just ding-dong) you have to bridge the terminals with the included diode.
  8. Pair your Ring with your phone.
  9. Slide the Ring down on the bracket.
  10. Tighten the security screws at the bottom with the included star bit.
  11. Turn the power back on.

The device will draw power from the circuit that ran your old doorbell, but what if you don’t have one? Ring has thought of that. It has an internal rechargeable battery so you can still mount it outside. You’ll have to slide the unit off of its mounting bracket and charge it with a standard Micro-USB cable (included) every few months. The app will let you know when your battery is getting low.

After you have it installed, you’ll need to spend some time configuring the options that best fit your needs. The device has a motion detector, night vision, two-way audio, and can be shared with multiple users. You can also sign up for the Neighbors program; a high-tech twist on the old neighborhood watch in which you can post videos of suspicious activities. It’s a little eye-opening to see the flower-pot stealing crime syndicate at work.

Does it make life easier after you go through the trouble and expense? Yes, yes it does. If for no other reason than having the ability to tell sales people to go away without having to get off the couch. The notifications and functions work even when you’re not home. I wasn’t aware of how many neighborhood kids are playing basketball in my driveway while I am at work (don’t care, but nice to know). My wife and I can “answer” the door when we’re out shopping and leave the teenagers home, no one need know they’re home alone.

You can turn on Live view which lets you connect to the camera anytime you want (otherwise requires a doorbell ring / motion event) and see what’s going on in your front-yard from anywhere at anytime. I heard some big bangs this morning and from my bed looked out from the Ring camera and saw some kids getting a jump on the 4th of July celebrations. Back to sleep…

My family likes it so much that we are considering adding a couple of their security cameras and possibly even their full alarm system. I get some piece of mind knowing what’s happening at my home when we’re not there and better alerts (can’t hear a regular doorbell in the basement) when we are.

PowerShell; WSUS 2016 – 2012 server-side vs. client-side targeting and how to automate grouping.

Every admin or engineer who has installed a Windows Server Update Services server (WSUS) on their network has had to choose between sever-side and client-side targeting. The choice between flexibility and automation can often be a difficult one to make. Maybe it doesn’t have to be? PowerShell allows us to access the internal workings of WSUS and customise them to our liking. Read-on to see the method I came up with for allowing the flexibility of server-side targeting with automated group assignment.

For those who are unfamiliar with WSUS targeting options, server-side targeting allows an administrator to add or remove systems to or from WSUS groups in the software’s management console. Many of the companies I have worked for like to periodically change-up their patching routines. This usually means modifying your update groups. For example; perhaps all the SQL servers are currently grouped / patched together but the new Director wants them patched with the applications that use their databases. These types of changes occur in real-time and are simple to manage in the GUI when you’re set up for server-side targeting. The drawback to this option is that someone has to sort all of the computers into the correct groups manually; if your network has a lot of nodes, the task can be daunting. Furthermore, admins will need to watch for the addition of new systems and sort those into the proper groups.

The other option is client-side targeting. In this configuration, you create GPOs that tell each OU they are linked to, what group those servers belong in. This automates the sorting process but is much less flexible. In the example above, to regroup our SQL servers we would need to create new GPOs for the OUs that contain them and remove the old ones. Then we’d need to wait for all the replication and registration to occur which can take a very long time on large networks.

With a little PowerShell know how, we can close the gap between the server-side setup that most admins would prefer to run (who doesn’t like flexibility) and the client-side config you almost feel forced to run on a large network. WSUS has had a dedicated PowerShell interface since the 2012 edition. You can use PowerShell on the older versions, but you need to manually load the assemblies and the command structure is slightly different (Google it).

First, if you haven’t already, you’ll need to install the RSTAT tools for your operating system. You’ll also want to install the SQL Server 2012 CLR Types and SQL Server Report Viewer runtime. The RSTAT tools will add the PowerShell module for WSUS to your system and the other pieces will let you run WSUS reports if you need them.

For WSUS to see your systems at all, you’ll need to point each server’s Windows Update service at your WSUS server. The easiest way to do this is with a GPO linked to the top-level server and/or workstation OU(s) in your domain. You’ll need to configure the Specify intranet Microsoft update service location and the Configure Automatic Updates policies.

DO NOT CONFIGURE the Enable Client Side Targeting policy.

Your WSUS server should be configured for server-side targeting. If you don’t do this, the options for moving computers to new groups will not be available in the management console at all. The setting is in the WSUS managment console.

If everything has worked out, all of the systems that we’re going to manage patching on will now be in the “Unassigned Computers” group. This is exactly where we need them be. Having them in this group means that our script can be much simpler. We won’t have to check for connectivity, SSL, RPC, and all that jazz because the systems wouldn’t show up in the “Unassigned Computers” group if that stuff wasn’t working. In fact, if you have systems that didn’t show up, you need to start checking those protocols and settings. You’ll also want to be sure that you didn’t miss an OU with the GPO that is configuring the update services to point at your WSUS server. If you opted to encrypt the traffic to and from WSUS, you’ll also want to make sure you CA and Root certs are trusted by the client systems.

Now you’ll need to configure all your Target Groups in WSUS. Until you get the hang of how this technique works, I suggest that you create a group for each of the system OUs in your Active Directory. This makes sorting easier to implemeant and explain. Once you understand how everything works, you’ll have no problem customizing things. It is important to keep in mind that because we’re using server-side targeting, computers can belong to more than one patching group, this will not cause any kind of conflict. WSUS only patches a computer once with any given patch so whichever group applies the update first wins.

Before proceeding, you’ll need to import the ActiveDirectory and WindowsUpdate PowerShell Modules (see the first two lines below). There are lots of ways to access WSUS through PowerShell (this is Windows after all) but one of the easiet is to call the connection every time that you want to use it. We can use this code to build a list of the computers in our Unassigend Group. Make sure you adjust the portnumber parameter to match your situation. The code below is referencing the default encrypted port for the manangment console.

#Import the modules we need:
Import-Module ActiveDirectory
Import-Module WindowsUpdate
#Build a list of the unassigned computers names:
$NewServersFull = Get-WsusServer
-Name WSUS_Server_Name -PortNumber 8530|
Get-WsusComputer -ComputerTargetGroups "Unassigned Computers"|
select Fulldomainname -ExpandProperty Fulldomainname

Notice that we assigned that list of computer names to a variable? We’re going to run these computers through the Get-ADComputer cmdlet to see if it belongs to a particular OU. The Get-ADComputer cmdlet tends not to like FQDNs as an identity parameter so we need to shorten our names to just the NETBIOS portion (strip off the domain name).

$NewServers = Foreach ($server in $newserversfull) {
$server.split(‘.’)[0]
}

Now $NewServers is an array containing our short server names. This list can be used as the identity parameter in a Get-ADComputer loop. That loop is going to check to see if a computer belongs in a given OU. I like to create functions for each system OU in my Active Directory and then loop the list of names through each. When a system matches the OU I’m coding for, I insert it into the correct WSUS target group. Here’s what one of those functions looks like.

Function MY-OU-NAME {
$MY_OU_NAME = Foreach ($server in $newservers) {
Get-ADComputer -Identity $server -Properties * |
Select dnshostname,canonicalname -ExpandProperty
canonicalname| Where canonicalname -Like
"mydomain.com/mydomainsite/ToplevelOU/Servers/*"|
Select dnshostname -ExpandProperty dnshostname
}

Foreach ($server in $MY_OU_NAME) {
Get-WsusServer -Name WSUSSERVERNAME -PortNumber 8530|
Get-WsusComputer -NameIncludes $server|
Add-WsusComputer -TargetGroupName "MY - WSUS - GROUP"
}
}

The * on the end of the canonicalname is important, it allows the where statement match every system in that location. You could also use the filter and searchbase parameters to search the OU directly, instead of the canonicalname. I don’t because I had already generated a list of canonicalnames for all my OUs for another project and I’m lazy 🙂 . If you want to find the canonicalname for an OU, just pick a computer in the OU and run Get-ADComputer -Identity computername -Properties *|select CanonicalName or use ADUC.

Copy and paste a new function into your script for every OU that has computers you want to assign to a WSUS group. For each (man I type that a lot) function, you’ll need to change the Function Name (MY-OU-NAME), Variable Name (MY_OU_NAME), and the WSUS target group name (“MY – WSUS – GROUP”).

At the end of our script we can use a little logic to prevent the process from running if there aren’t any new computers in the unassiged group. We can also send a report showing the servers that were added. Or, we can notify someone that the script ran but there weren’t any new servers to add.

If ($newserversfull.count -gt 0 ) {
$body = $newserversfull|out-string
FunctionName
FunctionName
FunctionName
Send-MailMessage -SmtpServer my.email.server
-From report@wsus.mydomain.com
-to my-email@mydomain.com
-Subject "WSUS Servers Added"
-body $body
}
Else {
Send-MailMessage -SmtpServer my.email.server
-From report@wsus.mydomain.com
-to my-email@mydomain.com
-Subject "WSUS No New Servers this time -EOM"
}
$leftovers = Get-WsusServer -Name WSUS_Server_Name -PortNumber 8530|
Get-WsusComputer -ComputerTargetGroups "Unassigned Computers"|
select Fulldomainname -ExpandProperty Fulldomainname
If ($leftovers.count -gt 0) {
Send-MailMessage -SmtpServer my.email.server
-From report@wsus.mydomain.com
-to my-email@mydomain.com
-Subject "Systems that coudn't be grouped by WSUS"
-body $leftovers
}

That last little bit ($leftovers) runs the same code we started with. If our script has done its job, there shouldn’t be anything left in the unassigned computers group. If there are computers still in there, you’ll want to know so that you can manually intervene.

All that’s left is to schedule the script with task manager to run automatically with credentials that have enough permissions to manage WSUS. I set mine up to run twice a day; just create a new scheduled task and in the action set the comand to “powershell.exe” and in the arguments put “the\file\path\to\myscript.ps1” and set the trigger to your desired frequency. When you save the task it will prompt you for the credentials it should run with (be sure to check the box to run whether a user is logged in or not).

I call my little piece of magic “The_Sorting_Hat.ps1” (yes, I’m a Harry Potter fan). Its been a life saver. When I need to move a computer to a new group, I just launch the WSUS console and put it there. Since the system isn’t in the unassigned computers group the script has no effect on it. I can manually create new groups for adhoc needs and add systems to multiple groups, all while not worrying about new systems hanging around without being patched.