Skip Navigation Links
Search site. 
Powered by Google
Darren Neimke (Me)

My Book

Readify

">ASP.NET MVP


Interesting Portals 

NetVibes
This portal feels similar to PageFlakes in many ways but I love their gallery. They also have a feature whre certain chrome elements only become visible when you hover over the web part.

Xtra
A New Zealand news portal. I especially liked the content rotator web part at the top of the middle row. Seems like a nice way to allow a user to browse through data.

 

Posts Archive 

Posts for: Aug 2007

A way to build .NET 3.5 Applications with Team Build 2005

Have you downloaded VS2008 and started using it to create .NET 3.5 solutions?  Pretty cool huh... inbuilt support for ASP.NET Ajax projects and all the goodness that we get from Linq too.  What about your development environment?  Are you using TFS to manage your source control and build processes?  If you answered "yes" to both of those questions then I'll bet that, like me, you've been horrified to learn that you cannot build Visual Studio 2008 and .NET 3.5 projects natively with your existing TFS 2005 environment. 

Thankfully, over on the TFSNow blog, Mitch has just posted the following article which comes to the rescue:

Building .NET 3.5 Applications with Team Build 2005 « TFS Now

I'm so grateful to Mitch for spelunking his way around to find these solutions for us.  Over the past 2 weeks, as we've started developing VS2008 solutions which target the .NET 3.5 runtime, it's been very frustrating not having CI and all the goodness that comes with doing automated builds.  Now thanks to Mitch we can forge ahead using .NET 3.5 with all its Linq'y goodness while still being able to keep our automated build and deployment processes in place.  That's what I call having your cake and eating it too! cake

posted on 9/1/2007 9:36:48 AM ( 1 Comments )


Silverlight meeting in SL tonight

Event Details:

Guest Speaker: Brad Abrams, Group Program Manager, .NET Framework

When: Thursday, August 30th, 3 – 4 PM PST

Where: Visual Studio Island Auditorium in Second Life

 

Here’s the SLURL:http://slurl.com/secondlife/Microsoft/101/123/30/

 

Here’s a Silverlight poster that you can get for free from in the auditorium:

posted on 8/30/2007 4:32:28 PM ( 0 Comments )


Displaying added effects with a Context Menu in Virtual Earth

I've been playing around with Virtual Earth a lot lately for a new, personal web application that I'm writing.  Writing this application has been a great learning experience as I'm using .NET 3.5 in VS2008 Beta 2, Virtual Earth, Silverlight, and plenty of ASP.NET Ajax goodness.  The application is a real client-centric beauty - actually there's only a Default.aspx page with a map on it at this stage, the rest is all driven in the client with async web service calls... the lot! smile_regular

Working with the map has been an especially good experience, and it takes a bit to get into the new paradigm of navigating between locations on a map as opposed to navigating to different pages in a typical web site.

Anyways, today I added some effects that I thought worthy of blogging, so here goes... First, I added a context menu that appears when you right click on the map to display extra functions that the user can use.  Displaying a context menu is a simple matter of attaching to the onclilck event of the map:

this._map.AttachEvent("onclick", this.MapClickHandler);

In your handler function 'MapClickHandler' you can then check for the right button and display some UI for a context menu:

if( e.rightMouseButton ) {
    this._ContextMenu.Show(e.clientX, e.clientY, e.zoomLevel) ;
}

There's a good article here which shows how to do this, but you'll want to use the JavaScript that I've shown above instead of theirs, as mine works against the V5 version of the VirtualEarth API.  The article is good for showing a nice, simple context menu UI though, so go have a read of it.  The context menu ends up looking like this:

The next thing that I wanted to do was to add a little dot when you right click to display the context menu to better visualize the selection.  This is the same behavior as the little red dot that you see when you right click on the map at http://local.live.com/ - notice the little red dot at the top left corner of the context menu in the following image:

Live Maps

To achieve this effect, I inserted some code when handling the right mouse click to display a DIV with the appearance that I wanted:

if( e.rightMouseButton ) {
    this._DisplayDot(e.clientX, e.clientY) ;
    this._ContextMenu.Show(e.clientX, e.clientY, e.zoomLevel) ;
}else{
    this._HideDot() ;
    this._ContextMenu.Hide() ;

}

The _DisplayDot function looks like so:

_DisplayDot: function(clientX, clientY) {
    var dotselected = $get("dotselected") ;
    dotselected.style.display='block'; 
    dotselected.style.left = clientX - 5;
    dotselected.style.top = clientY - 5;

}

As you can see, it simply uses the $get function to get a hold of the DIV instance and then sets it to visible.  And Hiding it is just as simple...

_HideDot: function() {
    var dotselected = $get("dotselected") ;
    dotselected.style.display='none'; 
}

The next thing that I wanted to do was to ensure that the map zooms to where you right click when you choose Zoom from the context menu.  A lot of mapping apps don't do this, but it's definitely what I would class as expected behavior.  This is done by storing the co-ordinates when the ContextMenu is created like so:

if( e.rightMouseButton ) {
    this._DisplayDot(e.clientX, e.clientY) ;
    this._ContextMenu.Show(e.clientX, e.clientY, e.zoomLevel) ;
    var pixel = new VEPixel(e.mapX - 5, e.mapY - 5);
    this._selectedLL = this._map.PixelToLatLong(pixel);
}else{
    this._HideDot(e.clientX, e.clientY) ;
    this._ContextMenu.Hide() ;
    this._selectedLL = null ;
}

Doing this stores the LatLong so that it is available for any of the callback handlers for your context menu functions.  An example of how this might be used can be seen in this context menu function that I have for zooming to street level:

ZoomToCityLevel: function() {
    this._map.SetCenterAndZoom(this._selectedLL, 12);
    this._contextMenu.Hide() ;
    this._HideDot() ;
    this._selectedLL = null ;
}

When the user clicks on a custom context menu function I call this function which sets the map's zoom level to '12' and centers the map based on the stored co-ordinates that we collected when they right-clicked on the map.  This gives the desired effect of zooming to city level and scrolling the map to where the user selected - as opposed to simply zooming, which would zoom to the currently centered location, which might not have been anywhere near where the user clicked.

Anyways, a long post, but I hope that it helps someone, somewhere smile_regular

posted on 8/27/2007 11:21:26 PM ( 2 Comments )


Building Technical Communities

Greg's book has hit the virtual shelves: 

Book: The Rational Guide To Building Technical Communities - The Bit Bucket

I had the good fortune of reading this for Greg while he was writing it and I have to say that it's an invaluable guide to technical communities.  I loved the approach that Greg took by writing shorter chapters that are packed full of good advice and pragmatism.  Every chapter taught me something that was valuable and I found that I didn't have to wade through the endless crap that you get with the standard 30 page per chapter approach that tends to be the norm.

Highly recommended.

posted on 8/25/2007 2:36:53 PM ( 0 Comments )


Building VS2008 projects with TFS

Last night I rang Mitch and I was very Sad, I actually thought that I was going to Crying there was no joy in the world and things were basically Lighting.  Tonight, because of this post, I am Smile again... no, make that Open-mouthed and Nerd.  Mitch, you are Hot

Let me say it... Mitch, when it comes to TFS and .NET, you are Thumbs-up, and if you were here right now I'd give you a great big Red Lips

posted on 8/22/2007 11:04:15 PM ( 1 Comments )


.NET 3.0 Cornucopia: Silverlight 1.1 in Action - The Book Cover

Chad Campbell just blogged the cover for his upcoming Silverlight book. 

Today I officially selected the cover for my upcoming book "Silverlight 1.1 in Action". Here it is:

.NET 3.0 Cornucopia: Silverlight 1.1 in Action - The Book Cover

Cool book, cool cover smile_regular

posted on 8/18/2007 9:06:54 AM ( 1 Comments )


Learn how to manage people

You don't scale.  Get it?  No matter what you do, there will only ever be one of you and you are therefore limited in what you can achieve. 

Presuming that you have limits to both the physical speed at which you can execute tasks from your "stack" and that you also require meals and sleep, then you don't really have much available time to do stuff, do you.  Maybe less than 15 hours per day... not much at all really.

If you are smart then you might realize that this means there is a limit to the number of things that you can do - which means that you don't scale. 

The only way to scale is to learn how to manage other people - which means learning how to communicate with them and delegate to them.

You don't scale.

posted on 8/17/2007 7:45:40 AM ( 7 Comments )


Restart Manager in VS 2008

I woke up this morning after a hard night coding and noticed that my laptop had restarted after some automatic Windows Updates were applied overnight.  How did I know this?  Well I knew because VS 2008 told me that it was restarting and wanted to know whether I wished to recover my files.  Daniel Moth has a screenshot of this here.  RestartManager should be a certain feature if you are implementing any current Windows application (and have sufficient resources smile_regular - we'd actually planned to implement it in EagleEye but then had some resourcing pulled at the last minute smile_sad). 

posted on 8/16/2007 8:16:32 AM ( 2 Comments )


Microsoft SkyDrive blog - how NOT to have a conversation in the blogsphere

I'm constantly amazed when I see the new product teams in Redmond getting started with their brand new shiny blogs.  They invariably write an excited post - like this one - telling the world about their new product and how excited they are to be able to have a blog so that they can have a conversation with the punters about it.  Hot on the heels of this magical first post by a new product team, other influential bloggers from Redmond start pimping it from their blogs saying how cool it is to see product X being blogged about.  I've seen this on a number of occasions now, the BizTalk services in the cloud blog was probably the most recent example. 

After the initial excitement of getting their first blog post out of the way, these teams then seem to get writers block or something because quite often it's the last post of any substance that we see. 

This post by the SkyDrive team really bothers me because it's their initial post and people have followed up by posting 80 comments (mostly "when will this be available in my region") and not a single reply from the team.   That just sucks, but is in line with the other stellar communication efforts that I've seen from teams working underneath the Live brand.

posted on 8/14/2007 9:28:35 AM ( 3 Comments )


We have met the commuter and he is us

Going clear back to 2001, we can see Seattle's traffic has been nearly the "worst in the nation".  This clearly indicates that this horrible wound that is crippling our economy is purely self-inflicted.  Further, it is a strong indication that the billions we are spending expanding our freeways (and not maintaining others) is wasted on people who cannot fathom that they are the problem.

This is an interesting article about how it can often take an extremely disruptive influence to change people's bad habits.  My friends think that I am crazy when I'm often heard to say that I hope the price of crude oil goes to $150 per barrel, but I think that it's a similar thing.  People so often need major external stimulation before they are willing to change their bad and even self-destructive habits.

posted on 8/14/2007 8:52:24 AM ( 1 Comments )


What Google Gears really is.

A couple of months ago I opened Google Reader and was presented with a message from the web site that there was now an option of working with my reader while offline.  To do this I was required to download a small, client-side program called Google Gears.  The idea sounded cool enough so I installed the program pretty much straight away.  In the following 5 or 6 weeks that I had "Gears" installed, I discovered that browsing the web in offline mode is obviously not a scenario that I'm all that interested in, because I think that I tried it once - and it didn't work because opening the web page in either offline or online mode while I was disconnected gave me errors.  So I uninstalled it without ever having enjoyed that experience that I was expecting.

Having thought about it some more I don't really think that we'll ever really work with web pages while in disconnected mode.  Instead, we'll use smart client applications that allow us to achieve certain goals while disconnected such as some of the applications that we are seeing underneath the Live brand such as Live Writer and Live Mail.

It's worth dissecting Google Gears though because if it's just something that allows you to browse the web in disconnected mode, and I don't believe that that is such a key scenario, then either I'm wrong or Google is - and quite frankly, I don't believe that I'm that smart. Nerd

Google Gears is essentially 3 things:

  1. A client-side persistence store for storing large amounts of data.
  2. A technology that enables an offline browsing experience in the browser.
  3. Enables the scenario of querying data in the client using SQL syntax.

I've already discounted point #2 as not that important, so let's focus on points #1 and #3.

Storing larger amounts of data on the client

This is a key scenario as we look to create richer web experiences for our end users.  Here's a couple of scenario's where having a larger client-side cache of data is very important.

Saving draft copies of documents

Whether they are personal articles such as blog articles and emails, or business documents, we are all using the the web to create and update documents a lot more these days.  And if you've ever had the experience that I have, where you've just finished writing a large document in the browser only to have it crash on you, then you will understand exactly how important it is, to be able to save draft copies of documents as you are working with them.  To do this now would require saving the data on a server somewhere, thus making it impossible to continue working with the document when you go offline.  With a client-side cache, you could start writing a document in the browser while online and then continue later in offline mode by accessing the document via a smart client application.  Either way, having a draft copy would mean that the experience of losing data could be a thing of the past.

Providing a better application experience

While at Tech.Ed last week, I had the pleasure of attending Dan Green's presentation on UX.  It was a very stimulatory (yep, a made up word Smile) and during it he gave the example of how the Visual Studio intellisense engine remembers our previous choices - and therefore when we repeatedly re-access certain members, they are already pre-selected for us.  Consider when you do lots of Console.WriteLine's in a row just how easy it is to simply accept the defaults that are thrown up at you by Intellisense, without having to constantly scan a list from the top each time. 

In the same way it would be nice to provide a richer experience to users of web applications by storing more defaults and settings in the client.  With the size limitations of cookie's, storing a large cache of preference settings in the past has been unreliable or impossible - and so having a client-side database would alleviate these types of issues and would allow us to provide much richer client experiences, similar to that of the Intellisense scenario.

Querying data in the client using SQL syntax 

For certain types of applications - such as mail - having the ability to query data in the client is an important optimization.  I imagine that Google came up with this idea through features that they had to provide with their GMail application.  For an application that works in the browser - such as GMail - it would be quite costly to send such large amounts of data back and forth between the server and the browser whenever you wanted to work with it.  However pushing the logic down into the client would increase the client-side complexity for certain operations like sorting and finding data.  For these types of scenarios, having the ability to work with data via SQL statements in the client is highly desirable.

Silverlight

In Silverlight 1.1 we will have the ability to write managed code which runs on the client, and as a part of this we will initially have access to an IsolatedStorage implementation.  This will solve the first problem of having a larger client-side cache of data.  I'm not sure about Linq and Silverlight but if we were to get Linq capabilities in Silverlight then many of the features that Google Gears delivers will actually be present within Silverlight itself.

posted on 8/12/2007 9:29:54 PM ( 0 Comments )


Picture of Frank Arrigo kissing another man

OK, so technically there was no kiss Smile

Mitch, Grant, Frank

Here in the Expo hall at Tech.Ed there's an area called the Blogger's Lounge where bloggers can go to chill out and do some blogging - a sort of inflection point for blogging and ideas.  While sitting here a minute ago I was chatting with Mitch, Grant, and Frank about how things had been going so far... very nice Smile

posted on 8/9/2007 3:12:57 PM ( 0 Comments )


Tom Hollander Software factory session

I just attended Tom Hollander's Software Factory session - a nice presentation but still not a set of technologies that we'll be using in the Dev Centre any time soon:

Tom Hollander

I kinda challenged Tom about what I see as either an NIH syndrome by the P&P team or a poor prioritization of features.  I personally feel that there's a focus on building designers and code generators and not much focus on integrating with the tools that we actually use in real projects.  A good point here was that Tom mentioned that there are plans for greater integration with TFS work items in the future (why wasn't this delivered in this release instead of new designers?).

Tom did mention a post on his blog about reuse which looks interesting:

Tom Hollander's blog : The Seven Deadly Sins of Reusable Asset Development

posted on 8/9/2007 12:42:29 PM ( 0 Comments )


Tech.Ed Day 2: SaaS, SOA

Michael Platt, Director, Web App Architecture, Microsoft US: 

SOA, SaaS talk at Tech.Ed day 2

Michael gave a talk about SOA, SaaS, and Web 2.0 which was very informative - what would you expect from a guy who has major insights into the architecture behind things such as the Live brand!  It's great to be able to hear from this caliber of people.

Michael's point was not that SOA, SaaS, or Web 2.0 are "it"... Microsoft's definition of the new model is S+S (Software + Services - think iTunes).

During the talk Michael said that he see's massive opportunities in the near future for (personal) devices that take personal data and push it up to the cloud - maybe a SPOT-style watch which can monitor your heart and send data to a service that your doctor subscribes to.  Because of this, I approached Michael after the talk and asked whether the Live platform will provide the ability to easily deploy agent software that might act on behalf of users.

I think that Live needs something like this - similar to how Facebook allows front-end application developers to plug-in, Live needs to allow agents (or broker software) to be deployed into the cloud to carry out the business of consumers.  In this way you might build an agent which does the monitoring of your health signs and does the job of notifying your GP when certain triggers are met.  Michael was in agreement with me on this point.

Interestingly I spoke to Tatham about this after the session and he pointed me at this article that he wrote last week (coincidentally I already had it bookmarked to read) which would allow developers and consumers to build this sort of agent-style of applications over the Live Contacts database today.

 

Note: Thanks also to Tatham for this blog post.

Note(1): Frank has posted a list of links to blogs about what happened yesterday:

http://blogs.msdn.com/frankarr/archive/2007/08/09/barely-had-time-to-stop-and-teched-day-2-starts.aspx

posted on 8/9/2007 11:36:09 AM ( 0 Comments )


Tech.Ed Day 1: Bloggers Lunch - Web 2.0

Today I was fortunate enough to have been on a panel as part of a conversation about Web 2.0.  Nick Hodge has all the details of the questions and answers, plus a bunch of photo's here:

http://www.nickhodge.com/blog/archives/2035

Long Zheng has more photo's here:

http://www.istartedsomething.com/20070808/teched-day-1-bloggers-lunch/

posted on 8/8/2007 9:42:05 PM ( 0 Comments )


The best coverage of the Tech.Ed keynote

Long Zheng has the best coverage of the Tech.Ed keynote.  Read and watch his post about it here.

posted on 8/8/2007 9:30:03 PM ( 0 Comments )


At Tech.Ed AU

I've just left the keynote where we saw an awesome keynote speech by Michael Twigg of AnimalLogic.  AnimalLogic is an Australian-based company who did CGI special effects for movies such as The 300, and Happy Feet.  Michael spoke to us about how they put these kinds of productions together and explained some of the methodology that allows movie directors to interact with the digital process in the same kind of dynamic way that they interact with actors and the process in the real world.

Right now I'm sitting down watching Nikhil talk about Ajax design patterns:

Nikhil Kothari at Tech.Ed AU

posted on 8/8/2007 10:14:15 AM ( 2 Comments )


Revolution Systems Blog: A Guide to Hiring Programmers: The High Cost of Low Quality

A good read: Revolution Systems Blog: A Guide to Hiring Programmers: The High Cost of Low Quality

posted on 8/6/2007 10:28:09 PM ( 0 Comments )


My Tech.Ed schedule

Grant offered up his Tech.Ed schedule here so I thought I'd blog mine too...

My tech.ed schedule (roughly)

posted on 8/6/2007 8:32:38 PM ( 0 Comments )


Introducing the Readify Developer Network

Greg has announced the Readify Developer Network (RDN): 

Announcing the Readify Developer Network - The Bit Bucket

I'm so glad to see the RDN reach this stage of its life and think that it will be a great addition to both Readify, as well as the broader developer community.  From memory I have a talk about managing the development process, but there are heaps of great talks from people such as Damo (Silverlight), Greg (SQL Server 2008), Paul Stovell (Domain Modelling), Bill Chesnut (BizTalk + WCF) and Richard Banks (Agile, Team Development), to name just a few.

Please read Greg's post at the above link to learn all about RDN and follow the link to RDN on our website to learn about the 2-tiers of presentations that we have: ReadiDepth and ReadiPrimer.

Woot! smile_regular

posted on 8/6/2007 6:06:16 PM ( 0 Comments )


The day of Dilberts?

It must be the day of Dilbert, because as soon as I posted this,  I opened my blog reader and saw that bernardoh posted this, to which Long Zheng replied with this.

posted on 8/6/2007 3:12:21 PM ( 0 Comments )


Not sharing information...

... is often like trying to keep the secret for making mud to yourself:

Dilbert making mud

On the other hand, sharing information often leads to finding better ways of doing things!

posted on 8/6/2007 2:52:01 PM ( 0 Comments )


Windows Live Agents - Sign Up Now For The SDK

This sounds interesting: 

Windows Live Agents - Sign Up Now For The SDK - LiveSide - Developer Blog

An SDK for creating Messenger bots.  Mitch, this sounds like something that you should follow up.

posted on 8/3/2007 8:54:01 AM ( 5 Comments )


Tech.Ed AU Blogger Lunch - Discuss Web 2.0 and Social Networking

As Frank blogged yesterday, there will be a blogger's lunch on Wednesday at Tech.Ed next week to discuss Web 2.0 and Social Networking.  I'm on the panel with 4 others:

Panelists

What a great opportunity to discuss Web 2.0 and ponder what it means for traditional media.  If you'd like to take part in this discussion then Frank has also blogged what you need to do to register for the event here.

What do you think?  Is Web 2.0 worth all the hype?  In what area of your life does "Web 2.0" have the biggest impact?

posted on 8/3/2007 8:17:13 AM ( 1 Comments )