I Think Perhaps I Also Just Don’t Like N-

by Jon Davis 29. September 2009 22:54

As I’ve been continuing to work on Gemli.Data, which has been continually been getting smarter and cleaner (last night I added to the dev branch the syntactic sugar of one-line loads and one-line saves straight to/from POCO objects) it keeps haunting me as it has since long before I even started the project that some people just won’t understand why I bother when there’s NHibernate.

I’ve briefly mentioned the main reason why I am not on the NHibernate bandwagon—that I find it has a steep learning curve and it’s cumbersome, even its Fluent flavor is cumbersome—but I think it goes a little bit beyond that. I think it has an ‘N’ prefix. And that bugs me.

It’s not just semantics.

Over the years in computer science’s past, the Java programming language picked up a few tools that were built for it, and were sometimes built for other environments but were re-tailored for Java, and these tools were prefixed with a ‘J’. This became a cutesy “I love my Java” naming convention for a few such tools. And then some of them learned C#.

So meanwhile in C#-land, we started getting these heavy duty toolsets that C# didn’t previously have, and they had either an ‘N’ prefix or a “.NET” suffix. NAnt. NDoc. NUnit. Lucene.NET. Spring.NET.

Every single one of these tools had one thing in common: they were ports! They came in from the Atlantic, hauling all their baggage and “cultural diversities” of Java into our world and showing little respect to the culture that was here. So to speak.

Truthfully, the people responsible for this had nothing less than the absolute best of intentions, and their efforts were both admirable and helpful to the computing society of .NET culture. We .NET folks, “Morts” that some of us were, didn’t really have much culture. Nor did we have discipline, as our culture and technical understanding of computer science were defined primarily by one single entity (which resides in Redmond, Washington) and its clients.

But these N-prefixed / .NET-suffixed ports seem just a little insulting to me; it feels like their creators are trying to tell us, “Here, Microsofties! Now you can say, ‘me, too!’” It’s not just hurt feelings, though. (LOL.) The ports themselves have language features that seem somewhat foreign to both traditional C# code as well as to what “could be and should have been”. This isn’t always the case, of course, but at times it makes me cringe.

So, putting things into perspective, why Gemli? Because I was here first, I was a native, and I want to play my little part, whether others participate or not, in shaping .NET to be, at least to me in my own little world, what I think .NET should be. It should be .NET. Not Java.

What does that mean to me? From the get-go, .NET had features Java didn’t have (although it perhaps now does), like System.Reflection which gives us the power to infer things, and System.Reflection.Emit which gives us the power to optimize on-the-fly (and which I’m not taking advantage of yet, by the way, but do intend to). Microsoft totally FAILED the opportunities, in my opinion, to exploit such things for tooling, while at the same time feeling free to exploit it with JITting and other areas where the CLR works in a more proprietary manner. But that’s fine, that’s where open source comes in. But you know what? If we’re going to be open sourcing software based on .NET I’d like it to NOT come from the environments that didn’t have these features already.

Spring.NET comes from Spring which is a Java thing which in turn did not originally have the eventing and delegate power that C# always had. And NHibernate comes from Hibernate which is a Java thing which in turn did not originally have the reflection power that C# always had.

So then we have Fluent NHibernate, which has automapping support, which is nice. Fluent NHibernete is, I perceive to be, original to C# and not yet another port from Java which recently acquired reflection support. I have to confess, Fluent NHibernate is beautiful, I’d recommend it to anyone who’s taking software development seriously, because it has its origins in .NET, aside from its NHibernate mother. But it comes with a few ALT.NET encumbrances of hyper-configurability with delegates (lambdas) in the name of “convention over configuration” which comes across to me as an oxymoron in this case. But don’t get me wrong, I actually do like Fluent NHibernate, I just don’t, well, like it. What?

Which reminds me, this ALT.NET thing… It got real big and popular a year or two ago and from them came the influences that led up to ASP.NET MVC, good for them, good for us, hurray! But it seems to me that there are two “alt” crowds in the .NET community—those who have had enterprise-level experience in formal software shops that used open source tools and who have a lot of expectations in software tooling in general to be flexible (i.e. the Java crowd), and those who prefer to approach software tools from a “get ‘er done'” approach and who are constantly looking for ways to shortcut the process of writing software quickly and effectively, without being treated like little children, by identifying conventions and building around them (i.e. the Ruby on Rails crowd). ALT.NET seems to be driven by these two forces and they often contradict each other.

The enterprise crowd seems to win, though. And it annoys me. NHibernate has Java-esque eccentricities written all over it. Gemli, meanwhile, is more for the “get ‘er done” but I do fully appreciate flexibility and raw power, too. My long-term goal with Gemli (not just Gemli.Data but the whole project) is to make the Ruby on Rails intro video here look like a headache and a chore to produce the same output. The video has a lot of “look what we had up our sleeves that we won’t show you” stuff happening. My goal is to create tooling, working alongside other originating-from-the-.NET crowd (as in, not ported from Java or Ruby) open source solutions for .NET like the Spark View Engine and the Argotic Syndication Framework, that makes the process of building the same web app both intuitive and well-designed and not feel like a bunch of tricks up our sleeves. I also plan to produce a video that is concise and understandable that produces the same solution with the same features (to detail), with a better user experience, in only 10 minutes and not 15. Gemli needs a few more things to make this happen, but it’s all coming and I’m still very much on track.

Currently rated 5.0 by 1 people

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

Tags:

Spark Makes Me Fall In Love With Web Development Again

by Jon Davis 26. September 2009 20:50

Now and then I discover a technology that makes me think, “Wow, I love being a web developer.” ASP.NET did it, back in the day. jQuery did it. ASP.NET MVC sorta did it, although I feel it has a lot of room to grow and I have high expectations of v2.

Microsoft’s “acquisition” of Louis DeJardin as a new employee, something that happens to all Microsoft employees (imagine that) and the mention of the “incident” on someone’s blog or on Twitter (dunno where??) has caused me to “click on da link” and discover the Spark View Engine for ASP.NET MVC, which this fella created. I never heard of the guy until I came across this.

The Spark View Engine is one of those things that made me realize, first of all, gosh, I didn’t realize just how flexible the ASP.NET MVC View Engine extensibility was. And the next thing it made me realize was that producing ASP.NET MVC views doesn’t have to be so ugly.

In fact, ASP.NET MVC views, using Spark, can be pretty remarkably readable and maintainable. Spark fills in the gaps of what some of us might’ve wished ASP.NET already did for us, such as automatically always assume a master page without rigging each and every page with a master page reference. Plus it gives us a somewhat cleaner syntax, so we can use {$MyObject.Property$} instead of <%=MyObject.Property%>. Better than that, it reads HTML tags and lets you drop in templating logic as HTML attributes, so instead of <% foreach (var p in products)  { %><div><%=p.Name%></div><% } %> you can use the cleaner <div each=”var p in products”>${p.Name}</div>. It supports if..else as markup among other things, too.

I think the thing I like best about this is that it’s more or less renderable HTML templating without regard to server execution—I can get a preview of a lot of this in non-executed HTML and see my placeholders without seeing curly braces or getting designer or 500 errors. This is really important when you’re trying to produce clean markup and communicate with colleagues and partners.

I’m only still in the process of discovering this thing (watching the videos) but so far I’m loving it. Well done and let’s support this project as I’d like to see it continue to evolve and get better support.

There’s also a pretty thorough podcast here: http://herdingcode.com/?p=216

Be the first to rate this post

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

Tags:

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

CSS For Layouts: Meh, I'll Stick With Tables, Thanks

by Jon Davis 24. September 2009 11:09

I tend to agree with the sentiments posted here:

http://www.flownet.com/ron/css-rant.html [followups here and here].

I've wasted WAY too many aggregate hours trying to nudge DIVs into place using half-baked CSS semantics that work on all browsers without workarounds, where the simple use of a <TABLE> tag would have sufficed just fine. Even this blog's sidebar does not behave the way I wanted it to behave despite spending some time trying and failing to get it to behave according to my preferences because I chose CSS instead of <TABLE> and, frankly, CSS sucks for some things such as this. With <TABLE> I can say simply <TABLE WIDTH="100%"><TR><TD>..</TD><TD WIDTH="300"> and boom I have a perfect sidebar with fixed width and a fluid content body with ABSOLUTELY NO CSS TO HAVE TO MANGLE other than disabling the default HTML rendering behavior of borders and spacing.

Ron comments,

Another common thread is that "tables are for tabular data, not layout." Why? Just because they are called tables? Here's a news flash: HTML has no semantics beyond how it is rendered! (That's not quite true. Links have semantics beyond their renderings. And maybe label tags. But nothing else in HTML does.)

The only reservation I have in favor of DIVs instead of TABLEs is when it gets down to nesting. Deeply nested <TABLE>'s can get really, really ugly. I think this is where all the hatred of <TABLE>s comes from, which I agree with.

I've reached the conclusion that if I can use <DIV>'s effectively (and quickly) and the behavior is predictable, I'll use DIVs. But same with TABLEs. I have yet to hear a CSS purist describe a logical reason to use DIVs+CSS over TABLEs for overall page structure. It all seems to be cognative dissonance and personal bias.

Be the first to rate this post

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

Tags: , , ,

Web Development

Use A Prefab Comparer For Case-Insensitive Dictionaries

by Jon Davis 22. September 2009 14:56

I'm kicking myself because I always just assumed that generic dictionaries in C#, i.e. Dictionary<string, object>, were case-sensitive. I always assumed that in order to have a case-insensitive dictionary, you had to do one of two things:

  1. public class CaseInsensitiveDictionary<TValue> : Dictionary<string, TValue> { ... }
  2. var item = myDictionary.Find(kvp=>kvp.Key.ToLower() == myKey.ToLower());

Actually, Dictionary<K,V> has a constructor that accepts a comparer object with which you can take advantage of prefab case-insensitive key-matching behavior.

Dictionary<string,object> myDictionary = new Dictionary<string,object>(StringComparer.InvariantCultureIgnoreCase);

I realized this upon stumbling across the MSDN documentation, which, of course, everyone reads for fun. 

http://msdn.microsoft.com/en-us/library/ms132073.aspx

Gemli Project v0.2 Released

by Jon Davis 21. September 2009 03:57

Earlier this late night I posted the first major overhaul update of Gemli since a month ago. This brings a huge number of design fixes and new features to Gemli.Data and makes it even more usable. It's still alpha, though, as there's a lot more testing to be done, not to mention still some new features to be added.

http://gemli.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33281

From the release notes:

  • Added to DataProviderBase: SupportsTransactions { get; } , BeginTransaction(), and BeginTransaction(IsolationLevel)
  • Facilitate an application default provider: Gemli.Data.Providers.ProviderDefaults.AppProvider = myDBProvider .. This allows DataModels and DataModelCollections to automatically use the application's data provider when one hasn't already been associated with the model (so you can, for example, invoke .Save() on a new model without setting its provider manually)
  • Replace (and drop) TypeConvertor with DbTypeConverter.
  • Operator overloads on DataModelQuery; you can now use == instead of IsEqualTo(), but this comes at the cost of chainability. (IsEqualTo() is still there, and still supports chaining.)
  • Added SqlDbType attribute property support. DataType attribute value is no longer a DbType and is instead a System.Type. The properties DbType and SqlDbType have been added, and setting any of these three properties will automatically translate and populate the other two.
  • DataType attribute value is no longer a DbType and is instead a System.Type. The properties DbType and SqlDbType have been added, and setting any of these three properties will automatically translate and populate the other two.
  • WhereMappedColumn is now WhereColumn
  • Facilitate optional behavior of inferring from all properties not marked as ignore, rather than the behavior or inferring from none of the unattributed properties unless no properties are attributed. The latter behavior--the old behavior--currently remains the default. The new behavior can be applied with DataModelTableMappingAttribute's PropertyLoadBehavior property
    • This may change to where the default is InferProperties.NotIgnored (the new behavior), still pondering on this.
  • Add sorting to MemoryDataProvider
  • TempMappingTable is now DataModelMap.RuntimeMappingTable
  • ForeignDataModel.ForeignXXXX was backwards and is now RelatedXXXX (multiple members)
  • DataModelFieldMappingAttribute is now DataModelColumnAttribute.
  • DataModelMap.FieldMappings is now DataModelMap.ColumnMappings.
  • DataModelTableMappingAttribute is now DataModelTableAttribute.
  • DataModelForeignKeyAttribute is now ForeignKeyAttribute.
  • The XML serialization of all elements now follows these renamings and is also now camelCased instead of ProperCase.
  • XML loading of mapping configuration is getting close, if it isn't already there. Need to test.
  • Added DataModelMap.LoadMappings(filePath)

Be the first to rate this post

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

Tags: ,

C# | Cool Tools | Pet Projects | Software Development

Gemli.Data Runs On Mono (So Far)

by Jon Davis 20. September 2009 00:44

I was sitting at my Mac Mini to remote into my Windows 7 machine and I had this MonoDevelop 2.0 icon sitting there (I had installed it a couple days ago just to see it install and run) and I thought I should give Gemli.Data a quick, simple test run.

Screen shot 2009-09-20 at 12.38.02 AM

(Click to view)

Notice the “Application output” window. It werkie!!

I was concerned that Mono hadn’t been flushed out well enough yet to be stable with Gemli.Data, I do a lot of reflection-heavy stuff with it to get it to infer things, not to mention System.Data dependency stuff. But it seems to work fine.

This isn’t by any means a real test, more of a quick and dirty mini smoke test. I was very happy to see that it works fine, and my confidence in Mono just went up a notch.

Not shown in the screen shot, I expanded it a little tiny bit to have multiple records, then I added sorting in the query. Apparently Gemli doesn't have sort support in the MemoryDataProvider yet so I used LINQ-to-Objects. Yes, LINQ syntax worked in Mono, too! Nifty!

Satellite Crash (or How Dell Frustrates Their Purchasing Customers With A One-Cent Error)

by Jon Davis 17. September 2009 22:56

Two years ago, I blogged with great excitement the huge investment I made in the most expensive laptop I could find at Fry’s Electronics, a Toshiba Satellite X205-S9359. Keep in mind that software, computers, and the web, are my career and my primary hobby at the same time, so I felt that this was a justified investment, and in the long run it ultimately paid off, as my Toshiba has served me every day non-stop for two years straight. (And needless to say, I’m single.) I reviewed it on Amazon as a "Fully Loaded Do-It-All Portable Mega-Station”, giving it only two stars, though, because of the price, because of its slow hard drives, and because it was HD-DVD and not Blu-ray.

Now the pay-off ends. This beast has eaten eight hard drives like a dirty cassette deck eats cassette tapes. And this week eat ate the last one I’m willing to tolerate being eaten.

Yes you read that right, eight hard drives. How?

Start with two hard drives. They’re slower than a turtle, crawling at 5400 RPM. Toss ‘em, replace ‘em with 150GB 7200 RPM’ers. Use ‘em for a year, watch ‘em fill up. Got no more room! So those get replaced with two 250GB drives. Half a year later, those stop working; data gets corrupted and the whole machine freezes up regularly. So I replace those, now 350GB. The machine works perfectly. Use ‘em for a few months, and the first drive pukes, I can’t even keep it running for a session. So the first of two drives (the main drive with Windows and all my programs) gets replaced.

Now here I am a couple months since the last replacement and I’m seeing the same symptoms—worse, actually, now system files are corrupted and I can’t open several apps I normally use because of corruption. In fact, I couldn’t even boot until I ran chkdsk to repair the data.

There’s a simple explanation for this “melting drive” behavior. Obviously, a fan’s not working right. Maybe a couple fans inside this monstrosity of a laptop are down, I dunno. I used to be able to hold my hand up to the side and it would blow hot air on my hand and scorch it like a hair dryer, now when I hold my hand up I can barely feel any air flow. So there’s no question it’s a fan outage.

The problem is that this is a laptop. I’m typing this blog entry on my mid-size tower PC, not the laptop. It’s a black white box (a black-colored “white box”), a home built PC. If this machine’s fans went out, I could just go to Fry’s and snag any standard PC fan. But laptops are proprietary little devils. You have to either seek out an equivalent unit on eBay that is broken down but hopefully has the working part I need (this investment costs hundreds of dollars) or you have to acquire it from the manufacturer (and this takes months of paperwork and waiting).

[UPDATE: Looks like I might be in luck. Part is here and here.]

Or, you can just toss the laptop and start over.

I don’t have the money to do that, but I think I’m getting antsy enough to be willing to shuffle some personal budget plans around to make it happen. It’s my primary PC, I can’t function without it! ;) (Actually, I literally can’t, even this mid-size tower won’t meet my needs because some software, namely SQL Server 2008 Express, won’t run right on it until I figure out why.)

That’s what I’m going to try to do; I’m going to rearrange my budget and make a laptop purchase happen. However, earlier this week when I discovered that Windows wouldn’t even boot because of corruption and concluded that my laptop itself is in an unusable state, I hopped onto Dell’s web site and made a selection. Given what the Toshiba has done for me for the last two years, I wanted this to be an investment that wouldn’t necessarily be a functional downgrade. I wanted a decent machine I would continue to enjoy like I have enjoyed the Toshiba all this time. So I made my selection—a beautiful Studio XPS 16—and went to check out using the online order form. I selected Dell Financing as my method of payment because I have a line of credit with Dell with which I bought a Dell Mini 9 a while back, which is fine for social networking but otherwise worse than useless for what I need of a primary computer. But the order form told me I didn’t have quite enough credit with Dell Financing to handle the purchase. It let me split the order to two forms of payment between Dell Financing and another card, so that’s what I chose to do.

Dell’s order form determined my available credit and split the charges using that value. I changed nothing. I only entered my address and debit card information for my bank to cover the leftover costs.

Within hours, however, I received an e-mail in my Inbox indicating that my order was put on hold because a payment method had been declined. So the next day (that was yesterday) I stepped outside from the office and called them up to ask what had happened. They told me that it was Dell Financial that declined my order. I spent literally 30-45 minutes on the phone with Dell trying to figure out what went wrong and to ultimately cancel my order. What happened was that when the order form gathered my available credit from the Dell Financing department, there must have been some kind of rounding error because the order form overcharged my line of credit by one cent ($0.01). One measly penny! I asked, “Can’t you extend my line of credit by one penny?” “No, I’m sorry, sir, when I put you on hold a minute ago I was asking if there was anything we could do about this. But there isn’t, you need to ask the sales representatives to submit an order that is less than or equal to your available credit.” Well they weren’t exactly able to help, I knew that the person I was speaking with wanted to help but her hands were tied. Anyway, I didn’t want to fix this problem, I had already decided to cancel the order before it was even “declined”, my selection was made too hastily without consideration of other options, but I was very angry with Dell for making me have to be the one to suffer the follow-up efforts on behalf of their own mistake.

I am truly befuddled by the one-cent mishap. How many customers have to go through this? Does this happen every time the payment methods are split? There is no “complaints and suggestions” e-mail address to pass these people a hint, either. Best I can do is blog about it.

I have since been looking at other brands such as HP. Dell has gone the way of Apple anyway, the Studio XPS, Adamo, and (*gag*) Alienware product lines charge way too much for making an artistic statement rather than for being practical. I’d be interested in the Dell Precision line but my line of credit only applies to home/personal products (which makes absolutely no sense to me whatsoever). But I expect I’ll find a laptop, something practical that I’ll enjoy within the next couple weeks.

Meanwhile as for this Toshiba, I think I’m going to try to salvage it. I’ll keep looking for that fan I need, maybe I’ll get lucky and find just the fan on eBay sometime. I don’t see myself getting it working particularly soon so it’ll ultimately be a backup machine but a backup machine has to be in working order or else it’s not a backup, right?

OpenCAPTCHA.org: Prototyping v0.1 With ASP.NET

by Jon Davis 14. September 2009 00:34

Weeks ago I mentioned a new initiative called OpenCAPTCHA.org whereby I was drafting my own public domain specification and sharing it with the world at http://www.opencaptcha.org/

As anyone who’s been monitoring my blog here would notice, I set that initiative aside and focused on The Gemli Project’s O/RM (Gemli.Data) which is in a usable state but still has a lot more additional features needing to be added. After spending the last week on futzing with XML serialization of the mapping dictionary so I might be able to shortcut the process of loading a class-to-table mapping list, I’ve gotten a little burned out on Gemli for a short while.

Meanwhile, today I surely must have received at least 25 comment spams here on this blog. My blog is moderated but I still have to delete their posts. These spammers find this blog by scouring Google for popular articles, and all my most popular articles are getting bombarded with comment spam. So, tonight I’ve decided to rotate my attention and focus on OpenCAPTCHA.org again.

The OpenCAPTCHA.org spec has three key components: the Challenge-Answer Provider service, which produces a question or image along with the answer and hands it off to the services that request it, the optional Challenge service, which emits the challenge portion provided by the Challenge-Answer Provider service and then validates the user-submitted answer (immediately destroying all evidence upon first request for validation), and then finally, of course, the web site that displays the CAPTCHA challenge to the user and collects the user’s answer for validation.

I had already posted working samples [1, 2] of JSON/JSONP emitting ASP.NET MVC Controller classes for the services involved in my OpenCAPTCHA.org spec, but nothing much to show for it. That is, nothing that I or anyone else can consume right now without doing more implementation work. So I decided that the next best thing to do is to actually build three projects from scratch in a complete solution that demonstrates it all and that I can deploy as a working, running CAPTCHA service that implements the spec at a basic level:

http://opencaptcha.org/sample/0.1/website/

Source code: http://www.opencaptcha.org/Wiki/GetFile.aspx?File=OpenCAPTCHA.org+v0.1+ASP.NET+MVC+Sample.zip

The end result seems to work perfectly.

sample captcha input

image

image

image

As of this blog entry I haven’t yet integrated this or any other implementation to this blog yet, but only because I’m posting this blog entry out-of-sequence. :)

It’s implemented on my blog now.

Why am I doing this?

I’m sure somebody’s asking that about me and this initiative by now. CAPTCHA’s a simple thing, right?

In my view, typical home-grown CAPTCHA’s simplicity ends where spammers’ strong will begins. My goal is to make CAPTCHA a living, breathing organism rather than a piece of software that just sits there and gets stale while spammers keep pounding on the same CAPTCHA images and other challenges/questions and discover how to answer them robotically. In my mind, CAPTCHA should take advantage of the dynamic nature of the Internet itself and continually adjust to changing trends so that a spammer’s hack is the piece that gets stale rather than the CAPTCHA. The way to do this is to make CAPTCHA consist of web services that many people can produce and that consuming web sites can rotate amongst a growing list of CAPTCHA providers.

Ultimately I want to get samples going for other languages such as PHP as well. This is NOT a Microsoft tools oriented project. If anyone wants to take on the task of building a v0.1 spec implementation prototype for their favorite programming stack, please be my guest! Just read the spec and implement, and show me what you’ve got.

Be the first to rate this post

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

Tags:

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.

 


 

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

<<  May 2018  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar