After installing Windows – Test Environment

I use virtual machines for testing at work.  The way I go about this is to create a base VM with whatever general purpose tools and configuration I’d like to have available.  I run updates on it occasionally and then make a copy whenever I need a new test VM.  I had bad experiences with VM cloning in the past, but that’s probably something I should look into again at some point.

I’m installing a new base VM of Windows Server 2012, so I thought for future reference I’d list the changes I make.  A lot of the changes I make are strictly personal preference.

Server Roles

As a starting place, after Windows is installed, I add the IIS Role and the Remote Desktop Services Role (RD Session Host).  Though I haven’t actually tried it yet, I’d like to try the Citrix style RemoteApp functionality so I can run individual apps from VMs remotely on my primary desktop.

Features

In addition to the .NET Framework options, I add the “Desktop Experience” feature listed under “User Interfaces and Infrastructure”.  You wouldn’t think from the description that this would add much value, but I’ve run into a few places where there are seemingly random dependencies on this feature.  I test server and client applications on the same systems, so it isn’t a bad idea anyway.

After all roles and features are installed run Windows Update to get everything totally updated.

First!

As long as the VM is network accessible, it’s easier to remote in to do everything.  So enable Remote Desktop in the System Properties on the Remote tab.  Second, disable Internet Explorer Enhanced Security Configuration so you can more easily use it to get any utilities you need.  Remember, this is an internal VM for testing things and is only even running as needed, so security features are lower priority than VMs for production purposes.

Ninite

Ninte is amazing!  I used it to install:

  • Chrome
  • Silverlight
  • 7-Zip
  • IrfanView
  • SumatraPDF
  • FileZilla
  • Notepad++
  • Classic Start

Keep the installer, because rerunning it will update the applications if needed.

Folders

  • C:Apps – The way I prefer to do things I create a folder called Apps for small single exe utilities.  SpaceSniffer is the first thing I add here because it helps clean up if I end up needing to trim the size of the VM.
  • C:Sysinternals – for the whole SysInternals Suite.  I add this to the system PATH variable so I can quickly run anything.  I also want this to always be up to date, so I use a scheduled task to run one of the following at logon
    • As long as you are 2008+ (so you have robocopy) and you have Desktop Experience feature added (so you can use WebClient), you can run this simple script with Admin privliges.
    • net start webclient
      robocopy.exe \live.sysinternals.comtools “C:SysInternals”
      net stop webclient

    • If you cannot meet those requirements, such as when you are using XP/2003, or cannot install the Desktop Experience feature, use SysInternalsUpdater with the /auto parameter
  • C:Downloads – Not that I’m frequently downloading anything on these systems after initial install, but it bugs me that downloads go into the user folder.  After creating this folder, I go to C:Users[username] and right-click on Downloads, then on the Location tab change it to C:Downloads.  Now Chrome, IE, etc will know to use this as default.
  • C:NirSoft – I don’t use NirSoft tools nearly as much as Sysinternals, but they can be nice to have available.
  • Mapped Drives – Because these VMs are not on the domain, I map a consistent drive letter to a common fileshare so it is easy to move files between VMs and my desktop.  Longer ago I had problems with just telling Windows to remember the mapped drive, so I use a script like this at startup.  The user is specifically for these shares.

    net use [drive]: /DELETE
    net use [drive]: \[server][share] [pass] /USER:[serveruser]

7-Zip

In the 7-Zip options on the 7-Zip tab I uncheck “Cascaded context menu” and leave only

  • Extract Here
  • Extract to <Folder>
  • Add to <Archive>.7z
  • Add to <Archive>.zip

On the Settings tab, check Show “..” and Full Row select.

Other

Agent Ransack/FileLocator Lite – Same program, just renamed by the author to have a “safe for work” name.  Very nice search application.

Notepad++ XML Tools – Some programs write XML without whitespace, which is painful to read without the pretty print feature (Ctrl+Alt+Shift+B).  Install from the Plugin Manager within Notepad++.

Disable the Shutdown Event Tracker

Scripts and exported registry settings for the topics mentioned above: ExtractToRootOfNewInstall.zip

For my home system it starts the same then add gaming and development apps.

Advertisements

amBX Usability Enhancements

I use amBX Gaming Lights and while I like them, there are some rough edges.  If my computer would go to sleep, the driver/services wouldn’t work correctly unless they were restarted.  And applications like amBX Illuminate would hang as a result, so that needed to be restarted too.

So I wrote a batch script to do this.  Then I used a scheduled task to check the event log for the Power event that meant the system was waking up.  The batch scripts need to run as Administrator, but scheduled tasks have an option for this.  Cool, now the lights work properly after the computer wakes.

But then I decided I wanted shortcut keys to manually stop and start the lights.  So I bound the batch scripts to the extra keys on my Logitech G710+ Mechanical Gaming Keyboard.  But the batch script needs to run as Administrator and there wasn’t a built-in way to do that with the keyboard configuration, so I had to find ways to make that happen.  Now the scripts auto elevate which is seemless if UAC is off.  With UAC on this will trigger a prompt, but at least it will work.

Then there was the minor problem that killing Illuminate would leave orphaned icons in the system tray.  This too could be solved with a bit of work.

Included is:

  • A script to (re)start the amBX services and amBX Illuminate
  • A script to kill amBX Illuminate
  • RefreshNotificationArea, which is called from the scripts to clear orphan icons in the system tray after killing processes
  • XML export of a scheduled task to run the restart script when the system wakes from sleep.
  • XML export of a keyboard profile for Logitech’s Gaming Software, which binds G1 to (re)start the lights, and G2 to turn them off.

The scheduled task and keyboard profile assume the scripts are in C:AppsamBX.  Be sure to update the path if needed.

Though the scripts are stopping and starting amBX Illuminate, the same principle should apply if the scripts are changed to reference an alternative program like Aurora Synesthesia or glOW.

Scripts available here: amBX Usability Enhancements

Current Directory in Elevated Batch Scripts in Windows 8

I am seeing a difference between elevated batch scripts in Windows 7 and Windows 8.  If you copy the following in the a batch script and run in either version, you get the current directory.  However if you right-click Run As Administrator, you see the current directory in Windows 7 and “C:Windowssystem32” in Windows 8:

@echo off
echo Current path is %cd
%pause

Fortunately there is an easy workaround by changing the current directory to the path of the current script (parameter zero):

@echo off
echo Current path is %cd%
echo Changing directory to the path of the current script
cd %~dp0
echo Current path is %cd%
pause

I’m using this in context of the StackOverflow answer showing how to auto elevate a script:
How can I auto-elevate my batch file, so that it requests from UAC admin rights if required?

I added this info in case anyone else had the same issue: http://stackoverflow.com/a/18037959/221018

 

Sleep Monitoring and Quality

Originally posted as an answer here: http://www.paleohacks.com/sleep/tracking-sleep-with-an-app-22289

I’ve used Zeo for Android for the last seven months. I really like having quantifiable data to make sense of how I feel after I slept. Though I only used it more toward the beginning, their website has some pretty good tools to visualize the data and to track variables and their effect on your sleep (such as caffeine, alcohol, times you woke for the bathroom, etc). The headband is comfortable, so no worries there.

The one complaint I had was that the SmartWake alarm feature never worked for me. Because Zeo has an open API for the Android version I actually wrote my own implementation: http://projects.stephenklancher.com/project/id/85/Zeo_Sleep_Monitor

Aside from monitoring these are the things that I’ve done personally to get better sleep:

– Installed blackout blinds so my room is as dark as possible
– I take Magnesium at night
– I wake up with gradually increasing light: http://www.amazon.com/gp/product/B003XN4RIC/ref=oh_details_o03_s00_i00
– I’ve also taken to sleeping with ear plugs. I would not have thought this would make any difference, but I seem to wake up less often now.

Drobo FS

Finally able to get my Drobo FS!  FedEx didn’t leave the little delivery notice to sign, so I had to drive 30 miles away to go pick it up or wait until they try again next week.   I’ve wanted a standalone NAS for a long time and I’ve been interested in the Drobo since a friend at work told me about the original (direct attached, not NAS) model.

Ok, I should note that I work in Tech Support for a software company.  A few of my criticisms or commiserations may be based on this.

Current Storage

Old computer with degraded RAID5 array

New computer will be only SSD... let Drobo handle the storage.

My current storage situation is that I have a 4 x 500Gb RAID5 array on the motherboard (DFI LanParty NForce 590) of a computer I built at the end of 2006.  One of those drives died and was RMA’d a few months ago.  Then the replacement died while I was waiting for my Drobo to arrive (RMA in progress).  So the array is hanging in there in a degraded state with three drives.  There is also a 1TB drive on that system and a 1Tb drive on my current system (built Jan 2010).  I’ll need to shift files around to be able to move empty drives to the Drobo.  My plan is to clear the 1Tb drive of my current system and start the Drobo with that.  Then I can move some files over to make enough space to clear another drive, etc.  I’ll need to be able to move 1.1Tb elsewhere before I can take apart the array and move those three drives into the Drobo.

Unboxing

Anticipation was already high as it was a new tech toy I had wanted for a long time.  The packaging sustained this feeling as I opened the outer shipping box to be greeted with the words “Welcome to the world of…”.   Lifting the flap of the inner box revealed the white on black distinctive drobo lettering.  Packaging may not be a huge deal, but it is a nice first impression.

The simple instructions underneath suggest that I 1.Install Dashboard, 2. Insert Drives, 3. Connect Cables.  One minor concern is that it says to start with at least two drives.  I”m pretty sure this is just because you need more than one to to protect against a drive failure.  The Drobo Calculator (http://www.drobo.com/calculator/drobo-s/index.php) and a KB article (http://support.datarobotics.com/app/answers/detail/a_id/276) suggest that it will function with one.

This inner box I’ve described contains the CD and the User Guide on the left and the power cord on the right.  There is a 6′ Cat 6 cable underneath the User Guide.  Removing this inner box reveals the actual device, well protected by foam.

Installing the Dashboard

I took a detour and registered my Drobo from the CD’s link.  I was surprised to see that they didn’t have Windows 7 listed on their question of which OS it would be used with.  I chose Other and typed Windows 7.  Not all that important, but those are the kind of oversights that would bother me in my job.

Then I figured I would check their support downloads to install the latest version from there.  I was surprised that it said Drobo FS users should install from the included disk and to contact support if you didn’t have it.  This is, of course, the perspective of someone who works in Support, but the latest installations should always be available on the website, even if there are no updates to what shipped.

Proceding with the install from the CD was uneventful.  Finishing the install opens the Dashboard with the flashing Drobo logo: “Ready for Connection”.  Time to get the physical device going.

It occurs to me at this point that I’ll need to shut down this computer to get my starting drive out.  With greater worry it occurs to me that the music is playing off  of this drive.  Panic subsiding, I realize I could get out my netbook and stream music from the copy I’ve made on my existing RAID array on another computer.  It’s good to have computers lying around everywhere.

Setup

Ok, got my 1Tb drive out.  It clicked into the Drobo very easily.  I wedged it in between my Wii and my roommate’s Xbox.  Clicking the Cat6 cable into the last open port in the switch in this room makes me think I should have gone with the 8 port instead of the 4.  Plugging in the power I expect it to spring to life…  Ah, power button.  Ok, now I get the full light show.  Green, blue, orange/yellow.  It does a crazy dance for a bit then settles on one green one red.  My first thought is “Hard drive Christmas!”  But less jolly is the suggestion that lights seem to be insisting I insert a second drive.  As I mentioned above, I had the impression that I could start with one, which would make my data shifting much easier.

Looking at the Drobo Dashboard, it is still blinking “Ready for Connection.”  Looking back at the picture I took of the bottom of the Drobo (hey, I’m in my chair the Drobo is allll the way over there), I match the MAC address and see that my router has assigned it an IP.

Unnecessary Tech Details and Reorganization

Since Drobo Dashboard disappointingly isn’t seeing anything (Yes, I’ve exited from the system tray and restarted it), I try navigating via IP and find that 192.168.0.145Public contains the zero byte file “.com.apple.timemachine.supported”.   Supporting backups via TimeMachine is cool, but I’m not an Apple guy, so my joy is limited.  For kicks I try creating a new text file.  Yes, it appears that I can write to the share.  I’m just a little concerned that copying data may be risky if I’ve only got one drive and the Dashboard doesn’t recognize it yet.  Ok, I think even if I assume it is fine, the calculator suggests it reserves half of it.  So that’s like 465Gb free space there.  The other Tb drive now has about 900Gb that would need to be cleared before use…  I think this means I’ll need to delete some stuff and start some big file moves then let that go overnight.  I’ll move about half on to an external 500Gb drive and the other half on to the RAID array which will shortly after have to be moved back off.

It’s data tetris!

…Upon waking up I see Windows wants to know if I know that moving the files means they won’t be shared any more.  Damnit.  So now some more waiting as files transfer.

Dashboard and Second drive

Turned off windows firewall and now the Dashboard sees the Drobo.  Not sure why it didn’t show a warning that it blocked it.  It prompts you to set the admin password and you can enable DroboApps in the same place.

Putting in the second drive started the green yellow blinky dance and the data protection status on the Dashboard suggested it would take about 15 minutes.  I was able to read and write to the drives at this point, and a quick file copy showed 34Mb/s write, 40Mb/s read.

When it finished I started mass transferring files.  Over time the speed fell to 26Mb/s.  After enabling jumbo frames (9K), which required a restart, sustained transfer stayed at 31Mb/s.

DroboApps

Before restarting to enable Jumbo frames, I also installed some of the DroboApps: http://www.drobo.com/droboapps/apps-for-drobofs.php.  You just drop the tgz in the DroboApps share.  The fact that you need to restart doesn’t seem necessary.  Maybe all it does on restart is unzip them.

I installed DroboAdmin (nicer management of apps), Apache (which I’m pleased has PHP built in), CTorrent (Command line torrent client), Dropbear SSH, and Wake on LAN.

I used Putty to SSH into the Drobo and look around.  I’m not great with nix comands, but still it’s cool to have access.  CTorrent didn’t seem to work.  I don’t know how much I’d want to use that over command line anyway, but it seemed worth trying.  Wake on LAN looks like it might be fun to add to a cronjob…  I don’t think my current computer’s bios has a setting to turn on at a certain time, so I might have the Drobo do it via WOL.

DroboCopy

DroboCopy is a part of the Dashboard software worth mentioning.  It lets you schedule simple mirroring/copying between directories.  Some people might want a more elaborate kind of backup, but for me, this is exactly what I want and this saves me the extra bit of effort of using separate software.

Pulling Out a Drive

I was wondering if there was anything else I should add here, then I had an idea.  It was the same kind of “I wonder if it’s hot?” idea as the many times I’ve burned my hands.  The whole point of this thing is to handle drive failures, so how about I pull one out with my file transfer still going.

I pushed the release and the lights started yelling at me in orange and red.  I looked at my file transfer: it didn’t even slow down.  The Dashboard software popped up a notification letting me know that it can’t protect against failure with only one drive.

The speed dropped some when I put the drive back in, but that makes sense.  It needs to do the the green/yellow dance for a few minutes to get caught up.  Although I’m wondering if I should cancel the file transfer until if finishes… the time estimate has gone from 2 to 3 to 4 minutes.  Ok, it went to 5 minutes now, so I’m going to cancel the file transfer and let it finish.  I would have hoped it could have handled that, but it looks like you can transfer data faster than it can catch up on replication.  Still it’s not a bad idea to just let it finish before continuing to transfer data.  And this would only be a issue during sustained mass transfer while a drive is put in.

Separate Shares

I created a share specific to myself for some stuff, then left the public one for everything else.  DroboApps are also mounted as a share.  I had an issue where it tried to map a share over and over until all letters were taken.  I unmapped them manually then restarted the Dashboard and then it was fine.

Final Thoughts

I still have a lot of waiting to do as things copy over.  And I still have to play more data tetris before I can break my RAID5.  Ah, I should mention that it is pretty quiet.  It isn’t inaudible, but it is quieter than other electronics in the same room, so I’ll never hear it.

I’m sure I’ll play with apps more later, but for the most part I’m going to just enjoy having a unified file share independant from any of my computers with zero configuration redundancy.

…I meant to edit and post this a month ago.  Oh well.

Communicating with Log Files

I can only hope that somewhere out there people are paying attention to web server stats and what they mean for customer demand…
When I go to cbs.com/video, click Big Bang Theory, click full episodes, see nothing listed, then close the window…
When I go to abc.com click full episodes and have access to great quality episodes of everything and the ads are of easily tolerable length then it becomes a permanent tab in my browser…