March 2007 - Posts

Yesterday I had a had a chance to have dinner and drinks with another group here for a Technology Summit hosted by Microsoft.  They get a bunch of representatives from parallel and alternate technology groups such as PHP, Linux, Java, Python, etc together and discuss they reasons for Microsoft decisions, show off Microsoft focused options for solving problems, and just generally discuss the technology ecosystem. 

One of the people I managed to talk to in depth was an integral part of the Powershell team.  He helped write the language and has been with the team since inception.  I personally have pretty limited experience in the *nix environment so comparing shells is difficult for me, but he helped me understand some things.  One thing he pointed to as a the cause of some angst between *nix administrators and Windows administrators is the ease of administering a *nix system without a full blown interactive session.  A *nix administrator has the option to open an SSH session and has full shell access to the system.  Adding a DNS entry for instance is 3 lines of shell command rather than opening the DNS MMC console, expanding some trees, opening a dialog, clicking a few times, then actually adding the record you intended initially, then confirming it 3 times before closing the console.

Contrary to my understanding, it was an option to recreate the *nix shells in the Windows environment.  Instead the goal was to create a platform that would enable the end-game of creating cmdlets which can/will enable administrators to administer their systems in as productive a manner as any other platform.

One of my questions to him was regarding v2 of Powershell.  He mentioned that the focus would be in 3 areas: remote connectivity (i.e. SSH), a more powerful interface to powershell (apparently there's more to moving around the powershell than arrow-keys and tabbing), and a more broad library of cmdlets. 

Also announced yesterday was the inclusion of Powershell in the upcoming Longhorn Server release.  Very exciting. 

To avoid disappointing users after they've gotten as far as running your application on their 1997 300mhz Pentium II, determine their capabilities using the RenderCapability.Tier value before hand and notifying them that they'll need to joing the 21st century before running your app. 

Henry Hahn has a quick overview and, the always welcome, code samples of using this value to make your application conform to the different tiers.

Don't forget your bit shifting, cause the Tier is set up to support new Tiers/platforms in future releases.

with no comments
Filed under: ,

You may have noticed there were not many blog entries for Day 2.  It turns out there's no way to ftp stuff out of the technology center.  It's hindering my ability to post with pictures/screen captures.  I've got a bunch of posts for you as soon as I figure this out.

 

Stay tuned.

with no comments
Filed under:

The Speedy Rewards program is backed by two pretty hefty Oracle 9i RAC instances.  One is for the OLTP and the other for data-warehousing analytics.  Since it's inception we've pretty impressive success with the uptime and performance, though one glaring problem has plagued us now for going on 4 years.  Every 3 days, whoever is on call is required to reboot EACH instance of the cluster to avoid a "Split Brain".  This is compounded by the fact that the third-party software that we have purchased to manage high-performance points, offers, awards, etc. presentation to our members maintains open connections as long as the application server is running, never closing them or validating themselves.  So basically, this third-party software has negated most of the benefit of a RAC cluster in that there is no load balancing (RAC redirects on the initial connection.Open, not between command executions - sticky connections) and there is no failover during our 3 day reboots.  We must effectively go offline every three days for about 10 minutes.  Not good for a <1% SLA on greater than "a lot" (that's lawyer speak) per day.

I could spend all day trying to reiterate their reasoning for maintaining open connections forever, not re-connecting them, or even their decision to take down their entire application server (not physical server but the windows services that encompass their application) when connections begin to fail.  I'll allow you all to come to your own conclusions as to the competence of this company that shall remain nameless.

After 4 years of open "TAR's" with Oracle, numerous consultants, configuration changes, and eventually a plan to migrate these instances to 10g on Linux we believe we stumbled upon the root cause.  We are all aware, I hope, of Windows Perfmon/Performance Counters and how very helpful they can be in giving insight into your running applications.  Well it turns out that Oracle exposes performance counters, but the underlying implementation of these counters login and extract the counter data directly from the target instances.  In order for Oracle to do this it provides a set of configurations for specifying the login, instance information, etc for the counters to use.  Here comes the kicker - that login must be VALID.  Yes, if it's not valid and you have a tool which try to open these performance counters pretty often like MOM your Oracle process will, over time, leak Virtual Bytes and the Oracle Process will crash, causing a Split Brain.

Long story short, if you're interested in crashing an Oracle 9i instance, try to login over and over with an invalid login.  Now would you call that a bug?  A pretty glaring one if you ask me.

Here is a link to the configuration settings article which details what we had to do to resolve this issue.

with 1 comment(s)
Filed under:

For those who don't already know, I want to make it perfectly clear that I am the last person you would ask to design an appealling interface.  Messaging, thread syncronization, etc I'm your guy, but pretty pictures I am not.

with 2 comment(s)
Filed under: ,

We moved past the introductions quickly and are getting down and dirty.  Rob Relyea took us through the basics of WPF from the latest Visual Studio Orcas perspective.  Starting simple by creating a button via Xaml and a duplicate example using purely C# code.  I've posted a copy of the sample here for Visual Studio 2005 with the WPF Extensions.

One of the interesting new classes for you code junkies is the ObservableCollection class available now in .Net 3.0.  This class implements the INotifyPropertyChanged interface allowing the dynamic databinding in WPF.  This is cool for all sorts of reasons, but specifically because we can use this dynamic, event based collections infrastructure for in memory lists of more than your list of employee names, but also videos, complex business objects like product definitions, pages in a book that you are rendering, or files in a directory which you are monitoring.

with no comments
Filed under: ,

My co-worker Steve and I are here in Redmond this week for a WPF Bootcamp training session.  We started off by meeting the WPF Product Unit Manager, Ian Ellison-Tayler, and Lead Program Manager, Rob Relyea.  Ian ran through some existing WPF applications floating around the intersphere.  As early as it is for WPF, there are some cool apps already.  Take a look at iBloks, definitely a fun little app.  The British Library has a cool XBAP application as well.

Amongst all the glitz and glamour of the pretty pictures and transitions demoed and blogged about are the features of WPF that make those things possible.  One of the questions I found very intriguing involved how Xaml and the "Element-Content" model would affect future standards.  The "Element/Content" model provides the ability to dress up what is still your standard button with content of all shapes and sizes.  Adding animations, movies, complex text to buttons with ease will open up the options for designers and developers to question what is a functional and usable layout for their software.  It was met with snickers, but the comment that market dynamics would play out the designs that are acceptable really holds true that the design standards are moving from the platform groups to the designers.  What an excitingly simple concept.

with 3 comment(s)
Filed under: ,

One of the things we have decided we really want to try with Little Ryan is Baby Sign Language.  I've read a number of great first hand accounts and I'm really excited.  Beyond the suggestions that family's who've adopted baby sign language see a reduction in temper tantrums, I'm excited that I'll have at least a few extra months and, maybe, even a years worth of solid communication with my son.

For those that are interested, the link above to My Baby Can Talk provides a great starting point with a dictionary of videos, Getting-Started lessons, etc.  All of the signs in the My Baby Can Talk series are ASL (American Sign Language) signs which means you are on your way to teaching your child a new language.  More and more universities are recognizing ASL as a legitimate foreign language, so why not keep going.

 At the same time that we are learning ASL with Little Ryan, I'm diving back into high school Spanish (Latin American style this time)!  As with most, I blew off my foreign language in high school, but I've always regretted it.  How cool would it be to strike up a conversation with someone in another language.  Not to mention being able to understand when an overworked waiter starts ripping you for being those guys at lunch.

A while back I ran across the Rosetta Stone web site and I tried out one of their demos.  They use a technique call Dynamic Immersion™ that is absolutely awesome.  Why educators feel it's effective (or maybe the better word is efficient) to memorize the <Your-Language-Here> to English dictionary is  beyond me.  Instead, Rosetta Stone completely ignores your primary languages and uses a mix of visual, audio, and written scenes in the target language to make you decipher your way to competence.  This is what we all did as children and, with the exception of our beloved President, it worked out pretty well. 

I've only recently received the CD's and spent a little time, but as I move along I will try to post my thoughts.