We do not advertise or promote Digifort or its products. The company is listed to show - this is not "fake", not "photoshop", people / products are real. This technical interview will address the problem of mobile development through the eyes of a “classical destkop programmer” with a high degree of objectivity and impartiality. One cannot, for example, talk about designing bridges without analyzing key projects such as the Golden Gates Bridge. For Delphi users, such a project is undoubtedly a pioneer, it makes sense to get acquainted with the review.
This interview is transferable. Eric, being a technical specialist, nevertheless, responded in the classic "Western business" style and format, when it is not customary to scold and sharply criticize. He tried to praise Embarcadero and expressed his thanks in every way, so we had to add a “sugar-free” section in order to preserve the objectivity of the presentation.Today we will talk with a representative of
Digifort , whose name is Eric Fleming Bonilha (Eric Fleming Bonilha). He is a developer, and his company recently released a multi-platform mobile version of the system, which was written
here . We asked Eric to tell in more detail how, what, why he did (subject to know-how), and also why Delphi for Android / iOS.
')
Hello, Eric! So that we can understand the technical component of your project, tell us about the system as a whole. What is its purpose? Is this a real project?Hello. I represent the "software" company. Our main product solves problems in the field of IP-TV surveillance based on TCP / IP transmission of encoded images from analog or IP cameras. Record for the subsequent analysis is provided. Digifort technologies can be used as a basis for implementing video analysis for compliance with specified patterns to identify problem situations. For example, you can record images of car numbers, put them in a database, recognize cases of theft. Naturally, you can imagine a number of other scenarios for the use of our system. We have a mass of products that can be aggregated into a single solution to create closed solutions to security problems, including corporate needs.
When and why did you start using Delphi as a (primary) software development tool?We started using Delphi as the main tool in 2002. Then we considered Delphi the right choice for developing just such software. C ++ was complicated, compilation required considerable time, development of interfaces was accompanied by time-consuming procedures, developer productivity would not be high enough compared to, for example, Visual Bascic, but we already loved Pascal.
Initially, did you develop desktop solutions?Yes, all our products were created as "desktop" solutions. The main product is a “desktop” application, but it includes a server module, which is responsible for managing the entire system. There are also two client modules: one for administration (the workplace of the “administrator”) and for supervision (the workplace of the “operator”), each of which is “sharpened” for a specific user role.
What was the need to start mobile development?Nowadays, “fashion is” mobility ... Everyone needs mobile apps, because smartphones are very popular now. And we did not want to keep up with modern trends. Just a “desktop” system for monitoring is no longer sufficient, people need mobile systems. This is the natural evolution of needs. Our users want to monitor and control their mobile devices.
How much mobile applications enriched the system as a whole?Mobile implementation of our software is now a fundamental part of the system, without which we would lose a lot of users. Now we have two mobile products:
- Digifort Mobile Client;
- Digifort Mobile Camera.
Digifort Mobile Client allows you to conduct remote monitoring and camera control in an automated manner from a mobile phone. This is a very important extension of our system, which allows our users to continue to receive information from cameras, wherever they are. I can even assume that there is a risk of forming some kind of dependence! I myself sin by seeing from time to time what is happening in the office, even when I'm at home or on a business trip (using the 3g network). This product will be available for FREE download and will be part of our package solution.
Digifort's “mobile camera” is a new module that is in the process of being completed, and it will “turn” any iOS / Android device into a mobile camera! The image from a mobile phone will be transmitted live to our surveillance system. Impressive, isn't it? We announced this product two months ago and have since received a TON of requests. People just want to get this product precisely because of its functionality. Our main customer, who represents government structures (law enforcement and municipal authorities), has already appreciated the great potential of such applications.
How much did the implementation of the functional prototype of the mobile application require from you? Did the experience in the "classic" versions of Delphi help you?It took about 2 weeks to develop the “Mobile Camera” Digifort (not only the prototype, but also the full-featured version), including the mobile application and the server backend, as well as the screen configuration system.
“Mobile client” Digifort demanded 3 weeks, but we haven’t released it yet, because This will happen as part of a new total package solution.
We have been using Delphi for more than 13 years, and this, of course, helped us a lot. At first we were somewhat confused when we started using the “FM Platform” (FireMonkey), since she was new to us. But after a few days we got used to it and even fell in love. We liked how it is easy to achieve amazing effects in terms of creating interfaces (compared to VCL).
How is the functionality of the system between mobile and desktop clients?Mobile solutions complement the desktop. “Mobile client” is a remote client for the system, so we only included in it what is really needed on the mobile device. For example, viewing images from cameras and controlling them. We do not want to “overload” the application and “overfeed” users. Implemented what is guaranteed to be in demand and most often used.
“Mobile camera” is a separate product that aggregates in itself many useful functions of the system, but also gives new qualities. This is not just “dragging desktop functionality” into the world of mobility.
Do you have code that is shared on both desktop and mobile projects?Yes, we have certain key libraries with very useful features that we developed several years ago, and now we are using them intensively in development. We use some modules at the same time both in desktop and mobile projects, but I will not say that there are a lot of them.
Why is it important to have a mobile version of the system?I would not say that this is important. It is just NECESSARY. Users will not understand you if you do not provide them with a mobile application. In this case, the company is doomed to extinction.
Have you used any third-party components (if this is not a big secret)? Or cost standard? Perhaps they did something themselves?For mobile apps, no. We used only the components included in the basic delivery (Indy for communication over TCP / IP and the standard components of the “Flux FM” for everything else).
Did your developers have mobile development experience?Yes, a few years ago we created a Java-based client for Windows 6 smartphones. Then we had no experience with Java, and we spent 4 months and brought in a specially trained developer for this task (in order to understand everything and, finally, make ). It took a lot of time to learn Java 2ME and, of course, we were very tired out learning a new language / framework. I would like to have Delphi with the same functionality for mobile development!
There were big problems with that application, we could not accompany it, because A Java programmer was constantly required, and the specialist who taught us had already left the company. Since Windows 6 did not turn out to be particularly popular in those years, we just “froze” the project, although this application still works. We managed to transfer it to Android, but it is far from ideal ...
About 2 years ago, one of our developers created a “native” iPhone application using Objective-C (called iDigifort). The story was about the same. A lot of time spent on learning a new language / framework. Again, it took 4 months to learn and understand ... and then again get a bunch of problems. Main of them: we did not have support for Android, which over the past 2 years has become mega-popular ...
What advantages did you get by choosing Delphi for mobile development?To be honest, I have long dreamed of such a version of Delphi, so that with it I could easily develop mobile applications. My dreams came true with XE5.
After purchasing the XE5, we decided to try using this version as the main version. Having rejected skepticism, we plunged into the new world of Platform FM (FireMonkey). We realized how easy it is to make beautiful user interfaces. All these "bows and ryushechki", which modern "mobile users" dream of. These possibilities seemed very powerful to us (compared to how difficult it was to make a beautiful and bright instrument in the past with VCL).
Thus, we consulted and decided to leave the development of a remote client on Objective-C for iPhone and try to do everything on the basis of a single code, compiling applications for Android and iOS. This allowed us to develop products for both “desktop” and “mobile” applications as a team, and we did not have to share projects between individual teams.
It worked ... All our users who have already started testing the new versions of the Digifort Mobile client, made in XE5, have sent us very positive feedback. In addition to the new functionality, they highlighted the beautiful appearance and user-friendly interface. It worked really well for us.
As for me personally, the main thing for me is the ability to quickly create mobile applications in Delphi XE5 and compile them for the main platforms (our users do not ask about Windows Phone yet, the same can be said about Blackberry). For the time being we manage a single team, but we cover various platforms. When we add a new feature, it appears for all supported platforms. We really save money and produce a product faster !!!

“Sugar-free” Q & A session
How did you manage to make such a beautiful “list” in your interface?Yes, the list with us was clearly a success ... At first we wanted to use TListView or TListBox, but I have a very pretentious attitude towards the interfaces that I do. I created my own! I used TVertScrollBox to place objects, and each element represents an object of a class that I inherited from TObject. Then I “manually” set the position of each item in the list. I draw the elements by redefining the Paint procedure, where I draw an Icon object like “Camera”, “Alarm” or “Server”) and “Favorite star”. For the text and initially used the procedure of removing the text on the "canvas", but it worked slowly (it was felt at the "scrolling"), so I replaced it with TLabel, so I have 2 TLabel components on the element.
Initially, the video showed the old interface, and then I changed it to a more beautiful version. I made such an “intricate” fill that can be seen on screen shots. Each element is translucent, they are painted with a “zebra box”, and if you start moving your hands, they will overlap very nicely!
As you guessed, beautiful interfaces for me - everything. But it is very easy in the "Platform FM". I use PNG picture transparency to get the interface I need. Now for me there are no problems at all.
What were the main difficulties in using the “Platform FM” (formerly FireMonkey)?At first, everything seemed completely new, but we quickly got used to the new properties and how the platform works. Of course, I dug out and posted a few errors. Also, some effects, such as “shadow”, for some reason did not work on the Samsung S4 (also posted), but simply turned off the effects of the “shadow” type and replaced them with already PNG-pictures with shadows, which also made my application more productive .
The main difficulty was for me the ARC mechanism. It seems like he should simplify the life of developers, but at times he just complicated my life ... Still, I used to manage the life of my objects myself ...
What part of the Delphi XE5 requires more attention from Embarcadero?I would not refuse to see further improvements in the “Platform FM”. We very successfully implemented our mobile applications, but in some places we had to solve the problems by patches. I also want the “mobile” compiler to work as fast as the “classic” under Win32.
How do you solve the application size problem?Yes, I'm somehow not particularly puzzled by the size of the application ... For Android, the size is about 7 MB. For iOS - 20 MB ... I don’t think this is in any way conflicting with the concept of “full-scale ready application”. It is noticed that the file size does not increase significantly when adding new features ... I think this is due to the fact that "Platform FM" and RTL are compiled into applications? So?
We use a lot of pictures. Of course, you should try to make them small.
Are there any performance problems compared to applications created in specialized single-platform environments (Xcode, Java)?Frankly, on modern and fast phones, such as the iPhone 4S, iPhone 5, Samsung S2, S3, S4 ... everything “flies”. For top models and the latest generation of devices, everything is fine. But for the more "ancient" I am less optimistic.
Of course, applications run slower compared to specialized single-platform tools (Xcoide for iOS and Java for Android), but we managed to ensure such performance that the user cannot distinguish in which environment the application is made. At least with regard to the "Mobile client" and "Mobile Camera" - users have never complained about performance. But if you earn a little more “Platform FM”, then it is guaranteed to be indistinguishable from special single-platform tools.
What could you advise in terms of improving Delphi / C ++ Builder?I like where Delphi is developing ... Developing for iOS and Android based on a single code - this has been my dream for many years. Now I have such opportunities, and I am very glad that Delphi chose it many years ago.
Now I would like to see constant improvements of the “Platform FM” exactly as a platform in the form of regular updates. And, as I said, I want to have a faster mobile compiler.
Please show me something else. Gelatin screenshots. Better to see once.No problem at all.
This is the so-called “virtual matrix” as a function. The user makes a "long press", and a list of monitors appears on the screen (yes, these black rectangles) in animated mode (of course, this "show" needs to be seen in dynamics, especially when scrolling). And then you can literally “plow” the image onto a specific selected monitor!

If a PTZ camera is connected, it can be controlled from a mobile application.

You can use the control "type joystick."

This is how the screen looks when displaying images from three cameras simultaneously.

As always, in the end - the settings screen.
Thanks, Eric! You are very pleased with all of us with your demo and screen shots, as well as the very fact that you have made such beautiful and functional applications. I think your example will inspire all Delphi developers to at least try mobile development. But in any case, now we have someone to focus on. Good luck!