Added By: Feedage Forager Feedage Grade B rated
Language: English
academy  at https  community embarcadero  data  delphi  embarcadero academy  embarcadero  online  rad server  rad studio  rad  tasks 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics

Techie Italian Blogging on Delphi and More

Updated: 2017-11-20T16:10:58.132Z


New on Embarcadero Academy: CodeRage Replays and my New Course and Bundle


Embarcadero Academy is growing with new content. Most notably, all of the CodeRage online conference replays are available on the site. I added a new course on Anonymous Methods and a course bundle on Modern Delphi Language.

Embarcadero Academy is an independent online training site available at The site has an overall agreement with Embarcadero as a key destination for online training for the company development tools products.

The academy site co-hosted the CodeRage XII conference the other week and it is not offering the complete set of replays. All you need to do is create an account on the platform and sign up for the free CodeRage course at

On my part, I added a new course on Anonymous Methods and a course bundle on Modern Delphi Language including the courses on interfaces, generics, and anonymous methods. This bundle includes 6 hours of content. Also, all of the courses have a 20% special CodeRage discount until the end of November.

There are many other great classes on Delphi by Alister and non-Delphi classes as well. It is also now possible to take the Delphi certification exams on the academy site. There are other ideas floating around to improve the academy, like live online classes and subscriptions: more than willing to get your feedback (that I can share with the academy site team) or suggestions to me for other topics to cover in future additional courses.


Explaining Tasks in Delphi Parallel Library... by Creating too Many Tasks


While doing some research for an online class, I came up with a demo that highlights the concept of a task in Delphi PPL (Parallel Programming Library) and how they differ from threads.

Recently, I wrote some new demo for Delphi PPL (Parallel Programming Library), while doing some research for an online class -- which is available since last week on the Embarcadero Academy site ("Anonymous Methods in Delphi"), along with a new overall bundle of my classes ("Master Modern Delphi Language Techniques").

In the past I've used different ways to explain tasks and compare them to threads. Tasks are lightweight and managed more efficiently, than threads. The PPL creates a thread pool and assigns pending tasks (and their code) to a pool of threads that depends on your CPU cores and current workload. But these descriptions might still explain tasks and threads as fairly similar in scope. Now let's look at this source code snippet:

      procedure TForm12.btn100sClick(Sender: TObject);
  tasks: array of ITask;
  Value: Integer;
  I: Integer;
  SetLength(tasks, 100000);
  Value := 0;

  for I := Low (tasks) to High (tasks) do
    tasks[I] := TTask.Create (procedure ()
      TInterlocked.Increment (Value);

  TTask.WaitForAll (tasks);

As you can see this event handler creates not hundred, but hundred thousand tasks. Each of them has an extremely simple operation to complete -- fairly nonsensical, I know. But you can create 100,000 tasks and they'll all done done in less than a second, on my computer. Consider creating 100,000 threads! that would create a significant extra overhead. By running this code, the tasks are assigned to a few threads in a pool, as you can see in the debugger:


Small demo and pretty much useless code, but I think it does a good job in highlighting the lightweight and flexible nature of nature of tasks, when compared to threads.


CodeRage XII Starts Today (With European Schedule)


The online CodeRage conference starts today. Here is a European-centric calendar for those living on our side of the ocean. And some more information...

The online CodeRage conference by Embarcadero starts today: Registration is still oepn at

With dozens of session based on central US time zones, it is easy to get confised. So I've amended the official calendar for those based in Europe (warning, in case of last minute schedule changes, I won't probably be able to udpate it). Here are thre three PDFs for the 3 days with UTC+1 or Central Europe Time zone times:

Tuesday Nov 7th

Wednesday Nov 8th

Thursday Nov. 9th

Remember you can sign-up and follow the event also on the Embarcadero Academy site at

I'll be "live tweeting" any even vaguely Delphi-related CodeRage information Follow the account if you don't do already!


CodeRage XII is Next Week


Next week will see the 12th edition of Embarcadero's yearly online conference. Three days full of sessions covering Delphi, C++Builder, InterBase, and all of the company products (including also Sencha's ExtJS), but also general software development topics and third party tools. I'll be giving a couple of sessions. Don't miss it!


Next week, from Tuesday November 7th to Thursday November 9th will see the 12th edition of Embarcadero's yearly online conference, called "CodeRage" since the CodeGear days. This event goes beyond all other webinars and sessions, in scope, breadth and focus, and is really an online multi-day event. While most sessions will be available afterwards, I really recommend you to plan attending live and get involved into the Q&A and discussion and social media conversations around the conference. Reserve your time and don't be shy asking your boss some free time to attend the conference -- it will be so much cheaper than going to a real one!

You can see the temporary program at:

I won't comment on all of the sessions, but I'm going to mention a few highlight and list mine:

  • Two guess industry luminaries will be giving sessions, Robert Martin (aka Uncle Bob) is speaking on "The Clean Coder - An Introduction to Software Professionalism" and Steven McConnell (of "Code Complete" fame) is speaking on "Managing Technical Debt".
  • RAD Studio product address by the PM team (Sarina, David, and myself) in which we will provide hints (and screenshots) of new features to come in RAD Studio 10.2.2 -- Tuesday 9AM Central US Time or 4PM in Central Europe.
  • Many sessions by well-known Delphi gurus including Ray Konopka (he'll also provide some interesting previews), Cary Jensen, Brian Long, Bob Swart, Danny Wind, Olaf Monien.... and many many others
  • Sessions by most Embarcadero SC at all latitudes, covering many ways to use RAD Studio
  • Detailed covered of many third party tools (including FMX Linux, Arduino integration, reporting, DB tools, UI controls and libraries, code migration, and much much more)
  • Technical sessions by the PM team (David, Sarina, myself, and Sandeep for Sencha). Specifically, I'm giving a session titled "Introduction to Ext JS for Delphi Developers" in which I'll provide some initial information on Ext JS and the use of the Sencha Architect IDE for building the front end of a RAD Server web service -- Tuesday 11AM Central US Time or 6PM in Central Europe.

Finally notice that this year the online conference will be hosted both on GoToWebinar and on Embarcadero Academy at, where you can already sign up and see the detailed schedule.


Delphi Blogs of the Month #56


It has been way more of a month after I blogged my last collection of links, news, and more. Here is a rather long list of blog posts you might have missed. While clearly difficult to have a weekly summary, Iv'e fully retitled this installment, although the URL stays as part of the original weekly sequence. Let's get started. Embarcadero News A Busy Summer at Embarcadero Academy Debuts with Online Courses for Developers of All Levels press release at New in 10.2.1: Debug visualisers for Delphi generics at Build iOS 11 ready apps with RAD Studio 10.2.1 at Updating IDE Subversion DLLs to address security issues at Blog Posts Working with big data databases in Delphi - Cassandra, Couchbase and MongoDB (Part 3 of 3) at Debugging RTL/VCL Code with CodeSite at and the follow up ,Notify Me of Everything - Part 2, at 5 Minute Snack: Reading floats with StrToFloat and TFormatSettings independent of system region settings at Easily Make Asynchronous REST Calls In Delphi 10.2.1 Tokyo On Android, iOS, macOS, and Windows 10 at Face Detection on Android and iOS at Experimenting with Neural Networks - Part 1 (and following in subsequent posts) - Adding a Custom Icon to a FireMonkey Button at RAD Studio 10.2: Windows 10 VCL UWP/WinRT Support at Amazon DynamoDB with Delphi (video) at 5 Minute Snack: Is a package installed? The Package Manager icons tell you! Third Party Libraries TLanguage localization tool: Not new but fairly interesting.... Python for Delphi at and you can read about it at Delphi RNL ("Realtime Network Library") at Use this RFID library in Delphi at Built with Delphi Roselt Color Picker in Windows Store: Smart IDE for OpenSCAD at   That's all for this month. [...]

Implementing AJAX and JSONP Support in RAD Server for ExtJS


Last week at ITDevCon in Rome I’ve given a session about using Sencha ExtJS with RAD Server as backend. For that session I used AJAX calls, but now I’ve also implemented the JSONP support, which provides an alternative in terms of cross-domains calls in browsers. Idera recently acquired Sencha ( and has added the company products to the Embarcadero business unit, which produced RAD Studio and also the RAD Server web service technology. A natural question arises on how to use the two products together. While there are several options, in this blog post I want to highlight the simple and direct integration of RAD Server and FireDAC with an ExtJS client based on Sencha’s data model architecture. Most of the considerations in this blog post would equally apply to using WebBroker or DataSnap to build the web service.. A Simple Test As first step, I’ve created a simple blank RAD Server application. What this does is to expose standard REST endpoints like “version”. In an ExtJS client build with the Architect IDE, I’ve added a button, picked the Tap event, and written code like the following: onButtonTap: function(button, e, eOpts) { Ext.Ajax.request({ url: '', cors: true, success: function(response, opts) { var obj = Ext.decode(response.responseText); console.dir(obj); button.setText (obj.server); }, }); } What this code does is make a call to the version REST API, create a JavaScript object with the resulting JSON (decode), display the data on the browser console, and display the server field as button text. Defining a Data Model This just proves that the JavaScript application can invoke RAD Server. Next I moved to the data processing. ExtJS has the concept of a data model, so using the visual tool I created a simple one like the following: Ext.define('MyEmployeeApp.model.EmployeeData', { extend: '', requires: [ '' ], fields: [ { name: 'first_name' }, { name: 'last_name' }, { name: 'phone_ext' }, { name: 'dept_no' }, { name: 'job_country' } ] }); Returning JSON from RAD Server Next, I had to define a data store. First I used an AJAX data store and to keep things simple I wrote a custom method in RAD Server to expose a plain JSON data structure, built using the TJSONObject and TJSONArray classes. In this code EmployeeTable is a TFDQuery dropped in the data module along with a connection to the classic InterBase employee demo database: procedure TEmployeeDataResource1.Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const AResponse: TEndpointResponse); var empDataObj: TJSONObject; data: TDataSet; emplArray: TJSONArray; emplObj: TJSONObject; aField: TField; begin data := EmployeeTable; data.Open; empDataObj := TJSONObject.Create; emplArray := TJSONArray.Create; while (not data.EOF) do begin emplObj := TJSONObject.Create; for aField in data.Fields do begin emplObj.AddPair(LowerCase(aField.FieldName), aField.AsString); end; emplArray.Add(emplObj); data.Next; end; empDataObj.AddPair ('employee', emplArray); AResponse.Body.SetValue(empDataObj, True); end; This is the resulting JSON in a browser: With this code and the use of an AJAX call, the JavaScript application by default ends up with with cross-server invocation security problems, when executed in the browser. There is  however a fairly simple solution in RAD Server, which is set a single line in the EMS.INI file, with a configuration like: [Server.APICrossDomain] ;# Write here the domains allowe[...]

Talking at ITDevCon 2017, Tomorrow


I realized I failed to mention I'm going to talk at a conference in Rome, Italy, tomorrow October 11th and Thursday the 12th,

The conference is organized by Embarcadero partner BitTime and their consulting company BitTime Professionals at their office in Franscati, near Rome, and all of the information is at:

Well, it might be a little late to join, but I realized I forgot mentioning the event on my blog, so here it goes. If you plan attending, I'll be there tomorrow afternoon and also join the dinner. See the final agenda at

I'll be giving a keynote on the status of RAD Studio, but also two technical sessions covering FireDAC CData Enterprise connectors and offering an introduction to Sencha's ExtJS and Architect tool, along with demos of integration with Delphi powered back ends. Would be interesting, and I'll make sure to share my demos with everyone -- and possibly repeating them at the coming CodeRage online conference next month.


My Courses on the New Embarcadero Academy


Embarcadero Academy launched last month, and I do have 3 classes on the Object Pascal language on it, with more to come.

The online training site Embarcadero Academy, an independently-run but Embarcadero affiliated training web site, was launched a couple of weeks ago: The academy features classes on different topics, but a lot of them are focused on Delphi programming. You can see the list of Delphi classes here:

The site has paid online classes by several Delphi experts and it is going to be expanded rapidly with new content and options (live training, beside self-paced tutorials, subscriptions, etc). The classes are mostly video oriented and, in my case, they are slide free and focused on code.

(image) I have currently 3 classes listed, two on interfaces (and there is a bundle to get both at once, as shown in the image) and one on generics. Another one on anonymous methods is in the works. As you can see my initial effort is to focus on the most recent and more complex features of the Object Pascal language, with content that matches my book but is presented in a different way. What I do, in fact, is building the example step by step, showing the feature but also reasoning on alternative coding options and ideas. I plan expanding my contribution completing the advanced area (RTTI, reflection, attributes), and add more core topics (properties and events, classes and objects, etc) and possibly even beginners Pascal material. Ideas are welcome. As an example, the bundle shown and linked here with the two classes on interfaces and my ebook, is currently priced at 29 US$. See for more information.


Why I Choose Delphi Summary


Over the summer, there has been a number of blog posts on this topic, but I haven't seen a complete list. Here it goes.

Over the summer, there has been a number of blog posts on the "Why I Choose Delphi?" topic. While providing personal ideas, they do have common themes and I think there are very interesting to read, for anyone who is using Delphi today (or used it in the past). Here is the list of the blogs I noted, and I migh have missed others, let me know:

David Harper:

Andre Celestino:

Frank Lauter:

Ryan Potts:

Jim McKeeth: and

Steffen Nyeland:

Ray Konopka:

Jens Fudge:

 Robert Calco:

"T Theobald":


InterBase 2017 Update 1 and Delphi


Embarcadero has just released an updated version of the InterBase 2017 database, with improved performance and platform support.

(image) A few months after the InterBase 2017 release, Embarcadero has just made available InterBase 2017 Update 1. If you are an existing InterBase user, this is a nice update the install, given it has some performance improvements, bug fixes, and new features, as explained in the announcement article I just publsihed at:

InterBase is a great embedded database, and the IBLite/IBToGo versions come included with RAD Studio for all supported platforms (desktop and mibile). The Windows developer edition of the full RDMBS (a fast, hassle free, fully powered SQL engine) is also included in RAD Studio and helps power the RAD Server database. Not only InterBase is on par with most competing (and often more expensive) solution, but it has unique features like ChangeViews that can be leveraged to greatly optimize the data traffic, something even more important in today's mobile and distributed world.

While RAD Studio Tokyo ships with the previous version, InterBase XE7, the InterBase 2017 versions of the developer server and IBLite/IBToGo are available in GetIt -- currently still the original release, Udpate 1 will be made available early next week. Read the linked article above for current download links and more information on this version of InterBase.