My Personal Toolkit - A Minor Update and Upgrade

As anyone in the software industry knows, especially those that use the latest and greatest, having an up to date and powerful toolkit is vital for the job.  Without a good personal toolkit a developer can be rendered almost useless or at least lost a huge amount of value.  In my efforts to stay above par with my toolkit I made another surfing expedition out on the ole' world wide web for latest tools.

One of the framework type tools that I wanted to check up on, especially with all the patterns based development that I've been working on lately, was the WCSF, or to "de-acrynomize" it, the Web Client Software Factory.  For more information on the WCSF check out the Wiki on Composite Clients.  WCSF helps out when the various layers are broken out between Model-View-Controller, UI and Business Layer, or other such pattern paradigms.  It provides a framework in which to build up architecture.

The second major item to pick up, even if you intend to only use one or two elements at first, is the Enterprise Library.  Currently the version out is the Enterprise Library May 2007 version 3.1.  Awesome parts of this library that I've had the fortune of using recently include policy injection, if you haven't heard or seen this in action, you owe it to yourself to check it out!  Policy Injection ROCKS!

Two other tools, which could be considered a tool, are the Guidance Automation Toolkit and the Guidance Automation Extensions.  These installs set the development environment up with some pretty snazzy help documents and predefined templates for use with the WCSF or SCSF (SCSF == Smart Client Software Factory).  These pieces, along with the WCSF, will probably start aging rapidly when Avalon and the respective tools start hitting prime time.  But for now, prime time is WCSF, SCSF, and the Guidance tools.

The biggest kicker of recent time are the WF (Workflow Foundation), WCF (Windows Communication Foundation), and WPF Extensions for Visual Studio 2005.  For now those of us that are still using Visual Studio 2005 (Which I would assume is about 99% of .NET 2.0 or 3.0 technology development) definitely need these extensions for 3.0 work.  Trust me on this, 3.0 is full of great additions, if you aren't, start using it.

To summarize my latest toolkit:  (Do a search for any of these acronyms on MSDN and you'll have the download)

  • WCSF - Web Client Software Factory
  • Enterprise Library May 2007 (3.1)
  • Guidance Automation Toolkit and Extensions (GAT & GAX)
  • .NET 3.0 Extensions (WF - WCF/WPF) for Visual Studio 2005
Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/25/2007 at 9:35 PM
Categories: IDEs, Software Tools, and Applications
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

QCon Battle!!! ARGH!

So a lot of things are going on in my life at the moment, causing any travel that I need to take outside of the north western US to be very difficult.  One event coming up that is driving me crazy, because I'd really like to go, is the QCon Event down in San Francisco.  They have Martin Fowler, Kent Beck, Dan Pritchett (eBay Architect), Eric Meijer (Creater, LINQ), P. Rosedale (Creator of Second Life), and many others that are going to speak.  The problem is, it is during the work week on the days of the 7th, 8th, and 9th.

Sad [:(]

I'm contemplating footing my own tab, asking for days off, and going anyway.

Some of the tracks that I REALLY want to jump into are "Challenges in Agile (and how to overcome them)", "Architecture Quality", "Architectures you've always wondered about (Linked-in, Yahoo!, eBay, Second Life, and others)", and of course "Bleeding Edge .NET".  I'm not even sure that the schedule would allow, but I REALLY want to catch every session.  As soon as I get the battle figured out, if I get to go, I'll definitely have an entry or fifteen zillion to blog about from the conference.  If anyone else out there is going, shoot me an e-mail and maybe we could meet up!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/25/2007 at 8:26 AM
Categories: Keeping Up
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Figuring Out Versus Making a Solution :: A Small Epiphany

I had a kind of epiphany about "figuring out" a solution to a problem versus "making" a solution to a problem.  Let's break out the two a little bit just so I'm not rambling to the world without some context.

What I stumbled into thought about is the "figuring out" a solution is done when there is not solution that is currently known.  Figuring out the problem, knowing it intimately, then through a bit of analysis and possibly discussion a solution is found to a problem.

With the concept of "making" I had the idea that a solution exists, someone is assigned the problem, and then the solution is then applied to the problem.

These two ideals kind of struck me as a division of labor compared to a scientific labor.  One is a matter of planning and training, the other is a matter of empirical knowledge and application of scientific principal to resolve a problem.  Of course, in software development often the scientific principal is nothing more than a barrage of trial and error processes strung together.

One of the things that I wanted to do as soon as I was struck by my epiphany was segment people into the respective two concepts.  After some more thought though, I realized, that no one specifically fits into one or the other type of concept.  Someone might fit more into a "figuring out" paradigm more than a "making" solution thought process, but a person might have to wear both hats, or change back and forth during the course of a career.

There is however the application of these conceptual task delineations that could be made of particular tasks within a problem.  Let's compare a game production company versus building an enterprise application.

To provide example take a look at a game production company.  There are many problems there that haven't been resolved.  There are crude inroads to certain tasks, but for the most part the game development process is done via the "figuring out" solution method.

On the other side of this scenario is the enterprise application expertise.  Most of the problems that need resolved in enterprise development need nothing more than a "making" the solution expert.  The enterprise environment has been thoroughly thought about in many aspects and entire suites of tools and software are available.  There is of course the "business problem" that could require a bit of "figuring out" solution approaches, but the core of enterprise development is practically a tried and true art now.

I'm done with my little epiphany now and am heading to a day full of intense unit, integration, and general test coding.  Cheers!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/17/2007 at 10:04 AM
Categories: Discussion Points or Ideas
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Another Entry of Keeping Up

The Microsoft Windows SDK Blog is an awesome way to keep up with the SDK.  If you haven't downloaded the SDK get over there post haste and get r' done!

The latest SDK for Vista (VS 05) is a must have.  With the WCF, WF, and other tools and their respective "designers" and such it's priceless.  So if you haven't got the idea, GO CHECK IT OUT!

In addition to that make sure to keep reading the .NET 3.0 Framework netfx3 site.

Smile [:)]  Have a rolling good Sunday!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/16/2007 at 1:33 PM
Categories: Keeping Up
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

BI, OLAP, ETL, and Random Notes on the Subject

I had a few conversations, actually more like 6 different conversations, pertaining to BI (Business Intelligence), OLAP (Online Analytical Processing), Cube or UDM (Unified Dimensional Model) Processing, ETL (Extract Transform Load), normalization and de-normalization for Reporting Purposes, and other such related topics.  It seems that there are tons of BI Projects starting up around the area.  Some of the projects are small "it's just a possibility" type of project to the fully ramped we're going to "toss a few million at this and get some serious BI out of it" type of project.

With all these conversations I decided to do a quick write up of what BI is all about.  I figured, what better way to refresh the memory of experience than to do some writing on the topic.

First I gotta knock out the crazy acronyms.  There are a bunch.

  • AMO - Analysis Management Objects.  API for Analysis Services (SSAS).
  • OLTP - Online Transaction Processing.  OLTP is the storage medium for databases that are used in production environments for day to day input, output, delete, and update of data.
  • OLAP - Online Analytical Processing.  OLAP is the storage medium specific to processing of BI reports and such.  It is geared not toward input and output, but solely output and query reporting via MDX.
  • KPI - Key Performance Indicator.  A primary indicator for a business, usually displayed via a dashboard or similar report for change reference.
  • BIDS - Business Intelligence Development Studio.  Basically this is Visual Studio 05 with the appropriately installed templates and such for building, maintaining, and developing data OLAP Cubes.
  • ETL - Extract Transform Load.  The process of moving, copying, transforming, or otherwise changing data during movement from one location into another; usually from an OLTP source to an OLAP source.
  • SSAS - SQL Server Analysis Services.
  • SSIS - SQL Server Integration Services.
  • XMLA - XML for Analysis.  Used for scripting SSAS.
  • MDX - Multidimensional Expressions.  Similar to SQL in syntax but designed for execution against OLAP Cubes for reporting demands.
  • ROLAP - Relational Online Analytical Processing.  Data is stored in a relational database for the cubes.
  • MOLAP - Multidimensional Online Analytical Processing.  Data is stored in a proprietary structure for fast retrieval.
  • HOLAP - Hybrid Online Analytical Processing.  Data is stored in a mix of relational and multidimensional mediums.
  • BI - Business Intelligence.  A general description of the particular part of the industry that focuses on OLAP Warehousing, Reporting, and related services and solutions.
  • DSV - Data Source View.  A collection of tables located in the data warehouse, usually a representation of logical keys and relationships.
  • UDM - Unified Dimensional Model. The measure groups and dimensions that define BI data.  Synonymous with a cube.

 There are also a few key concepts that one must understand.  I'm just going to discuss and define these concepts below, in a somewhat haphazard way as I think of them.

A dimension is a way data is cut, what appears vertically or horizontally on a report, to display information based on data.  A dimension can be broken out by time, linked, parent-child, standard or other means.  The data the dimensions cut are stored via a fact table.  A fact table stores all the detailed values for the measures or facts.  A fact table is usually a denormalized table with the bulk of the data to be reported on.  The main thing to know, is that each dimension is a way to break out the data, across various measurements such as time.  Another key word to know is that when data forms grouped attributes they are referred to as a natural hierarchy.

One can also have a dimension table that has a break down of information to use as a dimension cut across the data.  For instance a product could be displayed in the fact table, and the individual rows could be aggregated across the product types.

One odd thing, at least for newcomers to the BI world, is how often a relational database table has an application key but a surrogate key is assigned the row once it is in the OLAP Cube or Warehouse.  The reason this is often, if not always done, is because the application key could lose its uniqueness once brought across ETL or stored over a period of times to represent points of data.  If this occurs one needs a surrogate key to prevent confusion about which row is which.

I've puttered out at this point, and am contemplating posting this incomplete write up at a wonderful 1:00am.  But instead I'll sleep on it so I'll probably post it around 8am or so.  I'll be writing a follow up to complete out the basic concepts and ideas behind BI.  In the near future, maybe even via a screen captured VLOG entry I'll post how to actually setup and prepare a sample OLAP Cube for reporting via BIDS.  In the meantime stay tuned for the awesome power of the Snowflake and Star Designs!

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/11/2007 at 8:34 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Euphoria Shipped!

I got an e-mail tonight just a few minutes ago, I am absolutely stoked beyond all recognition.  I jumped out of my chair and scared the cats even, and I think my girl friend thought I'd busted a gasket too.  The Inspiron 1720, Intel Core 2 Duo T7300, 2.0GHz, 800Mhz, 4M L2 Cache has shipped!  I can't wait, just a few more days now!

YEAH!  Vista, VS 08 Beta, Silverlight, and more - here I come!  Smile [:)]

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/9/2007 at 10:31 PM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (1) | Post RSSRSS comment feed

TFS Frustration, Returning to Subversion

After almost a year of frustration with personal and professional projects utilizing TFS (Team Foundation Server), I have decided to return my personal projects to Subversion.  The time, effort, and the costs are far to high for me to use TFS on my personal projects.  It is somewhat sad, as the potential with TFS is massive, but the core element, the source control, has failed me too many times and ate up too much time for me at this point.

With that in mind, I present my most recent re-diving into Subversion for my source control.  I'll be giving TFS another go in a few months, especially when VS 2008 and SQL Server 2008 are released, but for now it is good ole' reliable Subversion.

To get Subversion up and running nice and quick like, follow these turbo boosted instructions.

First download the following:

  1. Head over to the main Subversion site at Tigris and download the latest copy of Subversion.
  2. After that I grabbed a download of the latest TortoiseSVN for Explorer Integration.
  3. Last I picked up ankhsvn also on Tigris.  If you want to keep up with happenings for ankhSVN check out Arild Fines Blog.

Once those are downloaded get to installing.  An even faster way to setup Subversion and TortoiseSVN is also available via SVN-1.  It is a single click install basically, well that's how it's advertised but there are some extremely easy steps that need clicked through.  If you want to use this instead of installing the items separately that is fine, just make sure to grab ankhSVN above to follow the rest of the steps.  I personally like to install the packages separately so that I am intimately familiar with what is and is not actually being installed.

  1. Install Subversion.
  2. Install TortoiseSVN.
  3. Install ankhSVN.

With those installed it is now time to setup the repository and get some source code under source control.  The following instructions are also shown in this video.

  1. Create a new directory, ideally something like SubversionRepository so it is easy to tell what the directory is for.
  2. Right click on the newly created folder and select "Create Repository Here".
  3. A prompt will come up asking to choose either "Native File System (FSFS)" or "Berkeley database(BDB).  I always choose the native file system.  When complete you will receive a dialog that states, "The Repository was successfully created."
  4. I always check the repository, just to make sure I had everything clicked on correctly.  In the repository directory you should see the following folders;  conf, dav, db, hooks, locks, and the following files;  format and README.txt.  DO NOT PUT THINGS IN THIS DIRECTORY, JUST LEAVE IT AS IS!
  5. To do a full import of items into the source repository navigate to the directory that has the project files in it.
  6. Right click either on the root, or individual files and select "Tortoise SVN" and then the "Import" option.
  7. A dialog will appear.  Enter the proper Url, the image has an example of a physical file location, and click "OK".
  8. Another dialog will come up to show the status of the files being imported.  When it finishes just click "OK" again.  The files and folders are now in the repository.
  9. Check out the drive space now, I do it with DiskView Visualizer since it's ridiculously easy to get a view of space changes in a matter of seconds.  Now that you've added something there should be a few MB in the db directory, up from the default standard load db directory of about~100k or so.

Now let's say someone else needs to get a copy of the project folders to work with.  This is unbelievably easy, so don't think it didn't happen once you've done it once.

  1. First right click anywhere in a folder, on a drive within the Windows Explorer.  On the right click menu "SVN Checkout..." should be available, select it.
  2. The check out dialog should now appear.  Enter the information pertinent to your installation and project like what appears in the screen shot.  Click "OK" when you've entered all of the information.
  3. If you haven't created the check out directory you will be prompted by TortoiseSVN to create them.
  4.  Once the checkout is finished, you will be provided a dialog as shown in the following screen shot.  Click "OK".
  5. After all this you will see the directory that was added in the folder structure as displayed in the following screen shot.

My next Subversion Tutorial will cover some of the steps to update, check file differences, and commit changes back to the repository.  Stay tuned!  Smile [:)]

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 9/2/2007 at 3:35 PM
Categories: How-To, Samples, and Such | Rants
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed