Esent: The Decade-Old Database Engine That Windows (Almost) Always Had

by Jon Davis 30. August 2010 03:08

Windows has a technology I just stumbled upon that should make a few *nix folks jealous. It’s called Esent. It’s been around since Windows 2000 and is still alive and strong in Windows 7.

What is Esent, you ask? It’s a database engine. No, not like SQL Server, it doesn’t do the T-SQL language. But it is an ISAM database, and it’s got several features of a top-notch database engine. According to this page,

ESENT is an embeddable, transactional database engine. It first shipped with Microsoft Windows 2000 and has been available for developers to use since then. You can use ESENT for applications that need reliable, high-performance, low-overhead storage of structured or semi-structured data. The ESENT engine can help with data needs ranging from something as simple as a hash table that is too large to store in memory to something more complex such as an application with tables, columns, and indexes.

Many teams at Microsoft—including The Active Directory, Windows Desktop Search, Windows Mail, Live Mesh, and Windows Update—currently rely on ESENT for data storage. And Microsoft Exchange stores all of its mailbox data (a large server typically has dozens of terrabytes of data) using a slightly modified version of the ESENT code.

Features
Significant technical features of ESENT include:

  • ACID transactions with savepoints, lazy commits, and robust crash recovery.
  • Snapshot isolation.
  • Record-level locking (multi-versioning provides non-blocking reads).
  • Highly concurrent database access.
  • Flexible meta-data (tens of thousands of columns, tables, and indexes are possible).
  • Indexing support for integer, floating point, ASCII, Unicode, and binary columns.
  • Sophisticated index types, including conditional, tuple, and multi-valued.
  • Columns that can be up to 2GB with a maximum database size of 16TB.

Note: The ESENT database file cannot be shared between multiple processes simultaneously. ESENT works best for applications with simple, predefined queries; if you have an application with complex, ad-hoc queries, a storage solution that provides a query layer will work better for you.

Wowza. I need 16TB databases, I use those all the time. LOL.

My path to stumbling upon Esent was first by looking at RavenDB, which is rumored to be built upon Esent as its storage engine. Searching for more info on Esent, I came across ManagedEsent, which provides a crazy-cool PersistentDictionary and exposes the native Esent with an API wrapper.

To be quite honest, the Jet-prefixed API points look to be far too low-level for my interests, but some of the helper classes are definitely a step in the right direction in making this API more C#-like.

I’m particularly fascinated, however, by the PersistentDictionary. It’s a really neat, simple way to persist ID’d serializable objects to the hard drive very efficiently. Unfortunately it is perhaps too simple; it does not do away with NoSQL services that provide rich document querying and indexing.

Looks like someone over there at Microsoft who plays with Esent development is blogging: http://blogs.msdn.com/b/laurionb/

Currently rated 3.8 by 6 people

  • Currently 3.833333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Microsoft Windows | Software Development

Microsoft WebsiteSpark Now Negates The Cost For Web Devs and Designers

by Jon Davis 26. September 2009 18:52

A couple weeks ago I posted a blog entry ("Is The Microsoft Stack Really More Expensive?") describing the financial barrier to entry for building software--particularly web apps--on the Microsoft platform. The conclusion was that the cost is likely to be nil if you're a) willing to settle for the Express products and everything else bundled in the Microsoft Web Platform Installer (which includes a slew of open source ASP.NET and PHP web apps to start you off), b) starting a software company, c) a student, or d) an employee of a company willing to foot the bill for an MSDN license (to you personally, not to your team).

Well, Microsoft just created yet another program, for those of you who are e) building or designing web sites. (Sweeeeet!!) For a $100 offing fee (a fee that you pay when your license ends, rather than when it begins) you get Windows Web Server 2008 R2, SQL Server 2008 Web Edition, Visual Studio 2008 Professional Edition, and Expression Studio 3.

Not bad! Although, your license ends in three (3) years (same as BizSpark).

Link: Microsoft WebsiteSpark

Is The Microsoft Stack Really More Expensive?

by Jon Davis 5. September 2009 23:17

As a Microsoft customer, who at times rambles on with a fair share of complaints about Microsoft’s doings, I want to take a moment to discuss Microsoft’s successes in making its development stack affordable, equal to or even more so I’d argue than the LAMP + Adobe stacks.

Let’s Get Started

If you’re developing for the web, Microsoft makes it easy to download everything you need to develop on the Microsoft stack for free with a do-it-all download application called the Microsoft Web Platform. Everything you need to get started is available from that tool for free, including (but not limited to):

  • Visual Web Developer 2008 Express (FREE)
  • Silverlight tools for Visual Web Developer (FREE)
  • Microsoft SQL Server 2008 Express (FREE)
  • IIS extensions such as FastCGI for running PHP applications (FREE)
  • ASP.NET add-on libraries, including ASP.NET MVC (FREE)
  • Tons of free, open source ASP.NET applications (FREE)
  • Tons of free, open source PHP applications that can run on IIS (on Windows) (FREE)

I’ll even go so far as to repost a pretty Microsoft-provided button.

(FREE)

Windows

Let’s get the obvious realities of Microsoft stack expenses out of the way first. Microsoft is a platforms company. They make their money off of our dependence upon their platform. That platform is Windows. Many people’s reaction to this is to hold up two fingers to make a cross and shout, “Eww, nooo! No! Monopolies, baaad!” I believe I have a more well-rounded response, which is, “Oh! Well dang. If we’re going to build up a dependency upon a platform, that platform (and its sub-platforms) had better be REALLY FREAKING GOOD—good as in performant, easy to work with, reliable, scalable, and a joy to use, and it had better support all the things most all the other platforms support.”

Enter Windows Server 2008 and Windows 7.

Over the last decade, Microsoft has worked hard to achieve, and since Windows Vista (believe it or not) has already achieved, the right to sing the song to Linux,

Anything you can do,
I can do better!
I can do anything
better than you!

 

And yeah I think Microsoft gets the girl’s part on this one, but perhaps only because of:

Boy: I can live on bread and cheese.

Girl: And only on that?

Boy: Yup.

Girl: So can a rat.

By this I simply mean that everything that’s on the Linux stack is also on the Windows stack, plus Microsoft has its own proprietary equivalents that, in the opinions of most of its customers, are a lot better than the open source equivalents. Take PHP for example. Internet Information Server 7 does everything Apache can do plus host non-HTTP network applications, but it also does everything Apache does, functionally speaking, including configuration details and hosting PHP. But it also performs faster than Apache at hosting PHP applications with Fast-CGI and binary script caching installed and enabled. But beyond PHP, which in itself is technically not much more than ASP Classic (Javascript flavor), Microsoft’s ASP.NET is far more powerful and versatile than PHP, and it’s 100% free (after the cost of Windows itself). And don’t get me started about how much better I think Windows is at GUIs and graphics with GDI+, DirectX, and WPF, than the Linux flavors. (Apple, on the other hand, competes pretty well.)

Windows can also execute all the Java and Ruby stuff that you see in *nix platforms. In fact, Windows has all the UNIX subsystem underpinnings to make a UNIX enthusiast comfortable. The shell and all that fluff is a separate download but it’s all part of the Windows package and is free after the full Windows Ultimate or Windows Server license. You can snag Cygwin, too, if you like, if you want to get an even richer Linux-like experience.

So that’s Windows; you can go fully-licensed and get Windows 7 Ultimate ($219) + Windows Server 2008 R2 ($999) as a workstation + server combo for a total of $1,218 plus tax. However, if you’re in a position to care about that much money, I can tell you that you do not have to suffer that amount if you don’t want to.

First of all, Windows 7 Ultimate can perform just fine as a server. Windows Server 2008 is intended more for an enterprise environment that requires prison-like security and needs some very enterprisey or advanced features, such as hosting Active Directory domains, hosting Exchange Server, or hosting some unusual network services for developers with very specialized needs. If all your needs can be met with IIS and a database, so long as you don’t have a million hits a month (there is, unfortunately, simultaneous network connection count throttling built into Vista/7), you really don’t need anything more than Windows 7 Ultimate, no matter how many sites you host. It will scale, too, and in fact Windows 7 is built to handle tens of CPU cores. So, going Windows 7 only takes the total cost down to $219.

Second, if you really do want to go with the Server flavor, you have a couple more options, including a COMPLETELY FREE option which is very easily accessible, but I’ll get back to that later.

I just want to say, though, at this point, that I for one am already a Windows user, and you probably are too, statistically speaking. Our investments have already been made; however, only the Ultimate edition of Windows is one I would settle for as a “Microsoft stack” developer. Mind you, I’ve never had to pay the full price for any version of Windows in many, many years, yet I am currently running the latest and greatest. Again, I’ll get into that later.

Now let’s look at the development languages and the tools that support them.

Development Languages and Tools

The big names among the non-Microsoft platforms for languages and sub-platforms are:

  • PHP,
  • Ruby (on Rails),
  • Python, and
  • Java

Their tools come in many shapes and sizes. They can be as simple as vi or as complex as NetBeans. Many of the good tools people like to use are free. However, many of them are not.

For example, Aptana Studio is a very good web development IDE that supports Ruby, PHP, and Aptana’s own Javascript/AJAX platform called Jaxer, plus it runs in Eclipse so it supports Java as well. But the Pro version costs $99. That’s not free. There’s also JetBrains RubyMine which is also $99. On the other hand, Ruby developers tend to adore NetBeans, particularly over Aptana, and that is free. So go figure, to each his own.

The point is, if you want to get a rich and richly supported toolset, you’re just as likely going to have to pay for it in the non-Microsoft stacks.

On the Microsoft stack side, everyone knows about Visual Studio. The licensing cost for the Team Suite is $10,939. LAMP developers just love to point that kind of thing out. But folks, the fact is, that price is not measurable as the equivalent of LAMP freeware. It’s for an enterprise shop that needs very advanced and sophisticated tools for performing every corporate software role in a software development lifecycle. If you’re measuring the price here and it’s of concern to you, you probably don’t need to choose the most expensive offering to evaluate the costs of the MS stack!

First of all, the Professional edition of Visual Studio, if you’re crazy enough to have to pay for that out-of-pocket (i.e. not have your employer pay for it or get it in a bundled package such as one of the free ones) only costs $799, not $10,939.

Secondly, if money matters all that much to you, and you’re unable to get one of the free or nearly-free bundles (more on this in a bit), you really should push the limits of Visual Studio Express first. It’s free.

Experience Development Tools: Microsoft Expression vs. Adobe CS

Microsoft has been competing with what was Macromedia, now Adobe, for its designer-oriented web tools for a very long time, and finally came through with a reasonable offering with Expression Studio a few years back, which offers very close to the same functionality, at least at a basic level, for creating compelling web experiences as Adobe’s current CS4 Web Premium offering minus Photoshop.

Dreamweaver vs. Expression Web

A surprisingly large number of web designers use Adobe Dreamweaver (formerly Macromedia Dreamweaver) as their standard web creation tool, not far in similarity to the ubiquity of Adobe Photoshop for editing graphics. Microsoft has had an equivalent web creation tool for well over a decade. It used to be called FrontPage, now it is called Expression Web. But let’s get one thing clear: Expression Web replaces FrontPage, it is not a rename of FrontPage. It is, in fact, a different product that accomplishes the same task and in the same general way. By that I mean, as far as I know, very little of Expression Web’s codebase reuses FrontPage’s legacy codebase; it is a total rewrite and overhaul of both the tools and the rendering engine.

Expression Web supports PHP, in addition to its extensive support for ASP.NET and standards-based raw HTML and CSS. Technically, Expression Web is very close to being on par with Dreamweaver, and I think the differences are a matter of taste more than of function. I for one prefer the taste of Expression Web, and don’t know what Dreamweaver offers that Expression Web doesn’t.

Expression Studio includes Expression Design which is functionally equivalent, albeit to a much lesser extent, to Adobe Illustrator. The rest of the Expression Studio suite accomplishes most of the same functional tasks for web design and development as Adobe CS4 Web Premium Suite’s offering. So, to be functionally complete, you’d need to add a graphics editor to Expression Studio before Expression Studio can be compared with CS4.

As for the costs,

Expression Web: $149
Expression Studio + Paint.NET = $599 + $0 = $599
Expression Studio + Adobe Photoshop: $599 + $699 = $1,198

However, I get Expression Studio for free as it is bundled with my Microsoft suite package. More on this later.

Adobe Dreamweaver: $399
Adobe CS4 Web Premium Suite: $1,699

Silverlight vs. Flash

Inevitably, “the Microsoft stack” has to run into the Silverlight stack because Microsft pushes that product out, too. I’m not going to get into the religious debate over whether Adobe Flash is better than Microsoft Silverlight, except to say a couple very important things. First of all, I understand that it’s a no-brainer that everyone has Flash. 98% of the web’s user base has it. That said, supporting Microsoft Silverlight for your user base—that is, getting your users to obtain it—is not hard at all. So let’s just get that out of the way, okay? Yes, I know that Silverlight comes at this cost of a one-click install versus a no-click install. Life goes on.

Okay. Let’s talk about tools. With Adobe Flash, you have three options, really, for developing Flash solutions: 1) Adobe Flash Professional, 2) Adobe Flex (an Eclipse-based IDE for developing Flash-based applications), or 3) third-party apps like SWiSH. Fortunately, Adobe has recently been rumored to be planning on merging Flash Pro and Flex functionality, which is a relief because Flex did not have the design power of Flash Pro and Flash Pro didn’t have the development power of Flex. Meanwhile, though, Flash Pro and SWiSH are hardly tools I can take seriously as a software developer, and unfortunately, at $249, Flex is expensive.

Microsoft, however, offers the functionally equivalent toolset with the Expression suite and with Visual Studio. The Silverlight Tools for Visual Studio integrate with Visual Web Developer, providing Silverlight developers a completely free IDE for developing compelling Silverlight applications. So let’s get that out of the way: You do not need to spend a dime on dev tools to develop Silverlight apps.

Expression Blend, however, which is a commercial product and is functionally comparable to Adobe Flash Professional as well as, in my opinion, Apple’s Interface Builder (with which iPhone application interfaces are designed), is a rich designer tool for Silverlight as well as for WPF (Windows applications) and outputting XAML, the XML markup required for Silverlight and WPF applications. It provides a syntax-highlighting, IntelliSense (code completion) ready code editor for C# and Javascript code, too, so technically you could accomplish much using just Expression Blend, but Microsoft (and I do, too) recommends using Expression Blend in combination with Visual Studio / Visual Web Developer 2008 Express.

Microsoft Visual Web Developer 2008 Express with Silverlight Tools: $FREE
Microsoft Expression Blend: $599 (full Studio suite)
Together: $599
Microsoft Expression Professional Subscription (Expression Studio plus Windows, Visual Studio Standard Ed., Office, Virtual PC, and Parallels Desktop for Mac): $999

Adobe Flex Builder: $249
Adobe Flash Professional: $699 (standalone)
Together: $948

The long and short of it: in terms of cost savings, Silverlight development costs are on par with Flash development costs, but can in fact go a lot further per dollar including at the price of $FREE, depending on how much tooling you need.

Databases

Then there are the databases. The non-Microsoft stacks include primarily mySQL and PostgreSQL, et al. Mind you, these databases work fine in a Microsoft world, too, just like everything else, but the Microsoft stack tends to work best with Microsoft SQL Server.

Okay, let me just say at this point that Microsoft SQL Server 2008 is, by far, a vastly superior RDBMS than most anything I have seen from anyone, in every respect. Don’t get me wrong, I greatly admire mySQL and the other RDBMSs out there, but SQL Server is seriously the bomb.

But let’s talk about pricing. Just like Visual Studio has a prohibitively expensive offering available to enterprise users, SQL Server 2008 Standard Edition comes to us at a whopping $5,999. That’s just a hair less than the price of my Toyota when I bought it (used).

But, once again, there’s an expensive commercial offering for everything under the sun. MySQL also has a commercial offering at $599, which I’ll admit is only 1/10th the cost of SQL Server standard edition but isn’t exactly free either.

But seriously, who comparing development stacks actually pays for this stuff? Read on.

Everything Starts At Free

Technically, one could download the SDKs (for free) from Microsoft and do most anything. Most of it would be from the command line, but even XamlPad.exe is bundled in with the Windows SDK to you create XAML files for WPF with a WYSIWYG preview. (For Silverlight, you might try Kaxaml’s beta release.)

But who on the Microsoft stack wants to use the command line? If you’re new to the Microsoft development stack, the first place you should turn to is the Express suite, which includes among other things Visual C# Express, Visual Web Developer Express, and SQL Server Express. Empowered with each of the components of the Express suite, you as a developer have all the extremely powerful tools you need to accomplish almost any development task, with absolutely no licensing fees whatsoever. There really is no fine print with this; the Express editions have a few functional limitations that are very rarely (if ever) showstopping, and you’re not allowed to extend the Express product and try to sell your extension or to redistribute the Express products themselves, but there’s no pricing structure at all for any of the Express suite downloads.

I must say, the 2008 flavors of the Express products are, far and away, the most powerful software development solutions I’ve ever seen as a free offering, and definitely compete fairly with the likes of Eclipse and NetBeans in terms of providing what the typical developer needs to build a basic but complete product or solution without a software budget. Ironically, in my opinion, Microsoft specifically created a web site for the Express flavors of Visual Studio to make it all look crappy compared to Visual Studio Team Suite. The Express web site does not do these tools justice. Combined, the Express products are very rich and powerful, and the web site makes them look like a boy’s play dough or G.I. Joe.

I must include SQL Server 2008 Express in saying that the Express products are very rich and powerful, particularly if you get SQL Server 2008 Express with Advanced Services including Management Studio Express, this RDBMS suite is insanely powerful and complete, and is by far more capable and powerful than mySQL. And no, people, SQL Server Express does not come with licensing restrictions. It’s free, completely free. Free, period. It has a few technical/functional limitations, such as for example it cannot consume more physical RAM (not to be confused with database size) than 1 GB, and there are limitations to redistributing the Express products. But there is otherwise no licensing fine print. You can use it for commercial purposes. Have at it.

Beyond these Express versions, there’s also #develop (pronounced “SharpDevelop”). #develop is a non-Microsoft IDE for developing .NET applications on Windows, and it’s quite functional. Initially I think it was built for Mono in mind, but in the long run it never implemented Mono and instead Mono took some of #develop and made it MonoDevelop. #develop is a very well implemented IDE and is worth checking out, particularly given its free price. However, since #develop isn’t a Microsoft tool, it’s not really part of the Microsoft stack.

The Cheap And Free Bundle Package Deals

If the Express flavors aren’t good enough for you, now I get to mention how to get everything you might ever need—and I really mean everything, including Windows Server 2008 R2 Enterprise Edition, SQL Server 2008 Enterprise Edition, Visual Studio Team Suite with Team Foundation Server, and Expression Studio—for absolutely no cost whatsoever. The only catch is that you must be needing this (a free offering). If you don’t need it because you have a heckofalot of money, then, well, go get a life.

Microsoft is still giving away all the tools you need to rely on the Microsoft stack for absolutely no cost whatsoever through a package deal called BizSpark, which basically gives any start-up company—including one-to-five-man micro-ISVs like yourself(??)—an MSDN Subscription with fully licensed rights to use everything under the sun for development tools and operating systems for absolutely no cost (except for a $100 closing fee after a couple years I think?). If you’ve been struggling as a business for more than three years or if your revenue exceeds $1mil a year, you don’t qualify, otherwise if you intend to create a product (including a web site hosted on IIS) that’s core to your start-up, you do. It’s as simple as that. But don’t take my word for it, read the fine print yourself.

[Added 9/26/2009:] If you’re not a software business start-up but more of a web services start-up, creating a web site, or are a web designer, there’s a brand spanking new program for you, too, that’s just like BizSpark but targets you specifically. It’s called WebsiteSpark. I’m injecting mention of this into this blog post but already discussed it in a follow-up post; here are the basics: For a $100 offing fee (a fee that you pay when your license ends, rather than when it begins) you get Windows Web Server 2008 R2, SQL Server 2008 Web Edition, Visual Studio 2008 Professional Edition, and Expression Studio 3, and your license ends in three (3) years (same as BizSpark).

But let’s say you’re not really in business, you’re a college student, and you just need the software, without the pressure of being monitored for pursuing some kind of profit. Assuming that you are indeed in college, there’s hope for you, too, a complete suite of software for you including Windows Server 2008 Standard Edition, SQL Server 2008 Standard Edition, and Visual Studio 2008 Professional Edition, among other things, through a program called DreamSpark. All you need to qualify is to be a student. Congratulations.

An older program I took advantage of a few years ago, while Microsoft was still experimenting with these package deals, was the Empower program, which is like the BizSpark program but costs a few hundred bucks and doesn’t give you the ridiculously extensive Team Suite edition of Visual Studio. You basically have a year or two to enjoy it, and must offer a product within that timespan, after which point they drop you. But it was still a great deal considering the alternative outside of BizSpark was full-on full-priced licensing.

If you want a “normal everyday customer deal”, the MSDN subscription is still a good option. For about $1,200 for the Visual Studio Pro with Premium MSDN, you get everything under the sun (everything in BizSpark), except only the Team Suite flavor of Visual Studio. I’d save up my money for that even now if I didn’t already have what I needed.

Finally, if these still aren’t good enough for you, let me just say that if you work for an employer who provides an MSDN subscription directly to you as an employee (and I’ve had at least five or six employers do this in my career), and you go and use one of the unused licenses of one of the products under MSDN for your own personal use, unless Microsoft or your employer actually bother to check the download or activation history of your MSDN account, *psst* hey buddy, nobody will ever know. *wink* Seriously, don’t pirate. But hey I’m just sayin’. If you’re careful to only use the licenses that are not being and won’t be used (and in most cases with MSDN subscriptions there’s a ton of them), nobody will care.

Windows Web Hosting

All these things said, if you’re building a web site, you don’t likely need to buy Windows at all, other than the Windows instance on which you’re developing your app. You can rely on a third party web host just like nearly everyone else does. The price for hosting an ASP.NET app on a Windows-based server is typically about 20% more than the Linux offerings, but start at $4.99. You typically have to pay a little bit extra, as well, for extensive SQL Server requirements, but the basics are usually bundled in with these hosted deals.

The Costs Of Knowledge

Honestly, at $4.99 or even $10 a month, I don’t know what people would be complaining about. That’s a good price to host a Microsoft tools based solution. Sure, I can get a Linux hosted site running somewhere at as little as $2.99, but this comes at a prohibitive cost to me. First of all, I like most PC users (“most” being statistically speaking) am already familiar with Windows. In order to use Linux hosting effectively, one must explore and consume a lot of knowledge that otherwise has no relevance to my existing work-and-play environment.

Well let’s assume, then, that I know neither, and that I only use Windows for e-mail and web browsing. Let’s assume that I’m looking at PHP vs. ASP.NET and mySQL vs. SQL Server Express.

Linux proponents will say that you can dive right into PHP and mySQL because Linux doesn’t cost anything. But if you’re already running a moderately recent version of Windows, which statistically speaking you probably are, then this point is completely moot. Even with Windows XP (which is nearly a decade old and is showing its flatulent age) you can accomplish much with the tools that are already available to you.

At that point, then, which direction you should choose is going to be purely a matter of taste, vendor support, learning curve, and culture, because you can do pretty much anything on the Microsoft stack absolutely for free, or cheaper than the non-Microsoft alternative (i.e. Expression Studio vs. CS4), at every level, with no or very few strings attached.

I’d argue, then, that the cost of knowledge is the only significant cost factor if you already have Windows and you’re just doing your own thing. Both the Microsoft and the non-Microsoft user communities are strong and will assist you as you learn and grow. However, I prefer the Microsoft path specifically because the education, training materials, documentation, and, yes, marketing, all come from one vendor. It’s not lock-in that I want, not at all, so much as it’s the consistency that I enjoy (not to mention the intuitiveness of the Microsoft platform at every level from a user’s perspective). Everything starts with MSDN and Microsoft employees’ blogs, for example, and from there I get everything I need from help on how to use new C# language features to how to use Visual Studio to how to configure or extend IIS. Whereas, with the LAMP community, everything is fragmented and fractured. If that’s your preferred style, great. Just keep in mind that Windows can do everything you’re already doing in Linux. ;)

[Added 9/26/2009:] As I mentioned (er, injected) above under “The Cheap And Free Package Deals”, Microsoft just created a new program called WebsiteSpark. In addition to the Windows, SQL Server, Visual Studio, and Expression Studio licenses, you also get professional training. This training is still “coming soon”, I suspect it’ll be online training, but it’s professionally produced training nonetheless (no doubt).

Discussions In The Community

Browsing the comments at http://stackoverflow.com/questions/1370834/why-is-microsoft-stack-said-to-be-costly/1376168#1376168 infuriates me. This is actually the reason why I felt compelled to post this blog article. I am so sick and tired of the FUD that ignorant anti-Microsoft proponents keep pumping out. I’m going to assume that the OP’s context was for web applications, but it doesn’t matter much either way.

  • “But still, Linux hosting is cheaper than Windows hosting at pretty much every level.”

Ahh yes, web hosting. At $4.99 or even at $10 per month I really don’t care.

If we’re talking about VPS or dedicated server hosting, that’s another story. Let’s just say I have a Linux VPS I pay $30/mo. or so for, but I really don’t use it for much because it just doesn’t do enough for me reliably and intuitively, and meanwhile this blog is hosted on a $160/mo. virtual dedicated server (hosted) with Windows Server 2008, but it’s heavily used. I feel I get what I pay for.

  • “Linux hosting is almost always cheaper for the simple reason that the MS stack costs the host more to license (which is the point of most posts). Also you don't get development tools with a hosting service. Let's not forget that you're also liking going to need a more expensive "Ultimate Developer, Don't Gimp It" version of Windows desktop to run the dev tools.”

I don’t know what “Ultimate Developer, Don’t Gimp It” means, but I do agree that Ultimate is the best flavor of Windows to do development on. However, you don’t need Ultimate edition to do Microsoft stack development. Visual Web Developer (which is free) comes with its own test web server and installs fine on Windows XP Service Pack 2 or on Windows Vista Home Basic. And its output works great at targeting Windows based web hosts.

  • “I've heard of express editions. I've even downloaded some. I seem to remember a license condition about non-commercial use, although I may be wrong. I don't think the express editions are particularly good for commercial development in any case.”

Hogwash. The Visual Studio Express editions are blatantly characterized on Microsoft’s pathetic Express web site as being cheap, simple, and even a little crappy, but in fact they are extremely functional and capable of doing much more than “hobbyist” solutions. The suite is really very powerful and I for one believe that if Microsoft only had the Express suite and sold it as their commercial offering it would still be a powerful, viable platform for many shops. And yes, you’re allowed to use it for commercial development, and it works great for it.

However, as described above, there are ways to get the Professional and Team Suite editions of Visual Studio and SQL Server Developer Edition (full) without shelling out a lot or even any money.

  • “I don't know Microsoft's specific licensing policies (I can assume they are pretty reasonable), but I can tell you that developer tools are often more pricey than you'd imagine when you start licensing for your company.
    Often when you start buying developer licenses for teams of, say, 20-50 you are starting to talk about millions of dollars up front costs. $100,000 per developer wouldn't be unheard of (not counting the often mandatory annual support fees which can double that number easily).”

Ridiculous. $10,000, which is a tenth of what this guy said, is all it costs to get everything under the sun without one of the special deals like BizSpark. And if you have a team of that size and you’re an established corporation, it would be below you to still be asking the question, “Is the Microsoft stack really more expensive?” It will be business. And I must say, Microsoft doesn’t suck at supporting its fully-paying customers.

At any rate, I must say again, BizSpark (bundled suite of everything) is completely free, with a $100 closing fee.

  • “If you want to use ASP.NET you need
    • IIS
    • A server with Windows (for IIS)
    • Visual Studio
    • A work station with Windows for Visual Studio

    If you want to use PHP, Perl, Mono, Ruby... you need

    • A web server that supports the technology wanted. May be Apache, IIS...
    • An OS that supports your weberver
    • A workstation with any Linux, Window or mac”

This is silliness. If you want to use ASP.NET, you can go Mono all the way on Mac or Linux and never touch Windows or IIS. But ASP.NET wasn’t the discussion; the Microsoft stack was the discussion.

The Microsoft stack infers Microsoft being the vendor at every primary level of the software stack. So of course you need Windows. (And for the third or fourth time, statistically speaking you probably already have it.) And Mono wouldn’t count because it’s not Microsoft, so of course you need IIS. #develop (SharpDevelop) and other non-Microsoft development IDEs don’t count because they’re not Microsoft, so of course you would probably use Visual Studio.

On the other hand, “needing IIS” has no meaning because it’s a part of Windows, it’s like saying you need a hard drive, plus you need a computer (to contain the hard drive). It comes at no cost. It’s not a product, it’s a technology component of Windows.

Visual Studio is also not needed, rather it’s available as an option, and its Express flavors are free. You can also use vi, emacs, Notepad.exe, whatever you like. There is literally nothing that LAMP developers enjoy in their development lifecycle that they cannot establish with the Microsoft stack. If you want to write in vi and compile with a command line using ant and make, great, use vi and NAnt and NMake or MSBuild. If you like your command shells, great, most of the Linux command shells are available in Windows, plus Windows’ PowerShell. Have at it. But please, please don’t assume that you have to use Visual Studio if you use the Microsoft stack but you get to use simpler tools for LAMP development. The Microsoft stack has all those simpler tools at its disposal, too. (Yes, all for free, with the Windows SDK.)

  • “I don't think they're talking about the time required to develop on the Microsoft stack. They're talking about the cost of:
    • tools (Visual Studio, Resharper);
    • operating systems (Windows Vista, Windows Server); and
    • databases (SQL Server 2005/2008).”

*sigh* Need I say more and repeat myself? And if Resharper was available for PHP/Ruby, and I was doing PHP/Ruby development, I’d pay for that, too.

 

PowerShell 2 In Windows 7 Comes With A Windows Shell

by Jon Davis 1. September 2009 01:48

Here’s something I overlooked about Windows 7 RTM. Not only does it comes with PowerShell v2 (I didn’t overlook that) but it also comes with an “ISE”—an Integrated Shell Environment. The “ISE” gives you three “panes” or sub-windows to work with PowerShell from within a single containing window: an input console, an output console, and a syntax highlighting text editor for script editing and debugging.

image

It does let you specify a layout. However, firing this thing up I immediately felt like I was stuck in Windows Live applications’ CandyLand. It has a notably consumer feel, and I’m afraid that system administrators and developers will tend to shy away from it simply because of that. Why Microsoft didn’t just reuse their Visual Studio Integrated Shell is beyond me.

Nonetheless, this is a nice addition to the Windows 7 and PowerShell combination/suite and will no doubt prove to be very handy for those who want to casually tinker with PS scripting without several different windows open or dishing out dough for the basic functionality of a PS script debugger.

image
Another much wanted feature finally arrives: Remote PS Shells

 

I’m still eyeing PowerShell Plus, albeit just a tiny fraction of a hair less now because of this.

Running Out Of Resources (Even With Lots Of RAM Installed)

by Jon Davis 10. March 2009 13:33

“.. Ask yourself if you have ever encountered any of the following problems :-

    1. You try to open an application but it refuses to load or it starts to load and then it disappears!
    2. You try to open or use an application but you get an "Out Of Memory" error message!
    3. One of your running applications inexplicably quits!
    4. When you right-click on your application, nothing happens! The command menu refuses to pop-up!
    5. Your web browser simply refuses to load any more windows or tabs!
    6. Your application is missing some menus or toolbars!
    7. You get the following error messages :
               Initialization of the dynamic library <system>\system32\user32.dll failed. The process is terminating abnormally.
               Initialization of the dynamic library <system>\system32\kernel32.dll failed. The process is terminating abnormally.”

I’m shocked I never blogged this. Over at Coding Horror there was an article that was posted wherein in the comments section someone pointed me here:

http://www.techarp.com/showarticle.aspx?artno=238&pgno=0

It’s a 3-page article describing how to reconfigure your desktop heap so that you don’t keep running out of system resources. I’ve gone back to 32-bit XP w/ 4GB RAM at the office and needed to look this up again because I was still getting erratic behavior—more so, actually, because more RAM meant less hesitancy to open things up. A co-worker got the RAM, too, so I had to look it up yet again. It’s definitely worth looking at if you open lots of apps and/or web browser windows like I do.

In case that article goes down, it goes something like this:

Go to HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Session Manager –> SubSystems -> Key: Windows

If you check the Value data for the Windows key, it should be something like this :-

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

The portion of interest is "SharedSection=1024,3072,512".
The three values under Shared Section determines how much memory in kilobytes (KB) is allocated to each component of the desktop heap.

The first value is the shared heap size, common to all desktops. It's used to store the global handle table and shared system settings.

By default, it's set to 1024KB. You generally do not need to modify this value.

The second value is the desktop heap size for each desktop associated with the "interactive" window station. It's used to store user objects like hooks, menus, strings and windows.

By default, it's set to 3072KB. The more users log into the system, the more desktops are created. Consequently, the total "interactive" desktop heap size will increase to reflect the number of desktops created. But each desktop will only have an "interactive" desktop heap of 3072KB.

The third value is the desktop heap size for each desktop associated with the "non-interactive" window station.

By default, it's set to 512KB. But if this value is not present, the size of the "non-interactive" window station will be the same as that of the "interactive" window station.

Every service process created under a user account will be given a new desktop in a "non-interactive" window station created by the Service Control Manager (SCM). Therefore, each of these services will consume the amount of desktop heap, as specified in the third SharedSection value.

I’m guessing here but it looks like the desktop heap size should only be limited if you’re using Windows Server and Terminal Services, as I’m not sure how you can measure “the more users that log onto the desktop” outside of Terminal Services. Even Remote Desktop is a single-desktop experience.

I have mine reconfigured to:

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,6144,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

Not sure if that’s right but the system does still boot and I haven’t run into problem much anymore.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Computers and Internet | Microsoft Windows

Windows 7 Will Thrash SSD-Based Systems (And Microsoft Won't Fix It)

by Jon Davis 16. February 2009 00:50

A couple weeks ago I successfully installed Windows 7 on my Dell Mini 9 netbook and in the end it's only using up about 600MB, which is one or two hundred more megabytes than XP, which confirms reports about it being lighter weight than Windows Vista, and suitable for netbooks.

Unfortunately, a feature introduced in Vista remains in Windows 7 that could pose a problem to the lifespan of these netbooks. This feature is a Scheduled Task that is preconfigured to defrag the primary hard drive every Wednesday night. This is a good feature for "normal" hard drives, but is bad news for SSDs. Defragmenting a SSD (Solid State Disk) drive is hard on the drive. A normal hard drive can handle millions of reads/writes. An SSD drive is limited to only tens of thousands of overwrites per sector or data bit. Furthermore, SSD drives have zero (0) seek time, so defragmentation is entirely pointless on an SSD drive. If the hard drive is significantly full and the files are often fragmented, the defragmentation process will do a lot of damage to the SSD drive.

I reported this here:

https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=410949&SiteID=647&wa=wsignin1.0

Unfortunately, Microsoft updated the Status on this to "Won't Fix" and commented that they might look at it in the next version of Windows after Windows 7.

Well it's not worth fighting about, but at least be aware. If you do install Windows 7 on an SSD-based netbook or other SSD-based computer, just be sure you fire up the Task Scheduler administrative tool and track down that scheduled task to disable it.

Nine Reasons Why 8GB Is Only Just Enough (For A Professional Business Software Developer)

by Jon Davis 13. February 2009 21:29

Today I installed 8GB on my home workstation/playstation. I had 8GB lying around already from a voluntary purchase for a prior workplace (I took my RAM back and put the work-provided RAM back in before I left that job) but the brand of RAM didn’t work correctly on my home PC’s motherboard. It’s all good now though, some high quality performance RAM from OCZ and my Windows 7 system self-rating on the RAM I/O jumped from 5.9 to 7.2.

At my new job I had to request a RAM upgrade from 2GB to 4GB. (Since it’s 32-bit XP I couldn’t go any higher.) I asked about when 64-bit Windows Vista or Windows 7 would be put on the table for consideration as an option for employees, I was told “there are no plans for 64-bit”.

The same thing happened with my last short-term gig. Good God, corporate IT folks everywhere are stuck in the year 2002. I can barely function at 4GB, can’t function much at all at 2GB.

By quadrupling the performance of your employee's system, you’d effectively double the productivity of your employee; it’s like getting a new employee for free.

If you are a multi-role developer and aren’t already saturating at least 4GB of RAM you are throwing away your employer’s money, and if you are IT and not providing at least 4GB RAM to developers and actively working on adding corporate support for 64-bit for employees’ workstations you are costing the company a ton of money due to productivity loss!! I don’t know how many times I’ve seen people restart their computers or sit and wait for 2 minutes for Visual Studio to come up because their machine is bogged down on a swap file. That was “typical” half a decade ago, but it’s not acceptable anymore. The same is true of hard drive space. Fast 1 Terabyte hard drives are available for less than $100 these days, there is simply no excuse. For any employee who makes more than X (say, $25,000), for Pete’s sake, throw in an extra $1000-$2000 or so more and get the employee two large (24-inch) monitors, at least 1TB hard drive(s) (ideally 4 drives in a RAID-0+1 array), 64-bit Windows Server 2008 / Windows Vista / Windows 7, a quad-core CPU, and 8 GB of some high performance (800+ GHz) RAM. It’s not that that’s another $2,000 or so to lose; it’s that just $2,000 will save you many thousands more dough. By quadrupling the performance of your employee's system, you’d effectively double the productivity of your employee; it’s like getting a new employee for free. And if you are the employee, making double of X (say, more than $50,000), and if your employer could somehow allow it (and they should, shame on them if they don’t and they won’t do it themselves), you should go out and get your own hardware upgrades. Make yourself twice as productive, and earn your pay with pride.

In a business environment, whether one is paid by the hour or salaried (already expected to work X hours a week, which is effectively loosely translated to hourly anyway), time = money. Period. This is not about developers enjoying a luxury, it’s about them saving time and employers saving money.

Note to the morons who argue “this is why developers are writing big, bloated software that suck up resources” .. Dear moron, this post is from the perspective of an actual developer’s workstation, not a mere bit-twiddling programmer—a developer, that is, who wears many hats and must not just write code but manage database details, work with project plans, document technical details, electronically collaborate with teammates, test and debug, etc., all in one sitting. Nothing in here actually recommends or even contributes to writing big, bloated software for an end user. The objective is productivity, your skills as a programmer are a separate concern. If you are producing bad, bloated code, the quality of the machine on which you wrote the code has little to nothing to contribute to that—on the contrary, a poor developer system can lead to extremely shoddy code because the time and patience required just to manage to refactor and re-test become such a huge burden. If you really want to test your code on a limited machine, you can rig VMWare / VirtualPC / VirtualBox to temporarily run with lesser RAM, etc. You shouldn’t have to punish yourself with poor productivity while you are creating the output. Such punishment is far more monetarily expensive than the cost of RAM.

I can think of a lot of reasons for 8+ GB RAM, but I’ll name a handful that matter most to me.

  1. Windows XP / Server 2003 alone takes up half a gigabyte of RAM (Vista / Server 2008 takes up double that). Scheduled tasks and other processes cause the OS to peak out at some 50+% more. Cost: 512-850MB. Subtotal @nominal: ~512MB; @peak: 850MB
  2. IIS isn’t a huge hog but it’s a big system service with a lot of responsibility. Cost: 50-150. Subtotal @nominal: ~550MB; @peak 1GB.
  3. Microsoft Office and other productivity applications should need to be used more than one at a time, as needed. For more than two decades, modern computers have supported a marvelous feature called multi-tasking. This means that if you have Outlook open, and you double-click a Microsoft Word attachment, and upon reading it you realize that you need to update your Excel spreadsheet, which in your train of thought you find yourself updating an Access database, and then you realize that these updates result in a change of product features so you need to reflect these details in your PowerPoint presentation, you should have been able to open each of these applications without missing a beat, and by the time you’re done you should be able to close all these apps in no more than one passing second per click of the [X] close button of each app. Each of these apps takes up as much as 100MB of RAM, Outlook typically even more, and Outlook is typically always open. Cost: 150-1GB. Subtotal @nominal: 700MB; @peak 2GB.
  4. Every business software developer should have his own copy of SQL Server Developer Edition. Every instance of SQL Server Developer Edition takes up a good 25MB to 150MB of RAM just for the core services, multiplied by each of the support services. Meanwhile, Visual Studio 2008 Pro and Team Edition come with SQL Server 2005 Express Edition, not 2008, so for some of us that means two installations of SQL Server Express. Both SQL Server Developer Edition and SQL Server Express Edition are ideal to have on the same machine since Express doesn’t have all the features of Developer and Developer doesn’t have the flat-file support that is available in Express. SQL Server sitting idly costs a LOT of CPU, so quad core is quite ideal. Cost: @nominal: 150MB, @peak 512MB. Subtotal @nominal: 850MB; @peak: 2.5GB. We haven’t even hit Visual Studio yet.
  5. Except in actual Database projects (not to be confused with code projects that happen to have database support), any serious developer would use SQL Server Management Studio, not Visual Studio, to access database data and to work with T-SQL tasks. This would be run alongside Visual Studio, but nonetheless as a separate application. Cost: 250MB. Subtotal @nominal: 1.1GB; @peak: 2.75GB.
  6. Visual Studio itself takes the cake. With ReSharper and other popular add-ins like PowerCommands installed, Visual Studio just started up takes up half a gig of RAM per instance. Add another 250MB for a typical medium-size solution. And if you, like me lately, work in multiple branches and find yourself having to edit several branches for different reasons, one shouldn’t have to close out of Visual Studio to open the next branch. That’s productivity thrown away. This week I was working with three branches; that’s 3 instances. Sample scenario: I’m coding away on my sandbox branch, then a bug ticket comes in and I have to edit the QA/production branch in an isolated instance of Visual Studio for a quick fix, then I get an IM from someone requesting an immediate resolution to something in the developer branch. Lucky I didn’t open a fourth instance. Eventually I can close the latter two instances down and continue with my sandbox environment. Case in point: Visual Studio costs a LOT of RAM. Cost @nominal 512MB, @peak 2.25GB. Subtotal @nominal: 1.6GB; @peak: 5GB.
  7. Your app being developed takes up RAM. This could be any amount, but don’t forget that Visual Studio instantiates independent web servers and loads up bloated binaries for debugging. If there are lots of services and support apps involved, they all stack up fast. Cost @nominal: 50MB, @peak 750MB. Subtotal @nominal: 1.65GB; @peak: 5.75GB.
  8. Internet Explorer and/or your other web browsers take up plenty of RAM. Typically 75MB for IE to be loaded, plus 10-15MB per page/tab. And if you’re anything like me, you’ll have lots and lots and LOTS of pages/tabs by the end of the day; by noon I typically end up with about four or five separate IE windows/processes, each with 5-15 tabs. (Mind you, all or at least most of them are work-related windows, such as looking up internal/corporate documents on the intranet or tracking down developer documentation such as API specs, blogs, and forum posts.) Cost @nominal: 100MB; @peak: 512MB. Subtotal @nominal: 1.75GB; @peak: 6.5GB.
  9. No software solution should go untested on as many platforms as is going to be used in production. If it’s a web site, it should be tested on IE 6, IE 7, and IE 8, as well as current version of Opera, Safari 3+, Firefox 1.5, Firefox 2, and Firefox 3+. If it’s a desktop app, it should be tested on every compatible version of the OS. If it’s a cross-platform compiled app, it should be tested on Windows, Mac, and Linux. You could have an isolated set of computers and/or QA staff to look into all these scenarios, but when it comes to company time and productivity, the developer should test first, and he should test right on his own computer. He should not have to shutdown to dual-boot. He should be using VMWare (or Virtual PC, or VirtualBox, etc). Each VMWare instance takes up the RAM and CPU of a normal system installation; I can’t comprehend why it is that some people think that a VMWare image should only take up a few GB of hard drive space and half a gig of RAM; it just doesn’t work that way. Also, in a distributed software solution with multiple servers involved, firing up multiple instances of VMWare for testing and debugging should be mandatory. Cost @nominal: 512MB; @peak: 4GB. Subtotal @nominal: 2.25GB; @peak: 10.5GB.

Total peak memory (64-bit Vista SP1 which was not accounted in #1): 11+GB!!!

Now, you could argue all day long that you can “save money” by shutting down all those “peak” processes to use less RAM rather than using so much. I’d argue all day long that you are freaking insane. The 8GB I bought for my PC cost me $130 from Dell. Buy, insert, test, save money. Don’t be stupid and wasteful. Make yourself productive.

Two More Things About Windows 7

by Jon Davis 17. January 2009 04:44

I wanted to add two more early comments on my experience with Windows 7 so far.

  1. My favorite new feature of Windows 7 is the ability to take a normal / restored window and maximize it by just dragging it to the top of the screen and letting it dock. I can restore it in the same way, just drag the title bar off the top of the screen and it becomes restored again. And if I want it to fill the right half of the screen, I can dock it to the right, and likewise for the left side. WAY too handy, it's one of those things that makes you wonder, why haven't we been doing it that way for years?
  2. My new big fat pet peeve that makes me think someone at Microsoft is a little nutty and insane is the Virtual Store security "feature" that was implemented in Windows Server 2008 has ended up in Windows 7 as well. I cannot express enough how much I ABSOLUTELY HATE THIS HORRIBLE FEATURE.
    • To fix it now you need to open "Security Configuration Management" where you'll find Local Policies -> Security Options -> "Virtualize file and registry write failures to per-user locations" and disable the thing.

On a side note, in a previous blog entry I told a "story" about how I had to use an external USB-based DVD drive to install Windows because the IDE drive wasn't detected. Well, with everything installed I was still unable to use my built-in drive. I could dual-boot to Vista and use the same drive all day, so this is clearly a driver issue. And I know I'm not the only one with the problem; as Google reveals, it's one of the big well-known let-downs of the Windows 7 beta.

How My Microsoft Loyalty Is Degrading

by Jon Davis 7. June 2008 16:59

I've sat in this seat and often pronounced my discontent with Microsoft or a Microsoft technology, while still proclaiming myself to be a Microsoft enthusiast. Co-workers have often called me a Microsoft or Windows bigot. People would even give me written job recommedations pronouncing me as "one who particularly knows and understands Microsoft technologies".

But lately over the last year or two I've been suffering from malcontent, and I've lost that Microsoft spirit. I'm trying to figure out why. What went wrong? What happened?

Maybe it was Microsoft's selection of Ray Ozzie as the new Chief Software Architect. Groove (which was Ozzie's legacy) was a curious beast, but surely not a multi-billion-dollar revenue product, at best it was a network-based software experiment. Groove's migration to Microsoft under the Office umbrella would have been a lot more exciting if only it was quickly adopted into the MSDN vision and immediately given expansive and rich MSDN treatment, which it was not. Instead, it was gradually rolled in, and legacy SDK support just sort of tagged along or else "fell off" in the transition. Groove was brought in as an afterthought, not as a premier new Microsoft offering. Groove could have become the new Outlook, a rich, do-it-all software platform that brought consolidation of the team workflows and data across teams and diperate working groups, but instead it became just a simple little "IM client on steroids and then some" and I quickly abandoned it as soon as I discovered that key features such as directory sharing weren't supported on 64-bit Windows. So to bring Ozzie in and have him sit in that chair, and then have that kind of treatment of Ozzie's own Groove--Groove being only an example but an important, symbolic one--really makes me think that Microsoft doesn't know what on earth it's doing!! Even I could have sat in that chair and had a better, broader sense of software operations and retainment of vision, not that I'm jealous or would have pursued that chair. The day I heard Ozzie was selected, I immediately moaned, "Oh no, Microsoft is stuck on the network / Internet bandwagon, and has forgotten their roots, the core software platforms business!!" The whole fuzzy mesh thing that Microsoft is about to push is a really obvious example of where Microsoft is going as a result of bringing in Ozzie, and I hardly find a network mesh compelling as a software platform when non-Microsoft alternatives can so easily and readily exist.

Maybe it's Microsoft's audacity to abandon their legacies in their toolsets, such as they have done with COM and with VB6. There still remains zero support for easily building COM objects using the Visual Studio toolsets, and I will continue to grumble about this until an alternative component technology is supported by Microsoft that is native to the metal (or until I manage to get comfortable with C/C++ linked libraries, which is a skill I still have to develop 100% during my spare time, which is a real drag when there is no accountability or team support). I'm still floored by how fast Microsoft abandoned DNA for .NET -- I can completely, 100% understand it, DNA reached its limits and needed a rewrite / rethink from the bottom up, but the swappage of strategies is still a precedent that leaves me with a bad taste in my mouth. I want my personal investments in software discovery to be worth something. I'm also discouraged--the literal sense of the word, I'm losing courage and confidence--by the drastic, even if necessary, evolutionary changes Microsoft keeps doing to its supported languages. C# 2 (with stuff like generics support) is nothing like C# 1, and C# 3 (with var and LINQ) is nothing like C# 2. Now C# 4 is being researched and developed, with new support for dynamic language interop (basically, weak typing), which is as exciting as LINQ was, but I have yet to adopt even LINQ, and getting LINQ support in CLR object graphs is a notorious nightmare, not that I would know but everyone who tries it is pronouncing it as horrible and massive. Come to think of it, it's Microsoft's interop strategy that has been very frustrating. COM is not Remoting, and Remoting is not WCF. WCF isn't even supported in Mono, and so for high performance, small overhead interprocess communications, what's the best strategy really? I could use WCF today but what if WCF is gone and forgotten in five years?

Maybe it's the fact that I don't have time to browse the blogs of Microsoft's developer staff. They have a lot of folks over there, and while it's pretty tempting to complain that Microsoft "codes silently in a box", the truth is that there are some pretty good blogs being published from Microsofties, such as "If broken it is, fix it you should", albeit half of which I don't even understand without staring at it for a very long time. Incidentally, ScottGu does a really good job of "summing up" all the goings on, so thumbs-up on that one.

I think a lot of my abandonment of loyalty to Microsoft has to do with the sincerity of my open complaint about Internet Explorer, how it is the most visible and therefore most important development platform coming from Redmond but so behind-the-times and non-innovative versus the hard work that the Webkit and Mozilla teams are putting their blood, sweat, and tears over, that things like this [http://digg.com/tech_news/Time_breakdown_of_modern_web_design_PICTURE] get posted on my wall at the office, cheerily.

Perhaps it's the over-extended yet limited branding Microsoft did with Vista, making things like this [http://reviews.cnet.com/8301-13549_7-9947498-30.html] actually make me nearly shed a tear or two over what Windows branding has become. That Windows Energy background look looks neat, but it's also very forthright and "timestamped", kind of like how disco in the 70's and synth-pop in the 80's were "timestamped", they sounded neat in their day but quickly became difficult to listen to. That's what happens with too strong of an artistic statement. Incidentally, Apple's Aqua interface is also "timestamped", but at least it's not defaulting with a strong artistic statement plastered all over the entire screen. I like the Vista taskbar, but what's up with the strict black, why can't that or other visual aspects be tweaked? At least it's mostly-neutral (who wants a bright blue or yellow taskbar?), but it's still just a bit imposing IMO.

I'll bet it has to do with the horrifying use of a virtualized Program Files directory in Windows Server 2008 where the practice was unannounced. This is the sort of practice that makes it VERY difficult to trust Microsoft Windows going forward at all. If Windows is going to put things in places that are different from where I as a user told them to be placed, then we have a behavioral disconnect--software should exist to serve me and do as I command, not to protect me from myself while deceiving me.

At the end of it all, I think my degrading sense of loyalty could just be the simple fact that I really am trying to spread out and discover and appreciate what the other players are doing. I mentioned before that Mac OS X is still the ultimate, uber OS, but now that I have it, I confess, I had no idea. Steve Jobs is brilliant, and it's also profound how much of OS X is open source, basically all of the UNIXy bits, which says a lot about OSS. Mind you, parts of the Mac I genuinely do not like and have never liked, such as the single menubar, which violates very key and important rules for UI design. I also generally find it difficult to manage multiple applications running at once, for which I much prefer the Windows taskbar over the Dock if only because it's more predictable, and although it violates UI principles I prefer Alt+Tab for all windows rather than Command+Tab just for applications because every window is its own "workflow" regardless of who owns it. But, among other things, building on PostScript for rendering, for example, was a fantastic idea; on the other hand, Microsoft's ClearType would have been difficult to achieve if Windows used PostScript for rendering. Anyway, meanwhile, learning and exposing myself to UNIX/Linux based software is good for me as a growing software developer, and impossible to cleanly discover in Windows-land without using virtual machines.

In other words, the only way one can spread out and discover the non-Microsoft ways of doing things, and appreciate the process of doing so, is to stop swearing by the Microsoft way to begin with, and approach the whole thing with an open mind. In the end, the Microsoft way may still prove to be the best, but elimination of bias (on both sides) is an ideal goal to be achieved before pursuing long-term personal growth in software.

Currently rated 3.9 by 10 people

  • Currently 3.9/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

General Technology | Operating Systems | Software Development | Microsoft Windows | Mac OS X

New York Times proves out Silverlight integration in a native Mac application

by Jon Davis 24. May 2008 19:46

New York Times has migrated their popular WPF-based New York Times Reader to the Mac, using Silverlight and native Cocoa windowing and application logic, and using the Safari / WebKit API as a Silverlight wrapper. (Darn it, I knew it was both doable and legal!)

http://firstlook.nytimes.com/?p=49 

It doesn't have the text flow feature that WPF was so fantastically good at, but being as text flow is rumored as "coming soon", either for NY Times' reader or for Silverlight, I'm pretty excited about the future of that. 

I blogged about the feasability of this (native, non-web cross-platform apps with Silverlight rendering) just days ago, motivating myself to outright buy a Mac since I didn't see anyone bothering to try. Now that someone has not only tried but succeeded and released a significant product based on it, I feel a little mixed -- part bummed that I didn't get to post first-discoveries, but part excited that Silverlight has potential for an Adobe AIR-like wrapper, both technically and legally.

The NY Times Reader for Mac sure isn't running on WPF, though, and it shows. The user experience is clunky and the lack of text flow is painful (try resizing the window or scaling the text). The whole thing is nothing like the WPF version, except only for the initial screenshot appearance (without interacting) and, perhaps, the actual content.

kick it on DotNetKicks.com

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

Microsoft Windows | Web Development | Mac OS X | WPF


 

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

About the author

Jon Davis (aka "stimpy77") has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

Jon was previously employed as a senior .NET developer at a very well-known Internet services company whom you're more likely than not to have directly done business with. However, this blog and all of jondavis.net have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 


Tag cloud

Calendar

<<  April 2014  >>
MoTuWeThFrSaSu
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar