From the blog

What You Need To Know About Tkinter And DelphiFMX Python GUI – Which One Is Better?

Embarcadero Technologies recently launched a new video series on their YouTube Channel entitled “Embarcadero Open-Source Project Stream” which aims to highlight some of the open-source projects that are sponsored by Embarcadero.  Each week will focus on a certain project and will be attended by a group of panelists from Embarcadero. For this video, we will get a side-by-side comparison between two Python GUI toolkits; Tkinter and DelphiFMX. Both of which do not just work well effectively as a Windows UI toolkit but also work with other platforms such as Android, macOS, and even Linux. What are the differences between the Tkinter and DelphiFMX for Python GUI? Delphi and Python are two powerful programming languages and they both have their own strengths and weaknesses. Whether you are a long-time Delphi user or a Pythonista, it doesn’t necessarily mean that you have to stick to one language as you can freely combine them both to build a more powerful coding environment. Tkinter, for instance, is Python’s de-facto standard GUI that currently supports 7 different theme styles, 18 widgets, 3 layout options, and an online visual designer. DelphiFMX, on the other hand, is powered by the Python4Delphi library. It gives developers the ability to take the powerful and mature GUI frameworks of Delphi’s FireMonkey framework and use them in a Python coding environment. Both have High DPI and style support, and they also support asynchronous/ multithreaded applications. Tkinter, however, notably works on more platforms but DelphiFMX has simplified Android deployment. In addition to that, the Delphi designer also provides much greater flexibility and control than the designers available for Tkinter. The discussion will also highlight some of the additional projects that come along with the Python4Delphi framework including the PythonFMXBuilder (that bundles a Python Script into an Android application), Delphi4Python (D4P) Exporter (an IDE plugin for Delphi to export for Python), and DelphiVCL4Python (the lightweight native windows framework for Python). The video also showcases various demos showing how DelphiFMx works on Python. To learn more about the DelphiFMX GUI toolkit, feel free to watch the video below.

Read More

Announcing FlexCel 7.15 with experimental Lazarus support

And today we are delivering it. Experimental support (official support is coming once FPC gets anonymous methods in trunk), but usable and working fine. While the polls were 70% in favor of supporting Lazarus, we understand it is still a small number of people needing it. But we also know that those who need it, really need it. And also, if we third-parties don’t support Lazarus, less people is going to use it, giving less incentive to make third party components, and the cycle continues. So we are going for it, and we will try to keep it working as long as supporting it isn’t an unreasonable effort. At the moment, we think it is completely feasible to keep Lazarus support along with the Delphi support. To get started, get FlexCel for Lazarus from our website, and read the Lazarus guide.

Read More

Top 5 compliance features to leverage in GitLab

GitLab’s compliance management capabilities are designed to integrate compliance into development and deployment processes from the start. As a tenured compliance professional and member of our Security Compliance team here at GitLab, I can tell you from experience it is always easiest to design your processes to be secure and compliant from the start than it is to re-engineer existing processes to be compliant. Why should you care about your GitLab instance being secure and compliant? In additon to reducing the risk of a breach and lowering costs, there are regulatory and compliance requirements to consider. Regulatory and compliance audits are unavoidable and can be time-consuming and stressful. However, GitLab has many easy-to-use, built-in features that may help fulfill your organization’s compliance requirements and make your environment more secure. Here at GitLab, these are features we use everyday. The best part is, most of the features I’ll outline below are included as free features. Note: I’ll add an asterisk (*) next to any feature which is not available on our free tier. Here’s the tl;dr list: 1. Enable MFA Enabling MFA is simple and reduces the risk of attacks by making it more difficult to gain access to accounts. MFA can be enforced for all users in your GitLab instance in the admin center. Alternatively, MFA can be configured for accounts individually. You can learn how to enable MFA in our GitLab documentation. Compliance standards and GitLab controls for MFA MFA relates to the following compliance standards: AICPA TSC CC6.1 ISO 27001 2013 A9.2.3, A9.2.4, A.9.3.1, A9.4.3 NIST 800-53 IA-5, IA-5(1), IA-2(1), IA-2(2) Illustrative GitLab controls for MFA: IAC-02: GitLab Inc. has implemented mechanisms to uniquely identify and authenticate organizational users and processes acting on behalf of organizational users. IAC-06: GitLab Inc. has implemented automated mechanisms to enforce MFA for: remote network access; and/or non-console access to critical systems or systems that store, transmit and/or process sensitive data. 2. Review privileged access for critical projects Undoubtedly, one of the biggest risks to your environment is logical access. To reduce the risk, we recommend administrators ensure access is restricted based on the principle of least privilege. Access should be monitored continuously as access changes can occur multiple times, daily, in most organizations. In order to appropriately review access in your GitLab instance, it is important to first understand the access security structure within GitLab. Breaking down the access security structure Within GitLab, there are six different roles that can be assigned to users – “Guest”, “Reporter”, “Developer”, “Maintainer”, “Owner” and “Administrator”. Privileged access within GitLab is considered to be the “Administrator”, “Owners”, and “Maintainers” roles. GitLab Administrators receive all permissions Owners and Maintainers are considered administrative because these roles have permissions to do highly sensitive actions including but not limited to: managing merge settings; enabling or disabling branch protection; managing access to a project; managing access tokens; exporting a project; and deleting issues, merge requests, and projects. As privileged access is the highest risk to your environment, these roles should be tightly controlled. Some best practices in regards to ensuring access is restricted based on the principle of least privilege include: When privileged access is requested, ensure appropriate approvals are received prior to access being provisioned. Best practice is to obtain approvals from the data owner and the manager of the […]

Read More

Open core is worse than plugins… and that’s why it’s better

Open core is obviously a horrible approach to creating a product with an ecosystem of extensions and integrations: There are no proper protocols and interfaces. Instead, anyone can just add their integration to the code base and even adjust said code base to their needs if it doesn’t fit. So why have we been using the “Worse” approach at GitLab for many years now, with great success? Because Worse is Better (a term conceived by Richard P. Gabriel). Of course, it turns out that “Worse” is actually even better than Worse is Better suggested. Gabriel’s original argument was that (slightly) intrinsically worse but simpler and easier to implement software has better survival characteristics than better-designed, more complex software, and thus will consistently win in the marketplace. At GitLab, we have found that this is basically true, which is why we, for example, favor “boring technology,” even if it might not be the best possible solution for a given scenario. But this doesn’t tell the whole story: It turns out that such software is not just more successful, it also ends up being qualitatively better in the end. Worse is even better It is important to note that Gabriel’s original argument was not that bad software wins out. In fact, both his “worse” and his “better” have the same qualities: Simplicity, of interface and implementation Correctness Consistency Completeness However, his “worse” and his “better” have slightly different weights for the value placed on these characteristics, with the (worse) New Jersey school favoring simplicity of implementation over simplicity of interface, whereas the (better) “MIT” school favors simplicity of interface, even at the cost of a more complex implementation. If a simple interface can be achieved with a simple implementation, both schools agree, the difference comes when there are tradeoffs to be made. What makes worse even better, and what Gabriel didn’t take into account even in later versions, is the tremendous value of feedback loops. Being early doesn’t just let the New Jersey approach win in the marketplace, it also allows it to collect feedback much, much earlier and much more quickly than the MIT approach. Paul MacCready won the first Kremer prize not by initially setting out to build the best human-powered aircraft, but by building the one that was easiest to repair in order to gather feedback more quickly. While other teams took a year or more to recover from a crash, his plane sometimes flew again the same day. And so it was exactly this willingness to lose sight of the prize that resulted in him winning it. In much the same way, it is these quick feedback loops that a “worse” approach enables, started much earlier, that eventually lead to a better product. The problem with plugins At least since the success of Photoshop, a proper plugin interface has been recognized as The Right Way to make software both more compelling for users and less easy to leave behind by creating a third-party ecosystem that provides useful functionality without the vendor having to provide all of that functionality themselves. It was so successful that systems like OpenDoc took the idea further to be just a set of plugins, with no real hosting application. None of these systems succeeded in the marketplace. One of the reasons is that good plugin interfaces are not just hard, but downright fiendishly difficult […]

Read More

Digital Twin Twitter takeovers: June recap

In June, we gave four developers the keys to our Digital Twins Twitter account so they could share their favorite tips and tricks they have learned while working in Unity. In case you missed it, here is a recap of what each of these talented individuals covered.

Read More

How to create player-centric game economies

Having a firm grasp on the resources, currencies, sources, and sinks in your game is a great start to building a healthy economy, but understanding what behaviors exist within your player base will allow you to tailor your reward and progression design choices.  In this guide, we’ll dive into how you can design your economy around different types of players through the following topics: Payer vs. non-payers Different levels of engagement Player motivations Planning your player journey Using A/B testing to improve your in-game economy Learn about our suggestions for each player type and the variables you should test in Designing a balanced in-game economy. By developing a strong understanding of sources and sinks, currency and resource management, as well as the various types of players of your game, you’ll be fully equipped to create a healthy in-game economy that can drive player engagement.  Start learning today in the first of our introduction to economy series: What is an in-game economy, or skip to Building an in-game economy and Designing a balanced in-game economy. If you want to get started building your own game economy, Economy from Unity Gaming Services has everything you need to design and manage it. If you feel you’re ready for A/B testing, Remote Config lets you run different tests that target specific player segments without code changes or app updates.

Read More

Why Are UI Components Important For Web Based Development

Organizations are looking for web applications that provide users with many unique functionalities. For anything they provide, the User Interface is the most important part of a web application. UI helps capture the users’ attention and keeps the user engaged with the application. UI components play a major role in making web application development faster and easier. This article discusses why UI components are important for web based development.   How can you develop UIs faster and easier in your web based development? Building a UI that meets all your design, functional, and performance requirements takes considerable time and effort. However, you need to consider the project timeline and the available resources to deliver the project on time. UI components help developers to build UIs faster because they are reusable across the application. Once you build a new component, you can use it wherever you want. Also, if you want to extend the functionalities, you can build on the existing components. All these things minimize code duplication and reduce the coding time and effort eventually saving money for you. Therefore, UI components are the best solutions if you want to build web applications faster. Does consistency of UI designs matter in your web based development? Consistency is of utmost importance for a UI because it provides a professional look and feels and promotes usability. If the UI is not consistent across all the applications or web pages, then it might confuse the user. A consistent user experience helps customers understand your application’s functionalities and makes navigation across the UI much easier. You can use the same UI component for all the related UI parts without doing significant code changes. Thus, UI components help to bring that consistency to the UI. You can easily establish a standard set of components for some important parts like the company logo, headers, footers, etc. Thus UIs of all the applications across the organization can be standardized.  Do you want to do UI customizations for your web based development? Not every UI components stay the same across the applications. You may require to do some modifications to the existing components. Customizations are important if you want to change the behaviors of application components but do not want to impact and mess up the code of existing components. With the UI components, it is easy to do customizations. For example, you can add different styling for the same component without changing its internal functionalities and minimal code. Also, if you want to extend the UI parts to provide more functionalities, you can do so with UI components. This flexibility is important when building larger applications because you can easily do it with lesser time and effort.  Are efficiency and scalability the top-most priorities for your UI? When implementing the UI, one of the most important things to consider is the efficiency of your application. For UIs, there are specific efficiency-related metrics usually UI developers need to be aware of, but generally, the component load time is an important factor to consider. Are your web components loading according to your defined Service Level Agreements (SLAs)? If the UI takes a significant time to load, it may impact the user experience.  But, most UI components provided by component libraries are designed to achieve better performance. Also, scalability is another […]

Read More

Which Frameworks Can Be Used To Develop Cross Platform Applications?

As a methodology for software development, cross platform applications development has been rapidly gaining traction – and for good reasons too. Putting it simply, cross-platform development means developing software that will work across multiple platforms and types of devices. Unlike traditional frameworks that limit your application to a specific type of device or operating system, cross-platform applications can function almost anywhere, certainly on the most popular and recent equipment. However, we’ve only covered the tip of the iceberg regarding cross-platform app development. So, what are the options? When it comes to cross-platform development frameworks, there are a few options available – yet not all of them are created equal. Some are better suited for certain types of applications than others. In this article, we will take a look at some of the most popular cross-platform development frameworks and see which ones might be the best fit for your project. Single Platform vs. Cross platform applications development – how do they differ? In the world of applications and software development, there are two main types of development frameworks: those that allow you to develop native, vertical, single target applications and those that will enable you to create cross-platform apps which will target multiple devices and operating systems from the same code base. As mentioned above, native vertical single target applications are specific to a particular individual operating system. Namely, they are written in the language and framework “native” to that operating system. Cross-platform applications, on the other hand, are not tied to any one operating system. They can be run on multiple platforms with little or no modification. The code for cross-platform applications is usually written in a language that can be compiled into bytecode or interpreted by a virtual machine. As long as the code can be correctly interpreted and translated into bytecode, any device that has a processor can work with it. This additional layer of interpreter can add a significant overhead in terms of memory and processing speed. Also, the byte code runtime often doesn’t give full access to the device’s sensors and hardware since it is a ‘one size fits all’ approach which compromises on low level accessibility in exchange for ease of development and deployment. However, some cross-platform frameworks are available which do not use this additional interpretative layer but instead compile down into native binaries. One such system is RAD Studio Delphi which allows you to have all the benefits of writing a single set of source code yet produce fully native applications which embrace the full power and range of capabilities of the operating system and hardware of the device on which the apps are running. RAD Studio offers two main development frameworks – VCL, which is aimed at Windows, and FireMonkey FMX. So, which type of development frameworks should you use? Well, there is no 100% correct answer, as it really depends on your needs. If you need to develop an application with RAD Studio that will run on multiple platforms, then a cross-platform framework is definitely the way to go and FireMonkey FMX makes a lot of sense. However, if you definitely only need to build an application for a single platform the VCL Windows native framework might be a good choice as it brings with it some specific benefits for Windows […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Image Sliders

With our Tabulator miniseries out of the way, we’re back to check out other interesting and useful JavaScript libraries that we can use in our TMS WEB Core projects. This time out, we’re going to have a look at image sliders, sometimes referred to as image carousels.  There’s a TWebImageSlider included directly in TMS WEB Core that’s ready to go, based on the very capable Swiper.  But we’ll also have a look at the popular Bootstrap Carousel, the venerable Slick Carousel, and the ultra-modern Glide.  Each has its own default look, but they can all be customized in various ways.  Some have dependencies to be mindful of.  But they’re all well-tested and reliable, and any of them would make a solid addition to your project. Motivation. Whether you need some kind of image slider in your project is usually self-evident. But sliders don’t have to be used just for image content. A slider could be used instead of a combo box, displaying a set of cards to select from, where the user can cycle through different options. Or as an alternative to traditional menus.  Or even to display notifications. Plenty of non-image possibilities. But no matter the type of content being displayed, a slider can have a big overall impact on a project.  So finding a slider with the right mix of presentation and interaction options is important. If your project is already using Bootstrap or jQuery, then perhaps Bootstrap Carousel or Slick Carousel would be a natural fit, respectively.  Or perhaps there’s a key feature in one of these sliders that with catch your attention and be important enough to your project to warrant including a dependency that wasn’t previously needed. As always, nothing but choices here, so let’s have a look. The Setup. For our examples, we’re going to use a set of 10 images of different sizes, just to make it easier to see what is going on. Generally, things work more smoothly and look considerably nicer when the images are all the same size, but that’s often not an option.  The intent though is to find a slider that can be added to our Actorious project to display sets of photos of People, Movies, or TV Shows. Which will typically be all the same size, conveniently.  All the sliders we’ll be looking at today have no problems displaying content of different sizes, even if we have to lean on them a little to get them to cooperate. The sample images are stored in an img folder in the example project, and a link to that can be found at the end of this post. All the sliders use URLs to reference the images, via tags, naturally, so not hard to include these. With the contents of the img folder added to our project, the images are automatically copied to either the Debug or Release folders as needed, and can just be referenced via an img/filename.png link or URL. TWebImageSlider and Swiper. The obvious first choice for a TMS WEB Core project is to use the readily available TWebImageSlider component.  Let’s add this component to a new project and set the size to be 900×300, just as a set size for our examples. Then, add the sample images via the ImageURLs property in the Delphi property inspector. Without doing anything else, we get the following slider, fully […]

Read More

New TMS WEB Core v2.0 browser API support

It’s not a secret that the browser API supports ever more machine hardware related features, making it slowly but surely a cross-platform operating system on its own.  As it is also always a goal of TMS WEB Core to make it Object Pascal developers ultra easy to take advantage of everything the browser offers, we added in TMS WEB Core v2.0 classes and a new component to take advantage of 2 new interesting browser APIs. The multi-screen API and the speech recognition API. Multi-screen API The multi-screen API allows the developer to detect from a web application, how many screens are connected to a device, retrieve the characteristics of the screens and control the placement of browser windows on these multiple screens connected to the machine.You can find the w3 spec for the multi-screen API here and a more informative article about its use https://web.dev/multi-screen-window-placement/. As we added Object Pascal classes to retrieve information from and manage these multi-screen configurations, we also created a demo that you can find in the TMS WEB Core demos folder under DemoBasicsMultiscreen and wrote a blog article about it. Now today, our chief evangelist Dr. Holger Flick also discusses it in his new video. Speech recognition API Create voice command driven web applications or write a dictaphone application that now automatically captures your spoken information as text, … it now all belongs to commonly available functionality when you use web technology. The browser speech recognition API is now available in Chrome, Edge and Safari. In TMS WEB Core v2.0, this is exposed as a non-visual component with events triggered returning spoken words as text or with a command collection the component can listen to and trigger events when the commands are spoken. In this video, Holger also explains the speech recognition API and the demo in more detail so you can get started using it in your applications easily.  Miletus Note that these new web technologies are also available when you create a Miletus based native cross platform application with TMS WEB Core. Miletus applications are web technology based applications that run as native cross platform applications for Windows, macOS and Linux and also have direct access to even more operating system resources such as the file system, local databases, operating system dialogs and more. Learn more about the amazing Miletus technology in this blog article with video.

Read More