| Comments

Two SDK libraries have released this week, helping developers integrate Silverlight experiences into their applications.

Bing Maps Silverlight Control

At TechEd Europe, the Bing Maps team released version 1.0 of the official Bing Maps Silverlight Control!  This is a replacement for the previous Virtual Earth Javascript control and provides a great DeepZoom experience for using the mapping platform.  Here’s some of the great features for Silverlight developers:

  • Built on Silverlight 3!
  • Designer support for Expression Blend
  • Support for out-of-browser
  • Vector in Pushpin class
  • Data binding – much needed and welcomed
  • UI enhancements (animations for simple features)
  • Embeddable maps

Great release, and a great addition to any Silverlight developer’s toolbox.

Bing Maps in Silverlight using Layer shapes

Download the SDK here: Bing Maps Silverlight Control SDK and check out the interactive SDK.

Facebook .NET SDK

An updated (actually 3.0) release of the Facebook .NET SDK was also released.  Are you a .NET developer writing Facebook applications or desiring to integrate the social network into your applications?  Check out the Facebook .NET SDK which provides:

  • Silverlight-compatible assembly for handling all the logic to communicate with Facebook platform and has specific support for XAML data binding.
  • Web API for Facebook IFrame/FBML applications
  • Using ASP.NET MVC?  There’s an assembly to support that model as well

The Facebook .NET SDK encapsulates the interaction with the developer platform for Facebook and should help .NET developers in web or client get started in a familiar way with Facebook.  I’m excited to see what folks might do with Silverlight and Facebook!

Download the Facebook .NET SDK here and get links to getting started with the Facebook API.

| Comments

what?! you don't know what facebook is?  haven't you heard all the cool kids are doing it so you should totally jump on it with complete disregard to whether or not there is any benefit to you at all.  then just accept every single friend request and you can have yet another disparate network of your own!  (i'm actually experimenting with adding random friends to see if people accept them the way myspace grew -- friends in myspace seem to almost be a chest-pounding reputation/currency thing.)

seriously, though if you haven't heard about it, it is worth a read.  is it myspace all over?  well, some have pondered.  facebook grew up on college campuses and is gaining popularity with the 'adults' of the world.  a myspace for the linkedin crowd might be a good analogy...i don't know, maybe it isn't.  either way, it is growing in popularity and gaining share over myspace.  i've been lingering on it and like a lot of what they have.  is it different than myspace?  i have no idea...myspace to me isn't built for me -- i get blinded whenever i visit a myspace page, so i just don't look.

one thing facebook has done is create a developer ecosystem to their offering.  this enables geeks and organizations to better infiltrate the facebook network and provide 'stuff' for the subscribers.  arguably, most facebook users are consumers of these services rather than dev geeks like me (and possibly you), so it remains to be seen the usefullness of some of these applications being written for facebook.  there are some leaders: twitter integration, map of vacations, photo albums, etc., and then the obscure ones like red bull roshambull games, etc.

facebook has apis.  developers like apis.  the visual studio express team partnered with facebook to create some .net wrappers for the facebook apis and put it on codeplex as the .  this enables microsoft developers to rapidly develop facebook applications for the client, web, , whatever.  i took a look at them and created a few apps to hack around with.

my first one was to take a look at mapping my friends on a virtual map.  now this time i did search around and notice that there were already about 10 'map my friends' applications out there and most work well.  i decided just as an experiment to myself that i'd play around with this concept still and use instead (sadly, all the examples used google maps).  after using the toolkit to easily get my friends, i then geocoded their locations and displayed on a map.  i accomplished this actually using ASP.NET AJAX to asynchronously get the friends list and then apply them to the virtual earth map.  you can see the application in action here:

i decided not to upload it to facebook as i already mentioned there are about 10 already up there...who needs another one.

the other thing i wanted to do was wrap my head around some of the outcomes of the iPhoneDevCamp recently.  i figured i'd take a look at webkit/safari and see what i could come up with.  there already is a mobile facebook application, but i thought i'd look at making the iphone version of this and see what i came up with.

SIDENOTE: as i was asking someone to test this out for me on an actual iphone, they did point out that someone created a facebook app for iphone...calling it .  i took a look at had some trouble using it (namely because i didn't have an iphone) but also it seemed to link to the mobile app that already existed?  maybe i'll have to try on the iphone itself.

i think what is most interesting is all this talk about the 'full web' experience on the iphone.  if that is the case, then why the need for all the iphone-specific apps (i.e., http://iphone.yourfavoritesite.com)?  well, to me it solidifies that the 'full web' experience on a mobile device still isn't the best and for the best experience you still adapt your design when you know what your target devices are.  i don't think there is anything wrong with that concept.  heck, that's why facebook has a mobile site!

perhaps one of the greatest things that came out of iphonedevcamp was someone looking at keeping the user's UI consistent with other areas of the iphone.  created the "" framework, which is basically a javascript file and a css file that models/emulates some of the iphone interface.  great work joe.  i think apps that maintain consistency with the everyday operations may be perhaps the most successful.  so i took the iUI framework to my facebook concept.  i didn't really dive into the iUI framework too deep, but did notice the output didn't render appropriately in Safari2, Firefox, or IE, but did great on Safari3.  i found this interesting and will have to take more time to examine if there are some safari3 specific things that apple is introducing and possibly breaking compat with standards or even their own past browsers.  nonetheless, i had safari3 to test, so away i went. 

learning the capabilities of the facebook api wasn't difficult, it is relatively well documented and the facebook toolkit aided me in development (note: there are other toolkits for facebook as well for PHP, Java, Ruby, etc.).  my goal was to emulate my home page in facebook when you login.  i noticed that the API didn't have everything i needed wanted, but i'm progressing along anyway.  i figured the key features would be the friend list (and recent status), the inbox notifications, your wall, and a way to update your status.  using the iUI i came up with this (i call it ):

ooh, very iphoney :-).  i chose to help keep brand integrity with facebook and not use the iphone (and iUI) default lighter blue chrome, but instead use the 'facebook blue' colors.  i had to modify some images, but it didn't take long.  when you click on the friends link you'll get the wipe effect that is common to the iphone and then view a list of your friends by alpha (last name) and their most recent status update:

once you move along the home screen you'll notice the iUI features take over.  the title changes based on the css elements and then a back button appears to go back to the home area (the one labeled facebook).  you could finger gesture up/down to scroll your friends here.

i went into an apple store to test this in an actual iphone...not sure if it is my crappy code :-) or a demo unit, but the browser seemed really, really slow...

the other areas are similar in concept/design.  the search/status options will open up text boxes to submit information (still debugging this), but you get the picture.  yes there are still some issues like alpha sorting within the listing of names, etc.  one thing i had to do as well for the login was use the full login experience (since i didn't have an iphone i couldn't use the mobile app on safari3), so deal with it :-).

now was it necessary for another mobile app for facebook?  maybe not.  but i'm just trying to broaden my knowledge of things.  facebook is growing and their openness to providing developer support is great.  it will be interesting to see what useful apps might arise for facebook.

| Comments

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 , i really enjoy 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 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:

-- 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.

-- 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

presentation materials: VE-PDX.zip

developing sidebar gadgets

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:  <div id="list"></div>
   2:  <input type="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 ;-)!

presentation materials: Developing Gadgets.zip

microsoft popfly

thanks for sticking around as well for the bonus session.  i am really excited about popfly for a few reasons.  it really demonstrates some of the power of in an application that mixes ajax, html, input controls, animation, etc. in one.  it also enables very rapid mashup creation.  visit the microsoft 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.