Welcome to curated list of handpicked free online resources related to IT, cloud, Big Data, programming languages, Devops. Fresh news and community maintained list of links updated daily. Like what you see? [ Join our newsletter ]

Increasing the security bar in Ingress-NGINX v1.2.0

Categories

Tags devops-and-ci-cd security-and-privacy

The Ingress may be one of the most targeted components of Kubernetes. An Ingress typically defines an HTTP reverse proxy, exposed to the Internet, containing multiple websites, and with some privileged access to Kubernetes API (such as to read Secrets relating to TLS certificates and their private keys). By Ricardo Katz (VMware), James Strong (Chainguard).

This is not our final goal. Our final goal is to split the control plane and the data plane processes. In fact, doing so will help us also achieve a Gateway API implementation, as we may have a different controller as soon as it “knows” what to provide to the data plane. Some other projects in Kubernetes already take this approach (like KPNG, the proposed replacement for kube-proxy), and we plan to align with them and get the same experience for Ingress-NGINX.

This article covers:

  • Meet Ingress NGINX v1.2.0 and the chrooted NGINX process
  • Skip the talk, what do I need to use this new approach?
  • OK, but how does this increase the security of my Ingress controller?
  • What about other security improvements in this release?

Ingress NGINX container architecture

Source: https://kubernetes.io/blog/2022/04/28/ingress-nginx-1-2-0/

Ingress-NGINX has been part of security assessments that figured out we have a big problem: we don’t do all proper sanitization before turning the configuration into an nginx.conf file, which may lead to information disclosure risks. While it is a risky component in your architecture, it is still the most popular way to properly expose your services. Good read!

[Read More]

Migrating to utf8mb4: MySQL things to consider

Categories

Tags backend-development frontend-and-mobile product-and-design data-and-analytics

The utf8mb4 character set is the new default as of MySQL 8.0, and this change neither affects existing data nor forces any upgrades. By Sveta Smirnova.

One more issue you can hit after converting to the utf8mb4 character set is an increased size of the implicit temporary tables that MySQL creates to resolve queries. Since utf8mb4 may store more data than other character sets, the column size of such implicit tables will also be bigger. The article then describes the things to consider:

  • Storage requirements
  • Maximum Length of the Column
  • Index Storage Requirement
  • Temporary Tables

Converting to the utf8mb4 character set brings you the advantages of better performance, a larger range of characters that you can use, including emojis and new collations (sorting rules). This conversion comes at almost no price, and it can be done smoothly. Nice one!

[Read More]

Using Elixir and WhatsApp to fight COVID19

Categories

Tags backend-development frontend-and-mobile product-and-design leadership-and-career software-engineering

Elixir enables companies to rapidly get a product to market with confidence that it can scale and handle considerable spikes in concurrent users. By Erlang Solutions.

I think what’s impressed us is just the ease of clustering of BEAM nodes. Many of you are working with Elixir or have been working with Elixir for, I don’t know how many years already. This is probably old news.

The story of Turn.io’s COVID-19 helpline is a great example of this. Built in just 5 days, it scaled to 450,000 users before any public launch, and has grown to serve over 7.5 million people in South Africa. Learn more in our blog recap of Simon de Haan’s talk at ElixirConf EU Virtual.

The article walks you over:

  • Introduction
  • Turn.io and apps healthcare apps
  • Launching COVID Connect in South Africa
  • An Elixir based app to support Mental Health
  • The stack

Authors come from a Python background and so turn.io was their team’s first production of Elixir environment. Some of these things that were, really hard problems in Python just don’t exist in Elixir. So simple things like publishing WebSockets via GraphQL subscriptions from any BEAM node are just so easy. It just feels almost unfair if you’re coming from an environment that doesn’t have that clustering idea built in. Excellent read!

[Read More]

A guide to JVM parameters for Java developers

Categories

Tags backend-development frontend-and-mobile software-engineering devops-and-ci-cd

By understanding and using JVM and JVM parameters, both developers and end users can diagnose failures and improve the performance of a Java application. By Jayashree Huttanagoudar @redhat.

When you write source code, you’re writing code for humans to read. Computers can’t execute source code until the code is compiled into machine language, a generic term referring to any number of languages required by a specific machine. Normally, if you compile code on Linux, it runs on Linux, and if you compile code on Windows, it runs on Windows, and so on. However, Java is different. It doesn’t target an actual machine. It targets something called the Java Virtual Machine (JVM), and so it can run on any machine.

Tuning a JVM is the process of adjusting JVM parameters to improve the performance of the Java application. It also helps to diagnose application failure.

The article focuses mainly on:

  • What’s the difference between a JVM, JDK, and JRE?
  • What is JVM tuning?
  • Types of JVM Parameters
    • Standard options
    • Non-standard options
    • Advanced options

By understanding and using JVM and JVM parameters, both developers and end users can diagnose failures and improve the performance of a Java application. The next time you’re working with Java, take a moment to look at the options available to you.

[Read More]

MySQL 8: Password verification policy

Categories

Tags backend-development data-and-analytics leadership-and-career security-and-privacy devops-and-ci-cd

The artcicle discusses the password verification-required policy introduced in MySQL 8.0.13. With this feature, it is possible to require that attempts to change an account password be verified by specifying the existing current password to be replaced. By Brian Sumpter.

The password verification-required policy enables DBAs to prevent users from changing a password without proving that they know the current password. When would this happen? Such changes could occur if a user walked away from a terminal session without logging out, and a malicious user uses the open session to change the original user’s MySQL password. As you can imagine, this could have disastrous consequences.

The article then focuses on:

  • Per-user settings
  • Global settings
  • Exceptions

Password-verification policy can be established globally, and individual user accounts can be set to either defer to the global policy or override the global policy with specific per-account behavior. MySQL 8 has made great strides in bolstering user administration and user security. While we often take for granted something as simple as requiring the current password before a password change, using this option in concert with other MySQL 8 security features builds a secure and easily administered database environment that hasn’t been possible historically without relying on additional plugins or custom solutions. Good read!

[Read More]

How to switch to Ubuntu Rolling Rhino: rolling release version of Ubuntu

Categories

Tags cloud-and-infrastructure software-engineering leadership-and-career devops-and-ci-cd

Ubuntu goes bleeding edge with Rolling Rhino. Here’s everything you need to know about it. New Ubuntu releases come out every six months, with most of the software frozen in time until the next release. To receive the latest updates as soon as they’re available, many people turn to a rolling release distribution, such as Arch Linux. By Bertel King.

Ubuntu Rolling Rhino is a version of Ubuntu that follows the rolling release model. It began as a tool from Martin Wimpress, who at the time served as head of the Ubuntu desktop team at Canonical. To get technical, Rolling Rhino follows the development branch of Ubuntu. By default, whenever a new version of Ubuntu lands, you can choose to switch to the development branch of the next version currently in development.

The article then explains the following:

  • What is Ubuntu Rolling Rhino?
  • How to download Ubuntu Rolling Rhino
  • How to download updates
  • Keeping Ubuntu rolling along

For many people who grow frustrated with outdated software on Ubuntu, switching distros entirely is no longer the only option. You can get your hands on a rolling release distro and enjoy the latest software while sticking with familiar tools like APT and a desktop interface that many have grown to love. Easy read!

[Read More]

61% of people believe bots will succeed where humans have failed with corporate sustainability

Categories

Tags ai-and-machine-learning leadership-and-career cloud-and-infrastructure

Global study finds 94% of people believe society has not made enough progress on sustainability and social efforts. People around the world are demanding more progress on sustainability and social efforts and are looking to businesses to step up, according to a new study by Oracle and Pamela Rucker, CIO Advisor, Instructor for Harvard Professional Development. By @Oracle.

The “No Planet B” study surveyed more than 11,000 consumers and business leaders across 15 countries and found that people are fed up with the lack of progress society is making towards sustainability and social initiatives, want businesses to turn talk into action, and believe technology can help businesses succeed where people have failed.

The study main points:

  • People want businesses to step up sustainability and social efforts
  • Human bias and operational challenges are holding businesses back
  • People will cut ties with businesses that don’t take action on sustainability and social initiatives

Research findings are based on a survey conducted by Savanta, Inc. between February 25 – March 14, 2022 with 11,005 global respondents from 15 countries (United States, United Kingdom, Germany, Netherlands, France, China, India, Australia, Japan, Singapore, South Africa, United Arab Emirates, Saudi Arabia, Brazil, and Mexico). The survey explored attitudes and behaviors of consumers and business leaders towards sustainability and social efforts along with the role and expectations of artificial intelligence (AI) and robots in environmental, societal and governance (ESG) efforts. Follow this link to full research (pdf). Good read!

[Read More]

Pest - PHP testing framework that goes above and beyond PHPUnit

Categories

Tags backend-development frontend-and-mobile product-and-design testing-and-quality

When building third-party APIs, it’s important to test your code in every runtime scenario you’ve seen or can foresee. For this, a robust and easy to use & maintain testing framework is a must. By Peter Villani.

Given the number of tests we perform, and trying to cover every function in our codebase, we needed to simplify the testing code and make it easier to maintain, understand, and debug. We also wanted to make sure our testing framework would require little effort to integrate into Laravel.

As PHP developers, we relied heavily on PHPUnit, but we switched over to the Pest Testing Framework, which simplified and reduced our large library of testing code. In this article, we take a look at Pest, a robust testing framework built on top of PHP’s standard testing library PHPUnit.

it('is an example, function () {
    assertTrue(true);
});

Pest removes the namespace and library references needed in PHPUnit, and it doesn’t require extending hundreds of functions. It simply needs you to specify the test function - making it far easier to maintain and debug. And also Pest gave us more information per test and for errors, Pest gives you direct access to the line of code that has failed. Good read!

[Read More]

How to start a project on Angular the right way

Categories

Tags frontend-and-mobile product-and-design architecture-and-apis backend-development

How do you start a new project? ng new app and that’s it! Not anymore. If you want to make maintenance and development easier you should be sure to follow these steps. By coding_indian.

The article then describes the following steps:

  • Create the project
  • Install Husky for configuring our git hooks
  • Configure pre-push hook
  • Add ESLint to the project
  • Add lint-staged
  • Add Prettier
  • Add Storybook
  • Add a local server
  • Configure CI/CD pipelines and git checks
  • VSCode extensions

… and much more! And there are code and configuration examples as well in the article for smooth project setup. Nice one!

[Read More]

Revolutionizing Java with GraalVM Native Image

Categories

Tags backend-development software-engineering

GraalVM has caused a revolution in Java development since it launched three years ago. One of the most discussed features of GraalVM is Native Image, which is based on an ahead-of-time (AOT) compilation. By Alina Yurenko and Karsten Silz.

Native image build process

Source: https://www.infoq.com/articles/native-java-graalvm

Java dominates enterprise applications. But in the cloud, Java is more expensive than some competitors. Native compilation makes Java in the cloud cheaper: It creates applications that start much faster and use less memory.

The article then walks you over:

  • Traditional execution of Java applications
  • GraalVM for the Win
  • How native image works
  • Taking Java startup performance to the next level
  • Peak performance on par with JVM

… and much more. We liked the comparison of startup time effect of native image modes and JIT.

JIT AOT
Operating system loads the JVM executable Operating system loads executable with prepared heap
VM loads classes from the file system Application starts immediately with optimized machine code
Bytecode is verified
Bytecode interpretation starts
Static initializers run
First-tier compilation (C1)
Profiling metrics gathered
… (after some time)
Second-tier compilation (C2/ Graal compiler)
Finally running with optimized machine code)

A native executable requires neither the JVM and its JIT compilation infrastructure nor memory for compiled code, profile data, and bytecode caches. All it needs is memory for the executable and the application data. Typical savings looks like 200 MB in JIT mode vs. 40 MB for the native executable. Good read!

[Read More]