Tattoos, I'm not Prudish About Them, But I Have None Yet

However, this device might alter that very soon for me!

Tattoo based control device.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/27/2008 at 1:20 PM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

SQL Server Analysis Services Authentication Freak Out

[Rant On]

What is the deal really with the anti-user intuitive situation with analysis services when it decides that the data connection to a data source needs to use some arbitrary user authentication!  I had my SSAS cube set to process against a nice normal authenticated account and somehow, someway it went and stuck some completely unrelated user in the account login for the data source.  Now how is that supposed to help anything?

[Rant Off]

Needless to say, I'm looking forward to SQL Server 2008.  I hope it truly is cleaned up a good bit and as streamlined for cubes as I've been hearing.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/25/2008 at 10:45 AM
Categories: Rants | Business Intelligence and Analytics
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Hackers, Crackers, Coders, WOWers N' Backspace

I go downtown to Backspace a lot, as often as possible.  Aside from riding around on the Streetcar with the ole' trusty laptop out Backspace is probably one of my top favorites for coding away.  Good coffee, good donuts and other such foods, vegetarian stuff and some other grub - that might not be vegetarian and of course probably the most awesome environment in the city.

In addition to that next door is Ford's on Fifth, which is definitely not vegetarian focused, that has absolutely rocking steak sandwich and various food that has an east coast feel to it.  In addition to that, the prices are super low, but the food is top notch.  Around the other corner, one of the best places to take a break, is Ground Kontrol.  Basically this is probably the kewlest block in Portland for geeks, coders, and hacker types.  It just breeds outside of the box thinking and there are always conversations to be had.

The wireless at these places is easily accessible and usually pretty reliable.  Even with the dozen or so World of Warcraft playing junkies online non-stop the bandwidth is decent. So if you live in Portland, you have a penchant for not sitting around your house to code, hack, crack, or WOW, and you haven't checked out this block in downtown, I'd advise to do so ASAP.  It rocks...  and in about a year and a half it will by far be the most awesome MAX stop in downtown.  Right out front the Yellow and Green lines will be stopping, which will probably boost (or possibly detract) the coolness factor of these establishments.  I'm betting, since they have a cool city gritty feel, the stop will only increase the awesomeness.

Anyway, back to whacking this Facade Pattern back under control, it seems to be tossing me errors now that should be being logged only at this time.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/24/2008 at 11:43 PM
Categories: Just Stuff
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

Cube Processing and Stuff to Do

Often I sit wondering how I should kill the time I have between cube builds and incremental builds.  Even when I have a minimal amount of data in a cube the sucker can take a couple of minutes to even 15-30 minutes sometimes to build.  It all really depends, but needless to mention, it isn't instantaneous.

One of the things I do between long builds is actually build helper apps or just work through a random design pattern for practice while I wait.  Sometimes I will read tech articles or other internal documentation for products.  It all kind of depends.

Does anyone have other ideas on tidbits to keep a person busy between builds, that would be work applicable?

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/22/2008 at 11:03 AM
Categories: Discussion Points or Ideas
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (3) | Post RSSRSS comment feed

Clarity and Rambling

I sat down and re-read my last blog entry.  It might have come off in a way that I might not have wanted, but I'm 100% against deleting content or altering (except for spelling corrections).  Amended text or another entry are just fine in my opinion for correcting things said before.  It shows growth as an individual and pride with humbleness rolled into one.

Recently I've been studiously working on my various projects and thinking at work about what specifically I'm aiming for in my career, but also if I'm actually still aimed at what I intended to aim at.  It's been almost 6 months now that I started at WebTrends.  My intention when starting, as per my reasons for hire, where to come in and work as a consultant for the Visitor Intelligence deployments, but also to work with other departments to setup best practices for customizations, deployments, and general consulting guidelines.  With my extensive experience with development technologies I am a perfect fit for this role.

However, things do change...

As soon as I completed the training sessions the senior executive management left/departed/was removed/wasn't there anymore and a new team was put into place by the board.  All of which, fortunately for me, are top notch players.  This however had me uneasy for a few days, but fellow workers where euphoric about the new team coming in.  I'd say the vast majority of WebTrends people were not happy with what was happening before (re: top-down command and control management - which I've blogged about before).  So with that change came some pretty awesome events taking place at WebTrends.

WebTrends Change

First off, things got righted, and communication channels where opened up.  If you've read my last entry, you know that I believe in excellent communication.  It is vital, and something that had until recently been stifled.  It was awesome to see this ground swell of excitement kick off.  I could tell it had been bottled up just the way people began responding to each other, somewhat hesitantly at first.

Now the ship is sailing instead of listing.  For more on the changes, check out John Rodkin's entries on the crazy two months and management and company culture.  Some interesting tidbits about what is going on at WebTrends currently from someone's perspective besides my own.  One other blog I know of is my current commander, Aaron Gray's Blog - Great Returns.

I Doubled Up On Plans

About the time all of this started happening I started doubling up all of my efforts across my occupation.  Some of which I have as of yet to see or figure out how I want them to play out.  Two things that I'd like to tackle in the coming months.

The first thing is to get some training, brown bags, or "how to" sessions going here at WebTrends.  I'm not sure when I'd be able to teach them but I'd like to provide some type of training related to JavaScript, Beginning C# and maybe a second tier training on more object oriented C#.  After those classes I'd like to tackle some hard core engineering type classes that revolve around design patterns in C#, prospectively for the engineering group.  The last thing I'd like to tackle is SQL Server Analysis and Integration Services Training.

All of this training, with my normal workload at present, seems a bit of a stretch.  At current I'm consumed enough just keeping up with the current tasks and organizing around it to keep things flowing smoothly.

In addition to my regular work I have the almost booming business that a friend and I have been working on.  We have two projects currently and are making headway.  Not sure how or if it would ever take off but it definitely has potential.  One is a social networking site, with a niche (I can't mention) that it fits nicely into.  The other being an advertisement services type site which could be very interesting.

Other Things and Ideas

So with all this on my plate I still lead a somewhat normal life.  Ok, not really.  I literally ride around on transit and write code, continuously read books, but do somewhat maintain a social existence.  Albeit it is by no means a normal existence.  There is no white picket fence, 4 bedroom house, two cars with a two car garage, nor do I or am I planning 1.8 kids.

I still would like to do or be several different things.  Run an IT department, lead a development group, manage the operations of a successful company.  The list could go on and on, but one would get the gist from those few occupations.  I almost feel like I did while in college, with an array of options before me, I needed to pick a direction.  For the last 7+ years what I decided I've stuck to that with a fairly strong perseverance.  But now that I've achieved what I set out to do from my humble beginnings in Mississippi I intend full well to expand and exponentially increase what I can do, achieve, and become.

Well, cheers to unregulated industries and the freedom we have in such.  I'm loving my career choices and hope things keep kicking along well.  Eventually over this year, of 2008, I'll get my directions decided and move again with dedicated and strong perseverance.

Maybe one day I'll get part 3 of my ASP.NET MVC tutorial up also.  That seems to currently be on the back burner at this moment.

For now, that is all.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/20/2008 at 9:49 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

Doing Things My Way

President's Day.  Not sure why their is a holiday for the Presidents but I really don't care, I have the day off!  George Washington is probably rolling in the grave realizing we've not heeded barely a single of his or the fore fathers warnings.  But as I said, I have the day off, so no dwelling on that.  I have a few other things I'm pondering and getting straight in my head.

I'm part of a corporation now.  I am part of a business that has a doing business as name cleared and an official organization, albeit it consists of two people and a few that help us do things here and there.  The prospect of what this company can do is massive.  The name is an amalgamation of three names; Hall, Glenn, and Galt.  We're not shrugging though, we're driving the business home with thoroughness and performance, but we do live in what could be considered a Gulch.  Readers might, or might not, get what I'm taking these mentions from.  If you do, you should comment about it.

The business we're working on is a growing software business, managed and lead correctly.  We pick and choose our projects, we don't go into the office, we use agile, we use eXtreme Agile, we pull people in when we need to, we use the best people available, we do things quick and with professionalism, we are what might just be the future of software development in the United States.  With the lower overhead and decreased cost of not maintaining a massive office with dedicated pipes and bandwidth in every corner we're saving literally thousands of dollars a year.  As we grow these savings will exponentially increase.

The Catch to It All

There are of course catches that come with this style of business operations.  Managing people and having only the best, top notch, a-grade, competent people become imperative.  One person could possibly not produce for days, weeks, or even a month if they put a little effort toward not doing anything.  Our challenge is to manage the operations of development and not mitigate, but all together eliminate the possibility that a single person would drag down the development efforts.  This is the single largest threat to our model, how to manage remote workers.

Corporations of almost any decent size have several remote workers.  Some have hundreds if not thousands of remote workers.  Bank of America, Citigroup, Allstate, and dozens of others have more than a few thousands, but literally every corporate employee is technically a remote worker.  Very few groups actually exist entirely in the same physical space.

Remote Productivity Freeze (RPF - I created an acronym, wooohoooo!)

Many of these groups manage productivity and the distance by frequent communication.  The tools available today are numerous; teleconferencing, frequent one on one calls, video conferencing, etc.  This is probably the number one way of eliminating possible "remote productivity freeze" (from here on I'll call it RPF).  RPF is almost entirely eliminated with just frequent communication.  Another tool that helps in many ways, if not more than the previously mentioned tools is instant messaging.  Instant messaging is an absolute must for remote workers.  Being able to shoot of a quick message and have some type of reasonable expectancy of a fast response is of major usefulness.  The last major tool that is absolutely required is e-mail.  Being able to queue messages and respond as information comes available is without doubt a must have.

I'd even go out on a limb here (it is a mighty sturdy limb) and say that if any of the above mentioned tools of communication are not available, the remote worker is not a valid candidate for remote work.  Communication is an absolute must have for remote workers.

The second thing that is of pivotal importance to eliminating RPF is remote work location.  When someone works remotely it is very important that they actually have a personal environment that works for them in which to work.  Some people like working in coffee shops (of course one might have to step outside or away to be able to perform any of the needed communication functions listed previously), some at home in an office room, others like a comfortable seat on a streetcar, and still others actually go out and rent a small office for themselves.  Some workers are even enabled to work from a park, their back yard, or somewhere outside.  The important parts of the remote location of course are; communication utilization, network connectivity, and ability to maintain steady communication and moving forward productivity.

With just these two things RPF can practically be eliminated.  There are a few percentage points of risk left though, that leaves the threat of RPF at 1-5% change.  This threat can however be eliminated by good development practice.  Maintain regular check ins, get into a regular development flow, with daily scrums, and a flow of roadblocks being brought to the groups attention so they may be eliminated.  With these simple things remote workers under the threat of RPF can be brought down to a zero change of occurring.

The things I would like to see, especially living here in Portland, is a massive increase in remote workers that work on software development.  The cost savings to companies are massive, and the increase in business to the local community is actually rather high.  I already know of at least a dozen regulars at several downtown coffee shop locations in Portland.  These individuals maintain good productivity and stay in communication with their respective projects.  All the while providing a massive savings to their projects and contributing to the local business community.

The other great benefit of this is cross communication outside of defined development groups among fellow developers.  We're not the anti-social ilk that we've been stereotyped as and when we happen upon other developers we communicate, a lot, and learn a vast amount of things from other developers.  Inside of a static corporate environment, even utilizing agile, this is limited in comparison.  But working remotely provides a massive landscape of interactions, eliminates distractions, and provides incentive for a healthier developer lifestyle.  I can't emphasize enough the benefits of talking to other developers outside of one's respective development environment.  The amount of information that could be cross pollinated (just to analogize) is currently not measurable, but rest assured the effects of attending regular developer group meetings is literally compounded when one works remotely.

That's all for now, if anyone else has their two cents on the matter I'd love to hear it.  I've not heard any concrete arguments against remote workers.  Usually the argument consists of, "well we have all this office space" and "we want our developers in one place for communication purposes".  Of course as I've mentioned I've defrayed why those arguments aren't particularly good arguments.  So next time you're ramping up a development team, keep in mind that a remote environment with remote workers might be the best choice you've ever made.

...until later, I'm off to some refactoring and design work.

One Clause:  I can work anywhere and really any developer is probably open to that, but if a manager or project lead wants the highest productivity, they need to get remote workers that are driven.  Cube farmers I guarantee do not provide maximum productivity.  I'd love to see comments on that too, as a discourse is highly sought after so that I can hone my arguments for and against.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/18/2008 at 10:47 AM
Categories: Discussion Points or Ideas | Keeping Up
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (3) | Post RSSRSS comment feed

.NET Middle Tier Work

A recent topic that has come up in discussion is pieces of middle tier patterns and libraries.  I decided I'd enumerate some of the pieces I've used in middle tier work throughout my career, then I thought, "why?"  Instead, I'm going to scour the net and grab some current libraries, CTPs, patterns and practices, and whatever else I could find that helps one build a nice solid middle tier to tie together the front and back ends of an application.

The current big players in the middle tier stack for .NET Technologies are the Windows Communication Foundation (WCF)) and the Enterprise Application Blocks.  These two pieces are huge in the maturing of Microsoft middle tier components.  Some of the secondary players at this point, but should in no way be less important are the various factories (Web Service Software Factory, Smart Client Software Factory), CTPs, libraries, and namely one that could be huge in the near future the ASP.NET MVC.  In this article I'm going to discuss some of the points of use and ideas for use of these various pieces of the Microsoft Technology Stack.

Middle Tier WCF (As if it would be an interface or a data storage mechanism?!)  Surprise [:O]

First the WCF, which I've been working with well since the beta, absolutely rocks.  Now some of you hard core WCF grognards might think, "no it doesn't, its slow" or "all it does it force coding to interfaces" and the list of gripes goes on.  But the list of advantages, like it might be faster (toward the bottom), far outweighs the list of disadvantages.  In some cases the speed might be an issue, but probably not, and in some cases the coding to interfaces might be an issue for some, but I really hope it isn't as that is a sign of other significant issues.

The WCF layer is very flexible, being that it is primarily a transport foundation, nothing more.  This opens up the ability for all types of SOA (Services Oriented Architecture) development that isn't locked to a particular transport mechanism.  As has been written and spoken about before, web services does not equate to SOA, SOA is too high level to sync with the underlying transport mechanism.

The Windows Communication Foundation also works great when utilized merely as a transport mechanism with validation, authentication, and other pieces pushed off into use with the Policy Injection Application Block (PIAB).  Also check out the integration of the PIAB with WCF article.  With the validation or other pieces of the middle tier cleanly pushed off into the PIAB we get a better separation of concerns with the obvious increase in maintainable alterations down the road.  The validation layer could change via the way the PIAB access the rules and the WCF layer wouldn't have to change one bit.

Middle Tier Enterprise Application Blocks

Speaking of the PIAB, the latest Enterprise Application Blocks are super sweet.  The new pieces, such as the PIAB, help increase the use of a peripheral components as well as the Enterprise Application Blocks themselves.  In a middle tier environment the business logic and crosscutting concerns make a tangled mess in code.  Maintenance and readability become a serious and expensive concern.  With the PIAB though, the separation of concerns allows a much cleaner break out of the tiers work so that maintenance and readability are exponentially increased, and thus time and costs decrease once implemented.

The crosscutting idea behind the PIAB sits outside of a particular code base and is implemented via a policy.  These policies are acted upon by a pipeline of handlers.  The way these policies are initiated is through mere applied attributes.  This makes the intrusion into other workflow, web services, or other code very minimal but still obvious.  Thus the simplification and separation of concerns into respective code areas causes a decrease in code spaghetti and the resultant nightmares.

So what about the other parts of the current EAB (Enterprise Application Blocks)?  The parts as I remember just off hand are; caching, cryptography, data access, exception handling, logging, security, and validation.  Each of these sections can have huge advantages in building out middle tier operations and assure good separation of concerns within the code base.

Middle Tier - My Comments, Thoughts, and some other Ideas

Generally speaking it is fairly easy, once one knows the proper tools and libraries, to get an architecture setup and ready to go for an enterprise application, the catch comes when actual implementation starts.  Knowing good pattern ideas and libraries only really gets the implementation half baked.  The need to be able to flex and bend the middle tier, and architecture in general is pivotal to success for a project.  With tools like the PIAB, WCF, and other new tools and such that I've mentioned, that flexibility for implementation is available to a project.

Middle Tier - Last Thoughts and Unit Testing

Another big plus, that I almost forgot to mention is the ability to test middle tier components.  This is an awesome part of middle tier code areas such as validation, policy injection, etc.  With the front end or even back end database it is somewhat difficult to test in isolation, in the middle tier however it is vastly simpler to turn out some unit test, either via TDD or test after development.  For testability within enterprise application development it is very important that a middle tier is developed with unit tests.  Sometimes this causes slight changes to middle tier architecture, such as interfaces being utilized where they might not have to increase the ability to mock various objects easier, but for the most part any middle tier is exponentially more testable and offers that much more integrity during deployment.  So with the middle tier always built with testing in mind - it'll work better in the end.

For now, I'm off to write some view code and figure out associated unit tests for that layer, that will then be connecting to my middle tier.  I just wanted to ramble off a few of my thoughts on middle tier development and kind of discuss (yes, sort of like speaking to myself) the latest and greatest in middle tier tools and architecture components.

Smile [:)]

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/8/2008 at 12:54 PM
Categories: Design Patterns | Discussion Points or Ideas
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Pre-existing Cube into Visual Studio Project?

I got to wondering, and realized it is not straight forward or even possible.  How does one go about bringing an existing SQL Server Analysis Services Cube into a new Visual Studio Solution or Project?

...this one I'll have to dig on, so far, nothing.

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/5/2008 at 9:18 AM
Categories: Business Intelligence and Analytics
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (1) | Post RSSRSS comment feed

Coffee Cohorts and ASP.NET MVC View Unit Testing

So my buddy Shane busted my chops tonight on how to unit test a view in the MVC Framework for ASP.NET.  Actually, he just kind of asked me how I was doing it.  Honestly, I had not even had time recently to get to that step even though I've been working steadily toward that.  I knocked out a crude model & controllers with the appropriate unit tests and also got a sample LINQ data model going on.

Laurie, Shane, Eric, and I however had decided to meet after work just to discuss the MVC, LINQ, or whatever else came up.  As expected in the short hour long time span that we had to discuss, we got a lot covered, but only skimmed the surface.  The one take away I did have was that the entity data model, regardless of it being in beta with some glaring bugs (the update from database doesn't seem to work for referential integrity) is a must have!  The other thing is that I really need to keep chomping at these damn unit tests.  There are, it seems, more ways to test things than there are ways to actually build stuff that needs tested.  It is insane.

So now that it is 1:06am, after a good solid workout, I've decided it is a great time to sit down and get mbUnit running with some good tests.  What better to work against than the ASP.NET MVC Views that I have in my Transportation Tracker Application.

If you don't have mbUnit, go get it at the mbUnit Site.  Two articles on how to use mbUnit that I've gone along with to ramp up on the tools are available via www.codeproject.com, "Generative Unit Test Framework" and the mbUnit Documentation itself.

To setup the code snippets for mbUnit follow these steps.  First click on Tools -> Code Snippets Manager...

Once that dialog window comes up then click on Add (Just in case, I've highlighted it in red).

The next dialog comes up and has three key places to take note and action.  The top red highlight is the path, or what would be the path on Vista.  The second is the folder you want to select, unless you use that VB stuff, and the last highlighted area is what you'll press when you've got your folder selected.

After that you should be able to open up the tree item and see items similar to those listed in the screen image below.

Once the snippets are installed, type any of the following and hit tab twice.

  • autorunner : Adds all the basic code for a simple executable self-testing assembly.
  • combinatorial : Adds code for a combinatorial test with 2 parameters and 2 factories
  • datafixture : Adds code for a data fixture test class
  • processfixture : Adds code for a process fixture test class where test are performed in a given order
  • rowtest : Adds code for a simple row test
  • state : Adds code for an IState wrapper
  • test : Adds code for a simple test
  • testexpectedexception : Adds code for a simple test that expects an exception to be raised
  • testfixture : Adds code for a basic fixture test class including setup, teardown and test methods.
  • testsuitefixture : Adds code for a test suite (dynamic) fixture class and method to add tests to the suite at runtime
  • typefixture : Adds code for a type fixture test class including setup, teardown and test methods.
  • typefixturefac : Adds code for a type fixture test class including setup, teardown and test methods using a provider factory
  • usingmbunit : Adds the standard using or imports statement for MbUnit.Framework.

...and that's it for now.  Tomorrow at some point, or maybe the next day time pending, I'll post a sample that I'm working up for unit testing the views in the ASP.NET MVC.

 

...and you thought I'd get to it tonight at 1:32am in the morning?!  I gotta sleep too.  Jeez.  Stick out tongue [:P]

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/5/2008 at 1:33 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (2) | Post RSSRSS comment feed

Patterns, Anti-Patterns, and Refactoring Link

This site is really awesome.  Clean web 2.0 style layout and design, good easy to find material.

www.sourcemaking.com

del.icio.us Tags: ,,

Technorati Tags: ,,
Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Posted by: Adron
Posted on: 2/3/2008 at 12:18 AM
Categories: Website and Application Write-Ups
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed