- RAD Studio Recharge Program
- Embarcadero to Present at Wearables DevCon Conference with Google Glass and EEG Neuroheadset
- Delphi Blogs of the (Last) Week #7
- ZWave Home Automation - Programming Devices and Gadgets with RAD Studio
- Barcode Scanner on Android and iOS - Programming Devices and Gadgets with RAD Studio
- My Views on Mobile World Congress 2014 (or Nokia is doing Android)
- Emotive EPOC - Programming Devices and Gadgets with RAD Studio
- Delphi Blogs of the Week #6
- LEAP Motion - Programming Devices and Gadgets with RAD Studio
- Interfacing with Microsoft Kinect For Windows from Delphi and RAD Studio Application
- Webinar on Developing for iOS in C++ (with JT)
- Delphi (and C++) Blogs of the Week #5
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.