I’m here in Verona - Italian city best known for Romeo and Juliet - on the biggest live Delphi conference in Europe this year - ITDevCon. The conference is organized by bitTime Software- Embarcadero representative in Italy - and there are plenty of Delphi experts presenting on three parallel tracks.
The conference has started from the keynote session where speakers could introduce themselves and we also had David I greeting attendees remotely via skype video session. At the end of the keynote I had an opportunity to demo Embarcadero All-Access.
Some of the sessions are in Italian and some in English. My "What’s New in Delphi 2010 IDE and Compiler" session was obviously in English. It was the first time I was demoing Delphi 2010 on Windows 7. Even if you are a presenter, you always can learn something new from attendees. When I have started demoing debugger visualizers, to my surprise there was nothing in debugger windows. No local variables, nothing. Luckily Boian Mitov suggested to turn off Delphi compiler optimization and rebuild the project. That has made the trick. In fact it would make great sense to turn off compiler optimization in the default "Debug" build configuration. Boian has also implemented Delphi 2010 debugger visualizer for bitmaps. Very interesting.
The next session was by Daniele Teti on Delphi 2010 support for JSON serialization and deserialization. It was not completely new to me, as Daniele has already published very interesting blog post about custom marshaling and unmarshaling in Delphi 2010, but there is nothing like watching the session live. Even in Italian:-) You can find support for JSON in the new "DBXJSON.pas" unit and support for marshalling/unmarshalling in "DBXJSONReflect.pas" unit. The support for serialization and deserialization is very elegant and pluggable. You just need to implement your own custom converters and reverters. When I was watching Daniele, I have realized how useful are generics and anonymous methods introduced in Delphi 2009. In fact the Delphi 2010 VCL uses them quite heavily in different places. Another thing is why in "DBXJSONReflect.pas" in "TTypeMarshaller<TSerial: class>" generic class method params are called "clazz" and not "class"? Interesting…
After lunch I have decided to see Daniel Magin presenting "Delphi and Subversion". Daniel demonstrated setting up Subversion and practical information about Subversion itself and useful tools to work with Subversion, which is probably the most popular version control system in use.
I could not miss the opportunity to see "Advanced Delphi for PHP" session by its architect - Jose Leon.
Jose made his life a little bit easier by playing prerecorded demo episodes and explaining live what was happening on the screen. Delphi for PHP is a very interesting tool for building pure PHP web applications, but using the Delphi concepts in the PHP world. Delphi for PHP is 100% visual IDE, with visual class library modeled after Delphi VCL library. There is nothing that compares to Delphi for PHP in the PHP world. Instead of working in text editor with raw PHP source code and libraries downloaded from Internet, you can work on the higher level of abstraction, because VCL for PHP components encapsulate and abstract away underlying low-level details. You can easily wrap existing PHP libraries, like Zend Framework or ExtJS, with visual components which you can work with visually at design time, pretty much like you can in a normal Delphi 2010 application. One of the very powerful aspects of Delphi for PHP is support for templates to integrate components with fancy CSS designs using popular PHP Smarty Templates engine. You can also easlily create web service servers and consume web services with NuSOAP PHP library available via VCL for PHP components. Another cool features are support for master pages, where you can inherit pages from a master page, and internationalization where you can change page language by changing just one property on a VCL for PHP form. Very cool…
The next session is 99% is Italian by Luca Giacalone and Fabrizio Bitti and is called "Delphi e l’interfacciamento con l’hardware… the easy way" and is all about using Delphi applications to interface with external hardware. The starting point are printed circuits that you can connect to your machine either via serial port or Ethernet. Check out this page to get an idea what external hardware we are talking about. External hardware can be controlled from your application using TIdHttp component. The second example was to use TVaComm component from TMSSoftware to switch on and off a lamp, blinking LEDs and then working with video camera to capture images into your Delphi app. The most spectacular part of the demo was to use Delphi app to control via radio a race car model. That was followed by replacing keyboard with Nintendo Wii remote ("wiimote") control with GlovePIE to steer the car from Delphi app. How cool is that?