Cancel changes?

by Vittoria Marino on 09/21/2017

Today my inspiration comes from this amusing popup that appeared in an app made in China for a gadget purchased online. My aim is to stress the importance of linguistic translations for international applications.

We’re often concerned with the technical side of the problem, and looking for systems that allow programmers to easily manage the translation, but this neglects the crucial aspect: the user experience. When a user sees an untranslated message, they react the same way they do when they find a bug; when shown an inaccurate translation they are – at the very least – confused (see popup).

That’s why we decided to create a specific module for Instant Developer Cloud that lets you manage app translations precisely and professionally, but it’s also quick and agile when, for example, you need to publish a fix and you can’t wait for a professional translator. You’ll find it starting in version 17-009, which is already available.

To use it, select the app to be translated in the objects tree, and from the gear menu at the bottom select Translation Management. A list of strings will appear that the system extracts automatically from the views and the code that you have implemented.

First, you’ll need to decide which strings you actually need to have translated. To do so, you’ll need to use the commands that appear to the left of each row. Check out the Show in IDE command. It shows you the context in which a given string was used, which is crucially important for understanding whether it needs to be translated, and how.

Once you’ve decided how it should be translated, use the Add language button to add one or more languages you want to translate into. At this point you have two choices:

  • Final translation: if you have a professional translator available, the Export button lets you create an XML file that’s compatible with the most common CAT systems.
  • Temporary translation: you can write directly in the fields or use the powerful Google tools by clicking Translate, which will automatically translate the entire app into the languages you’ve requested.

The system tracks which strings were translated temporarily compared with those translated professionally, so you’ll always have a clear picture of the situation.

When the app is run, the framework automatically activates the language based on the device settings, so you don’t need to write any code for the translations to work.

Lastly, when you change the app, the system tracks what you’ve already translated and prompts you to retranslate only new or edited strings, always based on the context in which they are used.

It might seem like a slightly complex module, but apps today have to put the user experience first, so you can’t underestimate the problem. What do you think? Have you had any experience developing multilingual apps?


At the beginning of the year Andrea said that version 16.5 would include a new user interface rendering system. The time has come to reveal that this is the new “Ionic” theme for mobile applications.

It’s actually not just a new theme. It’s a new rendering system based on one of the most common frameworks for hybrid applications, Ionic.

This allows us to access features like:

  • Native scrolling.
  • Look and Feel that adapt automatically to the host operating system (iOS and Android).
  • A User Experience very similar to that of native applications.

The decision to create this new rendering system was made so we could optimize applications as well as possible in order to improve the user experience. And if the interface that you have created has followed the standards, moving to the new theme shouldn’t take much more than a parameter change.

At this point I’ll leave you with the preview application, and as always I’m interested in hearing what you think of it. If you have Caravel installed on your device, you can test it by entering the identifier progamma.mwindi in the URL box.

NB: The preview application may contain inaccuracies. If you notice any unexpected behaviors, report them so they can be verified.


Anyone who follows trends in tech knows that one of the hottest right now is about IoT (Internet of Things) systems. An IoT system can detect data from a set of “smart” objects connected to the cloud. In certain cases they may also be controlled from the cloud.

But what are these smart objects? All domestic appliances will certainly become smart in upcoming years, and many of them already are, like smart watches, smart lamps, smart thermostatic valves, and so on.

One item that’s already available and easy to get your hands on is the AWS IoT Button, which lets you experiment with this new technology for a low price, and might even bring to mind some innovative ideas.

Once you have bought your AWS Button, you can configure it so that it connects to a WiFi network to send a message to the AWS cloud every time you press it. It recognizes three event types: single-click, double-click, and long-press.

The most complex part is creating a script within AWS that recognizes your Button and runs the code in the cloud. Fortunately, there’s a template that can send an email. I’ve modified it to make a call to a REST WebAPI implemented in an app developed with Instant Developer Cloud.

From here all you need to do is use the push characteristics of Instant Developer Cloud to get real-time updates on the events collected by your smart buttons. In the video below you can see how the experiment turned out.

Nice, right? All you need is to find the right idea, and Bob’s your uncle! Do you already have an idea on how to use it?


Holiday homework

by Andrea Maioli on 07/27/2017

We’re into the hottest part of the summer and vacation is fast approaching. For many, vacation is a time for some well-earned rest and relaxation, but programming buffs often seize the chance to look into something new at their leisure.

To make things easier, we’ve put together a series of design patterns for Instant Developer Cloud. In addition to the mobile-design-patterns we presented two weeks ago, today we also have:

  • db-design-patterns: a series of examples for using a relational database in the cloud. It includes the design of a relational schema, the various ways to write queries, and retrieving results from JavaScript. Transaction management and modification of data in tables is also provided.
  • doc-design-patterns: shows how to manage the application using an ORM (Object Relational Mapping) approach. Using documents and collections, there is a strict structure for accessing and modifying data, and it’s much simpler to manage complex operations on the back end and on the device. Also, we didn’t overlook the interaction between documents and Web APIs that is so popular today.
  • datamap-design-patterns: this is one of the most interesting examples because it deals with displaying the application data. Between the infinite, virtual, nested, and recursive lists there was also time to make a digital wheel of fortune. You can click here to see a preview of the application.
  • sync-design-patterns: an actual work bench for testing the synchronization system between a local app and the cloud. You can explore the secrets behind exchanging messages, document synchronization, and remote calls.

I don’t know if you noticed, but the five design patterns we’ve provided cover the full development cycle for an application:

  1. Database design and access to data.
  2. Back end development with an ORM approach.
  3. Front end development using visual element libraries.
  4. Pairing front and back ends using datamaps.
  5. Syncing the local app and the cloud.

To get the most from the examples, we recommend opening them in the IDE, launching the application preview, and testing the various functionalities. Then return to the IDE and in the various views that interest you, have a look at the code that implements them.

As always, I look forward to your feedback, and if any interesting examples come to mind, send me an email and we will happily add it.

Enjoy your vacation!


Mobile Design Patterns


In recent months I’ve had the pleasure of helping create a number of mobile apps using Instant Developer Cloud. It has been an intense and satisfying period, and one of the best gifts was being able to understand how to improve the documentation system for the platform. In fact, when people begin working with Instant […]

Read the full article →

The utility of social media in analyzing an app


In one of my recent articles, I shared with you an experience I had involving the publication and testing of the mobile app Who’s Next?. Since the results of that experiment were very interesting, I decided to conduct another one, which I’m presenting to you today to spark a new discussion. The context here is […]

Read the full article →

Experiment: spreading apps on social networks


Today I’m writing to share an interesting experience I had with the publication and testing of a mobile app. It’s a utility for people who, like me, are passionate about Role Playing Games. It all started when a friend asked me to create an Excel spreadsheet for him to simplify management of a rule, a […]

Read the full article →

Presenting Instant Developer Foundation 16.0


Easter is nearly here, and as Andrea announced a few weeks ago, the new release Instant Developer Foundation 16.0 is ready for you. We’ve introduced many new features and important improvements, and I have to say that I’m really pleased with the work done in this version. Regarding the User Interface for apps made with […]

Read the full article →

Drag & Drop Interactions


In the user experience in web and mobile applications, drag&drop is used frequently to interact with a given object, to create relationships between one object and another, or to upload a file. Basically, drag&drop has become part of the user experience that we all expect. That’s why recently Andrea suggested to me that we integrate […]

Read the full article →

Instant Developer Cloud triples the speed on iOS


The advantages of hybrid mobile applications are well known: they’re cross-platform, pretty simple to program if you know the Web technologies, and have lots of plugins for accessing the native part of the device. However, there’s also a weak point: performance. It’s not so much for calculations as for managing the user interface. Achieving a […]

Read the full article →