I know a lot of people who would read the statement in the title and say, “Oh come on, Facebook is just a huge waste of time,” and I can’t deny that from a certain point of view they’re right. More than once I’ve found myself scrolling through my news feed on Facebook, using my time poorly, and finding myself saying, “enough, I’d better do something else”. Nevertheless, right now while the world is facing such difficult situations, I noticed something that I think is a interesting point for discussion.

I’m talking about Facebook’s Safety Check, which the world’s most popular social network uses to react to crisis situations by helping users reassure their friends and family about their well being. The operating principle is very simple. I’ll quote from the official page:

  1. If it looks like you may be near a natural disaster, we’ll ask if you’re safe.
  2. If you’re OK, click or tap the “I’m Safe” button to let friends and loved ones know right away.
  3. We’ll let you know when friends say they’re safe. You can also check a list of friends who may be affected by the disaster.

I’ll tell you why I make this observation.

On November 13, I was away from home in an area where the cell coverage was patchy – one of those situations where you put your phone away because it gets so little coverage that you don’t feel like wandering the hotel searching for a Wi-Fi signal. I was already in bed and was about to fall asleep when I got a text: “Have you seen what’s happening in Paris?”.

I got out of bed, hunted down a Wi-Fi signal, and started reading the papers in a corner of the room.

My wife had woken up, and I brought her up to date on what I was reading. The question quickly followed, “I hope So-and-so is OK!” – “Wow, that’s true, we have friends who live in Paris now. Are they OK??”. A few minutes later, the notice from FB: So-and-so has confirmed he’s OK during Terrorist attacks in Paris.

That weekend I was away for a three-day seminar with about another 200 people. Sharing my thoughts, emotions, and experiences from that night with them, I found that I wasn’t the only person with friends in the area hit by the crisis, and that many people were reassured by the Safety Check notification.

What happened? What happened is that Facebook asked our friends, Are you OK? and they answered with a simple tap. Being very focused on finding out what was happening in the city, and rightly so, none of them had posted any special status on Facebook, but they all were given a simple way to report I’m OK.

This is not the place to talk about the facts of the matter, and I definitely don’t want to ride the wave of this news, but I was struck by the FB feature, both in its premises and in the consequences that arise from it:

  • a crisis identification system has been implemented;
  • an algorithm was implemented that estimates the risk situation of a given user;
  • a feature was implemented with a purpose far distant from the reason the social network was created.

Anyone who has followed us for some time knows how many times we’ve said that to develop for mobile we need to change mentality, think of different services that sometimes aren’t strictly linked to our business, or of interfaces and procedures created specifically for mobile users. Procedures that require ongoing design, infrastructure, and maintenance.

Safety Check is a striking example of this: a function seemingly far from the core business, but with a clear added value for users.

It’s a type of approach that offers us an additional opportunity to learn what mobile really means.


I’m reviving the Tips & Tricks feature after a relatively long pause, and to do so I decided to take on a subject in which many people have expressed interest: optimizing blob synchronization.

As you know, the Instant Developer synchronization framework is based on transporting data using XML strings: both the individual changes of differential synchronization and the complete status of each document to be copied onto the device in the event of a full synchronization are saved in XML and transferred to the device. And it’s here that we can run up against the limit of the device which, when parsing a relatively lengthy XML string, runs out of memory and forces the app to close.

The math is simple: synchronizing 1000 entities, each with a 200 KB blob, the server will have to send the client 200 x 1000 KB = 200 MB! If we’re talking about a single XML string, even decidedly smaller numbers can make it difficult to open. Many of you know that partial synchronization can help us out, because it lets us synchronize documents in batches that are far less numerous, but it’s not the only option we have to choose from.

I’d like it if the app were able to:

  1. freely synchronize documents, avoiding sending the blobs to the client;
  2. provide a simple way to download the missing blobs when they’re needed.

Here you can find an example project in which the Landscape class is synchronized. It depicts a landscape with a name and a photo, and the latter is represented with a blob on database. The result I wanted to achieve in creating it was to have the fastest possible synchronization, but at the same time obtain the image to display to the user at the appropriate time. To achieve this, I:

  1. created a domain to indicate where the application blobs express the concept MY_BLOB;
  2. used the onGetNamedPropertyValue event to instruct the framework not to send the blobs to the client;
  3. used the SyncService.ResyncDocument() method to obtain the blobs at the right time.

In fact, during synchronization, the various document classes are notified of the onGetNamedPropertyValue event with DO_DONTSYNC as the propertyName, to allow the user to use the Documento.DontSync() method and prevent automatic synchronization of a specific property. I chose the blobs.

Once I finished that, I asked myself, “when do I want the user to receive the image?”, and in my case the answer was “when they look at the document in detail.” So I used the onChangeRow event to launch a global procedure that uses the ResyncDocument method to download the image from the server on the fly. All of this happens only if all the blobs that use the MY_BLOB concept in the document are null.

Try out this test, and you’ll see how it works right away:

  1. launch the two applications contained in the project, which represent the synchronization server and the mobile app;
  2. use the Sync Now command to run the first synchronization;
  3. open the debug and you’ll see that the client received 659 bytes – that’s not much;
  4. close the debug;
  5. select a landscape from the list and reopen the debug. You’ll see that the client received the entire document – a few thousand kilobytes.

The side effect of my solution is that this way, an Internet connection is required when the detail is opened, but to get around this problem we can simply use my same method in a background procedure in a server session on the device.

But I’ll leave this exercise to you. :)

What trick would you like to read about in our next technical article?

  •    Implementing a multi-domain synchronization
  •    A practical example of using Foundation DO Web APIs with the Cloud editions
  •    Other (specify in the comments)


This month has been brimming with updates, even if the lion’s share were about the Cloud editions. But those who have been with us for a while know that the beginning of November is time for the newest yearly version of Foundation, and we didn’t want to disappoint.

If you remember the roadmap we sketched out last May at our event From Foundation to the Digital Future, we promised that through March 2016 we’d spend most of our time on the Cloud editions, but that we would still keep Foundation in step with the development of mobile operating systems and desktop browsers.

So version 14.5, already available, is dedicated specifically to compatibility with iOS 9, Android M, and Windows 10 and Edge. Naturally, we’ve adapted the solution in response to bugs discovered recently by our support service and a few improvements requested by the community; for more information, check out the release notes.

Now we could wrap up here, but there’s a corollary to the story that otherwise might just be a bit of everyday “admin”. If any of you have had occasion to talk to me recently, you know that the theme of UX design has become a fixation, and it was unavoidable that it would have an impact on Foundation too.

That’s why in version 14.5, we have provided the new Zen graphical theme, which is set as the default in new web projects. If you’d like to take a sneak peak, have a look at this: we converted one of our classic examples, nwind, now also in the Zen version.

This latest update highlights the fact that the Foundation and Cloud editions will move forward together in the years to come, and therefore will require graphical themes in step with the times.

I’m sure you’ll know exactly how to use Zen to the fullest to make Foundation applications that are even more attractive and that will integrate seamlessly with Instant Developer Cloud apps. As always, I look forward to your comments and hearing about your experiences.


As I promised two weeks ago, here I am again to tell you about updates to Instant Developer Cloud Editions. This week we have some particularly interesting news, especially from the standpoint of the collaboration between users and using the IDE.

The top new items are:

  • remote collaboration through the IDE directly from the browser:
    those who’ve been with us a long time and people who deal with customer support know that remote collaboration is a crucial aspect of providing good support and for collaboration among developers. Who among us isn’t used to sharing their screen or display of an online document daily using tools like Google Docs or Dropbox?
    Starting now, you can also share directly from the Instant Developer Cloud IDE, as well as in applications created with these new editions. Simply click the button at the top to the left of your user name to enter the list of people you want to collaborate with. They’ll receive the link they need to connect in an email. Easy, right?
  • the split view:
    the option to split the central part of the IDE into two sections to see the preview of the screen on one side and the code on the other. This is a very useful function we don’t want you to miss. The result is shown in the figure below.
  • the history view:
    here is another interesting thing that will allow you to answer a question such as: what changes did I make last week? By selecting the differences button and using the new Compare with commit command, you can see the changes made to the project in a given commit backward in time.
  • drag & drop directly from the operating system:
    I know that this feature will be greatly appreciated by many people, especially by people who want to import a graphical theme found on the web into their project. In fact, using this feature you can drag a resource from your computer directly over a library in the IDE to create a new resource to use in the project. And of course you can drag more than one file at a time.

What’s more, the new release also includes many corrections and improvements that will help you develop your multichannel applications.

Try out these new options and let us know what you think!


An afternoon in Florence


About ten days ago, Maurizio Cherubini, CTO of Albalog, invited me to attend an event he had organized in their beautiful new offices in Florence. The occasion was a presentation of their ExtraERP project to a group of his friends, all software house managers or IT managers for large companies, and at the same time [...]

Read the full article →

Cloud editions: this week’s updates


Development continues on the Cloud editions of Instant Developer, so to keep you up to date on our progress and changes, we thought we’d use the posts in our blog as bulletins on the updates available. The top new things introduced in recent days are: The new application preview graphic, which lets you quickly switch [...]

Read the full article →

Publishing corporate databases on the cloud: here’s how


Finding a way to publish company network data to the internet has become an everyday necessity. Consider, for example, just the use of mobile terminals which usually connect through cellular networks. The solutions used most often are expensive, and neither very practical nor very secure: either you create VPNs that extend to mobile devices, or [...]

Read the full article →

The future of mobile? Finally, it’s business-oriented too


Gartner Webinar Presentation, The Mobile App Scenario, Richard M Marshall, PhD, September 9, 2015 This graph is interesting, isn’t it? I promise that 20 lines from here, it will be even more so. At the beginning of September, there was a Gartner webinar held by Richard Marshall, one of their top experts in the mobile [...]

Read the full article →

New Cloud editions of Instant Developer – Preliminary Version


Do you remember what we promised you before the summer, when we met at our From foundation to the digital future event? That by September we’d have prepared the full version of the new cloud editions of Instant Developer? I have to say, this promise has put us to the test. We had to divide [...]

Read the full article →

iOS 9: time to prepare for the update


In a few weeks, Apple will make available the new release of its smartphone and tablet OS, and we can expect that it will be installed on most devices by the end of September. So it’s important to prepare for a possible upgrade concerning applications that we’ve already developed and published on the app store. [...]

Read the full article →