Jim's Blog Ramblings about novels, comics, programming, and other geek topics


Charting using .NET just got a lot easier

Google AdSense

In the past, I've used various open source .NET charting libraries or Flash based libraries. I've even coded my own charting libraries for some complex data visualization requirements. Today, Scott Gu blogged about the the free Microsoft Chart Controls for Microsoft .NET 3.5.


Clean up your source code

Google AdSense

One of the minor annoyances that I encounter is having multiple "using" statements at the top of my class files that aren't in use. Prior to Visual Studio 2008, there wasn't a real easy way of figuring out which ones are in use and which ones aren't in use without deleting one and then compiling, then undeleting it if it doesn't compile, etc.


Adding a custom button to Microsoft CRM 3.0 toolbar to link to another web site

Most people might have already migrated or began to migrate to the current version of CRM (CRM 4.0). For those CRM 3.0 users, here's a quick guide on how to customize your Microsoft CRM 3.0 toolbar to add a button to link to another web site or web page and optionally pass along the current entity's identifiers.

The custom button will open a new browser window and pass arguments from the CRM entity to a new web page. The web page can then parse the URL parameters from the URL to perform whatever function is needed. In this example, we will add a button to the Opportunity entity toolbar that will pass the opportunity id (GUID) value to another web site. The other web site could then take the GUID value and perform whatever lookups or actions is needed.


Power Toys that I can’t live without

These are quite old tools, but not everyone has been using them for years like me :)

You can download each of the PowerToys (and there's more than the ones listed here) at Microsoft PowerToys web page.

Microsoft PowerToys for Windows XP

PowerToys add fun and functionality to the Windows experience. What are they? PowerToys are additional programs that developers work on after a product has been released.

Open Command Window Here

This PowerToy adds an "Open Command Window Here" context menu option on file system folders, giving you a quick way to open a command window (cmd.exe) pointing at the selected folder.

Tweak UI

This PowerToy gives you access to system settings that are not exposed in the Windows XP default user interface, including mouse settings, Explorer settings, taskbar settings, and more.

ClearType Tuner

This PowerToy lets you use ClearType technology to make it easier to read text on your screen, and installs in the Control Panel for easy access.


Convergence 2008: Kevin Schofield Keynote

Part 2 of my Convergence 2008 blog entries...

Kevin Schofield is the General Manager of Microsoft Research. His keynote mainly focused on data and viewing of data.

... we all live in a data intensive world. We're surrounded by it, it pervades our work lives, it increasingly pervades our personal lives. It's sort of like the Force, .., it surrounds and binds everything, and holds the universe together. And there are definitely some people who are more adept at sort of harnessing it than other people. But I think we'd all really like to be kind of data Jedi Knights, if you will. So I'm going to talk a little bit about technology and how it can help with that.

-- Kevin Schofield

One of the more interesting parts of his keynote was the focus on data presentation. In one case, Mr. Schofield used the 19th century drawing by Charles Joseph Minard as an example of good presentation showing six different dimensions of the data in an easy to read presentation layout (view drawing). It's a pretty famous drawing showing Napoleon's march from Poland to Moscow. The drawing illustrates latitude/longitude, numbers of troop, direction, and temperature.

Data center sensors

Next, he shows a new project where Microsoft are playing sensors in their data centers. This project allows the data center IT teams to monitor heat of the servers in a real-time and over-time trends. This is also linked into the HVAC system, so they can the operation of the individual HVAC units. Combined with a nice little heat map, you can easily see which side of the room is producing more heat and which HVAC units are running at 100%. The sensors also show CPU utilization, disk utilization, rack utilization, etc.

Space Shuttle Challenger

The next set of slides showed how the right data in the wrong presentation format can lead to disastrous results. He used the Space Shuttle Challenger explosion after takeoff in 1986 as the example. In this example, the engineers had presented all of the data needed to make the decision to not launch the space shuttle. However, the diagram was so complicated it even had the statement of "don't use this chart unless somebody gives you an oral explanation" posted on the diagram footer. The engineers couldn't explain or illustrate the problem very effectively to their executives.

While I looked at this diagram, I couldn't see the potential problem. However, once the data was change into a more easier to read format, it became obvious to everyone how the launch would result in O-ring failure.

Spatial memory

Next, he focused on how we, as humans, have a pretty good spatial memory. We can remember everything in our house, but have problems remembering where the most recent document or file is on the computer. Microsoft is experimenting with storing and retrieving data in a 3D manner instead of the usually 2D input.

They showed the results of a survey, where they created a simple 3D (inverted plane) and had subjects bring their own photos and file them in groups/clusters and placed them somewhere. Then three months later (without seeing it), nearly everyone remembered exactly where they put each photograph.

They said that they are also experimenting with filing Internet Explorer bookmarks in a 3D environment.


Most everyone has already seen these charts by Gapminder. They were pretty popular around the Internet a few years ago.

Metadata searching

Next, Mr. Schofield showed off a Microsoft Research tool that looked similar to the Grokker enterprise solution that I experimented with a few years ago. The user interface was very similar to Grokker where it created clusters of related content that you drill down into, in other words an ontology visualization user interface (PDF).

Cholera Epidemic

John Snow was an early 19th century physician living in England during the Cholera epidemic. Back then, they didn't understand much about Cholera nor how it spread.

Working with a local priest, he mapped out the locations of the people who became infected and then added the locations of the city's drinking wells. He discovered that the majority of people who were sick were located close to a single well. At the time, most people thought it was caused by "bad air", but he thought it had something to do with the water.

Microsoft Research Projects

Research Project 1: 3D model of all neural circuitry of the brain

Microsoft is also making some pretty cool 3D data visualizations. One of the projects is to map all of the neural circuitry of the brain. This would allow researches to "fly around" the brain and look at the nervous system in 3D.

Research Project 2: Environmental data repository

The next project demonstrated was the FluxData project.

[The] database consists of over 900 site-years of data from over 170 eddy covariance measurement sites. Major efforts were made over the past year to harmonize, standardize and gap-fill the ‘raw’ 30-minute data records submitted by participants. The database also includes value added products like gross primary productivity, ecosystem respiration, climate and site characteristic information.

Research Project 3: World Wide Telescope

Finally, what I consider the coolest research project demonstrated... The World Wide Telescope project. Basically, it's like Google Earth or Virtual Earth in space. You can fly around to all of the solar systems and galaxies and turn on space imagery and data collected by various astronomery agencies and groups.

Most scientific data will never be directly examined by scientists; rather it will be put into online databases where it will be analyzed and summarized by computer programs. Scientists increasingly see their instruments through online scientific archives and analysis tools, rather than examining the raw data. Today this analysis is primarily driven by scientists asking queries, but scientific archives are becoming active databases that self-organize and recognize interesting and anomalous facts as data arrives. In some fields, data from many different archives can be cross-correlated to produce new insights. Astronomy presents an excellent example of these trends; and, federating Astronomy archives presents interesting challenges for computer scientists.

-- Microsoft Research paper, 2002

It also appears that Google is working towards their own Google Telescope project. Microsoft's telescope will go live in a few weeks and I believe that Google's project is still under development.


Lastly, they showed a video of a game created for kids to teach them how to program. The game allowed the kids to select their character and program reactions. For example, "when [creature] sees [snake] then [run away]". With various levels of reaction programming, the kids were able to watch their creation walk around and interact with it's environment. The game was created for the XBOX and it looked pretty interesting.


My Related Posts: , ,

Convergence 2008: Steve Ballmer Keynote

Last week, I didn't get a chance to blog because I was attending the Microsoft Convergence 2008 conference. This year it was held in Orlando, Florida and the keynote was given by Steve Ballmer, Microsoft Chief Executive Officer.

This was the first keynote that I've seen given by Microsoft. In the past, I've been to many conferences, but mostly web or GIS related.

Mr. Ballmer joked a little about the attempted Yahoo! acquisition and mostly talked about the future of Microsoft and their dedication to the Microsoft Dynamics product lines.

Ron Rittenmeyer, EDS Chief Executive Officer, also made an appearance and announcement stating that they are becoming a strategic partner with CRM.

It's clear to us we see the entire Dynamics thing as definitely an enterprise grade solution. So, we're pretty impressed by that. It's mature. It's really made its mark.

CRM from our standpoint is something we see as our fabric. It's probably not known to a lot of people, but we manage about 26,000 contact agents, contact center agents. We do it in about 26 countries, managing roughly 450 clients, and we do it in 48 languages.

So, I think we understand customer interaction, and we see doing this across applications, implementation, hosting, contact center services, and industry BPO, which we're very big in.

So, from our perspective we think the product is an excellent product, and we think it's mature. I said it's enterprise grade, and we really do believe that. It's flexible, it's scalable, it's user friendly, and most important to us it's really easy to implement.

-- Ron Rittenmeyer on Microsoft CRM

Overall, this first keynote was nice and the Cirque De Soli like acrobats was an interesting show. However, I think I enjoyed Kevin Schofield, General Manager of Microsoft Research, keynote on the final day much more. I'll post some comments on this session soon. There's a few neat things coming out of Microsoft Research and one of them should go live within the next couple of weeks.


Democratizing Game Development

I've long been a fan of games and game development. I created my first game over 20 years ago and saved it to a cassette (remember those things we used to have in cars before CDs?) on my Coleco Adam computer.

I also remember creating numerous text driven games for my Apple IIc Plus using Applesoft BASIC and saving them to my 5 1/4 inch floppy disks. A few months ago, I found my first game development book (for SmartBASIC) and a stack of 5 1/4 inch floppy disks in my parents basement...

Well, that was a long time ago. Today, there's lots of great gaming libraries and 3D engines for the PC. I experimented with a few of these using C++, but I've rarely finished any of games before I got distracted on another project or something else came up.

A few years ago, Microsoft released the XNA framework for Visual Studio. This framework allowed developers to make games compatible with both PCs (Microsoft operating systems) and XBOX 360s. I participated in the version beta prior to it's release and I've worked with the 1.x and 2.x versions, but I still haven't finished any games so far.

I'm still pretty excited about the XNA framework and it's impact on the programming industry.  I've thought this was great for Microsoft since I heard the first rumors. I believe the XNA framework will bring young developers into the .NET world and even though very, very few will get into the game industry, they will take their .NET skills into the marketplace. Some colleges have even designed programming courses around the XNA framework.

At the Game Developers Conference this week, Microsoft announced their plans for the next version of XNA.  Version 3 will include "XBOX Live Community Games". They also announced support for game development on the Zune, which I think is a good direction also.

This provides developers the ability to upload their games to a community site where peers can download and review your games. If your game passes the peer reviews, then it will become available to all XBOX owners to download and play.

TalkingAboutGames provides a little more details stating:

Gamers will be able to rate user-created XBLA titles through XNA Creators Club once the service goes live... Once a game is submitted, it goes through a peer review process (which eliminates copyrighted material and/or prohibited content), and if it passes, it's made available for download over Creators Club, which will be located on the Xbox Live dashboard. If that's not enough, XNA games can now be played on your Zune as well.

Gamasutra has a lengthy article titled, "Democratizing Game Distribution". The article provides general instructions on the game submission process. The submission form will contain options for the developer to rate violence, sex, and mature content on a scale of 0 to 5, upload screenshots and movie trailers, and upload the game package (.ccgame file).  Next, fellow XNA Creator Club members can submit reviews and game defects (bugs) for the game. Once enough positive reviews have been submitted, XBOX users can download the game via the XNA Game Launcher.

There is a special preview of this ability available until mid-March. You can download the XNA games of The Dishwasher: Dead Samurai, JellyCar, Little Gamers, Proximity HD, Rocketball, TriLinea, and Culture.

Maybe it's about time that I get back to work on my own game!


ASP.NET MVC Framework Article Roundup

Over the last two weeks there's been a lot of posting over the new MVC (Model-View-Controller) framework being added to ASP.NET. Here's a few great links to help you get a handle on the buzz and information.

Scott Guthrie's Announcement

  • ASP.NET MVC Framework
    By Scott Guthrie (Oct 14, 2007)
    "We'll be releasing a public preview of this ASP.NET MVC Framework a little later this year.  We'll then ship it as a fully supported ASP.NET feature in the first half of next year."
  • MVC Presentation and Screencast from ALT.NET Conference
    By Scott Hanselman (Oct 8, 2007)
    "ScottGu gave an hour long presentation on the upcoming MVC Framework and I took some guerilla video."


  • Scott Guthrie announces ASP.NET MVC framework at Alt.Net Conf
    By Jeffrey Palermo (Oct 5, 2007)
    "Scott Guthrie proposed a topic at the Alt.Net Conference today, and the topic was an overview of the MVC Framework his team is working on."
  • Developer Notes for the ASP.NET MVC Framework
    By Sergio Pereira (Oct 15, 2007)
    "The new MVC framework draws from the collective knowledge in the existing implementations (.Net or not) to help the ASP.NET developer create applications that support the following important characteristics: Testable, Maintainable, Pluggable, Separation of concerns."
  • Observations on Microsoft MVC for ASP.NET
    By Damien Guard (Oct 9, 2007)
    "Gurthrie and Hanselman presented Microsoft MVC at the Alt.Net conference which revealed some interesting details buried in the video, my rough observations and notes based on the prototype they showed..."
  • MVC versus MonoRail and the Corporate Giant
    By Ben Scheirman (Oct 15, 2007)
    "System.Web.MVC will reach an audience that MonoRail doesn’t:  The corporate giant who already swallowed the pill and will do anything that Microsoft pushes, good or bad."

MVC Background

  • MVC: No Silver Bullet (introduction & overview to MVC)
    By Andy Wardley
    "The Model-View-Controller (MVC) Design Pattern is much heralded as the 'Right Way' to build web applications. Although MVC is undoubtedly a valuable and useful way to architect such systems, I believe it goes far deeper than MVC alone."

My Related Posts: , ,


Microsoft .NET goes open source! Oh noes!

Oh noes! Microsoft .NET goes open source!

Well, not exactly. There's a lot of buzz going around the web today that started with an post by Scott Guthrie "Releasing the Source Code for the .NET Framework Libraries" (via DotNetKicks.com).

We'll begin by offering the source code (with source file comments included) for the .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows).  We'll then be adding more libraries in the months ahead (including WCF, Workflow, and LINQ).  The source code will be released under the Microsoft Reference License (MS-RL).

This generated a lot of buzz including:

What does this really mean for .NET Developers? Well, at first glance I'm agreeing with Aaron's (AjaxNinja) thoughts. It won't mean much to the average developer. And as I commented at over at DNK, the above average developer already uses Reflector to peek inside the .NET library.

I truly think this is much more of a PR initiative than a technical initiative. It's the "cool thing to do" and will (did) generate a lot of buzz and talking. I'm sure there will be blogs and articles abound in the next few weeks or months talking about this. Maybe in a few weeks, there will be some new information that might provide some insight into how this will be helpful to developers.

Update: JudahGabriel (via DNK) pointed out three reasons why this will benefit developer beyond what we already get from using Reflector:

First, the source comments are intact, which means it becomes easier to understand .NET library source code.
Second, the code structure and local variable names are preserved.
Third, we can use the debugger to step in to .NET libraries and use the threads, locals, watch, etc. windows.

Shawn Burke also provides a good reason why this might benefit the average developer saying:

Even with one of the decompilers (e.g. Reflector) that you can easily get out there, [an exception from deep in the code] can be tricky to solve.  With the source it's much, much easier.



My Related Posts: , ,

When is a SQL Server Database not a SQL Server Database?

Answer: When it is a Microsoft CRM 3.0 database.

The Microsoft CRM is built using a SQL Server database. So that means anyone who can connect to the database can perform database operations on it. This also means that developers could build applications or user interfaces to the data without using the CRM user interface. Any user with a valid SQL Server account can connect to a SQL Server database using ADO, ADO.NET, ODBC, OLE DB, JDBC, etc.

Sometimes, you may need to write a user interface outside of the Microsoft CRM user interface. For example, if you just want to make a simple web page that allows someone to submit a few items of data (such as a "contact us" page) and then insert it into the CRM database. Otherwise, you would need to teach the user how to use the CRM user interface.  Also, maybe you'd like to display a list of items on an intranet web page that makes reporting quick, easy, and accessible. Sometimes it's just not feasible to have every user that may supply or view data use the Microsoft CRM user interface.

Another reason (why I'm writing this) is that you may have another system that just needs a little bit of data from the CRM's database. The other system may have very little to do with the CRM, but just needs a few values from the database. The other system may even have its own database that might just need to refresh the shared values at a specific interval, so there's no direct querying of the CRM database.

The easiest option would be to link the SQL Servers (the CRM and other database). Another option would be to use a third-party to map the fields and migrate the data at a standard interval (such as nightly). Lastly, you could just write batch files to perform SELECT, INSERT, UPDATE, etc. statements to keep the two systems in sync.

Well if you're thinking about any of those options then that's when the "Microsoft Dynamics CRM 3.0: External Connector" is needed. Basically, it is an approval letter saying that it is okay for you to connect to the CRM database.  The CRM license costs about $2,000 USD per server and each user license costs about $1,000 USD each.  The External Connector license costs about $15,000 USD regardless if you are building a complete user interface to replace the CRM or if you are just copying some values from one database to another database.

So of course, there's a lot of confusion over the license. Does this mean that if I send an email to someone that's not a CRM user, then I require a an external license since the end-user is does not have a valid CRM CAL? What if someone copies data from CRM database into an Excel spreadsheet and then emails it? What if a CRM GUID (PK) value is stored in another database that is used to build a hyperlink to the CRM user interface that only valid CRM CAL users can access? What if the values are entered manually into another database by a user that has a valid CRM CAL. would other users be able to view that value even though it is not directly connected to the CRM database?