I don’t know if you’ve noticed, but this time the Instant Developer evolution cycle has been a bit different than usual. In fact, we’re not using the Roadmap to tell you how many new items we’re implementing, but only for fixes.

The fact is that when we chose what needed to be new in 2015, we began by reading all of your reports, and the suggestions you’ve offered up in the forum and during support sessions. The result was very interesting, and you told us pretty clearly what you need:

  1. you want to personalize the user interface more thoroughly to create cutting-edge customer-facing applications and websites,
  2. you want to write code with an editor that’s even more text-based, but without losing the advantages of relational programming,
  3. you want to create hybrid mobile applications, but you want them to be just as fast and appealing as the native versions.

We’ve taken you seriously, 100%. That’s why the new version of Instant Developer will move further away from its predecessors, and won’t just be an evolution of the same product.

And this is also why we need a little more time. So, version 14.0 in March will contain a few fixes and a few improvements. To see all the results of what we’re working on, you’ll have to hold out a few more months.

But we’re confident that it will be worth the wait and that you’ll be even happier with the 2015 maintenance contract.

For now I’ve already said a lot, so I’ll set a date for springtime, when I’ll bring you an update packed with details on the near future of Instant Developer.

{ 0 comments }

Before putting an application into production, you have to reduce to a minimum the chance that users may encounter errors, because every time someone sees one, their perception of the product deteriorates. The things I’ll list for you today may seem like items that should be taken for granted, but my experience in the support department has shown me that this just isn’t true.

I’ve also noticed that there is a trick that’s relatively simple, though rarely adopted, that helps you achieve good results: develop in the same environment as the production environment.

I’ve often received support requests for problems that crop up only in production, and in many cases the two environments are different. It doesn’t take much to cause unexpected behavior in an application.

The most frequent causes are:

  • 32-bit development environment, 64-bit server
    If you don’t configure the server to run the application in 32-bit mode, the external libraries used can cause errors while loading. The InDe IDWS.dll web server library may also behave this way. It’s practically a classic.
  • The version of Java/C# is different
    Errors may occur while loading the libraries, or while loading the application context because of specific directives used in the development machine that aren’t valid in production.
  • The database version/configuration is different
    I am citing two glaring examples that need no explanation: since version 8.3 of PostgreSQL, query parameters are no longer automatically converted into characters, while before they were. MySQL 5.01+ considers all the “\” of the SQL code to be escape characters, but it does offer the no_backslash_escapes parameter that deactivates this functionality;

In the Support Department I often say, “by looking for the differences we’ll also find the cause of the problem.” It’s precisely the difference between the two environments that causes the unexpected behaviors. So it follows that when developing in an environment that’s identical to the production environment, any problems will be found during development, not after deployment.

Establishing a copy of the production environment locally takes time, but I don’t think it’s an optional element of developing and maintaining software.

If you don’t already have a solution like this, I recommend you organize one as soon as possible. And if you really don’t want to dedicate a server for this, at least a virtual machine!

{ 0 comments }

The first semester of the 2014-15 academic year is over, and during this time we offered online courses in the new format I presented in July. Now it’s time to plan the calendar for next year and to look for other improvements we can make to the training we offer alongside Instant Developer.

From an organizational standpoint, we’ve found that the increased frequency of courses we began offering in September has in fact made it easier to participate in more than one case, given that there are only 3 weeks between one Basic course and the next, rather than 6 as in the past. In addition, our classrooms are less crowded, which allows for better interaction between students and instructors. So I’d like to focus on other aspects: gathering feedback and expanding what we have to offer.

In terms of feedback, you already know that it’s very important for us. When analyzing feedback for help desk tickets, I got some concrete help from the support department guide. That is why I’ve started to do something similar for our online courses as well. Soon, a new implementation of help desk will allow users to answer a questionnaire designed specifically to evaluate the content of the course, usability through the WebEx virtual classroom, planning, and the exercises offered – basically, everything.

With regard to our course offerings, which as you know currently consist of three online courses – Web, Reports, and Mobile – I need your help now, because I have a proposal for you. When presenting the first version of the courses, I mentioned the possibility of also offering an advanced course on Document Orientation. Now that we’ve optimized the first three courses, it’s time to revisit that subject. I have in mind a course that discusses:

  • advanced DO services
  • extended properties and Named Properties
  • procedures generalized thanks to reflection
  • ??? – what would you like to see on this list?

If I put it on the calendar, would you take the Advanced DO course?

  •    Yes, I'd sign up for the first available course!
  •    Yes, within the year.
  •    I'd like to, but I'm always too busy.
  •    I'd prefer a class on another subject (let us know which in the comments).

Image: Andrea Mucelli.

{ 1 comment }

Sometimes programmers may not have anything to do with solving algorithmic problems, but need to solve problems related to using the application memory.

Sure, it’s always a problem of how the code is written, but compared to an algorithmic error that manifests immediately (sometimes even to the end user), a memory management error will only become apparent at a certain point, when things have gone too far and the server has used all the available memory. It’s an effect that can even occur very far from its cause.

In these cases we have to answer the question “where did I put all that memory?”. I’m writing this post today to offer some tips that seem simple, but that I’ve noticed are quite helpful.

First of all, it’s a good idea to use an effective tool for your analysis. Don’t just trust what Task Manager tells you, because it’s not a tool that was designed for this purpose. Task Manager simply informs you of the fact that a certain application is using a given amount of operating system memory, but it doesn’t tell you in which class it’s being used, and above all it doesn’t distinguish between memory that’s actually used by the application and what the web server is setting aside for itself because it knows it may need it.

To try run a test with this small example project on IIS and see what kind of tool I’m talking about, I recommend you try the demo for ANTS Memory Profiler, which I’ve found effective and helpful in a complex task like solving a memory leak.

Try opening New Form IMDB and looking at which classes the memory is being used in. You’ll find live instances of IMDBFldValue that correspond to 30,000 lines that I’ve inserted in an Instant Developer IMDB (In Memory Database) table.

Now close the form and then check the memory again. You’ll still have the same number of instances of IMDBFldValue still “alive” in memory. That’s because the IMDB tables are made expressly to be accessible from the entire application, and from this point of view they should be considered equal to a global variable. When you close New Form IMDB, the IMDB table it contains isn’t emptied. Instead, it’s kept in memory for possible reuse by other procedures in the application.

And this is where the second piece of advice comes in, for people who use Instant Developer. It’s common practice to empty IMDB tables immediately before filling them again. This typically happens when you open the screen, but if you use large IMDBs it could lead to memory problems if you don’t also empty the tables when the form closes by using the Unload event.

Try to uncomment the content of the event in the project and you’ll see the difference immediately.

Will you help me choose the next Tips & Tricks article?

  •    Managing multi-domain user/object synchronization
  •    Integrating JavaScript libraries into your offline applications
  •    Beyond an article on the blog: what we need is a Webinar on customizing graphics

{ 0 comments }

Teamwork

20.11.2014

I have always thought of programmers as people who solve complex problems, translating them into sequences of operations that a computer can execute. However, and especially recently, we need to handle a lot more than that. I started programming in the mid ’80s, and things were relatively simple at that time. The ecosystem we were [...]

Read the full article →

Customer stories

13.11.2014

As Stefano has already mentioned in his post presenting the new Instant Developer website, Customer stories is definitely one of the most interesting areas. In fact, beyond presenting the features of the product, this particular part of the site may be useful to you if you: are choosing Instant Developer as your development platform, because [...]

Read the full article →

How to (re)make the website in 3 steps

28.10.2014

Today I have the pleasure of using this space – which we dedicate to talking with you about Instant Developer and technology – for something we consider to be a very important event: the arrival of our new website. I want to tell you how we got here and why we made certain choices, in [...]

Read the full article →

Instant Developer 13.5 is ready

24.10.2014

The new version of Instant Developer has just been released, and it’s ready for you to use in all your projects. As usual, the fall version wraps up the release cycle for the current year, delivering more new features and improvements. Here are the top items: Compatibility with iOS8 and the latest versions of browsers. [...]

Read the full article →

Caravel, the universal browser

16.10.2014

One of the new features in Instant Developer 13.5 is support for Windows 8.1 and Windows Phone 8.1, and today I am happy to report that the new version of Caravel is already available on the Windows Phone Store and will soon be available on the Windows Store as well. If you’ve just started following [...]

Read the full article →

SAP integration is on the way

09.10.2014

In today’s post I can finally reveal the mysterious feature that Andrea mentioned to you a while ago. It has to be said though, that saying “We also want to connect another popular ERP. Want to know which one? The name has three letters and starts with S.” didn’t leave much to the imagination. It’s [...]

Read the full article →