| Comments

Public service announcement – if you don’t use my Foxit PDF Previewer, please move along…there is nothing to see here :-).

When Windows 7 Beta came out (build 7000), there was indeed a confirmed issue where the Foxit PDF Previewer would not work at all on 64-bit versions.  There were no install warnings, it just wouldn’t work.  It turns out this was a Windows 7 beta bug for 64-bit (some COM registering stuff if you care to know).  This was found immediately and was fixed in later Windows 7 builds (I confirmed internally with the team and had been testing daily builds).

NOTE: This issue should have only affected 64-bit versions of Windows 7 beta.  32-bit versions were reporting unaffected.

If you will be testing out the Windows 7 Release Candidate for 64-bit, I can assure you that Foxit PDF Previewer will run fine on that build (I’m running it now).  If you choose to install the release candidate on top of the beta, you may run into issues where it thinks it still isn’t working.  I recommend if you are going to go this route, uninstall the PDF Previewer and then run the install again.  This will correct the registering of the software correctly.

I hope this helps!  The download link for the Foxit PDF Preview handler is the same as the Vista one located here.

| Comments

What do you get when you invite 14 companies for 3 1/2 days and throw a bunch of new stuff in their face and ask them to use it?  Well, in Wellington, it was called Expression for Art’s Sake.  This was a bit of an ‘artist in residency’ program where Microsoft invited some companies to bring their developer and designer staff to this event to learn a little bit about Expression Blend and Silverlight

Coming after WEB09 and ending our Auckland trip with a proper visit to a rugby game (here’s a scrum meeting for you agile developers), we traveled to Wellington for this event.

There was a HUGE spread of experience in the teams (about 38 folks in all).  Some were seasoned .NET developers, but hadn’t messed with Silverlight yet.  Some were incredible designers that hadn’t heard of Blend at all.  I personally felt the room was pretty bell curve shaped with regard to level of experience on these specific platforms.  The goal of these days was really to get baptized by fire.  Some teams had actual goals of coming out of it with working prototypes of applications while others just wanted to learn.

Expression event in Wellington

We started the week with some challenges.  The first was to get a working Silverlight application up on virtual servers provided by Microsoft.  This proved to be a bit of a challenge within itself.  Outside of the server poaching that was happening :-), not a lot of people had ever dealt with the web server side of applications before.  A few teams remembered the Web Platform Installer (WebPI) and got their server configured pretty quickly.  Others struggled and rightfully so as they’ve never seen server administration stuff before.  Each team, though, did get something up by the end of the task.  It was a learning experience for me seeing how foreign platforms can be when you’ve never worked with them.  Luckily WebPI makes this a LOT better in those scenarios to get the platform to a certain level.

The next task was a design challenge.  Arturo provided some context in describing the customer: a Kiwi.  No, not someone from New Zealand (which if you didn’t know that’s how they refer to each other as well), but rather the Kiwi bird…or rather a flightless bird!  Arturo’s challenge: design a cell phone for a Kiwi bird.  After about an hour each team would present their design as well as the process they took.  This wasn’t a software challenge, so no expectations of working software was happening here.  Teams presented sketches, research points, etc.  We learned that Kiwi birds, while being flightless, also don’t have a good sight, keen sense of smell, don’t talk, and once they’ve found their mate they are monogomous (which led to one design of the Booty Call device).  This was an interesting process to see how the designers worked with the research of their audience to come up with a design.

The third challenge was to put a bit of them both together: design and develop a calculator.  It may sound easy.  There have been many software engineers that have said calculators are more complex than people think.  This task took longer due to people getting deeper into the platform and tools.  I learned a lot about how people perceive the use of our platform and how they go about actually using it…it was interesting to observe.

The remainder of the time was the teams working on their own projects…some experimental, some literal.  The end results were pretty cool to see what people came up with.  Some were pretty complex ideas and some were simple prototypes.  One team really wanted to go all out and got their prototype working with dynamic data loading database-defined UI elements, etc.  It was a bit of a stretch goal for the timeframe they had – and each team wished they had one more day.

As I mentioned I learned a lot about how people think about using our platform and have feed that feedback to our teams.  I also learned a lot about how to ease people into the problem (note to self: DependencyProperty on day 1 may not be a good idea).  In the end, this was an awesome event and I met some really bright people!  Look for Nigel Parker’s blog to provide some more final context once he compiles all the video taken!  Here’s some feedback from some participants:

It was awesome, and we think we achieved what we want.  It was a good session and we really enjoyed it.

Awesome event, really enjoyed it.  I found the Expression experience very enlightening and powerful.

Darko’s post: http://www.zoroja.com/blog/2009/04/25/expression-for-arts-sake/

Before this week I had hardly touched Silverlight and now I don’t think I can live without it. – Tim Tait

I also had the opportunity to present at the Wellington .NET user group.  It was a great time and apparently one of the larger (largest?) turnouts they had.

Wellington Silverlight 3 usergroup

It was a lot of fun and I got to run through some new Silverlight 3 features as well as talk a bit about .NET RIA Services.  Thanks to all who came and thanks to Xero for hosting!.

Ryan Stewart and Tim Heuer

During the week as well, Ryan Stewart was also in Wellington for the Flex user group.  We missed the meeting, but hooked up with Ryan and some others for dinner to chat and socialize.  It was good to be in a relaxed setting and chat about things that don’t matter – as well as rant and vent :-)  Thanks Ryan for hanging out with us!

*Finally* we met at an incredible French bistro with the team from Webstock.  It was a great cap to an awesome 2 weeks in New Zealand.  Thanks to Nigel, Wellington and everyone I met!

| Comments

I’ve just returned this past week from a trip to New Zealand with Arturo Toledo.  We were invited to come by Nigel Parker, who if you live in New Zealand and don’t know him…take a moment and subscribe to his site for information about what’s happening in that area.

WEB09 logo

Our first stop in New Zealand was the WEB09 conference, which was organized by John Ballinger.  Prior to the actual conference, John managed to get all the speakers together for a reception and then a dinner afterwards.  Within those 4 or so hours of time, I’ve met more iPhone developers in one space than I have ever known.  Seriously, I’m amazed at the creativity and entrepreneurial spirit of the New Zealand developer/designer community.  Allow me to take a moment and mention some of the applications/developers I met.

I’m sure I missed some, but these were the ones I could remember quickly.  It was cool to hear stories about how (and why) these folks are developing in the iPhone space.

RobertSongsmith.comAt a reception with Cactuslab, I had great conversations with a lot of folks, especiall Dan.  It was there that I learned I should probably at least try a feijoa fruit and do the touristy thing and go to Burger Fuel.  The conversation, of course, was a lot better than just that – I promise.  Cactuslab is also where Karl (who is also the author of Charles) works and they had just launched a fun (and make fun of) site around Microsoft Songsmith.

Who is Robert Songsmith?  You!  Grab a copy of Microsoft Songsmith, put some Cure on your headphones, sing along and send them your recording.  For the 2 days of WEB09 this became a bit of a cult following…well maybe not a cult, but we had fun talking about it.  Karl is the man.

The presentations at WEB09 were great.  Because Microsoft and Adobe were premier sponsors, we were given opportunities to talk about our platforms in keynote addresses.  The Twitter feedback channels had comments about how people were not liking the “vendor pitch” presentations.  I suppose I can understand how they felt, but it’s kind of hard not to sound ‘pitchy’ when you’re asked to speak on your platform specifically.  Nigel did a great presentation on something he created in 2 days that was very local and used some cool features of Silverlight and other platform offerings.  I am sure Adobe felt the same way about the feedback.  Of course with some friendly competition in the room, there were the occasional jabs between Adobe and Microsoft.  It was all done in good fun, but probably didn’t come off that way.

NOTE: If you think you’re getting feedback at a conference via evaluations, you’re wrong.  While at Øredev last year I made note of the red/green card system for some statistical, but better instant visual feedback.  More and more, however, Twitter is becoming an instant feedback channel.  I saw more people with laptops/mobiles open with some type of Twitter client than before.  Twitter: your new conference evaluation system.

We were able to do a workshop the day before WEB09 started where we could talk more specifically about certain things like SketchFlow and more of the line-of-business application features added to Silverlight 3.  It was a good group, with some great questions.

Some of my favorite/notable sessions (there were more, but of the ones I attended):

  • Adobe keynote – had a good planned demonstration of a lot of things, including Flash on the Playstation.  Unfortunately, most demonstrations were heavily reliant on Internet connectivity, which melted early at the conference.  I feel bad in these situations because at sometime it happens to anyone who presents.  I really liked the augmented reality stuff that Paul Burnett showed though.  It was fun and I can see some useful things out of it as well.  I heard the Soundbooth/Premiere session with Andrew Spaulding was awesome as well with real-time translation.
  • The Open Web with Dylan Schiemann, co-founder of the Dojo toolkit.  In an weird halfway-across-the-world thing…turns out that Dylan and I are actually only separated by about a few blocks at home…weird.  Dylan had some great opinions of where we are with the ‘open web’ and what things are getting in the way, making it easier, etc.  He’s pretty frank and entertaining as well, which made it good.
  • Dan Rubin – did a good session on thinking about experiences differently.
  • Pamela Fox from Google did a great session about mapping experiences and how you shouldn’t get stuck in the default behavior – differentiate your map experience for your users to provide context and relevance to the topic.

After the second day Arturo and I were pretty fried.  Then John came and found us at about 3pm and said we’ve been issued a challenge with Adobe to come up with a RIA application that would determine the winner of the raffle contest for the conference.  We’d have 2 hours and would present it on stage…the audience would determine what the best app was to use for the raffle.  The challenge was not issued by Adobe, but rather a conference attendee.  Here’s the breakdown of the time Arturo and I spent:

  • 3:00 – 3:40: Determining how we’re going to tell Nigel that we’re exhausted, not creatively thinking and going to surrender.
  • 3:40 – 4:00: The brain starts thinking, Visual Studio gets opened, keyboard starts clacking
  • 4:00 – 4:55: I work on the code, while Arturo works on some design assets.  I hand off the VS project, he opens Blend.  Style’s away and we’re done.

It actually turned out okay.  It turns out that they had 2 raffles so Adobe got to use their app (they actually couldn’t agree on 1 so they built 3…but really only 1 worked for the raffle) and we got to use ours.  Here’s the before/after shots showing my developer wireframe and the final product:

ContestChooser Wireframe

The circle is actually a styled ListBox.  There is an (obvious) button and a smaller button to load the data dymically and data-bind it to the list box.  Here’s what Arturo came up with for the final:

ContestChooser final

Notice the styling.  The “B” is the data load button, and A/C should be obvios what they are.  The circle actually rotates with a sort of ‘batman’ like highlight that also rotates, then picks a winner.  There is some cheesy wheel of fortune remix audio that we added as well.  While it isn’t production code by the slightest, it was fun to do and I think we did okay.  Nigel has more and a raw video of the contest ending here.

Yes, I know the code is not the best.  I spent all of about an hour hacking it together.  I’m aware of some of the bugs :-).

All in all, WEB09 was awesome.  On to WEB10!!!  John and other volunteers did a fantastic job organizing the event and providing a balance of information across the two days.  I’m sure the challenge they will have for next year is how to deal with the growth!  Great job everyone and thank you Auckland!  It was awesome to chat with people for those three days and the after party was great as well!  We were then off to Wellington for the next week…

| Comments

If your a developer that spends any time with web services, you’ll basically probably end up working in one of two camps: REST- or SOAP-based services.  Now with SOAP services you’re likely used to having a WSDL document describing the service, providing type definitions, etc. – something you can use developer tools like Visual Studio to Add Service Reference and get a strongly-typed object model to work with.

If you’ve been doing Silverlight or ASP.NET (or any other technology really) development with mashup services, you probably have been working with REST-based services.  These are services that don’t self-describe themselves in a manner like SOAP with WSDL does.  Often I’ve found that really only the larger REST service providers provide good documentation for their services.  As a consumer of a REST service, you’re at the mercy of the documentation to understand the structure of the requests/responses that you’ll be working with…at times that can be frustrating.  If you are like me, you’ve probably either found someone else’s wrapper to the API or tried to work some other method to avoid spelunking the XML nodes.

If you don’t need to take on the full wrapper that you may have found someone already doing and maybe just need to consume something quick or whatever, enter Paste XML as Types.  Located in the WCF REST Starter Kit Preview 2, this is a Visual Studio new option under the Edit menu.  Let’s take a look at an example.

Twitter sounds like it would be a good example, but honestly they provide so many different formats (JSON, XML, RSS) that I’m not sure you would really want the XML version when RSS is more of a known type and easy to work with.  So let’s look at the Flickr API which is a similarly popular one and has a well-documented REST interface.  Let’s say you wanted to work with the results of their ‘interestingness’ public query which will provide you with a list of photos.  We can see in their documentation that they provide us with a sample response:

   1: <photos page="2" pages="89" perpage="10" total="881">
   2:     <photo id="2636" owner="47058503995@N01" 
   3:         secret="a123456" server="2" title="test_04"
   4:         ispublic="1" isfriend="0" isfamily="0" />
   5:     <photo id="2635" owner="47058503995@N01"
   6:         secret="b123456" server="2" title="test_03"
   7:         ispublic="0" isfriend="1" isfamily="1" />
   8: </photos>

Sweet.  Copy that sample response.  Go into Visual Studio in your project class file (or create a new one), go to the edit menu:

Paste XML as Types

Booyah!  Watch as the magic happens and the XML structure is transformed into strong types for you.

Well, sorta.  Turns out while I think this is a cool feature, it might have some work still to go.  My first assumption was that the documentation on Flickr matched exactly the response (heck, it says sample response).  But it really is only the response body.  There was some missing response header nodes.  You should call the API directly to see a real response.  Second, even with that it looks like I’m getting some weird namespace stuff.

But regardless of that, even taking an XML file and being able to reflect on that to create an object model on paste is pretty cool. 

Try this out – if you see issues leave comments on the WCF REST Starter Kit site so they can see them – you’re welcome to leave them here as well, but I’m not on that team and it’s better to give direct feedback on their project.

| Comments

Last week I was wanting to do something on my site sort of a ‘breaking news’ style banner that would span the entire site width but only when I wanted it too – based on a cookie or something else.  And I didn’t want to do something server side, because I was sick of doing stuff like that.

Not having played with jQuery, I thought I’d take a dive.  Prior to MIX09, I’d been testing something that the MIXOnline team had been toying with, which has just been released: Glimmer.  Glimmer is described as a jQuery Interactive Design Tool.  A helper for those like me who know nothing about it.  Sure, jQuery has a ton of resources, and my Twitter peeps came through helping me navigate some of the things that aren’t glaringly obvious for noobs like me :-).

But Glimmer got me started, and I think that’s the point.  I had an overall HTML structure already and had the div element that I wanted to work with in jQuery – my goal was to animate it in a ‘breaking news’ sort of manner (or at least what’s in my head when I think of that concept).  I opened up my HTML in Glimmer and went to work.  I simply added the action (the function I wanted to trigger), then pointed it to the element to target.  Here’s what my simple Glimmer UI action setup looked like:

Glimmer UI

I clicked save and it created a JavaScript file for me with the completed code:

   1: jQuery(function($) {
   2:  
   3: function loadBreakingNews(event)
   4: {
   5:      $("#info").css("top","-50px");
   6:     $("#info").animate({"top":0}, 894, "easeOutBounce", null);
   7: }
   8:  
   9: loadBreakingNews();
  10:  
  11: });

Sure, to you jQuery pros, this looks simple, but this tool helped me quickly use a design-time tool to generate this without previous knowledge of jQuery.  Now, I’ve learned a few things about jQuery since my first incarnation – all of which took 2 seconds with Glimmer.  I decided I wanted to use the built-in “slideDown” feature in jQuery.  Some things like this aren’t supported in Glimmer yet, but simple things are…and quite frankly, the combination of Y position animation and an easing function accomplished the same goal.

I made a few hand-modifications to fit my needs (checking for cookies to trigger the banner, etc), but Glimmer got me started right away figuring things out quickly…it was awesome.  I think it comes with a free ShamWow as well, I’m not sure, but I swear Karsten told me that. :-)  Check out Glimmer today if you are new (or even seasoned) to jQuery.  There is a plugin model I haven’t explored, but check out the Glimmer project site for more information.

Next maybe I should explore working with jQuery and Silverlight as I know there is more to jQuery than animations and I think it would make a helpful library for the HTML interop layer.