On the Hunt for a New Programming Language

When it comes to programming on the modern-day GUI (post-DOS) platform, the vast majority of my coding has been, in order of experience, using T-SQL, VBScript in ASP, and about equal parts classic VB (v3.0 to v6.0) and VB.NET. As you can see from my order of experience, I’m really a database guy, and since the beginning of the web I’ve always viewed the web as somewhat of a database publishing environment (anyone remember the DOS product dbPublisher Pro from Digital Composition Systems?) What’s more the web allows a potentially infinite number of people to use a developer’s database publishing apps without any extra effort to distribute them. Finally, the web provides ability to capture evidence the apps were run, how often, and by how many people. Is it any wonder I have more of inclination to develop for the web as opposed to desktop applications? Back during the period from 1994 to 2006 when I ran VBxtras/Xtras.Net where we where a reseller of ActiveX controls and then later .NET components, I never really thought about the cost of add-on components. Almost anything I wanted to play with I can get an NFR (not-for-resale) copy just by sending an email or picking up the phone. Although I still have many of those relationships from a decade+  in the business, I hesitate to ask for NFRs these days except from my really close friends simply because this business I’m in today has nothing to do with benefiting those people. So numerous facts have me giving up on my prior five year assumption that I would someday learn VB.NET at an advanced level and have me instead actively considering alternatives:

  1. As I just stated, the fact I now have to pay for third party components and tools means I’m paying more attention to cost of acquisition,
  2. My recent favorable impressions of open-source developer tools and components, on par with some of the best tools ever sold by Xtras.Net,
  3. My increasing frustration with the Microsoft developer division’s process and release cycle,
  4. All best web applications seem to target L.A.M.P. such as Mediawiki, WordPress, vBulletin, Subversion, Trac,  Ruby On Rails, Django, etc. and all but one of them are free to use
  5. Completely preconfigured stacks (including O/S) that are becoming available for download as a VMware appliance,
  6. Recognizing that Ubuntu’s has an approach strategic enough to result in Microsoft being profiled in a revised edition of Clayton Christensen’s Innovator’s Dilemma as yet another example of why great companies loose their leadership position,
  7. And lastly my rising disgust for ASP.NET (and I promise I will blog about those specific soon…)

By the way, even though I dislike ASP.NET, I do still really like the .NET Framework and programming model. Oh and a note about the first point; whereas there is good open-source tools available for .NET, the operative word is "tools" not components. When you compare what’s available to freely use for .NET compared to what’s available for any of the "P"s (Perl, Python, and PHP), .NET just can’t compare, at least not in depth or breadth. Of course being commercial products the .NET third party components are more polished and of course have commercial support available. However, unless you are big company that needs to CYA and have a throat to choke, those are often dubious benefits especially when you consider the benefits of open-source (i.e. source code, and the ability to fix something and contribute it back so you’ll know it stays fixed!) Anyway, I could write for hours on the pros and cons for open source vs. commercial developer components and tools but that’s not the subject of this post. The subject is about which language I will focus the majority of my future attentions on learning and using, and I’d love to get your input before I decide. Here are the current contenders:

PHP
All the major web apps I mentioned above seem to be built using PHP and I’m currently running many of those apps, PHP is pretty similar to the ASP that I know so well, it’s web-specific, there is a huge support community, it runs on both Windows and Linux, and every Linux web host known to man seems to offer it preinstalled. However, there seems to be lots more crap PHP code examples littering websites than good PHP code examples making it harder to learn so it might be hard to seperate the wheat from the chafe, it is not easy to configure on Windows Servers (especially at a shared web host), and no one individual framework seems to have gotten the lion’s share of the market attention so picking one would be a crap shoot. Oh, and it uses those infernal semi-colons just like C#.
Ruby on Rails
Ruby and it’s framework Rails have gotten tons of attention and it seems all the cool kids are doing it, especially lots of the Web 2.0 startups, it is very database-centric, has very elegant URL mapping functionality, and it seems you can get web apps built really fast using it. And Ruby.NET is also on the horizon meaning I might be able keep my toe in .NET. However, the community comes across as just a little bit too religious and I’m generally alergic to that, AFAIK it doesn’t run on Windows, or at least not for shared hosting. Plus I’ve had people I respect tell me that Ruby doesn’t have nearly as many users as the "P" languages, that Rails it not nearly as mature as its purported to be, and that Rails makes simple thing simple but complex things extremely difficult. And the number of available web hosts that offer it is quite limited.
Python
Unlike PHP, it seems Python is well suited for both web and desktop apps, which might come in handy from time to time, and a shipping IronPython means that I definitely can keep my toe in .NET. The Django framework seems to be a little more mature and have a little less religion than RoR, and Django also has nice URL mapping functionality, albeit slightly less elegant than RoR. And it seems to run equally well on Linux and Windows. However, Django seems more document publishing-centric and less database-centric, there are very few web hosts that support DJango, and I’ve heard it is a real bitch to get working on a web host.
VB.NET+Castle/MonoRail(+Mono)
But then again, maybe I will stick with VB.NET. The Castle/Monorail project is supposed to be a lot like RoR, and I’d even have the option to use Mono on Linux. However, the third party tools are definitely wanting, most web hosts haven’t a clue what Mono is, and they coded Castle/MonRail in C#, so I’d always be dealing with semi-colons…
ASP+IIS+JScript
I could stick with ASP, which I still like, and learn JScript to replace VBScript, the latter of which just has too many limitations when compared with the other current options. This clearly also runs on Windows and any Windows web host will support it, and I already know Windows backwards and forwards. On the other hand, I’ll need to use ISAPI Rewrite for clean URLs, JScript on ASP it has no future and few code examples on the web, and what third party components and tools (to speak of…)?!?
ASP+IIS+VB.NET
I could also use develop VB.NET objects and call them from ASP; that’s what we last did at Xtras.Net (and I think that is what they are still doing, last I checked…) Of course, calling .NET objects as ActiveX controls just doesn’t feel right, and again there’s that third party component and tools problem…
PowerShell+IIS+???:
Of all the teams working on tools for developers over at Microsoft, the PowerShell team run by Jeffrey Snover is the only one that gets me excited anymore. And in an email from him (or was it a comment on my blog, I don’t remember exactly) he said that PowerShell can do web, and will be able to do it more easily in the future. On the other hand, it’s not here today, and what if webified PowerShell is just another way to do rubbish ASP.NET instead of what it should be, a url-based object-selector-and-invoker like Django or Rudy on Rails.  And what’s the chance it will ever run on Mono…?
Other:
Is there anything else do consider…?

At this point I should probably explain what I’m not considering, and why:

Java on Anything:
Although I was really impressed at a Sun Tech Days recently here in Atlanta , even the Sun people were all over dynamic languages with praise, like Jython and JRuby. And though I was impressed with NetBeans 5.5, all the other "enterprise" baggage like J2EE and Servlets and JSP Custom Tags gives me the feeling I’d be jumping out of the frying pan and into the fire.  Oh, and Java uses those infernal semi-colons too.
C# on Anything:
One word: semi-colons!  Sorry but if I’m going to go .NET, it’s going to be VB.NET (or IronPython). VB.NET is so much more natural to me than C#, and there are things you just can’t do in C# that you can do in VB.NET related to using "implements" on a method in an inherited class (I ran into that limitation of C# compared to VB.NET on a project several years ago where I was managing a pair of interns coding in C# and they hit a wall because of that limitation. I can dig it up if anyone cares, or better yet, can someone who knows the specifics explain it in comments?)
Perl on Apache:
Although my partner on Toolicious Ben Coffey who is a devoted disciple of Perl will cringe to hear this (yet again), I can’t quite get my head around Perl, and they tide, at least today, is away from Perl. Of course Ben claims that will all change with Perl 5.0, but to me that remains to be seen and I’d rather go with a bird in the hand (i.e. one with a lot more active current user base) than a bird in the bush.  But who knows, they say you should learn a new language every year; at any rate if he’s right maybe I’ll try and pick up Perl 5.0 in around 2012. :)

So there you have it: my potential choices and non-choices. Any thoughts I which I should choose?  Any and all input will be appreciated and considered seriously.

Another Missed Ball: No .NET Application Container

David Laribee just referenced my IIS 7.0: Too Little, Too Late? post and he made an interesting comment that I hadn’t previously pondered but that is very relevent:

It’s a major bummer that there’s no such thing as a virtualized “.NET Application Container” for the new scalable grid computing and provisioning services coming out (Amazon EC2, MediaTemple’s Grid-Server). Essentially .NET programmers can’t easily take advantage of new long tail models with easily-sourced infrastructure services. Going out on a limb, I’d suggest these limitations contribute to a lot of top/entrepreneurial developer talent moving over to various flavors of the LAMP stack, Ruby, etc.

I think this is yet another area where Microsoft is missing the ball. And it is related to the fact that people can’t build and distribute Windows-based stacks as appliances (i.e. because of licensing issues) in the same way people can build and distribute them for Linux. Mark my words, these two aspects are a significant achillie’s heel for Microsoft and will have significant import in the further decline of the Windows Server and .NET platform.

With Parallels, I might finally consider getting a Mac

I just read about the new VM software called Parallels that runs on an Intel Mac.  Heck, I might finally consider getting an Apple Macintosh!

Parallels runs with Mac OS X on Intel 10.4.5 as primary OS (as well as lots of other OSes), and the Guest OSes that Parallels Supports include all the following:

Windows Windows 2003 Standard Edition SP0, SP1
Windows Windows 2003 Enterprise Edition SP0, SP1
Windows Windows 2003 Web Edition SP0, SP1
Windows Windows XP Professional SP0, SP1, SP2
Windows Windows XP Home SP0, SP1, SP2
Windows Windows 2000 Professional Edition SP4
Windows Windows 2000 Server SP4
Windows Windows 2000 Advanced Sever SP4
Windows Windows NT Workstation 4.0 SP6
Windows Windows NT Server 4.0 SP6
Windows Windows ME
Windows Windows 98
Windows Windows 95
Windows Windows 3.11
Windows Windows 3.1
Fedora Fedora Core Linux 3, 4
RedHat Red Hat Enterprise Linux WS3, WS4
RedHat Red Hat Enterprise Linux AS4
RedHat Red Hat Enterprise Linux ES3, ES4
RedHat Redhat Linux 7.3, 8, 9
Debian Debian Linux 3.1
SuSE SUSE Linux 9.0, 9.1, 9.2, 9.3
Mandriva Mandriva Linux 9.2, 10, 10.1
FreeBSD FreeBSD 4.1, 4.3, 4.5, 5.4
os2 OS/2 warp 3, 4, 4.5
eComStation eComStation 1.1, 1.2
Sun Solaris Sun Solaris 9, 10
MS-DOS MS-DOS 6.22

This virtualization stuff is getting really interesting…

The Virtualization Wars Begin: Microsoft Virtual Server is Free!

It’s nice to be correct. Or at least to suggest something that Microsoft ends up doing.  :) 

A few months back I suggested Microsoft give away Virtual Server, and today they are announcing just that!

Good deal.  Let the virtualization wars begin! :)

P.S. Now if Microsoft would just support the VMware hard disk format, and vice versa, customers would truly be the winners!

Windows 2003 Server Web Edition doesn’t support SQL Server?!?

I am setting up a new computer running VMware GSX Server (because the new free VMware Server is still in beta) for which I plan to use one of the virtual machines to run a few websites including a DotNetNuke website that stores its content in SQL Server. So I decided to install Windows 2003 Server Web Edition and then ran into a problem when trying to install SQL Server 2000 (I’m using 2000 for compatibility with some older sites I am planning to move to this VM; I’ll installed SQL Server 2005 for new sites in a different VM.) 

When I ran the SQL2K install app (written in Demoshield) and I clicked on "Install Database", nothing happened.  Then when I tried to run the install app directly [setupsql.exe], I got the following error message:

Windows cannot open this program since it has been disabled.

Of course I immediately assumed it was a VMware problems (not unreasonable since I’ve had one problem after another trying to get VMware to work, mostly because of incompatible hardware, but still), but then their tech support provided me the answer on our forum.  Microsoft decided not to allow SQL Server 2000 to run on Windows 2003 Server Web Edition?!?!?!   Worse, their error message was so cryptic I spent hours trying to track down the problem!!!!!!! (Googling didn’t help.)

HELLO MICROSOFT, don’t you understand that most serious websites use a database?!?!?  I’d say this is especially true for smaller sites that can’t afford seperate servers.  And why must you persist in causing developers and IT people to have to track down the meaning of cryptic errors?!?!?!

I just love it when the marketing department of a company cripples a product for it’s intended use in order to ensure they "maximize profit," and when the implementation people don’t provide reasonable error messages for problem areas.  Sheesh!  The former makes me want to consider using LAMP.

An Excellent Strategy: VMware Server

As many of you know, VMware has released VMware Server for FREE!  I think it is an excellent strategy for VMware. VMware Workstation is already a favorite of most leading edge developers, and this move has a good chance of cementing VMware Server into developer’s psyche as well!  Many of my loyal blog readers know that, even though I founded and run1 a .NET component and tools reseller at Xtras.Net, I am a huge proponent of infrastructure and middleware software needing to be open source or at least free. 

I commend VMware for embracing the competitive challenge of Microsoft and open-source moving into their backyard and offering the GSX Server for free. This will almost certainly help VMware establish their virtual images as the defacto standard for VMs as Adobe did their PDFs for digitized documents.  With VMware Server becoming free, software vendors will now be able to deliver complete server-based solutions as virtual images that will require almost not configuration to bring online. Hosting companies can start offering Virtual Machine hosting where you upload your VMs (but this will ideally need some excellent differencing software to cut down on huge upload times.)  Installation vendors can start adding VM deployment to their feature list.  And I’m sure there are hundreds of other things this will enable that I haven’t even concieved of!

Of course this will put huge competitve pressure on Microsoft with it’s Virtual Server, and has a chance of rendering the open source Xen project still-borne.  I’m not sure how I would suggest Xen counter this move, but if I were Microsoft I would be releasing so fast as to make the industry pundits head’s spin a Windows 2003 Server Option Pack for free that included Microsoft Virtual Server.  I’d even go so far as to release a free Windows XP Option Pack that included Virtual PC too.  Minimally they need to roll it into the next major version of Windows Server. Given VMware’s stronger market position in this type of software, the fact they VMware offered theirs for free first, and the fact EMC is no startup and can hold it’s own with Microsoft, I doubt Microsoft would run afoul of anti-trust regulations for offering their Virtual Server/Virtual PC duo for free.  If Microsoft does do this it will create a three-way competition for freely deployable VM server software and the likely competition should benefit everyone.

Now if VMware would just create some rational pricing options for VMware ESX Server instead of charging a minimum suggested retail price of $3750 for a 2CPU system!!!  I’m thinking they will do much better if they allow their pricing to scale down as low as $199 for a version that supports 1CPU and 2Gb RAM. As is, a company will have to be able to gain some serious benefit from VM before they can even consider upgrading to ESX Server.  But with the former GSX Server going free, maybe it’s in the cards.

P.S. It would also be great to see them create a lesser expensive VMware Workstation to encourage more people to try it out too.

1 UPDATE: As of May 18th, 2006, I am no longer run Xtras.Net nor did I retain any association with Xtras.Net.
 

Next Generation Demo Software with VMware Player

I just spotted the new free VMware Player.  This is totally cool. 

Free VMWare Player

I can envision companies using VMWare Player to demo complete environments, like an ASP.NET & SQL Server Express application; just configure the virtual machine to have everything needed! This basically eliminates most potential configuration problems that could cause a vendor to loose a sale when the software is what the prospect needs but getting it to work is too difficult or time-consuming for the prospect.  This is especially important for lower priced software.

ISVs could even start shiping preconfigured software using VMWare Player.

This is definitely something to watch.

I wonder when/if Microsoft will do something like this with their Virtual PC/Server technology?