Info

Ben is Vice President of Mobile Engineering at Walmart.com, where he works closely with his long-time friend Dion Almaer.

Archive for March, 2007

Signs of the demise of my Vista box blue-screening multiple times a day have been greatly exaggerated. After upgrading to nVidia’s latest drivers, the problem has not in fact gone away, despite the longest respite to date right after the install (>24 hours). Upon returning after a trip, the system had blue-screened (and reported the video driver as the culprit) and it has since rebooted three times in less than 24 hours giving the same error.

I can’t take this any more… I’m wiping Vista off the system and replacing it with a stable OS. I’m amazed that after one of the longest and most open pre-release periods in Windows history, Vista remains unfit for production use on non-exotic, mainstream hardware (Intel motherboard, nVidia GeForce 6x series card, etc.).

Pete is a Product Manager on the IE team. His title is “Product Manager, Web Tools.”

I asked Pete to clarify the hierarchy of the IE team because I seem to have met so many different “Product Managers” on the IE team.

The Program Manager is the key writing the spec for how a product should work. That’s Chris Wilson’s role; his official title is somewhere between “Program Manager” and “Architect”. The Product Managers (like Pete) are responsible for making certain end-to-end scenarios work. Pete is one of four Product Manager responsible for IE; Pete’s role is to make sure IE is a great web developer tool.

“The IE team is not about crushing the competition, its about embracing open-standards about making life easier for developers.”

Q: You are aware that your peers are saying things that “crushing the competition”, right?

I am, and I wish they wouldn’t.

Every time we make a change to make IE more standards compliant, we risk breaking the web — we have 500,000,000 users. There was a lot of chatter about how many sites are IE-only and that locks out other platforms, etc. and Pete said, “When you find something like that, tell me, because I’d like to help them fix it.”

There was some talk about Microsoft’s tools encouraging folks to write IE-only sites, but Pete and others pointed out that modern versions of Visual Studio encourage developers to target web standards (though they can be used to target IE-only features).

Someone joked, “Hey, can my mom call you when IE is broken?” Pete mentioned that his mom calls him for support. He pointed out that Microsoft has a free IE7 support hotline that any user can call. (He didn’t know the number.)

He did the Don Box open up notepad thing and wrote down a bunch of the questions the group has:

Q: What do you want to see next?

Pete started out pointing out that they hired Molly H. to bring more respected influentials in-house to influence standards. He also pointed out that they take the CSS spec seriously and all have printed versions they read. Folks chimed in with various wants:

  • improved support for unencumbered media formats, like OGG
  • canvas tag and stuff from the WHATWG
  • an easier add-on model than COM
  • in-line search like Firefox

Q: How often do we ship, and how do we deal with WU/AU?

“We committed to ship every 12/18/24 months. We’re still behind that commitment and you can expect to see regular previews and releases of IE.” And lot of folks complained that the IE7 auto-patching feature is automatically applied before many users had a chance to to decide, such as in corporate environments. Pete asked, “What would you have us do differently?” He pointed out that we knew in advanced that it was coming and it arrived when MSFT said it would. The complainers on this issue didn’t really come up with any coherent feedback on what to do differently.

Q: When are you going to switch to the gecko engine?

“We are using Trident, its very baked in to our system.” He mentioned that using a JS engine other than Trident’s is very difficult. I chimed in and asked if they were considering integration with Tamarin or at least ensuring compatibility with the flavor of ECMAScript that Tamarin supports. I asked what he thought of JS2 (ECMAScript 4) and Pete replied that he was a bit worried about the impact that revising the JS runtime to such a large degree (to support JS2) would have on existing JS code.

Q: Prioritizing incompatibility issues

Pete talked about Quirks versus Standards rendering models. I asked if there was a way to see what mode the page is rendered in. He said there wasn’t — I asked him to add it.

Q: How are we contributing back to open source?

“We’re a closed source proprietary browser and that’s not going to change anytime soon.” The questioner clarified that he wasn’t talking about open-sourcing IE, he was talking about leveraging the community to fix issues in IE. Pete said that they are getting more involved in the standards bodies, they went down to San Jose and did a panel with Opera (Hokum) and Firefox (Mike Shaver) at the Silicon Valley Web Builders User Group, and so forth. He also pointed at that they are participating with people like Molly and being at cutting-edge conferences that aren’t MSFT events, etc. He asked the questioner, “Are there better ways to do that?” The questioner didn’t proffer any ideas.

Another questioner suggested that MSFT hire someone to work on Firefox and other browsers to be a liaison between IE and those projects to suggest features/patches, etc. that MSFT apply to IE. “I hope you have seen with IE7 a significant increase in our commitment to standards, and as future versions ship, you’ll see more of that.”

Folks suggested that the IE team should come forward and tell the community what changes will impact the user base in advance. I pointed out that the IE7 team actually did a great job of this, but told them that they should be more open about plans to support emerging web standards like the canvas tag and not hide behind patent policies issues, but then… I caught myself mid-stream recalling the recent Apple canvas flap (with Apple claiming a patent on canvas) and Pete looked at me and smiled. “Exactly.” This was a bit of a watershed event for me as Chris Wilson’s complaints about the patent policy of the WHATWG being incompatible with MSFT (as compared to W3C) suddenly seemed prescient. I’m not a lawyer, so I’ll beg off further speculation on this point, but it shut me up really quickly on the canvas support issue.

Q: How are we getting to a standard everyone can use?

They are joining the new W3C committees on HTML, including the new HTML Working Group. Someone asked if they would stop adding proprietary features and just “community” features. Pete said, “We’ll always have proprietary features, but we’ll also support web standards.”

Q: How could we create detailed function specs and docs for developers on the behavior of IE?

We asked Pete to provide detailed specs on how IE works to cover situations like, for example, when IE caches and when it doesn’t in the context of dynamic requests, and so forth. I asked Pete if they could provide some sort of liaison to the community who in cases like this could look at the source code and provide detailed documentation on how a particular aspect of IE behaves. He agreed this would be cool and in chatting with him after the session, he thinks they could make this happen. Wow, imagine a world where instead of having folks bang their head against the wall over and over MSFT could actually tell us exactly how detailed aspects of the browser work. There are some problems with the concept, to be sure, but…

In after-the-prezo chit-chat he also mentioned that MSDN is getting a makeover in the next few months.

We also told Pete that better debugging tools would be huge. In particular, I told him that the lack of visibility into the memory management of the browser makes developing large-scale Ajax apps a huge pain.

PowerShell is a “revolutionary new interactive shell”. I heard about this two years ago at MTS05, so I’m not terribly interested in it, but last time Bill Hillf gave the demo, not the Program Manager as in this case.

He covered the basics up-front, like how PowerShell (formerly Monad) is a managed app that can be used to include the .NET libraries into your shell scripts, how you can pipe objects in addition to text streams together, and so forth.

Jim emphasized that you can continue to use your existing Windows shell scripts with no changes in the environment and that the the on-line docs have a ton of ready-to-use examples.

He talked about the need for shell scripts to accommodate organic growth: sys admins need to put out a fire and it grows from there. (As an aside, he said his slide deck was built with a PowerShell script; he likes to automate everything.)

In the demos, Jim showed off its “rich aliasing capability” to support ls, ps, and other Unix commands. Jim came to Microsoft when they acquired his Unix-on-the-WinNT-Kernel company so he prefers the Unix way.

Because PowerShell is object-oriented, its built-in commands (called “cmdlets”) return objects. So when you type a command that lists services, they are displayed as a textual list of services because PowerShell’s built-in logic decides to display those objects as a text line. You can easily render the objects in custom ways, and of course wire the objects together with other commands to do really interesting things.

He demoed listing all the running services as text, as a detailed list, as an HTML table, as HTML, etc., all by passing the results of a “get-services” command through various additional commands.

Its got a built-in type coercion system that converts console text into the type expected by a command. You can’t extend its built-in type coercion routines for built-in .NET types, but you can create your own type converters for custom types.

They use $_ from Perl to represent the current object that is being inspected, such as:

ps | where { $_.handles -gt 1000 }

Which says list the processes where the handles is greater than 1000. Here’s the next step:

ps | where { $_.handles -gt 1000 } | ft processname, company

Which displays the processes with only two columns: processname and company. This example shows the power of matching against object properties as a simple grep would be less than useful given that there are a ton of numbers in the output — but I could have reduced the output to just the handles column and done a grep.

So I asked him if in his experience doing matching based on object properties is generally useful as opposed to the simplicity of the grep approach. He claimed that it absolutely has been a huge advantage as he’s written thousands of his own scripts. He showed off a number of ways in which matching against object properties is a big win. He moved so fast I couldn’t really write down all the stuff he showed, but it was very cool.

An audience member asked, “How big is this thing?” It turns out its huge. The footprint of the PowerShell process he showed us was somewhere between 45-121 MB (I don’t know how to read the memory output and neither did he). Bash of course is a small, small fraction of this.

You can assign any object to an environment variable and manipulate the object subsequently. He demoed this syntax:

$a = get-ipconfig
$a[0].hostname

which stores the object returned by get-ipconfig into the variable and then gets the hostname off the first interface configuration object. Sweeeet. He riffed off this example by storing the results of ps into a variable and then interrogating the resulting objects for all kinds of info on the processes.

You can serialize/deserialize objects into XML for use across sessions, but the serializer only goes two levels deep and will of course punt on non-serializable fields. You can’t send live objects across PowerShell sessions.

Another neat trick:

foreach ( $i in ls ) { "{0,8} {1}" -f $i.length,$i.name }

This shows a list of files with the size next to the name of the file.

Q: Will sysadmins really be able to use all this stuff? Who’s the target market?

This is for the advanced Unix system administrator who has to do Windows and Unix and used to say, “Man, I wish I could do in Windows what I can do in Unix.” Now I want them to say, “Man, I wish I could do in Unix what I can do with PowerShell on Windows.” The next version of PowerShell will target making it easier for the novice script (through wizards, etc.) — ideas still up in the air on this one.

PowerShell is available for download and will be part of the Longhorn Server release.

Q: Wouldn’t PowerShell be an ideal open-source project?

We are seriously considering that. We’ve had 400,000 downloads of PowerShell since we released it; its capturing the imagination of scripters on Windows.

Q: Can I run this on Mono?

We don’t release the source, and it requires 2.0, and I don’t think that Mono supports 2.0.

John was introduced as a world-wide marathon runner. I asked him which was the most challenging; he answered, “Seattle” but quickly followed up with “LA and India.”

John has a very interesting job. While he didn’t phrase it this way, his job is all about creating new markets all across the world into which Microsoft can sell. When I consider taking a job or doing a startup, I consider a 4-5 liquidity to be a somewhat long-term play. Its hard to wrap my mind around the scale of a company that is able to plan this far ahead and justify the expenditure to do so.

I asked John how long MSFT was prepared to wait before it say an ROI from his efforts in a given markets. He said he expected to see large measurable results in 3-5 years across his entire program (where results are increased numbers of folks getting certifications, number of MSFT partner ISVs, etc.) but noted that some markets may take much longer than others to see any results.

His group works with 50 different countries. He talked about partnering with the US AID in Croatia to create educational centers where local students can select their own curricula and learn all about tech, etc.

When pressed by a questioner, John said, “It’s not about building with our stuff — its about getting them to build at all, and we believe that people will chose our stuff.” Uh huh.

John is the latest in a line of idealist speakers we’ve heard at this event that say things like, “We’re out to do the right thing in the community and we’re content to say that a rising tide lifts all boats.” These idealists are quick to point out that Microsoft is trying to make money, but they insist that Microsoft is willing to make indirect revenue on the back of some form of altruism.

This is the right message for many in this group, but I seriously doubt that the ultimate leadership of the company sees things this way based on a long track record of consistent behavior, and indeed, when we’re exposed to some of the more pragmatic senior leadership of the company (Bill Hillf, Don Box) those more traditional elements of the company poke out.

Kind of fun to see.

Some of the attendees suggested that by showing off WPF eye-candy to young kids in emerging markets, they would have more success in recruiting the rising generation to the MSFT camp than they would by making business deals and trying to grow economies, etc.

One of the attendees suggested that Dean Kamen‘s efforts at driving kids towards engineering through his robotic competitions are great for sending kids to hardware engineering but quite poor at driving them to software.

I asked if John’s list of programs was driven by, say, government representatives coming to MSFT and saying, “This is a need we have” or if its a result of their own research to identify these specific needs. He indicated it was the latter and claimed their approach wasn’t really all that scientific.

They have 110+ “Microsoft Innovation Centers” in 45+ countries through the world that offering training, labs, etc. and host local programs and so forth. He said they build these in cooperation with “local hosts”. I’m sure he didn’t mean that in the parasitic context.

He also used the expression “double-click” to focus in on a subject; this marks the second person in as many months I’ve heard use this. I really hope this doesn’t catch on.

I asked to see the list of all the metrics he really uses; he responded that “utilization of the innovation centers” is a big deal to him; making sure that they don’t go empty.

Celso, a designer at MSFT, got to show off the best demos (though admittedly they were just the demos that ship with Expression).

Celso showing off Expression

I enjoyed seeing his demo of a page turning app, which I had just seen at Adobe’s Engage event using Flash not long ago.

WPF page flipping

He also showed off WPF/E, demo’ing emulated 3D by moving around some wireframes and creating an interactive Rubix Cube. He also showed the page turn demo using WPF/E, and the perf seemed par with the full WPF version. Both versions were faster than the Flash version, but it wasn’t rendering an embedded web control on each page like Flash was, and I’m pretty sure it wouldn’t be able to do that.

WPF/E 3D

WPF/E can do video and it seemed to do it very fast — he showed off multiple videos playing in relatively large sizes simultaneously without frame rate choking. It can also do full-screen, which is very interesting.

Cool web video player

He also showed a cool step-by-step tutorial of creating a set of photos orbiting around a blue sphere.

Celso emphasized Microsoft’s separation between designers and developers. I was impressed by how easy Expression makes it to get to the animation, data binding, XML parsing, and other capabilities of the platform. Apple, Adobe, and Microsoft are clearly all innovating heavily in this space. I haven’t seen all the tooling behind Core Animation, but Flex and Expression seem neck-and-neck on the tooling front. Swing? When compared to these kinds of tools, it doesn’t even seem to be running in the same race.

Slightly less clear are the advantages that WPF/E hold, if any, over the Flash/Flex stack, but time and further investigations will tell the tale there.

I was very disappointed that MSFT didn’t make available engineers or PMs on the WPF or WPF/E teams. Celso couldn’t answer futures questions and technical questions. Ugh. It was also pretty lame that he gave his WPF/E demos on WinXP and not OS X (to reassure us that xplaf perf is there).

Dion’s got the full write-up on Joe Stagner. I’ve got a few quotes:

“We’re not so interested in the odd Ajax widgets or effects; we’re interested in enabling whole new types of applications powered by Ajax.” By that, I think he meant that they want to make it easy to use the entire .NET stack and Microsoft plug-ins in ASP.NET apps — because the supporting example he gave was embedding a MSN Earth widget into an ASP.NET app. Hmm…

“We created our own client-side framework because we felt like making JavaScript as close to an object-oriented language as possible was necessary for making it viable for enterprise software development.”

The free Visual Web Developer version of Visual Studio doing ASP.NET development:

Visual Studio

So, Joe runs his own kick-boxing gym. At one point in the talk, he showed us a demo app that had something to do with managing athletes. I asked him if he was showing us the code he used to manage his gym. He took off his mic and ran off the stage towards me. For a brief moment, my life flashed before me in visions of being kick-boxed to the ground as my wisecrack finally sent Joe over the edge. But instead, he ran up and whispered into my ear, “My site runs on phpNuke.”

Bill and Carlos

The IIS7 team chatted about why IIS doesn’t suck anymore. They started out talking about how IIS7 is no longer a big monolithic codebase; its code a pluggable architecture, and their standard service plug-ins use standard public APIs that other plug-in creators can consume. They have a legacy ISAPI plug-in model as well.

Carlos did a live coding session to demonstrate their extensibility model, which supports managed code:

iis-livecode-small.png

The extensibility model looks a lot like the servlet API at first blush but is quite different. They have an IHttpModule interface that gives you the ability to register event handlers on IIS startup. The event handlers are passed a context object that includes a large number of event types to which you can add custom behavior.

Bill also showed how easy it is to configure IIS7 with XML files. These config files can be global or on a per-server instance basis. They have an XSD for it too, so its quite toolable. They are going to come back and talk about that more in a bit.

They’ve also improved the error messages presented to the user; he configured the server via XML to forbid directory listings, and the error page shown was fairly comprehensive and not as ugly as I’ve seen in the past.

He also showed how easy it is to remove all the configuration modules from a specific server instance and build it up from scratch using just those modules you want. For example, here’s a snippet from the config file:

<modules>
  <clear />
  <add name="DefaultDocumentModule" lockItem="true" />
</modules>

(The “lockItem” attribute is a general attribute that prevents child XML files from overriding the configuration item — e.g., for virtual subhosts).

Bill also talked about how you can configure IIS7 to log rich information under custom conditions. So you can say for every request that takes more than 30 seconds, send some admin somewhere the HTTP request responsible, etc. (or any custom action).

They’ve also done a lot of work to optimize the performance of PHP on IIS7 in cooperation with Zend. Zend is working on a fast PHP engine, and MSFT is working on a fast API that allows Zend to work very closely with IIS by implementing the FastCGI standard.

Bill gave a demo of configuring IIS7 to integrate with PHP demoing a photo slideshow app (qdig). By switching from CGI to FastCGI, they doubled the throughput (would have gone higher he said if the photo app weren’t so disk-bound). He then demoed “dynamic response caching”, which of course dramatically increases perf; in this case, from 50 req/sec to 7000 req/sec.

The next demo was integrating ASP.NET authentication into a PHP application. As part of the demo, he chatted about how you can use all kinds of different stores for users/credentials, and of course you can easily create your own store. The demo failed, but was neat.

Carlos chatted about how the configuration system is based on the XML mechanism, and the GUI is simply “the world’s prettiest XML editor.” One of the impressive bits was that when you goof up the config file, it gives you rich error messages telling you exactly what was broken. Brought back bad, bad, NCSA HTTPd and Apache configuration memories. He also highlighted the problem of plaintext passwords in the config file and showed how you can paste an encrypted string into the config file in place of the password.

Changes to the config values are applied automatically without server restarting.

They showed off a few times how easy it is to add your own management modules to IIS and generally tweak the crap out of the system.

I walked away fairly impressed with this one. Who doesn’t love Apache, but IIS7 seems to trump it pretty handily in both configurability, manageability, and extensibility. I’d love to see some realistic perf numbers, especially in a Java environment. I asked about any perf comparisons between IIS7 front-ending Java web apps versus Apache on Windows, but they have no data on that.

“Sanjay P”, the VP of Developer and Platform Evangelism, chatted with us. No slides, just a conversation. Sanjay’s style was unique and engaging: he walked around the room, staring down everyone, and if you maintained eye contact, you got immediately engaged in a conversation.

Sanjay Parthasarathy

Most of the time was spent chatting about Microsoft’s developer outreach strategy and attendees poured in the feedback about how we thought Microsoft could do a better job reaching out to developers and customers.

Some of the interested tidbits that emerged:

  • Microsoft is about to launch a “prosumer” community called Channel 10
  • They are working on launching web developer and student communities
  • I asked why he thought they hadn’t seen mass migration from Java to .NET. He said he thought they had. He said 3 years ago they did a survey of 36,000 developers (“Which developers?” I asked; “Not just MSDN, wide industry swath” he said) and 30% of them were using Java. This year, he says, 73% say they use .NET and 53% say they are using Java EE. Unfortunately, he couldn’t say how many were using .NET three years ago and wasn’t clear on whether the change from “Java” three years ago to “Java EE” was significant, etc.
  • I followed up with asking why he thought no Java luminaries had moved over; he said they simply can’t convert zealots. We had a long conversation about me contending that they simply weren’t getting their message out, that many people simply don’t know how compelling their platform is

The one quote of interest I got was, “I don’t care if people ‘move’ to .NET, they can do all the Java they want, as long as they use .NET and Java.”

Mozilla has released a cute little poster:

open.jpg

Its interesting to see Mozilla hide behind the “open standards” banner while they continue to innovate by implementing new features that vary from being based on tenuous open “standards” to straight-up proprietary (though transparent) solutions.

The pessimists would say that this whole “We’re not evil, our interests are your interests” marketing tactic that Mozilla and Google employ is simply good marketing (gee, I’m sitting at MTS07 right now, why would I say that?); the optimists posit that these guys are fighting for the community and for “the forces of good.”

I’m not quite sure where I fall at the moment in judging these guys. In a way, its refreshing to deal with a company like Microsoft where you can clearly judge their motives based on the simplicity of their business model.

Sam Ramji

“In 1995, Microsoft was the company that missed the Internet. In 2005, I don’t think you could say that. It was the company that missed open-source. In 2015, I don’t think you’re going to be able to say that. That’s my vision and the timeline I’m working on.”

After relaying an anecdote about taking the IIS PM aside, showing him Apache running things 10x faster and having him say, “No, no, that’s just not possible”, Sam said, “Sometimes we have to take people aside and tell them that their baby is ugly.” This mission comes down from Steve Ballmer — rubbing it in our noses when open-source is better than our product — and we take it seriously.

Sam spent a lot of time talking about how Microsoft wants to play nice with OSS, they want to interop to please the customer, but the audience didn’t let him off easy. Many folks asked heated questions about Samba / SMB2, lack of Vista interop with OS X, and so forth. Sam did a good of parrying and generally keeping his composure. Finally when he was backed into a corner he said, “Look, its not 2015 yet, but we’re trying to improve and we’ll get there.”

“Would I like to contribute to Samba? You bet. Am I constrained by the fact he testified against us in the EU and the general politics between Steve and Jeremy? Yes. My hands are tied. That sucks. If Jeremy [Allison] would just shut up, I could help him, but that’s a different issue.”

Various OSS projects from Sam's team

“I’m on [this big fancy expert group on Interop involving the UN and others] and I’ve never heard that interop with OS X is important.” An audience member interjected, “I can’t believe that!” Sam: “Please believe that I’m being honest with you.” Audience member: “I believe you, I just find the reality sad [that you haven't heard what is such an obvious need in the community.]“

Q: “Why can’t you spend some of your time committing code to Firefox?” and “If Firefox is a competitor, why would you contribute code to Firefox?”

If someone upgrades to Vista because they hear that Firefox runs better on Vista than on WinXP, I’m happy with that. BitTorrent is an immensely popular Windows application; if we can make it run better on Vista [thus driving upgrades], I’m happy with that.

Q: “I assume you come into conflicts with the product teams.”

I don’t report to them. I don’t care what they say. “I’m making decisions based on a rational plan. If individuals in vertical silos [don't see the big picture], that’s not my problem.”

70% of apps are developed with PHP. Under 20% of those deployments are to Windows Server. Those are terribly economics for us. We did some analysis, we talked to Zend, and the answer was the community saing, “Well, we just didn’t know how to optimize our code on Windows.” Was that all? We decided to take some real-world PHP applications, we’re going to optimize them on Windows, compare them to Linux, and make you cry. We find the performance on II6 was really bad. Like ten times worse than the same hardware on Linux. You’d have to be insane to run this on Windows.

Bill Staples threw the team into overdrive to try and fix this problem. Linux lets you fork processes for very low cost. On Windows, its the opposite; we prefer threads. With PHP, our libraries aren’t thread-safe, so to scale, you spawn processes. This was the root of the problem. So Bill’s team implemented some of the same performance optimizations that we had used to target .NET code to target PHP. The end result is IIS7 on Longhorn will be dramatically improved to run PHP.

Everyone remembers one number about Microsoft: $44B, what we made at the end of June ’06. People forget the other number: 96%. That’s the amount of our revenue that comes through indirect channels. We’re the last people in the chain to get paid. There’s no real difference between that model and how most open-source companies make money. Open source is a huge opportunity for us to make money selling servers and infrastructure.

Follow

Get every new post delivered to your Inbox.