Posts in Embarcadero

Push Notifications and Aggressive Power Management on Android

February 20th, 2018 Posted by Embarcadero, Mobile No Comment yet

If you’ve done much mobile development, you’ll know that what happens to your app when you switch away from it is very much at the mercy of the OS. While this is true on the desktop and the server as well, on mobile the OS is very focussed on maximising battery life, and so will be much more restrictive about background activity.

For the most part this is not such a big problem, once you’re aware of it. Pawel wrote an article awhile ago about responding to app lifecycle events, so that you can know when the OS is about to put your app to sleep, wake it back up again, etc. You can also create Services on Android to have longer running processes that survive separately to the app. And of course, this is why we have Push Notifications, so that the OS can start the correct application when it receives a notification, even if that application is not currently running.

Or at least that’s how it’s meant to work. (more…)

RAD Studio 10.2.2 Hotfix Released

February 20th, 2018 Posted by Embarcadero, News No Comment yet

Last week, Embarcadero released a patch for Tokyo 10.2.2, focused on Android and RTL improvements. However some users experienced some installation issues with that hotfix, so it was taken down.

The hotfix has now been re-released, so we would encourage all our RAD Studio customers to review the issues addressed to see if they affect you.

The hotfix can be downloaded here, and Marco has posted additional details here.

Update Subscriptions and the End of Upgrades

February 13th, 2018 Posted by CodeInsightTV, Embarcadero, News 2 comments

We’ve had a lot of questions from customers since Malcolm posted his article about Embarcadero’s planned changes to their Upgrade versions. So many in fact, that we asked him to record a short video answering the most common ones.

So, if you’re wondering:

  • What’s an Update Subscription?
  • What happens to my licenses if I don’t renew?
  • Am I eligible to upgrade?
  • Can I upgrade from Delphi 1?
  • Does he really wave his hands around that much when he talks?

then this is the video for you. (more…)

“Upgrading, but I need Raize Components”

February 5th, 2018 Posted by Embarcadero No Comment yet

With the Upgrade Amnesty underway, we’ve received this question a few times in the last week. After copying and pasting my answer a few times, I thought it would be easier if I wrote it up here.

So, you’ve upgraded but need to have access to Raize Components to support your existing projects?

No problem, they are freely available for registered users from GetIt, right from within the IDE.

Now, before you rush off to grab them, let me add that you possibly won’t find them. Bringing up GetIt inside the IDE (Tools | GetIt Package Manager) and searching for Raize will come up empty. (more…)

Embarcadero to End Upgrade Editions

January 24th, 2018 Posted by Embarcadero, News 2 comments

Atanas Popov, the GM of Embarcadero, has just made an announcement about their plans to end the Upgrade versions of RAD Studio, Delphi and C++Builder. If you haven’t already read it I encourage you to do so, but I wanted to follow up with a post of our own.

When I first heard of this plan, I was more than a little surprised. Traditionally the Upgrade version was our biggest seller! Why would they end that?

However when I dug into the data over the last few years it became much less surprising. With our customer base now dominated by people on Update Subscription, the Upgrade versions are now a very low percentage of sales.

Probably the most common question at this point is “Does this affect me?”

(more…)

RAD Studio 10.2.2 Released

January 9th, 2018 Posted by Embarcadero, News No Comment yet

Embarcadero have released RAD Studio 10.2.2 (what would have been called Update 2 in the old days). They actually did this back in December, but I’ve held off posting as their was an issue with the initial release they needed to fix. Now that’s done (and we’re back from the New Year break) I thought I’d better post about it.

Where to get it?

Sarina has a post up with links to downloads for the ISO and Web Installers. Remember to retain your component settings when uninstalling 10.2, or use the Settings Migration Tool to export them and import them into 10.2.2.

What’s in it?

There’s a mixture of bug fixes and new features. The full list of publicly reported bugs that have been addressed is here.

The new features fall into a few major groups: (more…)

January Webinars

January 8th, 2018 Posted by Embarcadero, Events, News, Webinar No Comment yet

In our part of the world, people are still slowly making their way back from Summer holidays, but on the off chance that you’re looking for something to watch beside the pool, or maybe the fish aren’t biting, we have a number of webinars scheduled over the coming weeks. (more…)

Two of my favourite authors, Uncle Bob Martin and Steve McConnell, at CodeRage

November 3rd, 2017 Posted by Embarcadero No Comment yet

I’ve read lots of technical books over the years. Often I read them to get the immediate information I need then eventually get rid of them, as many technical books don’t age gracefully.

However, over the decades a few books have earned a permanent spot on my bookshelf. Books like Analysis Patterns by Martin Fowler, Domain Driven Design by Eric Evans and a few dozen others are the kind of books that keep teaching me things every time I re-read them. It’s as if each time I pick them up I’ve learned a little more since last time, and so I’m ready to understand more of the wisdom they contain.

I had a look through my shelf this morning and only two authors appear more than once: the aforementioned Martin Fowler and also Steve McConnell. (more…)

TNotifyEvent debouncing in Delphi

August 24th, 2017 Posted by Embarcadero No Comment yet

Every developer who works with UI handles a lot of user input. And it’s not a rare situation that we don’t need to handle every incoming event because there might be just too many of them.

Consider this example, a user fills an email field on “Sign up” form in some application which works with a REST API. We want to validate entered email before a user actually will click “Submit” button. To do it, we make a call to hypothetical “/email/validate” REST endpoint and display validation status on the UI, which enables a user to adjust his input until he finishes working with the form.

Some people type really fast, so we don’t want to make a REST call for every entered character. Lots of APIs have request limits and in order not to exceed them it’s necessary to “throttle” events emitted by fast user typing.

(more…)

Parallel (mis)Adventures

August 18th, 2017 Posted by Embarcadero 5 comments

In one of our customer projects, we had an Android app that was receiving broadcasts on a background thread (I’ll call this the Receiver thread). On receipt of a message, the Receiver thread needed to do some processing on that message and then update the main thread (the UI thread).

The initial solution to this was pretty simple, call TThread.Synchronize from the Receiver thread, passing in an anonymous method that updates the UI Thread.

Testing this on Windows worked fine, however running it on Android revealed a problem. (more…)