Noutați

What Are The Best UI Frameworks For Windows App Development And How To Add The Wow Factor To Them

The recent version of Microsoft Windows brought a vast of important upgrades and changes which also made a huge impact on the entirety of windows app development. When developing a Windows application, one of the first things to consider is the User Interface. There are a great number of UI frameworks to choose from and each comes with its own strengths and weaknesses. In this webinar, Embarcadero MVP Ian Barker will deep dive into some of the best UI frameworks for Windows and the advantage of using them for application development. He will also share some methods of creating the best User Interface possible. The challenges of using Windows 11 and the use of its native Win UI3 Library While the interface of Windows 11 is undeniably appealing, it can also be slightly terrifying for some users. The changes made in Windows 11 are all visually recognizable. One of which is the new centered toolbar. Although the new toolbar is set in the center by default, this can still be configured and placed back on the left side which we are all very familiar with. There is also a new type of Windows behavior known as Windows Snapping that allows you to align your programs up so they are more organized. Windows comes with its own UI library. The newest generation is the Win UI3 which can be used to build production-ready desktop/Win32 Windows apps. Despite being a native GUI library for Windows, Win UI 3 is notably more complex compared to other UI frameworks. If you are looking for Windows 11-friendly UI frameworks that are more manageable, Delphi’s VCL and FireMonkey (FMX) libraries are surely a perfect fit. How to add a “WOW” factor to your VCL and FMX Apps Ian Barker will also discuss how to make the user interface of your VCL or FireMonkey apps more visually appealing. There are cool things you can do with the FireMonkey and with the VCL that can emulate Window’s Fluent UI design system and some of its behaviors. You can also take advantage of third-party suppliers such as the StyleControls VCL which provides the whole set of components allowing you to produce fluent UI interfaces. Skia4Delphi can also turbo-charge your FireMonkey and VCL apps. Skia4Delphi is an open source 2D graphics library that provides common APIs that work across a variety of hardware and software platforms. We can also recall Barker creating a Star Trek-inspired data dashboard using the Skia4Delphi library. To know more about the best UI frameworks for Windows 11 development, feel free to watch the video below.

Read More

Benchmark Study: Which Target Platforms Do Electron And Delphi Support?

Which target platforms do Delphi and Electron support? The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. Delphi Delphi, encapsulated in the Rapid Application Development (RAD) Studio IDE, is Embarcadero Technologies’ flagship product. A proprietary version of the Object Pascal language, Delphi features graphical application development with “drag and drop” components, a WYSIWYG viewer for most mobile platforms, and robust style options including platform-standard and unique palettes that provide a fully customized look and feel. Among other features, included libraries provide GUI controls, database access managers, and direct access target platform hardware and platform operating systems. The Delphi FireMonkey (FMX) framework will compile projects to native code for 32-bit and 64-bit Windows, macOS, Android, iOS, and Linux, allowing users to develop and maintain one codebase reaching most of the market. Delphi has been available for over 25 years. Electron Electron is an open-source (MIT License), Chromium-based framework that utilizes web technologies to build desktop applications on Windows, macOS, and Linux. It is developed and maintained by GitHub, a subsidiary of Microsoft. Electron combines the Chromium-based rendering engine with a Node.js server environment. As such, the user interface for an Electron application is available via HTML5 and CSS. Generally, Electron works with most Javascript frameworks such as Angular, Vue.js, and React. The HTML5, CSS, and Javascript-based technologies found in Chromium provide a rich ecosystem of user customization familiar to any web developer. Despite its relatively young age of five years, its community boasts open source packages for database access, operating system interactions, and other common tasks. Benchmark Metrics This post is part of a series of blog posts that look more closely at each of the individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Flexibility Framework flexibility was examined qualitatively through research and conversation with experts in Delphi and Electron and sought to analyze the application of each framework to business problems and requirements. Delphi’s major advantage in the flexibility category is its ability to deploy one body of source code to any major desktop or mobile platform as a native binary executable, maximizing application market reach while minimizing maintenance/upgrade headaches due to code duplication. The framework supports projects of every scale from logic controllers for industrial automation to world-wide inventory management and functions within every tier from database-heavy back-ends to client-side services. Finally, Delphi’s standard libraries provide simplified access to most database products , fully support Unicode and other modern standards, and broaden access to operating system functionality on every platform as well as I/O devices and sensors. Electron is an open-source framework targeting all desktop operating systems through its Chromium base. It typically focuses on web-centric, client-side applications but can accomplish middle-tier and database services using runtimes and libraries like node.js and node-postgres. Hardware access and limited operating system interactions are provided by node.js libraries and Electron’s Chromium core ensures compliance with modern Unicode standards. After reviewing both frameworks, Delphi holds the lead in the flexibility category due to its flexible and automated deployment to all major platforms, scalability to every level of development, and visual design system. Electron enjoys a lower barrier-to-entry and more development tool options but requires manual […]

Read More

3 keys to success for product operations

It is official. Product operations is a thing. A quick Google search will pull up a long list of articles singing the praises of everything product operations has to offer, from making product managers more efficient to data collection and synthesis. When I first took on product operations at GitLab, there wasn’t a lot of definition or guidance on the topic. I understood what product operations meant because I’d been “doing it” as an inseparable part of my product management and product leadership roles for some years. But I’d never had the opportunity to focus solely on product operations. As excited as I was, I was also nervous. GitLab was accelerating toward an IPO and both the product management team and the product were in hyper growth mode. And, to boot, the all-remote, cross-functional teams were in motion, sync and async, day and night, all around the globe. So, I reached out to peers who had already started their product operations journey and leveraged the perspective, progress, and learnings they generously shared. And, in doing so, I realized everyone was doing it a bit differently. Now, two and a half years later, product operations is a thing at GitLab. And the most common question I get from peers reaching out to me is: How can I set up product operations for success at my organization? To answer this question, I will assume we all want to be product-led and customer-centered, and “success” would be product operations helping us get there. I’ll also assume we agree with the sentiment that’s evolved defining product operations responsibility to fall into these core areas: tools, data, experimentation, strategy, and trusted advisor. While there is no one formula, I will share three keys that opened doors for product operations to make an impact and grow with GitLab. 1. Empower product operations as its own function, with an equal seat alongside other value-driving functions At GitLab, we run product operations as an independent function under the product umbrella. The direct line of responsibility to the head of all product ensures product operations has awareness, alignment, and accountability to the macro needs of the product and the business. This also allows product operations to maintain a broad and unbiased view, as well as the right level of influence, to develop strategies/tactics serving the product and the business without favor toward any particular group. This Silicon Valley Product Group article by Marty Cagan provides more helpful context on the why of this approach. 2. Make product operations a people-first operation Before product operations can deliver on efficiencies and tools that are useful for the product and the business, product operations must understand all of its internal customers. The first year product operations took shape at GitLab, much of my energy was focused on building relationships, not only with product team members but across the whole organization. Becoming a trusted advisor runs deeper than just delivering data, it’s about sensing pain and building bridges. A product operations team that leads with empathy will elevate the organization rather than just serve the organization. 3. Drive adoption of product operations strategies by providing opportunities for team ownership At GitLab, everyone can contribute. Leveraging this mindset for product operations led to more impactful and better-designed iterations to the problems we were trying […]

Read More

Lingo: A Go micro language framework for building Domain Specific Languages

Domain Specific Languages (DSL) are small, focused languages with a narrow domain of applicability. DSLs are tailored towards their target domain so that domain experts can formalize ideas based on their knowledge and background. This makes DSLs powerful tools that can be used for the purpose of increasing programmer efficiency by being more expressive in their target domain, compared to general purpose languages, and by providing concepts to reduce the cognitive load on their users. Consider the problem of summing up the balances of different bank accounts in a CSV file. A sample CSV file is provided in the example below where the first column contains the name of the account holder and the second column contains the account balance. name, balance Lisa, 100.30 Bert, 241.41 Maria, 151.13 You could solve the problem of summing up balances by using a general-purpose language such as Ruby as in the code snippet below. Apart from the fact that the code below is not very robust, it contains a lot of boilerplate that is irrelevant to the problem at hand, i.e., summing up the account balances. #!/usr/bin/env ruby exit(1) if ARGV.empty? || !File.exist?(ARGV[0]) sum = 0 File.foreach(ARGV[0]).each_with_index do |line, idx| next if idx == 0 sum += Float(line.split(‘,’)[1]) end puts sum.round(2) Below is an example AWK script that solves the same problem. AWK is a DSL that was specifically designed to address problems related to text-processing. #!/usr/bin/awk -f BEGIN{FS=”,”}{sum+=$2}END{print sum} The Ruby program has a size of 208 characters, whereas the AWK program has a size of 56. The AWK program is roughly 4x smaller than its Ruby counterpart. In addition, the AWK implementation is more robust by being less prone to glitches that may appear in the CSV file (e.g., empty newlines, wrongly formatted data-fields). The significant difference in terms of size illustrates that DSLs, by being more focused on solving specific problems, can make their users more productive by sparing them the burden to write boilerplate code and narrowing the focus of the language on the problem at hand. Some popular DSLs most software developers use on a regular basis include Regular Expressions for pattern matching, AWK for text transformation or Standard Query Language for interacting with databases. Challenges when designing Domain Specific Languages Prototyping, designing and evolving DSLs is a challenging process. In our experience this is an exploratory cycle where you constantly prototype ideas, incorporate them into the language, try them out in reality, collect feedback and improve the DSL based on the feedback. When designing a DSL, there are many components that have to be implemented and evolved. At a very high level there are two main components: the language lexer/parser and the language processor. The lexer/parser is the component that accepts input as per the language definition which is usually specified specified by means of a language grammar. The parsing/lexing phase produces a syntax tree which is then passed onto the language processor. A language processor evaluates the syntax tree. In the example we saw earlier, we ran both the Ruby and AWK interpreters providing our scripts and the CSV file as input; both interpreters evaluated the scripts and this evaluation yielded the sum of all the account balances as a result. Tools such as parser generators can significantly reduce the effort of lexer/parser development by means […]

Read More

Bookmarks and Navigator are available for RAD Studio 11!

Bookmarks and Navigator, originally known as the Parnassus plugins, are some of our most-requested IDE addons. We’re very glad to let you know they are now available in GetIt for RAD Studio 11. To install, go to the Tools menu in the IDE, GetIt Package Manager, and select the IDE Plugins section in the category selector on the left: Bookmarks is a developer-favourite addon that replaces the editor’s inbuilt bookmarks, with an unlimited number of bookmarks, a handy shortcut (Ctrl+B), avoids overwriting bookmarks accidentally, caret bookmarks for quick toggling of location and reverse/stack navigation, a docked window showing bookmark context, and more. Navigator is a related plugin that helps you quickly navigate anywhere in your code: press Ctrl+G, and type to filter to show all useful elements in the current unit. You can type, for example, ‘prop Foo’ (or even shorter, ‘p f’ or even ‘f’ if you have few enough items to make this useful: it filters more as you type more) to find properties with Foo in their name, or find property read/write fields or methods related to that property… or to navigate to classes, records, enums and other types; unit sections like uses clauses; methods; variables, and more. Anything useful in your unit is shown in Navigator and is quickly accessible. It also adds a minimap to the IDE editor showing where you are in your code. RAD Studio 11 showing the Bookmarks and Navigator plugins both in use: bookmarks are shown in the editor and the docked window on the bottom right, while the Navigator plugin is providing the minimap on the right side of the editor and the floating navigation window where I’m searching for a method Bookmarks and Navigator are usually available immediately with the release, and that did not happen for RAD Studio 11. However, we have configured our internal build so that these plugins will always be available in future: that is, you can feel assured we have internal setup to not repeat the delay. The third Parnassus plugin, Debugger, should also come within a few days. The plugins are available for both RAD Studio 11.0 and 11.1; in fact, the screenshot above is taken with RAD Studio 11.0. Thankyou for your patience waiting for these plugins, and we hope you find the Delphi and C++Builder IDE even more productive and pleasant to use with these extensions! Don’t forget — they’re available right now in GetIt. Happy coding!

Read More

Windows 11 Win32 Debugging Patch for RAD Studio 11.1

There is a new patch (or hotfix) available for RAD Studio 11.1. The patch addresses an issue specific to debugging Win32 apps on Windows 11, where the IDE sometimes appears to freeze. Typical situations where you could observe the freeze include evaluating watches with side effects, opening the Threads view to switch threads, attaching to a process, and other common debugging actions. The issue is caused by getting the thread wait chain (GetThreadWaitChain()), which sometimes takes up to a minute. It is resolved by disabling the thread wait chain feature in the debugger. The exact cause of the thread wait chain delay is unknown but it appears to be related to a thread having a socket open, possibly where the thread is waiting to finish network IO. Thread wait chain information is disabled for Win32 on both Windows 10 and Windows 11. There is an environment variable to re-enable it if you need the feature: set DBK_ENABLE_WAITCHAIN=1 on a command prompt, and run RAD Studio (alternatively, set that environment variable globally for Windows.) Only Windows 11 is affected by the issue, so you only need to install the patch on Windows 11. Installation You can download this in GetIt (our recommended technique; also it will show as available on the Welcome Page when you start the IDE) or install manually after downloading from my.embarcadero.com (the zip file contains a batch file installer.) The RAD Studio 11.1 Welcome screen showing the ‘Patch available’ button. Click this to install patches, including this one. Remote Debugging Because this patches the debugger, if you do remote debugging you will also need to update PAServer on the remote machine. The patch installer replaces the (your RAD Studio install location)PAServersetup_paserver.exe file, but you’ll need to copy that over to the remote machine and install it. There are full details in the patch readme.  

Read More

The Metaverse Minute: Auggie Awards edition

Not one, not two, but all of the experiments housed in the Petricore AR Experiments app were created using Unity’s AR Foundation. This whimsical collection of activities includes taking a family photo, petting a virtual dog, mixing paint colors from the real world, and more. This eclectic app is a celebration of AR. The AR Paint Bucket game is one of our experiments where a player places an AR paint bucket and has to grab colors from the real world to mix and match a given target color. Our inspiration for this was the TikTok trend of people trying to guess the color of mixing paint. We used Unity to develop the Paint Bucket game, relying primarily on AR Foundation. AR Foundation/Unity made it really easy to jump in and build something that’s fun quickly, which was our goal with these experiments. – Oliver Awat, Lead Designer & Senior Developer, Petricore

Read More

How To Create An HTML CSS Grid

An efficient and robust Javascript data grid is vital for building a data-intensive web app. The massive volumes of data generated by small and medium enterprises call out for the need of good JavaScript developer tools that can help you build web apps capable of handling millions of data points. Ext JS meets all your requirements ranging from building a simple HTML CSS grid to a more complex and sophisticated responsive HTML 5 data grid. Continue reading for step by step instructions on how to create an HTML5 grid. To keep things simple we are creating an app using just a single HTML file. You can put all the JavaScript code in the same file. The final JavaScript data grid we’ll build looks as follows: Step 1: Which Files do I Need to Import to Create HTML CSS Grid? As a first step, link the CSS stylesheet in your HTML 5 grid project. This file will import the CSS grid layout. Create an empty HTML file and add the following line anywhere in the header of the HTML file: Next, you need to include the Ext JS library to import the objects of the HTML CSS. Add this to the HTML file: Step 2: How do I Create the Data Model for the HTML CSS Grid? To set up the data grid in JavaScript, you need to define the data model with all the fields of our grid. This is defined in the onReady() method that you can add to the script section of the HTML file. Ext.onReady(function() { Ext.define(“com.extjsGrid.Sencha”, { extend: “Ext.data.Model”, fields: [“Product”, “Environment”, “Description”] }); The above code defines a grid model com.extjsGrid.Senchawith three data fields named Product, Environment and Description. Note this onReady() function is not complete yet. We still have to define the data store and display method inside it. Step 3: How do I Create the Data Store for the HTML CSS Grid? As a third step for creating the JavaScript data grid, you need to create a data store for our HTML 5 data grid. We’ll create a variable senchaStore that is tied to our com.extjsGrid.Sencha data model. We’ll populate the data grid using the data key of our JSON data store object. Append the onReady() method with the following code. var senchaStore = Ext.create(“Ext.data.Store”, { model: “com.extjsGrid.Sencha”, data: [ {‘Product’: ‘Ext JS’, ‘Environment’: ‘Javascript’, ‘Description’:’Ext JS is the most comprehensive JavaScript framework for building feature-rich, cross-platform web applications’}, {‘Product’: ‘React Grid’, ‘Environment’: ‘React’, ‘Description’:’React Grid by Sencha is a perfect modern enterprise-grade grid solution for React UI that comes with 100+ amazing data grid features.’}, {‘Product’: ‘Ext Angular’, ‘Environment’: ‘Angular’, ‘Description’:’ExtAngular provides the most complete set of components for building data-intensive web apps using Angular.’}, {‘Product’: ‘Ext React’, ‘Environment’: ‘React’, ‘Description’:’ExtReact is the most complete set of React components for building data-intensive web apps using React’}, {‘Product’: ‘ExtWebComponents’, ‘Environment’: ‘Javascript’, ‘Description’:’ExtWebComponents provides a framework-agnostic set of over 140+ UI components for application development.’} ] }); Step 4: How do I Display the HTML 5 Grid? You can display the HTML 5 data grid using the Ext JS panel. Add the following code after adding the data store of step 3. Ext.create(“Ext.grid.Panel”, { renderTo: document.body, store: senchaStore, title: “Sencha Products”, width: 1000, columns: [{ text: ‘Prodcut’, dataIndex: ‘Product’, autoSizeColumn: true }, { text: […]

Read More

Tkinter vs DelphiFMX in the Embarcadero Open Source Stream

We are starting something new, and I’m pretty excited about it. This is the first in a series of regular live streams discussing the latest in open source projects. Both projects sponsored by Embarcadero and key projects in the community. I will be the the host, and I’ll be joined by members of the community, developers involved in these open source projects, as well as members of Embarcadero and Idera’s Product Management. Our first stream, next week, is focused on Tkinter vs DelphiFMX for Python GUI development, so is squarely aimed at the Python developer. Thursday, Jun 2, 2022 at 10:00 AM CDT These streams serve multiple purposes: Collaborate for me with other project managers at Embarcadero and Idera to shape the roadmap and how we support these projects Share behind the scenes conversations with the community of these conversations Collaboratively shape the future of these open source projects Regular updates for what’s new with these projects and the community The goal is to rotate through projects each week and include a theme with the project. For example this week we are discussing the DelphiFMX for Python GUI library and comparing it with Tkinter, the existing de facto Python GUI library. This is a good opportunity to see gaps where DelphiFMX can improve, while seeing what DelphiFMX does to improve the life of the Python developer. Speaking of Python GUI development, we have a new . We will also look at some of the related projects for Python : Agenda for the stream: Tkinter vs. DelphiFMX Overview and comparison of the two libraries Where can DelphiFMX improve? What’s new in DelphiFMX Review Issues & Pull Requests Answer Questions Other feedback or contributors Plan roadmap for future changes Future streams will cover other projects in our Python Ecosystem, non-Python projects, and even community projects we love! This is the latest map of your Python Ecosystem. I’ve split it into two parts, the top half is projects for Python developers, and is the focus of the stream on June 2nd. We are planning on June 9th to focus on projects for Delphi developers that wrap Python libraries for simple Open Pascal based development. I’m really excited to show what we are working on there. Here is a list of some other open source libraries we may discuss in future streams: SonarDelphi Sonar-Delphi plugin used to analyze Delphi projects with SonarQube Bold for Delphi – A Model Driver Architecture (and ORM library) for Delphi Dev-C++ – A fast, portable, simple, and free C/C++ IDE C++ Arcade Games – 4 arcade games developed in C++Builder with FireMonkey for Windows, macOS, iOS and Android DelphiArcadeGames – 4 arcade games developed in Delphi with FireMonkey for Windows, macOS, iOS and Android DelphiBigNumbers – Really, really big integer and floating point numbers in Delphi Kastri – General purpose Delphi library skia4delphi – 2D GUI Library for VCL and FireMonkey Hashload Boss – Dependency Manager for Delphi and Lazarus And open to community suggestions As part of the live stream I will share more detailed documents about the project, but here are a few stats as a preview. Hope to see you online for the webinar on Thursday, Jun 2, 2022 at 10:00 AM CDT.

Read More

What Are Code Editors And What Is IDE Software?

Whether you’re new to programming or an expert developer, you need tools that make it easier to write and edit code. That’s why most developers these days use IDEs and code editors to simplify the process of coding and save time. An IDE software essentially consists of common development tools, such as a code editor, debugger, compiler, etc. In this article, we’ll discuss what exactly are IDEs and code editors and what you should look for in IDE software. We’ll also show you the best IDEs and code editors that you can use for your next project. What is IDE software? When we talk about IDE software (Integrated Development Environment) we mean a specialized software application that provides a set of tools required to write and test code. IDEs are becoming more and more popular as they make the process of coding/programming smooth and efficient. Additionally, IDEs help with faster coding and minimize bugs and coding mistakes. Most IDEs consist of a text editor or code editor, a compiler, and a debugger. Developers use the code editor to write and edit source code. The compiler then translates that source code into another programming language that a computer can understand. The debugger is used to test the software. Without IDEs, developers would have to use, configure, integrate and manage all of these tools separately. Some IDEs also come with other useful features, such as auto code completion, allowing developers to comment on lines of code, find references to other resources, and many more. What is a code editor? A code editor is also a software application that allows programmers to write and edit code. Code editors offer useful features, such as auto-complete, HTML tag highlight, syntax highlight, color-coding,  and many more to help programmers write and edit code more efficiently. Advanced code editors support a wide range of programming/coding languages, such as JavaScript, HTML, PHP, C++, Python, and more. What should you look for in IDE Software? Here are some of the key questions you should ask before choosing an IDE: Does your IDE offer features for faster and smarter coding? When you’re choosing an IDE, you should consider which features it offers for faster and smarter coding. Efficient IDEs like Embarcadero RAD studio offers features like auto code completion, auto code formatting, smart code navigation, auto code error detection, and more to save time and effort. Does the IDE software have an integrated toolchain? A powerful IDE like RAD Studio or Delphi is an integrated toolchain. This means the IDE provides you with all the tools (editors, compilers, and debuggers) you need for efficient software development, so you don’t have to search and buy any other additional tools or applications. Simply put, an IDE’s toolchain should include everything you need to create fully functional software. Does the IDE have efficient debugging capabilities? Good IDEs like RAD Studio or Delphi have powerful debuggers to help developers detect and fix bugs and errors in their code efficiently. RAD Studio and Delphi’s debuggers allow you to add breakpoints so that you can pause the program conditionally or at a specific location, trace the execution route of the code, inspect the current value of variables, and more. Good IDE software help you improve code quality A good IDE like RAD Studio is capable of […]

Read More