Recent Blog Posts

Webinar Replay: Simplify Data Change Tracking with InterBase On October 17, I did an InterBase webinar on using Change Views to simplify data change tracking.  Change Views allows you to reduce your network traffic, keep mobile data costs down and speed up your development time by syncing only the changes you subscribe to. As your database scales, the data tracking hurdles get larger and require complex solutions, triggers, timestamp tables and more. There's a simpler way for you to take control of your data syncs: InterBase Change Views. InterBa...

Posted by on in Blogs
Level Up Your UI Design Skills You’re short on time, and cash, so where can you go to learn new skills to improve your app UIs? There are a ton of free, or nearly free, on-demand resources if you know where to look.   Enroll in free, or inexpensive, Online Courses: I love taking classes from Coursera. You can access the same college and university classes taught by great schools for free by auditing classes. (I also use Coursera for non-technical courses like literature.) Design Principles by University of Californi...

Posted by on in UI
Touch-Friendly Navigation for Mobile Apps Over 20% of users abandon an application after using it the first time (per Localytics). How can you design your mobile app to avoid being one of these casualties? Start out by designing your application with mobile in mind. You can’t just replicate your desktop application and expect it to make sense on a smaller form factor. Each platform already has existing patterns your users are used to: iOS tab bars are on the bottom and include glyphs but Android tab bars are at the top and are text-on...
Embarcadero Releases AppAnalytics Server Source Code What is AppAnalytics? A few years ago, Embarcadero introduced the AppAnalytics technology, a simple and effective way to add in-app analytics to VCL and FMX applications using ready-to-use components and a paid SaaS offering for the AppAnalytics backend. Since introducing the service, the feedback from customers has been that they would prefer to host their own service, so we retired the paid SaaS offering earlier this year. With the 10.2.3 release, we started providing the component source co...

Posted by on in Blogs
Dave's Thoughts on UI Design - Index I'm a big proponent of practical, usable UIs that are easy to understand and pleasant to look at. As an ongoing series, there are a number of blogs posts on UI design. How To Design a Great UI A practical approach to taking a mockup or first cut of a UI, and improving it.   Part 1 looked at some basic principles of UI design, a typical UI design workflow, what it means for a UI to be ‘intuitive’, some examples, and started with an example ‘bad’ UI ...

Posted by on in Blogs
How To Design a Great UI - Part 3 Welcome back! This is the third post on a series on practical UI design, an approach to creating usable, good-looking UIs when you are not a UX expert. In Part 1, we looked at some basic principles of UI design, a typical UI design workflow, what it means for a UI to be ‘intuitive’, some examples, and started with an example ‘bad’ UI that could be a first cut at a UI for a feature, or the first version of a mockup. In Part 2, we moved into a practical approach, and examined confusion from user...

Posted by on in Blogs
C++ Libraries in GetIt: MurmurHash 3 An ongoing project we have is to ensure more popular, well-known C++ libraries are updated to work with C++Builder, and available to you from within GetIt, our package manager. You may have seen a post earlier this year about real-world (non-demo) apps that you can use with C++Builder and CMake, for example, and this is related. This week, I'd like to highlight MurmurHash 3. MurmurHash is a very well known hash function (read its Wikipedia page). It can produce either 32-bit or 128-b...
FireDACの秘密:最後に挿入された自動生成IDとEnterprise Connectors この記事は Eli M. による Secrets Of FireDac: Last Inserted Auto Generated Id And Enterprise Connectors の抄訳です。  自動インクリメントフィールドがあるテーブルにデータを挿入するとき、一般的にはSQLクエリを使用して新しく作成されたレコードの最後に挿入されたIDを取得します。TFDQueryを使用してINSERTクエリを実行し、続いて、SELECTクエリを実行すれば、新しく挿入された自動インクリメントIDを取得できます。 異なるデータベースには、これを実現するために異なるSQLクエリがあります。 たとえば、MySQLには、LAST_INSERT_ID(例:SELECT LAST_INSERT_ID))という名前で実行できるSELECTクエリ関数があります。 このSELECT文を直接実行するか、FireDAC内蔵の機能を使用することができます。 FireDACには、GetLastAutoGenValueというTFDConnectionコンポーネントから呼び出すことのでき...
The Delphi Compiler and UTF-8 Encoded Source Code Files With no BOM Last week a (large) customer sent me an email indicating he was experiencing issues when compiling the same project on different machines. Turned out the difference was in the source code files format and the root cause was a unit saved as UTF-8 but without a BOM. The reason? One of the developers is using Visual Studio Code... and the solution is a chancing that or using compiler flag. But before I get to the solution, let me show you the problem with a very simple test case. Delphi and S...

Posted by on in Blogs
How To Design a Great UI - Part 2 Welcome back! Last time, we discussed a typical UX design flow, and how to tackle this if you do not have access to a UX designer. We also looked at some key usability principles, and saw an example ‘bad’ user interface that we will improve step by step through this series. Finally, we examined that bad UI and some of the questions and confusion a user might have when interacting with it. If you haven't read the first post, please do - it covers some essential topics before what's covered t...

Check out more tips and tricks in this development video: