This blog has, IMO, some great resources. Unfortunately, some of those resources are becoming less relevant. I'm still blogging, learning tech and helping others...please find me at my new home on http://www.jameschambers.com/.

Friday, September 25, 2009

Ping-a-licious

I have just added some enhancements to my network monitoring service that allow better control, interactivity and much better performance:

image

Anyone who says .Net is slow needs to come see me for some schooling.  :oD

In 1.11 seconds I open a connection to the database server, retrieve the next set of nodes (per their unique schedule settings) via Linq to SQL, add 15 threads to the thread pool and then issue 60 ICMP queries (each 32 bytes), four in each thread.  The complete message comes after connections have been closed and all threads have been returned to the pool.

This is a typical response, but it does vary.  The range is actually anywhere between 1/10th of a second up to 16 seconds (when everything times out).

One other thing that this not-so-humble programmer was completely unaware of: apparently it is a faux-pas to have two default gateways.  Who knew?  Heh…well, the OS did when it was all like,

You shouldn’t have two default gateways, are you sure you want to do this, dumbass?

I actually think it said dumbass, don’t know for sure, because I clicked the “Go ahead, make my day” too quick to see what would happen.

Funny story: turns out I shouldn’t have done that.

I started hitting QoS limits last night and almost took a key part of our critical infrastructure down.  Oops.  ARP tables were filling up and the ICMP traffic started broadcasting across the network.  A couple lots and lots of equipment starting throwing a fit and sending packets back at the test server.

While we have a very good testing strategy and a virtualized (and miniaturized) version of our production environment, it certainly doesn’t replicate everything that happens out in the real world.

Thursday, September 24, 2009

Linq to SQL Change Conflicts

I had been getting two similar but different errors when trying to persist records to an MS SQL 2008 database with Linq to SQL.  The exception was of type System.Data.Linq.ChangeConflictException and the details were either “Row not found or changed” or “1 of x updates failed” when I dug a little deeper.

The instance of your DataContext will contain a collection of ChangeConflictException objects.  You can foreach through the collection and resolve the conflict.  Here’s an example of how:

image 



The next time you call SubmitChanges the record in question will be saved.  Calling the Resolve method requires that you give the DataContext a resolution strategy.  In my scenario, I choose to merge the data into the saved record in the event of a conflict.  I believe what is happening is that I’m getting a collision because I’m creating multiple child records in different threads (and contexts) and trying to save, but I have to suss this out a little better.



I am running about 20 threads and polling 3500 devices.  Sometimes devices enter a state where a scheduled poll fails and gets into the queue again (for a refresh) around the same time as the next scheduled poll.



Obviously I’ll be working to refine that so if a fail occurs I can skip (or reschedule) the next poll and not have to worry about the results coming back in the same frame.

Gmail Goes Bonk

I tried multiple accounts, even through my US proxy service, and it appears as though there are problems out on the cloud today.

image

I am getting this on both Gmail-hosted apps (for custom domains) as well as on the Gmail site itself.

Twitter is flying off the handles with user reports.

Thursday, September 17, 2009

Silverlight Firestarter Event – Afternoon Session

Janete Perez is about to start the presentation on SketchFlow…hoping this is a deep dive.

image

Primary use of SketchFlow is to have cost-effective prototypes that allow feedback, evolution. 

Janete is rockin’ a cool walkthrough for a deep-zoom conceptual application.  Some pre-work done before the session, but nothing we haven’t already seen, so not too much of a cheat.

image

Samples of the controls styled with ‘sketch’ styling.

After the sketchflow player is uploaded a manager (or whomever) can annotate and export their comments/markings to send back to you.  Here is the export in progress:

image

You can extract common elements and reuse by converting them to user controls, where you can add additional functionality which propagates through to the rest of the app.

image

Stories for importing external resources, such as PhotoShop are strong. Import tool gives options for multi-layering or merged layers from doc to a single layer in Blend.  Transparency, paths, etc, supported.

image

The process goes back-and-forth from developer to previewer with feedback loop built into the player.  Adding behaviours now to the prototype to make it more functional.  Plays perfectly to the concept of having a prototype that can evolve.

image

Not fully sold on the idea of having a prototype evolve into a product, and not clear on how this would work in an agile story where we are continually doing things with iterative development.

Have to sign off for the day…watch it all live at:

http://msstudios-Live.wm.llnwd.net/msstudios_Live

Silverlight Firestarter Event

I am attending the Firestarter conference/seminar/introduction live…online; maybe next time I’ll be in Seattle.  I’ll try to keep updating this post as it goes on…

Scott Guthrie walks through a number of new Silverlight features, much as been out for a while, but some new nuggets in there too.  Really liking the tooling support that will come into play in Visual Studio 2010.

Along with the recent CDN and Doloto announcements, there are some exciting things coming soon.  I’m hoping they drop a bomb today and rock the .Net community.

Tim Heuer walks through a ton of key scenarios for Silverlight.

Great sample with multitouch, but I really wish this was a deeper level dive with better view of the SDK/libraries for this.

Big focus today on sandboxing, security.  Isolated storage overview: crypto APIs are available, don’t store the family jewels in isolated storage.

Adam Kinney doing a walkthrough of some real, but not terribly LOB-related, design scenarios.  The resourcing of brushes will be good for those not exposed to it previously.  Showing off some of the property editors available in the new bits.

Lol…Adam’s laptop just froze while presenting, making some good jokes and prodding his boss for a new laptop…

A good walkthough and a 10,000 foot view on how template binding comes into play…now onto some animations in Blend 3.  Showing off the easing functions now.

image

…also showing how you can animate the content presenter independent of the other animations:

image

Moving quicker now, getting into data binding, showing how live template editing is reflected as you work in Blend 3.

image

More complex data binding scenario with sort-of parent-child working with datalist and grid.

image

Good stuff coming now…working towards behaviours with a lemonade sample.  Some behaviours come packed in Blend, some online in gallery, or write your own.

Behaviours are a combination of triggers and storyboard actions. Some come loaded with properties, some are very basic (like drag drop behaviour).  Here’s a cup with a bunch of behaviours (you’ll have to see the downloadable content in a week or so to see what happens. Hint: cheeziness)

image

Sample running with keyboard-altering states, one cup of lemonade already drank.  Drunk?

image

Fielding questions now…good interoperability between some of the external design tools like Expression Design, Photoshop, etc, but no two-way support.  Once the file comes in, it’s in ‘one way’, and if it changes externally it will be destructive when re-importing. 

I would further suggest, however, that if you’re smart about how you import you would position your assets in resource dictionaries and build up code/animations around those resources instead of directly against what you import.

…session break…

TweetTalk right now is shaping up for a Firestarter on Azure, the cloud computing initiative from MS.  That would be a treat.

Firestarter Today in Redmond

But you can participate from home:

http://www.msdnevents.com/firestarter/online/index.html

If you’re into Silverlight development this is an event you won’t want to miss.  Keynote by ScottGu and Karl Shiflett is speaking with a new version of Xaml Power Toys.

Monday, September 14, 2009

Have to admit…

…I’m getting tired of seeing this five times a day:

image

Looks like it’s time for the Windows 7 upgrade.  I’ll start that tonight after work.

This is totally related to me forcing 32bit drivers on a 64bit OS, so, in that I’m not changing hardware, I’ll likely install Win7 32bit.

The biggest part of my day is spent in Visual Studio, for which there is no 64bit version (yet) so I’ll just hang back in the world of 32bittedness for the time being.