Web Camps Wrap Up and plans for the next 12 months

Over the past 3 months we’ve visited 12 cities across the world delivering free training and fun on the Microsoft Web Platform.  It’s been an awesome experience to see so many talented and passionate developers, from universities, startups, large businesses across the globe – all learning to build cool web apps on the Microsoft Web Platform. 

On Day 1, everyone got to hear about the latest developments in ASP.NET including a tour of ASP.NET 4 Web Forms, ASP.NET MVC 2, Entity Framework, Visual Studio 2010, Deployment and jQuery.  There was a lot to cover in one day and we’ll be looking at how we can slim the content down a little bit so we can drill into more details on the most popular sections.

On Day 2, the building day, people have been building some really cool applications in teams – it’s amazing to see what you can build in one day with a group of people that you have never met before!  Some of the applications that stood out for me were:

  • Shopaholic (Redmond Web Camp) – these guys knew how to leverage existing code! They used all the components of the Microsoft Web Platform including MVC 2 and EF nicely.  They also worked really efficiently in their team and got a hell of a lot accomplished
  • Ontario Fast Ball (Toronto Web Camp) – father and daughter put together a website for their local softball league using Web PI and DotNetNuke. Great to see how they put this together with no prior programming experience. 
  • Online Chat Room (Shanghai Web Camp) – created by a group of three this was entirely based in jQuery and used the new templating engine that Microsoft has been working on with the jQuery core team – impressive having chats across the network with other Web Campers!
  • Calendaring (Mountain View Web Camp) – the team put together a really nice web app based in MVC that integrated lots of social networking APIs, iCal and Bing Maps.
  • Noisy Neighbor (Sydney Web Camp) – a web app to register pesky neighbors. This app made great use of ASP.NET MVC 2, Bing Maps with drag and drop pins, WCF and a Script Manager for generating proxy classes (from Telerik)

In all there were around 80 applications built at the Web Camps and the list above is just a small sample of the cool stuff people were building!

Some things to look out for in the coming weeks:

  1. Web Camps Training Kit – we’ll be giving you all the content from the Web Camps in just a couple of weeks from now
  2. More Web Camps! We’ll be announcing new dates for Web Camps very soon – we’re just planning where we should go first!  Sneaky hint – we are going BIG! Smile
  3. Web Camps and content for Web Matrix
  4. New Web Camps website – time for a remodel, we’ll be launching in a couple of weeks

If you would like Web Camps to come to your city then leave me a comment on this post – we are listening!

Tags:

Top links for getting started with WebMatrix

Post Last Updated: 7/16/2010

image

WebMatrix is everything you need to build Web sites using Windows. It streamlines Web site development and makes it easy to start Web sites from popular open-source apps.

Getting Started
  1. Download WebMatrix
  2. Top 10 features for Web Matrix
  3. Twitter Archive of everything Web Matrix
  4. Scott Gu’s Blog Post on Web Matrix
  5. API Reference Guide
  6. ASP.NET Web Pages Forum
  7. How to Create an ASP.NET Application from Scratch Using WebMatrix Beta
  8. Web Matrix eBook
  9. FAQs for Open Source and Free web applications
  10. Get help in the forums
Find Web Hosting for your projects

Microsoft’s Web Hosting Gallery

Make Suggestions and Submit Bugs

Help us make WebMatrix better! Make a suggestion or submit bugs to the team.

Pragmatic Press and Blog Coverage of Web Matrix

Microsoft Web Matrix: What's In It for Dev Professionals? (Michael K Campbell)
WebMatrix - A Path To Enterprise Web Development? (David Hayden)

Tags:

World Cup Pivot

With the world cup in full swing it’s nice to slice and dice all the various statistics on the players and the teams.  Metia have put together this nice World Cup Pivot that makes doing that really easy.  Check out all the different stats by filtering on the left hand side and drilling into the player info.

image

For more information on Pivot check out the home page where they have developer information on how to create your own pivots.

Tags:

Microsoft Web Camps– Secret tips for successful teams and apps

With 10 Web Camps now behind us including Toronto, Moscow, Beijing, Shanghai, Sydney, Singapore, London, Munich, Mountain View and Chicago – we’ve seen some really cool applications being built by teams on Day 2.  For those of you who come to future Web Camps, I wanted to share some tips that came from the most successful teams with the best apps:

  1. Come to Web Camp with an idea.  Have you had an idea in your head for a while and not had time to build it yet?  This is the perfect opportunity for you to team up with some devs and get it built – all with experts on hand to help you through.
  2. KISS – Keep It Simple Stupid. Sometimes the most simple ideas are the best and those teams that kept their ideas basic actually had a really professional looking app at the end of Day 2.  Remember you only have a limited amount of time, so use it wisely.
  3. Keep your team small. The most successful teams were from between 2-6 people in size.  Larger teams found it hard to get things done and spent to much time “designing everything by committee”.
  4. Get your machine ready before Web Camp.  Don’t waste time on Day 2 getting your machine installed with the tools and framework you need to build.  Spend some time ahead of Web Camps getting the latest bits from the Web Platform Installer so you are ready to get going on Day 2.  Also – remember the quality of wireless internet varies widely from venue to venue and we can’t always promise great connectivity – don’t rely on this for large downloads.
  5. Decide how you will share code. It doesn’t matter how you are going to share code in your team, just make sure you decide at the start how you are going to do it.  We’ve seen people using their own switch and network cables, USB sticks, Git, Mercurial etc.
  6. Develop Iteratively. Break down your application into bite-size chunks and do hour long sprints to get stuff built.  Planning this way will help you to set realistic, achievable goals for your team and make sure you a working app to demo at the end of Day 2.
  7. Make it look good.  A little bit of “sheen” goes a long way – some teams used good looking templates for their application to make them stand out from the other apps.  A cool logo and nice colors are something you can add towards the end of the day.
  8. Use the knowledge from Day 1.  There are prizes available for the best apps and the judges are looking for the best use of the technology you learned about on Day 1.  Using the latest Microsoft Web Platform bits will not only impress the judges but help you to learn how to use it more effectively!
  9. Use Web Application Toolkits. There are 10 of these for helping you to quickly solve common web developer problems.  Be sure to take advantage of them as they will greatly increase the speed of development adding cool features to your app.
  10. Prep your demo. Make sure your laptop can connect to the projector ahead of time, have the machine on and ready to go so you avoid any awkward silences while you fumble around getting the project to work Smile.  You only have 5 minutes so make sure you nail all the features that your app has and the problems that it solves.  Also remember to highlight the features of the Microsoft Web Platform that you took advantage of.

So there you go – ten tips to success! Happy Building!

If you are new to Web Camps here’s some information on what they are:

Interested in learning how new innovations in Microsoft's Web Platform and developer tools like ASP.NET 4 and Visual Studio 2010 can make you a more productive web developer? If you're currently working with PHP, Ruby, ASP or older versions of ASP.NET and want to hear how you can create amazing websites more easily, then register for a Web Camp near you today!

Microsoft's Web Camps are free, two-day events that allow you to learn and build on the Microsoft Web Platform. At camp, you will hear from Microsoft experts on the latest components of the platform, including ASP.NET Web Forms, ASP.NET MVC, jQuery, Entity Framework, IIS, Visual Studio 2010 and much more.

Tags:

Haack and Walther join the speaker lineup at Web Camp Redmond!

image image

The Web Camp in Redmond on Friday 18th and Saturday 19th June is starting to shape up nicely with some last minute speakers added to the rosterPhil Haack the Program Manager for ASP.NET MVC and Stephen Walther the Program Manager for Ajax Control Toolkit and Microsoft’s jQuery contributions are now on board!  They’ll be joining me on stage on Friday as we look at MVC and jQuery as well as give their unique insight into their respective technologies!  It should be a blast so be sure to bring your questions along for these rock stars!

If you’ve not done so already, sign up for Web Camp - Redmond – we’ve only got a few seats left!

If you can’t make it for the Web Camp in Redmond but would like to have your question answered on stage by the Phil or Stephen then leave me a comment below!

Tags:

Twitter Search with jQuery Templating

image

A while back I wrote about how to build Twitter Search using the templating engine in the ASP.NET Ajax Library and it was quite a popular post (BillG uses my code on his new website – glad you like it Bill ;-)…. Well since then, things have changed a bit back in Redmond and now instead of adding new features to that library we made a decision to change our approach and contribute to the jQuery Library instead.  We made the announcement at Mix10 in March and since then we’ve been working with the community to build a new templating engine and also introduced a new feature called data-linking (based off the data-binding feature in the old ASP.NET Ajax Library).  In other words we are coming good on our announcement and have changed the way the Ajax team work to the jQuery contribution model (see my previous post on the contribution model).

I thought it was about time I updated the code of the original twitter app to show how to achieve the same thing using the jQuery Templating engine.  A couple of differences you’ll notice straightaway is that the templating syntax has changed – the preferred method is ${ dataItem } – and the app now uses the jQuery.ajax method to make the JSONP call to the Twitter Search API in order to retrieve the search results.  Also, we are no longer using the sys namespaces to manipulate dom elements and gone is the script loader which was used to manage the loading and dependencies of the various scripts.

Step 1 – Define the Template

For simple templates i.e. “the one-liners” you can choose to simple assign the html fragment as a string to a variable.  However, for more complex templates you will want to declare them in a script block – and that’s what I’ve done in this sample.

<script type="text/template" id="tweetTemplate">
        <li>
            <a href="http://twitter.com/${ from_user }">
                <img src="${ profile_image_url }"/>
                <b>@${ from_user }</b>
            </a>
            says:            
            <br />
                ${ text }
            <br />
                <a href="http://twitter.com/${ from_user }/statuses/${ id }">
${ new Date(created_at).toUTCString() }</a> <br /> </li> </script>

Step 2 – Get the data from Twitter

To retrieve the search results from twitter we use jQuery’s ajax method which takes options for the type of data we expect back and the function to call when we receive the results in addition to the url for the search URL.  This is arguably more elegant than the Sys.Net.WebServiceProxy.invoke method we used before in the ASP.NET Ajax Library – but that’s more of a preference debate. 

$.ajax({
      dataType: "jsonp",
      jsonpCallback: "renderTweets",
      url: "http://search.twitter.com/search.json?q=" + query
});

Step 3 – Bind the data to the Template

image

It’s showtime for the templating engine!  It’s responsible for loading the template and then replacing the placeholders where it finds matches in the data structure that it is given.  This magic happens in the render() method which takes in data (as well as options) and after generating DOM elements for each data object using the template, it returns a jQuery object with the full array of elements. 

function renderTweets(data) {
    $("#tweetTemplate")
         .render(data.results)
         .appendTo("#tweetList");
}

We can take these generated elements and insert them into the DOM using one of the jQuery methods like appendTo.  That’s it – we’re done!

Next Steps

An idea to extend this sample would be to automatically query the Twitter Search API every 30 seconds or so (like Twitter does on the real-time search page on their site) and then add the new items in the search query to the top of the list.

Full source

The HTML, JS and CSS is available for download here.

Tags:

jQuery Slides & Demo from my Remix Australia Talk

On the 1st of June I had the pleasure of giving a talk at the Remix conference in Melbourne, Australia on the Microsoft/jQuery contribution story and the new Templating engine that were announced at Mix10 in Las Vegas earlier this year. This conference punctuated the Web Camps world tour that I’ve been on and was a welcome break to enjoy someone else running a big event :-)  I loved the widescreen, colorful slide template they gave me to use and the “love the web” theme for the conference was definitely running high through the attendees.  I overheard someone say that half the attendees were non-microsoft developers which was great to see as many of the talks were on open source, geo-location, HTML5 and other topics that were useful for all developers. 

image

One of the things I try to stress in my talk is the contribution model that Microsoft are using when making contributions to jQuery.  It’s the same as everyone else.  We are behaving as any other member of the jQuery community does – i.e. propose a new feature, spec it out and then build a prototype – all out in the open on jQuery’s forums and Github.  The community have been brilliant to work with. There is no shortage of enthusiasm, feedback, suggestions, code branches and more – it’s been great to see.  Here is the slide that I use to describe the contribution model, where examples of cool stuff are templating, data-linking and Cool Stuff ++ are features that the core team library deem essential enough to include in the jQuery core library – in the future.

Below are the slides for the talk and you’ll see the code from the demo in my next post.  They will also be releasing the video of the talk soon – I’ll let you know when that’s out too. Cheers and enjoy!

Tags:

The battle for everything

I love this map from Gizmodo which aims to plot the battlegrounds that are raging between Apple, Microsoft and Google.  The thing that fascinates me is the different business models through which the different companies sell their products.  From the Microsoft perspective there is a definite shift between partner model (which is my original background in Microsoft) to direct – think about the Microsoft Store, Zune, Xbox 360, Azure etc.

From an accuracy perspective on the diagram, one disagreement I have is the war for “web software” which is described as Quicktime vs. Silverlight.  This should instead be HTML5 vs. Silverlight – I’m sorry Quicktime is not a valid medium for web software – no chance.

There’s also no “social” battleground which right now would be Google vs. Microsoft: Buzz vs Windows Live.  Which one is going to be stronger there? Eyes look towards the launch of Windows Live Wave 4…  Of course, if you add this vector then Facebook would look strangely absent from the page.

What’s your take on it?

Tags:

Installed Web Deployment Tool, but don’t see the options in IIS? You’re not alone…

Today I blew my machine away and ready for the Web Camps events starting next week in Toronto – getting everything from Visual Studio 2010 to IIS and more installed.

Part of the demos will be covering Web Deploy – the technology that makes it easy to deploy websites on IIS from Visual Studio 2010 and IIS.  I normally get it installed via Web PI but for whatever reason (I may have installed something in the wrong order) I wasn’t getting the UI features showing up in IIS – where it should give me options to import and/or export a deployment package:

image

This was curious because Web PI was telling me that Web Deployment Tool was installed too, so I decided to try install it “raw” using the MSI – which is available under the main Web PI download link:

image

When I ran that MSI I had the option to change the installation and this revealed where the problem was.

image

The components for the UI Module in IIS Manager were not installed as you can see above.  Once I installed them, sure enough, the options appeared in IIS.

I have no idea why the options for importing/exporting packages didn’t show up in IIS – nor do I care :) – but hopefully if you come across the same problem, this will help you out.

Tags:

The secret anti-spam checkbox in BlogEngine.net?

I’ve been under a bit of a spam deluge recently here on my blog.  I have to hand it to those spammers, their comments are getting more human-like everyday, with their text relating directly to the post in question.

Before today I’ve tried some options in BlogEngine.net to get rid of spam like enabling the AkismetFilter settings.  Much to my disappointment it didn’t seem to have any effect on the amount of spam I was getting – it just kept piling up! 

image

I drew to the conclusion that I was just going to have to put up with it, deleting comments manually.  Then this weekend after I upgraded to the shiny new BlogEngine.NET 1.6 I was playing around with the comment admin panel and strolled into the Configuration tab.

image

At first glance nothing special in there but then the “Moderate Comments” checkbox caught my eye.  I never normally moderate comments before they are posted but with today’s spam count reaching fever pitch I thought I would succumb to an anti-free speech approach to keeping my comments clean and relevant. 

I clicked the checkbox and much to my surprise I found a whole host of functionality I would never have associated with “Moderation”.  I had always associated moderation with something manual that I must do – I had never checked this box before.  My friends, I must tell you that this was like discovering the buried treasure on Treasure Island – it was a pure moment of enlightenment.  There, below were rules for capturing spam and filtering it out automatically.

image

Now, I don’t have any evidence that this was the flaw in my anti-spam campaign, but time will tell – i will be sure to keep you updated if it makes a difference. 

What did I learn from this discovery?  There’s a lesson in there for everyone about user experience and the subtleness of convention based approaches.  The convention in this case would for BlogEngine.NET not to put the spam settings under “moderation” (hiding them by default doesn’t help either) but under “Comment Spam”.

Also, it pays to click everything and also read the instruction manual :-)  Anyway, for those of you that come across this post and find it to provide the same kind of enlightenment that it did for me, happy (spam free) blogging!

Tags: