Installing MVVM Light in Visual Studio with NuGet and the Package Manager Console

I’m an Ubuntu guy so apt-get has my respect. It follows quickly that when Phil Haack and his crew come out with NuGet I’m ready. NuGet should take away one unusual annoyance I’m getting with the MVVM Light binaries installed “by hand”—I’m getting this type-or-namespace-GalaSoft-not-found error continually! I have to manually Add Reference… and rummage through the file system to refresh the Visual Studio project links the binaries. My optimistic assumption is that the NuGet packaging of MVVM Light will prevent this strange error and save me from rummaging.

After reading “Finding and Installing a NuGet Package Using the Package Manager Console” I used this:

PM> Get-Package -remote -filter MvvmLight

A PowerShell table formatted for the console should return one row with the MvvmLight package information—make sure that Package source: is set to All in the Package Manager Console. Running the Install-Package command will install the relevant MVVM Light binaries (for Silverlight or WPF) into the Visual Studio project selected in the Default project: combo box.

In my case I would have to run Install-Packagefour times like this:

Install-Package MvvmLight

Each time I would have to change project the Default project: combo box. Using the, er, power of PowerShell, these are the four projects I’m talking about:

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"} | format-table Name
Name
----
Songhay.Silverlight
Songhay.Silverlight.Mvvm
Songhay.Silverlight.BiggestBox.IndexPart
Songhay.Silverlight.BiggestBox

So let’s make life a tad easier: let’s list all projects, filter this list and loop through the filtered output, running the Install-Package command:

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"} | ForEach-Object {Install-Package MvvmLight -project $_.Name}

Related Links

Remote Desktop for the Songhay Studio


Ubuntu 10.10 Desktop

Using Remote Desktop with my virtual machines was not possible because their network adapters were set to NAT instead of Bridged. I’m sure I made this setting because some version of VMware Workstation <=7 did not properly support Bridged networking.

Ubuntu’s supposed support for Remote Desktop begins at version 10. So I spent most of the day yesterday upgrading to Ubuntu 10.04 LTS. This turns out to be great idea in general because it seems to run faster within the same memory limits as the previous LTS version of Ubuntu. As a Microsoft guy, this revelation is quite impressive!

However, there was one VMware-related bug with this upgrade. The keyboard was not recognized by Ubuntu 10.04—this is documented in “Ubuntu 10.04 doesn’t accept keyboard input when running under VMware on Windows 7.” What worked for me was logging into Ubuntu from putty and installing the VMware client tools (before I could do this I had to make sure the appropriate Linux headers were installed, sudo apt-get install cpp gcc build-essential linux-headers-$(uname -r)).

Multiple Monitors and Remote Desktop

The use of VMware and Remote Desktop among two or more computers is a quantum leap toward “extreme” flexibility for working in the Songhay Studio. I have a few situations right off the top:

  • Using Remote Desktop against VMware on the host machine is a prudent work habit that allows me to move to another machine without having to log out of my session.
  • Using Remote Desktop against the host machine from another machine with a bigger monitor simply allows me to work on another machine with a bigger monitor. Here in my studio living room, the bigger monitor is connected to my Mini-ITX “media center.” I can take advantage of the larger screen without having to install a bunch of crap on the “media center.”
  • Using Remote Desktop (or just VMware) on the host machine and using a web browser connecting to the VM web server on another machine with a bigger monitor. Because my work with jQuery or Silverlight is usually accessible from a server, I effectively have a dual monitor experience without having to connect two monitors to the host machine—which is just a notebook. This is now possible because of Bridged networking working.

Relevant Links

“Debian Accessibility Optical character recognition (ocr) packages” and other links…

DSCN0205Debian.org: “gocr is a multi-platform OCR (Optical Character Recognition) program. It can read pnm, pbm, pgm, ppm, some pcx and tga image files. Currently the program should be able to handle well scans that have their text in one column and do not have tables. Font sizes of 20 to 60 pixels are supported.  If you want to write your own OCR, libgocr is provided in a separate package. Documentation and graphical wrapper are provided in separated packages, too. ”

Ttf-ocr-a

Debian.org: “This font was developed by the American National Standards Institute (ANSI) to be readable by the computers of the 1960s. The OCR-A font is still used commercially in payment advice forms so that a lockbox company can determine the account number and amount owed on a bill when processing a payment. A site license for the OCR-A font is very expensive, so this free font was created.”

“ean13-0.4-8.1 binary package in Launchpad”

Launchpad.net: “Create an EAN-13 or UPC barcode in .xbm format The Universal Product Code (UPC) barcode has been used in the USA for many years, and EAN-13 is a similar barcode used on products both in and outside the USA. ean13 will create an EAN-13 or UPC barcode in .xbm format. The .xbm format is used by most browsers and many graphics programs such as bitmap.”

Barcode

Free Software Foundation (FSF): “GNU Barcode is a tool to convert text strings to printed bars. It supports a variety of standard codes to represent the textual strings and creates postscript output. …Supports UPC, EAN, ISBN, CODE39 and other encoding standards… Postscript and Encapsulated Postscript output… Can create tables of barcodes (to print labels on sticker pages)…”

GPL Flash Library

swift-tools.net: “GPL Flash library is a set of source codes that allow to play Flash movies. The core of the library is a graphic renderer that is portable is to be re-used in applications that need to play Flash movies.”

“Google Squared vs. Wolfram Alpha” and other links…

Buy this book at Amazon.com!

linuxloop.com: “First WolframAlpha, which tells me that this Saturday is 157th day of 2009, arrives and now we have Google Squared, which tells me that the most important operating system is Linux, which is the same as Ubuntu. They both are headed towards the same goal, but in different directions. Google^2’s result is more useful (and wrong), while Wolfram’s result is actually correct, though useless to 99% of us. How, then, are they heading for the same goal?”

“Developing Cross Platform application with MonoDevelop”

Miguel de Icaza: “MonoDevelop runs on top of the .NET Framework and uses the .NET managed debugger instead of using Mono’s runtime and Mono’s debugger, so there is no dependency on Mono to be installed on the system.”

“Portable Ubuntu Runs Ubuntu Inside Windows”

Kevin Purdy: “Built from the same guts as the and Linux system that lets you seamlessly run Linux apps on your Windows desktop, Portable Ubuntu is a stand-alone package that runs a fairly standard (i.e. orange-colored, GNOME-based) version of the popular Ubuntu Linux distribution. It just doesn’t bother creating its own desktop, and puts all its windows inside your Windows, er, windows.”

“SftpDrive becomes ExpanDrive for Windows”

Of course I am late to celebrate this announcement as news but what I can say is that I appreciate the openness of a comment like, “Fixed major issue where Windows Explorer would sometimes crash while SftpDrive was loaded…” This detail shows me that my experience exists in the same universe as the vendor… this can be in stark contrast to, say, folks who live in the same space-time continuum as the Microsoft SharePoint team (I’m sure this will all “magically” change after 2010)…

“Desktop Apps Made Easy”

Titanium is the first open platform for building rich desktop applications.” I assume that this product is Adobe AIR without any commercial limitations. I still lack the time to even desire a technology like AIR.

“Google’s Tesseract OCR engine is a quantum leap forward”

Nathan Willis: “The Tesseract code was written at Hewlett-Packard in the 1980s and ’90s. In 1995, it was one of the top-tier performers at UNLV’s OCR competition, but when HP withdrew from the OCR software marketplace, the code languished. Then in 2005, HP handed off the code to UNLV’s Information Science Research Institute (ISRI), an academic center doing ongoing research into OCR and related topics. ISRI discovered that original Tesseract developer Ray Smith was now an employee at Google, and asked the search engine giant if it was interested in the code. Google spent a few months updating the code to compile on modern operating systems, and released it on SourceForge.net.”

“Review of Linux OCR software”

Peter Selinger: “In terms of accuracy, Tesseract vastly outperforms both Ocrad and GOCR on bitonal images. But strangely, Tesseract is completely useless on input that is not bitonal, so one should always threshold the input first. The actual thresholding method used seems almost irrelevant, which makes me wonder why Tesseract doesn’t simply threshold its non-bitonal input internally.”

Moved Thunderbird Mail from Windows to Ubuntu!

Buy this book at Amazon.com! The assumption here is that most Linux desktop veterans would say, “Dude, use Evolution.” But my “weird” response to this gospel truth would be, ‘There’s no Windows version.’ There actually is a Windows version from a Novell rock star programmer but it was not ready when I was looking—and it’s quite strange how it’s being offered.

The way Mozilla presented Thunderbird was not very strange, so I moved my personal email out of Outlook and into Thunderbird (lazily over a series of months) on Windows. And when the time came to move to Linux, I was seriously surprised just how easy it was! I just copied the Windows profile data to my Ubuntu virtual machine, ran thunderbird -P in GNOME and pointed a “new” profile at my old data copied from Windows. Some points of interest:

  • The habit of “surfing” the Web with news feeds and corporate junk mail is now confined to a Linux virtual machine. The new levels of safety here are through the roof! Yes, I admit that I used to do most of this risky work in Windows running as an Administrator.
  • Mozilla Thunderbird uses the mbox format. According to Jonathan de Boyne Pollard, “‘mbox’ is a family of several mutually incompatible mailbox formats.” The great news here is that this format is not some weird stuff Mozilla made up—it’s some weird stuff other people made up—Unix people. Because of this weirdness, we have the MBOX to EML converter by Ulrich Krebs. Java wins here (but I did see a Python code sample somewhere reading mbox).
  • “The Email Standards Project works with email client developers and the design community to improve web standards support and accessibility in email.”
  • Only Ubuntu Linux: “If you want to Import your mails from Evolution to Thunderbird there is very nice utility called MboxImport.”
  • How-To: Import Thunderbird Emails to Evolution

This email management move is a quantum leap for me. Now all of my most intensive, daily data management tasks are confined to super-portable virtual machines (hint: use something like my Western Digital Passport). Data management means hours and hours of little tweaks (often saved in thousands of little files)—and the psychological drag effect of ‘trapping’ all of those work hours on a single device is gone.