Great success for RAD Studio in one of the most important italian government palaces

This week, in one of the most important government palaces in Italy (I cannot say which one), I did a consultancy about mobile development. The internal dev team is currently using Xamarin and they have a blocking problem with it. In the team there is a friend of mine which called me some days ago to know if I know how to solve their problem using Delphi. I told him that the “blocking” problem could be solved with Delphi. The resultant 2 days of consultancy were been quite hard, but the result has been really rewarding. A long standing problem has been elegantely solved using Delphi in a couple of hours.

The problem was about using HTTP client certificates with iOS in a Microsoft architecture, where each user had its own certificate.

I dont know Xamarine so deeply to say if the problem could be elegantly resolved with it as well, but the team is quite smart and skilled, so I think that they have been tried all the documented solutions to face the problem, but without success.

I want to thank the always helpful Jim McKeeth and the great Diego Navarro from Embarcadero, to have help me about this issue. Thank you guys.


Using dynamic arrays and Parallel Programming Library (Part 1)

The Parallel Programming Library introduced in XE7 is one of the  most awaited built-in library for the Delphi and C++Builder RTL, at least for me. I’ve still a nice list waiting for the next versions, but this is another story 🙂

Marco Cantù wrote about dynamic arrays some days ago, another nice feature introduced in Delphi XE7. In the post he talk about an integration between Parallel Programinng Library and dynamic arrays which I shown to the audience in the Milan and Rome XE7 world tour.

I planned to write about Parallel Programming Library in this blog, so why don’t start with that simple example?

Here’s the code.

procedure TFormThreading.Button1Click(Sender: TObject);
  tasks: array of ITask;
  value: Integer;
  value := 0;
  tasks := [
      sleep(1000); // 1 seconds
      TInterlocked.Add(value, 1000);

      sleep(3000); // 3 seconds
      TInterlocked.Add(value, 3000);

      sleep(5000); // 5 seconds
      TInterlocked.Add(value, 5000);

  ShowMessage('All done: ' + value.ToString);

This code configure and start 3 parallel tasks and wait for their completitions. Then show the result using a ShowMessage.
This code takes 5 second to be executed because the 1st second there are 3 tasks running, from 2nd second to the 3rd second there are 2 tasks running while the last 2 seconds only one task is running. All the internal threads are managed by a thread pool. Hey! This means parallelize!

Developing Application Services with PHP Servers and Android Phone Clients

My new white paper about “Developing Application Services with PHP Servers and Android Phone Clients” is on line under the Embarcadero RAD-in-Action initiative.

Developing Application Services with PHP Servers and Android Phone Clients
Developing Application Services with PHP Servers and Android Phone Clients

Are (or will be) available:

  • The White Paper
  • The complete source code from the white paper
  • 2 videos showing a complete (obviously very simple) Android application interfacing with a PHP REST web service (developer with RAD PHP XE).
  • A webinar (9th february)

In bit time we are heavily working with the Android operating system used in conjunction with DataSnap or PHP services.

This RAD-in-Action initiative (sponsored by Embarcadero) should be useful for all who want to start to work with Android and REST web services developerd with (RAD)PHP or Delphi Datasnap.


This year, the launch of the new RADSTUDIO XE has been really nice. We have met some friends and customers exciting to see the new Delphi features and capabilities.
In the event of Rome there was DavidI too.

The agenda has been the following:

Embarcadero Update + XE and All-Access (DavidI)
+ New Products, Ideas, Projects
+ Delphi64 bit compiler preview

What’s New in the IDE (Marco Cantù)
+ SubVersion
+ BeyondCompare
+ AQTime

New features in the RTL, RTTI (Daniele Teti)
+ Threading
+ Virtual Methods Interceptor
+ RegEx
+ CodeSite Express

Agile Development (Daniele Teti)
+ UML modeling
+ audits, metrics
+ repository
+ unit testing
+ Final Builder

Web, Cloud e Database Support (Marco Cantù)
+ Microsoft Azure Components
+ Deploy in the Amazon EC2 Cloud

What’s new in Datasnap (Daniele Teti and MArco Cantù)
+ Developing DataSnap server (Daniele)
+ DS Authentication/Authorization (Daniele)
+ DS Filters (Daniele)
+ DS RequestFilters (Marco)
+ Using DS from Delphi Client (Daniele)
+ Using DS from PHP Client (Daniele)
+ Using DS from Javascript Client (Marco)
+ Using DS from Android Client (Daniele)

Summary and Q&A

The last DEMO has been an Android APP wich use a REST DataSnap Server built with Delphi. Audience has been very excited about it.

Many attendedees have been very interested in the upcoming ITDevCon ( and for the new courses in the bit Time offers.

Some of the photos are uploaded on Google Picasa. You can see them here.