Ping 2012!

Yes,  I am still here.

2011 was a very challenging year for me: in January 2011 I have been offered a very tempting position a company and I have accepted it. It’s a very small “services” company but with large expansions plans. The whole 2011 I was busy building a new system, maintaining some old ones (and gradually deprecating those in favor of the new one). It was really challenging and most of all time consuming. I had barely any free time for myself and when I had any I spent it as personal relaxation time.

The sad part about 2011 is that I did not get any chance to work on my open source projects (except the small updates to TZDB package). This year, hopefully, things are going to settle down work-wise and I will start getting more free time to work on my projects again!

I would like to give a small update about each project and what to expect from them in the future:

  • DeHL — A collection of code built around the concept of “type objects”. Unfortunately, DeHL only stirred some architectural interest in the Delphi community. It did not actually attract  many active users or contributors. If your code is not used in real life applications then it’s kind of useless. The good part is that it’s open source (BSD) and anybody doing a Google search can wind up there and download any piece of code for his/her use. Also, DeHL was a very good compiler “test case” in Delphi 2009/2010/XE time frame. I used it while working for Embarcadero a lot and it always revealed bugs and problems that got fixed internally. And finally, DeHL offered me the chance to learn some design principles I had never used before which ultimately made me a better programmer.But, unless someone steps up and takes over, DeHL is effectively dead.
  • TZDB — This project is alive. It’s a small project wise a very clear scope that was realized 2 years ago. I am only running a tool to generate new time zone definitions from time to time. Other than that TZDB is alive and kicking.
  • Collections — A collection of generic containers. What can be more exiting? (for me at least).  Well, I have on my machine a half-finished version 2.0. I have never completed it because it basically rips open some of the initial designs. Initially I inspired from .NET and Delphi collections classes to make a hybrid. Then I worked in Java and noticed that “Java’s way” is also a good way to go. So 2.0 tries to combine concepts of all three major players. This project is temporarily on hold until I find my direction.

The good thing about 2011 is that I had the chance to use all new shiny .NET technologies I haven’t touched before (I was a .NET 2.0 user before). This means, actual LINQ (collections and SQL) coding, WCF, WPF and all that stuff. This gave me a broader perspective on things. This also means that my most wanted Delphi feature for 2012 is anonymous types and lambdas. Hopefully we will see these features and we can build some very interesting and time-saving solutions around them.


I never make new year’s resolutions because I know I would not keep them. This being said, I hope I can get my act together and finally finish Collections 2.0.


Happy and a Fruitful New Year!


  1. I always liked the collections library and the way it introduced the linq like way of working with lists into delphi that was actually new to the majority of developers (unless they have been working with .Net already).

    It would be nice if there could be a way of making Collections 2.0 something that is usable by other libraries (Spring4Delphi or DSharp for example since both have their own implementations of collection classes which gives you lot of problems if you are working with more than 1 of these libraries).

      1. I guess usable was the wrong word. It is more like the different people writing libraries that require all kinds of generic collection classes agree on using one version instead of “reinventing” them (and also in a very similar way if you compare spring4d and your implementation for example – actually these two are the only ones I know of that go that far).

        In my case the state of collections was pretty much what I needed. In the dsharp code lists only need a very limited part of its functionality (no enex at all for example) while the consuming code that uses dsharp may make heavy use of such features.

        I was thinking about using collections in dsharp but did not at the end because at that point I was not sure about the future development of it. Some parts (like the yield) can be enabled to work with collections by compiler switch.

        In the implementations (which did not go that far) I made for dsharp I also tried to combine the non generic and the generic version of enumerable/enumerator/list and so on by using TValue for the non generic version since unfortunately the built-in interfaces (IEnumerable/IEnumerator and their generic versions) are not used in Generics.Collections and therefor not compatible with the classes in said unit.

        1. The state of 2.0 is almost done code wise. I stopped because I realized it’s just sick how much I have to write from the unit test perspective.

          I will probably make a 2.0 beta release first which will not include unit tests and will release a final one when those tests are up.

          2.0 is a major effort for me because I had removed a lot of duplicated code all over the place .
          And introduced much more capable interfaces. The number of testable code paths grew a lot.

          Expect a release soon ™.

          P.S. Oh man… I need to redo a lot of online docs and the interface diagram …

          1. I am very excited to see what you have done! 🙂

            I just wish there would be a way to reduce code size for generics. Not that it matters much (at least in my case) but binaries are growing pretty much if you have many generic types. Actually for all T that are classes that’s just duplicated code. Last time I checked it was around 80K for every TList type in Collections.

  2. My id on sourceforge is wpostma. If you need a delphi contributor to help keep the current Dehl fresh and working (in case of compiler changes and new delphi versions) I am willing to help.


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.