More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  DrewbyPhotosProfileFriendsBlog Tools Explore the Spaces community

Blog

April 17

.NET 3.5 Enhancements Training Kit

This week, Jonathan Carter released the first iteration of the .NET 3.5 Enhancements Training Kit. The kit works with the current ASP.NET 3.5 Extensions Preview, but will be updated as these extensions are revised and released in final form.  
 

Currently, the training kit contains six hands-on labs, made up of the following technologies:

  1. ADO.NET Data Services
  2. ADO.NET Entity Framework
  3. ASP.NET AJAX History
  4. ASP.NET Dynamic Data
  5. ASP.NET MVC
  6. ASP.NET Silverlight controls

Instead of waiting until the kit was completely finished and perfectly polished, we’ve decided to be more agile with our release cycle and get iterations to the public quicker so that we can get feedback and change the direction of our content if necessary. Future versions of the kit will contain presentations, demo scripts, screencasts, and any other valuable resource we can possibly find!

My role is changing a bit here at Microsoft (more on that later) and moving forward, Jonathan, Jason Olson and I will be working together on Visual Studio and .NET evangelism. He's really put together some great content in this training kit!

December 14

The Other Evangelists

Scott Hanselman wrote a post about how to make a community event great. I think the suggestions are great, but his reference to cold pizza struck a nerve for me. It reminded me of the evangelist wish list I had when I was a Developer Evangelist in the field (in other words, before I got a "desk job").

I thought Microsoft should hire more evangelists. And it wasn't about reducing my workload. Rather, I wanted these new evangelists to compliment my position as a DE (everything needs to be shortened into an acronym at MS, uh, Microsoft):

Food Evangelist (FE)- You will go before us and let the world know that there is more to life than pizza. Nothing was as bad for a DE than to eat pizza 3-4 times in a week. Pizza for lunch events, pizza for evening events, pizza, pizza, pizza. Scott has some great suggestions for alternatives in his post.

Driving Evangelist (DrE) - You have an important role, responsible for teaching people who drive on the same roads as the DEs that there are two (or more) lanes on the freeway. The left lane is for passing, the right lane is for cruising (flip this if you are from one of those countries). If you look in front of you and there is a clear road, and behind you is a mile long line of traffic, this is probably a good indication that you should be in the right lane.

Airline Evangelist (AirE) - similar to the Driving Evangelist, the airline evangelist will spend their time at airports, spreading a few simple messages. For the airline passenger, you are not the only one trying to get somewhere ontime today - sit down and shut up. For the flight crew, I may not be flying in first class, but I'm also not luggage - if I pay five more dollars will you at least share the same courteousy you do with the people up front.

Social Evangelist (SE) - we all need you. Enough said.

A short simple list to make the world that much better. What other evangelists are needed out there?

October 28

Recent IIS Blog Posts

Just in case you haven't subscribed to my IIS blog, here are some recent posts.

Also, if you are interested in IIS7, you may be interested in a couple other posts from the IIS team:

What's On My Phone

As least two people (Mike and Dave) have asked me to do this now, so I figured I should cooperate. I have a Blackjack that is the best phone I've had in a long while. I don't do a lot with my phone other than the included applications, but I need those applications to work reliably, and they do on the Blackberry.:

  • I use it to make phone calls - duh! :)
  • I use my calendar and email way too often. I'm addicted to a constant email fix.
  • I use Live Search Mobile quite a bit. This is a great program for me, especially having moved to a new area of the country.
  • I make use of the Internet Sharing application to get an Internet connection on the road.

Someday, I'll take the time to add more applications. For now, I'm keeping it simple.

So many people have done this already, I'll tag just two people - Steve Loethen and Josh Holmes. Steve and Josh are the gadget guys from my old team and it's always interesting finding out what their latest device/software is.

What's on your phone?

September 25

Moving Day

It only took the movers 7 hours to pack our whole house and now its 4 hours into moving day and the house is just about loaded into the truck. Here we go!

PIC-0252

August 14

New IIS Blog

I've started a blog on IIS.net for any IIS related posts.

I'll continue to use my spaces blog for posts on any other technical or non-technical topics. I'll also link to the IIS.net blog posts with a short post here.

August 13

IIS Authentication for Wordpress

This is a really cool example of how PHP can integrate with IIS7 using the new integrated pipeline. With this plug-in and IIS7 you can integrate Wordpress into your existing ASP.NET website using a built-in membership provider.  

This weekend, I was working on an MSDN magazine article and as part of putting together a demo happened to install PHP’s Wordpress blog app on IIS7.

Source: Mike Volodarsky's ServerSide : IIS Authentication plugin for the Wordpress PHP blogging engine

August 08

Ride the IIS Adoption Wave!

This InformationWeek article highlights the most recent Netcraft survey which shows IIS continues to gain marketshare on the web.

Netcraft's August 2007 survey of about 128 million Web sites shows a decline in market share for Apache to 48.4%, while Microsoft has risen to a 36.2% share of active Web sites.

This is a great time to ride the adoption wave and build new products for IIS. As these websites move to IIS, they'll be looking for add-ons that help them enhance and manage their servers and applications.

With the upcoming release of IIS7 on Windows Server 2008, extending IIS has never been easier. You can create components in C# or VB that extend IIS in several ways:

  • New modules and handlers that run in the IIS pipeline - Authentication, URL Rewriting, Caching, Compression, etc.
  • Enhancements to the management UI - Reporting plug-ins, Application deployment tools, etc
  • Configuration schema - enable your application to use the IIS distributed configuration system for its own settings
  • Diagnostics - build tools or hooks into the great diagnostics tools in IIS7

Helping you build these types of extensions for your applications, is what my new role is all about. It doesn't matter if you're building commercial or non-commercial products or that you are targeting ASP.NET, PHP or other platforms/frameworks. Give me a shout if you've got ideas and interest in building some of these scenarios. My alias is drobbins at microsoft.

August 05

Heartland Developer Evangelist: Jeff Blankenburg

The new Developer Evangelist for the Heartland District is Jeff Blankenburg. This is an exciting announcement for many reasons. The Developer Evangelist (DE) position is an important role for the professional developer community. The DE is a driver and/or supporter of the many developer events that occur in the district such as Code Camps, Day of .NETs, User Groups, Product Launches, etc.

The DE is also the primary connection to Microsoft for many developers in the community. This is where those developers bring their feedback, requests, ideas, etc. The DE will hunt down the right resources and get them the support they need. As you look around each district in the US, you can see the impact that having a great DE can have on the developer community.

It is exciting to have someone as capable as Jeff in this role. Jeff brings the right combination of technical capability, attitude and passion to the role. Not only does he know how to develop software, but he also comes with a design background - a combination that is really needed in this new Microsoft world of Silverlight and Expression. It says a lot that all of the candidates for this role were flagged as Microsoft hires (ie. we'll find another role for them), but Jeff stood out because of this unique combination and some phenomenal ideas on how to bring this community to the next level.

I'm looking forward to watching the Heartland community from a distance. Many of the community leaders, especially in Columbus, are my best friends in the world. I'm sure they'll be letting me know the good, the bad, and the ugly.

Jeff - its time to sell that other stock. You know what I'm talking about. :)

July 30

IIS7 Technical Evangelist

Today, I start a new job within Microsoft as the IIS7 Technical Evangelist.

In my previous role as a Community Developer Evangelist, I was responsible for influencing the adoption of all Microsoft development and platform technologies in a specific geography (the Heartland District). In this new role, I'll be responsible for IIS, enabling developers around the world to realize the potential of this technology.

Why IIS? I've been working with IIS since it's first days as part of the NT Option Pack. More recently, I've spent a good amount of time talking with ASP.NET, PHP and CFML developers about how to leverage the features of IIS7. I had the opportunity to speak at CFUNITED, Zend PHP Conference and PHPConf (Russia). The audiences were very excited about the changes in IIS7. I think this is a great time to evangelize this technology and show people that Windows is a great platform for building and hosting web applications and services.

I'm looking forward to the new challenge, working with a great team of people (James, Brian, David, Justin, Matt, Ryan and Vittorio) and spreading the word about an exciting technology. My family will be relocating to Redmond, WA over the next month, so I expect to be very busy getting started in a new job and moving 2500 miles across the country.

If you work with IIS7, developing software that leverages its features, count me as a new connection and resource for you at Microsoft.

If you'd like to connect, here are some upcoming events that I'll be at:

devLink - Nashville, TN - October 12-13

Heartland Developers Conference - Omaha, NE - October 18-19

TechEd Europe - Barcelona, Spain - November 5-9

I also hope to come back for CodeMash in January.

July 06

TJ's 100 Day Celebration

Turning 100 days old in Japan is a big deal. So TJ had a bunch of pictures taken. I've uploaded a few in my photo album.

Got Squid?

This past weekend we took a short trip to Hakodate which is about 3 hours by train from my in-laws house in Sapporo. Hakodate has a famous "morning market" where we went to have Sushi for breakfast. Actually, I had Sea Urchin (Uni) and Salmon eggs (Ikura) on a bed of rice. It was a GREAT breakfast.

However, in the afternoon, we had a completely new and different experience at the market. We passed a tank of squid (Ika) and stopped to watch them swim a little bit. Then my wife saw the sign: for about $10, we could have someone pull a squid out of the tank, cut it up and serve it to us within a few minutes. Of course, it was the freshest squid I've ever had. It had a sweet flavor and didn't have the usual chewiness of squid.

Hakodate is famous for its squid products. We had some squid sausage which was completely black due to the squid ink. We passed on the squid ink ice cream.

DSC07979 DSC07980
DSC07983

June 29

Ranku Ramen Restaurant in Sapporo

imageIn the off chance that someone reading this blog might be in the area of my in-laws house in Sapporo, Japan, I must recommend the best Ramen I've had so far in Japan.

I'm not talking about the square packages of dried noodles that you survived on in college. This is the real thing.

Hokkaido is famous for it's Ramen, so we've had a lot of Ramen in our many visits to my wife's hometown. Sapporo has a whole street dedicated to Ramen restaurants. Lots of the Ramen restaurants in Japan are individually owned, and the owners have their own recipe for the soup. If the recipe is not good, their shop will not survive.

We were all very surprised to find a great Ramen restaurant right down the street from my wife's home. It is called Ranku (蘭句). The owners are a very nice couple. The restaurant only seats about 10 people and has always been full when we are there.

I've had their Shoyu (soy sauce) based soup, their Miso based soup and today I had the spicy Miso based soup. All were excellent, but I think the spicy Miso is my favorite so far.

So if you are in Sapporo and happen to pass through this area, try to find Ranku and give their Ramen a try. Mmmmmmm.

Here's a map for Ranku.

June 01

Managing PHP and PHP Applications in IIS7

Last week I spoke at PHPConf in Moscow, Russia. I really enjoyed the experience - both the conference, and visiting Moscow. You can view the pictures here. I was asked by a couple people to summarize the presentation, which was about using Internet Information Server 7 to host PHP applications.

There are five main advantages to running PHP in IIS7: Configuration, Security, Extensibility, Management and Troubleshooting.

Configuration

IIS7 comes with a completely new configuration system that's based on a central file called applicationHost.config. This file is a well-organized, schema-based XML file that contains every configuration setting possible for IIS7.

There are times when configuring certain settings would be best accomplished at the web directory level. So the configuration elements in applicationHost.config can also be distributed to local web.config files stored in the directory of the web application.

For PHP developers that means they can deploy the configuration settings for their application along with the source files. For example, a PHP developer can configure the default document inside a local web.config file and then copy that web.config file to the server along with their application. That's a simple example, but it extends to other configuration settings such as handlers, modules, authentication, etc.

A server administrator can choose which settings get configured centrally and which ones can be delegated to local web.config files. It all adds up to a lot of flexibility in how a server and it's applications get configured.

Here are three great exercises you can go through to understand configuration and delegation a little better:

How to Use Configuration Delegation in IIS7

How to Use Locking in IIS7 Configuration

Understanding IIS7 Configuration Delegation

Security

The IIS team did a tremendous job in making IIS6 a secure platform to host web applications. However, you will be blown away with the completely new modular architecture for IIS7 and what it means for security.

Every piece of functionality in IIS7 is a module that can be added or removed. An interesting experiment you can walk thru is to remove every module from IIS7 and then make a request. The result is that the request gets denied, because the anonymous authentication module is removed. However, the server is unable to serve an error message because that module is also removed.

Here's the response:

HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/7.0
Date: Thu, 31 May 2007 21:11:33 GMT
Content-Length: 0

If you add the anonymous authentication module back in, then you receive a 404 result because the static file module is not configured. Once you add this module back into the configuration, you now have a static file server and nothing else.

The point is that you can add only the modules you need for your scenario, creating the IIS7 server that is right for you. This means that you have the bare minimum surface area for attackers to target. You only need to patch your server when an update touches one of the modules you have configured.

A bare minimum PHP configuration could include Anonymous Authentication, Static Files (for images) and the FastCGI PHP Handler. You'll probably also want the Custom Error Module to show friendly 404 errors, etc.

Try it with one of these exercises:

How to Build a Custom, Reduced Footprint Web Server

Extensibility

This is where I think it gets really cool. One of the things I've always liked about PHP, is the practicality of developing on the platform. When creating a website, you'll often find there are already applications, components, etc that PHP developers around the world have made freely available. You can get up and running in a short period of time.

Although I don't believe the ASP.NET community has as many complete applications, there are still a plethora of ASP.NET components freely available to help in website development. In the past, these two worlds have been mutually exclusive.

In version 6 and earlier of IIS, the only way to extend the web server was by writing C++ code to create ISAPI extensions and filters. ASP.NET developers could create modules and handlers in C# or VB.NET, but these only applied to ASPX pages or other ASP.NET objects. For example, forms authentication is implemented as an HTTP module. We can use forms authentication to protect ASPX pages, but static HTML files and images in the same website would not be protected.

In IIS7, there is a new unified pipeline that allows managed (C#, VB.NET) and unmanaged (C++) modules to work side-by-side and apply to all requests. For the PHP developer, that means your options have just expanded. Not only can you make use of all the existing PHP code available in the world, but you can also make use of ASP.NET code written to extend IIS. 

As an example, I did the following during my presentation at PHPConf:

  1. Configured QDIG, a PHP image gallery application.
  2. Added forms authentication by updating the web.config file and adding a Login.aspx and Register.aspx to the website. Of course, the membership database is generated by ASP.NET and the two ASPX files required only one element each.
  3. Added a URL rewriting module to change the format of URLs and map those into the query string variables for QDIG. I used the module available here as a compiled assembly added to the bin directory in my QDIG application folder. There are a bunch of similar modules on the web.
  4. Added the ImageCopyright handler described in this article. I added this handler in source code form to the App_Code directory. This added a copyright message to all the photos in my QDIG album.

Combined all together, I thought this made a very compelling example of using IIS7, ASP.NET and PHP together to quickly configure the functionality required for a complete application.

In addition to extending the IIS7 request pipeline, developers can also extend:

  • Configuration system - add new schema to the IIS7 configuration files. Not only will IIS7 be able to understand the new sections, but the command line tool will now be able to manipulate your new config sections.
  • IIS Management Tool - You can add new pages, dialogues and tree view items for the GUI management tool.
  • Diagnostics - there is a great diagnostics system in IIS7 that I'll discuss later which you can also extend, adding your own diagnostic information for your application.

An End to End Extensibility Example for IIS7 Developers

Management

The new IIS Manager is completely rewritten and organized in a much better way than previous versions. Not only can you manipulate IIS configuration using this GUI, but you can also manage ASP.NET settings including the users and roles in your membership store. And with third parties having the ability to extend the tool, you'll be able to manage many application settings from within this interface.

The IIS Manager leverages the HTTP protocol for remote administration which makes it a lot easier to use for administering hosted servers or servers behind a firewall.

In addition to the GUI management tool, there is also a new command-line utility called APPCMD. This tool can do everything the IIS Manager can accomplish, so you have complete control over your server from a console window.

Getting Started with IIS Manager

Remote Administration for IIS Manager

Getting Started with AppCmd exe

Troubleshooting & Diagnostics

The final area that is a huge improvement in IIS for PHP developers is in troubleshooting and diagnostics. There is nothing more frustrating than when performance degrades on your website and you can't figure out the reason. IIS7 gives you some great tools for diagnosing those issues.

The first one is new in-process state information that can be accessed thru IIS Manager, APPCMD, or programmatically from code. This gives you the ability to view current application domains, executing requests, process IDs for application pools, etc. You can do queries on the server to give you information like all of the requests that are currently running and taking longer than X seconds.

The second tool is Failed Request Tracing. When this feature is enabled, IIS collects vital information about every request in a buffer. If the request fails or meets some other condition that you determine, then the buffer is saved to disk so you can analyze the data. The data contains a list of every module that executed during the request and how much time the module took. It also contains overall information about the request critical to determining the cause of an issue in the application or IIS.

How to Access IIS7 RSCA Data

Troubleshooting Failed Requests using Tracing in IIS7

FastCGI and PHP

Last year, Microsoft announced a collaboration with Zend to make improvements to the hosting experience for PHP applications on Windows. On the Microsoft side, we've been working on a FastCGI module to resolve the issues encountered when hosting PHP as an ISAPI or CGI module on Windows. You'll be able to achieve much better performance using this module. It is available for IIS5 on Windows XP, IIS6 on Windows 2003 and IIS7 on Windows Vista. It will also be included as a component in IIS7 on Windows 2008.

On the Zend side of the collaboration, they have been working on fixing some of the issues with the PHP engine itself when running on Windows. They've really made a lot of progress. Make sure you are using the latest builds of PHP. You will see a performance improvement.

Using FastCGI to host PHP applications on IIS7

May 29

Debugging XSLT

I saw over on Julie Lerman's blog, this awesome video on XSLT debugging by Chris Lovett. This feature of Visual Studio "Orcas" really rocks! You can get previews of your XSLT output, step through the XSLT with a debugger, and step from code debugging right into XSLT debugging.

May 25

PHPConf in Moscow, Russia

I'm in Russia to speak at the PHPConf. I also spoke at the Moscow user group on Windows Presentation Foundation.

Today was my conference presentation on running PHP in IIS7. It was my second time speaking through a translator. The first time was at TechEd Japan several years ago and I remembered it being very difficult. This time things seemed to go a lot smoother. The audience was engaged and asked great questions at the end.

After the conference, I hit the streets of Moscow and walked farther than I've walked in a long time. I walked from my hotel, to the Kremlin and Red Square. After walking around the square a little, I stopped by a tent restaurant in a nearby plaza and ordered a Ke-bab. Or was it Shashlik. Or are they same thing. I don't know, but it was really good. :)

I then walked over to the Cathedral of Christ the Savior and bought some pastry with an apple filling. I don't know what it's called as I ordered by pointing my finger. Yes, I don't know a single word of Russian beyond Spasibo (Thank you).

On the way back to the hotel I walked through a street called Stary Arbat. This is a pedestrian street with street peddlers, musicians, artists, etc. Some kids were breakdancing - that's the second time I came across breakdancers on my walk.

I'm going to walk back over there tomorrow because were stages setup for what looked like street plays. Those were already closed down by the time I walked through.

The sun doesn't set until 10:00p so there were still people in parks relaxing, picnicing, amongst other more intimate things late into the evening.

It was a pleasant walk, but it was long and my feet are sore. You can check out the pictures here.

May 11

Visual Studio Island in Second Life

I was at the opening party for the Visual Studio Island in Second Life yesterday. I'm an SL newbie and really had no idea what I was doing. I tried dancing a little, a had a virtual cocktail and got kicked off the island for finding the blimp in the sky without solving any puzzles. :) Luckily, I was allowed back on the island after a few minutes.


That's me in the center, in my orange-sleeved Visual Studio shirt provided on the island. If you are into Second Life, check it out. Solve the puzzles and apparently you will win some really cool Second Life virtual swag.

May 09

Out Of The Box

Jon Box is an Architect Evangelist based in Memphis, TN who just started a new blog. Jon is a great technologist and a great writer, so his blog is certain to be interesting. 

Link to Out Of The Box

April 30

Silverlight Community Website

Here's the Silverlight Community website

Light up the Web. A showcase of next generation experiences using Silverlight.

Source: Silverlight

IronPython 2.0 Alpha and the Dynamic Language Runtime

An alpha version of IronPython 2.0 was released today. This is the first language implemented on the new Dynamic Language Runtime, also announced at MIX.

Also announced at MIX is support for IronPython, Managed JavaScript, Dynamic Visual Basic and IronRuby!  

Dynamic Language support will also be in Silverlight. So you can use Python, Ruby, VB, or C# to build Silverlight applications as well! That rocks!

Scott also showed a cool Silverlight client application that provides a console for the dynamic languages, so you can begin working with Ruby, Python etc, to do interesting things inside Silverlight or in the browser via the DOM. Half the screen is a dynamic langauge console and the other half is a the output in Silverlight. The console lets you switch between languages mid-stream - that is cool.

Link to IronPython