From the blog

The Next Big Thing in Windows Development 

In recent years we’ve seen objects and ideas previously thought of as science fiction become realities in our present world. The evolution of modern technologies like machine learning and artificial intelligence are largely to thank for this fiction becomes reality migration. However, when it comes to Windows development, there are often new solutions, techniques, or features touted as the next big thing. As experts in the field, Embarcadero is always chasing down the next most promising Really Great Idea in Windows development. In this article I discuss some exciting prospects that seem likely to take Windows development by storm. Is Delphi the Next Big Thing in Windows Development? Since succeeding Turbo Pascal, Delphi has evolved into the biggest advent in the world of Windows development. Helping developers write code faster and smarter with its modern OOP practices and robust frameworks, Delphi significantly increases developer productivity. Therefore, to stay ahead of the curve, smart developers design, refactor, and build their code using Delphi. What makes Delphi such a great tool for writing Windows software? Delphi programs are incredibly robust and require little to no dependencies or preinstallation of anything at all unlike virtually every other kind of Windows Development technology. The programs are fully compiled binaries so there is no source code to run through a compiler or runtime interpreter. Those binaries – the things users install – are native too so they run at the full speed of the machine and are not filtered through a runtime framework or some kind of byte code which can only run at a reduced speed due to the overheads of the byte-code interpreter. It’s common for Delphi programs to run unchanged for many years, passing through various iterations of Windows upgrade cycles like Windows 7, Windows 8, 10, 11 and beyond. They still run without needing to be updated and without breaking due to external dependencies which have morphed around the program during the Windows upgrade – this is almost universally not the case for any other programming language out there. Can Delphi make use of modern features and technology? RAD Studio Delphi is a powerful Object Pascal IDE and component library for single-source multi-platform Native App Development with flexible Cloud services and broad IoT connectivity.RAD Studio Delphi provides VCL controls for modern Windows app development for Windows 10 and Windows 11. Embarcadero’s RAD studio Delphi also provides the FireMonkey FMX cross platform development framework which allows programmers to create apps which work faultlessly on Windows, Mac, Linux, and mobile devices running Android or iOS. Here are some of Delphi’s key features: Support for high-DPI and 4K+ screens Extended multi-monitor support High-performance compilers Modern OOP centric languages  Cross-platform support, etc Why Is an integrated software development toolchain important? Essentially, your software development toolchain combines your individual solutions into a collective end-to-end process. However, for many developers, their initial choice toolchain consists of siloed solutions— individual tools operated in different development environments. This siloing can cause friction, leading to reduced productivity, slower deployment and distribution time, and difficulty maintaining applications.  Increasingly, Windows development tools are being integrated with one another, facilitating a more reliable release process. Integrations can be built-in or custom-built. The former’s advantage over the latter is that you don’t have to worry about support and maintenance. RAD Studio Delphi offers integrated […]

Read More

Application Shortcuts and Speech Recognition in TMS iCL on FMX

TMS iCL is our Delphi iOS component library. The components are in fact wrappers around the iOS operating system level defined controls and are usable from a FireMonkey form. As iCL controls wrap iOS operating system controls, the entire look & feel as well as feature set of the iCL control is defined by what the iOS control offers. It is rendered by the iOS operating system.Another advantage is the performance, the control remains extremely fast and responsive, irrespective of the number of items or the complexity of what is displayed. Both iCL controls and FNC or Firemonkey controls can be used together on the same form. Update 4.0.0.0 In this update we added four new components, replaced some deprecated components by Apple and updated our demo’s to work out of the box on Delphi 11. Application Shortcuts On a device that supports 3D Touch, a user invokes the quick action by pressing the app’s icon on the Home screen and then selecting the quick action’s title. The TMSFMXNativeAppShortcuts component has a list of shortcut items which will trigger an event when the item was selected to open the application. Speech Recognition Two components were introduced for speech recognition. TMSFMXNativeSpeechRecognition to retrieve the text from the spoken input or from an audio file. And the TMSFMXNativeSpeechCommandRecognition, which will execute an event when the required text has been recognized by the component. Sheet Controller TMSFMXNativeUIViewSheetController lets you present a view as a sheet on top. The height can be set and there is the possibility to show or hide a grabber. Replacing deprecated components TMSFMXNativeUIViewPopOverController replaces UIPopoverController as the UIPopoverController is deprecated by Apple. TMSFMXNativeUIViewPopOverController now inherits from the UIViewController. TMSFMXNativeWIWebView replaces UIWebView. It is a new component, but has all of the same procedures and properties as TMSFMXNativeUIWebView. This will make it easy to update your application. And the demos were updated to work out of the box on Delphi 11 and with iOS 14+. More information on TMS iCL.

Read More

What You Need To Know About The CodeSite Logging System

Logging is a very crucial process in programming, especially in developing an application. Generally, log files provide visibility into how the applications are running on each of the various infrastructure components. In this video, Bob Swart also known as Dr. Bob will introduce us to the CodeSite Logging System and how this could be one of those windows app development tools that you must have. What is the CodeSite Logging System? The CodeSite Logging System is developed by Raize Software. It gives developers deeper insight into how their code is executing. This enables them to locate problems more quickly and monitor how well their code is performing. What are the CodeSite Logging System’s main features? In this talk, Bob Stewart will not just introduce us to CodeSite’s main features but will also demonstrate them individually. Using CodeSite Logging System, developers instrument their code using CodeSite loggers that send CodeSite messages to a live display or log file during program execution. Interestingly, CodeSite is not only effective during development and testing but also during production, providing valuable information to support staff and developers. CodeSite is also available in two editions; the CodeSite Express which is free and can be installed using the GetIt Package Manager and the CodeSite Studio which can be bought from the Raize software webpage. CodeSite offers Live Logging and File Logging. It can also be used for Local Logging and Remote logging using the CodeSite Studio edition. Codesite also includes a set of handy tools for the analysis of CodeSite logfiles. The video will highlight some of the useful tools and features of CodeSite. This includes the Code Dispatcher which is designed to minimize the performance impact the logging process has on an application. It also simplifies the transporting of Code Site messages to remote computers. Remote Logging is also another impressive feature of CodeSite that is available only in its commercial edition (CodeSite Studio). The video will also demonstrate other noteworthy features including the CodeSite Scratchpad, different Message types, CodeSite Destinations, Multiple CodeSite Loggers and how to enable and disable them in Delphi, and many others. To know more about CodeSite Logging System, feel free to watch the webinar below.

Read More

How we built a Stack Overflow Community questions analyzer (and you can too)

Being part of the GitLab collective is an opportunity to learn first hand about the challenges the community using the DevOps Platform is facing. As a Collective Member logging between 2-3 times a week in StackOverflow reading the questions and discussion posted about GitLab and manually sorting them by ‘Recent Activity’, ‘Trending’ and using Dates, I asked myself: how can we leverage this wealth of data and discover feedback, while finding the most frequent topics where the community has questions? This would be an opportunity to get a quick overview of topics where the community regularly needs help; this would also make it easier for us to create relevant content for them. Manually sorting and extracting the text of each question wouldn’t be sustainable, so creating an automated way would be the most efficient way to proceed. Experimenting with data-oriented content creation Finding out what the community is working on, and what they need help with while using GitLab, can help us to create better educational content that could expand their understanding of GitLab. To achieve this goal, the solution I created after a few iterations is depicted below: Where the Bill Of Materials consists mainly of: GitLab DevOps Platform Stackoverflow API Kubernetes Cluster Open Source Python libraries: scikit-learn (TF-IDF) Streamlit (front-end) Spacy I leveraged the GitLab DevOps Platform to organize the projects using groups: The Loader project pulls questions about GitLab from the StackOverflow API, pre-processes the text and makes it usable for a second project: a Visualizer to create customized dashboards. The automated process executed using the DevOps Platform is outlined below: Pull data from StackOverflow API Preprocess the response extracting relevant fields from returned JSON Build a corpus and calculate TF-IDF Scan for security vulnerabilities Review Application and display its resulting dashboards using Streamlit Deploy the built application to a Kubernetes cluster Loader and Visualizer projects have their own codebase and pipelines, which is helpful if different teams need to work separately on them. However, one project can require the other, which raises the need for cross-project automation. This scenario means a multi-project pipeline is useful to automate the whole process. The multi-project pipeline enables use cases such as: As an NLP Developer I want to work on the NLP Pipeline in the Loader Project and automatically trigger the creation of a new visualization As a Streamlit Developer I want to work independently in the buttons and data visualization without touching any NLP Pipeline backend The outlined process above is automatically run defining the steps in a multi-project pipeline sharing artifact: Finding the most frequently occurring words The Feature Engineering step will help me to analyze the text in the whole dataset of GitLab questions. Using a simple yet powerful technique – TF-IDF – we aim to find the most relevant terms utilized by the community. By using this technique in the pipeline execution, I represent words in numerical values and later rank them in order of importance. This approach serves as a baseline for further improvements. More detail about this algorithm can be found here. Did we achieve any success? One run of the multi-pipeline in our solution results in dashboards such as this one: As an end-user of these dashboards I can immediately conclude that the main source of questions are around GitLab CI, pipelines […]

Read More

Two sizes fit most: PostgreSQL and Clickhouse

Since the introduction of System R in 1974, relational databases in general, and SQL databases in particular, have risen to become the dominant approach to data persistence in the industry, and have maintained that dominance despite various significant challengers. Though some have rumored the death and decline of traditional relational databases, PostgreSQL has turned out to be an improvement on its predecessors, as well as its supposed successors. In fact, the open-source MySQL database was so ubiquitous that it became part of the eponymous LAMP stack (Linux, Apache, MySQL, Perl) that dominated early web development. The one big exception to this trend is OLAP, where specialized techniques that can drastically improve the performance of certain workloads have met with use-cases that actually require these techniques, with new contenders such as Clickhouse enabling qualitatively different approaches to analytics. One size does not fit all As often happens when a technology becomes dominant, it gets applied unthinkingly even when it may not actually be appropriate, and so all kinds of data was and is being pushed into general-purpose relational databases. Extreme examples could be found, such as developers creating remote Oracle databases for data sets with a total of 5 small elements (not columns, pieces of data) or Apple pushing their system logs into an SQLite database (a mistake they later corrected). Bind10 development started under the premise to solve scaling issues with Bind9 as DNS nameserver, using SQLite as backend. The DNS development was discontinued by ISC in 2014, and the OSS project Bundy remains inactive. PowerDNS focussed on performance scaling with MySQL/PostgreSQL early. In 2005, Michael Stonebraker, database researcher behind Ingres and later PostgreSQL, together with Uğur Çetintemel, penned a paper “One Size Fits All”: An Idea Whose Time Has Come and Gone arguing that this had gone too far too long and backing up that argument with benchmark results. In short, there were many workloads outside of the core application of databases, Online Transaction Processing (OLTP), where the general database architectures were outclassed sufficiently that it did not make sense to use them. It should be noted that Stonebraker and Çetintemel argued not against relational databases or SQL, but against a specific architecture descendent from the original System R and Ingres systems that were and still are being used by most general purpose database systems. This architecture has the following features: Disk and row-oriented storage and indexing structures Multithreading to hide latency Locking-based concurrency control mechanisms Log-based recovery In addition to special-purpose text indexing, the primary use-case for which the traditional architecture was proving inadequate was data warehouses, for which column stores were proving 10-100x more efficient than the traditional row stores. Clickhouse The prediction that OLAP database engines would split off from mainstream databases has largely come to pass in the industry, with OLAP databases now being a significant category in its own right, with vertica, the commercial offshot of the original cstore discussed in the paper, one of the major players. The practical advantages of these databases for analytical work are, as predicted, substantial enough that having a separate database engine is warranted. Or even necessary, as was the case for Yandex’s clickhouse OLAP database, recently spun out into a startup that just received a US $250m series B. The clickhouse developers wanted to have realtime analytics, […]

Read More

Customizing performance metrics in the Unity Profiler

For more information, please see the Module Editor documentation. Profiler module API The Profiler module API allows you to add your own Profiler module to the Profiler window for all users of a project or package. When a Profiler module is defined in a project or package using this API, it automatically becomes available in the Profiler window for all users of that project or package. If you are an Asset Store publisher or a package developer, you can now distribute custom Profiler modules with your package. When a user installs your package, your Profiler modules will automatically become available in the Profiler window for your users. This enables you to expose your package’s performance metrics directly in the Profiler window. Several teams within Unity have already been using this API to distribute custom Profiler modules with their packages, including the Netcode for GameObjects, Adaptive Performance, and Mali System Metrics packages. How to use it To add a Profiler module using the Profiler module API, create a ProfilerModule script in your project or package, as shown below.

Read More

What’s new in Cloud Content Delivery: Spring 2022 update

For example, you can use Game Overrides to set up time-based changes to your game by enabling and disabling game modes with Remote Config keys. You can then enable new content using CCD, and adjust rewards and IAPs using Economy (beta). To integrate Game Overrides with CCD, install the Remote Config package, link your Project ID, create an Override to target content by using your CCD badges and content bucket, integrate Remote Config into your game code, and retrieve the appropriate assets from CCD. This integration gives you greater control over your asset delivery, allowing you to make more changes directly from the dashboard while keeping positive player experiences at the forefront. To learn more about Game Overrides, click here. Also, visit this documentation page to learn more about integrating Game Overrides with CCD.

Read More

Supercharge Your User Interface with Skia4Delphi

What do Google Chrome, Mozilla Firefox, Chrome OS, Android, Flutter, and Delphi all have in common? They have accelerated graphics thanks to Skia. This high-performance, cross-platform 2D graphics library is taking the development world by storm. It works with VCL and FireMonkey on every platform Delphi supports. One line of code can make your existing FireMonkey applications faster, or take it further and unlock new features for breathtaking user interfaces. Skia4Delphi is an open source project by Spirit of Delphi Award winners and brothers, Paulo César Botelho Barbosa & Vinícius Felipe Botelho Barbosa. So how do you use Skia4Delphi and take your application development to the next level? Register now and join Jim McKeeth and Ian Barker in this webinar to find out! Come back after the webinar for details on the contest, more links, and the replay. Here are a few shorter videos while we work on getting the full replay. What is Skia, You Want to Ask? Imagine you are a software developer who needs to reach all the major platforms today. Your traditional choices are: Native Direct access to hardware Separate code for each platform Web/Cloud Mostly shared code Detached from hardware But Now We Have… FireMonkey Native Compiled – direct access to the platform hardware Multi-Platform – one code base for all platforms Component Based Visual Designer – maximize developer productivity How Does Skia Fit in Here? Introducing… Google Skia Google Skia is the open source graphics engine for Google Chrome, Android, Flutter, Xamarin, Firefox, and many others. It provides common 2D APIs that work on a variety of platforms, abstracting complexities in implementing low-level libraries it uses behind it, such as Vulkan, DirectX, Metal and others, implementing many optimizations and new features. Skia Platforms: All the most popular platforms in the world, such as: iOS (including simulator) Android (including simulator) Linux (main distributions) Skia Features About Skia4Delphi OpenSource Uses a modified fork of Google’s Skia Cross-Platform & Multi-Framework 2D graphics library for Delphi Drawing Focus on Quality & Performance The Brains Behind Skia4Delphi Two brothers from Brazil 2021 Spirit of Delphi Winners Paulo César Botelho Barbosa Vinícius Felipe Botelho Barbosa With the encouragement and suggestions of Ian and Jim Skia for Delphi ECONOMY – Open-source project, completely free EASY TO USE – Easy to install, simple code Compatibility Delphi 11+: All platforms Delphi 10.3+: Windows & Android Delphi XE7+: Windows Available via… Skia4Delphi Library The library conceptually exists in 3 parts: Skia API (Console, VCL, FMX) Access to the pure Google Skia library, through a single unit: Skia.pas Controls (VCL, FMX) TSkAnimatedImage: Play Lottie, Telegram stickers, animated GIF and animated WebP TSkLabel: Multiple styles in text, font weight, justify alignment, limit max lines, background color on parts of the text, auto size width and height, advanced decorations and more TSkPaintBox: use OnDraw event to draw with Skia API directly on control TSkSvg: load icons svgs, change colors and wrap mode App rendering (FMX) Optional feature that when enabled, the FMX graphics engine will be replaced by Skia4Delphi’s graphics engine, that is, the entire app, all the controls on the screen, will be painted internally by the Skia-based canvas. That is, by adding just 1 line of code to enable it, your entire app will automatically: Improve the quality of drawings; smoothing of jagged edges Gain […]

Read More

7 Undeniable Reasons To Love Your Python GUI

Python is a high-level programming language that may be used to create a wide range of applications, such as online applications, software and game development, network programming, graphical user interfaces (GUIs), scientific and quantitative applications, and more. It also has a long list of success stories, demonstrating that it assists a wide range of businesses in accomplishing their objectives. This article will be looking at unquestionable reasons to love Python GUI. What are Python GUIs and the main reasons to love them? GUI stands for Graphical User Interface, and it refers to computer applications that allow users to interact with an underlying application or system through a visual interface. For example, our smartphones’ graphical user interfaces (GUIs) will enable us to engage with many functionalities via the display, which we can touch, tap and swipe on. In simple words, a Python GUI is a graphical user interface created in the Python programming language. Python is a widely-used programming language due to its ease of use, widespread adoption, and, most significantly, its beginner friendliness. Python is wonderful for creating graphical user interfaces, as well as being extremely valuable in the disciplines of data science and machine learning. It even provides a number of frameworks that beginners can utilize to get started with GUI development. What Makes Python Unique? Python’s codebase is clean and well-structured, making it easy for developers to update and maintain the software. In addition, they don’t require developers to write any more code, which saves them both time and effort. As a result, they may devote their time to something more beneficial for the company. Python’s syntax consists primarily of English keywords, emphasizing code readability. During the development of the application, the readability of the code is crucial. When the software is used in the real world, the customers’ needs may change. You won’t have to worry about shifting needs with Python. Even if the developers who designed the program earlier have left the company, the new developers will be able to read and comprehend the old code and apply the new requirements accordingly. Why is PyScripter the best IDE for Python GUIs? PyScripter originated as a simple IDE to supplement the excellent Python for Delphi (P4D) components by providing a reliable scripting solution for Delphi applications. Because it is written in a compiled language, it has a more current user interface and is faster than some other IDEs. It also has several features that make it a good Python development environment. This fantastic IDE seeks to create a Python IDE that can compete with other languages’ traditional Windows-based IDEs. PyScripter is an excellent program. Lightweight, versatile, and extendable with a lot of features. Because it was built from the ground up for Windows, it is substantially faster and more responsive than cumbersome text editors, general-purpose IDEs, or other Python cross-platform IDEs, making it a perfect match for Python GUI programming and application How does Delphi supercharge Python development? Python’s versatility as a programming language stems from the fact that it can be used to create for all major platforms. You can develop programs for not only Windows but also Android, macOS, and Linux with the right Python tools. Using development tools that allow you to do so opens up a whole new universe of possibilities for your […]

Read More

How To Achieve High Performance In Cross Platform Apps

Whether you are working on a small or large development project that requires you to deal with an overwhelming amount of code, you surely want everything to be as responsive as possible, especially if you’re developing cross platform apps where every single byte of code counts and memory is often tight. Everyone desires to achieve and experience high performance; in fact, this is often one of the reasons people choose Delphi due to its ability to produce truly native apps which operate without any intervening compatibility layer to slow things down. Interestingly, in this video, Primož Gabrijelčič will share some useful tips and tricks on how to achieve high performance in Delphi. What are some great tips and tricks for improving performance in our apps? Performance to people has different meanings. For some, it may mean programs are running just fast enough. For instance, if you are typing your codes in RAD Studio, you want the development environment to be responsive enough for every action you make. In other cases, some people simply aim for the raw speed of the program while others expect servers to respond to queries in a reasonable amount of time. In this video, Primoz will list down all the possible ways you can do to improve performance in Delphi. The first step is to always confirm the problem and measure the code. Once you have figured out where the problem is, the best way you can approach is to fix the algorithm to get the best performance enhancement. Another equally useful option is to fine-tune the code or add the so-called parallelism to your code. You can also take advantage of the external libraries which might solve your problem faster or you can also rewrite your code in assembler as your last resort. The video will also provide actual demonstrations of how these techniques are being applied to Delphi. Primoz will also show how running less code can impact the performance and some important things to consider when executing the program. To learn more about how you can effectively improve your performance in Delphi, feel free to watch the video below.  

Read More