Programming Technologies I Hope to Use in 2008
In the spirit of New Year's resolutions, here's a short list of software development technologies that I'm keeping track of in 2008, or plan on trying/using:
Ruby on Rails: I started learning this after getting burn out from ASP.NET 2.0 development. I don't think the technology is good for big enterprise web applications, but I do like some of their ideas. I really want to give RoR a spin and try it out for a project. Their community is great and the technology continues to evolve and improve.
Update: Okay, so it turns out that the Ruby on Rails community is actually a ghetto.
MVC ASP.NET Framework: Microsoft created this in response to RoR's popularity. Instead of making it proprietary though, Microsoft has made it very extensible allowing for 3rd-party plugin replacements. The technology is still in beta though and they still need to figure out how they're going to handle certain key points such as validation, AJAX, etc. Once it's done I want to create a web app using it to see if I can switch to it and escape from ASP.NET 2.0 hell. If not, I probably switch to RoR and maybe re-write my dynamic WebPortal engine.
DLR (IronPython / IronRuby): Again, thanks to the popularity of dynamic languages like Ruby and Python, Microsoft has created a Dynamic Language Runtime which sits on top of the CLR. The DLR will officially support .NET versions of Python and Ruby. I've played around with IronPython (before IronRuby was announced) and it was a refreshing change from C#. Dynamic languages like these are perfect for web development. It will be nice once IronRuby is done and we'll be able to use it with the new MVC framework.
LINQ: Speaking of dynamic languages… LINQ is an awesome dynamic, data access technology. I tried out LINQ to XML (formerly XLINQ) first and was impressed. No more cryptic XPath or verbose XML serialization classes. Recently, I dove into LINQ to SQL and love it! No more crappy DataSets! It's funny, C# has now gained some dynamic language features thanks to having to support LINQ. I really feel like LINQ (or a LINQ type of 4GL technology) is the future of data access. It's too bad you cannot really use it outside of .NET.
WPF: I've actually given up on WPF for the time being. And I've noticed that it hasn't been widely adopted. I think the IDE/editor tools are not quite ready yet. There's also a huge learning curve and slower development time. WPF is definitely the future of WinForms development though. So, I wish Microsoft would focus more resources on it and wrap it up.
Silverlight: This used to be called WPF/E, "E" was for "Everywhere". Silverlight is exciting, but again it's too infantile. I'm not even going to bother with it until it's ready. The prospect of doing web development with client-side XAML and C# is damn tantalizing though. If Microsoft can pull this off correctly I'd abandon ASP.NET for Silverlight. What they should really do, is finish WPF and just port it to the supported platforms (Mac & Linux). Why mess around with a scaled down version of WPF?
Cocoa: I don't know how I feel about Mac development quite yet. On the one had, their main language Objective-C is horrible. On the other hand, they have an incredible niche market. I keep reading these inspiring success stories about other Indie (Independent) developer shops. For example, here are a few:
Delicious Monster: The first success story which caught my attention was from a few years back. They made $250,000 in the first month. Their next version, is coming out soon and I bet they'll rake in more.
Pixelmator: Two brothers from Romania wrote this PhotoShop mini-clone in 6 months. They made $60,000 the first day it went on sale.
OmniFocus: For some reason, the Mac community is goo-goo-ga-ga over GTD. The OmniGroup made over $100,000 in the first 5 days of accepting pre-sales for their OmniFocus.