<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29116863</id><updated>2012-02-07T01:41:11.697-05:00</updated><title type='text'>Ramblings of a middle aged geek</title><subtitle type='html'>I am now a 45 year old CTO of a small but rapidly growing software consultancy. Been into computers since grade school in the late 70's, having spent years working in the field, building, fixing, installing, selling, teaching, gaming, programming and now consulting on all the aforementioned topics. Computing life is good.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29116863.post-1433038528977665921</id><published>2011-10-16T22:31:00.000-04:00</published><updated>2011-10-16T22:33:24.713-04:00</updated><title type='text'>New phone development...</title><content type='html'>Last month I posted about the purchase of my new Android based LG Thrill and remarked how I was going to write that next flashlight application that everybody would want. (There are hundreds already out there). In reality I wanted to get into the Android development paradigm because I found the IOS development environment restrictive in various ways. ( You need a Mac... You need to use Code... Natively you need to learn ObjectC). To that end I have installed the latest bits of development requirement on my windows 7 laptop, and started toying around with the Java based development environment for the Android device environment. I found the initial Hello World style of application easy enough. I also found the task to deploying the application refreshingly simple. Code signing and certifying using the development environments own sample certificate to sign the apk package and I was able to just send to blue tooth device on my laptop to place it on my phone. Once the file was sent to the phone, the phone itself asked what I wanted to do with the file. I selected to install it where Android dutifully did so and the test app appeared in my set off apps. Touch it and it runs just as you might expect. &lt;br /&gt;&lt;br /&gt;The development environment also allows easy sending of test applications to the software based Android emulator. you can use one of the 3 pre-built android configurations that came with the development environment, or you can build one with specific parameters that you want. IE Screen size, Memory, SD Card Size, and so on. Using the tools I built a emulator environment that closely matched my LG Thrill in feature set. and I use that emulator environment when I want to test an app without sending it to my actual phone. &lt;br /&gt;&lt;br /&gt;I purchased a number of books via Amazon on Android development, and have them on my Kindle app in my IPad, (I still think the IPad makes a better kindle than an actual kindle does), and I was just playing with Java in Eclipse with thee android SDK when I came across some information about MONO Droid.. and my whole life changed....&lt;br /&gt;&lt;br /&gt;﻿&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OZ5yMciJ7e4/TpuMR-edi-I/AAAAAAAAAD0/XQljo7SFItM/s1600/Monodroid.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="322" src="http://1.bp.blogspot.com/-OZ5yMciJ7e4/TpuMR-edi-I/AAAAAAAAAD0/XQljo7SFItM/s400/Monodroid.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Mono Droid Main web presence... Wonders did my eyes behold....&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;MONO Droid is a port of the MONO development paradigm to the Android device pool. Its an offshoot of Xamarin's MONO Touch environment for the IOS devices (IPhone and IPad). I had basically forgotten about MONO Touch because it was initially owned by Novel and they gave the whole project and the staff working on that project,&amp;nbsp;the axe last spring. My office, full of bits of technology that are no longer supported, had no room for yet another one so&amp;nbsp;I gave up on writing C# for any of the I-devices. Well the original Novel development team lead by Miguel de Icaza, formed the company Xamarin out of the ashes left by Novel and are carrying the development forward. MONO Droid is a port of the MONO runtime with support for the Androids native libraries and features. It allows me to write C# code in the native C# environment I use every day for a living, Visual Studio 2010. From my own comfort zone I can write in the language I am most familiar with, in the environment I am most familiar with, to target my Android devices. (MONO-Touch also exists, for IOS. It affords C# language development for the I-devices&amp;nbsp;but it has some of the key barriers for me personaly in that it requires a MAC development environment)&lt;br /&gt;I first downloaded the trial of the MONO Droid sdk from android.xamarin.com and installed it. The SDK installs a number of things that support its needs including the MONO run times, and MonoDevelop (A visual  studio like environment for those folks who don't have Visual Studio Professional). It also installs a number of add-ins and templates that expand on Visual Studio 2010 to support Android development. After installing MONO Droid, Visual Studio showed new project types in its new project dialog for various ANDROID deployments. Selecting one of these new project types creates a new project with everything needed to target an Android device.&lt;br /&gt;&lt;br /&gt;﻿&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Bw_SAGTD54Y/TpuLZQfUeuI/AAAAAAAAADs/QvthYHKDI0E/s1600/NewMonoProj.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="275" src="http://3.bp.blogspot.com/-Bw_SAGTD54Y/TpuLZQfUeuI/AAAAAAAAADs/QvthYHKDI0E/s400/NewMonoProj.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;New Project Dialog Showing Android Templates added to VS2010&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The site also includes a series of short tutorials to help someone like myself jump right in and start to play with all the shiny knobs, bells and whistles in this new environment. The trial version will not however deploy to actual devices only emulator images built using native Android SDK that I was talking about at the outset. It even recognized the special emulator image I built to mimic my LG Trill.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AajvWn81-K0/TpuNJjrWtFI/AAAAAAAAAD8/89DlkaDV0xY/s1600/StartEmu.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="211" src="http://3.bp.blogspot.com/-AajvWn81-K0/TpuNJjrWtFI/AAAAAAAAAD8/89DlkaDV0xY/s320/StartEmu.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Start Emulator Dialog&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Using MONO Droid is easy. A simple tutorial available shows how to consume Web Services. Using that tutorial I was able to easily leverage all this code we have written in our&amp;nbsp;silverlight developments. Over a single weekend I was able to write an android application that ports a laarge part of the face sheet functionality of&amp;nbsp;one of our EHR applications (IhSIS). I dial up a persons record and can look at their Address History, Authorizations, Claims, Incidental Expense Requests, Service Provider List, and Supports network all from my Android Phone, Sweet.....&lt;br /&gt;&lt;br /&gt;﻿&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rkURsAYJync/TpuSfqOolnI/AAAAAAAAAEE/cG4WLfydH6k/s1600/AndroidEmuScreen1.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="253" src="http://2.bp.blogspot.com/-rkURsAYJync/TpuSfqOolnI/AAAAAAAAAEE/cG4WLfydH6k/s400/AndroidEmuScreen1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Emulated LG Thrill running my test IHSIS-DROID application actually connecting to my Web service Layer.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;div class="blogpress_location"&gt;Location:&lt;a href="http://maps.google.com/maps?q=Way%20up%20in%20the%20air.&amp;amp;z=10"&gt;Way up in the air.&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-1433038528977665921?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/1433038528977665921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=1433038528977665921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/1433038528977665921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/1433038528977665921'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2011/10/new-phone-development.html' title='New phone development...'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-OZ5yMciJ7e4/TpuMR-edi-I/AAAAAAAAAD0/XQljo7SFItM/s72-c/Monodroid.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-1149199076620866452</id><published>2011-09-25T17:41:00.001-04:00</published><updated>2011-09-26T08:20:56.123-04:00</updated><title type='text'>New phone..... (First Impressions)</title><content type='html'>&lt;div&gt;This weekend I decided to break free of the shackled existence that is the IPhone. While I initially enjoyed the simple interface and limited options that IOS presented to me as the user, two years ago, I have since wanted more. Looking at the android platform, mature a bit, and grow in diversity, I found myself beginning to loath my IPhone and its drones of fanboys all mindlessly parroting the party line. Mostly, I found myself somewhat embarrassed by my own apparent succumbing to the reality distortion field that surrounds that whole walled garden. So this weekend I bit the bullet and upgraded my old phone to a shiny new &lt;b&gt;LG THRILL. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-k8Z1Cns3RQw/ToBtv0qYk0I/AAAAAAAAACQ/mpTexLQ3Jwg/s1600/266121-lg-thrill-4g-at-t-front.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-k8Z1Cns3RQw/ToBtv0qYk0I/AAAAAAAAACQ/mpTexLQ3Jwg/s320/266121-lg-thrill-4g-at-t-front.jpg" width="202" /&gt;&lt;/a&gt;&lt;strong&gt;Stats...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1 GHz TI OMAP4430 processor with a dual-channel, dual-memory architecture for power and multitasking efficiency&lt;br /&gt;&lt;br /&gt;Brilliant 4.3" 480x800 (WVGA) TFT touchscreen with support for glasses-free 3D viewing&lt;br /&gt;&lt;br /&gt;Dual 5 MP high-definition cameras for 3D image and video capture plus a front-facing camera for video chat&lt;br /&gt;&lt;br /&gt;8 GB internal memory and an included 8 GB microSD™ card.. (I purchased a 32 gig card because I have over 20 gigs of music.)&lt;br /&gt;&lt;br /&gt;Dimensions and weight: 5.07" x 2.68" x 0.47", 5.99 ounce (Its powerful but definitely not svelte)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Overall impressions&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The screen is very sharp albeit less so than the screen on the iPhone 4. Much improvement over my older IPhone 3gs.&lt;br /&gt;&lt;br /&gt;I find typing on the on-screen keyboard of the android OS more accurate than that of the old phone. The word suggestion feature seems to be more useful as well. &lt;br /&gt;&lt;br /&gt;Much is made by the apple camp regarding the massive gap in app availability in the app store over the android marketplace. I can say that so far, I have found everything I needed to replace functions and featured apps I used on my IPhone. Most of which are in fact the same versions I used on my old phone, besides, how many flashlight apps does one need?&lt;br /&gt;&lt;br /&gt;The phone is fast, fast, fast. Dual core processor makes the thing just slick, even with all manner of extra stuff all sucking on the battery. Battery life I can see will be short though, for me that has never really been an issue, as I rarely need long battery life. However one thing I do like is the fact that I can replace my own battery with larger capacity batteries without having to send it back to the mothership for the retrofit.&lt;br /&gt;&lt;br /&gt;One thing I went to android for is to be able to write code for my phone without having to invest personally in a Mac to do so. Also the native development environment is Java based for the android, conceptually a small transition from my comfort zone in C# vs the chasm that IOS's ObjectC presents.&lt;br /&gt;&lt;br /&gt;As I said above I have a 20 gig music library. Plugging my phone into my PC for the first time. I was asked by the phone if I wanted to share the SD card via USB. On doing so, the phones SD card appears as a drive in windows. Copied my whole library over which was not a fast operation even by pokey slow USB 2 standards. Yet on disconnect the phone scanned the SD card and recognized my music. Just like iTunes had it organized. Cover art and all. Definitely a pleasant surprise even moving iTunes to iTunes never went as smooth.&lt;br /&gt;&lt;br /&gt;Another feature I wanted to employ was faster Internet where available. I waited 2 years to IPhone to support 4g speeds on ATT and I would still be waiting. I also wanted to tether my phone to my PC in places where I need it, rather than having to use my old aircard. While I can now do so on IOS after paying extra, its still only 3g in places where it could be better. Now I have both, and by ditching my old aircard I can actually save a few bucks each month. Oh and it will also hotspot, so I don't have to actually be tethered to use it.&lt;br /&gt;&lt;br /&gt;The android OS supports flash in the browser, and YouTube, so more of the web is available than IOS affords me. Though as a silverlight developer that aspect of the web that I contribute to still is off-limits to my phone&lt;br /&gt;&lt;br /&gt;The phone has a number of high end features that frankly feel gimmicky and did not contribute to my purchase decision. Most notable being 3d capable without glasses. In my mind a non feature and frankly I have found it to get in the way from time to time. As they say "nothing is perfect"&lt;br /&gt;&lt;br /&gt;There are definite differences between various android implementations. Not all of these are necessarily good though. For example, the new phone contained two types of on-screen keyboards. The standard android keyboard featured haptic feedback where the phone vibrated a little as you single finger type, and the LG keyboard the mimicked the IOS keyboard. No haptic feedback, only audio clues. The LG keyboard doesn't suggest words though. Personally I find the android keyboard better. Choice however, is why I went android in the first place, and the combination of the android OS and the High performance LG Thrill, makes me feel liberated and excited again about my phone and what I can do with it. (Note... after posting this I found a buried setup feature where I could activate items like haptic feedback for the LG keyboard. The primary difference with the LG keyboard being that it looks more like the IOS keyboard as it is implemented.)&lt;br /&gt;&lt;br /&gt;Now to install all the Development tools and write a flashlight app 8)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-1149199076620866452?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/1149199076620866452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=1149199076620866452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/1149199076620866452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/1149199076620866452'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2011/09/new-phone.html' title='New phone..... (First Impressions)'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-k8Z1Cns3RQw/ToBtv0qYk0I/AAAAAAAAACQ/mpTexLQ3Jwg/s72-c/266121-lg-thrill-4g-at-t-front.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-8004844987721766173</id><published>2011-04-20T15:36:00.001-04:00</published><updated>2011-04-20T15:37:07.053-04:00</updated><title type='text'>Being anal ain't all bad</title><content type='html'>I tend to be rather short with people and process that I consider overly burdened with steps and detail. In other words I hate 'ANAL' people. Folks who have their list of steps for everything, and follow those steps with religious zeal, bordering on fanaticism. You know the folks, the ones who want the results of report x ordered the same way each and every time as and example. Such a person calls out the national guard when a software change presents output in a different order. Such a person questions the validity of such output simply because two rows of output are swapped. I used to think of this kind of behavior as a bad thing, wasteful of precious time that I have never had enough of. Sweating the small stuff, I felt sorry for these folks, while being annoyed with them in my interactions. These folks are everywhere after all.&lt;br /&gt;&lt;br /&gt;Hypocritically perhaps, I find my interactions with systems to follow such an anal pattern. Initially this behavior on my part was undertaken to simply allow the kind of compliance that I feel will come in any such system rollout to the larger whole. Sure the steps followed religiously in testing and development are overkill, unnecessary and wasteful of precious time, but at some point, when I am going to be tasked with deployment and the whole thing gets put under the scrutiny of external eyes, those anal bastards are gonna want all the i's dotted and the t's crossed. I better just do it at the outset, it's better that way. At least that's what I have always told myself.&lt;br /&gt;&lt;br /&gt;One such measure I have found myself, initially begrudgingly so, undertaking is to have a complete history of each and every version of project z that is being deployed to a client even in test. This is not to say that through the miracles of source control I could recreate said archive. No rather I am talking about having each version archived in it's own bundle, in a repository on the clients own environment. If the client has a training and production version then there is an archive of each of these items for every version that has ever been sent along to the client. Overkill? Perhaps but required for certain levels of compliance with certain regulatory bodies whose sole existence is to ensure that measures such as this are in force, else bad things will happen inflicted by ( insert big brother here ).&lt;br /&gt;&lt;br /&gt;I have been at a training seminar for the past few days. Each day spent from 7am through 6pm in sessions. Of course we have a client who has an urgent need for 16 new and changes to a rollout that I must also attend to. So even though I am away I have to get this stuff done as well. Long nights in hotel room working remotely, and many a early morning deployment to test environment for the clients review. As you might imagine, many of these nights have had me performing these tasks in in a very impaired state of exhaustion. Mistakes in deploying a project of this type can be catastrophic and given the mental condition I am in in these scenarios are inevitable. In these instances I now see a new use for the Anal behavior I have trained myself to follow. It provides the appropriate safety net for the require CYA necessary when you do something like deploy a training version over a production installation at 4am.......&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=W%20Flamingo%20Rd,Las%20Vegas,United%20States%4036.119568%2C-115.186686&amp;z=10'&gt;W Flamingo Rd,Las Vegas,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-8004844987721766173?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/8004844987721766173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=8004844987721766173' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/8004844987721766173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/8004844987721766173'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2011/04/being-anal-ain-all-bad.html' title='Being anal ain&amp;#39;t all bad'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-2870345198421277134</id><published>2011-04-15T00:44:00.001-04:00</published><updated>2011-04-15T00:44:02.736-04:00</updated><title type='text'>Light dawns onto propeller beanie</title><content type='html'>It's been an excruciatingly long set of months leading up to this post. All of it spent in death march style months on two tasks that's have consumed my every waking moments attention. Looking over the past few years I am struck by one overriding thought, "What's new?".&lt;br /&gt;&lt;br /&gt;Indeed if you read this dusty corner of the Internet, you will see that those kinds of intros have been in an overwhelmingly common occurrence. So with that astonishing revelation I am further struck by another thought, "What am I doing wrong". &lt;br /&gt;&lt;br /&gt;I feel like I am in that STTNG episode where the ship is suddenly presented with a debilitating anomaly, rudderless and on a collision course with another ship that has appeared from the cloud. There is carnage and destruction and death and then there at the poker game again. Like a twisted cruel ground hog day from hell. The past few years have been one such occurrence after another. Each time I find myself saying, "Well we won't make that mistake again".&lt;br /&gt;&lt;br /&gt;Indeed, we tend not to make the same mistakes again, yet we do find ourselves in the same tenuous position. Fires raging all around, doom and gloom, and a squirt gun filled with gasoline to put them out. Eventually we have either managed to extinguish the flames by sheer will and perseverance, or they have extinguished themselves by simply running out of fuel to burn. (squirt guns don't have that large a capacity).&lt;br /&gt;&lt;br /&gt;This particular project presented itself like any other. We engage with it like we have done before, with differences gleaned from the past designed to avoid painful bruising and internal injuries sustained in prior battles. Yet I sit here headed off to Vegas for my end of phase decompression feeling just as shitty as ever. The real problem on this one is that the source of this is really not through with it's carnage yet. The project is not finished, just an important milestone has been reached. &lt;br /&gt;&lt;br /&gt;As I sit here thinking about what has gone wrong on this particular project and what has gone right, I find myself dismayed by the fact that the measures we employed at the outset have had the desired effects, it's just that new dis-functional elements have appeared that have wreaked havoc on the project. Like some twisted game of whack-a-mole, we stamp out a problem with process and another more insidious one appears to take it's place.&lt;br /&gt;&lt;br /&gt;In this case the new elements have taken the form of a set of overwhelmed managerial elements on the other side of the table. This has resulted in feature creep that has killed our ability to deliver. The cart is leading the horse here and that is never a good thing. Our mistake was not seeing this at the outset and enforcing some measures that stand a chance at mitigating the effects. I am very disappointed, not at the client, but at myself rather for not recognizing this sooner. The whole thing is so textbook, and yet we fell victim to the standard pressures that befall every small company, struggling to stay afloat in what can charitably be called challenging economic times. The client is really in the same boat as we are in all this. They to have economic challenges and pressures to keep parties happy and all the kinds of things that lead this kind of nonsense. from the outside looking in, the problems are as plain as the nose on my face. &lt;br /&gt;&lt;br /&gt;I have been reading a few things from other sage's in the industry over the past few weeks, in between compilations and bathroom breaks, and I am struck by the amount of tellings of these same tales of woe. Each pundit clearly outlining the problems in all the gory details that are not fit for children to see, each pundit unable to show a solution that will surefire rectify the situation. That is unless, as a company, we want to price ourselves out of the market. A small and very cut-throat market at that.&lt;br /&gt;&lt;br /&gt;So what are we left with? Scorched earth in our wake, bandaged and bruised, we trudge on to the next bit of green pastures. Our collective experience, the bandages for the next skirmish to be held in those green grasses and fragrant woods. The cycle will continue unaltered by the actions of our rag tag group of disillusioned developers until wars end. In my case I can see one one real end to this and it's filled with the witty catch phrase "Would you like fries with that?"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=36000%20feet%20en-route%20to%20Vegas&amp;z=10'&gt;36000 feet en-route to Vegas&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-2870345198421277134?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/2870345198421277134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=2870345198421277134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2870345198421277134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2870345198421277134'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2011/04/light-dawns-onto-propeller-beanie.html' title='Light dawns onto propeller beanie'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7914154404678667096</id><published>2011-01-13T20:02:00.001-05:00</published><updated>2011-01-13T20:03:53.550-05:00</updated><title type='text'>Revelations</title><content type='html'>Have had a very very busy couple of months. The pressure of impossible schedules and deadlines that seem to come faster than they go have kept me away from this small dusty corner of the inter web for some time. The 80 hour 7 day weeks all bleeding one into the other leading to the sudden awareness of the holidays come and gone, a new year now well underway. This current road trip started on this past Sunday with a one way rental and drive through Allentown Pa. To pick up a co-worker and continue on to Erie Pa. That was to be two days then hoof it to Pittsburg and fly to Tampa. The main source of my last few months labors. &lt;br /&gt;&lt;br /&gt;Here in Tampa, our client had been struggling with what every client struggles with in a new development. What is wanted, what is needed, what can be afforded, what order to implement in. As they say same shit different day. Also common in every one of these endeavors I have been involved in we find communications lacking amongst the constituents. In this I felt a major communication bottleneck occurred in a particular department headed, as they all are by a single person. Now there are many times when I have encountered this situation, finding the barriers being the result of a general impedance mismatch between parties. Not to blow my horn but generally that finding has been that the party with which the difficulties arise seemed to alway be out of touch with the reality of the situation. &lt;br /&gt;&lt;br /&gt;Now in this case I found out something very interesting and quite eye opening. You see this individual had a former life as a very high ranking researcher in cancer treatments at the genetic level PHD level stuff, lab coats and security badges an all that stuff. After many years of research this person decided that they were tired of that and instead wanted to take on different challenges and decided to enter into information technology management. This person has been at that new and radically different profession now for longer than the former profession. Along the way having engaged into many systems development efforts and designs. This unique person has had what is effectively two lifetimes of profession in the span of time that I have only managed to struggle out a single such achievement ( rather badly I have come to realize ). Oh and this person has a family as well. In my case I can barely keep my spouse able to tolerate my presence, this person not only has been happily married this whole time but managed to have children as well. &lt;br /&gt;&lt;br /&gt;I can truly say I am humbled by this revelation. In fact I realize that the communication barriers that seem to be there are not the result of any sort of superior grasp of intellect that I posses, no rather the other way around. You see from an intellectual understanding level I am simply not even worthy to carry this persons sandals. Very Eye opening indeed and further evidence of the distance I have yet to travel in all this entropy.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7914154404678667096?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7914154404678667096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7914154404678667096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7914154404678667096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7914154404678667096'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2011/01/have-had-very-very-busy-couple-of.html' title='Revelations'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-5741715204591647756</id><published>2010-09-17T15:47:00.001-04:00</published><updated>2010-09-17T15:47:10.463-04:00</updated><title type='text'>False Sense of Security.</title><content type='html'>Recently I have been involved in a number of interviews and talk sessions connected with a highly involved government audit. As with many of these sorts of things when money is channeled through and organization that has it's origins in tax revenues, Uncle Sam and his mini me's will want to make sure that a series of written doctrines and processes are being followed and adhered to. Failure to do so results in the river finance drying up, followed by the plague of legal locusts swarming in the black cloud of litigation. Such is the lot of doing business with government agencies at the state and federal levels. &lt;br /&gt;&lt;br /&gt;I readily acknolowedge the need for oversight of these sorts of things. Indeed our very existence is in some respects due to the fact that some of these sorts of requirements exist. What I do feel is overblown are the reasons cited for some of the requirement. From the outside looking in, a list of features built into the seal of approval from such audits would read to instill some level of confidence. From inside looking out however the vibe is a very different one.  Let's take the notion of information security as an example.&lt;br /&gt;&lt;br /&gt;In one such engagement we had a requirement for a separate team of folks to be responsible for building a public facing application, rather than the development team being responsible for such endeavors. In fact the actual requirement, had that dedicated build team responsible/required to conduct all such building and deployment activities even into the test environments. The reason cited was to enhance security. Specifically the notion being that a separate person or team of persons would be less likely to inject unwanted content into said application, (read as backdoors or security holes into said application). As if a person who collects a set of components, places them in a specific location on a dedicated machine and then clicks a build button, would somehow magically see a back door phase into view should one exist, just like a Romulan War Bird dropping out of cloak before their very eyes.&lt;br /&gt;&lt;br /&gt;I know that somewhere in the past some agency was bitten by some disgruntled nit wit and found itself to be vulnerable to an attack staged by said nit wit. In the post mortum, someone disconnected with the whole mess thought this measure would have prevented this issue. In their report they wrote it up and it has forever been yet another thing that adds to the cost of doing such business. Anyone who has written anything more complex than HelloWorld might beg to differ with that sentiment. In reality that specific measure does little more than keep someone else employed. (admittedly a worthy cause in this down in the dumps economy). Facts are that it presents yet another hurdle to agility in a development effort. Worse yet it contributes to the false sense of security those on the outside have in the workings of such technology endeavors. The world of IT is rife with such issues.There are all manner of certifications and regulations that are in many  cases targeted at securing the information within from the unsavory without.&lt;br /&gt;&lt;br /&gt;I found myself thinking about this very point as I was standing 50 deep in queue, holding my shoes in one hand, along with my pants because I had to take my belt off as well. Waiting to pass through the xray machine at the airport. My mind wandered from thoughts of pity for the poor soul who was forced to look at the macabre ugliness of humanity as it schlepped through this particular checkpoint myself included. Yet I was all warm and fuzzy feeling the huge boost in my personal safety that this measure of indignity afforded my meager existence.  It was then I realized the resemblance this measure had with what we face in in IT every day. &lt;br /&gt;&lt;br /&gt;IT endeavors and their interfacings with the general population are full of said measures that are laughable. One collection of said measures goes by the moniker of HIPAA. It's basic premise is good in that it supposed to prevent the unwanted dissemination of private health related information about a person to others persons who are not supposed to see that information. Things like a person name and such. Yet every time I go into a doctors office I sign in on a sheet with perhaps dozens of other peoples names who have come in before me, or when I pick up my Viagra at the Pharmacy I sign a sheet with the same peoples names....&lt;br /&gt;&lt;br /&gt;Now I can hear the the supporters of these regulations saying that these measures are necessary and the breaches cited are minor and innocuous in nature. What about when IT worker q installs a policy at the enterprise server that prevented the workstations connected to said server from activating their USB ports. The idea being that those pesky USB ports were conduits for wanton information dissemination via storage keys, smart phones, and music players. This poor IT guy, tired from the weekend of wine and women filled debauchery, having made a typical human mistake and also turned off every one of the hundreds of workstations keyboards and mice. ( they were after all USB devices.) How about that, Marge from accounting, who always complains that her sled of a machine was garbage is the only one working now because it didn't use USB ports for the keyboard and mouse, imagine that. All kidding aside though, this same regulation also is creating serious issues in the world that the promise of IT could address. One such example would be when the same regulations prevent doctor x from knowing that I am being treated for something by doctor y, this because doctor x does not have a release of information submitted to doctor y. Doctor x then goes on to prescribe something to me that runs counter to what doctor y is doing. &lt;br /&gt;&lt;br /&gt;I hear people clamoring well you should have told the doctor what you were doing with the other doctor, they ask you about your other treatments don't they. Yes standard practice has you drill out everything you are taking, thinking, doing every time you go into a doctors office. What if you forget a dosage as you are filling out this form for the umpteenth time, what you have been in a horrible accident that has left you in a coma and the ER doc has no way of knowing. Don't kid yourself into thinking that the safety supposed to be provided by these layers of regulation will help you in this scenario, don't think that it never happens that way either.&lt;br /&gt;&lt;br /&gt;I work every day with people who know that the sharing of information of this type would go so far to silence the squeaky creaking of a healthcare system that has been on life-support for longer than most of the patients it so treats. The entire system sits in its own iron lung even as it struggles to care and provide services for the people who need it. In a vacuum a single happening requiring said system to provide care and healing, shows that the system can work remarkably well. I break my leg when I am a young child, and I go to the hospital to get it set and cast, revisiting said doctor when its time to remove it and all is well. Its when the picture gets complicated, after years of interactions with the system and people and places involved have come and gone that regulation like that cited prove a hinderance.&lt;br /&gt;&lt;br /&gt;The situation is even worse on the behavioral health side. Ironically the stigma associated with substance abuse, mental, and developmental disability issues were a major impetus for the regulation as it stands today. Yet on the public sector side of the population where the involvements in service providers are many and varied and lengthy. Information sharing would provide the greatest of benefits. Yet there is that pesky regulations set in place. The systems employed could easily be made to talk to one another if the regulation allowed it to. Then the real promise of IT could come to provide a real sense of security rather than the Majinot line we have today.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=35000%20feet%20some%20where%20over%20the%20Atlantic%20ocean%4027.944932%2C-82.356607&amp;z=10'&gt;35000 feet some where over the Atlantic ocean&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-5741715204591647756?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/5741715204591647756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=5741715204591647756' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/5741715204591647756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/5741715204591647756'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2010/09/false-sense-of-security.html' title='False Sense of Security.'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7979116389371753916</id><published>2010-08-30T13:02:00.001-04:00</published><updated>2010-08-30T15:04:55.716-04:00</updated><title type='text'>That which does not kill us....</title><content type='html'>It's been a full year since the most difficult project I have ever undertaken went live, albeit without a great deal of it's present functionality. Project X as we called it at the time was, at that time, the latest of impossible missions we had undertaken. It was however exciting and when we undertook the effort a mere 60 days prior, we felt we could make the targets. The client seemed fully aware that they were asking for something that would have to evolve into their vision and that the "live" date would be a mere shadow of what was come. This time 1 year ago we were on day 60 of 18 hour days frantically coding to a nebulous specification, fraught with meetings, and other pace killing interruptions. The system was largely incomplete, new versions were being deployed into sandbox almost hourly. The client was nervously excited, we were completely exhausted. I personally had not been home for 4 weeks at that time. Then the switch was thrown... &lt;br /&gt;&lt;br /&gt;We went live with version 1.0. Surprisingly enough it was not a complete disaster. A testament to the small but dedicated team we had on the project. The problems that would tax my very desire to continue to live would come later. Simple facts are that we should never have taken the thing with the constraints the project was running under. It needed a full year to be coded right. As with so many projects like this the client became angrier as the pace of new functionality slowed. ( more difficult to perform work on your car while it's speeding down the highway). Design shortcomings not surprisingly began to rear their ugly heads. The days continued to drag on with some of my own personal weekly times logged reached the 90+ hour level over a 7 day span. At one stretch I was not even home once over a 8 week span. The hotel I stayed at thought of me a Howard Hughes albeit a little less a wacko and with no money. That's when things really turned sour. The client called in the parent of one of the partners to take an assessment of what was wrong. The resulting report was, as one might expect, fairly critical of the development team and methodologies employed. The resulting effects on the pace of work was profound.&lt;br /&gt;&lt;br /&gt;We got involved in a large number of additional hands being thrown at the project. This being a constant in these sorts of things, were management feels compelled to add bodies to a late project thinking it to be the way to speed things up. This of course rarely works as intended and Project X was no different. The party brought in to assess the situation felt that the only way to fix the issue would be to start anew on version 2 with version 1 limping along in a state of moribund undead stasis. ( maintained by us but not advanced by us ). While version 2 was built correctly by others.  All the while the threat of litigation, extremely nasty and contentious meetings continued unabated. Good people who found themselves in situations were there was no winning up and left for their own sanity. I felt envious of them. They had achieved escape velocity and left the madness behind them. I was not so lucky. Pressures within and without kept me at it, why I cannot really say. Perhaps it was cowardice, I would not have been able to find work that paid what I needed, my wife and I would have lost some of the things we had. Perhaps it was stubbornness, most would agree that I have a thick skull about things I believe in. Loyalty perhaps played a part. I certainly would not have wanted to leave my co-workers and my boss in the lurch.&lt;br /&gt;&lt;br /&gt;As they say it's always darkest before the dawn, Project X was no different. Slowly things changed a little. A small amount of the disfunction was removed. One of the things that came out of maelstrom of the projects darkest hour was a better process for documenting what needed to be done. Even though a well written business process specification though proved to be ineffectual at times. ( I remember coding up exactly what was written only to have it flatly rejected by the client as improper and incorrect ). Slowly this documentation proved its worth and the client became softer, perhaps they came to realize that the system was becoming what they wanted all along. The project is by no means complete even 1 year later but Project X was still running along. Multiple new releases adding the kind of functionality envisioned at the outset. Truth be told I have since focused my attentions on a similar effort for another client. Over the past 3 months or so even though I still work on Project X from time to time.&lt;br /&gt;&lt;br /&gt;The scars of that effort still fresh in my mind have lead to my altering the new projects to some extent, both in the way they are architected, and specified. My own code has changed to reflect some of the ideals that were written up in the assessment report on Project X. Even the stubborn occasionally learn a thing or two. The new project I am on is largely a solo effort from a coding standpoint, I still find myself putting in 80 hour weeks but somehow this is easier. Perhaps it's the client being a little easier to work with. Perhaps it's the lessons learned on that year long death march that left me questioning my resolve. I have been solo largely here in this new effort so that's definitely a contributor. &lt;br /&gt;&lt;br /&gt;As we are on the 1 year anniversary of the projects release into the wild. I am struck by one overall sentiment....&lt;br /&gt;&lt;br /&gt;That which does not kill us, makes us stronger. &lt;br /&gt;&lt;br /&gt;So when I raise my beer to toast the participants at our little party next week I will remember that sentiment, like high school however, I will never want to re-live it....   &lt;br /&gt;&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=S%20US%20Highway%20301,Tampa,United%20States%4027.943127%2C-82.354462&amp;z=10'&gt;S US Highway 301,Tampa,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7979116389371753916?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7979116389371753916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7979116389371753916' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7979116389371753916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7979116389371753916'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2010/08/that-which-does-not-kill-us.html' title='That which does not kill us....'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7098320076969744492</id><published>2010-07-30T14:44:00.000-04:00</published><updated>2010-07-31T08:07:47.654-04:00</updated><title type='text'>Snake oil.....</title><content type='html'>We have been involved in some very large development projects over the past year. These projects have been large enough to warrant the inclusion of a number of parties in oversight that have been, shall we say, "not contributory to the actual development of the product". Now any time you find yourself in projects such as these, there will be parties involved that are there for purposes not contributing to the systems being developed. Sometimes these people are there to ensure regulatory compliance. Sometimes they are there for documentation purposes. Finally you might find folks who are there to push agendas that are counter to what you might perceive are necessary to ensure targets get met. This final group is the reason for this jaunt into the blogosphere.&lt;br /&gt;&lt;br /&gt;My most recent encounter with the latter was from a company that I will call "Bunko Corp". The project was undergoing some very strenuous times under what could only be described as impossible time frames for delivery. Truth be told we were definitely not going to make these time frames, and the client felt it was necessary to call in the "big guns". Bunko showed up and after a costly audit, and time wasted, came up with a report exposing what they believed were our shortcomings. Now, I freely admit my mistakes when I make them, which is certainly frequent enough to keep me humble, but as these things usually are put together, the report had little basis in the realities of the situation. &lt;br /&gt;&lt;br /&gt;Central in the report was our apparent lack of adoption of what they refereed to as the standard and accepted practice of adopting a big iron framework onto which we would build our application. This entity framework was supposed to solve all our problems. It would automagically make the problems evaporate, as if somehow the framework would make the constant change in requirements phase into a solid form. As if it would solve the issue we had with the client making changes to the end user experience. As if the framework would make the data ambiguities from the old vendor disappear. The framework, they insisted, prevents and soothes all that ails you. &lt;br /&gt;&lt;br /&gt;Now it should be told that we we not completely in the clear here. We were definitely guilty of having bitten off a mouthful. The time was very short, and were were definitely under the gun. We did not however adopt some fly by night architecture, that was unproven in the industry. We employed Microsofts SQL server enterprise, and Server 2008, and IIS 7. To meet the browser requirements we employed silverlight, and Web-services for the data endpoints.. Fairly standard stuff for this kind of project. The most eye raising choice in all this was the use of Silverlight for the user interface. This was chosen because of some fairly specific requirements for usability that were just not doable in a traditional asp.net web site. Given the tight time frames which even at the outset were apparent and our experience in traditional client server interfaces based on c# coding, Silverlight was seemingly a no brainer. Bunko Corp felt otherwise and said so in their report. All along, pro porting that the adoption of an additional software layer in all this, their precious entity framework, would have avoided the troubles being encountered.&lt;br /&gt;&lt;br /&gt;Most of our mistakes in all this centered around issues that existed in meat space, and no magical fairy dusted bag of software tricks were going to solve those problems. Those issues were, and only are, solved through painful learning on the job. One example had to do with the switch over to SSL encrypted forms authentication through the web server farm. The Bunko wonks would have you believe that the problems encountered there were the fault of not having adopted the entity framework classes for the communication layer. In reality, a single line in each of the web servers configuration setup, forcing a specific key for the encryption used, solved that issue. (one example of a meat space mistake)&lt;br /&gt;&lt;br /&gt;Another example cited in their arguments for the adoption of entity frameworks had as exhibit A: the fact that we had coded a number of similar endpoints in the web services that operated on different data sets depending on need. Bunko's argument was that we had way to many endpoints, and that the sheer numbers of said points were impacting system performance. Ignoring the facts that web service endpoints unlike true method calls in .net did not allow for operator overloading, forcing similar operations on different arguments to be made on a different endpoint, unless one adopts a sort of super sparse data structure and employs packers and unpackers at each end of the call. If we adopted said structure the impact on coding time would have been enormous and I fail to see how adoption of the entity framework would have had a positive impact on that issue. &lt;br /&gt;&lt;br /&gt;Still, Bunko insisted that the project would never see any measure of success unless these frameworks were employed, despite the facts that the project was already operational. They insisted that we should undergo a redevelopment effort with their people working in parallel on version 2 of the project, with version 2 employing the framework and version 1 left to wither and die on the vine. That the framework version would have none of the problems of version 1.&lt;br /&gt;&lt;br /&gt;Now here we are, a year later, that project has been operational now for almost the year. There have been issues but it is definitely going, which there are certainly aspects of the underlying system being replaced with newer and better pieces, the adoption of the entity framework as pushed by Bunko Corp never happened. I am onto a new impossible project with the experience of the last year of 80+ hour weeks fresh in my mind and indeed the newer project has started out on a better foundation, sans any adoption of the entity framework. In our new project however, we are doing a number of things new, in an effort to address the problems faced in the last year albeit still with 80+ hour weeks.&lt;br /&gt;&lt;br /&gt;Facts are that through all this we have framework like employment in the techniques used. We have a consistent use of format and function on the data being handed off to and taken from the system. We have tools we wrote years ago that abstract the data layer from the actual store to the classes use to interface with that store. The tools that write code for use employ standard practices such as parameterized  queries and the like. New in the latest development efforts are standard ways of dealing with errors on the web service side, and a consistent mechanism for dealing with errors. We have consistent logging mechanisms and other things that a canned framework might provide.&lt;br /&gt;&lt;br /&gt;Recently I was asked to look at a large PowerPoint from another Corp let's call them Krapco Corp. In this case the slide collection was selling the notion that adoption of their own set of libraries in their "framework" would solve all your problems.  Krapco's latest concoction, built on top of the same entity framework pushed by Bunko Corp, represented the latest in industry standard ways of solving industry standard problems. Their power point presentation, rife with all manner of layered architecture diagrams and other pretty pictures of where in the flow their particular bit of library would provide just the grease to silence your squeaky wheel. In the end they are even so nice as to tell you how to insert their piece of proprietary library into your development environment, their example citing how to insert it into Visual Studio 2005?.... Yup 2005... A sign certainly of how old their particular set of answers actually are. &lt;br /&gt;&lt;br /&gt;When asked about our interest in said framework adoption I would retort as I spit on their pressed white suits, "Does it remove stains?"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Thurber%20Blvd,Smithfield,United%20States%4041.912580%2C-71.523653&amp;z=10'&gt;Thurber Blvd,Smithfield,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7098320076969744492?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7098320076969744492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7098320076969744492' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7098320076969744492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7098320076969744492'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2010/07/snake-oil.html' title='Snake oil.....'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-6085849782858720565</id><published>2010-07-27T12:36:00.001-04:00</published><updated>2010-07-27T12:36:39.331-04:00</updated><title type='text'>Tool chains</title><content type='html'>To any person who works to create anything, their tools are the most important items available to them, be they a woodsman, a mason, a photographer, or even a software developer. The latter profession, often defending their own tool set with what can only be described as a religious fervor the likes of which might be construed by the casual observer as bordering on maniacal ravings. Often enough when one digs about such heated discussions one cannot help but feel that one side or the other might harbor some deep seated apprehension. &lt;br /&gt;&lt;br /&gt;"perhaps my adversary in this fight is correct?..... Na can't be the superiority of my own {insert environ x here} is irrefutable... Besides he's a ding dong anyway"&lt;br /&gt;&lt;br /&gt;Well I have often enough felt that way with my own development choices. Of late however I have found myself yearning to really know if the other guy was in fact a ding dong. I have found myself wanting to really know what the other sides tools are really like. Having no real spare time for anything, the only way that would happen is if the company I work for branched out a bit from their standard platforms and embraced something different.&lt;br /&gt;&lt;br /&gt;As is always the case in these matters, changing course is not easy. One needs to make a rock solid, water tight business argument for the case and maybe said argument would not fall on deaf ears. Such was the case a few months ago when I approached the powers that be and made the case for doing some real development for the apple platform, specifically the iPad/iPhone. The case of course being that finally a compelling form factor was available for a touch device we could bring some of our applications onto. We do a lot of crud style applications with scads of human input forms. Often enough the clients we do this stuff for send the users into the field with bulky laptops equipped with air cards and believe that the problem is solved. In reality though a laptop creates a number of barriers between the person taking the information and the source of the information. Not to mention that sending a person out into the world with a laptop in many cases is painting a bullseye on their backs. Many of our clients have to venture into places in our society where that is a real concern. So the iPad makes for a compelling firm factor to reduce these problems. The company felt like I do and we sprung fir a development platform and some other equipment to employ.&lt;br /&gt;&lt;br /&gt;Now I will freely admit that I have had exposure to other development environments in the past, so I was not surprised to find life on the apple side of the river different from our primary development environment of Microsofts visual studio environments. I've used eclipse on various platforms (Windows and Linux) as well as a few eclipse variants, have written code in java, c, basic, c#, visual basic, fortran, COBOL, modula 2, forth, assembler... The list goes on. Most of these efforts had what could only be described as minimal environmental support, you have some form of command line compiler, and an editor of some form where you create your code. You hand the code file to the compiler and cross your fingers. If all goes well you get an executable that you can run on your target platform. I am not really calling these tools into question because don't  consider them real environments. &lt;br /&gt;&lt;br /&gt;I have worked with visual studio now for years, vs 2003 through the current vs 2010. That is an environment. Now on the apple side of things we have Xcode. It's the tool of choice for the apple crowd targeting iPhones and IPads. Apple has had some time with this product and it's now up to version 3 I believe. It consists of the editor, integrated with the file manager style of application like solution explore in visual studio, the debugger supporting all manner of the things a decent debugger should support as well as a user interface builder to facilitate creation of the human interfaces necessary in a typical business application. So I did not find Xcode to be all that unfamiliar. You will note that I am not even talking about the language, or the os on the target platforms, or even  the style of human interfaces supported on these devices. These are different devices so there will be language and style differences I fully expect that. What I did not expect was the relative lack of any form of automated help for such things as simple event connection in code to ui elements on the human interfaces being built. &lt;br /&gt;&lt;br /&gt;Case in point....&lt;br /&gt;To create a simple form with a button on it. You might thing that placing a button on your interface, naming it something intelligent would expose it to your code. Well I found that was not the case. To expose it to your code you have to create something called an outlet. This in effect creates the code entity that represents your button. Then you have to physically connect that button to the outlet by dragging a line from the list of outlets to the designer representation of your human interface. Finally you can then switch over to your code window and you have the code representation of your button. Wash, rinse, and repeat, for every element on your human interface. I have not even detailed the complexity of the actually building the outlets themselves or any of those details. I am just dismayed that the tool provided is so weak in this simple area. I guess I have been spoiled by what in comparison a very advanced tool in visual studio. Working in Xcode feels like employing stone knives and bear skins.&lt;br /&gt;&lt;br /&gt;So yes the apple fanboys who scoff at visual studio as a tool don't know what a real development environment can be like and yes they are ding dongs..... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-6085849782858720565?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/6085849782858720565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=6085849782858720565' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/6085849782858720565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/6085849782858720565'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2010/07/tool-chains.html' title='Tool chains'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-3948361491394726335</id><published>2010-07-26T01:09:00.002-04:00</published><updated>2010-07-26T13:44:21.272-04:00</updated><title type='text'>It's been a long time</title><content type='html'>It's been a long time since I posted last. The few stragglers into this dusty corner of the Internet have no doubt felt it yet another dark and dingy alleyway along with countless others that litter the web like trash on a city street. Fact is I have been extremely busy over the past year. Our company entered into a nearly impossible task that has been all consuming for some time now. A year ago we started with this task, that, after 52 plus 80-100 hour weeks finally is nearing a stage were the now 60 hour weeks seem a breath of fresh air. Truth be told I am onto another impossible task for another client, who at least appear happy that we are there delivering something. The prior death march has been taken over by others in our company to carry on with the good fight as it were. &lt;br /&gt;&lt;br /&gt;My new exercise in the job of creating time where there is none, has me doing much of what preoccupied me in the past year. All this however with the lens afforded by the year of starts, and stops, and outright mistakes that we are now forced to live with because it's to late now to change. With that however I can't help but feel optimistic that this new set of hurried developments are better as a whole than the set we pulled out of our backsides on all those sleep deprived weekends spent in the hotels away from home over the past year. This is different, I keep telling myself, the system is better. In many ways it is. The blatant mistakes made on the last mortality parade have been addressed in this new architecture. Yet some mistakes continue, completely unrealistic time frames that seem to become even more so as their original unfathomable deadlines looms on the horizon. "Objects in mirror are closer than they appear", yet I am looking forward not in the mirror. I actually am writing this from a plane out of Chicago, not on a business trip but having taken a whole Friday off an half of the preceding Thursday, that's something that never happened in the other year long forced march. I am struck as I sit here looking at the fact that I have effectively 6 weeks of coding that need to hit testing in a little over a week. I am struck with the guilt of knowing that I just blew 3 days (Saturday and Sunday are prime coding days just like the Monday through Fridays of a normal work week). The fact that next week brings an all to familiar hotel room on the road, with it's marginal Internet connection, crappy tv, blacked out local sports and all, I have come to realize that nothing has changed, and nothing ever will.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-3948361491394726335?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/3948361491394726335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=3948361491394726335' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3948361491394726335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3948361491394726335'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2010/07/it-been-long-time.html' title='It&amp;#39;s been a long time'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7660568371658327543</id><published>2009-08-01T09:19:00.003-04:00</published><updated>2009-08-01T10:09:29.543-04:00</updated><title type='text'>Not Good Enough</title><content type='html'>It's been a a long time singe I even had the time to post anything here. For the few folks who might have frequented this little dusty corner of the interweb my apologies, Fact is that nobody comes here but me and that to has been a very infrequent journey. Truth be told I have fallen into a rut that thas seen my professional life consume all else that is around me, like the nothingness in the never ending story.&lt;br /&gt;&lt;br /&gt;I used to think that I was defined by what I did for a living. I used to love what I did for a living and thought I had the perfect arrangement. So many people I know view their working lives as a necessary evil, a means towards the ends of having a home and relative comfort in those hours outside of work. I used to think that these folks had it bad because I loved my work and truly looked forward to each day as a challenge that I relished the idea of confronting and conquering.&lt;br /&gt;&lt;br /&gt;A funny thing has happened along the way over the past few years. I have found that the days have grown longer as the hours spent on the job have stretched into lengths that have surpassed the hours off the job. I find myself sitting at home in front of my computer working on task related items for work. Sitting at our campsite in front of my computer working on task related items for work, sitting in hotels working on task related items for work, On the train, on the boat, on vacation, on weekends, on and on and on. I used to think that's OK because I see the successes and believe it was worth the effort, because after all I love what is that I do.&lt;br /&gt;&lt;br /&gt;Recently though, I have found that no matter what it is that I am doing, there is not enough time to do it properly. The pressures of the tasks are growing to the point where there is not enough hours in the day to get them done. Each day extends into the next without sufficient intervening time to decompress. Like some sadistic game of whack a mole, a problem appears here and attention is drawn away from a focus, only to have another issue draw attention away from that problem to another just as resolution to the former was in view.&lt;br /&gt;&lt;br /&gt;Attempts to relieve the pressure by being realistic about what is doable with others seemingly have fallen on deaf ears. With targets being stated getting compressed even more by outside forces beyond the control of anyone involved, not me , not my superiors or co-workers its just is what it is. As I sit here writing this I find myself seeking that place in the past where the path was lost in the jungle. The first step taken that started the path to where I am now. A place that has robbed me of the things that used to bring some form of joy into my life. The fact that I was good at what I did, loved what it is that I did, and felt that what it is that I did had an positive impact on others.  Now this place I am in seems to be one of no matter what I do its not good enough. The people who are the recipients of what I am doing are finding it not good enough. The family around me finding what I am to do with and for them is not good enough. The rewards of the job are not good enough.&lt;br /&gt;&lt;br /&gt;I sit here watching processing running on my computer, working to coerce some data into a shape that will be of more use to me in another job related task. I am struck by the metaphor that this presents me with. For surely that status of the present, and the conditions that create that present cannot continue unchanged. Yet the results emerging need to still resemble what was fed into the black box that is my life. The frustrating thing is that like all black boxes the Rube Goldberg clockworks inside are hidden from direct view. Its difficult to see a single flaw or concise set of flaws that are the cause of the problem. I am left with reasoning the problems cause via indirect means. That have till now proven to be 'Not good enough'......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7660568371658327543?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7660568371658327543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7660568371658327543' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7660568371658327543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7660568371658327543'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2009/08/not-good-enough.html' title='Not Good Enough'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-2057079543906730092</id><published>2007-09-19T19:45:00.000-04:00</published><updated>2007-09-19T19:46:37.374-04:00</updated><title type='text'>The Road</title><content type='html'>It has been a number of years since I attended any sort of multi-day training event. As I am presently returning home from attending the VSLive 2007 in New York, sitting on the train home, &lt;span style=""&gt; &lt;/span&gt;I find myself contemplating this point. I also find my thoughts filled with a plethora of ideas and aspirations that such a show will flood ones mind with. My last visit to such an event was a VBITS show last century. At that time I was fairly new to formalized development efforts in support of a large project. The company I was newly hired at sent me to that show for training. Now, having been in the role and similar roles for over 10 years now, I found myself sitting in another such show gazing upon all manner of new and wonderful technologies and techniques. Sitting in these sessions, one after another, with each passing minute bringing on something new and here to for unseen. The unfortunate thing in all this is so much of what zips by in the conversation at these sorts of events, disappears from the mind faster that it appeared in the first place. Seemingly now, no matter how often one pages through the piles of the slide presentations, that excitement first experienced, as the gigantonormous powerpoint danced on the wall, is lost in the dampening field of ones reality.  &lt;p class="MsoNormal"&gt;I suppose though that if one could simply sit in a dark room with hundreds of kindred souls all drinking the same bad coffee and eating the same semi-stale doughnuts for a few hours, and could completely absorb the content of the presentation, then I would likely not have a job in the first place. Software development is hard work, or should I say Proper Software Development is hard work. Sitting through such a set of sessions I realize that while I am not nearly the hack I was 10 years ago, I have a long way to go.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I am also struck by the diversity of the folks presenting. Some years ago I attended a much smaller venue in Boston. For me it was basically a one day affair where I was being introduced to a wacko new thing called C# (I’ll pause here until the laughter dies down a bit). One thing I remember from that event was the perceived arrogance of the presenter. Equating what I was currently developing in for my employer with the Taliban. I was put off by this at the time and I don’t believe that I got the message this person was sending. As they say though “Youth is wasted on the young”. Now it was many years later and I found myself in a session at a similar event for new stuff coming along. I found myself in a series of sessions some of which were presented by this same person. It’s amazing how I now had a very different view of this presenter. It was clear to me now that the presenters understanding of the subject matter was on a wholly different plain of existence than my own and that the arrogance displayed by the presenter was in fact designed to elicit the desired response from the group of “Hey maybe we are doing everything wrong and maybe we should listen at least a bit to this guy”. To me it felt like I was the only person in the room listening to this guy and he was looking right at me and saying “Ok there sonny, time to slide away from the kiddy table and sit with the grownups”&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There were others at this show also who had the same effect on my thoughts but arrived at that effect in very different ways. &lt;span style=""&gt; &lt;/span&gt;One fellow that elicited a similar effect from my thought process did so with the gentle demeanor of my grandfather. He also showed off thoughts and practices and techniques that radiated an aura of correctness that shouted “Hey dummy if you are not doing things this way then there is no hope for you”, but in a good way. The effect from his sessions on me will have me buying a copy of all his books (I actually believe I have some of this persons older texts but I will now definitely be surfing on over to Amazon of get the newer ones).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There were others of course that I listened to over the 3+ days, each showing off some form of new stuff, each having a definite style of presentation that was unique, Some were nowhere near as polished as others, Uncooperative Vista machines, Cranky bits of presentation hardware, Ill conceived examples of technology application, Even sidetracking from a barrage of questions that created a time crunch on materials presented. All manifested themselves in these sessions, but through it all one clear message, to me anyways, was pervasive. “That I have been basically self taught through the years, and am reasonably competent at my craft, it’s clear that I have a long way to go”. I suspect that if you were to ask any of the presenters at this show the question they would echo a similar sentiment. The scary part though is that for me these folks are way ahead of me on this road. That I am metaphorically sucking on the dust of their wakes, is tempered by the now clear understanding that “Perfection is a journey not a destination.”&lt;span style=""&gt;  &lt;/span&gt;I take solace in the knowledge that they also will never reach the end of that trip and the difference between them and myself I have come to realize is a few more miles on the road and a self awareness to have realized all this many miles ago. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-2057079543906730092?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/2057079543906730092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=2057079543906730092' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2057079543906730092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2057079543906730092'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/09/road.html' title='The Road'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-6964779604132581181</id><published>2007-07-10T08:15:00.000-04:00</published><updated>2007-07-10T11:55:52.090-04:00</updated><title type='text'>They call me Frankenstein...</title><content type='html'>An interesting thing has happened to me as of late.&lt;br /&gt;&lt;br /&gt;My wife of 5 years now has joined our small company in a capacity that is sorely needed, Testing and Quality Assurance. As you can all imagine working with ones wife poses a number of challenges that many would rather not face. Our organization is small but not so small that our working relationship is direct with one subordinate to the other, so one of the major pitfalls are avoidable in my case. The other challenges are less obvious and not as easily avoided. As is the case with most things people related, it becomes a matter of perception and trust.&lt;br /&gt;&lt;br /&gt;My wife is very good at what she does. She has an eye for detail and can replicate a long list of steps 1000 times exactly the same way every time. I recognized this and felt that those qualities were perfect for a tester role. She was not all that challenged professionally where she was and so I sought to get her involved in our endeavors here at Tidgewell Associates. While I might have got the ball rolling on the switch, the final decision was up to her. From a technical standpoint she is definitely on the novice side of things but is savvy enough to work her way around a computer and typical software, so she has an understanding of the way things should look, feel and work. These all aid her in her new role here. Certainly there is a number of things that she has to learn about the applications we have written. Most of these being business process related. As I had expected she has taken to this with zeal and is showing great progress.&lt;br /&gt;&lt;br /&gt;One thing though that I found in all this is the transformation in my wife that I was not expecting. As her new professional role is providing a challenge and also providing some rewards I see her confidence growing. I see her competitive drive growing as well. Just a few days ago she discovered a problem with an application component I had recently done some work on. The issue is particularly bad because of the way it occurs. My surprise was not because I have never generated code with this type  of problem, rather my surprise came in the way my wife handled the problems acknowledgment.  "Yes !" she exclaimed as she pumped her fist in the air.  Like she had just won a marathon and in doing her victory dance on the floor that was was my wounded pride I realized one thing....&lt;br /&gt;&lt;br /&gt;I had created a monster......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-6964779604132581181?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/6964779604132581181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=6964779604132581181' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/6964779604132581181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/6964779604132581181'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/07/they-call-me-frankenstein.html' title='They call me Frankenstein...'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7431477366612974664</id><published>2007-06-15T12:45:00.000-04:00</published><updated>2007-06-15T13:22:49.464-04:00</updated><title type='text'>Testing 1,2,3....</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_PCpVDgCr5d4/RnLKvVxVLMI/AAAAAAAAAA0/Czp71KHFpOI/s1600-h/Screenshot2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_PCpVDgCr5d4/RnLKvVxVLMI/AAAAAAAAAA0/Czp71KHFpOI/s320/Screenshot2.png" alt="" id="BLOGGER_PHOTO_ID_5076342644646685890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As developers go I like to think that I am better than the average developer at testing out the nooks and crannies of my own code. (That may not be saying much but I'll take it wherever I can get it). For some time now I have been diligent in using various testing paradigms on my own stuff with various results always beating a blank.&lt;br /&gt;&lt;br /&gt;Nunit Testing&lt;br /&gt;Virtual Machine Testing&lt;br /&gt;Grunt UI manipulation with a printed list of steps&lt;br /&gt;UI Automation with various tools&lt;br /&gt;and so on&lt;br /&gt;&lt;br /&gt;Now have stumbled onto another technique that I will be adding to my arsenal and am excited at the possibilities that this new technique affords. The new technique being "Running applications in/on foreign platforms". I am not talking about using VMware or Virtual PC to run a vista developed app on XP. I am of course speaking of running applications targeting .Net platforms on MONO. The Mono in question running on a different OS entirely like Linux.&lt;br /&gt;&lt;br /&gt;Running a native .Net application on linux under mono presents all manner of challenges that really can test your mettle as a developer. Sure some of the challenges are as of yet insurmountable as mono is not as feature complete as it needs to be, but Mono is really coming along and for a great deal of our applications and custom controls for our client/server applications, our things run well on Mono. Its usually just a matter of getting the database connectivity happening and launch the thing and watch as it come up and runs.  Where this becomes useful from a test standpoint is that subtle issues that might not cause any problems natively will stop you dead in Mono.&lt;br /&gt;&lt;br /&gt;Case in point was just discovered today. I was testing out one of our applications called the Profiler on my Fedora 7 equipped Inspiron 9100 and found the app just bombed doing a series of data manipulations from our grid to parse that information and sent it along to our line charting control. All the stuff that you might expect to have a problem worked fine, it was blowing up on a simple Val() function. (Yeah its an old app written in VB.Net we transitioned to C# some time ago but we still have these older things lying here and there). The point is I was doing something stupid and the .Net framework handled my stupidity well enough but Mono simply said "Hey Stupid!" and went belly up. Just because stupidity can be handled doesn't mean it should be handled and I classify this as a bug thats been there forever. Mono showed it to me where all my other testing that I did on this years ago did not.&lt;br /&gt;&lt;br /&gt;I take two things from all this&lt;br /&gt;&lt;br /&gt;Revisit old applications from time to time they might prove enlightening&lt;br /&gt;&lt;br /&gt;Try the thing on Mono you might learn something&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7431477366612974664?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7431477366612974664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7431477366612974664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7431477366612974664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7431477366612974664'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/06/testing-123.html' title='Testing 1,2,3....'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_PCpVDgCr5d4/RnLKvVxVLMI/AAAAAAAAAA0/Czp71KHFpOI/s72-c/Screenshot2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-7058705183669106730</id><published>2007-06-04T10:49:00.000-04:00</published><updated>2007-06-04T11:08:28.188-04:00</updated><title type='text'>Enlisting a little thermal help...</title><content type='html'>A short and sweet post today..&lt;br /&gt;&lt;br /&gt;Came into work this morning to one of our developers having a bit of trouble with her Dell Inspiron 9300 laptop. She had been having problems before getting the thing to complete its BIOS post  and start booting windows XP. In this case it would either halt dead before the little message to press F2 for setup or F12 for boot menu appears in the upper right corner of the screen. It may also display that message but halt shortly afterwards. Her fix for this in the past was to turn it off and try again. This had always eventually worked until this morning where for her life it would simply not boot.&lt;br /&gt;&lt;br /&gt;Of course she needed to get the thing to boot so she could check some things into source control, and get some documents off that she had been working on. All tasks that are just a hell of a lot easier if you can get the windows environment to boot up just one more time....&lt;br /&gt;&lt;br /&gt;In helping her I tried all the standard sorts of things like taking the battery out. Trying it on battery power alone. Disconnecting the docking ports, reconnecting the docking ports, pentagram chalk and white candles. All to no avail. Then I remembered my younger days as a board level repair technician using thermal spray to blast freeze chips one at a time in the face of an overheating problem with the simple computers of the time. (One step above beads on some strings). So I unplugged the laptop from everything and after some quick re-arranging of what were dubious contents in the company chill chest/ice machine, I placed the laptop in the deep freeze for about 10 mins. (Just enough time to get some Coffee)&lt;br /&gt;&lt;br /&gt;On taking it out I quickly hooked it up enough to turn it on and it booted just fine.&lt;br /&gt;&lt;br /&gt;She thinks I am a genius.. In reality I am just OLD but still have a memory...&lt;br /&gt;&lt;br /&gt;Now she can get her stuff of the slowly expiring machine and we can call Dell and get it fixed...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-7058705183669106730?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/7058705183669106730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=7058705183669106730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7058705183669106730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/7058705183669106730'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/06/enlisting-little-thermal-help.html' title='Enlisting a little thermal help...'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-4589130481755130497</id><published>2007-04-17T20:51:00.000-04:00</published><updated>2007-04-18T08:49:48.057-04:00</updated><title type='text'>The Developers Toolbox...</title><content type='html'>&lt;p class="MsoNormal"&gt;The developer’s toolbox, like any professional’s tool collection is best when it’s bristling with implements that augment a workers talent, and when applied by a knowledgeable person seemingly allow miracles. As a developer I have a great number of such tools in my toolbox. Some of which I have developed myself. Others I have purchased from the market. One of the most valuable such tool is a product that I purchased from a company called Red Gate (http://www.red-gate.com). Its name is the ANTS Profiler.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The Ants Profiler (here to fore called ANTS), is a .NET application performance/resource consumption profiler that allows the .Net developer to meter the performance and memory consumption characteristics of their .Net applications. It will allow the profiling of .Net 1.1 and 2.0 applications and in its current version (3.0.0.342) integrates directly into the VS2003 and VS2005 environments from the drop down menus within the IDE itself( this is new in version 3+ and makes the software easier to use). I have used the application as it exists now on every version of windows since 2000 and I am currently running it on my Vista Ultimate development machine. Having used the product for a number of years now I have found it to be so useful that I can not fathom living without it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Using the application to conduct a performance profile of a running .Net application is about as easy as it gets, basically breaking down in 4 steps…&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;Compile the application in Debug mode so it generates a .PDB file as well as the executable.&lt;/li&gt;&lt;li&gt;Open the Ants Profiler interface and point it at the executable file you want to profile.&lt;/li&gt;&lt;li&gt;Select a few options (like profile just what you have source for or all .Net methods, and what command line parameters you might want to pass along to the running application).&lt;/li&gt;&lt;li&gt;Run the app through the paces you want to profile.&lt;/li&gt;&lt;/ol&gt;        &lt;p class="MsoNormal"&gt;When you have completed and exited the application, the Ants profiler will display three different groupings of performance characteristics.&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Slowest Lines of Code&lt;/li&gt;&lt;li&gt;Slowest Methods&lt;/li&gt;&lt;li&gt;Slowest Methods with Children&lt;br /&gt;(note) these lists are top 10 and can be expanded to show each category in their entirety&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;      &lt;p class="MsoNormal"&gt;A window at the bottom of the display will show the actual code for the application for the items selected from the top three sections. Click on a slow line of code and ANTS will pop to that line in the bottom window. It will show you the source file where the line is located, what line number it is, how many times the line executed, and finally how long the system spent executing that line of code. Using the navigation tools that ANTS provides, allows the developer to easily pinpoint trouble areas in their application, areas in need of modification to bring performance up to desired levels. ANTS, excels at showing the developer where in the code the bottlenecks are located. It’s up to the developer to determine how to fix the problem however, ANTS provides you with all the necessary information.&lt;/p&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;ANTS also allows you to save the results of any profiler run off to a file. You can then tweak your code and re-profile the application comparing the results on the second profiler run with the results of the first. This back and forth between the IDE to craft a tweak and ANTS to gauge the tweaks effectiveness is fluid and natural feeling and greatly enhances the tools usability. Few things in a coders experience are as satisfying as seeing a slow method fall off the top 10 list in the ANTS results after a tuning session with ANTS. Something just seems right with the limited world of a coder and ANTS delivers the goods.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;An actual example where I used the profiler results to fix a performance issue showed me that a particular set of code lines were executing in a custom file importer we had written for a set of clients. In this case these lines needed to be run through once for each line of text file being parsed. &lt;span style=""&gt; &lt;/span&gt;In this case there were 12 elements on each of these lines that needed to be parsed as dates. ANTS showed that while the methods attached to the DateTime class were real handy for ensuring the integrity of data being passed through them, their performance was underwhelming. Multiply this sluggishness by the millions of times they were being invoked, and you get the idea. Using ANTS I was able to see this clearly and found that I could write my own validation using simple string manipulation to create the same functionality I needed while boosting performance considerably. (In this case an 80% reduction in execution time of these snippets of code). The importer was then able to process its file in 30 minutes rather than 4-5 hours. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Another particular instance showed that our own Grid control that we had written many moons ago suffered from a particularly bad design, (My fault of course as I developed the thing for our company). ANTS allowed me to see that I was being incredibly wasteful in the instancing of objects to hold the individual cells of the grids data, each cells formatting characteristics, Fonts, Colors, and other state information. ANTS showed the error of my ways to me and allowed me to rethink the way the grid itself was architected. Now our Grid control is used in everything we write and it runs like greased lightening even with millions of cells of data housed within. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Performance gains like those above have been enjoyed by my development team and I, on more than a couple of occasions. So enamored am I with the tools ability to show problems in execution pathways that I use ANTS to test the performance of every application I write and reuse it on any application I perform any significant rework or enhancement to. For your performance gauging needs on any of your .Net application under development ANTS has proven to us to be an invaluable tool for the job. Reasonably priced, easy to use, I would not hesitate to recommend it to anybody with the need for .NET speed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-4589130481755130497?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/4589130481755130497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=4589130481755130497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/4589130481755130497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/4589130481755130497'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/04/developers-toolbox.html' title='The Developers Toolbox...'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-3820091030914802126</id><published>2007-04-11T08:43:00.000-04:00</published><updated>2007-04-11T20:23:47.752-04:00</updated><title type='text'>Finding good people</title><content type='html'>We are in a growth spurt here at my place of employment. This is usually a good thing for a company, showing that the future is bright and that the mistakes of the past have not proven fatal to that future. This would be good except for the fact that there is a dearth of qualified folks seeking employment. Small companies like ours have a very difficult time finding people to fill roles within the company. Small companies have a difficult time competing for the limited number of qualified people with the larger firms in the market. Small firms cannot compete on salary's and other benefits with the bigger companies. So when a small firm places an advertisement for a position, they often get a few applicants none of which are really suited for the position at least on the paper. The end result is that small firms have to contend for the scraps at the employment dinner table. Fighting with the other smaller firms for remaining candidates.&lt;br /&gt;&lt;br /&gt;Another item that affects all firms but especially hurts smaller firms is the constant contact that employees have from outside hiring forces. I would never seek to restrict a persons basic right to better themselves or their situation in life, but given that smaller firms have a difficult time replacing members of their workforce, it becomes especially painful when you have a member leave for greener pastures. Lured away by a head hunter. While I personally have experienced a perverse sort of buyers remorse after leaving a prior place of employment. I can say that sometimes the grass may be greener on the other side of that fence.&lt;br /&gt;&lt;br /&gt;Traditionally working for a smaller company had benefits that transcended simple salary and other tangible benefits. That feeling of belonging, or being important in an endeavor that is important, or perhaps the feeling of freedom with a flexible work schedule. The problem is that as pressures on a smaller firm mount and that firm has fewer and fewer qualified candidates for positions, these previous advantages evaporate, as the firm struggles to maintain itself.  Things like flexible work schedule are often enough the first things to go from a small firm. Small firms also always seem to have that sword hanging over their heads, twisting slowly in the winds of change that blow constantly in todays market place. With moral often enough taking the hit. The Firm finds itself in a position where it is losing its one ace that might attract a qualified person to a position and keep them there over the long haul.&lt;br /&gt;&lt;br /&gt;In the end a small firm is faced with many challenges, perhaps the most important being the search for a way to grow without growing up and growing old. The challenge to a small firm is finding a way maintain its small set of attraction items in the face of these challenges, and continue to grow in spite of them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-3820091030914802126?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/3820091030914802126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=3820091030914802126' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3820091030914802126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3820091030914802126'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/04/finding-good-people.html' title='Finding good people'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-2327924300760777085</id><published>2007-02-15T16:13:00.000-05:00</published><updated>2007-02-15T16:25:28.559-05:00</updated><title type='text'>Developers, Developers, Developers</title><content type='html'>&lt;p class="MsoNormal"&gt;To quote a fairly recent tirade executed by one Steve Ballmer of the Microsoft Corporation ‘DEVELOPERS, DEVELOPERS, DEVELOPERS!”. It’s all about the developers. Here at TAI we have a number of folks who are classified as developers amongst other designations. This is because their primary function in their jobs is to craft working bits of program out of literally thin air. This makes them all a member of a subclass of developers known as software developers, as opposed to other kinds of developers like Proposal, Hardware, Land, etc. etc.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;On the outside looking in software developers, like all developers appear to have a very similar path to tread in their daily chores. While the tools used to do so may differ from vocation to vocation the process appears to be the same. You look at a tasks defined outcome. You look at a tool set to act on raw materials, each one in application to the set inches the end result, closer and closer to the desired outcome. Like a sculptor chiseling off hunks of rock to reveal the form desired within. Or a landscaper carving out part of the hillside to reveal that terraced build up that will hold the parking lot, finally electronic designer adding in that final collection of silicon chips to create the water heaters sensor logic. &lt;span style=""&gt; &lt;/span&gt;The tools employed were all very different but the processes were all the same. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Software development is different though the differences however, often defy explanation. I however believe those differences can quantified by examining the tools used in that profession vs. those used in other development professions. Software development tools I believe fall into two broad categories.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;Physical/Real/Tangible&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Development environments&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Programming Languages&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Database manipulation tools&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Report Generators&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Pre-build software components&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Code generators&lt;/li&gt;&lt;/ul&gt;            &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;Mental/Idea Based/Intangible&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Patterns&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Algorithm Applications&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Domain understanding&lt;/li&gt;&lt;li&gt;&lt;span style=""&gt;            &lt;/span&gt;Subject Matter Awareness&lt;/li&gt;&lt;/ul&gt;        &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;With physical/real/tangible class of tools it is easy to define the circumstances of the tools use and the how to use said tool in solving a particular problem. Indeed everybody who has taken any courses on software development will no doubt remember their introduction to the domain as being largely “This is how this tool is used to do this task” oriented. It breaks down into a problem/solution checklist style of software development that is well suited to other disciplines but ultimately fails in complex software development, for one simple reason.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Problems are rarely the same in all respects from one delivered solution to the next. The differences although small in magnitude often invalidate an application of one solution to another problem space. Even if a developer knows going in that there are data changes that invalidate some aspect of a previously delivered solution. Just knowing this does not necessarily mean that said developer can effectively morph solution A to problem B’s space. Having wonderful tools and the perfect programming language and a&lt;span style=""&gt;  &lt;/span&gt;wiz bang&lt;span style=""&gt;  &lt;/span&gt;development/reporting environment may help produce miracles but not unless they are in the hands of a person who has copious amounts of the second category of a developer’s tool set.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The mental/idea based/intangible aspects of software development are, I believe, most important to a developer being passable vs. stellar in what they do. While an individual trained in many of the colleges and universities available today may certainly have a firm grasp on the tangible domain of software development. A lack of grasp for the intangible however will make for a marginal developer at best. The reason primarily is that problems rarely fit into the cookie cutter realm that university exposes a person to. Its never cut and dry. Specification of the attributes of a problem domain are often obscured and often enough non existent. Experience often enough will fill in these voids in a developers tool set, if that developer is capable of learning from their mistakes and is able to recognize a mistake in the making. The issue here is can they recognize a mistake in the making. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Often enough in any large scale development effort there are a set of folks who are the stellar types. These folks examine problems and can digest them down to simple well defined steps that they then hand off to a different developer to actually implement. The person who actually implements the bit does not ever get a chance to observe their mistakes because they don’t get an opportunity to make any. I contend that if you take on a person who has spent 10 years in such an environment at such a level you might as well have taken a person fresh out of university because they are for all intents and purposes the same level of developer.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So how does one developer at a junior grade get to have the domain experience and subject matter awareness that making mistakes affords them, if they have a job where they are spoon fed the work predigested and ready for consumption?.&lt;span style=""&gt;  &lt;/span&gt;If they are not allowed to make mistakes and learn from them, and are shielded from the domain problem and subject matter then these individuals have to be willing to learn outside of their professional careers.&lt;span style=""&gt;  &lt;/span&gt;I have observed many said individuals over the years and some commonalities stick out like sore thumbs. They are all geeks. (In a good way). They all come with varied written materials that are seemingly off direct topic. They always have their nose in a book or trade rag when it’s not in their flat screens.&lt;span style=""&gt;  &lt;/span&gt;Their hobbies are often enough technically oriented as well. &lt;span style=""&gt; &lt;/span&gt;Some might equate this sort of behavior with being a pocket protector, taped eyeglasses, to short blank pants white socks, black shoes wearing, socially inept individual portrayed by the media. Stereotypes being ugly, in this and in all cases. Fact is a person who likes what it is that they do professionally often has their personal interests aligned with their professional occupations and I would argue that such a person will naturally become better professionally for it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Another characteristic that good software developers exhibit is that creative spark. When a sculptor looks at a block of wood, their creative mind allows them to see the end result almost as clear as if it were already created. You can be taught all the technique in the world, unless you have some ideas on what to do with those techniques in a non scripted way I don’t believe you will ever be creative enough to graduate from fair to truly great. No book out there that I have ever read instills creativity.&lt;span style=""&gt;  &lt;/span&gt;Now it can be fostered and nourished but it has to be there already to do so. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Startling revelations? Hell no. In fact my book shelf has many such observations penned by others previously in more or less the same frame. I have read these prior works in the past, and often enough re-read these items just as a refresher. One thing about all this that I have not read in the past is the examination of how a team dynamic contributes to a development effort vs. the loose cannon, lone wolf style of developer.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;To be sure some of TAI’s more useful internally developed items were largely developed out of thin air by a single individual. Some of our Code generation tools and our internal software components that we leverage day in and day out were developed by myself over a period of time. But I contend that though these development items have proven very successful, and were largely developed by a single individual. They benefited from the team dynamic and would not have been nearly as widely employed had that dynamic not been present during their inception. Fact is that no meaningful development occurs in a vacuum. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Case in point, when I started writing our own Grid control some years ago I had a couple of key features I needed (Like I needed to be able to sense user interaction at the cell level). As this was implemented I would have been content to use my new creation as is, but others here sought to have the item do more. Their feedback contributed to new versions that added new features sometimes resulting in multiple version a day. Nothing new really just a team dynamic at work in a development effort. That team however existed in a closely confined area. We were not separated by some distance with only our internet connections between us. We were all in the same room and could freely talk with each other when a problem arouse. There is a lot of development being done across widely separate geographies today, so its not an absolute must that everybody on a team be connected at the hip but it does make it a hell of a lot easier to hash out problems or explain concerns and issues. The orchestration of geographically separate development teams or single developers takes some amount of energy away from the inertia of the project. As in physics, there is no perpetual motion machine, there is no such a thing as a free lunch. As important as communications between developers is, I feel that communications between novice/new developers is even more important. Nothing really new here either just an observation on my part that if a person is experiencing something for the first time, they can benefit from others looking at the new thing with them. Not easy to do alone in a room separated from anyone else in that clique.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;More important however is mistake learning. I have been handed things that were done by someone else that did not work as intended. I will admit to doing that someone else a disservice by just fixing the issue myself rather than pushing it back as unacceptable with reasons as to why and suggestions of correction. Under the tight time frames of today in the 70+ hour of the week it’s just easier to fix it yourself. That however I have come to realize perpetuates the problem and in the end solves nothing. The original author does not know the issue they created and its implications. I can expect more of the same next time around. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So at the risk of stating the obvious (I am after all a thick headed, knuckle dragging, ape, just ask my wife sometimes)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When it comes to developer teams&lt;/p&gt;  &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Spoon      feeding tasks to novice developers really teaches them nothing.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Having      developers work in isolation reduces efficiencies and robs a development      of inertia.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;New      developers are better off being exposed to their own mistakes and being      tasked with correction of those mistakes themselves&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Software      development is part hard science part art and the art part plays a bigger      role than one would imagine. &lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Creativity      cannot be taught you either have it or you don’t.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Lots      of experience does not necessarily a great developer make.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Communication      amongst team members is I feel the single most important aspect of fair      vs. great teams&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Wonderful      tool and tool sets only allow you to get so far. (though in the right hands      they can prove miraculous)&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-2327924300760777085?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/2327924300760777085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=2327924300760777085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2327924300760777085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/2327924300760777085'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/02/developers-developers-developers.html' title='Developers, Developers, Developers'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-3540874761819164966</id><published>2007-01-25T09:10:00.000-05:00</published><updated>2007-01-25T09:31:04.888-05:00</updated><title type='text'>A Problem Solved....</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;font-family:'Arial','sans-serif';font-size:100%;"  &gt;The  Problem...&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;You have umteen  bazillion CD's and DVD's of software&lt;/span&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt; that you regularly need to get at in  staging new OS builds, or Virtual machine builds. Like most laptops that I have  seen the CD/DVD reader is getting a little squirrelly and does not want to do  its thing properly anymore ( reliably at least like the one in my laptop ). Add  to this quandary the fact that often you don't have the program install disk you  need when and where you need it. ( Carrying 50 lbs of install disks on a puddle  jumper plane is not practical )&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;font-family:'Arial','sans-serif';font-size:100%;"  &gt;The  solution...&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;ALCOHOL  120%&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;a title="blocked::http://www.alcohol-soft.com/" href="http://www.alcohol-soft.com/"&gt;www.alcohol-soft.com&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;This program allows  one to capture CD's and DVD's as ISO image files, or as is often the case you  can download ISO images files and burn them to CD with Alcohol. ( Microsoft's  support site for example allows you to download pretty much all of their  offerings as ISO's, any Linux distro is typically available as an ISO as well ).  Of course being able to burn an ISO to a CD is nothing new really. Most CD  writer software allo&lt;/span&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;ws that function. What's really cool about alcohol 120% is  that it allows you to mount the ISO image as if it were actually inserted into  the CD/DVD reader. It installs a driver that creates a second (Phantom) cd/dvd  device in your computer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;In the screenshot  below I have 2 CD devices D is the real one ( that is having some issues reading  things ) and E is the phantom one created by  Alcohol120%&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_PCpVDgCr5d4/Rbi7kSf0JII/AAAAAAAAAAM/drBcGj8kxZU/s1600-h/ISO1.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 366px; height: 273px;" src="http://bp3.blogger.com/_PCpVDgCr5d4/Rbi7kSf0JII/AAAAAAAAAAM/drBcGj8kxZU/s320/ISO1.bmp" alt="" id="BLOGGER_PHOTO_ID_5023971616446751874" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;Right clicking on the  E drive I get a menu where I can Mount and Image&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_PCpVDgCr5d4/Rbi8Dyf0JJI/AAAAAAAAAAU/NlhUiJZtvLk/s1600-h/ISO2.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 354px; height: 187px;" src="http://bp1.blogger.com/_PCpVDgCr5d4/Rbi8Dyf0JJI/AAAAAAAAAAU/NlhUiJZtvLk/s320/ISO2.bmp" alt="" id="BLOGGER_PHOTO_ID_5023972157612631186" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;I can select from  other images I recently mounted or mount a new image by browsing to where the  image is stored and selecting it. On doing so I get the Icon just as if I had  inserted a real CD/DVD into a real drive.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;In this case I selected to mount the  Visio 20&lt;/span&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;02 image because I need to install that  application.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_PCpVDgCr5d4/Rbi8Zif0JKI/AAAAAAAAAAc/adp8dJZWcDs/s1600-h/ISO3.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 388px; height: 289px;" src="http://bp0.blogger.com/_PCpVDgCr5d4/Rbi8Zif0JKI/AAAAAAAAAAc/adp8dJZWcDs/s320/ISO3.bmp" alt="" id="BLOGGER_PHOTO_ID_5023972531274785954" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;Now I can place all  those CD's and DVD Iso's on my portable HD and always have them available  without having to carry 50lbs of disks with me everywhere. You can always burn  one to a real media device in a pinch ( say to install something on a machine  without Alcohol installed if your real burner is working properly). But the  software allows you to skip all that if you are working in the same machine.  Truly a time saver and well worth the 80$ or so I spent for a version with  upgrades for life. You can also get a 40$ 1 Year subscribe if you  choose.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt; &lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:'Arial','sans-serif';font-size:100%;"  &gt;Check it out  ....&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-3540874761819164966?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/3540874761819164966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=3540874761819164966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3540874761819164966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/3540874761819164966'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2007/01/problem-solved.html' title='A Problem Solved....'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_PCpVDgCr5d4/Rbi7kSf0JII/AAAAAAAAAAM/drBcGj8kxZU/s72-c/ISO1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-116396336699602934</id><published>2006-11-19T13:26:00.000-05:00</published><updated>2006-11-28T07:10:08.066-05:00</updated><title type='text'>New Display Toys</title><content type='html'>One of my tasks at my company is to develop new techniques and leverage new technologies in the development, design and use of our products. Though most of my companies development efforts are now handled by other company employees, almost everything my company now does, started as a project within my own computer. To that end I am always looking at new stuff and for one reason or another I tend to gravitate to techniques and technologies that can enhance the user interface experience. One of our most successful products ClaimsExplorer heavily leverages a flat time line style of UI element that shows Claim activity in data lined up with corresponding authorization, clinical notations, eligibility, and insurance premium payment information at the day level for our clients. I have always felt that the time line approach was a good one but has its limitations. There is only so much information you can cram into a little icon about the occurrences of the period. Diversity and pattern in a dataset as varied as a typical health care claims database become as blurred as the screens full of textual data in spreadsheet form that most claims browsing system present to the user. Its just a little more colorful perhaps in the time line.&lt;br /&gt;&lt;br /&gt;The availability of development libraries that leverage the fantastic 3D rendering power of todays modern desktop/laptop pc's have existed for some time, and I have always felt that 3D was the direction to go to bring our visualization elements to the next level. The problem with these libraries has always been that they are squarely aimed at Gamers and Game development. Not that their is anything wrong with games, for I believe we would all be working on timeshared, green screen terminals if it were not for games continuously pushing the envelope for the rest of us more mundane developers out there. The problem has been that the display power does not play well with our boilerplate windows applications where grids of textual data mix with arrays of labels and buttons and text boxes, and check boxes, and other business like attire. (How boring but for me its what pays the bills) Another problem with these development libraries has always been that they represent themselves as a game engine. And they don't integrate well into a business application that has a familiar UI feel. They also typically required programming to them in C++ and as I said before I am a mundane developer not a C++ propeller head, having graduated from VB to VB.NET and C#.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Along comes Dark Basic....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A few years ago I bought Dark Basic Professional. (www.thegamecreators.com) and I really liked the power the language offered but it suffered the same issues noted above, I left it alone for anything work related. Windows Presentation Foundation has promise but its cookies are not done yet and the support for my favorite development environment Visual Studio is spotty and downright buggy at the moment. Given that Vista has taken so long to see the light of day I am not holding my breath. Then the other day on a lark I popped over to the Game Creators site again to see what was new. My eyes could hardly believe what they were seeing. These wonderful folks had actually taken the DarkBasic code base and made a COM Library exposing nearly its entire functionality to the .Net development environment of your choice. This new offering is called DarkGDK.net (http://darkgamesdk.thegamecreators.com/?f=dgdk_net)&lt;br /&gt;&lt;br /&gt;DarkGDK.net (DGDK) is a Com library that interop's well with .NET either 1.1 or 2.0. As such you have a choice as to what development language you want to use when interacting with the DGDK  library. I have exercised both VB.Net and C# in my exploration with DGDK. Because DGDK is a com library it allows the functionality to be used in a host of development environments.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Express Versions of VB.NET and C#&lt;/li&gt;&lt;li&gt;Visual Studio 2003&lt;/li&gt;&lt;li&gt;Visual Studio 2005&lt;/li&gt;&lt;li&gt;Sharp Develop&lt;/li&gt;&lt;/ul&gt;There are also 2 versions of the development library with licensing ramifications and cost structures&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Freeware License&lt;br /&gt;allowing development of freeware games only 60$ us&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Full Commercial License&lt;br /&gt;allowing unrestricted development royalty free 200$ us&lt;/li&gt;&lt;li&gt;Upgrade a Freeware License to Commercial&lt;br /&gt;for those of you who succumb to the dark side and want to&lt;br /&gt;start selling your offerings 140$ us&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now that was a price point I could live with. So I sprang for the Commercial license ( We do write commercial applications after all ).  After entering the Credit Card information I had to wait 2 days to get a link to download the product. Apparently the company hand checks each purchase to avoid fraud. So I had waited this long whats a few more days...&lt;br /&gt;&lt;br /&gt;About 1 hour later I popped over to the website again and checked on the status of my order (So much for whats a few more days). So I spent the next few days spending all spare time looking at the forums and reading what I could about the product.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;One thing that struck me was that the product is very new. I had not seen any specific release dates but it feels like maybe 1 or 2 months old tops.&lt;/li&gt;&lt;li&gt;Another point is that the website and forums  seem to breed confusion  over what product does what. Apparently they already have a product called DarkSDK which is a C++ product exclusively and this is a derivative of that item. The distinction is subtle on their web site, in their forums, and even in the name itself. To the uninitiated this breeds the confusion.&lt;/li&gt;&lt;/ol&gt;The library ships via the net as a single with or without Direct X support files. (74 or 19.5 megs respectivly) which installed on my Vista RC2 setup without a hitch. I then looked at the help file that ships with the library and found not a hell of a lot of help. The help documentation does have a fairly complete walk through for generating a simple .Net application in Visual Studio and in the Express editions of the development environments as well as for Sharp Develop. So I started there and crafted a new Visual Studio 2005 c# application.&lt;br /&gt;&lt;br /&gt;The library is signed using a Private/Public keying mechanism that introduced some small additional complexities on development efforts.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Manually add the necessary references to your application&lt;/li&gt;&lt;li&gt;Manually add an existing c# (in my case) class that ships with the development library&lt;/li&gt;&lt;li&gt;Tweak the build properties of the application to turn off Visual Studio Hosting for debugging. I don't believe this is required in the other development environments like Sharp Develop or even the Express editions but Visual studio is what I have.&lt;/li&gt;&lt;li&gt;Configure the projects assembly information like Company, Version Number, Description and what not.&lt;/li&gt;&lt;li&gt;Build the Application ( don't run it yet )&lt;/li&gt;&lt;li&gt;Run an application they ship with the library called the Authenticator and point it at the .EXE file you just built.&lt;/li&gt;&lt;li&gt;It crafts a file called {App name}.dgdk Add this file to your project and set its compile properties  to embedded resource&lt;/li&gt;&lt;li&gt;The authenticator also showed you a very long string in the public key box. This string needs to be cut out of the Authenticator interface and pasted into a specific spot in the above included C# class. (speaking from experience, be careful to get the entire string copied and pasted correctly otherwise it won't work)&lt;/li&gt;&lt;li&gt;Finally build the application again now it should run.&lt;/li&gt;&lt;/ol&gt;(As a side note. acrobatics like the above mentioned exercise are exactly the reasons I tend to just write things I need for myself and the company I work for. At least the use of those items becomes an order of magnitude easier for the developer.)&lt;br /&gt;&lt;br /&gt;On completing the above steps you have what is basically simple application loop where you have manually created a simple cube and, within a loop, are slowly rotating that cube about its geometric center.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now the fun begins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The samples included with the product have a slightly more complex project that extends the tutorial project by creating a windows form that has a picture box. Within this picture box object, the 3D surface will be rendered. This ability is the primary reason for my interest in the library as its integration into established applications and UI's is visually seamless using this technique. Visual seamlessness and interactivity are two different things however, while the picture box object happily will show whatever objects you build into it, getting the ability to interact viathe UI with those things takes programming. Thats where the rich API provided by DBGK comes into play.&lt;br /&gt;&lt;br /&gt;The DBGK API is broken out into a number of Classes that expose a number of methods organized into functional groups.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3D.&lt;/li&gt;&lt;li&gt;2D.&lt;/li&gt;&lt;li&gt;Sprites.&lt;/li&gt;&lt;li&gt;Sound.&lt;/li&gt;&lt;li&gt;Text.&lt;/li&gt;&lt;li&gt;Math. &lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;/ul&gt;One of the included source files that you add into your projects creates a set of static versions of these classes that you can then use globally within your application. Inheriting from this base class then allows you the flexibility to expand and further refine the functionality as needed.&lt;br /&gt;&lt;br /&gt;As mentioned above, the documentation is a bit sparse. Many of the API calls are documented in name only without the benefit of any form of explanation or example usage. Think of Microsoft's MSDN documentation devoid of any examples and in many cases missing any of the explanatory  text.  In other words its bad. I don't want to beat them up to badly on this point after all I am sure the same can be said about our own documentation for the things we have written at Tidgewell Associates. I am also sure that the documentation will improve as time moves along. Until then however the forums are your friend.&lt;br /&gt;&lt;br /&gt;There are also cases where an API call has several versions of the call with differing argument signatures that have subtly different names for example...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PlayObject(iID)&lt;/li&gt;&lt;li&gt;PlayObjectB(iID, Start)&lt;/li&gt;&lt;li&gt;PlayObjectC(iID, Start, End)&lt;/li&gt;&lt;/ul&gt;Fortunately its a simple matter to simplify these cases in C# or VB.NET by wrapping the PlayObject call in a proper overload for your own use.&lt;br /&gt;&lt;br /&gt;The Library also supports the reading in of external media in varying formats depending on type. Image types can be accessed via the LoadImage API call contained in the oDBImage class (one of the static classes instanced by the included source files ). Supported image file formats are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BMP&lt;/li&gt;&lt;li&gt;JPG&lt;/li&gt;&lt;li&gt;TGA&lt;/li&gt;&lt;li&gt;DDS&lt;/li&gt;&lt;li&gt;DIB&lt;/li&gt;&lt;li&gt;PNG &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Supported Sounds and Music in the oDBSound and oDBMusic classes are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WAV&lt;/li&gt;&lt;li&gt;MIDI&lt;/li&gt;&lt;li&gt;MP3&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Supported 3D shape/objects can be read in via the LoadObject method in the 0DB3D class. Formats include&lt;br /&gt;&lt;ul&gt;&lt;li&gt;X (Direct X format)&lt;/li&gt;&lt;li&gt;3DS&lt;/li&gt;&lt;li&gt;MDL&lt;/li&gt;&lt;li&gt;MD2&lt;/li&gt;&lt;li&gt;MD3&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I will admit that many of my attempts to get anything but X objects to load in failed in one way or another, I am not sure if my 3DS exporting from my now ancient Lightwave 7.5 is broken in some way so I have had to stick with X format for my experimentations. Another thing I have noticed is that it helps to have your object composed of triangles, a simple enough task in Lightwave I just triple the polygons.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Putting it all together&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the end, DGDK makes it fairly easy to instance and manipulate the 3D realm and integrate that realm into standard .Net applications. In our case I have some particular needs that the library fulfills nicely after some experimentation.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I need to be able to ask the library to tell me if some object is under the mouse&lt;br /&gt;This is accomplished using the PickObject call within the oDB3D class. One thing I had to do was to keep track of the size of the picture box object as it shrank and expanded in anchor with the containing form. Then each time I asked about a mouse coordinate I had to scale the coordinates asked about by the current scaling factor of the canvas in relation to how large that canvas was at the time the 3d surface was initialized. (The canvas stretches and shrinks but the 3D context displayed within is a fixed size at startup)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I need to be able to clear the canvas of objects so I can reload with perhaps a different set of objects&lt;br /&gt;Use the DeleteObject or the DeleteObjects method in the oDB3d class&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I need to have the objects placed anywhere within the 3D space&lt;br /&gt;Use PlaceObject in the oDB3d class&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I need to have the objects animate in some way (Maybe rotate or scale down or up)&lt;br /&gt;Use the ScaleObject and RotateObject methods in the oDB3D class&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I need to move the viewing position (camera) around within the 3D world&lt;br /&gt;Use the PositionCamera and PointCamera  methods of the oDBCamera class&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Below is a screenshot of my testing application that wraps up my experimentations to date and creates a simple scene with a number of objects loaded, instanced, and animating with mouse interactivity on the objects (The one under the &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/Sample3DClaimsExplorerSCreenShot.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/320/Sample3DClaimsExplorerSCreenShot.jpg" alt="" border="0" /&gt;&lt;/a&gt;mouse gets rendered as a wireframe, the others as solid objects).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-116396336699602934?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/116396336699602934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=116396336699602934' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116396336699602934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116396336699602934'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/11/new-display-toys.html' title='New Display Toys'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-116368336653591943</id><published>2006-11-16T07:55:00.000-05:00</published><updated>2006-11-23T11:20:58.360-05:00</updated><title type='text'>Windows Mobile Phone Tweaking</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/8125FilePhoto.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; CURSOR: pointer" alt="" src="http://photos1.blogger.com/blogger/2710/3094/320/8125FilePhoto.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A short but sweet post today....&lt;br /&gt;&lt;br /&gt;In my last post I mentioned a new toy I got from my lovely wife for my 40'th birthday. The Cingular 8125 Cell Phone/Pda/Camera. This little gem runs Windows Mobile 5 as its base OS and sports a number of cool features that endear it to me greatly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Most notably being the side slide out thumb pad that is actually usable someone who has knuckles that scrape the ground (like myself). The display automatically flips from portrait to landscape mode when you slide the keypad out. The OS also support 4 other styles of writing recognition including something very close to my old Palm device.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A Mini SD expansion slot on the top (I have a 1Gig memory card in mine). Certainly useful for MP3 music files.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bright full color screen (that I run at the second lowest brightness setting even outdoors) Like all of these devices the screen is touch enabled using the handy stylus that pops out of a hole in the bottom of the unit.&lt;/li&gt;&lt;li&gt;Wifi/Infrared/USB20/Bluetooth connectivity options as well as the gambit of cellular connections&lt;/li&gt;&lt;li&gt;1.3 MP camera (useful but not of the highest quality) In fact it will often enough get your phone confiscated is various government places that I often visit as my job requires that I go to these places.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In accordance with my usual pattern I have most, if not all, of the options on this device active and this extends to the plan itself. I have the unlimited connectivity option on the account and use it all the time to check email when I am out and about. (In fact at a family funeral a couple of weeks back I was reading and responding to some rather important messages during one of the, ahem, dead moments...). The one thing that I found is that Cingulars service is SLOW. In fact painfully so, I actually found myself hankering for the days of yore when modems where the norm and speeds where a speedy 9600 bps by comparison. At these rates my IMAP in box on taisoftware.com takes forever to update.&lt;br /&gt;&lt;br /&gt;Then, as I was browsing some posts on the subject, I hit upon a fellow who noted that it appeared that the cingular DNS servers were woefully underpowered. At that moment I had an epiphany, "Why not set it up to use OPENDNS..." http://www.opendns.com/&lt;br /&gt;&lt;br /&gt;Basically this means bypassing the Windows Mobile 5 dns settings of ( let my server tell me what dns to use) and configure it manually to use opendns's own dns servers. So i pointed the dns settings at&lt;br /&gt;&lt;br /&gt;208.67.222.222 and 208.67.220.220&lt;br /&gt;&lt;br /&gt;Edit - 11-23-2006   A note about OpenDNS:&lt;br /&gt;The service offered by openDNS is a good one. They provide DNS lookup with some protections against common fat fingering of URLS that leads to known phising sites. This alone is a good reason to use them in a comprehensive program of good web practices (To paraphrase my Toothpaste tube)&lt;br /&gt;&lt;br /&gt;(complete instructions on how to configure various devices to use open dns can be found at the opendns website)&lt;br /&gt;&lt;br /&gt;I can now say that the phone works a hell of a lot faster using opendns rather than the cingular dns servers. definitely worth the minimal effort...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-116368336653591943?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/116368336653591943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=116368336653591943' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116368336653591943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116368336653591943'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/11/windows-mobile-phone-tweaking.html' title='Windows Mobile Phone Tweaking'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-116290695792665453</id><published>2006-11-07T08:33:00.000-05:00</published><updated>2006-11-26T20:50:58.740-05:00</updated><title type='text'>Life with Vista</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/VistaSampleScreen1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/400/VistaSampleScreen1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Over the last few weeks I have been playing with and working with Vista RC2. This posting will reveal some of the things I have found during this excursion.&lt;br /&gt;&lt;br /&gt;First off let me enumerate my hardware setup.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Dell Inspiron 9100 &lt;/p&gt;&lt;ol&gt;&lt;li&gt;3.2 ghz P4 w Hyper threading&lt;/li&gt;&lt;li&gt;2 Gig Ram&lt;/li&gt;&lt;li&gt;ATI Mobility Radion 9700&lt;/li&gt;&lt;li&gt;160 gig HD&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Samsung SyncMaster 213 T external flat panel display&lt;/p&gt;&lt;p&gt;Logitech G15 Keyboard &lt;/p&gt;&lt;p&gt;Logitech MX1000 laser mouse&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Because I did not want to just ditch my prior Windows installation, I purchased a new Seagate 160 gig laptop hard drive and installed in the laptop. Then with my freshly burned RC2 version of Vista proceeded to install the operating system.&lt;/p&gt;&lt;p&gt;Vista, like almost everything else out there, installed basically without any real problems. It asks a few questions and then proceeds to install with a couple of reboots mixed in there for good measure. This of course is due to the fact that this hardware is fairly new and I don't have a lot of fringe devices with minimal popularity (IE The hardware is mainstream, if not a little aged at this time). One thing I am surprised about is the fact that the install took maybe 20 minutes start to finish. I had always been amazed that XP takes forever to install when a newly minted Linux distro could take much less time with all the bells and whistles. I know this is partly due to the fact that there are like 60+ updates to the aged XP Media that I bought whereas Vista is to new yet for any major patches. That said there are some patches even now to vista that must be installed or its constant nagging will drive you away. Still, start to finish, Vista takes a major leap forward with its installation times by being quick and relatively painless.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Now the fun begins&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;While as I said above my hardware is mostly supported by Vista and indeed most other new OS products, their are a few things about my existing rig that were not completely handled cleanly. This brings up another thing I will like about vista going forward. The fact is that unsupported hardware items asked about finding an appropriate driver once and then did not bother me with the alerts again. All of my prior experiences with XP and 2000 and Me and 98 and 95 all continued to nag when there was a device issue. Sure later OS's had the option "Don't ask me about this device again" but has anyone ever had that work foolproof. I know that plugging something into another port might trigger another round of device driver ping pong but come on folks can't software do better than that. I can say Vista does do better than that. The issue in this case is the built in modem on my machine. XP would complain every time when I rebuilt it (a total of 4 times since purchase) about the modem until I went to Dell and get the latest driver and installed it. I can honestly say I have never used the thing. Modems are so last centuary, besides my Cell phone (Cingular 8125) is much faster. Modem.... We don't need no stinking modem.&lt;/p&gt;&lt;p&gt;Other software/hardware items that I commenced to install, and all work to enough a degree to be usable, include (in no particular Order)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ITunes with QuickTime&lt;/li&gt;&lt;li&gt;Visual Studio 2003 and 2005&lt;br /&gt;(Studio 2003 seems to have some problems connecting to applications its launching in debug mode. Vista dialogs you that &lt;app&gt; has croaked and will be shutdown. Just restart the debug session and it will usually w&lt;/app&gt;&lt;app&gt;ork fine)&lt;br /&gt;Update 11-12-2006&lt;br /&gt;A fellow over at AGGREG8 noted that VS2003 is not supported under Vista. My experiance is that it works more than well enough to be usable and in my case Microsoft sanctioned support is not necessary.&lt;br /&gt;&lt;/app&gt;&lt;/li&gt;&lt;li&gt;SQL Server 2005 Developer&lt;/li&gt;&lt;li&gt;Altova Mapforce&lt;/li&gt;&lt;li&gt;My ancient Lightwave 3d (ver 7.x)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Office 2003 (with everything)&lt;/li&gt;&lt;li&gt;UE Studio&lt;/li&gt;&lt;li&gt;Red Gates Ants Profiler &lt;/li&gt;&lt;li&gt;SourceGear Source Vault ( Client side tools work VS integration seems broken)&lt;/li&gt;&lt;li&gt;Blender&lt;/li&gt;&lt;li&gt;Firefox and Thunderbird&lt;/li&gt;&lt;li&gt;VMware 5.2&lt;br /&gt;I need to still test my applications with XP and 2000 and in some cases even 98.&lt;br /&gt;Update on Vista RTM 11-26-2006&lt;br /&gt;Looks like they broke something in the RTM release. The Network adapter complains about overlapping IO calls and forces startup in disabled mode. No amount of tweaking I have been able to do actually seems to have any effect. The end result us a virtual machine that has no network support, which is just about useless.  If there is no fix for this soon I might have to back peddle away from Vista back to XP....&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Logitech G15 Keyboard/MX1000 Laser Mouse&lt;/li&gt;&lt;li&gt;Multiple USB and Firewire Storage devices&lt;/li&gt;&lt;li&gt;An ancient USB Scanner (I have no idea what the make is)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;World of Warcraft ( now I actually copied my last install directory off my old drive and hand made the launch icon, Works perfectly)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;All of these items installed and work almost perfectly, and this led me to another revelation. The propensity for Vista to prompt you at every turn when installing applications for permission to do something,&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/VistaAdministratorPrivilagesNeeded.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/200/VistaAdministratorPrivilagesNeeded.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;was not nearly as annoying as I had though it would be. On one hand it asks first and unlike the early betas it does not bother me again mostly. One exception was with ITunes it asked during the ITunes setup, then asked me again during the Quicktime setup, even though they are supposed to be integrated. A clue that Apple lumped their separate standalone quicktime install within ITunes and sent it all out as one big monolith. Still though, not nearly as much a pest as I had thought it would be. I can say that folks who should be able to install applications like this who gripe about the issue need to get some real problems to contend with.&lt;/p&gt;&lt;p&gt;Not everything was roses and perfume however, Remember that cell phone I talked about above?, well the device runs Windows Mobile 5, and Active Sync, the bane of all who are forced to use it, does not work on vista. In fact its functionality is supposed to be subsumed into the OS via the snazzy new Windows Mobile Device Center. Finally OS level support for the very necessary function of synchronization of external Windows Mobile PDA/Phone devices with their informational counterparts on the desktop, before throw your back out, jumping for joy, know this.... Its not working yet. Oh sure you can copy files to and from the devices. You can configure the OS to keep those files in sync but what about all those other items, like Contacts. Contacts will not transfer to Outlook. The cookies need to cook some more, as this release was dated early October and the business release is slated for November 30'th. I don't see the business Vista getting this point fixed in time. It's back to the old days of changing that number in your phone and then remembering to fix it in Outlook when you get home. Maybe this point will be fixed by the time it ships to end users early next year. Goodness, just as I had gotten Active Sync to work reliably to.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;(Note as of Nov 20'th )&lt;/p&gt;&lt;p&gt;Upgraded my RC2 to the real Gold version from MSDN this weekend. The Sync issue persists even in this release version. The activesync website has this to say...&lt;/p&gt;&lt;p&gt;"&lt;b&gt;&lt;i&gt; ActiveSync works only with Windows XP or earlier. If you have Windows Vista, your synchronization settings will be managed through the Windows Mobile Device Center. Windows Mobile Device Center for Windows Vista will be available soon through Windows Update and this Web site."&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Minor Annoyances&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;All manner of things have changed with vista's interface. Some items are better others are just an annoyance. Below is a run down of the bullet point and classification IMO...&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Name changes for familiar items. My seems to be missing from every place. I never understood the issue with folks saying I hate all this My Documents, My Computer, My Music. Well the My is gone and in the case of documents the name of the folder is now just your login name. I'm annoyed but hey its minor.&lt;/li&gt;&lt;li&gt;Looking at the network shows nothing. In the default setup I had to go turn on the browsing service to have it enumerate the resources that are out there. Annoying but also minor.&lt;/li&gt;&lt;li&gt;Configuring network locations does not show non netbios locations ( like FTP sites ) even though you setup the location using their Wizard. Yes you can craft shortcuts and place them in the file space or the desktop, but they default to opening in IE7 not explorer thus you cannot use them to copy files to and from the target. Annoying and significant.&lt;/li&gt;&lt;li&gt;Remote Desktop complains about connecting to a remote desktop server that does not do all the wiz bang security diddy's that Vista supports. It dialogs you asking are you sure you want to connect. It also does not keep things like the Login Name associated with the site. Back to keeping them in my phone and having them sync with my computer, ah wait that wont work either (see above). Annoying.&lt;/li&gt;&lt;li&gt;I often run two displays. The system refuses to allow me to have the DVI output as primary and the VGA output as secondary. Instead it insists on having either the DVI or the VGA as primary and the built in display as secondary or visa versa. Oh well I took the second head home and use it on the laptop when I am home. XP did this no problem, Annoying.&lt;/li&gt;&lt;li&gt;The Power options don't seem to be allowing the built in battery to charge while the system is running. No BIOS options control this its strictly the VISTA power control settings. In Microsoft's eagerness to simplify they seem to have dumbed down the options to the point where that control is out of the mix. At this point I am losing about  1 % of the battery a  day. Well I have 85 days left of "Plugged In Not Charging...". Looks like I'll have to slip my old drive in for an evening of XP screen blanker and battery charge time. Annoying.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/VistaSampleScreen3BatteryWoes.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/200/VistaSampleScreen3BatteryWoes.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Update 11-9-2006 Last evening I tried putting the system to sleep for some time in the hopes that it might charge while sleeping. Powered back up in the morning, now at 84% not charging... Still annoying)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Webex is something I have to use a lot. Webex does not work properly in IE7 on vista. ( Its a vista thing because it does seem to work in IE7 on XP). I tried the java version in Firefox 2.0. Problem is that the JRE 5.x plug in does not install on vista. Some issue with writing some part of the packages. I asked the webex folks what gives, crickets... Finally I tried the beta 6.x version of Suns java. AT least it installed. I can now use Firefox to setup meetings and host them. One more problem though is the fact that Firefox 2.0 bombs the moment a single attendee joins the meeting. Vista spouts some friendly little dialog to the effect that Firefox has stopped responding and is being shutdown. Quickly reopen Firefox, reconnect with webex, relogin, and rejoin meeting those who joined the meeting are still there and it seemed to work. Hugely annoying.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As suspected anti virus software is broken. Vista versions may be coming or may not be coming. Until then we have Windows Defender... Don't that make you all warm and fuzzy? Annoying.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Now that I have ran on and on about the annoyances I'll bet you folks are spouting on about why doesn't this loon just pop his old drive back in and be done with it. Well I can say that I did have to revert back while I was working out the kinks, after all I do work on this machine and while the initial install took 20-30 mins tops all this other stuff has taken me days to get right. The fact is, Vista with most all of my necessary applications and development tools and yes WOW is a necessary application, simply works smooth as silk. In fact today while I was editing a portion of this post, my system was...&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Running ITunes blaring EVANESCENSE, (headphones of course, I am a good office boy)&lt;/li&gt;&lt;li&gt;Running VS2003 profiling one of our importer applications in a 2+hr cycle talking to the local SQL server 2005 database (several gigs in size).&lt;/li&gt;&lt;li&gt;Outlook 2003 connected to our domain using IMAP.&lt;/li&gt;&lt;li&gt;Several browser windows open (one on blogger where I was typing away), others elsewhere.&lt;/li&gt;&lt;li&gt;Downloading multiple issues Davorak's CrankyGeeks webisodes.&lt;/li&gt;&lt;li&gt;Word2003 and Excel opened.&lt;/li&gt;&lt;li&gt;With all the standard Vista eye candy running full bore in its new Wizzy Bang sidebar on its multiple displays (one external DVI and the other the Laptops own panel)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/VistaLotsOfStuffRunningAllAtOnce.2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/320/VistaLotsOfStuffRunningAllAtOnce.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The system just ran smooth. Even with all that stuff happening at once. Now I will be the first to yell at an end user when they have 15 versions of word opened at once, but my XP system never ran that smooth on the same exact hardware. In fact while all that was happening the system memory was running at 95+% usage. ( As the G15 keyboards display and the Vista sidebar Gadget CPU usage were indicating ). During that time the virtual memory usage was minimal. The database server accessing the hard disk the same hard disk as the virtual memory subsystem was using. Now XP would hit the swap file at the drop of a hat. Vista just seems to be smarter about things like that, after all I put 2 gigs of ram in this thing for a reason. Finally we have an OS that uses it from the Pacific Northwest. (The one from Finland has properly used hardware when it was available for quite some time). This reason and this reason along compels me to overlook the list of annoyances and stick with Vista. Our clients require that I develop for the Windows platform, now we have an OS that makes that environment as comfortable as I have always felt it should be.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-116290695792665453?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/116290695792665453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=116290695792665453' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116290695792665453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/116290695792665453'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/11/life-with-vista.html' title='Life with Vista'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-115331610691074547</id><published>2006-07-19T09:31:00.000-04:00</published><updated>2006-07-19T09:35:06.920-04:00</updated><title type='text'>Life....</title><content type='html'>&lt;p class="MsoNormal"&gt;My brother Scott looked up to me as we were growing up. I had managed to avoid most of the dumb childish things that identify a person as being immature where he may not have. I did well enough in school to avoid most trouble, he did not. I had a job and made money most of my high school life and he did not. When I turned 18 I left home never to return except to visit. Initially he did not do all that well on his own. I remember he ran away from home and actually came across the country to actually see me. I was working in a small computer store where he showed up one day, all dusty and dirty from the long trip (&lt;st1:state st="on"&gt;Arizona&lt;/st1:State&gt; to &lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Rhode Island&lt;/st1:place&gt;&lt;/st1:State&gt;). I remember that I could not take him in and while I provided him the help I could, I had no place for him where I was staying. Again he wandered off out of my life and out of my mind as I was focused on making something of my life. &lt;/p&gt;   &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;Some time later he and I came together again as he was settling down and getting married. He asked me to be the best man at his wedding. I remember thinking about that question, “Why me. He and I didn’t even really talk all that much, doesn’t he have a good friend.”, thoughts that I am truly regretful of today. I went to &lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Arizona&lt;/st1:place&gt;&lt;/st1:State&gt; to be his best man. I had a great time, seeing him and the rest of the family that I had left there when I came back to RI to make my life. I remember leaving &lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Arizona&lt;/st1:place&gt;&lt;/st1:State&gt; to come back here to my life thinking Scott is all set in his life, and focusing again on my own.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;The years passed and we spoke little, bits of contact here and there at major events we held in common. &lt;span style=""&gt; &lt;/span&gt;I remember that he moved around the country an awful lot as he followed his wife from place to place, all the while, he held odd jobs in each place. It became difficult to keep track of where he was in the world. I relied on others to tell me. Occasionally we connected for some bit of conversation on the phone. When I met my future wife and got engaged. I didn’t know where he was to I asked my father to tell him for me. We invited him to my wedding. I did not expect he would make the trip. His life had not really gone to well and he was not especially able to just up and leave it for a trip to see his now distant brother get hitched (finally). He did send us a wall ornament that I have hanging in our hallway. &lt;/p&gt;   &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;I remember passing by that ornament in our hall and thinking “I’ve got to give him a call”, alas I had lost contact with him again. I learned that he had moved again to &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Tucson&lt;/st1:place&gt;&lt;/st1:City&gt;. &lt;span style=""&gt; &lt;/span&gt;I remember thinking hey maybe we can get together again when I go to &lt;st1:state st="on"&gt;&lt;st1:place st="on"&gt;Arizona&lt;/st1:place&gt;&lt;/st1:State&gt; to see the family, but I never did. My wife and I are planning to travel out west this coming Christmas holiday. We are planning to take my In-Laws with us. We were planning to all get together again and I found myself looking very much forward to that time.&lt;/p&gt;   &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;I learned today that my brother Scott ended his life amid what were dire circumstances. He had been going through a separation; his health was not at all good. He was in pain physically and emotionally and in his eyes I am sure he saw no relief on the horizon. My brother Scott looked up to me. As I sit here drowning in retrospect, I cannot fathom why. In the light of hindsight, I can see that where it matters most, I have failed. If someday I manage to be half of what he thought then I will have accomplished something.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-115331610691074547?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/115331610691074547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=115331610691074547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115331610691074547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115331610691074547'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/07/life.html' title='Life....'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-115132859764215493</id><published>2006-06-26T09:28:00.000-04:00</published><updated>2006-06-26T09:29:57.653-04:00</updated><title type='text'>Email is Lousy</title><content type='html'>&lt;p class="MsoNormal"&gt;Email sucks...&lt;br /&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;br /&gt;There I said it, and for as much as I rely on this post internet wonder drug, Email is surely one of the worst inventions of mankind for certain types information exchanges. You know the kind of exchanges where people used to get together face to face and iron out differences in a discussion. Sure email is fantastic for those times when one party needs to inform another party of some static topic. The fields in the file are as follows, the phone number of that person is, the directions to the party are, all are easily transferred to their recipients via email with little or no problems. Other discussions that have deeper meaning or have a bidirectional element woven into their fiber reveal a startling shortcoming in the typical email exchange. Most importantly email lacks that all important human element where one party can gauge the mood of the other side and adjust the conversation accordingly. In some ways email great strength for one task is also its downfall when applied to another task. Email is fast but its not immediate, it also has that ‘say it now and listen to it later’ element.&lt;span style=""&gt;  &lt;/span&gt;This is all well and good for unidirectional information exchanges but falls apart in any form of multidirectional information exchange. Add this shortcoming to the lack of email to convey mood, and you have a recipe for trouble. I write this not to convey some great understanding onto the internet masses. I am sure this is not news to a great many of you folks out there in internet land, but more as a reminder to my own thickness on the subject and a warning to myself to avoid using the medium for things that it is ill suited for, maybe then I will avoid issues like last weeks debacle. &lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-115132859764215493?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/115132859764215493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=115132859764215493' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115132859764215493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115132859764215493'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/06/email-is-lousy.html' title='Email is Lousy'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-115013635965326325</id><published>2006-06-12T13:30:00.000-04:00</published><updated>2006-06-14T13:43:02.873-04:00</updated><title type='text'>Mapping Data in HIPAA HELL</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;The following is not meant to be a review of any real depth but as the blogs title suggests, its more of a summation of my findings on a recent problem...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Its been a while now since I have relied on tools to help with something as simple in concept as taking a file and reading its contents into some form of database. I used to always take the approach that tools were for wusses for these kinds of things. &lt;span style="font-weight: bold;"&gt;Boy was I WRONG!&lt;/span&gt; There I said it, I was wrong, wasn't the first time, and won’t be the last either. My particular leverage point on this tipping was reading some HIPAA AnsiX12 834 eligibility files. Now HIPAA is a wonderful standard. (You know what they say about standards). Add to this mess the fact that implementation of this 'standard' often leads to the decidedly non-standard. In this case we were tasked with reading in some membership files cranked out of a state system for public sector healthcare.&lt;br /&gt;&lt;br /&gt;I looked into a number of tools; each had to address the following needs.&lt;br /&gt;&lt;br /&gt;Be able to produce code that would perform the function without any need to pay royalties to anybody. (Most of our code is actually in the ownership of the client thus the tools needed to create code that could also be in the client’s ownership)&lt;br /&gt;&lt;br /&gt;Be able properly read the odd and downright nasty formatting quirks of a typical HIPAA ANSI X12 file.&lt;br /&gt;&lt;br /&gt;Not cost an upper and lower appendage (something under 5 grand would be nice)&lt;br /&gt;&lt;br /&gt;What I found, was a product called MAPFORCE from a company called ALTOVA. Mapforce is a powerful mapping and conversion tool designed to provide a nice GUI onto the mapping process. Using it is basically as simple as selecting some form of input and some form of output and at its simplest level connecting elements of the input to elements of the output.&lt;br /&gt;&lt;br /&gt;Part of the tools power lies in its almost complete collection of EDI and X12 standards awareness. Other sources of power come from its ability to connect to just about any Database available via OLEDB/ODBC. Mapforce also handles traditional Flat ASCII text files with ease, and the last great thing in the software tool are the built-in functional blocks that the user can employ to translate/transform/conditionally act on the data as its passing from input to output.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The software allows you to take these bits of functional blocks and collapse them into user defined functional blocks that perform the task of many hidden behind a single function. Initially these user defined functions only allowed a single output, but during my testing and learning Altova released a new version (SP3) that allowed user defined functions to be multi output as well as multi input, a very welcome addition to the tools arsenal of weapons that can be brought to a problem.&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2710/3094/1600/MAPPINGINHIPAAHELL.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2710/3094/320/MAPPINGINHIPAAHELL.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;Along the way, I encountered some problems. Most notable was the fact that transitioning from SP2 to SP3 broke the software in regards to reading one of my files. This is where I exercised the companies support option which is solely through the email. Now this has not ever been one of my favorite ways to get support on something, but I can say that its execution with the company ALTOVA was about as good as it gets, and I did get my problem resolved. Most of the real issues I encountered with support stemmed from their need for data, and not being able to freely share the problem files because of the personal health care information contained within the offending data. This would have been a problem with anyone using any form of support. In the end the company was able to help me resolve the issue and along the way fixed some things that were also not a critical problem but minor annoyances. Overall excellent and I can say the best email support I have ever experienced.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;  &lt;/p&gt; &lt;p class="MsoNormal" style=""&gt;In the end, Mapforce proved to be more than I had expected. They have a complete working version available online that times out in 30 days otherwise no strings attached. The code generation can handle XSLT, XQuery, C#, Java or C++. The templates handle every kind of nutty file you might be able to throw at it. The programmability is very powerful. The support is more than adequate, and it does not cost an arm and a leg. Just what the doctor ordered. Now does this mean I will abandon my desire to write everything myself? &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style=""&gt;Hmmmm Maybe.....&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style=""&gt;Naaaaaaa.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-115013635965326325?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/115013635965326325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=115013635965326325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115013635965326325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/115013635965326325'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/06/mapping-data-in-hipaa-hell.html' title='Mapping Data in HIPAA HELL'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29116863.post-114918119826783377</id><published>2006-06-01T12:52:00.000-04:00</published><updated>2006-06-01T12:59:58.273-04:00</updated><title type='text'>Sysadmins I feel your pain</title><content type='html'>&lt;p&gt;From an earlier post made in December 2005 elsewhere...&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;This past Saturday’s festivities proved to be a challenge ultimately ending in failure. You see, we attempted to migrate our crusty old Linux Mail/Web/Nat/Firewall/File server to a shiny new Windows Server 2003 machine doing all the same stuff. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;We have used Linux for this task in the past, but since we are largely a Microsoft shop and our clients are also largely Microsoft in their own infrastructures we decided that perhaps it was time to eat our own dog food as it were. My one reservation was using Exchange for messaging (read EMAIL). &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;After setting up server 2003 on a new dell server class machine in-house and configuring that system for exchange, (Making it a domain as a requirement because exchange appears to need Active Directory, so we are a tiny company with Active directory setup oh the joys of that are indescribable -cough. In order to be a domain you need to configure the machine to also be a DNS server, never mind that your have your DNS potentially hosted elsewhere windows wants to be everything, so you allow it to at least think its the authoritative DNS which it really isn't) &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;At this point exchange is configurable and we can seemingly get attached to it via Outlook or should I call it LOOKOUT!. So on the morning of the migration we start copying email from our old SENDMAIL server via IMAP to the pristine exchange server via LOOKOUT. I should say moving mail because LOOKOUTS default is to copy then remove the message from the source, by the time we discover this little ditty its to late for some high profile mail accounts like the presidents. (Before you go blasting me YES I have a backup but that’s not the point). &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;On putting the server in place we set out to configure the firewall and NAT features. Numerous documents tell you various conflicting things but it appears that we need the full ISA version of the Microsoft firewall product, in order to be able to get exchange access remotely without requiring the remote site to connect to a VPN. In fact we also need the ISA for the full VPN class anyway so we go about setting up ISA product. Here is where we begin to get into trouble. Seems that ISA product pretty much takes over the machines IP/PORT traffic. The web server no longer responds and the DHCP server on this machine is no longer handing out leases. We futz about for some time and manage to get NAT happening again via the Wizards in the ISA product. We solve the DHCP issue by getting an internal database server to also hand out leases. The web server is however another matter The ISA product is clobbering port 80 traffic and there is no document that we can find that points out how to allow 80 to pass through. What we do find is three different accounts on how to move the IIS server to some nonstandard port like 8080 and then bridge 80 to it via a custom rule and a TCP listener. Ok we get we happening but when you attempt to connect to the web exchange client the 8080 redirect cause traffic to round trip back to your web browser and back to the server at 8080 where ISA blocks its because 8080 is not configured and you cant find how to configure a port to just pass through. I am sure the problem would not even exist if you did not attempt to have the one box running web server and firewall; Microsoft’s answer to all stability issues appears to be, add another server. I already said we were a small firm and 4 servers to support Mail, Nat/Firewall, Web and File/Print are out of the question. Don’t even get me started on the mass of contradictory documentation available from Microsoft in a number of their sanctioned places. I can say that nothing we read from the firm was conclusive and correct all day. The most valuable resources for us were third party accounts from what I am sure are forcefully balding others of our ilk who after navigating the same waters we were in to some form of safety, felt compelled to recount their own tales of woe in the hope that some other poor souls might be saved. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p&gt;For all of you out there who helped with your writings, I thank you. I hope the hair plugs work for your newfound baldness. We on the other hand were forced to turn back. I realize that were are not true Sysadmins. I also realize that we were definitely in over our heads with this setup, but the poor documentation and general attitude of you should NOT be doing all this in one BOX does seem to preclude the companies products in very small operations like ours. Don't get me wrong I Love much of Microsoft's offerings. Visual Studio .Net is perfect for us and its result are perfect for our clients. Their infrastructure stuff however leaves me under-whelmed. Now, where are those Mail backups...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29116863-114918119826783377?l=rmag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rmag.blogspot.com/feeds/114918119826783377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29116863&amp;postID=114918119826783377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/114918119826783377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29116863/posts/default/114918119826783377'/><link rel='alternate' type='text/html' href='http://rmag.blogspot.com/2006/06/sysadmins-i-feel-your-pain.html' title='Sysadmins I feel your pain'/><author><name>harlock123</name><uri>http://www.blogger.com/profile/10555320126911032664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://3.bp.blogspot.com/-2c47GrjXJG4/TfUjueIqeMI/AAAAAAAAAB0/IsX1886XrXQ/s220/SmallMug.png'/></author><thr:total>0</thr:total></entry></feed>
