web applications

"Extreme JavaScript Performance" (from JSConf.eu, November 7)

thomas fuchsTake a look at the slides from Extreme JavaScript Performance, a presentation by Thomas Fuchs, creator of the script.aculo.us JavaScript library, collaborator on the book Agile Web Development with Rails and one of the people behind FailCamp. He gave the presentation last week at JSConf.eu in Berlin.

In the presentation, Thomas looked at six simple things you can do to boost the performance of your JavaScript:

  • Use inline functions instead of function calls.
  • Embrace the language – using the language’s conventions yields unexpectedly faster code. Instantiate arrays using var myArray = [] instead of var a = new Array, and instantiate objects using var myObject = {} instead of var o = new Object.
  • Unroll your loops! (A trick so old that we covered it when I was in school!)
  • Cache globals. If you’re going to access a global object, store a local reference and use that instead.
  • Tune your boolean expressions: in logical “AND” (&&) operations, make the operand most likely to be false the first one.
  • Watch out for slow constructs such as with blocks, try/catch and features that JIT compilers don’t support well.

The presentation includes benchmarks for the four most common JavaScript engines:

  • SpiderMonkey (Firefox 3.5)
  • JavaScript Core (Safari 4)
  • JScript (Internet Explorer 8)
  • V8 (Google Chrome)

And yes, he does warn you – at least twice – of the dangers of premature optimization.

JavaScript Performance Rocks

JavaScript performance rocks

If you liked Extreme JavaScript Performance, you’ll love the ebook Thomas co-authored with Amy Hoy, JavaScript Performance Rocks! Actually, it’s more than just a book – it’s four books and a profiling tool:

  • Book 1: Understanding and Measuring Performance (or: “Dude, Where’s My Performance?”) – “In which our brave hero or heroine (that’s you!) apprentices to the cryptic-but-charming Master (that’s us) and learns how to get into the enemy’s head—the better to eat it alive, my dear.”
  • Book 2: Loadtime (or: “The Land of Unicorn Tears”) – “Loadtime is a sad time, a time of of enormous, slow-loading assets; of maxed-out request queues; of bloated, waddling DOMs. Of limp white screens. Most of the world’s worst web performance woes? They live and breed in Loadtime. That’s why it’s the Land of Unicorn Tears, because unicorns hate slow web apps just as much as the rest of us. And they have magical horns. So there.“
  • Book 3: Runtime (or: “’Cuz Tuning Loops is Hardcore”) – “The vast majority of the problems that the vast majority of apps will have can be solved with loadtime fixes of various stripes. But just in case you’re unique, and special, and have particularly intractable issues—or are just a glutton for punishment—we have written a third booklet, all about speeding up code when it runs.”
  • Book 4: Interface Coping Strategies (or: “If You Can’t Fix It, Fake It”) – “Come across a performance problem that you really can’t fix? Long-running calculations? Slow server you can’t tune up? If you can’t make it, fake it. You can make your app feel faster to your customers, even if you can’t fix the underlying problem. And, let’s face it, that’s what your customers care about.”
  • The DOM Monster profiling tool.

JavaScript Performance Rocks! isn’t your ordinary ebook, with material laid out for a dead-tree book simply cast in PDF form. It was designed from the ground up for onscreen reading, written in an entertaining way to keep you amused and your mind ready to learn, and written in a fun, irreverent way so that you don’t zone out. I know Thomas and Amy personally and have seen them teach; trust me – you want to learn from them.

JavaScript Performance Rocks! usually sells for US$49, but there’s a special deal right now – the first 500 books are selling for 10 dollars less — US$39. You’ve got two good reason to buy immediately: first, there’s this $10 discount, and second, the US/Canada exchange rate’s pretty good right now (as I write this, the PayPal exchange rate is CAD$1 = US$0.92).

I’ve already ordered my copy.

This article also appears in Canadian Developer Connection.

{ 2 comments }

monkey-knife-fight Platform wars are like monkey knife fights: amusing at first, but regrettable and messy in the end.

You don’t see this very often, and it’s a shame: Jacob Kaplan-Moss, co-creator of Django, the Python-based MVC web application framework, wrote a great article titled Thank You, Rails. From the article’s opening paragraph:

It’s fashionable, or perhaps inevitable, for tech communities to trash their competition…We geeks make arguing over minor technical points into a kind of art.

The most important point in his essay is a few paragraphs down. He points out that while having a competitor often lends focus to a developer community and that a rivalry can often bring about excellence among all parties concerned, it can also bring bitterness and nastiness. He wants to counter those latter things, and so he writes:

I think it’s important to recognize that we in the web development community do in fact owe Rails and the Rails community a debt of gratitude. Rails helped reframe the way we think about web development, and even those who’ve never touched Rails nevertheless are probably reaping indirect benefits right now.

So I think we should all step back from our personal preferences and plainly say thank you, Rails, for all that you’ve done to move the state of web development forward.

Rails was a wake-up call to the web development world in so many ways. In the short time – a mere five years — that it’s been around, it’s been responsible for many changes in the world of web applications:

  • Popularizing MVC amongst web developers. Yes, it had been done before, but never quite as elegantly or explained so clearly.
  • Bringing concepts like DRY and Convention Over Configuration into the developer vernacular.
  • Proving that simplicity is a feature, whether it’s from the developer’s or end user’s point of view.
  • Pointing the spotlight at the Ruby programming language.
  • Driving a movement towards web applications with both beautiful and usable interfaces.
  • Reminding us that programming should be fun.
  • Reinforcing an important idea that we often forget: community matters. (If you’ve been to a RailsConf or better still, RubyFringe and FutureRuby, which takes the Ruby/Rails community camaraderie and turns the dials up to 11, you know what I mean.)

Speaking as a Microsoft guy, I too would like to say “Thank you, Rails”. While I can’t honestly classify myself as ever having been a serious Rails developer – it’s mostly noodling on personal projects and one major cancelled project at Toronto’s worst-run startup – I come from the periphery of the Rails community, having been an unofficial evangelist and occasional court jester, as evidenced in this performance from the evening keynotes at RailsConf 2007:

I take a lot of what I’ve learned from the community-building effort that made Rails what it is today and have applied it to my work at Microsoft. From what I’ve been hearing, it seems to be helping.

It’s not just the community aspects of Rails for which both Microsoft and I owe Rails a debt of gratitude — there are the technical aspects as well. I’m sure the event-driven desktop-style development metaphor behind ASP.NET makes a lot of developers happy, but it drove me bonkers – and also to PHP (and eventually, Rails) — back in 2002. The drive to create an MVC web application framework that treated the web like a first-class citizen instead of “like the desktop, but lamer” led to the creation of my preferred Microsoft web framework, ASP.NET MVC, and I cannot begin to convey how grateful I am for that. I love ASP.NET MVC, and a good chunk of the reasons why stem from the Rails-isms that found their way into it. I think ASP.NET MVC developers would benefit from getting to know Rails and taking it out for a spin – and I think the Rails developers would also gain something from giving ASP.NET MVC a try.

I once read a saying that has stuck with me all these years: “When you slice a blade of grass, you shake the universe.” Yeah, it’s a pretty drama-queeny way of saying that everything is interconnected, but it’s true in many respects, including human endeavour, which in turn includes software development. It’s an ecosystem, and different parts of it influence each other all the time. I think that the best participants in that ecosystem learn from other parts, and acknowledge those efforts that make the ecosystem a better place in which to live.

joey-devilla-on-accordion-at-railsconf-2007

So to echo a Django guy’s sentiment, here’s a Microsoft guy saying it: Thank you, Rails.

This article also appears in Canadian Developer Connection.

{ 0 comments }

“Make Web Not War” in Toronto This Wednesday!

by Joey deVilla on June 8, 2009

Make Web Not War: Toronto - Wednesday, June 10th

About Make Web Not War

If you’re interested in web design and development, you should attend Wednesday’s Make Web Not War conference. It’s being presented by Microsoft Canada and is about the how open source tools like PHP and Microsoft technologies like IIS and SQL Server 2008 can be used together to make great web sites and applications. No matter how much (or how little) Microsoft technology you use in your web development, there’s a lot to see at Make Web Not War!

Who’s Speaking?

We’ve got a number of speakers, each talking about some different aspect of the interoperability between Microsoft and open source technologies, as well as their experiences and lessons learned working in the web industry:

David Crow

David Crow, Microsoft

David Crow is an emerging technology and start-up advocate. At Microsoft Canada, he is responsible for helping Canadian start-ups through programs like BizSpark (details at microsoft.com/bizspark). David helps companies understand emerging technology and design practices for creating compelling digital experiences. David focuses on helping companies to extend their customers’ reach with next generation technology for the desktop, digital devices, standards based applications for the Web, and rich media applications. He has been named Toronto’s Best Web and Tech Evangelist for his efforts in DemoCamp, BarCampToronto, Founders & Funders and StartupEmpire.

Mano Kulasingam

Mano Kulasingam, Digiflare

Mano Kulasingam is a founding partner and principal interactive designer /developer with Digiflare, focusing on presentation layer technologies like Microsoft Silverlight, Windows Presentation Foundation and SharePoint 2007. He also has several years of experience developing B2B and B2C eCommerce and Content Management Web applications using ASP.NET (2.0 and 3.5) and Visual C#. His design skills include working with the latest professional design tools including Microsoft Expression Studio 2, which has earned him a Microsoft Expression MVP nod. He is a co-founder and host of the Toronto Silverlight User Group.

Brendan Sera-Shriar

Brendan Sera-Shriar, PHUG.ca

Brendan is a prominent member of FlashinTO, PHUG – Open Source Culture, has taught web design at Long Island University Brooklyn campus, and has been a professor at Seneca College in the School of Communication Arts for over 7 years. Brendan currently owns and operates BackSpaceStudios, a web company specializing in WordPress development, social media applications. He is also the founder of PHUG, an open source community for designers and developers with currently over 4000 members, faculty at Seneca College, and organizer for WordCamp Toronto 2009. Brendan has contributed to many open source projects including papervision3D, red5, Firefox, WordPress, and Drupal, just to name a few.

Stephen Nichols

Stephen Nichols, Softcom

Under the brand myhosting.com we offer Shared and Virtual Web Hosting as well as Exchange 2007 and WSS hosting to customers around the world.

Stephen is Vice President of Sales at Softcom, a Gold certified Microsoft Partner based in Toronto and specializing in transactional hosting with a focus on the SMB market. His key role is to oversee the customer life cycle experience and drive new sales opportunities through the direct, affiliate and partner channels.

Yann Larivee

Yann Larivee, PHP Quebec

Yann Larrivée has been developing web applications for over 7 years and is currently offering PHP consulting services. In the past he has worked in many position from, project manager for a Linux consulting company to web architect for a well know company in the gaming industry. He also founded the PHP Quebec community in 2003 and organizes an international PHP conferences and an IT JobFair.

Get Windows Server 2008 R2 for Free!

Windows Server 2008 R2 logo

Windows Server 2008 R2 is a great server operating system, and this is your chance to take it out for a spin! Bring a machine to the Make Web Not War Installfest – it could be a server, desktop or even a laptop – and we’ll walk you through the process of installing your own free copy (which is good for a year). Space is limited – we’ve only got room for 100 people, so sign up soon!

See the Utltimate FTW! Throwdown

The Ultimate FTW! Throwdown was a challenge pitting student developers against professionals to develop a new PHP-on-Windows app or port an existing PHP-on-LAMP app to run on Windows Server with IIS. There were even bonus points for apps that made use of SQL Server as their database!

We took in a bunch of submissions, and the judges have narrowed it down to two finalists, one student, one professional:

Dac Chartrand In the professional corner is Dac Chartrand, whose submission is Sux0r, a content-management system incorporating blogging, RSS aggregation, bookmark repository and photo publishing, all with a focus on naive Bayesian categorization and probabilistic content. The extra Bayesian/probabilistic goodies allow Sux0r to auto-categorize its content and users to train it to categorize better.

Casron Lam His student opponent, Carson Lam, submitted Transit DB, which aims to transform the way commuters interact with public transit information system. The application is Carson’s answer to the question “How can we provide a modern, clean and user-friendly interface for transit data in cities?” The current version covers public transit for the Metro Vancouver region.

Dac and Carson will be competing for bragging rights and cold hard cash – may the best project win!

(For more details about the Ultimate FTW! Throwdown, see its page on PHPonWindows.ca.)

Interact

Telav audience device

We don’t want to do all the talking at Make Web Not War, we also want to hear from you!

That’s why, when you arrive at the event, one of the first things we’ll do is hand you an AVW-TELAV audience response doohickey. It’s a microphone for the Q&A sessions at the end of each presentation, but it’s also an instant audience polling device for quick surveys that we’ll have throughout the day.

Chill Out

All work and no play makes you a dull and burned-out web designer or developer, which is why we’ve also got a lounge where you can just hang out, meet the speakers, ask me questions about Microsoft’s web tools and tech and play XBox games.

Win prizes

We’ve got all sorts of prizes that you can win throughout the day, from software to books to trainign courses to Zune media players to XBox games to a brand new laptop.

Get Fed

Yup, we’re providing breakfast and lunch. You can’t conference on an empty stomach!

Okay, How Much to Attend?

Around this much:

Canadian $10 bill

Instead of charging a standard admission, we’re charging a “Donate what you can” rate, with all proceeds going to PREVNet.ca, an anti-bullying group. The suggested donation is a mere $10.

When and Where?

Once again, Make Web Not War takes place this Wednesday, June 10th and runs from 8:30 a.m. to 5:00 p.m..  It’s happening in Toronto at Ryerson University’s Ted Rogers School of Management (55 Dundas Street West – that’s Dundas between Bay and Yonge, right by the Best Buy and Canadian Tire). There’s parking aplenty in the area, and it’s right by Dundas Station on the Yonge/University/Spadina subway line.

Map picture

 

How Do I Register?

Visit the Make Web Not War registration page and fill out your details, and we’ll see you there on Wednesday!

{ 4 comments }

The “Make Web Not War” Accordion Video

by Joey deVilla on June 3, 2009

This article also appears in Canadian Developer Connection.

The Make Web Not War event in Toronto takes place in exactly one week! We’ve been spreading the word about the event and I thought I’d do my part by helping out with a video, accordion-style:


MAKE WEB NOT WAR – VIDEO FOUR – TORONTO from The Biz Media on Vimeo.

There’s only one mistake in the video – “accordion” is misspelled. If you’d like the follow me on Twitter, the correct ID is AccordionGuy, not AccordianGuy.

For more details about Make Web Not War, see:

{ 1 comment }

Mental Models, Mantras and My Mission

by Joey deVilla on May 25, 2009

Mental Models and Bill Buxton’s “Draw a Computer” Exercise

Bill Buxton

In the mid 1990s, well before he was Microsoft’s user interface guru, Bill Buxton often asked people to carry out a simple little exercise: draw a picture of a computer. Most, if not all, of the people he asked would draw something that fit the common mental model of the desktop computer of the era: cathode ray tube-type monitor, keyboard, mouse and that box housing the motherboard and drives that many people mistakenly refer to as “the CPU”.

If Buxton were to ask the question today, the drawings of computers might look like these:

Four computers from the 2000s - a laptop, a couple of all-in-one-desktops and a desktop with a "box" -- all with flat screens

If he asked the question in the mid-to-late 1980s, the drawings might’ve looked like these:

80s-era computers: Apple ][, Commodore 64, TRS-80 and IBM PC

And had he asked the question in the mid-60s, the drawings might’ve looked like this:

The classic fake "home computer as envisioned by RAND" photo

Buxton likes to point out that the changes in computers from the 60s onwards are largely in the implementation technology, processing power and outward appearance. When most people draw computers, he said, they’re merely drawing their mental model, which is based on the outer packaging.

However, if you use the mental model of a technologist, computers have been essentially the same instruction/ALU/storage/input-output boxes whether they’ve occupied whole rooms or fit in your pocket. They’ve been pretty much the same at their core, in the same way that fancy tech and hybrid engine aside, there really isn’t too much that separates a present-day Toyota Prius from a Model T Ford.

If Bill Buxton could approach Microsoft Corporation as a person — and hey, that’s the way the law treats corporations, so why not? – and asked him/her to draw a computer, I suspect that s/he would draw something based on mental model of a souped-up circa 2000 computer: a desktop computer with a nice flatscreen monitor, running Windows XP and having a somewhat limited connection to the ‘net.

I think that this is a problem. I also think that the source of this problem is Microsoft’s success.

Microsoft’s Company Mantras

“A PC on every desk and in every home” was Microsoft’s longest-lived slogan and the company mantra for the first 24 years of existence. Like the best slogans, it succinctly summarized the company’s goal. The problem is that the goal has pretty much been reached. In most parts of the first world, a good chunk of the second world and even a sizeable fraction of the third world, you can easily find a desktop computer, and it’s quite likely that it’s running some sort of Microsoft software.

Since 1999, the company mantra – I really hesitate the use the phrase “vision statement” — has been a little more vague. The company’s been thrashing between them a little more frequently, as you can see in this list of mantras taken from chapter 1 of How We Test Software at Microsoft:

  • 1975 – 1999: “A PC on every desk and in every home.”
  • 1999 – 2002: “Empowering people through great software – any time, any place and on any device.”
  • 2002 – 2008: “To enable people and businesses throughout the world to realize their full potential.”
  • 2008 – present: “Create experiences that combine the magic of software with the power of internet services across the world of devices.”

The post-1999 mantra all seem a little limp in comparison to the original. Reading them, I cannot help but think of a quote attributed to web design guru Jeffrey Zeldman:

"…provide value added solutions" is not a mission. "Destroy All Monsters." That is a fucking mission statement.

Because the old mantra lasted for so long and the new mantras just don’t have the same straightforwardness and gravitas (How We test Sofware at Microsoft quotes Ballmer as saying that we may never again have a clear statement like the original to guide the company), the original remains quite firmly etched in the company culture and mindset.

I think it’s holding us back.

The Desktop as the Goose That Laid the Golden Egg

Altair 8800 computer on display at Microsoft's Building 92 gallery

The original mantra doesn’t just focus on the desktop, it actually mentions it by name. In 1975, when computers were room-filling behemoths that you could access either via batch or time-share, the concept of a desktop computer was downright radical. If you think the iPhone is impressive (and yes, it is), imagine how mind-blowing the Altair 8800, the first commercially-available desktop computer, must have been to a geek back in the Bad Old Days. It was the platform on which Microsoft’s first product – a little programming language called Altair BASIC – was launched, and it was BASIC that in turn launched the company.

In his book Outliers, Malcolm Gladwell talks about how the Altair 8800 was a golden opportunity for Bill Gates and his buddies at his fledgling company, then called “Micro-Soft”. Unlike a lot of other companies at the time, they took the desktop computer seriously. Even when IBM got into the desktop computer game in 1981, it was a product of their Entry-Level Systems division, a clear indication that they thought the PC was a machine you bought until you were ready to graduate to a real computer. I don’t think that this philosophy ended up serving them well.

An Applesoft BASIC cassette featuring a sticker that says "Copyright Microsoft, 1977"

Since the big boys were paying no mind to the desktop computer, upstarts like Microsoft had a big empty field in which to play, and they thrived. Crack open just about any late 70s/early 80s computer that had BASIC built in – even Apple machines — and you’ll see a row of ROM chips with a Microsoft copyright notice. It was Microsoft that swooped in with PC-DOS when a deal with Digital Research for a PC version of CP/M was slow in coming (and this is despite the fact that Gates recommended that IBM go to Digital for an OS). A lot of people’s experience with desktop computers (and Microsoft revenue) is defined by circa-1995 Microsoft thanks to Windows 95 and the results of Bill Gates’ memo titled The Internet Tidal Wave, both of whose influences are still felt to this day.

Once upon a time, it used to be unusual to walk into someone’s home or office and see a computer. These days, it’s unusual to walk into someone’s home or office and not see a computer, and Microsoft’s focus on the desktop had a lot to do with that.

The Desktop as Albatross

Albatross, shot with a sucker-dart arrow, falls on the head of a Disney-esque cartoon character

When electric motors first became available, engineers envisioned factories and eventually houses being equipped with a single electric motor. They imagined that the central motor would, through a series of gears and drive belts, be connected to whatever machines in the house or factory had to be driven by it. What happened in the end is that rather than relying on some central motor, electric motors “disappeared” into the devices that used them. Here’s an exercise to try: go and count the electric motors in your house or apartment right now. The number should be a couple dozen, and if you can’t find them, this article might help.

When big, room-filling computers first became available, engineers envisioned businesses being equipped with a single computer in a manner roughly analogous to the aforementioned big central motor. We know what happened in the end – while many businesses do make use of big datacenters, a lot of the computing power got spread out into desktop computers.

I have a theory that comes in two parts:

  1. Just as electrical motors disappeared into the devices that needed their work, and just as computing power got spread out from big mainframes into desktop machines, computing power is now both disappearing and spreading out into mobile devices and the web/cloud.
  2. Microsoft, with its desktop-centric approach, at least outwardly appears to be missing out on this migration of computing power.

Most of the company’s attention, at least to an outside observer, seems to be focused on Windows 7. Yes, chances are that with computer sales being what they are, Windows 7 will probably end up on more of laptops and netbooks than desktops, but I consider those devices to simply be the desktop computer in a more portable form. It worries me that there have been more concrete announcements about Windows 7 on netbooks than upcoming versions of Windows Mobile, despite the iPhone and BlackBerry-driven evidence that the real mobile action is in smartphones.

(Tomorrow, I’ll post an article in which I argue that netbooks are a dangerous red herring pulling away our attention from devices like smartphones.)

Microsoft ASP.NET

Even when the company reaches out beyond desktop development, there’s no escaping the desktop “gravity well”. Consider ASP.NET (that is, the “traditional” ASP.NET, not the recently-released ASP.NET MVC). To my mind, as well as the minds of a lot of other web developers, it’s a web framework that tries really hard to pretend that the web doesn’t exist. It makes use of a whole lot of tomfoolery like ViewState to create a veneer of desktop app-like statefulness over the inherently stateless nature of the web and a programming model that tries to mimic the way you’d write a desktop application. It’s almost as if it were designed with the mantra “the web is like the desktop, but lamer” instead of “the web is like the desktop, but everywhere”. Although the framework works just fine and there are a number of great sites and web apps built on it, I think a lot of developers sensed this design philosophy and went elsewhere for web development.

(An aside: My old boss at OpenCola in late 2001 told me that he’d been meeting with Microsoft people and suspected that Internet Explorer 6 would be the final version of their browser. The expectation that web pages and web applications would be replaced by Windows client applications pushed over the net, a prediction similar to one made by the Java folks a few years prior.)

Windows Mobile logo

The same situation exists with Windows Mobile’s current user interface, which is basically a subset of Windows’ standard UI controls for the desktop, scaled down to fit smaller screens, and with a stylus standing in for the mouse. It’s almost as if it were designed with the mantra “mobile computing is like desktop computing, but lamer” instead of “mobile computing is like a mobile phone plus PDA and an MP3 player, but cooler.” If the ASP.NET design mantra is a whisper, the Windows Mobile mantra is a scream.

I suspect that the reason the XBox 360 didn’t fall into a similar kind of trap — “set-top boxes are like desktop computers, but lamer and only for games” – is that the XBox team is situated off the Microsoft Campus and less susceptible to the desktop influence.

My Mission

Stick figure, chained to desk, breaking the chain

At my most recent one-on-one meeting with my manager John Oxley, we talked about a need for each member of our Evangelism team to define his or her area of focus. The Microsoft platform is a vast, nerdy expanse spanning the range from embedded computing all the way to Cray supercomputers; no single person can hope to cover it all.

He already had a good idea of what I wanted to focus on, and by now, I guess you do as well. I feel that just as computing expanded beyond the big computer rooms and onto our desktops, computing is expanding beyond our desktops into all sorts of different places:

  • Invisibly, into the web and cloud in the form of web applications and services
  • Visibly, into our pockets and living rooms, and embedded into all sorts of real-world things

While I believe that Windows 7 is a necessary part of the Microsoft platform, I’m not too worried about focusing on it – there are more than enough people at the company to promote and evangelize it. I want to focus on the platforms that I feel that Microsoft hasn’t given enough love and attention: the non-desktop platforms of the web, mobile and gaming, as well where they intersect.

It’s a big area to cover, but I think Microsoft needs to be active in this area if it wants to be true to its forward-looking roots. I even have a mantra for it: “To help web, mobile and game developers using Microsoft tools go from zero to awesome in 60 minutes.” I want to give developers both that rush when getting started with a new technology as well as the sustained passion to keep working with it, in the same way that Ruby on Rails and the iPhone got developers with an initial flash of excitement and turned it into long-term passion. It’s an ambitious, audacious mission, but no more so than the one coined by a bunch of scruffy nerds in New Mexico in the the 1970s: “A PC on every desk and in every home.”

Joey deVilla with cardboard cutouts of Microsoft's 1978 team

{ 10 comments }

Why Microsoft Will Never Win (Again)

by Joey deVilla on June 6, 2008

Mathew Ingram, after reading the Wall Street Journal’s article Gates-Ballmer Clash Shaped Microsoft’s Coming Handover, suggests that Microsoft killed their future for the present by killing NetDocs, their web-based office apps suite so as not to cannibalize their cash cow, Microsoft Office.

{ 0 comments }