Monday, June 23, 2008

Dan has an article showing some nice syntactical sugar for spawning threads.  Dan has been studying the model of CCR, currently part of Robotics Studio.  The article specifically mentions the Compact Framework, but if you are doing full-framework development I would encourage you to check out the Parallel Extensions library as well.  It was mentioned at TechEd that the CCR might be refactored to use the TPL, so it'd be worth taking a peak at.  Using System.Threading.Tasks you could write code that starts to look less like the traditional ThreadStart code and more like what Dan is doing.  Without spending more than 30 seconds on this idea:

TaskCreationOptions tco = TaskCreationOptions.Detached;

TaskManagerPolicy tmp =

new TaskManagerPolicy(1, Environment.ProcessorCount,1,0, System.Threading.ThreadPriority.AboveNormal);

TaskManager tm = new TaskManager(tmp);

Task t = Task.Create(

(a) => { Console.WriteLine("doing some work"); },

tm, tco);

If we start to see some multi-core mobile processors, it might be an interesting excercise to port a subset of PFX to the Compact Framework.

Monday, June 23, 2008 12:05:23 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Sunday, June 08, 2008

I had done the attendee party at TechEd 2005, and was completely blown away by it then.  I had no idea they’d actually bought out all of universal studios for 3-4 hours, with complimentary food and booze every 100 feet or so.  This led me to have the same expectations for this year’s party, which unfortunately was still cool, but not nearly as cool as 2005.  It seems half the park was rented out to another event, and that half happened to include the Mummy ride and some other cool stuff.  I think 2005’s party was longer than 8-11pm.  Still, complaining aside, it’s a very fun event: free drinks all over place tons of food including giant BBQ turkey legs this year (you’d have to see it…) and lots of stuff to do including Terminator, Jaws, Men in Black, etc. 

I got several bits of merchandise for my daughter and some Microsoft crawlers for my son. 

Sunday, June 08, 2008 5:11:38 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Saturday, June 07, 2008

I did two very hard-core sessions on WPF today.  The first was with Tim Huckaby on WPF data visualization applications.  Some of the coolest WPF 3d that I’ve seen.  Oddly enough, he mentioned that the Scrips Research Institute had entered a patent last year that effective cures cancer.  The problem is that the host is killed 100% of the time too, but still very promising.

For the sub-genius line of business developer, WPF is the closest thing you can get to being paid to write video games without actually going back to C++ and slaving away in the video game industry.

Besides the formal sessions, one great aspect of TechEd is your ability to walk around the exhibition floor to talk with people from various teams at Microsoft.  I made it my mission to talk to as many people as possible.

·         ADO.Net Entity Framework:  Very cool.  The objects are not dumb CLR objects, but this MAY BE what I’ve been looking for.  I’ve always been a fan of the ORM and only once, in Java, did I have one (OJB) that I felt was the right mix of features and intrusiveness. I’m eagerly awaiting a production-ready MySQL EDM plugin.  In the mean while, to play with this, I think I’ll convert KlipschCorner.com to use this.  The programming model and LINQ queries felt very natural.

·         Visual Studio extensibility: there’s a World of Warcraft script plug-in for Visual Studio! 

·         ClickOnce: things are a lot better in SP1, but you still have issues with self-signed SSL certs and Internet+non NTLM authentication and of course keeping people from getting your bits if they shouldn’t have access.  It was good to see that people like Quicken and GoTo Meeting are using ClickOnce to deploy software over the Internet.

·         WPF: I met the principal architect behind XAML.  We looked at some amazing spatial data applications including:

o   Zurich airport: http://blogs.msdn.com/tims/archive/2007/03/27/great-wpf-applications-13-z-rich-airport.aspx  

o   iZooFari: http://www.interknowlogy.com/Pages/iZooFari.aspx

·         ArcCast : Let’s just say there was some friendly arguments and teasing.  You know who you are.

·        Live Earth: The bird’s eye view 3d maps are freaking insane.

Saturday, June 07, 2008 1:13:15 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Thursday, June 05, 2008

Ok, so, I found some great Silverlight tips on the afternoon of Day two courtesy of Jeff Prosise (http://www.wintellect.com/TechnicalBioDetail.aspx?Tech=5) .   I am definitely going to be taking his advice on some points and blogging about it as I convert my Beta 1 examples to Beta 2 examples.  Jeff had an implementation of The Game of Life in Silverlight that got me thinking about getting some Concurrency peanut butter into the Silverlight chocolate.  Would the LINQ based ray tracer work without too much modification in Silverlight?  Surely the Task Parallel Library will not work in Silverlight without serious modification and many things will likely not be available at all.  Still, I smell a side project: to what degree could we at least get Parallel.ForEach<> , Parallel.For, and perhaps some of the basic System.Threading.Tasks.Task things working in Silverlight 2.  Possible uses for this include a Silverlight based Folding @home style app and I’m sure there are others.

2008 TechEd MVP Party

I’m writing this on the morning after the 2008 MVP party, hosted in the Voodoo Room at the House of Blues in Orlando.  What a blast!  I showed up and realized that while I knew no one most other folks seemed to already know other MVPs.  Shortly thereafter Carl Franklin walked in the door.  Since I don’t get to meet Internet Famous people often, I said hi and thanked him for introducing me to Steely Dan with his rendition of Home at Last .  He seemed amused and gave me the big High Five when I said I actually bought Aja because of him. 

There were two guys there doing the whole Blues Brother s schtick.  It would seem not as many people came as RSVP’d, so I was able to call The Vanderboom and get him in to the party.  The lower attendance also meant that the free drink tickets flowed in a steady stream for all of us.  There are some pictures circulating of me swing-dancing with a woman who runs a user group in Seattle.  Hopefully no other incriminating evidence exists, everyone remaining when they kicked us out was getting wacky by that time. 

Thanks to Microsoft for putting this event on, and all the MVPs who came for a great time.

Thursday, June 05, 2008 10:01:14 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, June 04, 2008

This morning’s session with Stephen Toub on the parallel extensions to the .net framework was excellent.  Stephen had a  quad-core laptop that was enormous and hotter than the surface of the sun.  Intel’s quad-core mobile chips for laptops should be out this summer.  Anyone want to buy a used Vostro with a Core2 Duo?  He also had an early prototype of a system based on the Intel Dunnington architecture that appeared to have 20 cores.  I suddenly felt that my Quad Core setup at home was hardly adequate to do real concurrency research.

I owe him several comments and I hope my notes are adequate to remember all of them.  I brought some more questions I didn’t ask yesterday.

Q: Stephen has stated that the goal is for developers to extend System.Threading.Tasks.Task in order to do concurrency at a lower level than Parallel.ForEach<>, yet Task has an internal constructor keeping you from extending it.

A: The PFX team realized this during their internal code reviews and this will be fixed in a future CTP.

Q: In the ray-tracing example, you can see one of the pitfalls of static partitioning of workload.  Compare the top of the image vs. the bottom.  In ray-tracing the objects and reflective surfaces make for much more intensive computations, and so the top of the screen draws very quickly while the bottom of the screen fills in rather slowly.  Is thought going into hinting semantics that would allow users of PFX to indicate that certain units of execution have a greater “weight” relative to others?  Would you handle this by changing priority of some Task threads so Windows gives it extra cycles, or changing the static partitioning algorithms?

A: With the current Task API, you can set the priority of a Task, which ultimately means thread priority.  There is design discussion going on related to how we might be able to give hints to the TPL.

I just got out of a “deep dive” on the Silverlight 2 rendering pipelines.  There were some good debugging hints I didn’t know about, but other than that the dive was not as technical as I’d hoped.  Right now I’m in a social networking session led by Rob Howard, and then on to more Silverlight.

Wednesday, June 04, 2008 2:20:01 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  |  Trackback

Saw some more sessions last night, including one on data access layer encapsulation with the entity framework.  I need to dig into this more, maybe a hands on lab if I can find one.  It’s not clear from the examples how parent-child relationships are loaded by the entity framework and if both eager load and lazy load situations are supported.  I have such high hopes for the entity framework that there’s almost no way I won’t be disappointed on some front.  The only reason why I haven’t spent a day looking seriously at the bits in SP1 is because I’m mostly working on MySQL right now and the MySQL/.NET team has yet to produce EDM support.

I got an email from The Clarkin on Friday asking if I’d like a “Nice dinner on Microsoft”.  He wasn’t kidding and he is in fact my bestest friend forever for thinking of me.  Dan and I met a lot of Central region nerds at Charley’s Steak House and it was excellent.  I’m no Richard Campbell but I do tend to tend to get loud in a group, and I ended up giving an impromptu rundown of the French red wines from the menu, and we did a fair bit of sampling too, all courtesy of our excellent Evangelists from the Midwest. 

As I write this Stephen Toub’s Parallel Extensions talk is about to start.  I’m 100% full up on sessions until late tonight, and after that is the MVP party at the House of Blues, but I’ll try to sneak some more comments in today.

Wednesday, June 04, 2008 8:06:47 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, June 03, 2008

One thing I forgot to mention from the keynote this morning, and msftguy beat me to it.  Silverlight 2 Beta 2 will ship by the end of this week.  One thing Brian does not mention is that Somasegar claimed this version would have a go-live license.

Hopefully this means SL2 is nearly ready to ship.

Tuesday, June 03, 2008 3:09:33 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback

My flight got in pretty late last night and after fixing a shampoo leak I went down for a few drinks with the Vanderboom.  Despite going to bed at 1:30am and getting up at 6am, I woke up more rested than the average night of Ethan waking up constantly.

The first item of business this morning was the Keynote with Bill Gates, in his last public speaking appearance as a full-time Microsoft employee.  The Keynote was an extended version of the “Bill’s last day” video with several high level presentations by other MSFT folks and a Q&A with Bill at the end.  The highlight of the show was the “Ballmer Bot”, a robot that rolled out onto stage screaming “Developers, developers, developers…”

My first session this morning was Steve Teixeira on the Parallel Computing platform.  He showed several brief PFX demonstrations on Stephen Toub’s Quad-core laptop.  Stephen was present in the audience.    I hung around for quite a long time after this session was over talking to Stephen.  I asked if anyone at Microsoft was thinking about tipping over the sacred cow of thread affinity, specifically as it relates to the Holy Gui Thread.  You know, all those WinForms and WPF objects that you cannot touch from any other thread.  This seems like a serious bottleneck in the age of Many-Core computing.  The example I gave was potentially performing the calculations for animations on other threads.  Apparently, WPF almost did not go the static-apartment route, but there were a laundry list of issues with the OS/Shell having some baggage that ultimately drove that team back to the old ways.  A lot of people at Microsoft are thinking about this though, so that’s a good thing.  We also talked briefly about managing dependencies between parallel tasks, the PFX team definitely intends for us to make our units of work inherit from Task.  Stephen thinks we should be able to use the new “ContinueWith” semantics in the June CTP to handle executing a task-tree. (http://www.damonpayne.com/2008/04/03/ManagingConcurrencyWithTrees0.aspx )  I will investigate this, though perhaps not until the plane ride home. 

My next Silverlight session was full, so I’m going to look for another session to round out the day.  The Vanderboom and I are having dinner with MSFT Central Region folks at a nice steak house later.  You’ve gotta love these events.

Tuesday, June 03, 2008 1:50:08 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Thursday, May 29, 2008

The PFX team has announced their TechEd sessions.  I'm there.

http://blogs.msdn.com/pfxteam/archive/2008/05/28/8557291.aspx

Thursday, May 29, 2008 9:17:45 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, May 07, 2008

Looks like I'm going to TechEd!

Wednesday, May 07, 2008 12:09:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Sunday, June 12, 2005

Nothing super interesting to report from Friday: I saw a few of the obligatory ASP 2 demonstrations.  I don't know why I'm not tired of these yet.  Perhaps it is because I've done more web development than anything else in my career and its nice to see the developer story finally getting close to where I think it should be.

That wraps up TechEd for me.  All in all, I give it a B.  It accomplished my goal of getting me excited about work again, but a lot of the content was not as in-depth as I would have liked.  I think I'd like to try doing one conference a year.  Next year I think I might try the PDC.

Now that I'm back I have a to-do list a mile long, including catching up on all my side work and trying to make up as much of the 40 hours I missed last week as I can.

Sunday, June 12, 2005 12:33:07 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  |  Trackback
 Friday, June 10, 2005

I was going to post about all the architecture talks I attended Thursday, and about how I feel we need to adopt more rigorous language when describing what an Architecture is and what the attributes of an Architecture are.

But, instead, I will save that for later and talk about the attendee party.

In the 90s I managed to miss all the craz JavaOne parties and such so TechEd was a big deal to me.  For the attendee party Microsoft rented Universal Studios exclusively for TechEd attendees and their guests.  The rides were running but the park was empty except for us.  Jen and I were able to go on every ride we cared about and some of them twice, with just 10 minute waits.  How cool is that?  I would definately say Universal Studios probably isn't worth the price of admission with the two hour lines, but without the lines it was really a great time.  Not only did we have the place to ourselves but there were stands placed every 50 feet or so with free beer, wine, and chewy pretzels.  Needless to say, we had a great time and didn't get home until late and I missed my Friday morning talk concerning management and the SOA enterprise.

Friday, June 10, 2005 7:57:31 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Thursday, June 09, 2005

 I saw several good talks yesterday but by far the most interesting was Jocham Seemann's talk about the Domain Specific Language tools they are working on for Visual Studio 2005. (Side note: he must not have grown up in the US, I did not see the battle scars he would certainly have acquired defending himself and his name) The idea behind the DSL tools is to provide a common set of Designer tools. Designers tend to have common elements such as shapes, decorations, and connectors. Consider an ER modeling tool vs. a UML class diagram tool: their basic notions are similar but the exact semantics differ. Using the DSL tools you define the semantics of your custom language. You detail what entities are in your domain space, what attributes they have, what types of connections they can have to what other entities, etc.

The DSL tools have a lot of built in support for code generation, using an ASP-like tag syntax, similar to CodeSmith as well.  The tools allow you to define validation rules and such as well, and handles persistence of your models for you.  Once your tool is done, you can click a button to build a visual studio add in so that other developers working within your problem space can use your Domain Specific Language.

My question is why stop there?  Why limit the use of this tool to visual studio users?  Suppose you work in a business with a fairly well defined domain, such as selling mutual funds for a specific company.  If you could define your domain entities, attributes, connections, rules, etc and then put this tool into the hands of people like, oh, say, business analysts you may have a very powerful code-generation and/or documentation tool that is usable by the people who supposedly know the business best.  I have built some custom designers in .NET 1.1 and its not exactly easy, a "Generic DSL" tool would be an interesting challenge and potentially a very useful product to a business as well.  I'll have to dig up the DSL team's URL out of my notes and download the DSL plugin for Visual Studio 2005.

 

In other news: Microsoft released a June 2005 update for the Managed DirectX SDK.  The first time I downloaded it a resource bundle seemed to be missing and it didn't work.

Thursday, June 09, 2005 9:28:12 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  |  Trackback
 Wednesday, June 08, 2005
Saw some excellent sessions at TechEd on Tuesday.  The first was by a blogger I've been reading for a while, Scott Hanselman.  Scott has a lot of interesting and humerous observations on his site, including such gems as "Can we use WS-Powerpoint for this" and various Zen mantras related to .NET coding.  Then quotes in his powerpoint reminded me of something I've been into for a long time, which is writing Haiku about topics such as coding and everyday life. For example
Asynchronous call
Such an efficient method
Of getting work done

I should really poste more .NET related Haiku, as I'm sure its something that would benefit the community immensly.  Back to Scott's talk: the topic was about code generation.  I've been getting more interested in this ever since a local client disallowed me to use a CG tool to generate Types from a datastore.  I'm like a small child that way, making it forbidden makes me want to do it more.  Scott showed a lot of interesting code generation best practices and ideas including:

  • Generating Big word docs as part of your build process
  • Generating unit tests and CHM files along with your code
  • naming conventions to indicate what files are generated
  • Using XSD and WSDL for creating your Domain Specific Languages
  • How to make your own XSD files available to VS 2003 so you have intellisense support

And a lot more.  The most interesting part is that Scott did all this in VS 2003, no built in DSL support or partial classes.  I became interested enough in this to switch one of my sessions on Wednesday to a talk on the DSL support in VS 2005.

My favorite talk of the day had to be one concerning adding voice support to mobile devices using Speech Server.  This is something casey has been using for a while and had good success with.  It still amazes me sometimes how Microsoft can take some incredibly complex problem spaces and make them accessible to almost anyone.  The speech server model is a web-application model, and adding SALT-like support to your pages is incredibly straight forward.

There is simply too much to learn.

Wednesday, June 08, 2005 10:37:17 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Monday, June 06, 2005

Today was a day of many meetings at the Orange County Convention center.  I met some people from some newsgroups that I have previously known only through posting.  Steve Ballmer is really an excellent speaker, I have not seen him before but was duly impressed.  Before the keynote was over I had ran into Eric Michel, Gerry Heidenreich and Scott Isaacs.

The first session I attended was an architecture talk concerning some best practices for Office system solutions, this turned out to be a yawner.  A later session was an intro to Info Path which was a little more interesting.  The best parts of the day were talking to various people in Microsoft booths.  I'm looking forward to tomorrow's sessions much more.

Monday, June 06, 2005 7:04:40 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback

It smells like Microsoft here.  There's a lot of energy as all the eager geeks pace about the floor with their coffee and donuts, anticipating Balmer's Key Note.  There must be something in the air because I'm feeling more pro-Microsoft at the moment than I ever have before.  If Bill were to walk up to me right now and ask if I'd like to graft a copy of Windows into my DNA I'd probably agree.

Seriously, its very cool being here.  I have to give a shout out to SafeNet for sending me.  I'm going to go see what they are playing on the 30 ft. Xbox screen and get ready for the opening address.  I'll bring the camera tomorrow.

Monday, June 06, 2005 5:54:40 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Saturday, June 04, 2005

Well we are in Florida in a nice hotel with a not so nice internet connection.  No hard-wire in my room so I'm sitting in the lobby.  Bah. Seriously folks, what year is it?  I have already learned something on this trip: My Laptop + Beta 2 + no plugin on the plane = battery dead in 40 minutes flat.  Nice.  I know that a couple of other Wisconsin people are around so maybe I'll hook up with them this coming week.

As I mentioned in the "Simulation" article I have some fabolous (cough) graphics in a Direct 3D game I'm using as a simulation for various theory testing.  The next step was to implement some kind of AI so that the bad guys shoot back at me.  I'm almost done with the pre-simulation-simulation-tester for my neural net.  Why a neural net?  I should say before optionsScalper slams me for mis-applying the idea, wait for my next post where I justify why this notion is very fitting for mimicing how a human would look at something on a screen and try to guess at a trajectory and how to acheive it.  Stay tuned.

.NET | TechEd
Saturday, June 04, 2005 7:15:22 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Thursday, June 02, 2005

The TechEd plane leaves early Saturday morning.  I truly loathe flying in post 9/11 America but not as much as I loathe long car trips.  The Family is coming with me which will to some degree affect the amount of geekery that I am able to participate in but I am very much looking forward to these sessions.  I'm sort of hoping I can finish one of my side projects in between sessions and leave more time for interesting research when I get home.  I should be able to get to the next stage of my simulation on the plane ride down there.

Thursday, June 02, 2005 12:06:39 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Friday, May 13, 2005
TechEd Schedule
Thursday, May 12, 2005 11:00:00 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |  Trackback