Making Agile teams work effectively has never been easy. To get the most out of Agile, teams must get used to being honest with themselves about the work they do, and come to terms with the limits and obstacles they face. Once a team has become comfortable with being uncomfortable, the real productivity promised by Agile can emerge.
This is especially true for cross-border teams that have members from different international cultures. As the world has become more distributed and virtual, the barriers to making Agile work have become more numerous and difficult to overcome. We may all be able to work remotely now, but that doesn’t mean that all cultural differences have vanished.
The use of health apps has increased significantly in recent years as people look to take a more active role in their own health and wellness. However, while these apps can be useful tools, they also raise important privacy issues. Patients trusting developers with their health data is a major concern and one that developers must take seriously, as otherwise, it can lead to costly fines and reputational loss.
Imagine this scenario: you’ve built a health app that helps users determine potential diagnoses. One of your users, worried that her partner is struggling with depression, searches for symptoms. She browses around possible diagnoses and looks at treatments. She decides it’s a possibility, but doesn't move forward with anything right now.
Source code is one of the most valuable assets for any company. So if it gets stolen or leaked, this can result in colossal damages to your business. Source code theft can cause financial and reputational losses in the long term perspective. Even the giants in the industry are at risk, as the source code of Windows 2000 was stolen from Microsoft in 2004, and a recent data breach cost Capital One around $300 million. That's why securing your source code and protecting it from theft should be one of your top priorities.
Why Is Securing Source Code Important?
Recently, attempts to compromise services, software, apps, and devices have risen as the rewards for hackers can be quite profitable. Source code includes a lot of valuable information since it plays a crucial role in creating and building software, application, extensions, web services, and so much more. Unfortunately, source code security doesn't get enough attention in many cases.
If you are reading this article, you are probably one of the many developers who want to dive into the world of artificial intelligence and machine learning. You might have heard about Flutter and its awesome integration with AI. If you’re curious about which framework is best for your app and what AI integration is, read on! In this article, we will get you up to speed quickly by explaining everything there is to know about integrating Flutter with AI.
Artificial Intelligence is modern magic. The AI app developers are more like magicians. I couldn't stop bragging about that because the use of artificial intelligence is widespread today, from entertainment and advertising to business decision-making, driving self-driving cars, and modelling complex physical processes.
.NET 7 is now available, which means that we can enjoy all sorts of new features and enhancements. Let's talk about the most interesting improvements: C# 11, containers, performance, GC, and so on.
C# 11
We have already posted an article and described the novelties in C# 11. In that article, we covered new features: generic math support, raw string literals, the required modifier, the type parameters in attributes, and so on.
In this Talk, Anynines CEO Julian Fisher shares about the challenges of managing a Kubernetes operator's lifecycle. Julian and his team benchmarked multiple tools that could help with that. The talk covers Carvel, Helm, OLM, and Operator SDK, where the pros and cons are shared for each tool.
In this article, I want to document how to write geospatial queries against the Oracle Autonomous Database. This example will use the node-oracledb add-on for Node.js and run against an Oracle JSON database. I will not talk about provisioning a JSON database on Oracle Cloud - that will be left as an exercise to the user, if so inclined. This first bit is about setting up the development environment, creating the Node.JS project, and installing the supporting configuration and software required to connect to the remote database.
I was investigating this functionality when building a simple phone application that would show places of interest based on the user's current coordinates. I created a small server-side Node.js application that ran in a Kubernetes cluster hitting an Oracle JSON database. The code presented here is a simplification that just demonstrates API usage. In the application, the user would select the distance from their current position to see all places of interest nearby. What is nice about this example is the code is all on the developer's side (Visual Studio on a Mac) accessing the remote database. This makes it easy to debug and iterate.
Hertz [həːts] is a high-performance, high-usability, extensibleHTTP framework for Go. It’s designed to simplify building microservices for developers.
Why Hertz?
One of the highlights of Hertz is its extremely high performance. You can get an intuition for this by looking at the following statistics on echo requests.
Are you looking for a way to automatically manage WordPress updates?
Updates are important for the security and stability of your WordPress site.
In this article, we will show you how to better manage automatic WordPress updates.
Why Do You Need Better Automatic Updates in WordPress?
Keeping your WordPress website updated is extremely important. The same goes for all plugins and themes installed on your website. You need to install updates for WordPress core, themes, and plugins to get new features and fixes.
However, you may have noticed that some of them are updated more frequently than others. A lot of popular plugins are updated almost weekly.
Some users find it a bit annoying that whenever they log in there are new updates available for WordPress core, one or more plugins, or their theme. It becomes even more time-consuming when you manage multiple WordPress sites.
That’s why many users want to have WordPress automatically install updates for WordPress core, trusted plugins, and themes. But while WordPress now lets you do this without a plugin, you still don’t have full control over your auto-updates.
Let’s take a look at how you can take total control of WordPress and minimize the time spent on installing updates.
Setting Up Easy Updates Manager
The first thing you need to do is install and activate the Easy Updates Manager plugin. This plugin gives you complete control over customizing your updates and also keeps logs of what is updated and when.
Upon activation, you need to visit Dashboard » Updates Options page to set up the plugin.
This page provides you quick access to turn on or off updates for WordPress core, plugins, themes, and translations. The default settings here will work well for most websites.
We strongly recommend that you never turn off updates for WordPress core, plugins, or themes. It will seriously compromise your site’s security and health.
Setting Up Automatic Updates for WordPress, Plugins, and Themes
Easy Updates Manager allows you to quickly enable automatic updates for WordPress core, plugins, and themes from the Dashboard » Updates options page. Simply click on the blue ‘Auto update everything’ button in the ‘Quick configuration actions’ section.
This plugin also allows you to selectively turn on automatic updates for certain plugins or themes. If you would like to selectively turn on automatic updates, then click the ‘Choose per plugin’ and ‘Choose per theme’ buttons.
Next, we’ll show you how to select which plugins and themes are updated automatically.
Setting Up Automatic Updates for Select Plugins and Themes
If you selected to individually enable automatic updates for a few plugins, then you need to switch to the ‘Plugins’ tab on the Dashboard » Updates options page.
Here you will see a list of all plugins installed on your WordPress site. To automatically update a certain plugin, simply click the ‘On’ button under ‘Automatic updates’.
When you switch to the ‘Themes’ tab, you will see a list of themes installed on your site.
You need to click the ‘On’ button under ‘Automatic updates’ for those themes that you want to be updated automatically.
Rolling Back to a Previous Version of a Plugin or Theme
Plugin and theme incompatibilities are the major reason why some users are hesitant when it comes to updating. Even though most good developers thoroughly test their plugins, there can still be bugs that can cause your site to break.
The first step you should take to protect your website is to install a WordPress backup solution. This will let you restore your entire website if something goes wrong.
However, restoring your WordPress site from a backup can be a lot of work. If you know which plugin or theme update caused the problem, then it’s easier just to roll back that one update.
Artipie is an open-source binary artefact management tool under an MIT license. It supports the following types of repositories: Docker, Maven, NPM, PyPI, Anaconda, RPM, Gem, Go, and so on. If you are eager to learn about Artipie in detail, you can read the DZone article An Easy Way to Get Your Own Binary Repository.
Let’s focus on the Maven repository. Maven is a tool that can be used for building and managing any Java-based project. Maven has two types of repositories:
In this article, we will discuss testcontainers library and how to use it to simplify our life when it comes to integration testing our code.
For the purpose of this example, I am going to use a simple application with its business centered around reviews for some courses. Basically, the app is a service that exposes some GraphQL endpoints for review creation, querying, and deletion from a PostgreSQL database via Spring Data R2DBC. The app is written in Kotlin using Spring Boot 2.7.3.
Recently I had a task to migrate some data from an old monolith’s Oracle database to a microservice with a PostgreSQL database. The problem was that the data needed for migration had a parent table with around 2 million records with 150 columns and on top of that, everything was brought into view with a payload column aggregating data from various tables in XML. As you can imagine, the SELECT from that view was pretty slow, and by pretty, I mean insanely slow which was not going to work very well for the connector. So, in this article we’ll take a look at a similar simplified use case and how can we deal with it.
Use case
We have a course-catalogue application with a PostgreSQL database that deals with instructors and their courses. Now we need to migrate some legacy instructors from another PostgreSQL database that soon is going to be decommissioned. So we have instructors-legacy-db and the course-catalog-db. In our case, both databases won’t be that overwhelmed with records, with just about 200 records for the instructors-legacy-db, but for the sake of the example, just imagine that instructors-legacy-db is that table with 2 million cumbersome records.
Lexicographic algorithm
I'm trying to make this algorithm work, but it keeps telling me that my declaration array is not correct because it needs to have a constant value. Array declaration can be found in the main
#include<iostream>
#include<array>
using namespace std;
void nextPermutation(char* v, int n) { //function declaration for next permutation
int i, j; //variable declaration
for (i = n - 1; i > 0 && v[i - 1] >= v[i]; i--); // we go to the index till v[i]>v[i-1]
if (i > 0) { //if i is greater than 0 than we have atleast one possible next permutation
for (j = i; j <= n - 1 && v[j] > v[i - 1]; j++); // we find the largest element after index i
swap(v[i - 1], v[j - 1]); // we swap it after we find it
}
j = n - 1; //j is assigned the last element
while (i < j) { //we reverse the order from i to j element
swap(v[i], v[j]);
i++;
j--;
}
}
int main()
{
int n; //variable for the data lenght
cout << "Enter the size of the array input numerical or string: ";
cin >> n;
char v[n]; //array declaration
for (int i = 0; i < n; i++)cin >> v[i]; //input in the array
nextPermutation(v, n); //function called
for (int i = 0; i < n; i++)cout << v[i] << " "; //display the output
return 0;
}`
With the rapidly increasing popularity and complexity of mobile apps, you need to make sure your app works as intended across various device models, operating systems, and browsers. But with tens of thousands of mobile device models on the market and more being released every year, how do you choose which devices to test on, and how many do you actually need to test on for comprehensive testing coverage?
In this article, we’ll provide best practices for selecting mobile devices to test, as well as our recommended devices to test on by region and business size.
JavaScript is not a new name. It is the most popular and frequently used data processing language that runs on every system. Many developers have been extensively skilled in the JavaScript language, and thus it has been continuously improving and evolving.
Node.js has been a widely used platform that successfully represents JavaScript everywhere. We have to admit that Node.js has transformed the screenplay of web development and allows developers to use JavaScript for backend development. Node.js has a large number of users with the largest developer community.
Flask is a lightweight Web application framework written with Python, which is called a "micro-framework" because it uses a simple core for extension of other features, such as ORM, form validation tools, file upload, various open authentication techniques, etc.
MQTT is a lightweight Internet of Things (IoT) message transmission protocol based on publish/subscribe mode. It can provide a real-time and reliable message service for networked devices with very less code and smaller bandwidth. It is widely used in IoT, mobile Internet, intelligent hardware, IoV, power and energy industries, etc.
Modern browsers are equipped with all sorts of functionalities, i.e., from bookmarks to GPS location tracking, developer tools, and more. Almost all modern web browsers have immense capabilities – Firefox has built-in screenshot capabilities, Opera has a free VPN, and Edge comes with built-in support for displaying ebooks with the EPUB extension. Though browsers like Firefox, Chrome, and others are majorly used for web browsing, the fact is that Add Ons (or extensions) in Firefox provide additional power to the web browser! The same rule of thumb applies to other browsers like Chrome, Edge, etc.
Additional add-ons, plugins, and extensions are required to extend or customize browser functionalities, boost productivity, and suit the specific requirements of users and developers. Test automation engineers that use test automation can also benefit from browser extensions like normal end-users. In fact, testers often need to automate the testing of these extensions itself :slightly_smiling_face:
CSS evolved and we’re beyond the point where everyone can just do it as a side interest. We all can learn it and build amazing stuff with it, but using it wisely and correctly in a large-scale context isn’t an easy job anymore. It deserves people whose work is to focus on that part of the code.
Anselm is partly in responding to Sacha Greif’s “Is There Too Much CSS Now?” and the overall sentiment that CSS has a much higher barrier to entry for those learning it today than it did, say, in the CSS3 days. Back then, there was a super direct path to see the magic of CSS. Rachel Andrew perfectly captures that magic feeling in a prescient post from 2019:
There is something remarkable about the fact that, with everything we have created in the past 20 years or so, I can still take a complete beginner and teach them to build a simple webpage with HTML and CSS, in a day. […] We just need a text editor and a few hours. This is how we make things show up on a webpage.
Rachel is speaking to the abstraction of frameworks on top of vanilla CSS (and HTML) but you might as well tack big, shiny, and fairly new features on there, like CSS grid, flexbox, container queries, cascade layers, custom properties, and relational pseudo-classes, to name a few. Not that those are abstractions, of course. There’s just a lot to learn right now, whether you’ve been writing CSS for 20 days or 20 years.
But back to Anselm’s post. Do we need to think about CSS as more than just, you know, styling things? I often joke that my job is slapping paint on websites to make them pretty. But, honestly, I know it’s a lot more than that. We all know it’s more than that.
Maybe CSS is an industry in itself. Think of all the possible considerations that have to pass through your brain when writing CSS rules. Heck, Ahmad Shadeed recently shared all the things his brain processes just to style a Hero component. CSS touches so much of the overall user experience — responsiveness, accessibility, performance, cross-browser, etc. — that it clearly goes well beyond “slapping paint on websites”. So far beyond that each of those things could be someone’s full-time gig, depending on the project.
So, yes, CSS has reached a point where I could imagine seeing “CSS Engineer” on some job board. As Anselm said, “[CSS] deserves people whose work is to focus on that part of the code.” Seen that way, it’s not so hard to imagine front-end development as a whole evolving into areas of specialization, just like many other industries.