May 2012
M T W T F S S
« Sep    
 123456
78910111213
14151617181920
21222324252627
28293031  

Mouse without Borders

As someone who works with computers and software for a living, there have been many times where I have found myself working with more than one computer at a time. Most times this has been in a client-server type situation, but occasionally I will either need to test with two or more distinct machines or it is just more convenient to do so.

The most annoying drawback of using more than one machine however is the switching between different sets of mice and keyboards. The different monitor is not so bad, you just turn your head slightly, but switching between keyboards and mice really breaks your flow.

If you work in a Microsoft environment and need to use more than one machine I can’t say enough about a side project developed by Microsoft Developer Troung Do in his part time. This product allows you to share one keyboard and mouse across multiple machines. It also allows shared clipboard and file drag and drop machine to machine. I have been using it for about a month and I feel as if my productivity is way up. No more breaks in my work flow and I don’t have to stop to use a shared directory to copy things across the network in a traditional manner. It’s really surprising how much extra gets done when you have a tool like this at your disposal. And of course, like most of my favorite toys, it’s free.

The Microsoft description of this tool (with video) and download link can be found here.

Although I haven’t tried it, an alternative open source project that is similar is called Synergy.

Out-GridView

In a previous post I introduced both the Format-Table and Select-Object cmdlet’s as a way to format the output from Powershell. While these cmdlet’s do provide a better end product, it still locks you into a text based solution. A better way to present this information, in a windows like fashion, would be to use the Out-GridView cmdlet.

Out-GridView will display the data in a separate window that has more of a native windows feel to it. In addition, it provides independent sorting and filtering of the data passed to it. This inturn provides the end user with the ability to manipulate the data to suite their needs better. Adding a pipe with the Out-GridView cmdlet as follows:

Get-ChildItem C:\ -rec | Where-Object {($_.Length/1MB) -gt 250} | Sort-Object Length -Descending | Select-Object FullName, Length | Out-GridView -title “Files greater than 250MB”;

yields the following output (example includes use of the filter on file size):

It should be pointed out that this cmdlet does not provide print or save to file capability but if reviewing the data is all you need Out-GridView displays the data in better format for the typical windows user to consume. If you need to print or save the data you’ll have to use additional logic or cmdlet’s to do so.

Out-GridView is provided as part of Powershell V2 and requires the Microsoft .Net Framework 3.5 (pre-req to Powershell).

Spring is here……..finally!

A simple pleasure is working in the yard. Really.

The snow sitting in my yard and the edges of my driveway has finally melted enough for me to start clean up in the yard. I spent about four hours doing various tasks around the yard. While these may seem boring and a nuisance, the simple tasks involved in raking, cleaning up plowing debris and a little pruning makes me extremely happy.

I think besides the light exercise and fresh air, the fact that these are finite tasks gives me immediate gratification. Believe it or not I’m looking forward to more Spring tasks to come.

Block the Bad Stuff

As a parent with kids in their formative years, I have always been conscience of the possibility of inappropriate webpage’s popping up in our browser.  Even when keeping a close eye on “screen time” it is still possible to get bad content up without meaning to.  After realizing this possibility many parents leave things as they are and just worry.

Enter Content Filtering….

Content Filtering is a term that describes the ability to cull out content based on rules about the content. In larger environments, this is usually done with a combination of hardware and software. The hardware is usually a separate computer hooked to the network that contains the filtering software. This computer watches requests zipping by and blocks them.  In smaller environments, like households, this is usually accomplished by software installed on each computer or as part of the anti-virus software.

Many families do not have the luxury to deploy additional hardware as larger environments do so they generally opt for the software or anti-virus solution. This solution does meet the needs of most homes, but requires a separate install for each computer in the house. In addition to the install you’d also need to configure each computer to ensure it is blocking the appropriate sites. Last but not least is the additional cost of the filtering software.

What else to do?

Another option is to use a DNS based solution.

Domain Name System or Domain Name Servers (DNS) are the means by which website names are matched up to their actual internet address. DNS functions much like a telephone book where looking up someone’s name yields their telephone number. In this case, looking up the website tells the browser the actual address to look at.

This provides for one set of filters that apply to all the devices in the house as it happens at the point where websites are found.

One popular solution is the OpenDNS service. This service provides for filtering of content by filtering level (High, Medium, Low or None).  Levels are based on the aggressiveness of the filtering with High having a broader interpretation of what should be blocked in terms of types of sites (weapons, pornography, drugs, etc.)  while low is less aggressive. Specific sites can also be specified as allowed (whitelist) or not (blacklist).

Getting your home network using OpenDNS requires you to add DNS addresses specific OpenDNS to your home router. Usually your internet service provider provides default DNS addresses so computers in your home can use that internet “telephone book”. OpenDNS suggests replacing your current DNS addresses with theirs. From experience, I would suggest adding their DNS addresses after at least one of your current ones or after your current gateway. This allows you to use the OpenDNS service without cutting out your current home network. I did this at my home to ensure my local computers could see each other as well as my local wireless printer.  DNS entries would look something like this:

OpenDNS provides for three levels of content filtering for the household:

  • FamilyShield provides a one stop, no modification solution to cover web browsing for everyone in the house. This seems to be targeted at people who want the protection without thinking about configuration. There is no fee for this service
  • OpenDNS Basic provides protection and allows you to choose the relative level of protection with the addition of a customizable black and whitelist. It also provides limited reporting on blocked sites and usage. Support is via email and there is no fee for this service.
  • OpenDNS Deluxe provides protection and configuration like Basic but with extended options, more reporting and 9-5 telephone support. There is a minimal fee for household support.

Once configured, this service will provide strong content filtering day in and day out protecting your family from inappropriate content. I highly recommend it. You can get more information and install instructions at the OpenDNS website.

Office in the Clouds

With the recent marketing campaign by Microsoft highlighting their Windows 7 cloud enhanced software, it is tempting to think that they are the only solution for consumers in the cloud. While this may be what Microsoft wants people to think, it is also good to remember that other companies have played in the space before. Sometimes these solutions consist of software running on your computer that just saves your data in the cloud and sometimes it is a whole web solution where the application and the data live in the clouds.

One cloud based solution provided by Google predates the current Windows 7 solutions by quite a bit (2007). It is an Office Suite, think Microsoft Office, called Google Docs that is entirely web based. Google Docs allows anyone with a Google account to create word processing documents, spreadsheets, presentations and drawings entirely in the browser. Since the only tool required is a web browser, anyone can generate documents and store them in their Google Docs account without needing any software on their local computer.

While saved in the cloud, documents can be shared among multiple authors. This allows modifications to a single document from one or more people. This enables teams of folks working at disparate locations to collaborate on the same document without the need to email the document around. Removing the need to move the document speeds the overall process by removing lag time. This sharing can be used in numerous applications from students working on assignments, to business people creating a proposal, to members of a not-for-profit sharing presentations supporting their organizations….really any group needing to create or deliver documents.

Once documents are saved in Google Docs they can also be exported to the local computer in a variety of formats.  Most of the doc types in Google docs can be saved into it’s Microsoft equivalent: Document -> MS Word, Presentation -> MS PowerPoint, Spreadsheet -> Excel. In addition almost all of them can be saved as Adobe Acrobat Reader’s PDF. Other formats are also supported on a document type by type basis. If you have documents created by a word processing program these documents can also be uploaded from the local computer to Google Docs.

Given the initial investment, portability, functionality and sharing capabilities this is a Cloud based application that can fit almost anyone’s needs. Everyone should give these tools a try, particularly if they are interested in exploiting the cloud concept.

Give it a try and comment on it’s use and appropriateness for your need:

Google Docs Demo

Google Docs

Format the Output

In my original post, I used an example script to find all files that were over 250MB:

Get-ChildItem C:\ -rec | Where-Object {($_.Length/1MB) -gt 250}

The default output shows each file in an extended format displaying the PowerShell type with some summary information such as last change time, length and file attributes. This output is somewhat clumsy and not easily consumed when you just want a bit of information, like a list. In those cases,  its best just to display only what you’d like to see. To do this we only need to add a couple more cmdlets separated by pipes as follows:

Get-ChildItem C:\ -rec | Where-Object {($_.Length/1MB) -gt 250} | Sort-Object Length -Descending | Format-Table -auto -property FullName, Length;


Continue reading: Format the Output

Where do I run these?

It’s worth noting that unlike Batch files or VBScript files, PowerShell scripts cannot run natively in the Windows environment.

I know, I know you’re probably thinking……What does that mean??!

That means that out of the box you cannot just run them by double clicking them or running them in a CMD or DOS window. PowerShell comes with it’s own shell environment that the script needs to run within. After downloading and installing PowerShell you’ll see a new PowerShell folder from Start, All Programs called Windows PowerShell. Within that folder you’ll find two options, one called Windows PowerShell and another called Windows PowerShell ISE.

Continue reading: Where do I run these?

Powershell

Most people who have worked in technology have had the need from time to time to code small helper applications in order to help them get things done quicker. This is typically done via a scripting language that works with the type of computer they normally use.

On Windows platforms, this was first done with something called Batch Scripts. Batch Scripts worked, but were somewhat cumbersome and didn’t easily manipulate larger chunks of data or programs and output. Later, Microsoft provided Visual Basic which was much more flexible and was more akin to a full fledged programming language. While better, it didn’t quite measure up to scripting solutions provided on the Unix and Linux operating systems. On Unix and Linux scripts were allowed to consume and manipulate their own results and seemed better integrated into the operating system.

Continue reading: Powershell