Skip to content

CodeRage Mobile: My session on iOS apps and enterprise services

The CodeRage Mobile conference Day 1st is almost finished. I’m listening to last sessions from Anders Ohlsson. Few hours ago I have been doing my own session "Create iOS Applications that Work with Enterprise Web Services and Multi-tier Architectures" and promised to share the source code from my demos. I have uploaded it to Embarcadero Code Central.

Enjoy!

Delphi for iOS in Zagreb, Croatia

I’m just back from Croatia. I have been demonstrating live Delphi for iOS programming for about 50 Delphi and C++ programmers gathered in the new business centre in Zagreb. The weather was excellent as well as the atmosphere during the presentation. I really like to visit Croatia as people there are very open and friendly plus they are great Delphi enthusiast! The idea of "multi-device, true native development" was very well received and there was a lot of positive comments about the direction in which Embarcadero is going with its developer tools! Long live Delphi!

The conference was perfectly organised by Konto, Embarcadero partner in Croatia. Mladen Kuzmiński, Konto CEO, created lunch menu in Delphi code:-)

I have received a very nice gift from a dedicated C++Builder programmer, Mr Dragutin Gerić, FireMonkey origami!

You can find more photos from this event at the Konto website here.

My XE4 live events this week: Sweden, Norway and DevDirect webinar

Delphi for iOS has been released on Monday! It is part of RAD Studio XE4 and to me this is the biggest release of Delphi, since Delphi 1! You can now use the same Delphi skills and existing source code, to be immediately productive in the mobile market! True Native Multi-Device applications! That’s super cool!

Yesterday I was reading the tech column in the "Wall Street Journal" that confirms that native apps on mobile are key to big players like Facebook and LinkedIn, but in their current approach they need to maintain different code bases for different mobile platforms. Delphi is so much better! With Delphi XE4 you can create your programs once and compile them natively to Windows, Mac and iOS! That’s a big thing!

On Tuesday I have been presenting new Delphi for iOS to about 60 enthusiastic Swedish developers in Stockholm. They were super happy with what they saw!

From Stockholm I have flown to Oslo in Norway. On the railway station I have come across a very big "Delphi Emerging" poster that I took as good sign before the event in Lillestrom the following day.

Lillestrom is very close to Oslo and the event was held in the very nice culture centre building. The room was full and we needed extra chairs for the audience.

Programmers in Norway were SUPER happy with the new Delphi for iOS release!

Just a moment ago I was presenting online with Stephen Ball on the weekly "Developer Direct" webinar. It was a big fun! I have prepared a demo of a Delphi SOAP service that provides regular expressions functionality to clients written in Delphi XE4 and compiled from the same source code to Windows, Mac OSX and iOS!

"Developer Direct" webinars are big fun. We are now running Season 4 and it was Episode 2. Every Friday, 11am Amsterdam time (10am UK), for about an hour. It is free and funny. Register today! It is also possible to join the DevDirect webinars in the US/Canada timezone and they are presented by David I, Anders Ohlsson and Al Manarino!

Here is the agenda for upcoming Fridays:

  1. April 19, 2013 Welcome to the New Season - News, RAD iOS App Dev Now!
  2. April 26, 2013 The Multi-device Enterprise (Using Enterprise Data in Your Mobile Strategy)
  3. May 3, 2013 From Desktop to Multi-device User Experience and Beyond
  4. May 10, 2013 What’s Real Native and Why Does Real Native Matter?
  5. May 17, 2013 Multi-device Development - From Data to Business Information
  6. May 24, 2013 Agile Development
  7. May 31, 2013 Building Your Model To Scale
  8. June 7, 2013 Multi-device Data Visualization, Engineering and Scientific Graphics
  9. June 14, 2013 Season Finale - Bringing it all together!

Register here for Developer Direct in Europe and Asia and here for the US/Canada!

Warsaw, Brno and David I in Europe

What a week it was! Travelling and showing Delphi for iOS to developers in different countries. Very rewarding experience. This product and technology are going to rock when they are released. Delphi (and C++Builder) developers are so super happy to see the technology that supports what is hot on the market (iOS!) without loosing its advantage to alternative developer tools (Rapid Application Development!).

Warsaw, Poland, March 14th, 2013 - 90 attendees at the event

Brno, Czech Republic, March 12th, 2013 - 100 attendees

Over the weekend I had the pleasure to spend some time with David I in Amsterdam.
Below is David I as part of the 3D version of Rembrandt’s famous "Night Watch" painting:-)

Delphi for iOS preview in Istanbul

I’m just back from Turkey and co-presenting on live "Developer Direct" webinar with David I, Stephen Ball, Jason Vokes and Marco Cantu. We are doing DataSnap live demos. It is a very cool way of spending your Friday day work:-)

Yesterday I was presenting upcoming Delphi for iOS support to 150 enthusiastic Delphi and C++Builder developers gathered in Istanbul. I was building all kinds of iOS applications with Delphi, including DataSnap clients. I will show them next week on the "Developer Direct" webinar!

Next week I’m off to Czech Republic and Poland!

Delphi is adult!

Today is 18th birthday of Delphi, the Valentine’s Day. Delphi is LOVE!

Now I’m using Delphi on Mac machine:-)

My Delphi books and boxes:-)

Delphi is mature and is no longer about Windows and desktop only! This is adult stuff:-)

Let’s celebrate! Long live Delphi!!!

"Developer Direct - Season 3" starts Friday, Feb 1st!

"Developer Direct" webinars are back in town! Season 3 starts in a week from now on Friday, February 1st!

Don’t miss the opportunity to have some fun and join me, Stephen, Jason and Jon for two hours of interactive online sessions every Friday at 11am Amsterdam time (10am UK, 1pm Moscow, 2:30pm Mumbai/Bangalore). The conversation is relaxed and there is always lots of laughing and fun!

The registration form is live and make sure to register for these free online events here: http://embt.co/developerdirect-3

Is there anything you would like to hear or see? Any particular demo or topic?

You can join the chat on Twitter at http://www.twitter.com/embtddirect/ and add #embtdd or simply email us directly anytime at developerdirect.online@embarcadero.com

Delphi Labs: DataSnap code samples updated to XE3

It seems that it is my very first post in the New Year 2013, so I wish You all the best and great time writing all kinds of programs. I’m sure it is going to be a great year for Delphi and Marco is predicting it as well, especially that next month Delphi is going to become adult!

Two years ago I have put together a serie of Delphi DataSnap tutorials called "Delphi Labs" and many people found it useful, so I thought that it is a high time to at least update code samples for every tutorial so they compile with the latest version of Delphi which is right now XE3.

Below is the list of updated Delphi Labs DataSnap episodes, with information about changes made to the original XE code samples and the actual link to CodeCentral. In order to keep things simple I have reuploaded every demo source code to the same CodeCentral URL, so links to code remain the same. Inside every zip file there are two top level folders: "XE" for original files and "XE3" for updated source code.

You can find the master page with all DelphiLabs DataSnap XE tutorials at www.embarcadero.com/rad-in-action/delphi-labs

Episode 01: Simple Calculator Servicevideo, whitepaper, source code

Both server and client projects compile fine, however if you run the server or the client, you would get "EIPAbstractError" exception with "No peer with the interface with guid [...] has been registered".

Where is this error coming from? In the example we are using DataSnap TCP/IP connectivity, which is internally implemented using Indy framework. The Indy implementation has changed between XE and XE3 versions, so there are little changes needed. On the server it is necessary to add "IPPeerServer" to the interface "uses" clause in the "ServerContainerUnit1" and on client we need to add "IPPeerClient" to the interface "uses" clause in the "ClientModuleUnit1". In fact the IDE can add these entries automatically. Just put the cursor somewhere in the "uses" clause of these two files and when you press "Enter" correct entries will be added for You! Cool:-)

I have also added a project group file "SimpleCalcGrp" and updated forms’ captions to "XE3".

Episode 02: Multitier Database Application - video, whitepaper, source code

Two changes to source code here. One is the same as in Episode 01 and involves adding missing "IPPeerServer" and "IPPeerClient" units to "uses" clauses in the server and in the client project. The second change introduced was changing the database connection name in the TSQLConnection component on the server from "IBEMPLOYEE" to "EMPLOYEE". Delphi XE3 comes with a preconfigured "EMPLOYEE" connection to a sample InterBase database, so you can just open the project group, build all, run server and then run client and it should work "as is". A true multitier database application!

Episode 03: Server Methods Lifecyclevideo 1 and video 2whitepapersource code

The third tutorial explores the different server methods instances lifecycle options. Understanding lifecycle of server side objects is critical to DataSnap architecture. I have just added missing "IPPeerServer" and "IPPeerClient" entries and updated forms’ captions and sizes. Below is a screenshot from a running demo with one server app and two clients invoking server methods on server objects with different lifecycle options set.

Episode 04: Testing DataSnap Server in Data Explorer - video, whitepaper, source code

Data Explorer has been completely redesigned in Delphi XE3 and is now much more powerful. The demo contains just a server project, which listens to clients on TCP/IP port 211 and HTTP port 8080.

The only changes to original XE source code was to add "IPPeerServer" unit and updating form caption.

Episode 05: Authentication and Authorization - video 1 and video 2, whitepaper, source code

Standard changes. Adding "IPPeerServer" and "IPPeerClient" units plus form captions updated.

Episode 06: Transport Filters - video, whitepaper, source code

Beyond standard changes including adding "IPPeerServer" and "IPPeerClient" units and modifying forms’ captions, I have also added one line to the client "OnClick" event handler to make sure that the connection is open before calling a server method.

with SQLConnection1 do if not Connected then Open;

Transport filters is a very elegant feature!

Episode 07: REST Web Application - video, whitepaper, source code

The "REST Web Application" is a walk through different parts of a standard Delphi REST app generated with the wizard with default options. In this tutorial the "Add" server method is implemented and dynamically generated JavaScript proxies are shown.

Between XE and XE3 there were some refactorings performed. One of them was moving "TDSSessionManager" class from "DSService" unit to "DataSnap.DSSession". As the consequence this is a change that has to be done to compile the XE version of DataSnap REST server application in XE3: to change the "uses" clause of the main form unit and replace "DSService" with "DataSnap.DSSession". That is the only change except for updating main form’s caption to "XE3".

Episode 08 (part 1): WebBroker jQuery Mobile "Boilerplate" - video 1 and video 2, whitepaper, source code

Next two episodes in the serie has been inspired by the presentation that I had to prepare for students in the University College of London (UCL). I wanted to do something new and interesting. This tutorial is not exactly DataSnap, it is more generic. DataSnap servers can be implemented as either standalone executables or hosted in a web server. "WebBroker" is the underlying technology of all web server project types in Delphi: "DataSnap REST Application", "DataSnap WebBroker Application", "SOAP Server Application" or just a custom HTTP "Web Server Application".

Two years ago jQuery Mobile was not as widely known as it is today, but it definitely had its already high "coolness" factor. In this demo I have combined "jQuery Mobile Boilerplate" with a generic Delphi WebBroker application as a starting point to the next tutorial.

The Delphi XE version of the demo compiles and works with no modifications in XE3, however two years ago jQueryMobile framework was still in beta and today the latest stable version is "1.2.0 Final". I have updated the demo project to reference the latest jQuery 1.8.2 and jQuery Mobile 1.2.0.

Episode 08 (part 2): jQuery Mobile Web Frontend - video 1, video 2, video 3, whitepaper, source code

This is logically the second part of "WebBroker jQueryMobile Boilerplate" demo. Now that we know how to setup a generic Delphi WebBroker HTTP server application to serve jQuery Mobile markup, we can go one step further and display data from a database instead of a static content.

This episode demonstrates how generate data-driven jQueryMobile web pages generating HTML markup dynamically in Delphi code.

The demo source code contains a project group with two projects. The first project is a DataSnap standalone server ("DataServerApp") with a database connection and architecture very similar to the server from the "Episode 2: Multitier Database Application". The second project acts as a client to it and is an extended version of the jQuery Mobile Boilerplate project from the previous episode.

In the the data server project it was necessary to add "IPPeerServer" unit to the "uses" clause of the "ServerContainerUnit2" file and also to change the "ConnectionName" of the SQL connection component to "EMPLOYEE" (the same changes as in Episode 2).

The changes to the client webbroker project ("jQueryMobileApp") involved updating the reference to jQueryMobile version used in the same way as in the "boilerplate" episode previously.

I have also updated the "About" page markup embedded in Delphi code to display up-to-date information about Delphi, InterBase and jQueryMobile versions used.

The demo app has been updated and reuploaded to Amazon EC2 demo instance. Check it out yourself on your mobile device web browser at http://79.125.25.31:8080

This demo shows how to generate jQuery read-only markup. If you are interested how to use DataSnap REST and jQuery Mobile for interactive web pages, check out my later blog post here.

Episode 09: DataSnap Server implemented as Windows Service - video, whitepaper, source code

The only change needed to update this demo was a standard addition of "IPPeerServer" unit to the server container unit. The project compiles fine and installs and run with no problems under Windows 8.

Episode 10: Passing "Plain Old Delphi Objects" - video, whitepaper, source code

Standard changes only: added "IPPeerServer" and "IPPeerClient" units, created a project group for convinience and also updated form captions.

Episode 11: Callbacks - video 1, video 2, video 3, whitepaper, source code

This is the last episode from the original DelphiLabs DataSnap XE serie and it only touches on one of the most powerful features of DataSnap - callbacks.

In the server project I have only changed the caption of the form and added "IPPeerServer" in a standard way.

The client project is slightly more involving. If you put a cursor inside the "uses" clause of the "FormClientUnit" you will see that not only "IPPeerClient" is added, but also "IPPeerServer". That is OK. In this scenario the server project acts only as a bridge and "clients" are both sending and receiving messages, so they are acting as both clients and servers. It is also necessary to add "DataSnap.DSSession" unit to the "uses" clause, because "TDSTunnelSession" class that is used in code has been moved there. The last change was to add the code to open "SQLConnection1" in the form’s OnCreate event.

When I was reviewing all these episodes - I have realized that it was not only a lot of work, but also great fun to explore this super elegant technology, so…

Delphi Labs will return!

Hit the road, Jack! Go RAD Studio XE3!

Blog is very much like a "log". Place to make a note of something that heppened. I like to document here different events that I’m presenting on or at least participating in. Programming events I mean…
The more events there is and the more frequent they get, it is more and more difficult to do it in a timely fashion. Today we have done with Stephen and Jon the last Developer Direct live webinar and I have realised that I have not been documenting my live events in the last month or so!

The last quarter was all about RAD Studio XE3 and specifically C++Builder and Delphi FireMonkey apps and also HTML5 Builder web and mobile apps.

When going through "Pictures" folder on my MacBook, it feels like a crazy ride. "Hit the road, Jack!". Again…

In the reversed order:-)

Dec 13, 2012 - Hoofddorp, The Netherlands
Yesterday I was doing my first live C++ presentation ever, demonstrating the new Embarcadero Windows 64-bit compiler, based on the new generation LLVM and CLANG architecture. The audience, C++ developers only, enjoyed the new C++11 language features like "auto" keyword, but main focus was on FireMonkey cross-platform architecture. The was a good fun!

Dec 10-12, 2012 - CodeRage 7 virtual conference
This week is all about C++! From Monday to Wednesday there was an excellent virtual CodeRage 7 conference and I had a pleasure to host two sessions: C++ DataSnap and C++ FireMonkey 3D programming. I was always focusing on Delphi, but C++ programming is not that much different. On the first CodeRage day there was a live interview with Bjarne Stroustrup, the father of C++ language. That was a very interesting session. Wednesday sessions with C++Builder R&D engineers were also super cool.

Nov 28, 2012 - Sofia, Bulgary
That was a very well attended and organized Delphi and FireMonkey event. Lots of questions and big interest in the technology. Really nice!

Nov 27, 2012 - Bucharest, Romania
The was my second time to present in Bucharest. Very good atmosphere and in-depth technical questions.

Nov 22, 2012 - BE-DELPHI conference, Edegem, Belgium
On BE-DELPHI conference I had pleasure to copresent on the opening keynote with Delphi Product Manager, Marco Cantu!

Nov 21, 2012 - Zwolle, The Netherlands
That was a very nice live session about Delphi and FireMonkey co-organized with DTS, one of Embarcadero partners in the Netherlands. We also had a guest speaker André Mussche from DTS who was presenting some real life Delphi code that he is using in real customer implementation. Very interesting to see practical usage of advanced concepts like generics, custom attributes, ORM-engines and proper separation of tiers.

Nov 15, 2012 - Katowice, Poland
The event in Katowice was really good. I have been presenting Delphi, FireMonkey and HTML5 Builder with Bogdan Polak, from BSC Polska, our partner in Poland. Bogdan is really good technically, but he is also a great presenter!

Nov 13, 2012 - Brno, Czech Republic
The FireMonkey and HTML5 Builder in Brno was organized in the ZOO. One of the main attractions was basiliscus. He was not moving much, probably very intrigued with native compilation for multiple operating systems from the very same codebase!

Green peafowl was also trying to join the presentation:-)

Nov 6-8, 2012 - Delphi CodeRage 7 virtual conference
The biggest online Delphi event in the year. I had two sessions: Delphi XE3 DataSnap and Delphi XE3 FireMonkey 3D development. All the recordings from this conference are available now for playback. This is one of the biggest learning resources for RAD Studio XE3!

Hit the road, Jack! Go RAD Studio XE3!

C++ CodeRage7: My FireMonkey 3D session demo source code and slides

My second C++ CodeRage7 session today is happening right now! This time I’m demonstrating basics of using C++Builder XE3 for building interactive, cross-platform Embarcadero CodeCentral slides and source code of demos presented during the session.

There are four demo projects there. The first one is a C++Builder version of HTML5 Builder "planets" JavaScript planets demo. The beauty of FireMonkey 3D programming is that you do not need to write any code to get a very nice visualisation of Earth and Mars spinning in the deep space… And you can compile it to Windows and to Mac OS from the very same source code… And there are events on 3D objects, so it is easy to turn the visualisation into a fully interactive 3D user interface! That’s a big deal!

The second demo demonstrates how to use 2D controls in 3D form using layer 3D component.

The third demo ("Arrows3D") is about the 3D coordinate system in FireMonkey and how move camera in the 3D space with a mouse to make the application more interactive.

The last demo shows how to use "TModel3D" component for importing 3D data created in external 3D modelling software, like "3D Studio MAX", and using it inside of C++Builder XE3 FireMonkey application!

All demos and slides from the sessions are available for download from Embarcadero CodeCentral.

Bad Behavior has blocked 2 access attempts in the last 7 days.

Close