Create a Word Cloud with Wordle

A word cloud is a cool way to present data, and they can be created really easily with free tools like Wordle. Word clouds are typically generated by analyzing text for the frequency of words and phrases. More frequent words are displayed in a larger font making it easy to identify themes.

If you already have text for the word cloud, that’s great — just copy/paste it into the tool and click generate. You can “engineer” a word cloud by simply repeating words and phrases. To adjust the appearance of the generated word cloud, most tools have some sort of style randomizer. I typically randomize until I find something I like.

The above example was generated by using the following text. Note that “~” can be used to chain words together into phrases.

word~cloud
word~cloud
word~cloud
amazing
amazing
amazing
amazing
whoa
whoa
cool
so~easy

Posting Source Code in WordPress Posts

As a blogger that regularly posts source code, I really feel like I should’ve known about this a long time ago. I JUST learned that WordPress.com has built-in support for code formatting, and I really couldn’t be happier. My theme selection criteria was largely based on how well code would be displayed, and now I don’t need to be limited by that — hooray!

Here’s the post with all the juicy details: http://en.support.wordpress.com/code/posting-source-code/

[sourcecode language="<language>"]
your code here
[/sourcecode]
    // I am SO excited about this!

And here’s the quick & dirty:

  • Replace <language> with the desired language to enable color-formatting (e.g., css, csharp, xml)
  • If a language is not provided, “text” will be used
  • Other options, like line-highlighting and line-wrapping can be controlled by optional attributes (highlight=”1,2″, wraplines=”true/false”)
  • Code will be automatically encoded for display — no more finding/replacing <‘s and >’s!

Adam’s Favorite Things: Logitech K750 Wireless Solar Powered Keyboard

If you’re in the market for a new keyboard, I highly recommend checking out Logitech’s K750 Wireless Solar Powered Keyboard. I bought this keyboard a few months ago, and I absolutely love it!

Logitech K750
(Available at Amazon.com.)

I’d had wireless keyboards in the past and didn’t care for them because I needed to change the batteries so frequently. I definitely wasn’t looking for a wireless keyboard while I was shopping around, but I was intrigued by the idea of solar power when I stumbled upon this. There was some skepticism about how well it would work or what quantity of light would be necessary to keep it going, but I haven’t had a single issue with it. In fact, even on the day I got it, I used it in my dimly lit living room for the entire day without having to charge it.

It’s a very sexy piece of hardware, with its very low profile–similar in thickness to a smartphone–and a shiny black finish. The keys feel more like a laptop keyboard than a “normal” keyboard, so that may turn some people off. There is a light-source button you can press to have the keyboard indicate to you whether it’s getting enough light or not. It’s also important to note that it doesn’t need sunlight to charge; it will charge from any standard lamp. The range on it seems decent, too, though I have not done any sort of testing with that.

Need a keyboard? Check it out!

TFS SDK: Getting Started

TFS is great, but it simply doesn’t do everything I need it to do. My team has a TFS work-item-driven software development life-cycle that depends on having stories organized with tasks of certain activity types performed in a specific order. It’s a difficult process for new team members to internalize, and it requires discipline for even our veteran team members. One of the things that I’ve decided to do to help my team manage this process successfully is to create a custom tool with built in “queues” that will display their work items as they need attention without relying on the developer to manually run different queries and discover items on their own.

And so that brings us to the TFS SDK. I’m going write a series of short posts detailing how to do some simple tasks that can be combined to do very powerful things. One of the simplest and most powerful things you can do with the TFS SDK is run WIQL queries to query work items using a SQL-like syntax.

The first step you need to do is simply to add the TFS SDK references to your project. These are the three I added to my project:

Microsoft.TeamFoundation.Client
Microsoft.TeamFoundation.Common
Microsoft.TeamFoundation.WorkItemTracking.Client

Once you’ve got that, you can build an execute a query with the following block of code:

var tpc = new TfsTeamProjectCollection(new Uri("http://YourTfsServer:8080/tfs/YourCollection"));
var workItemStore = tpc.GetService(); 
var queryResults = workItemStore.Query(@"
    SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
    FROM WorkItems 
    WHERE [System.AssignedTo] = @me 
    ORDER BY [System.Id]
    ");
foreach (WorkItem wi in queryResults)
{
    Console.WriteLine("{0} | {1}", wi.Fields["State"].Value, wi.Fields["Title"].Value);
}

Bonus tip: you can construct your WIQL query by building it from Visual Studio’s Team Explorer and saving it to file. For my application, I’m storing the WIQL query in my app.config to allow for quick & easy customization.

Connectify Mobile Hotspot

A friend and I wanted to play a LAN game at work using our Kindle Fires. The problem is that Kindle Fire is wifi-only, and we didn’t have a wireless network available. First we tried using our Android phones. (In retrospect, this would’ve worked, but we unknowingly had different versions of the game.) The next thing I tried was to find software that would allow me to use my laptop as a mobile hotspot. And that’s when I found a great little application called Connectify.

With Connectify, you create a virtual hotspot that you can connect your devices to. You can choose to share your internet connection–an AMAZING feature for Kindle Fire owners–or simply act as a local network. For my LAN gaming needs, we chose to create a non-internet-sharing hotspot, and it worked fantastically. You can use the application for free or upgrade to the Pro version for $30 to get some additional functionality.

I definitely recommend checking it out!

Dear WP7, I’m in love with Android

Ever since the 2010 PDC when I got my first Windows Phone 7, I’d been in love with it. I was coming from a Blackberry and was thrilled with everything I was getting–Zune, local scout, a decent camera, the UI.

Buuuut there were some things that I wasn’t so happy with, too. The biggest thing for me was the availability and quality of apps. Sure, there are some great apps. But there’s a lot of essential apps that aren’t available, like Pandora and Google+. The “standard” apps that were available–like Facebook and Twitter–were glorified bookmarks and didn’t have nearly the functionality that my wife had with her Android. The thing that finally pushed me over the edge was seeing a co-worker use Android’s mobile hotspot while on the road at a customer site. That justified a new phone platform right then and there.

So I’ve switched from my Samsung Focus to Samsung Epic 4g Touch, and I must say, I’m thrilled! What do I love about it? All the apps are great. I have two GPS solutions (Google Navigation & TeleNav) that are WAY better than what I had with WP7. I have unlimited data, which is incredible. (I know this isn’t a WP7 flaw, but it’s something that I didn’t have with AT&T that I now enjoy with Sprint.) I love having access to Pandora again. Oh, and MOBILE HOTSPOT!!

Is there anything I miss about my Windows Phone? Not a lot, but there are some things. The integration with SkyDrive and Office was nice. I love OneNote, so I liked having it as an app that would sync automatically to the web. The battery life was great. Battery life is what I was worried most about before switching. My wife’s EVO 4g has pretty sad battery life, but my E4GT seems decent.

So, WP7, we had a good run together, but my heart now belongs to Android. The E4GT is the everything I’ve ever wanted in a phone, and I plan on sticking with Android for the foreseeable future.

Cross-Server Mass Inserts with SSIS

I only recently learned about SSIS packages, a feature that was introduced long ago with SQL Server 2005. They were presented to me as a solution to a customer problem that required millions of records from separate vendor databases to be archived and up-to-date in a single location. I wasn’t the brains behind that solution, but I had a similar, less-business-critical situation and I decided to give it a shot.

There’s a small learning curve, but after a few hours I was able to extract hundreds of thousands of records from a database on one server and insert them into a different table in a different database on a different server. One of the most exciting parts is that it was able to do all of that in about 10 seconds!

I was so impressed with what I’d accomplished that I wanted to document my journey in this mini-tutorial. Disclaimer: I’m by no stretch any sort of expert with SSIS nor do I claim to be any sort of SQL guru–I’m just a dude trying to move some data.

I started by creating my extraction query in SQL Server Management Studio. I actually started by using SSMS’s “script as INSERT” feature on my destination table and evolved that into my data extraction query. The nice thing about that approach is that the column mapping for the insert will be handled automagically by SSIS. I didn’t know that at the time, but it worked out well!

Once I had my SQL extraction query, it was time to start with the SSIS:

  1. Open SQL Server Business Intelligence Development Studio from Start > All Programs > SQL Server 2008
  2. Create new project
  3. Business Intelligence Projects > Integration Services Project

When the project opens, you have a canvas-like screen with several tabs at the top. One of the things that I did not realize right away is that toolbox items change depending on which tab you’re on. Since I wanted to move data between databases, I eventually found and decided to use the Data Flow Task. I dragged it from the toolbar onto the design surface of my Control Flow. Double-clicking the Data Flow Task took me to the Data Flow tab, where I added the meat.

Since I was extracting data from one database to be inserted into another, the logical step was to figure out how to extract that data. From the Data Flow tab, I found a OLE DB Source control in the toolbox. I double-clicked the control was it was on the design surface and was able to add my database connection and provide the SQL statement I wrote previously as the source. Pretty easy!

There was another control in my toolbox called OLE DB Destination–sounds perfect. Once again, I was able to double-click the control from the design surface to access properties like database connection and destination table. The final step was to drag the arrow from OLE DB Source to OLE DB Destination. I ran the package using the standard Visual Studio debugger controls, and it worked great!

The only other cool thing I found was that I could run the package from outside of Visual Studio, and I was given the ability to do things like update database connections. That seems great for package re-usability and sharing! I’ve definitely only scratched the surface of SSIS, but I will certainly keep it in mind for future problems!

Wireless TV Receivers from AT&T U-verse!

I’m so excited that AT&T U-verse has come out with wireless TV receivers. I have not had cable in my upstairs bedroom for the 6 years that I’ve lived in my current home due to the fact that the wiring was not in-place. I’d been told by multiple companies that I couldn’t get cable installed up there without tearing through the walls or running a cable up the side of the building, and I haven’t been ambitious enough to do such things. I’d dream to myself–why can’t they just come up with a wireless receiver? I can stream wirelessly from my computer, so why not do the same with TV?

Well, my prayers have been answered, and I am so happy! I ordered my wireless receiver from AT&T the day after I found out that they offered it. They charged me a one-time fee of $49.99 plus $7 per month, which is the same as a second non-wireless, non-DVR HD receiver. It arrived in the mail two days later, installed in minutes, and has worked flawlessly since.

There are two pieces to the setup. A small access point that plugs directly into the U-verse home portal (or whatever they call it–the router), and the wireless receiver. When you turn them on, you pair them much like a bluetooth device. And that’s all there was to installation & setup.

Hats off to AT&T for this. I love it 🙂

Private Builds in TFS

My team has configured TFS to automatically kick-off continuous integration (CI) builds when developers check-in changes. The build depends on the affected area, and the time to complete depends on the build. Some of our builds contains hundreds of projects and thousands of unit tests, and these can take the better part of an hour to complete. We also have nightly builds that build even more and take even longer.

Occasionally, I’ll have some changes to check-in at the end of the day. I check them in, and I get a notification that I broke the build when I’m halfway home. Crap. I need to fix the change before the nightly build starts, or it’s going to break, too.

Wouldn’t it be great if there was a way to run a build with my pending changes and then check them in automatically if the build succeeds? Well… There is! TFS has support for private builds (or “buddy builds”) that you can queue with a shelveset.

When I choose to queue a build, I choose to build with local sources plus a shelveset. Then I specify which shelveset, and I have the option to check-in my changes if the build succeeds. Splendid!

Awesome, Free Software: Core FTP

I had to do some testing for a project that uploads its payload via SFTP. I wanted to setup a basic, no-frills SFTP server that could accept my files. I did a quick Google search and found Core FTP Server–a free download. After about 2 minutes of configuration, I had my SFTP server up & running; it was fantastic.

I also see that they have a free mini sftp server that’s available. It’s a no-install, one-user, one-directory SFTP server, and IT WORKS AWESOMELY! This might be my new favorite way to securely transfer files between sites!

Core FTP Server