i had a great time at the day i attended at the portland code camp! i'm sorry for those who couldn't make it, you missed out! we also had a great time at the kennedy school afterwards on saturday (an old elementary school transformed into a bar, restaurant, movie theater, hotel, etc. -- very cool, all the insides of the school left in tact).

i delivered 3 presentations at the saturday session of code camp: virtual earth, sidebar gadgets and popfly. first and foremost, thank you for those that attended my sessions (i apologize for the room changes again), i hope you learned at least one thing new...even if it was small.

as promised, i said i'd post my code/etc. after the sessions, so...

a lap around virtual earth

of all the live platform services, i really enjoy virtual earth the most. i'm not sure why, maybe it's the interactiveness (is that a word) of it...whatever it is, it makes me feel all fuzzy inside and i find myself trying to inject maps into everything i do...not really, but sometimes. the code that i demonstrated in the session is included in the zip file below...both the web application code as well as the winform code we didn't get a chance to dig deeper into. additionally, the slides are included (all 5 of them), and i'm sure 4 of them are not helpful, but included them for the resources slide mainly. as i mentioned, for virtual earth, the #1 resource for virtual earth development is the interactive sdk in my opinion.

i hope i made it clear that virtual earth is something that can be leveraged in any application, not just asp.net or windows forms application. because of the nature of the api, it can be used on any platform: .net, php, jsp, jsf, rails, plain-ol-html, whatever. one thing that was also announced at the mix conference was the licensing terms of the live services platform. the licenses have changed, making them very attractive for everyone to consume and confident to the app builder that there is stability behind the platform. virtual earth is free (free as in read the license) to use in applications that are public facing...it really is a great platform and with the licensing makes it more attractive than some competitors...take a look.

i also briefly mentioned a provider framework i had monkeyed with a while back for geocode providers. it is currently hosted on the gotdotnet platform (which is planned to be phased out), but there is a link on my blog describing it...see it here if you are interested.

i also demonstrated two applications that i participated in that make use of this technology in addition to asp.net ajax and the asp.net ajax control toolkit. here they are here:

TechTalkLunch -- a new phenomena spreading like wildfire across the country...or it should. allow me to explain the concept a little bit. similar to nerd dinners (which those in portland should be familiar with), this was started by a group of entrepreneurs who met weekly for lunch to talk about small biz stuff, etc. they decided it was good to involve the greater technical community. now, once a week (on wednesdays), a bunch of geeks meet at a place for lunch and chat. there aren't any presentations, nobody brings their laptops (not that you couldn't), no "topic" exists, it is simply a chance to socialize a bit more, and talk...a novel concept i know. i've met a lot of new people this way and recommend you do it in your area -- lunch usually works better for most as well ... it likely isn't taking personal time away. the site link above is a sample site only (not real data) to demonstrate technical stuff -- stay tuned for the official site where you can search/add your own lunch for your community area.

okay, rant over -- the techlunch site uses asp.net ajax and the control toolkit, virtual earth (v5), sql 2005 proximity searching, etc. one thing i failed to demonstrate in that sample was that as you move the map around, it is responding to events to start showing you relevant data to the map view. for example, if you search on 85281, you'll see some lunch points...but if you scroll the map north, you'll start to see a few more appear...showing relevant point information as it comes into a view that makes sense to the user.

Sex Offender Search -- a prototype that i build for the area where i live to search publically available sex offender information. this mashup makes use of virtual earth (version 4), custom pushpins/hovers, sql server 2005 and proximity searching, my geocode provider for asp.net (geocode information provided by yahoo apis), asp.net ajax for web service communication and json object parsing. you can use 85242 as a sample zip code

i'm also attaching my slides here (again, all few of them, none of which helpful but the resources). in the session we didn't really create one from scratch (but i hope it was still informative in the sporadic nature :-)), so there wasn't a chance of walking through some of the gadget-specific javascript api's. allow me to take a moment and give you an example, maybe a lame one, but one nonetheless. first, install my gadget template for visual studio, then create a new gadget (remember the tip, create it in the <user>\AppData\Local\Microsoft\Windows Sidebar\Gadgets folder and let's call it "ContactEmitter.gadget" (remember to include .gadget for easy debugging). once you've done that, change nothing, but go into en-US\gadget.html and put this line of code after the javascript where it is setting the settingsUI line (which is line 7 in the template):

1: function showContacts()

2: {

3: var colc = System.ContactManager.Contacts;

4: var listing = document.getElementById("list");

5: listing.innerHTML = "";

6:

7: for (i=0; i<colc.count; i++)

8: {

9: listing.innerHTML += colc.item(i).name + "<br/>";

10: }

11:

12: colc = null;

13: listing = null;

14: }

then in the "undocked" <div> element add this:

1: <divid="list"></div>

2: <inputtype="button"value="iterate"onclick="showContacts();"/>

then add the gadget to your sidebar and move to undocked state...<borat_voice>so nice</borat_voice> -- now you have a sample that integrates with the Windows Contacts of Vista (like me, you probably have none in there -- but play around with adding, etc. and click the button again, you'll see it working, trust me) -- if you don't believe me, it should look something like this:

i hope that helps -- take a look at the gadget sources, look at http://gallery.live.com for some more samples...remember CASE ;-)!

thanks for sticking around as well for the bonus popfly session. i am really excited about popfly for a few reasons. it really demonstrates some of the power of silverlight in an application that mixes ajax, html, input controls, animation, etc. in one. it also enables very rapid mashup creation. visit the microsoft popfly site for more information and to view some videos if you missed our session (we emulated building twittervision.com in about < 30 seconds -- and as someone pointed out with me talking -- using popfly). the sdk is also on the site. thanks to those who requested an invite and i'm promising to do the best i can to distribute (and get more) invites!

a special thanks to the community leaders

the best part of my job is interacting with the technical communities...this is where it is at...people sharing, collaborating, and learning. the mechanism of user groups, tech talk lunches, nerd dinners, code camps, bar camps, and whatever have, in my opinion, proven very valuable to the communities. i appreciated those who took the time to help be a part of this code camp (and others) by volunteering, organizing, sponsoring, flying in and presenting, and simply being there. you are doing a great service to the greater technical community by participating and sharing. sure, code camps, etc. don't have the massive organizations behind them (and there likely won't be plates in between breaks with snickers and sodas), but that is sorta the point...for the community, by the community. that is what makes it great. if you have complaints about community interaction and organization, there is a simple solution to that -- get involved! if you don't, then i politely ask you to shut your trap -- and i mean that in the nicest way :-) but seriously, mad props to those who donate their personal times away from friends, family and work to help out for us all -- big ups to you all.