Noutați

How to leverage modern software testing skills in DevOps

Testing is a critical step in the software development lifecycle but also the part of the process most DevOps teams trip over. The solution — test automation — has been talked about for years but has been far easier said than done. However, with new technologies on the rise, test automation is taking off. DevOps teams need to be prepared with modern software testing skills. Here’s how to get started. The benefits of automated software testing In GitLab’s 2021 Global DevSecOps Survey of over 4,000 developers, security professionals, and operations team members, respondents agreed on one universal truth: Software testing is the biggest reason why development is delayed. It’s critical to get software testing right because it’s financially disastrous to get it wrong. How much money do software mistakes add up to? Somewhere in the trillions. Yes, with a “t.” DevOps.com reported that software failures in companies’ operations systems cost a total of almost $1.6 trillion in the U.S. in 2019 alone. But testing has traditionally been difficult to do efficiently and not particularly popular with developers. The solution? Test automation combined with modern software testing skills. It’s a hands-on start DevOps teams looking to up their test game need to take a step back… into manual testing. (The irony is not lost on us.) A manual testing mindset can actually improve all facets of automated software testing. As devs perform basic tests on their code as it’s being written, channeling their inner manual tester can be helpful. Whether it’s looking at the requirements again or running failed fixes one more time, that attention to detail should be brought into how automated test cases are built and executed. Take the modern view Once developers have incorporated some old-school habits into their test cases, it’s time to consider some fresh perspectives, up to and including a deep understanding of the organization’s goals and objectives. According to Modern Testing, there are key principles of modern testing that every developer needs to be aware of for successful testing at any stage: Job one is to make the business better. Rely on trusted resources like Lean Thinking and the Theory of Constraints. Fail fast but focus on success. Always be the customer when testing. Do data-driven work. Testers are evangelists. Get certified As the saying goes, every little bit helps. Though it is not required, a training program or certification course in software testing can enhance team capabilities. If there’s interest in this option, research courses online that might fit. From beginners to experienced testers, there’s something for everyone. Not sure where to start? Teams can explore the International Software Testing Qualifications Board (ISTQB) Foundation Level Certification for CTFL certification. This is required before taking any other certifications (see the full list of ISTQB prerequisites). After CTFL, there are many interesting certification options. The American Software Qualifications Board, which offers the ISTQB certifications, is another great resource and has a helpful Software Testing Career Road Map. Embrace new technologies Artificial intelligence and machine learning are at the core of test automation, so a thorough understanding of the technologies is a key modern software testing skill to have onboard. If AI/ML is already in use, ask to shadow or “apprentice” those working with it. Organize a Q&A for the DevOps team with an expert, and […]

Read More

Why we’re sticking with Ruby on Rails

When David Heinemeier Hansson created Ruby on Rails (interview), he was guided by his experience with both PHP and Java. On the one hand, he didn’t like the way the verbosity and rigidness of Java made Java web frameworks complex and difficult to use, but appreciated their structural integrity. On the other hand, he loved the initial approachability of PHP, but was less fond of the quagmires that such projects tended to turn into. It seems like these are exclusive choices: You either get approachable and messy or well-structured and hard to use, pick your poison. We used to make a very similar, and similarly hard, distinction between server-class operating systems such as Unix, which were stable but hard to use, and client operating systems such as Windows and MacOS that were approachable but crashed a lot. Everyone accepted this dichotomy as God-given until NeXT put a beautiful, approachable and buttery-smooth GUI on top of a solid Unix base. Nowadays, “server-class” Unix runs not just beautiful GUI desktops, but also most phones and smart watches. So it turned out that approachability and crashiness were not actually linked except by historical accident, and the same turns out to be true for approachability and messiness in web frameworks: They are independent axes. And these independent axes opened up a very desirable open spot in the lower right hand corner: an approachable, well-structured web framework. With its solid, metaprogrammable Smalltalk heritage and good Unix integration, Ruby proved to be the perfect vehicle for DHH to fill that desirable bottom right corner of the table with Rails: an extremely approachable, productive and well-structured web framework. When GitLab co-founder Dmitriy Zaporozhets decided he wanted to work on software for running his (and your) version control server, he also came from a PHP background. But instead of sticking with the familiar, he chose Rails. Dmitry’s choice may have been prescient or fortuitous, but it has served GitLab extremely well, in part because David succeeded in achieving his goals for Rails: approachability with good architecture. Why modular? In the preceding section, it was assumed as a given that modularity is a desirable property, but as we also saw it is dangerous to just assume things. So why, and in what contexts, is modularity actually desirable? In his 1971 paper “On the Criteria to be Used in Decomposing Systems into Modules”, David L. Parnas gave the following (desired) benefits of a modular system: Development time should “be shortened because separate groups would work on each module with little need for communication.” It should be possible to make “drastic changes or improvements in one module without changing others.” It should be possible to study the system one module at a time. The importance of reducing the need for communication was later highlighted by Fred Brooks in The Mythical Man Month, with the additional communication overhead one of the primary reasons for the old saying that “adding people to a late software project makes it later.” We don’t need microservices Modularity has generally been as elusive as it is highly sought after, with the default architecture of most systems being the Big Ball of Mud. It is therefore understandable that designers took inspiration from arguably the largest software system in existence: the World Wide Web, which is modular by necessity, […]

Read More

Faces of Unity – Archana Rao

What are your personal values, and what Unity values do you gravitate towards the most? My personal values are anchored in encouraging diverse views while operating with a high degree of ethics and accountability. I love all the Unity values, but I especially connect with Go Bold, as it relates to staying curious and hungry. I’m never satisfied! There is always room to go faster, do bigger things, and make more impact. Can you share any fun facts about yourself? I love to learn and need constant challenges, so my career has been an unusual zigzag path through roles in engineering, business development, and IT. I grew up in a small town in India and always wanted to be an engineer, although I would never have dreamed that I’d be a CIO one day. Despite my small-town origins, I was lucky to receive tremendous encouragement from my parents, teachers, friends, and mentors. I would not be here without them. I hope to pay this forward, and love to invest in building, mentoring, and growing diverse teams. When I was little, I was really, really scared of dogs. I got chased by a large dog as a kid and that scarred me quite a bit. But, thanks to the insistence of my kids and husband (who had a lovely Labrador growing up!), we now have two amazing dogs: Cleo, our happy-go-lucky 10-month-old Labradoodle, and Rusty, our effervescent Golden Retriever. They are the loves of my life, and I now really enjoy meeting dogs and basking in their loyalty and joie de vivre.

Read More

The 5 Best Kept Secrets Of Android App Builder Software

Do you know, in the year 2021 when COVID was arguably heading towards dominance, the number of mobile app downloads skyrocketed to 230 Billion [1] worldwide? Of those downloads, a burgeoning majority were for the Android platform. Choosing and using Android app builder software to safely ride that tidal wave to create user-centric apps and capitalize on that demand. With pandemic upending people’s usual way of working and socializing the mobile market sky-rocketed towards a faster growth because of users’ demands for apps to interact, work, and divert. With COVID still very much around but with society coming to terms with how to mitigate the worst effects the growth in mobile devices still seems to be maintained; in fact, the research forecasts Google Play Store app installs to reach a whopping 613 billion alone by 2025. So, mobile is definitely a growth market which, as developers, we can’t really afford to ignore – and Android is very much the dominant player. But what should be the characteristic of the best Android app builder software? Let’s have a look! What are the characteristics of the best Android App Builder Software? Is it free to download so you can get started instantly? Explore the features using different ways like drag and drop an element, defining a button, etc.  Does it make coding and app development quicker, improves efficiency, and works as a comprehensive app that performs a variety of functions thus eliminating the need for multiple apps? By building your own custom business app through Android app builder software, you get overall control and don’t have to depend on stuff for anything, therefore, minimizing the licensing and maintenance expenses. Does the Android App Builder software come with ample support channels meaning it’s possible that it will work well with your existing software? Ensuring any new apps you develop will work together with any existing apps is important. Apps are designed to handle a finite number of resources and operations. These apps might not be able to handle the strain as your requirements expand. With the best Android app builder software, you can easily scale up the app when the need arises which makes scaling and consolidating easier.  Here you have the characteristics to look out for let’s get to the most interesting part – the secrets! What are the top secrets you need to know about the best Android app builder software – Delphi? 1. Use the Alcinoe component library for Delphi to make your Android apps have even more epic user interfaces Because of all of the varied formats (across devices), doing a video with Delphi FireMonkey can be intimidating, and constructing a high-quality video player is difficult for the faint of heart. The Alcinoe component library is an open-source package that has already done a lot of the legwork for you in order to get the video to operate in FireMonkey on Android and iOS. It also has” Android/iOS Facebook SDK login, native iOS/Android TEdit, Firebase cloud messaging, better FireMonkey controls, ImageMagick wrapper, WebRTC Delphi wrapper, Json Parser, MongoDb client, and much more” in addition to the video player capabilities. It also has a high GitHub Stars count, indicating that it is extensively used. 2. The TFDMemTable design time edit dataset allows you to visualize what your Android app will […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Tabulator Part 7: Performance

In our final outing in this miniseries about using Tabulator in your TMS WEB Core projects, we’re going to focus primarily on one area – performance.  While Tabulator in its simplest form is amazingly quick, there is a lot more to the performance equation than just Tabulator itself.  We’ll also look at one way to implement image lazy loading, potentially applicable to any TMS WEB Core project.  And we’ll even explore one way to monitor the progress of downloading data from an XData server. By the time we’re done, you should be well-equipped to build not only functional projects, but highly performant projects as well. Motivation. One of the defining characteristics of any application, whether it is a web app, a phone app or a Windows desktop app or any other app, is how much time the user spends waiting.  Waiting for the app to load.  Waiting for the app to display data.  Waiting for the app to respond to some kind of interaction. For example, clicking a button should ideally provide some kind of feedback, even if the action being triggered cannot be completed immediately.  Scrolling should also be as fast as possible.  “Buttery smooth” as one famous person in our field liked to describe it. There are plenty of statistics to be found (naturally, with varying degrees of applicability) that relate app performance to user retention.  If an app is slow, they’ll quickly move on to something else. So we owe it to our users (and ourselves!) to make things as absolutely performant as we can. There’s almost always something that can be done to make an app faster. But is it worth it? Tabulator. Just How Fast Is It? One of the first questions to address, then, is about Tabulator itself.  There are many JS grid libraries around.  Which one is fastest?  Well, we’re not the first to come up with that question.  In fact, there’s a GitHub project focused on exactly this – JavaScript Data Grid Performance Comparison. Unfortunately, the Tabulator figures are not yet included in their results, though a PR is pending. You can read more about it here, though. The news is good – the current version of Tabulator is easily among the top performers in this comparison in every respect.  So we’re already starting out strong in the performance department. While using Tabulator with all its defaults is great, one of the benefits to many of these JS grid libraries is the ability to customize what it is doing, as we’ve been seeing over these last several posts.  And sometimes, that customization can come at a cost if we’re not paying close attention.  As an example of this, in a previous outing, we made some changes to include the row count in the column header of our tables.  We implemented this using Tabulator’s own updateColumnDefinition() function, which did exactly what we wanted. However, it turns out that this function essentially drops and recreates the entire column (so it can be sure that all the column definition parameters are accounted for). When doing this with a column filled with images, this ended up being enormously expensive. And it also triggers a table refresh, which interferes with the live filtering function.  This particular issue is something that is being addressed by the Tabulator team […]

Read More

Everything You Need To Know About The Skia Shader Language

This video will introduce us to the Shading language and what exactly it does to elevate your windows application development. Generally, a shading language is a graphics programming language adapted to programming shader effects. This program called Shaders simply tells the computer how to render each pixel to produce photorealistic or stylized surfaces to an object or image. These shaders are written in a special shading language. Currently, there is a great number of shading languages to choose from and while they all share common features and pretty much do the same thing, they might still vary in terms of restrictions and flexibility. What is the Skia Shader Language (SkSL)? Whether you are developing a game or a desktop application, the use of shading language is important to make everything visually appealing as it can drastically enhance the photorealism of an object, adding depth and texture, and even creating the illusion of three-dimensionality. The most popular shading language today is the OpenGL Shading Language (GLSL). While it is a high-level shading language, the shader is made specifically for Open GL and cannot be used with Vulkan or Apple’s Metal. You can, however, use Skia’s very own Skia Shader Language (SkSL). SkSL is a variant of GLSL which is used as Skia’s internal shading language. SkSL is, at its heart, a single standardized version of GLSL which avoids all of the various version and dialect differences found in GLSL “in the wild”, but it does bring a few of its own changes to the table. For instance, GLSL code from sites like Shadertoy can be converted to SkSL. In this video, Jim Mckeeth will demonstrate how to successfully convert a shader from Shadertoy via Skia Shaders Playground. One of the cool things about Skia Shader Language is that it works across all platforms. It doesn’t require Open GL or any special drivers to be installed on the platform. To learn more about the Skia Shader Language, feel free to watch the video below.

Read More

How To Create Mobile Apps Using React JS

React JS is one of the most popular JavaScript libraries on the planet. It allows you to effortlessly create interactive UIs for your application. It is efficient, flexible, and intuitive. As a result, React has become massively popular among developers worldwide. It supports the responsive layout for all modern devices, including smartphones, laptops, and desktops. Therefore, you can create your mobile app using React JS. But is the process difficult? Can you easily create React apps for mobile devices? In this post, you will find all the details. Why Should I Create My Mobile App Using React JS? Supports Cross-Platform Application Development: By using React JS, you can make applications for a variety of platforms, including iOS and Android platforms. Therefore, you no longer have to learn different languages, like C++ and Java. By using JavaScript language and React framework, you can create applications for all platforms. Easier learning curve: React JS is very easy to learn. You just need to know JavaScript. You don’t have to learn other programming languages, like C# or Java. As a result, you can quickly pick up the technology and start creating your mobile app using React JS. Offers Code Reusability: React supports code reusability. It provides several big advantages. For example, it allows you to reuse the same code for similar features in multiple apps. As a result, you can quickly develop new applications. It can significantly reduce your development time. Open-source: React is an open-source framework. It is completely free. It doesn’t require you to pay any monthly or yearly fee. Hence, you can save a lot of money, which you can spend on other aspects of your business. Strong Community Support: React JS has a huge community. It is comprised of thousands of developers worldwide. The community is very helpful. Whenever you face any issue, you will always find a helping hand. Therefore, you should seriously consider creating your mobile app using React. It can make your life a lot easier. How Can I Easily Create My Mobile App Using React JS? You can easily create your mobile app using React JS by utilizing the power of GRUI by Sencha. It is a modern enterprise-grade grid solution. It offers 100+ data grid features, including virtual columns, infinite scrolling, and slider paging toolbars. By utilizing them, you can easily create data-intensive mobile apps using React JS. Why Should I Use GRUI By Sencha? Efficiently handle millions of records Support for large feature sets, including filtering, grouping, infinite scrolling, etc. Get full customization control over styling and theming Easily export data to different formats, including CSV, TSV, HTML, PDF, and XLS Easy React UI component integration Read: GRUI By Sencha vs. React Grid – Which Is Better? How Can I Create A Mobile App Using GRUI By Sencha? Sencha GRUI has made the process of creating mobile apps very simple. Let’s take a look at some practical examples. How Can I Create A Big Data Grid With GRUI? With GRUI, you can easily create Big Data grid. Here is an example: To create it, you have to follow these steps: 1. First, you have to import all the required libraries and components. import React, { Component, useState } from “react”; import { SenchaGrid, Column, CheckboxColumn, DateColumn, EmailColumn, MoneyColumn, NumberColumn } from “@sencha/sencha-grid”; import […]

Read More

Hands-on: Delphi Web Services with TMS XData online course – 20% RAD discount!

Creating Secure and Manageable Database-driven Web Services with TMS XData and Delphi With great pleasure we announce another great collaboration with Wagner Landgraf, architect TMS Business tools and Holger Flick, TMS evangelist and Embarcadero MVP. As of today, this new course is available for those who are interested. The course will also have a RAD purchase option which will give you 20% off! Click on the link below or use the coupon code RADPURCHASE. All information can be found here. This course will teach you step-by-step how to create TMS XData Web services in Delphi. First, the main focus is to create a template that you will be able to use in all your future TMS XData projects. The template will get you set up to create Web services with: configurable database connectivity, server parameters in a resource file, a modern UI with tray icon, switching to deployment as a Windows service, logging access control using JSON Web Token (JWT) This template will then be used to great a Web service for an example scenario. In this scenario, you will design a database, connect it to the template, implement the Web service backend, and then implement three clients. One VCL client to upload data from a CSV file into the Web service, and another VCL client to browse data from the Web service in a data grid and visualize it in a chart. The last client will be written in TMS WEB Core as an example for a Web client. All clients will implement user access control using JWT and a login dialog. The course is grouped into the following sections: Introduction Detailed introduction to the course. Some videos are free to watch before purchase which will allow you to determine if this course hits “all the marks” for you. I will start by giving an overview of all the course topics, describe the example scenarios, but will also motivate this course by giving examples for real-world Web services. Finally, we will prepare the development environment installing all the products and learning about TMS project wizards. Create a new TMS XData project Jump right into the development of a Web service with Delphi! You will learn how to create a new server and its associated project structure, get a glimpse at using version control, and where to download the source code of this course The section will close with a detailed look at the different components of an XData server and how to set up Windows to host a server. Updating the server container The server container is the core part of an XData server and will be discussed in detail. In particular, we will introduce the Singleton pattern to facilitate its accessibility in the server application. Adding services to the server Services are the means how you can add functionality to your Web services. An XData server can hold as many services as you design. In this section, you will implement your first service and its endpoints. Lots of examples will be given. Focus will be how to look at the data that is returned, how the data is formatted, how you define the data that is returned, and how you can easily browse your XData server using SwaggerUI. Adding database connectivity Using databases with Web services is an […]

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Tabulator Part 6: Getting Data Out Of Tabulator

Last time, we took a look at some of the ways that we can edit data in Tabulator in our TMS WEB Core projects. And that was just the most basic introduction to a very large and complex topic overall.  This time out, in our penultimate stop in this Tabulator miniseries, we’re going to look at how to get those changes out of Tabulator and back into our databases or wherever else we need to send it.  We’ll also augment our example from last time with a proper navigator and clean up a couple of the editing options.  And then we’ll look at how to create PDF, XLS and CSV files directly from Tabulator. Motivation. Having any comprehensive JavaScript grid control is great, and Tabulator is just one of many such controls.  Having a grid control that can do almost everything all by itself is also great.  But there may come a time, specifically if your grid supports editing, when it has to give up its data, or at least its changes, so you can send it elsewhere. And giving the user some degree of control over that process, or at the very least, some level of confirmation, then everyone benefits.  The plan for this post, then, is to offer up some ideas, both on how to implement the actual data transfer-type mechanisms and on how to keep the user informed. Navigator. When doing database work in a traditional Delphi application, there’s a handy little DBNavigator component that you can link to your TDataSource that provides a consistent set of buttons for things like next/previous or save/cancel operations.  In TMS WEB Core, there’s also a TWebNavigator that can be linked to a TWebDataSource in the same way.  But a Tabulator table isn’t really a TWebDataSource, so they can’t be linked in that way.  So let’s start out by making our own navigator for Tabulator. The underlying purpose is to help become more familiar with how Tabulator tells us what is going on in the UI, via events and so on, so that we’ll be better able to understand how it does the same thing when data is changing. As a bonus, we’ll have a handy place to put some of the other things that we’ll need a spot for as well.  So to start with, we’re going to pretty up our example from last time and add a placeholder for the navigator.  We’ve covered some of these design items previously, so I’ll just list them here for reference purposes.  But by all means, please post a comment if you’d like a bit more information on any of them. Bit of styling for the whole Tabulator – rounded corners, new font, darker column headers. Added a CSS for the styling that we don’t handle in code. Put Tabulator inside another DIV, with some additional styling for the outer DIV. Added Interact.js so the DIV can be moved around and resized. Drag from the navigator. Added ‘selectable’ option, so we can visually see what record is currently active. Added a placeholder DIV below the table where the navigator will be Adjusted columns and layouts to be more ‘responsive’ – give it a try! Numerous adjustments to the individual columns and editors.  Check the code for details. So our starting point for today […]

Read More

What could the metaverse look like?

Diversity, equity, and inclusion (DEI) issues are key to the success of the metaverse. These values are foundational for a great user experience and will certainly affect user adoption. What is true in our reality and all of the issues that we already face in our day to day, as a society, will transition to the metaverse; That’s why we need to prioritize tackling them as we build these platforms. We must enable users to live immersive experiences, and an important part of that equation is inclusivity and safety. For instance, we must see that all languages are well-represented and accessibility norms respected. On the question of representation, we should allow for diversity in avatars too. And not just in terms of race and gender, but in terms of all personal preferences, to guarantee an experience that people want to come back to. If the metaverse is truly the next evolution of the internet, then everything that is currently true (and not being addressed or prioritized) in the world of web 2.0 will remain true there as well. It would be foolish to think that we can take on these problems in the metaverse if we still can’t solve them in our current context. To conclude, I truly hope that the new opportunities offered in the metaverse will be a catalyst that prompts more focus on the things that matter in our lives so that we can make the entire world a better place – not just the digital side of it. Connect with Manu on LinkedIn or Twitter.

Read More