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.

Microformats: hCard

One of the things I learned more about at The Future of Web Apps was Microformats.  The talk on Microformats was given by Tantek Çelik who is CTO of Technorati and it was easily one of the more interesting concepts covered at the conference (to me, at least.) I probably appreciated it so much because Microformats potentially solve so many different problems that I have been pondering of late.

I had previously heard about , but I didn’t quite grok how cool they were until Tantek’s presentation.

Anyway below is my hCard, assuming I did it correctly. If anyone knows how to tell, I appreciate it you could let me know if it is correct and if not, why not (Note: I used hCard creator but I added a URL to "org" and I also put "(w)" and "(c)" after my phone numbers and I don’t know if that is kosher.)

 


photo

Atlanta, Georgia  USA

404-474-8948 (w)
404-276-1276 (c)

This created with the hCard creator.


Carson Workshop’s “Future of Web Apps” Conference was Incredible!

Place of the Fine Arts; inside and out The past two days I attended Carson Workshop’s "The Future of Web Apps" presented at The Palace of Fine Arts in San Francisco and I must say it was one of the best conferences I’ve been to in years!  Every one of the speakers was excellent each providing invaluable insight, and the energy level was just electric! 

I really liked the venure too; an ~800 seat auditorium where the entire single-track conference was held. It had so much better feel than getting stuffed into lots of little breakout rooms at a hotel or a convention center.

Not everything was perfect, i.e. not enough networking opportunities, flaky WiFi, and no exhibit hall, but at $2951 for two days the event was otherwise so incredible that I feel really bad2 even mentioning any negatives! OTOH, Ryan Carson was made fully aware of those problems by people other than me and I get the sense that next time it will be corrected.

Lastly, Ryan announced plans to publish online the audio ala T.E.D. for each presentation which the presenter the agrees, which Ryan definitely encouraged! That’s a very "Creative Commons" approach, and oh so right for a Web 2.0 conference (or any other future conference, for that matter.)

Maybe I had such a good time because I was burned out on 12+ years of Microsoft-oriented conferences and just needed something new.

Whatever the case; Bravo Carson, you definitely made a fan!  If you get a chance to attend one of there future conferences on a subject of interest to you, don’t hesitate, don’t think about it; just do it! I’m sure you won’t be disappointed.

Footnotes

  1. The $295 price was also so very in line with the ethos of "Web 2.0"; created high value for little money, and benefitting from the goodwill that creates. I so totally feel like they practice what they preach at Carson!
  2. Of course if it had been a Microsoft TechEd for $1000+ I was have been totally pissy about any lack of perfection, but not at $295 for the quality that Carson delivered!

East Coast Web 2.0 Conference Sept 20th 2006

The New New Internet ConferenceWow. Looks like I’m going to be headed to the "Web 2.0 Conference for Business" in Tyson’s Corner, Virginia (near DC) next week. I’m psyched! Like I said previously, the Microsoft conferences are passe; the energy these days can be found with the Web 2.0 crowd!

The conference is a little pricy at $595 for a one day event, but it is uniquely on the East coast, and it looks like it’s going to be pretty interesting. Lots of the "A" list players from Web 2.0 like Michael Arrington of TechCrunch and Dion Hinchcliffe of ZDNet as well as Hinchcliffe & Company will be there, as well as cool tools like JackBe and the ever present Google and Microsoft plus lots of other. Check it out!

P.S. I’m blogging this while in San Francisco getting ready for tomorrow’s much less pricey "The Future of Web Apps" conference at $295 for two days.

The Future of Web Apps Conference in San Fran: Extra Seat for $200:

 

Hey all! I’ve got an extra seat at "The Future of Web Apps" conference I’m attending next week Wednesday/Thursday September 13/14 in San Francisco if anyone is interested. The conference price is $295, but I’ll let it go for $200. Post a comment here on the blog if you want it.

Technologies are best when they are simple

What’s the next big thing? AJAX? Ruby on Rails? PC Virtualization? Open-Source Software? Data Security? Open Office File Formats? Windows Vista? Windows Live? Apple’s iWhatever? Yeah, all those things will get lots of hype, but the next big thing is something we’ve had access to all along:

Simplicity

Are my thoughts revolutionary? Nah, I’ve been reading about it at places like Information Week and the other usual suspects. Even Bill Gates at Microsoft gets it, through Ozzie at least (though execution will be the key.) But unlike all that gets hyped, simplicity as a concept that is for real.

Let’s look at two of the best known examples:

  1. Simple Mail Transfer Protocol.
  2. Really Simple Syndication.

Over the years, the world’s Internet email infrastructure evolved from that simple little mail transfer protocol (spam and all!) And RSS exploded as a method to syndicate blog posts in a very short order instead of one of the many complex content syndication concepts most of us never even heard of.

To most people the Internet came out of nowhere ten (10) years ago yet it evolved for at least twenty (20) years prior. The Internet’s foundation protocol TCP/IP isn’t exactly simple, but once the simple protocols HTTP and HTML were layered on top, Internet use exploded because implementing websites was simple (by comparison.)

But it’s not just simple technologies, its also simple to install and simple to use applications: ASCII text editors (i.e. Notepad), web browsers, email clients (w/apps like Outlook Express), instant messenger clients, wikis, blogging apps, online forum apps, and QuickBooks (simple is relative; accounting is required yet QuickBooks doesn’t really require accounting expertise.)

And to many people this simplicity makes sense. Scott Cook (founder of Intuit) got it. The founders of the original Instant Messenger (ICQ) got it. Pierre Omidyar (founder of eBay) got it. Google gets it. The original author of PHP Ramus Lerdorf gets it. And a lesser known group also gets it; the developers of Basecamp (although 37 Signals could also be the poster child for when a group elevates a concept to an ideology, and like all ideologists, becomes blind and misinterprets the concept. But I digress…)

Okay this is all obvious, and well, it’s simple. So what’s the big deal? People recognize that simple is important but without a simple roadmap, most don’t know how (pun intended.) I don’t know that I can provide that roadmap, but at least I can get you started.

First, just for grins, let’s look at some counter examples:

  • MS-Access – Have you ever tried to develop an app is MS-Access? Yeah right.Access it pretty easy in where it allows you as a user to point and click, but once you hit its brick wall of end user functionality, you’ve got to be an Access guru to do anything more with it.
  • VB.NET – Thank god for the My namespace in VB 2005, albeit five years late, but VB.NET is still too damn difficult to use productively without weeks of learning.Don’t get me wrong, I love the power of VB.NET language, but it has very little transitionality.
  • ASP.NET – I know its blasphemy, but let’s be real: VIEWSTATE, __doPostBack(), Server Controls, @Register, @Import, WebForms, DataGrid, etc. etc. There’s so much complexity there, where does one start? It’s no wonder so many people still use ASP & VBScript.
  • Exchange Server – Oh my god! How complex a beast can you get? Most POP3/SMTP servers use files and directories; Exchange using some bastardization of an Access/Jet database that corrupts whenever the power fluctuates. And have you ever tried implementing server events?
  • SharePoint – I can’t even figure out SharePoint as a user, let alone as a developer. What was Microsoft thinking?
  • Active Directory – Need I say more?!?

I’ve bashed on Microsoft thus far, but let me not give them all the credit:

  • XML, though itself simple, has been complicated with namespaces which I’ve studying for literally years I but still can’t figure out how to use.
  • SOAP – Okay, Microsoft was heavily involved here. But why did they have to make web services so hard?I mean, what was wrong with HTTP POST?
  • J2EE – There’s a reason J2EE developers get paid the really big bucks.
  • Oracle – Have you ever tried to tune an Oracle database application?
  • Content Management Systems – Is there anything out that can pass for simple? I’ve been using DotNetNuke on one of my sites for a while and I can tell you, it isn’t.

This brings me to my key point. Aside from being intuitively obvious, what’s so great about simple?

The Benefits of "simple" are, quite simply:

  • For the User: Productivity
  • For the Platform Provider: Rapid and Widespread Adoption

But you say that all of my counter examples have widespread adoption?

Do not underestimate the institutional will of large organizations to implement tremendously complex technology, because they can.

On the other hand, departmental users, users in small businesses, college students, home users and more can’t deal with complex technology. If it’s too difficult, they don’t or can’t use it. And there are many, many more of them than there are large organizations. What’s more, large organizations are effectively made up of these small groups and individuals. Simple technologies benefit all.

Microsoft, with its Windows monopoly has been able to get away with complexity and consequent low user productivity and low platform adoption with many of its products for a long time. But with the new challenges from Google, SalesForce, et. al. they better get pragmatic religion, and they better get it fast.

And that roadmap to which I referred? To quote Albert Einstein:

As simple as possible, but not simpler

:-)

Microsoft Still Doesn’t Get It.

Microsoft Still Doesn’t Get It.  I just read the article on C/Net News.com entitled  Microsoft pitches Web tools to hosting companies.  I saw this and got excited:

An update to its Web hosting program is designed to make the combination of Microsoft server products more attractive to hosting companies, which often use Linux and other open-source components, Microsoft executives said.

Then I read a bit further to find out exactly what the new deal will be and found:

The company will give Web hosting companies a free 30-day trial period to use Visual Web Developer 2005 Express, a new product in Microsoft’s Visual Studio product line. The product is aimed at boosting use of Microsoft tools by individuals and small companies. The program and the licenses associated with using its software will allow hosting companies to try Microsoft-based products with little or no up-front costs, Nandi said.

Microsoft just doesn’t get it!!!  A 30 day free trial in this age-of-plenty is useless and will not entice anyone who wasn’t already seriously considering.  Conversely, Linux and the open source components don’t cost web hosters a dime1. EVER!

If Microsoft really wants to make inroads into the web hosting market, here is what they need to do:

  • Offer a Window’s Hosting Kit for $295 that offers unlimited licenses for Windows Server 2003, Web Edition.
  • Offer Visual Web Developer for FREE for everyone forever, but ensure a migration path to Visual Studio 2005.
  • Offer an optional annual paid support agreement for web hosters mirroring similar to those offered by Red Hat and others.
     
  • Over time build into Visual Web Developer access to fee-based web services from Microsoft’s new Live initiative.
  • Finally empower Hosters to make more money from their customers by adding more value for their customers. This might be by letting hosters who offer Windows hosting to federal the Live services and take a cut off the top.

This last one is a key critical piece that’s missing in Microsoft’s approach to dealing with web hosters.  Microsoft knows how to get it’s Solution Providers and Resellers motivated by helping them make more money, but they still haven’t figured out how to motivate web hosters. 

The irony is it boils down to one thing: Empower them to make more money!


1 Ignoring optional support fees, of course.

BaseCamp Project Management: Blinded by Ideology

Some people just don’t get it.  They are so caught up in their own blind ideology they won’t consider alternative views.

I’ve been looking for a reasonably-priced web-based project management system for quite some time, and yesterday I thought I found it: BaseCamp from 37Signals.  Problem is, after an email exchange with the founder Jason Fried, they don’t now and won’t ever (he claims) support a visual view of a project in the form of a GANTT chart.

Why won’t BaseCamp ever support GANTT charts?  Maybe it’s BaseCamp’s competitive positioning, or maybe it’s because of ideology; based on BaseCamp’s Manifesto, Jason just doesn’t believe in them.  From my email conversation with Jason, is seems to be the latter.  Plus, isn’t a manifesto ideological by definition?

Why do I need GANTT charts?  Because I’m a visual learner and I need a GANTT chart to be able to see the big picture related to a large number of parallel projects that all share resources. I need this so I can keep from missing deadlines when I’m bombarded with almost literally 100 choices for how to spend my time each day.  I even proposed I could try to put BaseCamp and DBI Technologies together for DBI to provide optional GANTT charting of BaseCamp projects via DBI’s Solutions::Schedule product, but Jason wasn’t even interested in entertaining the idea, even if someone else was doing the work.

It’s a damn shame to find a product like BaseCamp that does 90% of what I need but, because of IMO blind ideology, its owner Jason Fried won’t even consider adding a feature for which arguably 65% of people would benefit. Jason’s last comment to me was: “Look at it this way… Go use another tool, get the Gantt charts, but miss the other 90%. Which tradeoff is worth more to you?“  The sad thing is, if it were not for blind ideology, it wouldn’t have to be either/or. :-(