- Hotfix 6 for RAD Studio, Delphi, C++Builder XE5 Update 2 is now available
- Programming Devices and Gadgets with RAD Studio Video Series
- [OffTopic] Oculus, Glass, and ViewMaster
- Delphi Blogs of the Week #9
- RAD Studio Webinar On-Demand Library
- Hotfix Coming for iOS 7.1 Simulator Problems with RAD Studio XE5
- Hotfix 5 for RAD Studio, Delphi, C++Builder XE5 Update 2 is now available
- Mobile Apps Update Rate
- Back from Mobile World Congress 2014? Start to build your next great app NOW with Embarcadero!
- Migrate Legacy Windows XP Applications Now
- Follow your favorite Embarcadero tools on Social Media
- Delphi Blogs of the (Last) Week #8
I got these two posts in sequence in Twitter, and it is a coincidence as they came from two different sources. Too funny, so I had to share this.
Notice: the one BELOW is the first to read, as it is an inverted temporal sequence. And this is a real snapshop, I'm not making this up. Retweeted by completely different people at the same time.
(PS. For those unaware, Facebook bought Oculus -- big virtual reality devices -- for a ton of money).
I skipped last week (as there wasn't much content), while this was a week with quite some interesting material.Embarcadero Press Coverage
New Frech iOS app (for hiring Delphi developers!) discussed at blogs.embarcadero.com/tlaborde/index.php/2014/03/19/delphi-staff-lance-sa-nouvelle-application-pour-ios/
Music search (with a new REST service) by Sarina at blogs.embarcadero.com/sarinadupont/2014/03/21/feeling-the-beat-with-rest/Delphi Online
Impressive collections of all videos of CodeRage conferences, webinars, online events, online training and other events all grouped at edn.embarcadero.com/article/43717. The page is called RAD Studio Webinar On-Demand Library and lists (directly and indirectly) hundreds of technical videos on Delphi and C++Builder. Kudos to the team for putting this together.Tech
One truly technical blog post, mason asking for live leaks detection. Interesting idea. See tech.turbu-rpg.com/486/wanted-live-leak-detection-for-fastmm
That's all for the week. During the next I'll be in the office, so likley little time for blogging.
RAD Studio XE5 has problems running apps on the recently released iOS 7.1 simulator, while targeting an updated iOS 7.1 device seems to work fine (I haven't done it myself). The RAD Studio team had tested beta versions of 7.1 and everything was working smoothly, but in the final release of Xcode 5.1 Apple broke our integration, based on PAServer. A fix has been developed and is currently being tested internally.
We expect to make this fix available soon (meaning within a few days, likely next week), depending on the current testing. It will be a PAServer update, a hotfix freely available to XE5 Update 2 users.
Compared to the slow uptake of desktop applications, mobile users update very fast, due to store management and notifications. This is what I noticed looking to the migration rate data of my mobile app. True, this is a single data point, and not a statistical analysis, but I'd expect this to be rather standard.
The graph below (for My Mini Figures Android app) shows the current users for each of the versions of the application. The green area is the update to the new release. As you can see, out of the almost 30,000 active users (users with the app installed) after a week of the release of an update, about 25,000 moved to the new version. That is an impressive rate to me, clearly showing how different this world is form the classic desktop one.
One of the drivers of my webinar next week on "Modernize Your Windows Applications" is the end of support for Windows XP, now less than a month away. What is that, and how is it relevant to Delphi developers?
Windows XP End-Of-Support on April 8th
As you certainly know, there is less than a month of support for Windows XP. After that date, the company is not going to release any new fix, even in case of a critical bug malware could exploit. So keeping those Windows XP boxes running is far from ideal, particularly in a business environment. You can read more (from Microsoft) on windows.microsoft.com/en-US/windows/end-support-help. A really nice resource is the dedicated site called amirunningxp.com/. Not sure you have to ask a web site which operating system you have, but that's another story. Nicely enough, if I go there, it tells me I'm not running XP. In fact, I'm running a Mac.Delphi and C++Builder Offers Smooth Migration
Delphi and C++ Builder offer a very smooth migration off Windows XP. If you take an old application (like those written with a single digit versions like Delphi 6 or C++Builder 7), make sure strings management is Unicode complaint, double check your file system usage (so that the application is UAC compliant), you can recompile with a newer version of RAD Studio, like XE5. Truly, there might be third party components or some low-level code to deal with, but the migration is relatively smooth...and infinitive smoother than having to rewrite in a different programming language and with a different component library.
By rebuilding in newer versions of RAD Studio you gain themes support (and a more integrated UI), some system dialogs redirected to the latest version in Windows 7 or 8, migration to some newer APIs, and a large set of fixes and enhancements. And you can often rebuild your applications as native 64bit Windows applications.
The advantage of this move is also that it will let you leverage new features for your VCL applications (without having to migrate to FireMonkey, which is nice for multi-device but certainly not required for Windows). You can easily take advantage of VCL styles, adopt the Modern UI (Windows 8) look and feel, gain full Unicode support, embrace new database access and web service access libraries.
Speaking of data access libraries, if you have existing old applications written in Delphi or C++Builder it is likely they'd be build using the BDE. Now if that engine is still technically in the product (but not for long) we fully recommend migrating away from the BDE to FireDAC as a very significant part of your migration effort.A Great Opportunity for Developers
Now how is this different from migrating from Windows XP and to newer versions of RAD Studio 6 months ago or a year ago? The difference is that today if your users are running on XP they will be pushed to migrate, and might be more open to invest a little extra money to clean up and move to Windows 8 some of those old legacy business applications they have. In other words, Windows XP migration might become a very good excuse for you as a developer to sell the full migration and modernization story, and be able to sell this work to your customers (rather than having to do it as part of normal support work).
Like the mythical millennium bug, or the Euro switch (for us in Europe), the XP end-of-life is getting a lot of media attention, with the extra push (this time) of a large Microsoft advertising campaign. This gives the opportunity to all Windows developers to get back to their customers and offer them something new. Which is what we are also doing with those Delphi and C++Builder developers still stuck on older versions.Webinar Next Week, Amnesty Offer This Month
Not only we are doing this effort in terms of marketing and with next week webinar (sign up on forms.embarcadero.com/ModernWindowsApps3-19 ), but we are also offering an upgrade amnesty offering all RAD Studio old timers a great chance to upgrade to XE5: www.embarcadero.com/radoffer . Don't miss the opportunity: attend the webinar and buy XE5 before the offer expires at the end of March.
Another week gone by, and what a week of Delphi and Embarcadero announcements, beside blogs.Announcements: Roadmap, Recharge, Appmethod
Let me start with the announcements:
- A much updated RAD Studio (Delphi and C++Builder) roadmap has been posted at edn.embarcadero.com/article/43677 while a short comment is on my blog at blog.marcocantu.com/blog/2014_march_delphi_cpp_roadmap.html
- RAD Studio customers have a new way to stay up-to-date with their license, the Recharge program. Buy XE5 now to get ready for this new deal as explained at www.embarcadero.com/products/rad-studio/recharge
- Embarcadero announced Appmethod (a new mobile-centric development tool, a companion to RAD Studio). The FAQ for RAD developers is at www.embarcadero.com/kr/products/rad-studio/appmethod-faq .
Here is a round of notable blog posts:
- Nokia X development with RAD Studio by Anil at anilmembt.wordpress.com/2014/03/07/nokia-x-and-rad-studio-xe5-deployment-made-easy/. I did it two weeks ago, should have my app public. BTW, the Nokia X is quite nice, and now my daughter's phone.
- For the programming devices series, see how you can control LED bulbs at edn.embarcadero.com/article/43616
- See how David I's IDE can connect to phones, tablets, and glasses at blogs.embarcadero.com/davidi/2014/03/05/43619
- Nice tip on Android settings by Jim at delphi.org/2014/03/setting-android-settings/
- A "flappy bird" clone in Delphi at blogs.embarcadero.com/davidi/2014/03/02/43616
- And a non-mobile blog post about Word automation at francois-piette.blogspot.co.uk/2014/02/automate-word-document-print-using.html
Also, CodeRage 8 C++ sessions are now available, as explained by Tim at delphi-insider.blogspot.it/2014/03/coderage-8-delphi-and-cbuilder-sessions.html. That's all for the (past) week.
In two weeks I'll host an online webinar about modernizing Windows applications written with the VCL. Live events on a similar topic are ongoing in Europe, and I'm presenting one in Milan next week.The Online Webinar, March 19
The webinar is on Wednesday March 19th (the first day of spring), repeated 3 times during the day. You can sign up at forms.embarcadero.com/ModernWindowsApps3-19 . Topics include:
- Pure migration form XP and from old versions of Delphi (moving to Unicode, User Account Control, recompiling old Delphi applications)
- Modernizing applications with new styles, graphic support, following Windows 8 Modern UI, using new dialogs, and so on
- Upgrading data access to today's world, moving away from the BDE, using FireDAC, using cloud and REST servers, looking into Live Bindings
- Peering into what's new in the language
- Mentioning why, how, and when move to FMX.
As you can see from the list above, the webinar should take about 100 hours, but due to time constrains we will ZIP it into a single hour. Needless to say, it will be more of an overview, but with enough technical information to get you started. The goal is primarily developers who are still targeting Windows XP with old versions of Delphi, but the content is rich and wide enough that most Delphi developers will have a change to learn some new tricks.
If you know other Delphi developers stuck in the past, let them know about this webinar, as this is a way for them to understand how the product is evolving. And if you know developers still focused on Windows XP as a target platform, notice they have a month left to migrate their applications according to Microsoft.
Seriously, moving away from Windows XP is a very significant business requirement these days, worth your effort and worth your customers attention. But given this is a significant topic, I'll blog about it separately.Live Event in Milan Next Week
Finally, let me point out to an Italian event with a similar focus, a Delphi Live meeting in Milan, next Tuesday (March 11th), in the morning. Sign up at forms.embarcadero.com/EM14Q1ITDeveloperDirectLive (I'll be giving the session in Milan, but not the one in Rome, where Daniele Teti will be speaking). There are other similar sessions happening around Europe, like in Germany and Russia.
A RAD Studio roadmap for 2014 and beyond is available on the Embarcadero web site, in case you missed the announcement. Not that I want to add much, if not that we expect updating it more frequently and that not everything is set in stone. Also, the roadmap highlights the key features: There is much more we are working on right now that is not listed.
The official document is at edn.embarcadero.com/article/43677
Last week, Embarcadero has announced a new plan for selling updates of Delphi and C++Builder. The idea is to make it easier (and cheaper) for early adopters and loyal users. In summary, the idea is that the new RAD License Recharge Plan allows you to continuall y recharge your RAD Studio, Delphi or C++Builder license with every major release at an affordable License Recharge fee for each release.
The plan is called "Recharge Plan" and the concept is quite simple. Given we are currently working on a schedule of 2 releases a year for RAD Studio, we are going to start offering a special update price only from the previous version of the same product. This will cost half of the regular update price. Actually, it will be just a little less than half of the regular update price, as we want this to be the less expensive upgrade model.
You can read the details and a FAQ at www.embarcadero.com/products/rad-studio/recharge .
These are some scenarios:
- If Delphi XE5 (Professional with or without the various packs, Enterprise, or above), when we will release XE6, you'll be able to upgrade your license to XE6 at a special price (less than half of the regular update price from, say, XE4). Later, as we release another version, you'll be able to keep upgrading at a similar low price.
- By upgrading twice in a year, you'll pay less than if you skip a version and buy a regular update. And you'll benefit form having always the latest release available. In other words, early adopters and loyal users now have a good deal.
- If you are still not on XE5, you can go ahead and buy it now. When the next version comes out, you'll be able to recharge your license. If you stay on an older version, you'll have to pay for a full upgrade.
One important element is this is not just a one time offer, but a long term plan for the future, that will depend on the number of releases of RAD Studio in a single year. With a more predictable plan, you'll be able better plan your investments, even without moving to the pre-paid maintenance program (which remains available, if you prefer that model).
With the fast moving landscape in mobile platforms, we need to keep release cycles shorter, and we are trying to adapt the sales model to better serve this new approach. Hope you like the idea and get ready to recharge your licenses.
While I was looking to the mobile world, Delphi and C++Builder events kept happening and blog posts kept flowing:
- CodeRage 8 for C++ took place last week, replays will be coming soon
- Among the notable videos of the week, check Jim's YouTube video on using a barcode scanner with iOS and Android, at www.youtube.com/watch?v=yJI2HaNMReI (this is a section of the programming devices and sensors webinar he did with David I)
- Among this party open soruce libraries, DUnitX has a wizard (www.finalbuilder.com/Resources/Blogs/PostId/702/dunitx-has-a-wizard). Very interesting. Considering moving off DUnit in the Rad Studio IDE itelsef in the future.Thanks to a tweet by Nick, I found this delphipatterns.blog.com/. A site on patterns in Delphi. Nice read.
- Nice tiles in FireMonkey in last week Friday design by Thierry at blogs.embarcadero.com/tlaborde/index.php/2014/02/28/the-friday%E2%80%99s-design-7-firemonkey-desktop-design-with-delphi-xe5/
- A classic: Automatic Word printing. At francois-piette.blogspot.co.uk/2014/02/automate-word-document-print-using.html
- Othello 3D for mobile written by a Java developer... interesting idea by Stephen at blogs.embarcadero.com/stephenball/2014/03/02/java-student-builds-3d-othello-game-on-firemonkey-in-3-days/
Not as rich as other weeks, but I was very distracted (while traveling around Spain) and have likely missed a few.
I've spent the last few days in Barcelona for the Mobile World Congress, the world largest gathering of vendors mobile devices and services. My focus, of course, is that of a development tool product manager... so don't expect a review of the devices announced.A Huge Conference
The conference is huge. Number of attendees is really impressive. Some large companies had booths of hundred of square meters. Traffic and taxi lines where out of control. And, quite surprisingly, Internet connectivity was extremely poor... but, again these are not my main points. Event venue pictures are below.
Devices, Devices, Devices
Although my focus was not really on devices, I have to say I was impressed by a few:
- The coming Samsung 12" tablet has a great screen, quad-core CPU, and can have up to 4 apps on screen at the same time, each the size of a large phone app. I was really impressed by this, more than the new Galaxy phone (which seems nice but more expected).
- Samsung had also the new Gear watch (not not on display), with a twin light version for outdoor activity which looks interesting. Lots of "wearables", but most of them ugly, with limited battery, odd form factors. I guess only a few will survive.
- The Nokia X new phone to me is the best low-cost Android phone out there. It is so much better in terms of quality, speed, screen than Samsung and other vendors low-cost phones. Nokia knows how to build a phone, for sure. But given the importance of this phone, more about it later.
- HP is full speed into medium to high range phones and phablets. Don't ask them about Windows... they really want to differentiate themselves from being a "Microsoft hardware vendor"
- Intel primary focus seemed pushing the full Windows 8 (not RT) platform, showcasing many interesting and high quality tablets, with some very creative ways to fold the keyboard. Light enough, but extremely powerful compared to a regular tablet.
- Pens are back, aside using fingers. The fact you have more control on the actual position you click is a key reason. Not sure, though.
Here is an image and the specs of the new large screen Samsung device.
Which platforms are up and which are down? With Apple and iOS not at the center of the stage, it was Android all over, of course. And Android with ARM CPUs to a very large extent. The new Samsung 12" tablet is ARM only (unlike their current 10" device, which in some cases has an Intel CPU). Asus has an Intel tablet, that ships with an ARM emulator.
What about Windows phone? While it is true a few new vendors announced support for it (but we'll have to see if this turns into actual sales) the big news was about Nokia (soon-to-be-acquired by Microsoft) releasing 3 Android phones and announcing 2 more in the pipeline. As I mentioned above, for their price these seem to be the best Android phones out there. Nokia is not using Google Android, but its own customized versions, more or less like Amazon did with its Kindle Fire. So there will be a Nokia App Store for Android, it own maps, its own advertising and in-app payment and some more. On those phones there is no Google Play, and the search engine (not surprisingly) in Bing. Now the number of applications that can run on those phones is large... basically almost all Android apps that don't make use of Google Services.
This is the file system of the Nokia X phone:
Nokia, Android, and Microsoft
Officially, Nokia move has been "downplayed" as for emerging markets, only low cost devices, and so on. To me these are just excuses. A 5" device? The best value on the low-cost Android market can make wonders also in the first world. Which is were Samsung is selling in large volumes also those entry devices. Also, out of the Windows phones Nokia is selling mostly at the low end of the spectrum, so this is exactly a replacement offer. My personal idea is a top level Nokia Android phone with a great Nokia camera could have a huge impact.
It you don't trust my words read this piece on ZD Net, which I mostly agree with: www.zdnet.com/hello-ms-android-good-bye-windows-phone-7000026774/.
And if you think, this is just Nokia, nothing to do with Microsoft thing twice. Could have Nokia done this without Microsoft approval? How comes Skype (also owned by Microsoft) is pre-installed on the phone? How comes most of the services (search, remote storage) are from Microsoft, if the company things this project is a mistake? To me, if Microosft wants to have a foot in the devices and services world, they cannot to it form the "our operating system only) perspective. Not in todays, world.
At the development side, Nokia had a full day event to convince Android developers to support their app store, to the point they were giving out free phones in exchange for porting one single application. They claim Android developers will have a many new users for their apps, users previously confined on Windows. So this is how the Nokia Android (above) and Nokia Windows (below) developers areas looked like, in terms of interest:
I know, this is mainly an Android event --- but it is only because Android is so ubiquitous. Nokia also had a large green bus (Android green) focused on developers:
And, Finally, Embarcadero
So what does this mean for us at Embarcadero, and the developers who use our product. You can join the "same code base, new user base" slogan, given the majority of Delphi Android applications will run on the Nokia X phones. This is the 5 minutes experiments I did at the show, plan doing some more testing in the coming days. This is my (son) Google Play Minifigures app on a Nokia phone:
This is certainly great news. While we will see the implications for Windows Phone platform, to me if this was a small one, it looks like it will have an even more difficult times ahead. By the way, we had our own booth (for the first time), made some great contacts, and introduced RAD Studio to app developers who had never seen it, receiving a lot of positive feedback.
That's all form Barcelona. I'm still in Spain, but currently in Alicante.
An other weeks of blogs about Delphi and RAD Studio, while I'm in Barcelona (Spain) for the Mobile World Congress that kicks off tomorrow, and were Embarcadero has a booth to showcase its mobile development solution.
Some blogs posts during the past week:
- Pawel's Lazy Form Creation has similarities with my simple splash screen form, but he explains the idea in more details at blogs.embarcadero.com/pawelglowacki/2014/02/19/40191/
- Speaking of splash screens, there is a nie way to add a real one to your Android app by tweaking the manifest as you can read at www.fmxexpress.com/add-a-splash-screen-with-the-android-manifest-for-delphi-xe5-firemonkey-apps/. Not 100% sure if this work with older versions of Android, but certainly worth exploring (and adding to RAD Studio...)
- Another Friday design by Thierry at blogs.embarcadero.com/tlaborde/2014/02/20/fmxtime-mobile-application-developed-with-delphi-xe5/
- If you want to see how you can build a custom shared object (SO) library in C/C++ on Android and call it from Delphi, either learn Japanese or jump to Google translate pointing to blogs.embarcadero.com/teamj/2014/02/21/4270/ (Great post, sorry for the irony)
There has been a lot of discussion around Delphi content that was pulled off stackoverflow, including some on the Delphi IDE and language. Jim saved some at delphi.org/2014/02/hidden-features-in-the-delphi-object-pascal-language/. Some of these are indeed interesting... I guess I'll have to double check all of them for the book I'm writing. (Oh, did I just mention I'm writing a book? Yes, I did.)
The last link I wanted to refer you to is the "Delphi Migration Center" collection os resources at www.embarcadero.com/rad-in-action/migration-upgrade-center. If you have old Delphi code you plan moving to newer versions (and there are many reasons to do so, including moving off Windows XP before April) that is a good collection. In any case, I'm going to cover some of this in a March webinar. Stay tuned.
PS. Next week I'm in Barcelona, and later Alicante. If you do any C++ remember checking the C++ edition of CodeRage 8, starting Wednesday. And if you have friends who are C++ programmers, invite them to the free online conference. More C++Builder for iOS and all other platforms (beside Android, which is coming soon). The link is www.embarcadero.com/coderage. I have a session on DataSnap, similar to th one I did the for Delphi side of the event.
Tomorrow (Wednesday, 19 February 2014) Embarcadero is hosting an online webinar on the use of C++ (rather than the classic ObjectiveC) for iOS development. The webinar will be given by JT (Development Tools Product Manager at Embarcadero) at three different times during the day (for the different time zones around the world, 3pm Europe, 11am Pacific, 10 am Tokio next day). The title is:"iOS Application Development with C++Builder XE5".
You can register (for free) at forms.embarcadero.com/CPPiOSAppDev2-19. If you are a Delphi developer, but have friends who prefer C++, forward them this invite!
The main focus, as the title implies, is th new C++Builder for iOS, with ARC for C++ and other special features... but mostly now the primary iOS development tool based on the C++ language!
See you online tomorrow...
Another late post, summarizing last week blogs, given I was flying back home from California over the week end.Mobile Development
- Jim McKeeth on Google Glass at delphi.org/2014/02/revisiting-google-glass/
- 10 tips for professional Android app with Delphi at www.fmxexpress.com/ten-tips-for-creating-professional-android-apps-with-delphi-xe5-firemonkey/
- Auto-generate icon files at www.fmxexpress.com/auto-generate-all-icon-files-for-delphi-xe5-firemonkey-projects-on-android-and-ios/
- Sarina has an example of "pull-to-refresh" on iOS at blogs.embarcadero.com/sarinadupont/2014/02/10/pull-to-refresh-on-ios/
- Unit testing tools mentioned by Nick in his webinar, delphi.org/2014/02/delphi-unit-testing-tools/
- Raize components recent updates at www.raize.com/DevTools/RzComps/Updates.asp
- Jim on key Delphi and VCL libraries at delphi.org/2014/02/indispensable-delphi-libraries/
- New C++ Builder success story at blogs.embarcadero.com/davidi/2014/02/10/43585
- Saving sets in INI files by Zarko at zarko-gajic.iz.hr/preserving-set-type-values-in-ini-files-databases/
- Steve on creating InterBase databases on the fly with FireDAC at blogs.embarcadero.com/stephenball/2014/02/14/creating-an-interbase-database-on-the-fly-with-firedac/
- 23 developer skills... at blog.zeusprod.com/2014/02/twenty-three-evergreen-developer-skills.html
- Coding with SSD in mind (the second half of the article has direct tips) at codecapsule.com/2014/02/12/coding-for-ssds-part-6-a-summary-what-every-programmer-should-know-about-solid-state-drives/
That's all for this week.
It's Delphi Birthday today, given it was introduced on February 14th 1995. See some pictures from that day on www.marcocantu.com/delphibirth/The Invite to The Launch
Back to the Future
And the product is alive and kicking. Since the last birthday, Delphi was made available for two growing platforms, iOS and Android, so you can now write Delphi applications for well over 95% of the computers and mobile devices out there.
Not only Delphi now supports new platforms, but the Object Pascal language has tremendous features added over the recent years that you are badly missing if it you are still developing with an old version of the product. Now is a great time to migrate your VCL applications, taking advantage of all the new features, and bring your expertise to the mobile world with our single source, multi-device solution leveraging native compilers for all of the platforms we support, including the mobile ones.
As Delphi was a unique product when it was launched, it is a unique product today in the multi-device world we live in. For more information, jump to www.embarcadero.com/products/delphi.How the World Looked Back Then
How the Delphi World Looks Today
Another round, this time before the end of the week. Given I'm including also C++ content, it might make sense to change the title of the series to "RAD Studio". I'll figure out.Blog Posts
- David I on C++Builder XE5 3D app for iOS - rotating Earth and Mars, at blogs.embarcadero.com/davidi/2014/02/06/43528
- Jim on REST Debugger (and his nice extensions) at delphi.org/2014/02/xe5-rest-debugger-supercharged/
- The new FireMonkey multi resource bitmap editor presented by its developer at blogs.embarcadero.com/roschinspb/2014/02/03/videomultiresbitmap/
- Nice way to use the ListView in an Androd app (written in Turkey and explained at fmxexpress) on www.fmxexpress.com/display-an-rss-feed-with-a-tlistview-in-delphi-xe5-firemonkey-for-android/
- Actually a video on Delphi and Kinect on delphi.org/2014/02/connecting-to-the-kinect-for-windows-with-delphi-xe5/
- Rubick's Cube for Android (by Thierry) at https://play.google.com/store/apps/details?id=com.thierrylaborde.FmxRubiksCube (description on blogs.embarcadero.com/tlaborde/2014/02/07/rubiks-cube-application-online-event-le-dev-du-jeudi-episode-7/)
- Not sure if I already mentioned an Android Scrum Poker at https://play.google.com/store/apps/details?id=net.fibon.ScrumPoker.
And, finally, a case study on Digifront solution at www.embarcadero.com/products/digifort-case-study.
Two online events coming from Embarcadero.1. RAD in Action: Unit Testing in Delphi, by Nick Hodges
Next week Nick will host a webinar on unit testing in Delphi, covering also some advanced languages features and many related topics. Make sure you don't miss it.
It is on February 12, next Wednesday, on the 3 usual times of the day for different time zones. Signup (if you still haven't done so) at forms.embarcadero.com/DelphiUnitTesting2-12. Seems we'll have a packed virtual room!
2. CodeRage 8 for C++
The second event will be at the end of the month, and it is a 2 days online conference focused on C++, and in particular the new C++ iOS support offered in RAD Studio since Update 2 of XE5. If you have used C++Builder in the past, this is the event for you. If you are a C++ developer, looking for a mobile solution, this is also an event for you. For information refer to www.embarcadero.com/coderage . The event is on Feb 25th and 26th. I should be giving a DataSnap session.
Over the last week I bumped into data that was presented with a real twist. And more than once. Hence this rather unusual blog post for my blog.Mobile Phones: Android Wins, but Windows Grows Faster
I guess you've seen similar headlines, one of them is in this press release from Canalys, www.canalys.com/newsroom/android-80-smart-phones-shipped-2013. Look at this numbers of phones sold in the year
- Android: added 350 Millions, reaching almost 800 Million (and growing to 79%)
- iOS: added a few more millions, reaching 150 Millions phones sold (but decreasing percentage wise)
- Windows phones: added a few more millions, and sold 32 Millions phones
And (at least to some commenter) the winner is Microsoft for increasing their number of over 60% compared to the last year. But Android, that was already the best selling platform, increased its sales by 20 times more than Windows did, if you consider the number of devices. And in a note you read the Microsoft phones sales actually dropped in Q4.Microsoft Numbers
Microsoft recent financial number were discussed by the press world wide with a similar spin that is hard to believe. You probably read it. It is the online services like Azure and Office 365 that saved the quarter and are making big inroads. They are growing more than any other division. Yes, growing more, but only in percentage... in absolute value they are a fraction. Look at these numbers (taken from a rare balanced article, www.itwriting.com/blog/7982-microsoft-financials-record-revenue-consumer-sales-declining-in-drift-towards-enterprise.html):
- Revenues for commercial licensing (like Windows and Office for companies): almost 11 billions, earnings 10 billions (gained 751 millions)
- Revenues for the enterprise services 1.7 billions, earnings half a billion (gained 199 millions)
Not only Windows and Office traditional licensing is a huge business, but it is growing more in value than the online services are.First Conclusion
Trends and percentages matter, but in some cases the raw numbers are relevant. If I create my own device and next year sell 10 phones, out of 1 this year, I made a 1000% increase, but no one will care. Unless my marketing machine can put a good spin on it, of course.Second Conclusion
Android is growing in a crazy way, great we have a Delphi product for it. Windows phone is doing OK, but it is still very very small.
The Windows Enterprise business shows no slow down. Windows remains the main business platform, and we have a Delphi product for it. But all versions of Delphi also talk with Azure, just in case.
Got a little late this week with my weekly blog post summarizing blogs and news in the Delphi community (and given it is not great to blog on weekends... I'm here on Monday). Here it goes. And there is quite a lot.
Delphi Mobile and FireMonkey
- Answering a request form a customer, Steve puts the bible in an app, using InterBase: blogs.embarcadero.com/stephenball/2014/01/25/writing-a-book-with-firedac-interbase-iblite-visual-livebindings-and-more. Great story.
- The real story of migrating a ObjectiveC demo to FireMonkey at ridingdelphi.blogspot.com.es/2014/01/the-quest-to-migrate-ios-squarecam-app_3169.html
- Yaroslabv has links to nice tips... in Russian, at blogs.embarcadero.com/yaroslavbrovin/2014/01/28/tips_and_trics_in_firemonkey_1/
- Another design friday post by Thierry at blogs.embarcadero.com/tlaborde/2014/01/31/the-fridays-design-3-firemonkey-mobile-design-with-delphi-xe5/
- Planning a mobile vacation also by David I and also using a REST library at blogs.embarcadero.com/davidi/2014/02/02/43435
- And now for thr gadget series, Jim flies a drone form Delphi, video at www.youtube.com/watch
- Jim again on using a tool to convert more Android APIs, delphi.org/2014/01/every-android-api-for-delphi/
- David I turns my mobile REST client to C++, and adds features: blogs.embarcadero.com/davidi/2014/01/29/43317
FM and VCL Styles and More
- David I has a summary with lots of links: blogs.embarcadero.com/davidi/2014/01/27/43296/
- Sarina on styling, but a VCL application, for a change: blogs.embarcadero.com/sarinadupont/2014/01/27/customizing-vcl-styles/. Hint: Yes, we are doing VCL work!
- And a desktop application for managing light at blogs.embarcadero.com/davidi/2014/01/31/43390
- Dynamic arrays: delphiblog.twodesk.com/dynamic-arrays-how-they-work-and-how-to-use-them
I actually do have a few more posts noted, but they are worth some more room, so I'll blog about them separately.
Only few developers know that there was another hidden gem in the Update 2 of Delphi XE5 (and RAD Studio and C++Builder), namely a new unit to help you working with DataSnap REST servers and FireDAC datasets, both on the client and on the server side. This is a short description of the key elements of this feature (which is rather complex, so I won't be able to cover it in full). Let me start by explaining the issue.
Suppose you want to create a DataSnap server in Delphi, exposing database tables. You basically have two approaches. The first is to rely on the good old IAppServer interface, exposing datasets using provider components and using ClientDataSet components on the client side. That's easy and powerful, but it cannot be used by REST servers, simply because it is a statefull interface (with calls like "give me the next data packet") and required a "heavy" session on the server for each connected user. Also, this is not FDMemTable friendly.
The second approach is to use a RESTfull approach, exposing datasets in your methods. Too bad this is not very efficient and offers no easy way to use an FDMemTable rather than a ClientDataSet on the client side. Plus all updates management has to be done by the developer. So what happens is that we are pushing customers towards two core technologies like DataSnap and FireDAC and we want to make it easier to use them together.
That's why in the Update 2 of XE5 we introduced a new unit, called Data.FireDACJSONReflect . This unit has many capabilities for:
- Returning one of more datasets in a single call, using an efficient format; multiple datasets in a single call are supported as this is more transactions friendly than doing multiple calls (particularly with databases with a strong implementation of read transactions, like InterBase)
- Easily caching those datasets in an FDMemTable object on the client, either creating a new structure or adding the result of multiple calls to the same in-memory table
- Sending back the cached updates (or deltas) for a memory dataset... or more than one in the same call, again for transaction support
- Easily resolving the update requests on the server
- Reading and writing data from the datasets and the deltas into custom formats
In this first, simple demo I'm going to show you the code required to send the data from the server to the client and read it on the client. In a future post I'll show an example of the updates management. On the server, rather than returning a TDataSet from a REST function, you have to return a new data type, TFDJSONDataSets. Here is the full code of such a function (using a local temporary table as database, to simplify the demo):function TServerMethods1.GetJSONData: TFDJSONDataSets; begin Result := TFDJSONDataSets.Create; if not FDMemTable1.Active then FDMemTable1.LoadFromFile('../../customer.fds') else FDMemTable1.Active := False; TFDJSONDataSetsWriter.ListAdd(Result, FDMemTable1); end;
As you the see the code creates an instance of the dataset list class, and adds a table to the list using a custom writer. In the same call, you can also give the dataset a name, to make it easier to refer to it in the client code (where you can access the list elements by position of by name).
The client code has the opposite appraoch, using a reader to populate back a memory table:var DSList: TFDJSONDataSets; begin FDMemTable1.Close; DSList := ClientModule1.ServerMethods1Client.GetJSONData; FDMemTable1.AppendData( TFDJSONDataSetsReader.GetListValue(DSList, 0)); FDMemTable1.Open; end;
In this case the code empties the memory table of any existing data before adding the new content (calling Close) and uses the first and only dataset, number 0. That's all it takes to transfer any FireDAC dataset on the server side to a FDMemTable on the client side (either desktop or mobile).
I hope this blog post serves as a starting point for your personal exploration if this new and rich unit. The only think I want to underline is that unlike when you return a plain dataset, the REST server return JSON data with mime encoded binary content, so this technique is meaningful only if RAD Studio is used on both ends. For any other client, just use the plain TDataSet JSON mapping.