TCP proxying on Linux

by Jon Davis 28. April 2011 10:59

Several months ago I cobbled together a port-modified TCP proxy that runs on the .NET CLR. My intention was to make this usable both in Windows and on *nix systems with Mono. I haven't used it much, though, certainly not in commercial production apps.

However, it appears that *nix already has a couple solutions already in place:



There's also SSH tunneling, which is interesting. 

I'm just short of content, however. As a future change I wanted, and still want, to detect HTTP traffic and to hijack the HTTP headers with an insertion of a custom HTTP header indicating the source IP address. I had done this previously using Apache's proxy but I was hoping to make HTTP detected rather than assumed. I'll see if I ever get around to it.

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.



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.


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 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.


15 Reasons To Stay The Heck Away From Linux

by Jon Davis 1. February 2009 00:59

Linux folks have their own reasons why people should use Linux. I get sick of it sometimes. I’ve tinkered with many Linux distros, and no, not as a novice user. Combined, I’ve probably spent a couple years of nonstop time on Linux. I solved many problems like setting up services and writing apps. And so far I’ve reached my own conclusions.

  1. Linux is a religious cult. You remember the wacko in Waco? With the visions of heaven and the gun-wielding and unrealistic plans of taking over the world and all? ... People who swear by Linux for the most part only hate Windows for the sake of hating Microsoft; it has little to nothing to do with the overall quality of the Windows product. They just feel that they have the moral prerogative to spread hate of Microsoft throughout the world.
  2. The only people who swear by Linux are either broke (or just cheap), grew up in a religious cult, or tasted a really old and archaic version of Mac and Windows (like Mac OS 6 and NT 4.0), ran away, and never looked back. Typically all of the above.
  3. There really isn’t much available in Linux that you don’t get cross-compiled in either the latest version of Windows or the latest version of Mac OS X. No, not Apache, not Perl, not Python, not Java, not Eclipse, not Mono, not Blender 3D, not OpenOffice, not Pidgin, not BIND, not OpenSSH, not most business apps, not many network apps, not many libs, not most desktop apps. Whatever really is exclusive, between Windows SUA and Cygwin, almost everything that runs in Linux is available in Windows—with a few minor multimedia exceptions of which there are better-quality Windows or OS X commercial alternatives anyway. And because Mac OS X is built on other flavors of UNIX, the same is true of it as well.
  4. Windows and, to an extent, Mac OS, takes the audacious effort to keep user-exposed details sane and organized, with the regretful exception of Microsoft’s abuse of the Windows registry. The archaic, confusing organization of file structure (/var, /usr, etc) in Linux, and the lack of consistency with configurations on par with Windows’ registry abuse, reflect the decades-old history of *nix. None of that is even necessary to just run and/or write and debug your software unless you do choose *nix; code is code, and with proper software abstractions and clean organization it shouldn’t be necessary to retain filthy rotten legacy organization and patterns.
  5. With Linux, there is no single entity who is accountable to you as a user for the successful evolution of major design characteristics of the operating system, of OS APIs, or of the user-interfacing shells. No one Linux distro can take on significant scope, and even then unless you are a paying customer just like Microsoft’s paying customers the maintainers of a distro have no significant incentive to care.
  6. Linux is not an original OSS effort; it’s a freeware x86 port from a third party commercial OS that’s been “grown” and that has evolved with bubblegum and tape (as in like Windows 9x).
  7. Linux hasn’t ever enjoyed a serious architectural redesign and rework like the Mac has enjoyed once or twice (OS 1-8 to OS 9 to particularly OS X) and that Microsoft has enjoyed three times (DOS to Windows 1-3.x to Windows 9x to particularly Windows NT/2000/XP/Vista/7 .. and Singularity is a sign of what’s coming down the road).
  8. The claims that the latest versions of Linux are more stable than the latest versions of Windows or of OSX are just plain ignorant. Windows has come a LONG way, and if you’re going to go *nix, OS X is probably a safer bet. For that matter, Windows SUA (Subsystem for UNIX Application) is probably a fairly safe bet if you’re going UNIX for your apps as well.
  9. You don’t get Direct3D on Linux. (OpenGL, which is more broadly available but less powerful than Direct3D, is available on Windows, so Linux doesn’t have an exclusive counter-argument. Incidentally, because of hardware driver limitations, OpenGL on Linux is far less available than either OpenGL or Direct3D on Windows or on Mac OS.)
  10. You don’t get PowerShell on Linux. (Bash, Python, and the like, which are more broadly available but less powerful than PowerShell, are available on Windows, so Linux doesn’t have an exclusive counter-argument.)
  11. You don’t get IIS 7 on Linux. (Apache, which is more broadly available but less powerful than IIS 7, is available on Windows, so Linux doesn’t have an exclusive counter-argument.)
  12. Despite Mono, you don’t get full-blown .NET nor Visual Studio (the most popular IDE on the planet) on Linux. No WCF, no WPF, no LINQ. (Python, Java, GTK#, Qt, wxWidgets, et al, which are more broadly available but less powerful than the Windows-based offerings, are available on Windows, so Linux doesn’t have an exclusive counter-argument.)
  13. Comparatively speaking, unproductivity is almost guaranteed. Unless you like to judge yourself on the basis of geeky so-called “real programming” (also aka “bit-twiddling”, and likewise you find scientific apps intellectually stimulating), you won’t have nearly as much fun just getting stuff done and with high quality results as you get with the most versatile operating system and developer toolset available to computing: modern Visual Studio on modern Windows.
  14. While Linux has evolved over time, it has not evolved at the same rate as Mac OS and Windows as of late. Evolution of solutions built on Linux do little to enhance or place demands upon Linux growth; these changes of growth and improvements are mostly self-serving, or improve upon application components only, not Linux itself, except only adding to the add-on repo dogpiles, whereas Apple and Microsoft both strive hard to significantly re-tailor their operating systems to meet the demands of both the applications developer and the end-user via evolutions of the operating system, particularly in improvements to its core APIs, its well-integrated services, and its shells.
  15. Except to be cheap or to roll your own flavor (custom toppings), there’s really not much point to go Linux unless your systems are already built around it. Linux is great for nearly-free personal server hosting and for cheap and simple scaling out. But it’s quite a small wonder that, despite Red Hat, Ubuntu, SuSe, Mandriva, and other hopefuls, Linux has hardly made a splash in desktop space. If you’re looking for a solid server, while yes there is Cent OS, there are other options like OpenSolaris and Windows Server 2008, the latter of which should be taken very seriously by anyone who is serious about architecture flexibility and stability.



VPSLink: Finally, VPS Priced For 2009

by Jon Davis 30. December 2008 15:00

A little over a year ago I spent weeks trying to find the most affordable way to host (now defunct) among a few other things in a reliable manner. I didn't want my site shared with a bunch of other sites, and I certainly did not want plain-vanilla Apache/mySQL/PHP. I wanted my very own instance of Linux on which I could feel free to do anything--rig Apache to my liking, host my e-mail, install an XMPP server, you name it, anything. I also ended up hosting this my home PC with the Linux instance acting as a reverse proxy so as to bypass my cable modem provider's blockage of port 80.

The best deal I could find was ServerPronto. These guys seemed to have adequate bandwidth and gave me solid specs for the dollar, for what they said was a dedicated physical server. 

But even that was priced out of my range, because up to this point I have not been trying to make a profit / living off of my Linux instance, although at this point I think I might as well. I was paying out about $180 per 3 months, and that gets expensive especially in this economy.

I also found that while BlueHost has proven adequate for my own e-mail, and I'm REALLY not happy with the ASP.NET web host offerings out there since none of them support IIS 7 module installations, I could probably be just fine hosting everything on my BlueHost account and on my home PC through my cable modem, if only I could retain that reverse proxy out there, somewhere, without spending $180 every three months.

Last night I went shopping around again to see if there were any other solutions for me, when, lo and behold, I came across a VPS (Virtual Private Server -- Xen virtual machine hosting, basically) host that came at the same price as a typical shared web host: VPSLink. For less than the price I was paying every three months before, now I can get two years of my own Linux instance. Indeed, if you're reading this right now (and of course you are, as am I posting it), that's my new VPSLink account working for me.

Now, granted, I lose out on what I originally sought after: very high availability and scalability. I am back on a shared host, after all, and I have little doubt it's gonna get crowded over here. But, as I said, is now defunct, and really this only serves for reverse proxying to my cable modem and for lightweight LAMP hosting; if I ever really need high availability I'll also need a good reason, and if it's for profit then I'll be able to afford something more. But I get everything else here: my own CentOS instance on the 'net really, really cheap.


UPDATE: Of course, upgrades to Apache when migrating from FC6 to CentOS 5.2 would force me to add these directives to my httpd.conf:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1 

.. or else I get proxy errors:

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET.

Still not sure if I have rid myself of them entirely yet...

Currently rated 3.0 by 1 people

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

Tags: ,

Linux | Servers and Services

openSUSE 11: Sorry, I Gave You A Fair Chance

by Jon Davis 24. June 2008 08:08

I was excited that openSUSE 11 had just been released. I was looking forward to the Next New LinuxTM to come out and convince me that the best non-Windows alternative besides a Mac was usable and exciting. 

For the first time in years, I deployed Linux (openSUSE 11) to physical hardware (not a VM), meaning a quad-core processor, 4GB RAM, a GeForce 8800 GT, and a WD Raptor drive, and gave it a completely fair shot.

The first installation attempt was actually in a VM at the office, and it failed--it got to 90% installed then froze up on an FTP download. A 2nd attempt with out networked repos had it still freeze up at some point, now the VM just boots to a blank black screen.

But now at home installing on physical hardware, it booted to my environment with a striping RAID array configured it warned me that it couldn't "partition the drive using this tool". Oh. Okay. I pushed forward anyway, spending upwards of 15 minutes selecting most of the software package options without selecting conflicting options, and then I went to go forward and install and, sure enough, it failed to partition the drives, and sent me straight to a non-GUI installer view where I pretty much had to just restart the computer, enter the BIOS, break off my two Raptors from RAID, and give it another shot.

An hour or so later, I was looking at my fresh new KDE 4 desktop and thinking, bleah. Okay. So there's not really anything to see here, nothing I haven't seen over the last many years. Sound is gone, I enabled the sound but my 48kHz native sound card could only playback jittery noise that had me laughing and moaning on every reboot. I tried the GNOME desktop as well. Yeehaw *yawn*.

Having two monitors, one monitor was not displaying. I went to nVidia's web site, installed the latest display drivers (executable, but still opening up a terminal and chmod +x 'ing, how retarded!), rebooted, still didn't see two monitors lit, tried to enable the 2nd monitor from the nVidia control panel, couldn't save the xorg.conf (or whatever) file for no obvious reason, rebooted, tried again, still couldn't write the xorg.conf (whatever) file, logged in as root, tried again, worked. *sigh* OK now both the Mac and Windows' UAC have spoiled me on this, why was I just not prompted to enter a password?

Without even considering using MonoDevelop, re-exploring Eclipse, testing Apache and PHP5, dinking around with Ruby, trying out OpenOffice, or tinkering with any of the games, I threw my hands up and said, "I've seen all this crap. It's all crap."

Linux has still not managed to catch up with Windows 95, and instead of fixing these usability issues they just keep slapping on new software and eye candy like Compiz-Fusion effects, and I've had it.

Fortunately I had a full backup of Windows Vista, which I was 95% certain I was going to restore within a day, and, sure enough, I did.

Currently rated 2.0 by 4 people

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

Tags: ,

Computers and Internet | Linux

Embeddable Cross-Platform Silverlight

by Jon Davis 15. May 2008 00:02

I've been wanting to start discovering cross-platform development with Mono, MonoDevelop, Gecko#, C++, XPCOM, XUL, XULRunner, WebKit, et al. I have a couple vaporware apps in mind and I have just purchased a Mac Mini and an iPhone mainly for this purpose. And meanwhile since Silverlight happens to be cross-platform as well, I was curious about its licensing. Theoretically, one can accomplish an Adobe AIR-like cross-platform application implementation using Silverlight and XUL or WebKit. Problem is, I had heard that Silverlight was explicitly written to disallow it from being used on anything but a standard HTML web browser (Safari, Firefox, Internet Explorer).

After spending an hour or so poking at the n00b tutorials on XUL and XPCOM, I went to the Silverlight site and spent several minutes looking everywhere for the darn EULA. (Sadly, after finding it, once I hopped on this blog editor I lost it and it took another 15 minutes to find it again.) and

I didn't see any such limitation there, nothing about "thou shalt only use Silverlight in a 'standard web browser', namely Internet Explorer, Firefox, or Safari".  There are some limitations, of course, such as perhaps redistribution, which theoretically if the app is a XUL app can be deal with using HTML+JS+XUL+XPI, getting Silverlight into thinking it's downloading and installing itself through and onto Firefox. (All theory, of course.)

On a side topic, if anyone out there is reading this, can someone tell me why there are almost no open discussions correlating XUL and XAML/WPF? They seem to attempt to do the same basic function--create apps using XML and components--albeit WPF is far more powerful and versatile in itself as a tool in its niche, whereas XUL is Javascript/HTML friendly and is cross-platform.

UPDATE: After discussing with a buddy who's done cross-platform .NET programming with Mono, apparently Glade + GTK# has an XML markup language that also meets the same objective.

On second thought, maybe I just wasn't searching hard enough. I see a lot of hits here:

Currently rated 2.0 by 1 people

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

Tags: , , , , ,

Pet Projects | Computers and Internet | Software Development | Linux | Cool Tools | Web Development

So How Can You Graphically Install Ubuntu 7.10 On Generic VGA, Anyway??

by Jon Davis 30. March 2008 21:13

I noticed in my Start menu that I had installed VirtualBox a few weeks ago. In a bored moment, I fired it up for the first time and started up the Installer/LiveCD for Ubuntu 7.10.

When I went to install Ubuntu, I got stuck right from the get-go. I couldn't click on 'Next'! The installer screen was way too large, and the high resolution VGA drivers weren't installed yet (as Ubuntu wasn't installed yet) so I couldn't change the resolution.

Classic moment of pure ludicrous idiocy here. Those Linux folks are always so smug, with such attitude, they deserve shame when they screw up this bad. Yay for corporations with coordinated QA teams!!

And yes, I did try using tab + spacebar. Got me to the next screen (time zone map), but tab doesn't work to change button focus on that screen; once the drop-down list has focus it won't let go of it with tab. 

Geek buddy says, "That's normal. Your environment can't support graphical mode installation. Graphical mode installation is for systems that can support it. Yours can't, because your VM video card isn't on the built-in drivers list."

That's crap. Hardware vendors, not OS distros, provide hardware drivers. Generic VGA @ 800x600 is a well-established minimum common standard. You install the hi-res video driver post-install; the fact that OS distros often have the driver bundled is just a bonus. Besides, I am in graphical mode!! If it's not supported because of resolution, it should say, "Sorry, you must reboot and enter Text mode to install, because in graphical mode we want to be promiscuous with your screen real estate when installing, and we don't know how to do that with your hardware." But that would still suck. Best to just scale down these rediculous installation screens! Or, at *least* set a maximum window height to the desktop and insert ugly window scrollbars if the height has max'd out.

Sure, perhaps I can track down valid hardware drivers (in this case VirtualBox drivers) and activate them somehow at runtime, just to get to the Next button. That's not the point. Sure, I can choose install in text mode. That's not the point, either. The point is that this is lunacy. If they just scaled down these windows, the user experience would have been acceptable. It's like these Linux people DEMAND and ENFORCE that you geek out just to get yourself initiated. Yet they keep bragging about how user-friendly Ubuntu and other distros like it are.

Currently rated 1.7 by 11 people

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

Tags: , , , ,

Operating Systems | Linux

Iconize with CacheFile

by Jon Davis 4. December 2007 02:11

I still owe myself that virtual tarball / .mrr app.

Meanwhile, I've been busy with in other ways.

  • I set up a new dedicated machine to host the site without worrying about others' sites taking the server down. It runs on Fedora / Apache.
  • On the new dedicated machine, I finally enabled gzip and caching.
  • I've been regularly adding popular script libraries as I find and qualify them.
  • The Graphics section now has two new additions:
    • famfamfam, and
    • Iconify

The latter addition, Iconify, is worth noting. If you just drop this tag on your page:

<link rel="stylesheet" type="text/css" href="" />

.. or ..

<link rel="stylesheet" type="text/css" href="" />

.. you'll instantly get icons to show up on your hyperlinks. No image downloads necessary!

Update: Of course, this doesn't work across different domains when using Internet Explorer. *sigh* 

kick it on

Yahoo!'s Dirty Little "UNIX Utilities for Windows" Secret

by Jon Davis 30. October 2007 12:22

Over at, at the bottom of the page, Yahoo! has an interesting download called the UNIX Utilities for Windows. This is offered as a "workaround" for "legacy support" for building Konfabulator widgets that were originally compiled for the UNIX environment.

However, I've found that the list of executables dropped into C:\Program Files (x86)\Yahoo!\Widgets\UnixUtils\usr\local\wbin is rather extensive. There's a LOT of UNIX-like commands in there! I dropped that path into my Windows environment path and I am rather pleased by all that's available now, things like "grep". I had that in Cygwin but now I can do this within the cmd.exe environment.

I'm reinstalling MinGW, not sure that MinGW has as many handy commands in its precompiled bin base.

Is anyone QA'ing Samba ??

by Jon Davis 2. September 2007 19:23

We had an old ("old" meaning installed a year ago) installation of Fedora v3 running a CMS that was publishing data to Windows Server 2003 over Samba. Occasionally, at the same time in the middle of the night that the publishing occurred, Windows Automatic Updates would download some patch for Windows and reboot the server. Obviously that was a mistake on our part to let these two actions coincide. But the bigger problem was that the Samba link didn't just drop when Windows rebooted. Instead, it locked up. So by the afternoon the next day, people are pulling their hair out trying to figure out what the @#% is wrong with this stupid CMS server, and why it just starts working again when we reboot Linux. We finally narrowed it down to a Windows server reboot--a Samba failure to drop the link.

What should happen is a timeout should occur, an error should be raised to the calling application (the CMS service), the service should halt, and then when the Windows server comes back up and the CMS service on Linux reattempts to access the path, Samba should reattempt to build the link and either succeed or fail.

That was Fedora v3. Now were' using RHEL 5, and meanwhile I'm using Ubuntu 7.04 at home on my laptop. I'm expecting a much smoother Samba experience now. But unfortunately, we cannot even seem to get our Samba links to even work, much less behave correctly (i.e. drop) when the Windows server goes down. Now I'm having all kinds of different issues.

The first issue is on my laptop at home, when I use the Network browser in Nautilus to browse my shared folders on my home machines, everything goes erratic. It sees everything really fast one minute, then it locks up for five minutes the next. I click on a folder, it becomes a file. I hit refresh, it can't "see" anything. I go up the tree a couple branches, it finally starts seeing things. I go back into the branch I was in, and it displays it pretty quickly. I copy a folder to the clipboard, and paste to /home/jon, and nothing happens.

Now it could very well be a Nautilus issue, but then here's the other problem ...

At the office, we now have RHEL 5, we have been trying to migrate off the old Fedora 3 system and onto the new system. And now this happens:

Essentially, once the Linux user writes to the Samba share, the share becomes "owned" by root and the user can't do diddly squat. This essentially breaks our publishing plans, rendering the Samba link useless.

Fortunately, Microsoft was kind enough to implement NFS support in Windows Server 2003 R2, and R2 is the build we just erected for the new environment. I'll try that next. But it still makes me wonder, what on earth happened to Samba?? It's only been around for, like, a decade!

Be the first to rate this post

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

Tags: , , ,

Open Source | Computers and Internet | Operating Systems | Linux | Microsoft Windows


Powered by BlogEngine.NET
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 have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 

Tag cloud


<<  May 2021  >>

View posts in large calendar