reading: ReWORK

Finally managed to drift away from reading technical manuals, implementation guides and product evaluations and read something for plain old enjoyment.

There's this overhyped software developers nest called http://37signals.com/. It's co-founder JASON FRIED has written a book "REWORK", which is more a collection of blog posts than an actual book, but still enjoyable, as long as you're not positioned to perceive everything that's written there as the absolute truth. Some things will work for you, while others will not.

P.S. I passed the M$ Desktop Virtualization exam, which currently puts my learning on stop as I've about had enough for the past several months, time for a micro-break.

MS Training

We have an EU funds program that covers some of the employers expenses on personnel education via courses and/or exams.

The downside is that you have to sign up for those in advance and this works out perfectly fine for us; the spots are filled in in the last moment. 

Implementing and Managing Microsoft Desktop Virtualization

Funny thing is - after 3 years have passed since the exam has been available to public and 2.5 years after the release of the courses - the technologies mentioned in the courses are more or less deprecated (the concept is not, however) - med-v 1.0, app-v 4.6, server 2008 r2; in IT things go fast!

These are the first MS courses I ever attended, the average price being 15 hundred USD is not really something I'm willing to give up unless promised a return on investment; and making money of students is a massive trend recently; there's a nice Russian proverb about that - "If you can't do something, go and teach it".

Days of slide-reading (English studying materials - > Latvian translation) are already getting to me in a bad way. No real-life examples; though, it has been mentioned that it's really doubtful some things like Med-V are being actively used in enterprise environments (from my experience - it's less expensive to actually solve those compatibility issues than support extra infrastructure components).

The not-so-good first experience. 

Things I enjoyed:

1) MS has everything laid out and managed, specific requirements for hardware, software, step-by-step guides for all the tasks involved

2) study class hardware was pretty good - i7, 16 gb of ram and raid0.

3) high-speed internet in classrooms

4) structured studying material and proper approach

5) a minor bonus to my CV + experience

6) Take-aways: book, e-book, good times 

Not-so-good:

1) Slide reading; honestly I would feel more comfortable sitting with a book and doing all the reading/labs all by myself; probably the trainer did not bring a lot of benefit

2) Course would be actual at the time (or even before) of it's release +1 year tops, but not now

3) Could really use more real-life examples (we had almost nil) 

The aftermath is that I have to pass the following exam: Exam 70-669: TS: Windows Server 2008 R2, Desktop Virtualization 

Being on the lectures really made me wonder how much time (and health) do I really invest in learning and studying to be competitive on the market and does it really pay off, this will require a separate blog entry.

Google has you

This has happened last week. For the first time in my live I've verbally heard a person saying he is giving up on solving an issue/incident/problem/whatever because he failed finding it in a search engine.

This is how ingenuity plummets.

P.S. It's been like 1 month since I've started using Bing too; for my taste and from the search q's I usually need - it's strictly worse than Google. Though using both improves the experience.

Event Viewer monitoring for app-v and combating lazyness

Pre-story

 

Some time ago I had a .vbs script for pulling data from a number of PC's that were configured with app-v client 4.2. For some odd reason way back when I decided on implementing it by parsing app-v log files (there even was a special utility from Microsoft that let you do that!) by grabbing them from the administrative shares. On paper it looked like this:

 

1) Get all app-v .log files from a number of servers 

2) Parse them for relevant entries defined by criteria (typically day/week/month periods of time) 

3) Output to excel 

4) Sort and color the data in excel to make a pretty report  

To my dismay - the script has been lost over time and I've been rather lazy to re-write it, seeing as how there weren't a lot of cases I would use this on. 

Lately, though, there have been a number of incidents in customers' environment that required aggregating such information and asking the users for error message information is not my style.

Knowing the general health state is never a bad thing too or understanding the scale of tragedy if you like to put it like that. 

Pulled myself together one evening and used powershell (even powershell v3, because I've been in a hurry to get it done, there are a couple of nice features there that I didn't want to write custom functions for) to solve this.

The works

 

cls

#ReportSettings

#Number of days to q the report for
$ReportDays = -7

#Source of the event
$eventsource = "Application Virtualization Client"

#Error message to search for
$errormessage = "*The parameter is incorrect*"


#Setting timestamp
$timestamp = Get-Date -format "dd-MMM-yyyy HH.MM"
$timestampfull = Get-Date

$ScriptTitle = "<h2>App-V Health Check<br> Author: gregbin<br> Report Date: $timestampfull<br></h2>"
$ReportTitle = "App-V Health Check Author: gregbin Report Date: $timestampfull"

#I had to use this as the number of target servers can be rather large
Function Limit-Jobs {    		
 
	Param([int]$MaxConcurrent,[int]$PauseTime)     	
	$jobs = (get-job -state running | Measure-Object).count      
	$RunningJobs = 0       		
	if($jobs -ne $null)	{$RunningJobs = $jobs}     	
	while($RunningJobs -ge $MaxConcurrent)	
	{		
		$jobs = (get-job -state running | Measure-Object).count      
		$RunningJobs = 0       			
		if($jobs -ne $null){
			$RunningJobs = $jobs 
		}   
 
		Write-Warning "Current Running Jobs: $RunningJobs" 
		start-sleep -seconds  $PauseTime 		
	}
}



#Defining target servers; can be populated by using other popular means, for example, through pulling AD
$Servers = @("test")

#Formatting for html output
$head = '<style>
BODY{font-family:Verdana; background-color:white;}
TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
TH{font-size:1.3em; border-width: 1px;padding: 2px;border-style: solid;border-color: black;background-color:green}
TD{border-width: 1px;padding: 2px;border-style: solid;border-color: black;background-color:palegoldenrod}
</style>'


#Starting numerous jobs to pull data from servers
foreach ($server in $Servers)
{
#Limiting the number of Jobs
Limit-Jobs -MaxConcurrent 20 -PauseTime 10
Write-Host "`r`nCurrently starting job for: $server"
Start-Job -ArgumentList $server, $ReportDays, $eventsource, $errormessage  -ScriptBlock {param ($server, $ReportDays, $eventsource, $errormessage) Get-EventLog -LogName Application -ComputerName $server -EntryType Error -Source $eventsource -After (get-date).adddays($ReportDays) | Where-Object {$_.Message -like $errormessage}}
}

$FinalReport = Receive-Job (Get-Job) -Wait -AutoRemoveJob

$FinalReport | Sort-Object TimeGenerated -Descending | ConvertTo-Html -Property TimeGenerated,MachineName,Message -Title $ReportTitle -PreContent $ScriptTitle -PostContent $ScriptTitle -Head $head >> appvreport_$timestamp.html

Conclusion

Next steps include writing an UI to accommodate for this functionality, I can definitely see myself using this in multiple customer environments when I need to pull event viewer data without having to setup event subscriptions; for app-v and whatever else.

It's the little things

 

It's the little things.

Recently I've been using a utility (think telnet.exe or ftp.exe) that has a lot of command-line parameters and some of them return too much data to be correctly viewable, my workaround included writing all commands inside a text file, passing them to the executable and writing the executable output to a text file.

 

start

command 1

command 2

command 3

etc...

exit

 

cmd /c "app.exe < commands.txt > output.txt"

 

I've just remembered that both command prompt and powershell have a screen buffer size setting. A single check box can make you happy; so many ways to do things. :)

Recent developments

 

Recently been involved with hitting Citrix certifications, hard. It did pay off, I'm now officially "Citrix Certified Enterprise Engineer for Virtualization".

"A25 Engineering a Citrix Virtualization Solution" exam was the most relevant one in terms of what you do and encounter when operating an environment involving Citrix products and solutions.

In terms of actually preparing for the exam - I did not take any official trainer-led courses, those would be too rough for my budget. I did have access to cbtnuggets.com and trainsignal.com, those, plus the KB and citrix forums helped a lot. Of course - a lot of hands-on was also involved, which led me to consider that 16 GBs of RAM is not really enough. :)

I've also made small text notes with links to KBs and useful command lines, all of those helped.

Overall - I'm very satisfied with the experience, not so much with actually getting the certification, the fun part is working for it. ;)

Cloud technologies and good times

To my surprise - our local MS office @ Riga hosts a number for events for both Developers and IT Pro's.

A friend of mine dragged me into one of them: "What you need to know to build your own Private Cloud". To my surprise - there were very few people attending this (at least from It Pro'S, there was a swarm of developers, though), in the end we sat down with only 5 people and spent an extra hour discussing the presentation and personal experiences.

The conference was all about praising MS's System Center products and comparing them to VMWare (5.0, instead of 5.1, I might add) and Citrix (no RedHat). The good thing, however, was the amount of cynicism and fun we took out of it and in the end of the day - it was more of a cozy experience sharing event than anything else.

Main speaker was DPA's lead architect Andrejs Mamontovs - a special thanks to him for getting into this event. The DPA is partially involved with infrastructure solutions for different Latvian customers.

I would suspect that adaptation of such data center aimed products as System Center will be slow in Latvia. :)

DRAFT Cloud Computing Synopsis and Recommendations; Recommendations of the National Institute of Standards and Technology

http://csrc.nist.gov/publications/drafts/800-146/Draft-NIST-SP800-146.pdf

World is a small place

Just when you think the planet cannot possible shrink any further - it magically does.

Some time ago I've been browsing through TED's presentations, "Mikko Hypponen: Fighting viruses, defending the net" to be more specific. 10:00+ peaked my interest where the orator talks about a signature left in one of the virus files - a Russian car plate number, which belongs to "a security expert" - sporaw, now, the guy is good - the blog entry where he wrote his own piece of software to recover data from a HDD really got to me. :), but it's not about that.

At the same time, when I have a moment or two, I like to peek at what's going on in the Russian part of the internet and seeing as how I'm just a bit into politics (sometimes when I want to get down to earth and feel a bit more dirty), I occasionally monitor the Russian blog community of LJ, which is pretty heavily centered on women beauty and cosmetics, funny pictures of cats and politics.

Now I remembered, that the earlier mentioned character's name came up in a story related to Russian opposition politics e-mail account being stolen. And judging by the way blogger with a Mercedes expresses his eternal feelings of hatred for the opposition (and even did a very detailed (and biased) review of the situation) - there are serious reasons to suspect that he was the one that hacked the gmail account. He has been accused of doing that, but surprisingly denied the allegations. My money's on him anyway.

Now, the fun part for me is that these two non-related things and resources cross-reference in a very surprising way, knowing that I didn't read the news sites to get to this. Strange times indeed.

 

Stuxnet and a bit of AVs

Antivirus software. I wasn't really much into it for personal use before MS released Microsoft Security Essentials. Reasons being that most products on the market had the tendency to completely obliterate PC's resources - eating up to 50% of CPUand hitting down on disk I/O as hard at the same not offering enough tangible value for the more experienced users.

Previously I had some hands-on Panda AV, Kaspersky, AVG - more or less a disappointment. On the other hand -  Security Essentials is almost untraceable in terms of performance impact and does it's job fine, though it's a bit of buggy on Windows 8 (where it's actually embedded inside the OS as a service). But I'm getting a bit carried away - IT security not normally being my field of expertise and advertising MS products is not the point here.

 

One of the more recent events got me surprised - one of my closer friends who's also into IT did not know about the much hyped Stuxnet virus infection running rampart on lucky Iranian PC several years back (and possibly still).

To put it simple - Stuxnet is a highly sophisticated computer worm. Possibly the most sophisticated one ever created. As the wiki states - it's been found to use four (4) zero-day attacks, which most certainly is an "overkill" that demonstrated just how much resources and effort were involved. This is the part I want to smile and add - "if only all that energy and sens of purpose would be put to good use", yet it depends on the definition of good. :)

We've started to debate as who can possibly be behind the engineering of this modern-day miracle and a couple of days later this got me back to reading the superb the wiki article, after that I remembered Mark Russinovich had a worthy series related to this and I've perfunctory went through a while back.

For the less technical detail and more vivid tour to what's happened, there's a great read @ Wired.

 

As for the debate - we've had split opinions - I more or less tend to agree with the public materials available, while my friend has repeatedly stated that involving so much resources and going for a very long shot that the final targets systems will be infected, plus not having a clear motive and measurable profit/gain from the whole operation would seems like a very doubtful affair a specific nation/state would be involved with.

Time will tell.

App-V 5.0 - the not so positive review

App-V 5.0 is here! http://technet.microsoft.com/en-us/windows/hh826068.aspx

There's a lot of info on the internet from the Beta days, I haven't really been tempered to play with the product until the final release, after all, it's the final release that you will consider to roll out in production.

Nice review reads are:

http://www.brianmadden.com/blogs/timmangan/archive/2012/11/01/Mangan-on-what-you-need-to-know-about-microsoft-appv-5.aspx

http://www.softgridblog.com/

 

My impression is that product screams - we just had to make it work on windows 8 and server 12 and we also want to force everyone to use powershell. It's not about improving the product features or revolutionizing the market, it's about selling the new OS.

 

I love powershell, it's great, easy and allows you to get the extra features you need without writing pages of code, but in App-V 5 it feels forced.

 

Want to convert and test packages from earlier app-v versions? No, we're not offering an UI tool for that, use powershell, it's great!

Want to configure the app-v client options through UI? No, we don't have that, use powershell, it's great!

Want to update the new version of package on all of your remote desktop services farm? No, we don't have a tool for that, write a powershell script, it's great!

Want to add new shortcuts to the package, update scripts on-the-fly and enjoy all those amazing features that have been built up in previous releases of the product - no, we don't have that. Open package, edit it, save, upload to server, run the script that you've written previously to force a server-side update.

Want to publish app-v 5 on xenapp - no, you can't do that, write a custom powershell script, powershell is great and citrix and ms are best friends.

And the list goes on.

 

I like the connection groups, though. In App-V 5.0 they're working the way they should have been from the beginning - not on the package layer, but from the management layer.

Shared Content Store is nice, saves up disk space, increases network consumption.

New streaming protocols - http, smb. Nice, will increase adaptability.

Integration between different software pieces should be better - app A calls app B and checks app C - all possible now because the application files are local.

 

Conclusion: Doesn't bring much value to the table - still has a client dependency, Dynamic Suite Composition wasn't widely used to consider Shared Content Store a breakthrough. Raw product, stay away unless desperately needed for win8/server12. I'm keeping my fingers crossed for SP1.

 

Considerations:

"The package converter detected that this package is not supported for conversion since it was created using App-V version 4.2.2.15.  The package converter only supports converting packages created using App-V 4.5 and above.  Try upgrading your package to a supported App-V version before converting."

"Streaming optimization is slow now; first launch time is at least twice as much compared to 4.6"

"C:\ProgramData\App-V\53C8B503-1A7B-4CE5-BCBE-D62C1D0962D1\F202D56D-E6AD-4088-8F73-5D7B323E1084\Root\VFS\ProgramFilesX86\Mozilla Firefox\firefox.exe

The path length has made my day - I wonder what happens when the limit is reached (which will happen pretty fast)."

"We just received confirmation from Microsoft that there has been what we deem a major behavior change in App-V 5.0 from 4.x. With 4.x you could add a user to an AD group that is assigned to a virtual application then on the client machine the user could right click the App-V icon in the system tray and choose 'Refresh Applications' and the app's icon would appear immediately. You could also wait for the configured automatic refresh time and the app's icon would be added immediately. Same applied is you removed a user from an app group.

This is no longer the case in App-V 5.0 as there is only one way to get app to be added or removed from client and that is to have them log off and log back on. "

 

Useful notes:

Flush client cache: Get-AppvClientPackage -All | Remove-AppVClientPackage

Sync Publishing Servers: Get-AppvPublishingServer | Sync-AppVPublishingServer

Start an app in virtual env: $app= Get-AppvClientPackage "NAME"

Start-AppvVirtualProcess -AppvClientObject $app cmd

 

http://technet.microsoft.com/en-us/library/jj713487.aspx

Update: Even more weird - "AppV 5 needs different PowerShell Environments: module AppVSequencer needs x64 and AppVPkgConverter needs x86".