Category Archives: Web Dev

modern.IE

modern.IE I’m a Program Manager on the Developer Relations team for Internet Explorer. The core mission of my team is to help developers write interoperable web sites across all of the major browsers. To that end, we have put together a set of tools and downloads that will help you testing, especially for Internet Explorer but most of the tools help across app browsers.

modern.IE Scanner

The modern.IE Scanner is does a static scan of your web site looking for common issues on web sites. Currently, it looks for:

Fix common problems from supporting old versions of IE
Known compatibility issues
Compatibility Mode
Frameworks & libraries
Web standards docmode

Fix common problems from supporting old versions of IE
CSS prefixes
Browser plug-ins
Responsive web design

Suggested enhancement
Browser detection
Optimize the images on your page
HTML5 inputs

Suggested enhancement
Prerender + prefetch

Suggested enhancement

Compressed content

Consider building with some new features in Windows 8
Touch-first browsing
Flip Ahead Browsing
IE11 tiles + Notifications

Once you’ve scanned your site and reviewed the static results, you can take a look at how your site looks across a lot of browsers with the screen shot service by Browser Stack and also do a scan for code that’s no longer supported by current versions of Internet Explorer.

It will save you a bunch of time testing and looking for issues to scan your web site with the modern.IE Scanner.

Virtual Machine Downloads

The scanner is great but there’s nothing like looking at the real thing. To help here, the team has put up a large set of virtual machines to help you out here. These virtual machines are designed for you to do Internet Explorer testing.

We have virtual machines for folks running Windows, OSX and Linux across the following virtualization platforms (dependent on base platform):

Hyper-V (Windows)
Virtual PC (Windows)
Virtual Box (Windows, OSX and Linux
VMWare (Windows, OSX)
Parallels (OSX)

The virtual machines include a lot of different Windows OS and browser configurations.

Windows XP with IE6
Windows XP with IE8
Windows Vista with IE7
Windows 7 with IE8
Windows 7 with IE9
Windows 7 with IE10
Windows 7 with IE11 (Currently RP but soon to be release)
Windows 8 with IE10
Windows 8.1 and IE11 (Currently preview but soon to be release)

This is a lot of machines. If you count up all the variations of virtualization platform, OS and browser, it’s a little over 90 VMs that we’ve got for you to download.

These are 90 day VMs because they are not activated VMs. This means that in 90 days, you’ll need to come back and download a new one but that’s a good thing because we’ll be keeping them up to date with security patches and the like on the web site so you don’t have to think about it.

Offers

There are also partner offers that we give from time to time ranging from some percentage off of Parallels to a 3 month trial of Browser Stack (rather than their normal 1 month trial) and so on. These change from time to time so I’m not going to go through all of these here.

Summary

There’s a ton that the team is doing which is all aimed at helping web developers build an interoperable web. What I hope never happens again is a “Best viewed in X Browser” tag on a web site again.

WordPress on Windows at Wordcamp Norway

imageI just got done speaking at Wordcamp Norway (#wcnorge) on the topic of running WordPress on Windows. The talk seemed to be well received despite the powers that be on the demo side not being kind to me. My first install of WordPress had an port conflict with a previous version and failed. ARG!

IMG_2419Regardless, it’s been a while since I spoke at a Wordcamp but I always have a lot of fun doing so. The talk was well received, especially some of the stuff that’s not in the slides such as the web testing in Visual Studio 2010. It allows you to record a browsing session and then turn it into a load test very quickly.

The deck is a compilation (greatest hits really) of some of my previous talks. I didn’t drain all the slides but rather they are here for reference for folks.

It was also cool that Zé Fontainhas from Automattic was in the audience and liked the talk. Actually, we had a couple of people in the audience who were already running WordPress on Windows who provided unprompted testimonials. 🙂 It was fun.

Thanks for the hospitality of the folks in Norway – next time I have to come back in the summer!!!

Is that a Rich Web in Your Pocket?

clip_image002I had a fantastic opportunity recently as I was asked to speak at the Google Tech User Group on HTML5. Eoin Bailey, co-founder of Hit the Road and one of the founders of the Dublin GTUG, invited me to speak on HTML5 with some of their other speakers to give a full out HTML5 day at the Dublin GTUG. I couldn’t pass up the opportunity to speak at Google so I rearranged my schedule to make sure that I could make it. 🙂

 

The schedule was as follows.

1. Ilmari Heikkinen, "Sprucing up your pictures with HTML5" – Ilmari will cover some HTML5 basics – the enhancements that it provides over previous web standards and will focus on how image and video filters can be used, demonstrating some examples.

2. Neil Turner, "Lessons learned with HTML5" – Neil has built some web applications based on HTML5 and will talk about his experience doing this, including browser support issues, compatibility, responsive web design and performance.

3. Josh Holmes, “Is that a Rich Web in Your Pocket?” – A fast moving trend is building for mobile with HTML5. In this talk, Josh Holmes will show what can be accomplished with a mobile browser app and talk about the design considerations for that form factor.

I borrowed some of the slides from Joe Marini’s MIX talk on Mobile and put my very demo heavy spin on it. My slides are at http://www.slideshare.net/joshholmes/is-that-a-rich-web-in-your-pocket.

Slide1I’ve been passionate about mobile and mobile web for quite some time. I’ve been doing on device mobile development for the better part of 10 years now starting back with CE 4 in January 2002. It’s amazing to me, however, how far the mobile industry has come in that time period. It’s been a fast and furious but fun ride in that time…

Slide2Do you remember the pain of trying to develop on for the text based browser? Remember  when WAP (Wireless Applications Protocol) development was all the rage? It seems soooo long ago at this point and so old school. In actuality, the WAP forum who were the main drivers of WAP was actually consolidated in 2002. And I remember when it was such a huge deal that the ASP.NET Mobile Toolkit could produce WAP compliant mark-up which meant that I didn’t have to…

Slide3

But the mobile web development space has exploded. Smartphones these days, including the Windows Phone, are capable of running some amazing things. To demonstrate I showed HamsterDance Revolution which uses javascript, CSS3, the audio tag and more with some serious performance on a Mango device. Next I showed the FishIE Tank and the Speed Reading in rapid succession and then moved over to the Mango emulator for my demos.

Slide4Phones these days have the potential to be much more than just a small computer in our pocket. Phones these days know what time it is (clock), where it is (geo-location), what the lighting is like (light sensor), if it’s moving (accelerometer), where it’s going (compass) and can even see (camera) and hear (mic). It’s amazing what they are capable of these days. With all of that knowledge of their surroundings, mobile apps and sites should be augmented by reality. They should geo-locate you to give you directions to the closest train stop (for instance) rather than you having to pick from a list. If the lighting is bad, they should go with a high contrast colour scheme. If it’s loud around you, they should not ask for voice input. If you’re moving, minimize text input. And so on. At the moment, the browser doesn’t have access to all of these sensors but I can’t imagine that that’s that far away.

Slide5In addition, the way that people use devices in a mobile context is vastly different than a desktop development. It’s more than just the screen size that matters here. People who are using mobile are on the go and need immediate information. As part of that, I showed the United Airlines mobile site, Facebook, Twitter and the like.

Slide6When people are sitting at their desk, they are in a controlled, stable and (a lot of the time) comfortable environment. They are able to do sustained browsing and research.

When people are on the go, they need quick, "glance-able” information that will give them the information that they need at the moment. For example, that could be directions to the venue that they are headed to or a phone number or any number of discrete bits of information that they need while on the go.

Slide7Then I moved on to talking about designing for the finger verses the stylus/mouse/keyboard. First of all, the finger is not as accurate as a stylus or mouse. If I turn my finger on it’s side and am very careful, my finger is still at least 40 pixels across and most of the time it’s closer to 80 pixels. And then there’s all of the sites that are so dependent on the mouse and/or keyboard.

As an example, I pulled up http://thekillersmusic.com/html5 in IE9 and showed how fantastic of a site it is and then showed the same site rendering on Mango but talked about the fact that it’s too reliant on the mouseovers and the like to be useful in a mobile context. Same thing with Pacman in IE9 verses on a mobile device. While it renders and plays, it requires a keyboard for navigation.

Slide8

Mobile sites need to be clean and crisp without a lot mixed fonts, colours and the like. Don’t overuse graphics, gradients and  heavy background images as they can all effect download speed and/or view-ability in direct sunlight. Make sure that you’ve thought about the readability and the usage of whitespace. Obviously you don’t want to go nuts with the white space because you’ve got so little real estate to start with but a little bit of white space can make all the difference.

Slide9

Work as hard for your user as you can. In other words, minimize the user’s input by providing intelligent defaults and picking up as much from the sensors as you can to make as many decisions as possible. Make sure that you store user’s previous inputs and where possible, use them to help streamline future engagement.s

Slide10Lastly, think carefully about your mobile strategy. It can range from doing nothing to going hog wild with a mobile specific design.

One of the key things here is that you make a deliberate choice with regards to your mobile strategy because almost guaranteed you’ll have users browsing your site from their mobile devices.

  • Do nothing
    • No special content adaptation, result is the desktop site being delivered to the device. Sometimes, this is the right choice. It’s definitely the default choice and the easy one to go with.
  • Basic Mobile Adaptation
    • Content laid out so it will at least be consumable on a device, special META tags indicate that page is ready for mobile. This one is slightly more difficult to pull off as you have to make sure that your content works on both desktop and mobile.
  • Multi-Serving Content
    • Same page is sent to mobile and desktop, styled differently for each. This is not as hard as you’d think. You can accomplish this through the use of the @media tags to reformat the layout dependent on screen width and the like.
  • Mobile Specific Design
    • Parts of site are designed for mobile specifically, kept in separate domain or subfolder, redirected to when necessary. This is a high end strategy that requires a lot more work as you’re effectively building two different sites. On the other hand, it makes the mobile experience fantastic but doesn’t require you to compromise on the desktop experience.

Slide12

The quick couple of take aways are that mobile web has evolved tremendously over the past handful of years. As a result you should really think about your mobile strategy and consider your mobile user’s context as part of that strategy.

Oh – and in my last moments I threw up http://ie6countdown.com to hopefully push out the last bits of IE6 around. 🙂

This was a fun talk to give and I hope to expand on this talk and do a much richer version in the near future.

ASP.NET/PHP on the Microsoft Web Platform Event in Ireland

Untitled

I’m really looking forward to moving to Ireland and I’m going to hit the ground running…

Right off the bat I’m going to be throwing an event called the “Evolution of ASP.NET and PHP on the Microsoft Web Platform”. One of the reasons that we’re throwing this event when we are is that we have Ryan Ozimek coming over to help me reprise and enhance the WebMatrix launch event.

Abstract: Web development is continually evolving on the Microsoft Web Platform. This evolution has brought fantastic new features and functionality such as the new Razor syntax and ASP.NET MVC 3 on the ASP.NET side and WinCache and FastCGI on the PHP side. And great new tools such as WebMatrix and the Web Platform Installer make it exceedingly simple to download, customize and deploy many of the top OSS applications, such as DotNetNuke for ASP.NET and Joomla! for PHP, on Windows.

image004Amongst the speakers at this developer evening are Josh Holmes, the brand new Architect Evangelist for Ireland, and Ryan Ozimek, president of Open Source Matters which is the non-profit that takes care of Joomla!.

Join us for an evening diving into how web development is evolving on the Microsoft Web Platform. We’ll start with an overview of the entire platform and the recent flood of announcements. Then we’ll dive deep into the individual topics of the new ASP.NET Razor syntax, ASP.NET MVC3 and PHP on Windows.
Whether you are doing ASP.NET or PHP, whether you have years of experience with web development or are just getting started you’ll find just the right flavour of web development for you.

Date: February 8th, 2011. 6.30pm-8.30pm (registration from 6pm)

image005Location:

The Westin Hotel

35 – 39 Westmoreland Street
Dublin 2
Map: Click here for a map

Please join us for this event by registering online.

The talks will wrap-up after two hours, giving attendees plenty of time to have a drink and some food whilst networking or playing around with some of the latest Microsoft gadgets.

image006

It’s Your Web, The WebMatrix (and more) Launch

I was thrilled an honored to deliver the WebMatrix Launch event at CodeMash this year.

First of all, CodeMash is a conference that I love. If you are not familiar with it, it’s one of the few conferences in the world where all technologies come together explicitly to share. The idea is that we are there to “Mash, not to bash”. I’m very proud of the fact that I was on the original board and was the emcee the first handful of years. In fact, it was at the first CodeMash that I originally shaved my head (well, technically Jennifer Marsman shaved my head… 🙂 ) But this “Mash, not to bash” concept make this the perfect place to launch WebMatrix but I’ll talk more about that in a bit.

Second, WebMatrix, Razor, ASP.NET MVC 3, all of the OSS contributions that Microsoft has been making and the whole keynote was a lot of very exciting news and technology that really remind me why I work at Microsoft!

Third, this is the first time ever that Microsoft has launched a product at a community event as well as the first time that a field Evangelist (me) delivered an launch event…

See the whole talk here:

It's Your Web - Josh HolmesNow, what did I get to talk about? The fun part is that this blog post is actually more detailed that I had time to get into myself during the talk. 🙂

The title of the talk is “It’s Your Web”. And this actually really well encapsulates the talk. During the course of the session, I’m really talking about how web development is evolving to work for you in the way that you want to work.

Simplicity is the ultimate sophistication500 years ago, Leonardo da Vinci said “Simplicity is the ultimate sophistication”. This is a saying that really lands with me. If you’ve seen any of my talks over the past couple of years, you’ll notice that simplicity is a reoccurring theme whether I’m talking specifically about it as in my “Lost Art of Simplicity” keynote that I’ve done a number of places or talking about UX or any of the other topics that I’m very passionate about.

As with Ice Cream

Everybody likes a different type of ice cream. Some people really like chocolate and nothing else will suffice. Other people like vanilla or strawberry. Personally I like Moose Tracks with the peanut cups and hunks of amazing fudge swirled into a creamy slice of goodness. but that may have to do with my obsession with Reece’s Peanut Butter Cups as the perfect candy.

Developing with ASP.NET, 3 flavors of web development

As with ice cream, everybody has a different flavor of web development. With ASP.NET, we’ve got 3 specific flavors that we will talk about today.

ASP.NET Web Pages are simple, light and fast. These are new and we’ll talk about them quite a bit today.

ASP.NET Web Forms are familiar, reusable and productive. These have been around for 10+ years, there’s a very mature control vendor market and the original design principle was to create a very productive environment for those new to web development.

ASP.NET MVC Framework is a very powerful,  extensible, robust and agile way to do development focusing on the architecture paradigm of Model View Controller.

Developer Tools

There are also different flavors of developer tools. Specifically, we are going to focus on WebMatrix and Visual Studio today.

WebMatrix is new and we’ll be talking about it a lot today as well. It’s a very simple toolset that supports both ASP.NET and PHP.

Visual Studio, our flagship developer product, is a very powerful, flexible and integrated toolset allowing you to go from architecture through the development/test phase and on into QA in the same toolset really managing the entire life cycle of a project.

Create, Customize, Publish

WebMatrix has been in beta for a little bit so you might have seen it. But in case you haven’t, WebMatrix, as stated before, is a simple tool that allows you to focus on the task at hand and solve problems. It’s designed to create, customize and publish web content very quickly and efficiently regardless of what type of web content that happens to be.  WebMatrix Web Stack

There are three major components with WebMatrix.

The first, and most visible is the Developer Tool. This is a stream lined IDE that supports both ASP.NET and PHP.

WebMatrix comes with a light weight, yet fully functional web server that doesn’t run as a service or require administrator rights to run. It may only be a 10mb download, but it’ll run ASP.NET as well as PHP, has full support for SSL, URL Rewriting and all the other IIS 7 modules whilst running on Windows XP and above.

WebMatrix also comes with a lightweight database that makes it quick to get started building websites. It’s file-based and only runs in-memory within your web application so when you shutdown your app, the database is automatically unloaded. Even better, with a download size of 2.5mb it installs with no configuration and works with existing data APIs and ORMs. When it comes to go to production you can use the database for lightweight scenarios or easily migrate to a SQL Server or SQL Azure with a simple change of the connection string. That said, you can, if you want to, use MySql or SQL Server with WebMatrix and it will work just fine.

WebMatrix ScenariosWebMatrix is designed around three basic scenarios. Sometimes you need to create something from scratch to solve a problem that’s specific to you or your organization. Of course you can use WebMatrix to do that.

Sometimes you have existing content that you need to organize, customize and publish and of course you can use WebMatrix to do that.

The third option, which is becoming more and more popular of an option is to start with an existing OSS application such as one of the many blog engines, CMS systems, eCommerce solutions and the like that are out there that will get you 80% of the way to solving your business need. With WebMatrix, you can pull a project down directly down from the Microsoft Web Application Gallery from within the IDE, customize and publish very quickly and efficiently.

Introducing RazorWith the introduction of WebMatrix, however, is not just a tool.

When you build a website with WebMatrix and choose the ASP.NET route, you’ll be using a brand-new coding syntax called Razor. Razor has been designed by the team to be quicker and easier to write code. You’ll notice that it allows you to flow from HTML markup to code seamlessly without having to define where the code starts and where it stops. The Razor parser does the hard work for you, allowing you to do more with fewer keystrokes.

As well as being the default syntax in WebMatrix, Razor is also the new way to code ASP.NET MVC 3. This shared syntax has a number of benefits including sharing code, migrations (which we’ll cover off a little later) and also Helpers.

Introducing Helpers

Let’s imagine that you want to sprinkle some social functionality into your website with Facebook or Twitter. It’s a common thing to do, so we wanted to make it as simple as possible for you. With Helpers it becomes a snap to do, with this code we render out a Facebook Like Button for a page.

Perhaps I want to add eCommerce payments to my website using PayPal. Well there’s a Helper for that too and we’ve taken care to make the API as simple as possible.

Now, I want you to notice that using a helper leverages the Razor syntax and looks exactly the same as accessing any of your own objects and methods.

Tons of helpers

But the helpers don’t just stop at social media or eCommerce.

In fact, there’s already a vibrant, open source community of helpers ready for developers to use. As well as social and payments with Facebook, PayPal and Twitter,

there’s helpers for forms, polls, Bit.ly as well as Razor templates that I can use in my websites.

What about if I want to get feedback for my website, or add documents from online libraries? There are helpers for that too.

If you want to add the latest Geolocation information or crowd sourced deals from Groupon, there’s Helpers to make that easier.

And if you can’t find exactly what you need, there are some great foundational helpers that will allow you to talk to any service that leverages OData or even store and consume data in the cloud with Windows Azure.

Building an app from scratch

And this is the point at which James Senior (great name) did a demo using WebMatrix to create a web site mostly from scratch.

He started off with a new project created from a template showing off the cool and fairly complete templates that come with WebMatrix. Then he leveraged the database manager built into the IDE to manage and edit the database. Once the database was squared away, he finished out the site levering the Razor syntax, a template from TemplateMonster.com and a PayPal helper.

Lastly, he showed how to publish directly from WebMatrix to a host.

Microsoft Web Application Gallery

But creating a site from scratch is not the only way to create a web site with WebMatrix. You can start with any of the close to 40 applications that are in the Microsoft Web Application Gallery to create your project. To date there have been more than 2.5 million downloads from the Microsoft Web Application Gallery. Some of these applications are ASP.NET, such as DotNetNuke, Umbraco and BlogEngine.net. Others are PHP such as WordPress, Joomla!, Drupal, MODx and Gallery.

Customizing DotNetNuke using WebMatrixI like showing better than telling so to show how awesome this workflow can be with WebMatrix, Shawn Walker and Joe Brinkman from DotNetNuke came onstage to demonstrate building a DotNetNuke site with WebMatrix. It was a great demo that showed off some great new functionality. They have some awesome new Razor based templates, can leverage SQL Server Compact Edition and more.

PHP and MySQL on Windows

But WebMatrix is not just for ASP.NET. It also supports PHP. Personally, I really like cross language tools like this. Microsoft’s investment in PHP over the past number of has been awesome and has made both PHP and MySql on Windows ready for prime time. IIS7, for example, has great support with FastCGI, WinCache, URL Rewrite and more. Create a Joomla! website with WebMatrix

At this point, I had the pleasure of bringing Ryan Ozimek on stage. Ryan is the president of Open Source Matters which is the non-profit organization that takes care of Joomla!. It’s amazing to me and it makes me very proud that Ryan was interested in getting up on stage during a Microsoft session and demo a Microsoft tool with Joomla!. It’s a testament to the investment we have make in PHP on the Windows stack, the PHP community and Joomla! in particular.

Ryan just slayed the demo too. It was awesome how easy it is to work with Joomla! with WebMatrix. He showed downloading, customizing and a ton more just like DotNetNuke. But another very useful thing is that he showed managing a MySql (which I know that I miss-pronounced on stage) with the WebMatrix database manager.

Announcing Microsoft WebMatrix RTM

When I took back the stage, I got to say, which I thought was awesome, that WebMatrix is released and you can download it right now from microsoft.com/web.

There’s multiple reasons that’s exciting. First and foremost, WebMatrix speaks to new audiences and fills gaps with existing audiences in a great way.

Second, this is the first time in history that Microsoft has launched a product at a community run event. There have been launches as VSLive and a couple of other pro-events that Microsoft is heavily involved with. But CodeMash is definitely an independent conference and the fact that we launched a product there is really a testament to the conference.

Third, as far as I know, I’m the first person to launch a Microsoft product that was not a member of the Microsoft executive ranks (VP/President/CXO…).

WebMatrix is available right now from microsoft.com/web and you can try it out for yourself. I’m really looking forward to hearing some from you about what you think of it and how you’re using it.

Many Flavors of Web Development

It was funny to talk to my brother-in-law, Tomas, on the weekend after the show. He runs IT for a school district in Kansas. He had downloaded and tried WebMatrix. I asked him if it was everything that I had promised that it would be. He said “Absolutely, I’ve already deployed two sites with it!”. His co-worker asked him, “Does this mean that I don’t have to buy Visual Studio anymore” and Thomas answered him “They are for very different purposes. WebMatrix does the simple things that were really hard to do in Visual Studio”. I was so proud of him. He got it.

WebMatrix is but one of the flavors of Web development that we talked about at during this event.

More Web Platform Updates

The Web Platform and Tools team have also been working hard on enhancements to our existing web stack.

We’ve added powerful features to ASP.NET MVC 3 like the new Razor syntax, Dependency Injection, Unobtrusive Ajax and jQuery Validation support, Global Action Filters and more.

With Visual Studio 2010 Service Pack One, the same web server that WebMatrix takes advantage of, IIS Express and SQL Server CE, is now included as a core part of your development environment.

Open Source ContributionsA subject that I’m very passionate about and have been thrilled to be involved with in some small part is that we’ve also been busy working on many open source projects too.

In March, Scott Gu announced that we were to begin contributions to jQuery, the world’s most popular JavaScript library. This past 10 months, we’ve contributed a new client-side templating engine, a data-linking plugin and a globalization plugin. These have been accepted as official plugins and the templating feature will be in a future version of the core jQuery library too.

In the past two months, we’ve also been working with the Outercurve foundation on a new open source package management system called NuGet. This project makes it easy to find and use the many open source .NET libraries out there. We’ve seen a massive movement around the NuGet project and there have been over 300 open source packages contributed.

And of course, we continue to drive the ASP.NET MVC project which is itself open source and has a vibrant community around it.

ASP.NET MVC 3 DemoThis was definitely the longest and most involved demo during the session. James Senior came back out to show a lot of great new things in ASP.NET MVC framework. I’m not going to drain the demo but some highlights included leveraging Nuget from Powershell right from within Visual Studio to grab packages that James needed for the demo, leveraging the Razor view engine, the slight and unobtrusive jQuery validation and more.

Announcing many web platform updatesAt the end of this demo, I had the great privilege of announcing that all of the technologies that we talked about are available right now for download at microsoft.com/web. That includes ASP.NET MVC Framework 3, IIS Express, SQL Server Compact, NuGet and Orchard.

We didn’t talk much about Orchard but that project dropped a 1.0 release on the same day as the WebMatrix launch.

Download your flavor of web development today...To recap, during the session you got to see a lot of different individual technologies in action but more importantly you saw how as a whole, from ASP.NET with ASP.NET web pages to ASP.NET MVC 3 to PHP, web development on the Microsoft Web Platform is evolving.

Go to microsoft.com/web to download your flavor of web development today.

You can watch it the presentation and all the demo online at http://channel9.msdn.com/Shows/Web+Camps+TV/CodeMash-2011-WebMatrix-Launch-Keynote.

ASP.NET and PHP On IIS Together

phpUntitledI got a question the other day about running both ASP.NET and PHP on the same server and whether or not it works. The short answer I gave is “Yes”. The longer answer, I’m going to give here.

In point of fact, both ASP.NET and PHP work really well on the instance of IIS. They can’t share  session state but otherwise it’s a very peaceful existence.

First of all, PHP runs really well on Windows and IIS. There’s a lot of stuff that you probably didn’t know about it. Mark Brown and I did a talk about that at ZendCon – I’ll do a full write up of that talk sometime soon.

There are a ton of great resources out there for running PHP on Windows very well.

Easiest way to install PHP on Windows
Official site for PHP on IIS – Lots of good walk throughs and how to guides here.
RuslanY’s blog about IIS, FastCGI, PHP and other interesting stuff.
Brian Swan’s blog about PHP, SQL Server and more.
PDO driver for Microsoft SQL Server
SQL Server Reporting Services SDK for PHP
PHP: WinCache
Performance improvement in Joomla using WINCACHE user cache – great info on leveraging user cache.
Interop resources from Microsoft and PHP
URL Rewrite module for IIS7

I could keep going but this post is about running both ASP.NET and PHP on the same IIS instance.

Mike Volodarsky wrote a great article on leveraging the integrated pipeline in IIS7 that included leveraging ASP.NET Forms Authentication to restrict access to a PHP application. I’m not going to rehash that entire article but rather recommend that you leverage the applications that are up in the Microsoft Web Application Gallery such as Gallery. These applications are really simple to get set up on IIS7 through the wizard style installer in the WebPI.  

The first scenario that we’ll look at is a PHP application running as a subdirectory on the same server as an ASP.NET application. The first thing I’m going to do is get an ASP.NET application up and running through the Web Platform Installer (WebPI). I’m going to use BlogEngine.NET this demo. If you don’t already have the Web Platform Installer, it’s easy to install by going to http://www.microsoft.com/web/gallery/ and clicking "Install” next to any of the applications that you want to install. If you already have it installed, simply launch the Web Platform Installer, find BlogEngine.NET and start the wizard.

firstIf you want the application to be the root of the web server, then on the page where it’s asking about location, clear out the ‘application name’ field. It makes sense once you see it but it took me a second the first time that I tried it. I already had all of the dependencies installed for BlogEngine.NET so the rest was just following the wizard.

secondOnce BlogEngine.NET is installed, I can browse out to it and make sure that it’s all working. I can, if I want, do some configuration and change the title, skin and the like. However, that’s not the point of this little exercise so I’m going to skip it for the moment.

Now I’ve got an ASP.NET application up and running as the root of my server. Now I need to place the PHP application on the box to show them running side by side. The quick one that I want to install is Gallery which is a well known PHP application that does a good job at photo galleries. There are a number of galleries listed in the Web Application Gallery but the one that we want is “Gallery”.

ThirdAgain, I’m going to install the application through the WebPI. I have most of the dependencies installed already but I’m going to use SQL Server because I’ve already got one application using it, I might as well use it for the other. That’s going to require me to install the Microsoft Driver for PHP for SQL Server 2.0 and it’s associate that helps with IIS specifically. The good news is that these dependencies are selected and installed automatically by the wizard. Once the WebPI installer finishes, click “Launch Website” and finish out the installer.

At this point I’ve got BlogEngine.NET running at http://localhost and Gallery running at http://localhost/gallery proving out scenario one where PHP can run in a sub-directory under ASP.NET. The opposite is true as well but unless someone specifically requests it, I’ll assume that you can switch this example around and do it the other direction where you have a primarily PHP site with a little bit of ASP.NET running on the same server.

These different applications can share HTTP Handlers, URL Rewrite Rules, security rules (as stated in Mike’s article) and a bunch of different aspects of IIS. What they can’t share out of the box is session state. ASP.NET can store session in a number of places, including SQL Server and theoretically it’s possible to write a custom PHP session handler that would read from that same store but I haven’t tried it so I can’t guarantee that it’ll work.

In future posts, I’ll take a look at integrating HttpModules and HttpHandlers into the PHP pipeline and see how that works. In the mean time, have fun mixing and mashing technologies.

WordPress Podcast

image

I was thrilled and honored to be a guest on the WordPress Podcast on WebMasterRadio.fm. This podcast is hosted by my friend Joost de Valk and Frederick Townes.

image I met Joost back at WordCamp Ireland back in March. That was a fun time. He and I talked about just about everything from being fathers to deep technical bits comparing various types of caching mechanisms. He even helped me with a number of SEO tips on my web site. Not sure if you’ve noticed but I’m turning up in a lot more searches thanks to him – he knows his stuff. Don’t believe me? Think just for a moment about how competitive this field is and then do a search for WordPress SEO in your favorite search engine and tell me what you think then… 😉

image I haven’t actually met Frederick yet but he comes with just a touch of credibility himself being the CTO of Mashable. He’s also the maintainer of the W3 Total Cache plugin. I’m a little jealous of him at the moment though as he’s been based in Florence, Italy for the past year or so… Must be rough.

One thing I will say though is that it’s becoming imperative that I get one of those spankin cartoon avatars.

The show was good but it *flew* by. Before I knew it, the WebMasterRadio dude was IMing us that we had 2 minutes left. All I could think about at points was that I hadn’t even mentioned the SEO toolkit, Windows Live Writer, URL Rewrite and a ton of other stuff that I wanted to get to. Oh well, we talked about a bunch of stuff. Maybe I can convince them there’s enough interesting content to do another show at some point.

So, what I did have time to talk about was a bunch of stuff. We started off with a little bit about me – (which is always a little embarrassing and I hate doing it but it is what it is).

Why the bleep is Microsoft doing this?!Joost started off by talking about how I ended up on the show in the first place. About a month ago, Zach Owens and some other guys from Redmond launched a site called http://wordpress.visitmix.com which talks about running WordPress on Windows and how great of an experience that can be. Not only that but there’s another micro-site that just went up at http://www.microsoft.com/web/wordpress. On both of these sites you can find links to the Web Platform Installer, the SQL Server plug-in for WordPress (in beta right now), plug-ins written by Microsoft for WordPress such as Windows Azure Storage for WordPress which allows us to store our files on Azure Storage for all of our media. 

I don’t know if you’ve noticed, but this site (JoshHolmes.com) is actually a WordPress blog as well. I switched over from dasBlog a few months back. dasBlog served me well but it was getting time to move on and WordPress was at the top of the list. Joost was actually the one that convinced me to migrate to WordPress. It didn’t take a tremendous amount of work to do it either. I used DasBlogML to suck out all of the content and then I imported it into WordPress, converted my theme over and was happy.

In addition to WordPress specific things stuff going on at Microsoft, there’s been a lot of support for PHP in general that has gone into IIS, SQL Server and many more of the Microsoft platforms. WinCache, for example, is a great caching tool for PHP on IIS. Just turning it on will result in a 3x or so improvement in performance in PHP on IIS. RuslanY has a great post on getting WinCache support into WordPress. And if you want to see how well it’s working, check out this module that shows you WinCache stats in WordPress. It was written by Kanwaljeet Singla who is the engineer behing FastCGI and WinCache. Cool stuff.

We also talked a little about JumpIn Camp and what happened there. phpBB getting into the Web Application Gallery and adding SQL Server support was one of the huge things that came out of that. 

image We also chatted about SQL Server a little. Frederick asked me about, to frame it in context for those that are not database or back end nuts, why this was important. It was a good question. In short, there’s a couple of really good reasons why someone would care. The first is that if one is at a company that already has SQL Server, it’s going to make a lot more sense to stand up your WordPress blog on SQL Server rather than introducing a new database engine and more administration to the existing infrastructure. A second great reason is that SQL Server has a ton of fantastic features that WordPress module authors could leverage such as Spatial Data or the fantastic analytics and reporting services that it offers. I teased Joost a little on the podcast about writing a module about that, but I think he knows as well as I do that I was serious as a heart attack that it would be an awesome set of modules. I’m hoping that Joost and others will take that challenge and run with it. If you do, let me know – I’ll be happy to help with whatever technical know-how that you need.

image Then we turned to PHP on Azure. This happens to be a passion of mine and I talk about it a lot… 🙂 I probably rambled a little on it talking about the differences between Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) and what specifically Azure offers. If I was redoing the conversation, I would have cut a little on this conversation in favor of some of the things I didn’t mention such as URL rewrite… Oh well – I’ll do that here.

After that we went back to talking about the plug-ins that we found on http://www.microsoft.com/web/wordpress. There’s a handful of really good ones out there. One that struck Joost’s fancy is the Bing Maps plug in. Using WordPress short code and this plug in, it’s really simple to throw in a Bing Map on your blog.

Somewhere in here we were given the 2 minute warning.

All I had time left to talk about was the Toughest Developer Puzzle Ever.

I had a blast on the podcast and hope to be a repeat guest at some point. 

phpBB is in the Web Application Gallery

image You might have seen me tweet about the fact that PHPBB had submitted to the Web Application Gallery a couple of weeks back. Well, it’s official – the phpBB package has been finished, tested and accepted into the Web Application Gallery. You can see the official announcement on the Microsoft Web Platform blog. That means that you can install phpBB on Windows through the Web Platform Installer (WebPI) which gives you a very simple wizard to walk through.

Try phpBB on the Microsoft Web Platform today!

 

The WebPI will take a look at the dependencies that the project has requested and pull those in as well. In the case of phpBB, this includes PHP 5.2.13 (and higher when the WebPI supports it), SQL Server (Yes, I said SQL Server!) and more. It will configure IIS for FastCGI support and the whole nine yards.

The work to accomplish all of this awesome support was done at JumpIn Camp by Nils Aderman, Chris Smith and Henry Sudhof of the phpBB core team. I’ll be talking a lot more about JumpIn Camp over the next couple of weeks but in short, JumpIn Camp was an event that I helped organize, along with Yuriy Zaytsev, Will Coleman and Bram Veenhof in Zurich, Switzerland. There were contributors from a number of the top PHP applications in the world that attended for the opportunity to work on their own projects to support various Microsoft technologies (such as IIS, WebPI, SQL Server, SQL Azure, Silverlight…) with Microsoft technology experts available for technical support.

The SQL Server patch was developed by Microsoft in line with our interoperability efforts in the open source community. The new SQL Server for PHP 1.1 driver that was released back in October, 2009 enables phpBB with UTF-8 on SQL Server, Multiple Active Record Sets (MARS) and the ability to leverage SQL Azure. phpBB has accepted that patch now in their 3.0.7 release.

There are a couple more things that are exciting about all of this to me.

First, it only took a handful of days at JumpIn Camp to pull together the WebPI package + WinCache support for superior performance on Windows. For full disclosure there was some testing and a few minor bugs fixed since then but the lions share of the work was done at JumpIn Camp.

Second, phpBB is the first of the PHP application that can be installed through the WebPI with SQL Server support. I’m hoping that it will become the trend now that the SQL Server Driver for PHP 2.0 CTP with PDO is in CTP and people can start playing with it. I know that there are several applications that are starting testing with the new driver.

Third, it was a ton of fun to get to know the folks from phpBB and all of the folks that attended JumpIn Camp. I’ve been chatting with Nils online for about 6-9 months now but this was the first time that I had met him in person.

Wrapping up – I’m looking forward to seeing a lot more of the work that came out of the JumpIn Camp wrapping up and going public over the next handful of months. It’s going to be a fun time.

PHP On Azure Resources

I’m at JumpIn Camp in Zurich and we’ve been diving deep into PHP on Azure. One of the things that we’ve done is talk about a ton of resources that are available out there on the web to learn more about PHP on Azure. To that end, I thought I’d collect a few of them here on my blog.

In the morning, I talked at a high level about what Azure is, how the various roles work and how to run PHP on Azure. My deck that I used was the first half of the same deck that I used on the PHP On Azure World Tour.

Another great starting point and set of resources is Maarten Balliauw’s Blog itself. He’s been helping out here at JumpIn Camp from a technical perspective on Azure and running PHP on Windows in the first place. He did the next part of the session diving deep into the PHP on Azure SDK.

You’ll notice some overlap between our desk because we’re largely talking about the same SDK and leveraging the same code examples.

Maarten’s first deck that he used to talk about Blog, Queue and Table storage is:

The second one that Maarten used to talk about SQL Azure is:

Maarten also did a demo of an app called ImageCloud leverages both a Web and Worker role to do front end uploading of an image and backend processing of that image. That code can be found at ImageCloud Azure Demo Application.

For some great resources on architecture guidance, take a look at Windows Azure Architecture Guidance. This is put out by the Patterns and Practices group at Microsoft.

 

Another great resource is Benchmarking and Guidance for Windows Azure. This was created and launched by the Extreme Computing Group (aka XCG).

 

More resources:

Microsoft Windows Azure Interop

Microsoft Interop Bridges

Windows Azure 4 Eclipse

PHP Azure SDK

Windows Azure MySQL PHP Solution Accelerator

 

I’ll be adding to these resources over the course of the week so check back for lots more.

Making PHP faster on IIS

I’ve been doing quite a bit of work with PHP on the Microsoft stack recently. That includes my work with PHP on Azure and moving my blog to WordPress. I’ll be honest though and say that I’m simply standing on the shoulders of giants. The PHP on IIS team, including Ruslan Yakushev, the Web Application Gallery team, including Faith Allington, Crystal Hoyer and Mai-lan Tomsen Bukovec (all three of whom I wish would start blogging), the Microsoft Web marketing team (who happen to be extremely technical and are a credit to marketers everywhere), including Mark Brown, the Microsoft Open Source Technology Center (OSTC).

An example of this is that when I spoke at WordCamp Ireland, I talked about the amazing improvements in FastCGI over the past few years, the Web Application Gallery and Web Platform Installer (WebPI), URL Redirect, WinCache and many other things that Microsoft is doing to embrace open source technologies. My slides are below:

Now you can hear about these improvements from Ruslan Yakushev and Mark Brown themselves talking about these improvements, specifically the ones related to performance, with the good folks over at PHP Architect on a webcast…

For all the details, check out the web cast at Making PHP faster on IIS!