Developing at the edge: Best practices for edge computing

Developing at the edge: Best practices for edge computing

Edge computing continues to gain force as ever more companies increase their investments in edge, even if they’re only dipping their toes in with small-scale pilot deployments. Emerging use cases like Internet-of-Things (IoT), augmented reality, and virtual reality (AR/VR), robotics, and telecommunications-network functions are often cited as key drivers for companies moving computing to the edge. Traditional enterprises are also looking at edge computing to better support their remote offices, retail locations, manufacturing plants, and more. At the network edge, service providers can deploy an entirely new class of services to take advantage of their proximity to customers.

Continue reading Developing at the edge: Best practices for edge computing

Share
Load balancing Red Hat JBoss Enterprise Application Platform subclusters with mod_cluster

Load balancing Red Hat JBoss Enterprise Application Platform subclusters with mod_cluster

This article introduces a way to build and manage clustered environments using subclusters in a domain-mode installation of Red Hat JBoss Enterprise Application Platform (JBoss EAP). I assume that readers are familiar with JBoss EAP and the Apache HTTP Server (HTTPD) mod_cluster module. I introduce the load balancing group configuration for that module.

Continue reading Load balancing Red Hat JBoss Enterprise Application Platform subclusters with mod_cluster

Share
Generate automated Grafana metrics dashboards for MicroProfile apps

Generate automated Grafana metrics dashboards for MicroProfile apps

Grafana is an awesome visualization tool for seeing real-time metrics from your applications, and you can combine it with MicroProfile and similar tools to create one dashboard for multiple projects. Different projects use different names for metrics, however, so it is often necessary (and tedious) to handcraft the metrics for each project. Moreover, each project can expose its own custom metrics, and each MicroProfile vendor can also produce custom metrics, so there are many manual steps involved if you want to see all of your metrics in one place.

What if you could simply examine a running app and generate a dashboard with all of its exposed metrics? That is exactly what you can do with the MicroProfile Metrics Generator, a new open source tool that I created to dynamically generate Grafana dashboards for any MicroProfile project by capturing and monitoring all of your project metrics. Once you’ve created a dashboard, you can use it with Grafana, customize it to suit specific needs, and save it as a JSON file. You can also periodically regenerate your dashboards to bring in new metrics that you’ve exposed in your application.

In this article, you will learn how to do just that: Use the MicroProfile Metrics Generator to create a unified dashboard for all of your project’s metrics.

Continue reading “Generate automated Grafana metrics dashboards for MicroProfile apps”

Share
Performance and usability enhancements in Red Hat CodeReady Workspaces 2.2

Performance and usability enhancements in Red Hat CodeReady Workspaces 2.2

Red Hat CodeReady Workspaces 2.2 is now available. For the improvements in this release, we focused on performance and configuration, plus updating CodeReady Workspaces 2.2 to use newer versions of the most popular runtimes and stacks. We also added the ability to allocate only the CPU that you need for IDE plugins, and we introduced a new diagnostic feature that lets you start up a workspace in debug mode.

CodeReady Workspaces 2.2 is available on OpenShift 3.11 and OpenShift 4.3 and higher, including tech-preview support for OpenShift 4.5.

Note: Based on Eclipse Che, CodeReady Workspaces is a Red Hat OpenShift-native developer environment that supports cloud-native development.

Continue reading “Performance and usability enhancements in Red Hat CodeReady Workspaces 2.2”

Share
Behavior is easy, state is hard: Tame inconsistent state in your Java code

Behavior is easy, state is hard: Tame inconsistent state in your Java code

DevNation Tech Talks are hosted by the Red Hat technologists who create our products. These sessions include real solutions plus code and sample projects to help you get started. In this talk, you’ll learn the root cause of common inconsistent state-related bugs in your production Java code—and how to solve them—from Edson Yanaga and Burr Sutter.

Continue reading Behavior is easy, state is hard: Tame inconsistent state in your Java code

Share
Improved XML grammar binding and more in Red Hat VS Code XML extension 0.13.0

Improved XML grammar binding and more in Red Hat VS Code XML extension 0.13.0

Following closely on the huge 0.12.0 update, the new Red Hat XML extension for Visual Studio Code (VS Code) 0.13.0 release makes XML editing in VS Code even better. For this release, we focused on making it easier to bind and generate a new XML Schema Definition (XSD) or Document Type Definition (DTD) grammar file from an existing XML file. Other highlights include document link support for xsi:schemaLocation, XML catalog snippets, support for XML catalog path validation, and support for DTD SystemId file path completion.

Continue reading Improved XML grammar binding and more in Red Hat VS Code XML extension 0.13.0

Share
Improve your code: Tales from confinement without a debugger

Improve your code: Tales from confinement without a debugger

I have always been impressed by developers who make do without a debugger, and have often wished I could be more like them. I vaguely recall a colleague saying he never used a debugger, favoring printf over gdb. Also, in my rookie years, I vividly recall chasing a kernel bug with a friend who was using objdump and the source of a much older kernel:

“Richard, shouldn’t you at least use the correct source?”
“Meh … they’re close enough.”

I’m still impressed.

Now that I have coded for some years, I’ve noticed that I have picked up some bad habits along the way. Over-dependence on the debugger is one of them. I often use it as a high-powered crutch, which frequently leads me waist-deep into stack traces, rarely stopping to think things through. I get lost inside 20 levels of recursion and wonder why an irrelevant variable is being tickled.

Granted, there are many good uses for a debugger, but I’m at 40% on the good use scale. My uses usually start benign but then degrade into cancerous abstractions. So, for my 20th GNU Compiler Collection (GCC) hacking anniversary, I decided to give myself the challenge of one month without a debugger. Here is the tale.

Continue reading “Improve your code: Tales from confinement without a debugger”

Share
Profile-guided optimization in Clang: Dealing with modified sources

Profile-guided optimization in Clang: Dealing with modified sources

Profile-guided optimization (PGO) is a now-common compiler technique for improving the compilation process. In PGO (sometimes pronounced “pogo”), an administrator uses the first version of the binary to collect a profile, through instrumentation or sampling, then uses that information to guide the compilation process.

Profile-guided optimization can help developers make better decisions, for instance, concerning inlining or block ordering. In some cases, it can also lead to using obsolete profile information to guide compilation. For reasons that I will explain, this feature can benefit large projects. It also puts the burden on the compiler implementation to detect and handle inconsistencies.

This article focuses on how the Clang compiler implements PGO, and specifically, how it instruments binaries. We will look at what happens when Clang instruments source code during the compilation step to collect profile information during execution. Then, I’ll introduce a real-world bug that demonstrates the pitfalls of the current approach to PGO.

Continue reading “Profile-guided optimization in Clang: Dealing with modified sources”

Share
Automate workshop setup with Ansible playbooks and CodeReady Workspaces

Automate workshop setup with Ansible playbooks and CodeReady Workspaces

At Red Hat, we do many in-person and virtual workshops for customers, partners, and other open source developers. In most cases, the workshops are of the “bring your own device” variety, so we face a range of hardware and software setups and corporate endpoint-protection schemes, as well as different levels of system knowledge.

Continue reading Automate workshop setup with Ansible playbooks and CodeReady Workspaces

Share