michaelsilver.us Software, programming and whatever.

February 28, 2007

CodeGear’s Next Step

Filed under: D,Delphi,Programming,Proposals — Michael Silver @ 3:19 am

As Delphi developers, we’re always reminded how Delphi won’t make it. How it’s on the verge of extinction. How Borland (nowCodeGear) can’t stand up to Microsoft, Java and open source languages. I always ignored the doomsday talk. I knew it wasn’t true. Sure enough, ten years after installing Delphi, I was still using it.

The same naysayers are still around, saying Delphi is doomed. Unfortunately, now they are right. Delphi is doomed. Let me clarify what doomed means. Delphi’s heyday is over. It may continue to live on as a niche player, but it will no longer enjoy the robust community and innovative thinking that went into that first few versions.

Before I examine the evidence, let me express my sadness at the revelation. I take no joy in reaching this conclusion. Delphi was a remarkable language and development platform. It was the perfect answer to Visual Basic. It had the power and speed of C yet was as easy to use as VB. It is the father of C# and it’s similarities can be seen throughout.

This article isn’t just about the end of Delphi, but the future of Delphi (Delphi is dead, long live Delphi), C/C++ and CodeGear.

So how do I reach the conclusion that Delphi is doomed?


The community that once thrived is no longer as robust. To be fair, some of it has shifted off shore. While Delphi’s decline is evident in the United States, it is still going strong in other countries, but newsgroups aren’t seeing the volume they use to. Email lists are quiet. Open source projects done in Delphi seem to be stagnating. It’s like everyone left the building and forgot to turn off the lights.


Microsoft dealt CodeGear a blow by first stealing Anders and then releasing the .NET platform. Where does Delphi go from here? C# is more advanced than Delphi and it muddies the water with the CLR and managed code. Should Delphi continue to advance the win32 platform or jump ship to .NET? This confusion in the market place only hurts Delphi. I understand they are now working on a version of Delphi that compiles to either win32 or .NET. I hope it works more seemlessly than previous versions.

Lack of Innovation

Delphi is behind the pack. I remember the excitement when Delphi got it’s foreach statement. While that was was being added to Delphi other languages were getting closures, mix-ins, class exstentions, generics, contracts and numerous other languages features. Poor Delphi was ignored and I don’t blame it on the the diversion of resources used to create Kylix or Delphi.net. Delphi has been a slow innovator since about Delphi 3.

Delphi also tried to advance into the web realm with very limited success. I can’t really blame them for this as it was mostly dominated by open source scripting languages and java.

The D Solution

How hoes does CodeGear save itself? While a guaranteed solution is impossible, some ambitious moves must be made.  CodeGear seems to be moving in this direction with Delphi for PHP (and Delphi for Ruby on the way) but they need to go a step further:  Purchase the rights to D [wikipedia:D].  D the programming language.

D was created by Walter Bright who also worked on the Symantec C++ compiler and has been working on compilers for around 20 years. D just had it’s 1.0 release and is quite impressive. It’s compiled code usually runs as fast or faster than equivalent C++ code. D is starting to get noticed and others have even noted that D is a diamond in the rough just waiting to be polished. D also combines all the goodness of C and C++ and adds in the latest language features, including support for unit tests et al, and leaves out much of what people don’t like. Oh, and CodeGear needs to keep Walter in charge of D.

Walter needs to be given the freedom to advance the language as he deems necessary. Once the marketers and bureaucrats take over, the language stagnates. While I use to think language stagnation is a good thing (it prevents old code from breaking), I now think since change is a part of life, languages must continue to change and adapt otherwise they die.

So how does this solve CodeGear’s problem? Well it doesn’t immediately, but it does give CodeGear one of the most impressive languages available and it removes all the arguments about Delphi not being ready for prime time (i.e. being in Pascal, owned by Borland, etc). While Delphi is one of the best languages and environments available it gets little respect or attention and never will. By moving to D it removes the need to modernize and bring Delphi up to date and also gives CodeGear the advantage of having the successor to C and C++. Frankly I prefer the C syntax anyway and I think most serious developers do too (with exceptions, of course).

Once CodeGear has D, they need t0 submit it to the standards board and release a compiler and standard library on numerous platforms as open source, even if unsupported directly by CodeGear. The official CodeGear compiler could remain closed source, but it is critical that there be a GLPed version of the compiler however, otherwise widespread adoption will be limited. D is good enough to gain traction on it’s own (and has been), but with CodeGear’s backing it will get to skip a few places in line.

Open sourcers would get a FAST, stable compiler to eventually replace C that they can count on being around for a while since it’s open source.  Delphi developers would get a successor that is modernized and CodeGear lays claim to a state of the art language.  That would make for some great advertising.

CodeGear must release an IDE for D, perhaps as an eclipse plugin. I am not convinced an eclipse plugin is the best route, but that’s the path they are taking with JBuilder. Eclipse stills seems behind the curve compared to the last Delphi IDE (Delphi 2005) I used. The IDE can be strictly for profit and doesn’t have to be open source.

Once CodeGear gets D released into the wild, I would expect heads to turn. The open sourcers would be pleased with it since it has a GPL license. Corporate developers (like myself) will be happy since it has the ease of Delphi, C syntax and modernized. The goal here is to impress both the open source community and paying customers. This is a terribly elusive task but has been done by MySQL and others.  If CodeGear walks this tightrope succesfully, they could end up with the most used language in the world, assuming D overtakes C and C++.

The existing Delphi could continue and perhaps this new product would be called Delphi for D or something consistent with their new naming conventions, but the future would be with D and not Pascal (In fact it already is, regardless if CodeGear buys D).

The .NET Problem

While moving to D would be very risky, there are other problems, most notably .NET. How do you integrate D with .NET? While I don’t advocate moving D to the .NET platform, D will need a simple interface into the framework. I am ignorant on how easy this would be. MS seems to do something similar with their C++ for .NET, but I believe it is still managed code.

I would like to see a bridge allowing D to make calls into the framework when needed, but still remain unmanaged code. I have no desire to see D compiling to IL.

If the .NET problem can be solved (and perhaps it’s easier than I think), CodeGear needs to seriously look at D.

February 21, 2007

No Easy Database Choices

Filed under: Database,Programming,Ruby,Ruby on Rails,Web Development — Michael Silver @ 12:49 am

As I try to get NutritionFacts up and running on the web with Ruby on Rails I need to select a database to use. Obviously, in the open source realm, MySQL is the forerunner or at least the first one to look at since it’s use is so widespread.

I have a few criteria that any database must meet:

  1. Transactions
  2. Full-Text Search
  3. Cross-platform (my server runs FreeBSD, I run WindowsXP)
  4. Have bindings for Rails
  5. Open source
  6. Server Process

In taking a closer look, MySQL is not perfect, in fact it’s missing some critical features. If you use the MyISAM storage (MySQL offers numerous methods of storing data, each offering different features), you get full text searching, but no transactions. I have the need for transactions since the data users may enter span numerous tables. If you use the InnoDB storage engine you get transactions (and row locking instead of table locking), but no full text search.

Well perhaps another database would have both transactions and full text searching. I moved my search to SQLite which does have both, but it doesn’t have a server process to manage access, which could mean problems on a busy site. Not good.

Next in line is PostgreSQL. Very impressive feature set but full test search is through an addon called TSearch2.

The standard instructions for TSearch2 are rather complex, but thanks to the Google and the Internets (aka the series of tubes), there are some good guides for setting it up. It still seems like a solution prone to break though, since it requires a trigger and an additional field in the tables to be indexed. I also don’t know about the quality of the tools to access and manage PostgreSQL, although phppgadmin looks decent enough.

Just to rule out an other potential canidates I also looked at Firebird which has transactions
and is cross-platform and has rails bindings. Unfortunately, no full text search.

Next in line: Ingres. I took a quick look and frankly I don’t have the energy to explore it. It doesn’t seem to have as much support in the open source community and I couldn’t find any documentation on full text searches, so I presume it doesn’t offer it.

I am fresh out of databases to explore. Until I can choose a database (and I am leaning towards PostgreSQL) I am going to useFerret and the acts_as_ferret plugin for Rails to preform the full text searches. (Tutorial) While Ferret is not a bad solution, it does appear to be slightly slower than the MySQL full text searching and the potential exists for the index to become out of sync with the database since it is not stored (or even related) to the database. Thankfully, with Rails I can use this solution for now and when I find a better one, switching will be trivial.


Database Full Text Search Transactions Server Process
MySQL (MyISAM) Yes No Yes
MySQL (InnoDB) No Yes Yes
SQLite Yes Yes No
PostgreSQL Plugin Yes Yes
Firebird No Yes Yes
Ingres No Yes Yes

February 17, 2007

Web Development is Fun?!?

Filed under: Programming,Ruby,Ruby on Rails,Web Development — Michael Silver @ 2:25 am

While most of my expertise has been in developing desktop applications, I was recently moved to our web team. I have written a web application before, an ISAPI dll at that, and as expected, web development has only improved marginally since my last forray.

At work we use C# and VB.NET with ASP.NET. While I love the C# syntax and Visual Studio is impressive, web development is still tedious. Even simple sites can takes days or weeks to implement. While some of this is due to ignorance, some is from lack of innovation in the web development realm.

I had heard of and tinkered with PHP, Perl, Python and the essentially defunct ASP and none impressed me for web development. They are behind ASP.NET technologically and usually combine business logic right into the web page, since language limitations made it the easiest route. Yuk!

Another option, Java Server Pages, are far too complex.

A few friends at work keep me up to date on various programming languages and language features they encounter. Such friends are always great to hang around since they have a passion for innovation, whether the innovation is from them or someone else. Sure enough one introduced me to Ruby on Rails, a framework for developing web sites based on the Ruby programming language.

I had heard of Ruby previously, but I didn’t really have much desire to check out another scripting language, that is until Rails came along.

I don’t know all the details, but Ruby supposedly offers features that make the creation of Rails possible. While similar frameworks exist for PHP, Python, Java and C#, they are all hamstrung, although some only to a small degree, by language limitations.

With all the press Rails is getting, I had no choice but to take a closer look. Next, I needed a project. Viola Nutrition Facts.

Nutrition Facts is an application I wrote for windows that allows quick searching of a food database to determine carb or fat counts, etc. This would be a perfect project to move to the web.

So I am off and running developing my first web app with Rails. While I am still in the early stages, I have noticed something. Rails makes programming fun. It eases the tedious programming tasks associated with the web. WOW! Web development can be fun!

As I progress through my project, I will create new articles to detail the problems and successes I encounter.

Happy Web Programming

Powered by WordPress