Petra Wins Embarcadero Cool App for December

Any developer knows how time consuming it can be to come up with good graphics for multi-platform development. There are so many different device pixel densities that require different images. That’s why I’m excited to announce Embarcadero’s December Cool App winner, Petra, which makes it easy to take quality vector graphics from Sketch and turn them into natively drawn user interface elements for cross platform Delphi apps.

Petra’s support for FireMonkey, Android and iOS drawing APIs provides maximum flexibility in targeting different platforms. It’s one of those tools where using it once inspires you to want to use it more and more, and I have to admit, I’m addicted.

Petra easily moves between design and coding without ever needing to deploy 1x, 2x or 3x images in the final app. The tool also allows developers to create resolution-independent and scalable drawings with dynamic behavior, without the need for static rapid prototyping of UI Components.


When asked about his choice of languages, Petra developer Nader described Delphi as a “recipe of a great programming language plus RAD IDE plus ecosystem of third party frameworks and components plus passionate community of supportive developers. All combined to enable developers to target multiple platforms from one code base, natively and beautifully.”


This video shows Petra in action:

[YoutubeButton url=’’]


Interested in submitting for the Embarcadero’s Cool App contest? It’s open to any business or consumer application built with RAD Studio, Delphi or C++Builder. Embarcadero awards Cool App contest winners a $500 Amazon gift card and winning submissions are also highlighted on the company’s YouTube channel. For more information on the contest and a link to the submission form, click here.

Read More

Read More

Switching a XenServer VM from PVM back to HVM

(Disclaimer: I am by no means an expert with XenServer. So please don’t take anything you read here for granted. It’s my own experience and what I found in documentation and online.) If switching a XenServer Linux VM to paravirtualization fails, you usually end up with a non booting VM which is quite annoying. Switching it back to hardware assisted virtualization isn’t difficult, if you know what to do: Open a console on the XenServer host (local or via ssh) Get the UUID of the VM you want to change: xe vm-list name-label="NameOfTheVM" change two parameters of the VM Set HVM-boot-policy to “BIOS order” xe vm-param-set uuid=UuidOfTheVM HVM-boot-policy="BIOS order" Set PV-bootloader to “” xe vm-param-set uuid=UuidOfTheVM PV-bootloader="" If everything works, the virtualization mode of the VM in XenCenter should be switched back to “Hardware-assisted Virtualization (HVM)” and the VM will boot again. Source: This Citrix Forum post Another article about this
Read More

MockJSONAPI Server

Let’s say that you need to develop a REST client (e.g. mobile app, web client, web SPA or a desktop thin client) and you need some endpoints to use. The usual problem in this case is that you need to start to develop the server before you can show something to the end user. MockJSONAPI server solves this problem giving to the developer a bare-bone REST server with the standard CRUD interface. The data are stored into a single JSON file. MockJSONAPI is a mock server for a generic JSON API. It is built with Delphi and delphimvcframework. Can be used with any client technology and language (e.g. the server unit tests are in Python). When mockjsonapi server receives a requests it matches the request against the data.json that have been configured. More Info MockJSONAPI Server is a quite simple project but is really useful for all the developers that have to work with RESTful APIs. More details and info at the project page.
Read More

Delphi: playing Chimes.wav as an external file or embedded WAVE resource in Delphi XE5.

Recently I had to play some notification sounds in a Windows Delphi application where the application deployment should be as easy as possible: preferable copying the EXE around. Playing a sound file seems easy, especially if it is a WAV file: just use the PlaySound or the (older) sndPlaySound API functions. But if you start searching […] … Read More

Read More

Damned ! var Comp : function(const s1, s2: string): Boolean; begin if CheckB…

One of my main gripes about lots of RTL/VCL/FMX code: conventions are often lacking. Which means one of the below functions starts with Ansi (but does a Unicode operation) and the other has the parameters in reverse. var Comp: function(const s1, s2: string): Boolean; begin if CheckBox1.Checked then Comp := ContainsText else Comp := AnsiStartsText; […] … Read More

Read More

Some FastMM scenarios require NeverUninstall because the System unit finalizes things innitialised in other units

You always have to be careful  with Delphi finalization sections cleaning up things that might have not created inside the corresponding initialization section. This is especially true for the System unit. That one actually contains this little piece of code that is being called after FinalizeUnits is called which also fianalises external memory managers like FastMM: finalization {$IFDEF […] … Read More

Read More

Animation problems in Delphi Tokyo 10.2 update 2? Check bug RSP-19525

If you run into animation problems in Delphi Tokyo 10.2 update 2, then read [WayBack] … In particular I cannot use the use the animation to change the tab in a TabControl… – Raffaele Miola – Google+. It is likely that  RSP-19525 (10.2 Tokyo Release 2 breaks Animation under Android – App hangs). Some temporary fixes […] … Read More

Read More


With the initial release coming up soon, here are a few teaser screenshots of chakracore-delphi, a new opensource library with Delphi and Free Pascal bindings and classes for Microsoft's ChakraCore Javascript engine: FPC 3.0.4 and Lazarus 1.8 build (win64): FPC 3.0.4 and Lazarus 1.8 build (linux64): FPC 3.0.4 and Lazarus 1.8 build (macosx64): Delphi XE 10.2 Tokyo build (win64): Delphi 2009
Read More

Delphi inner scoping is undefined. Please Embarcadero/Idera, come up with a formal language definition for Delphi

[WayBack] Hi there, this is pure curiosity only; but this compiler behaviour seems odd to me. What do you think?… – Agustin Ortu – Google+ The problems start when you prefix the outer class which you have to when using inner consts ([WayBack] Oh nice. Feel free to QP. Fails at least in Delphi XE8. […] … Read More

Read More

Delphi FMX TBitmapCodecManager.LoadFromFile calls TImageTypeChecker.GetType that returns ONLY predefined image types

Bugs happen: [WayBack] Did I miss something ? I’ve tried to add a custom image loader for FMX … TBitmapCodecManager.LoadFromFile calls TImageTypeChecker.GetType that returns ONLY predefined image types ! (gif, bmp, png, tiff, jpg) … – Paul TOTH – Google+ I’m not so much surprised by bugs, but what scares the heck out of me is […] … Read More

Read More

Ideara / Embaracdero at least fixed some of their security issues…

Some security improvements A long while ago I quoted [WayBack] Ideara / Embaracdero is flushing away user trust in their ability to do secure computing… – Jeroen Wiert Pluimers – Google+. Since then they have fixed some of the issues: EDN password reset email messages do not contain the plain text password any more The […] … Read More

Read More