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 ]

OOP: (Complex Systems)-Oriented Programming

Categories

Tags web-development oop app-development agile teams

This article explores the original idea of OOP, as it has been invented by Alan Kay. OOP was invented as a “systems-oriented approach” to programming, a way to build complex systems. Unfortunately, the name “object-oriented” created confusion and deemphasized this meaning. By Eugene Naumenko.

Complex systems usually expose “liveness” property, among others - they evolve continuously, without shut downs, since the first moment they emerge, or are started. Complex systems development happens while running, it is undesirable, or even not possible to built them ahead of time and start/stop at random moments in time.

Let’s see what properties are required to build complex, evolving, live systems. These would be:

  • Universal modularity
  • Late binding
  • Runtime
  • Messaging
  • Internal state

We can see that all these properties have abstraction property. Remember, abstraction is not a vague undefined idea, but a simplification which creates a new level of meaning, new semantic objects (see Dijkstra’s definition, and also Wikipedia’s one). That that all the essential properties of OOP have the abstraction property is not a coincidence. Abstraction is a way to handle entropy, and managing entropy is the way to build complex systems, both from human comprehension and structural nature of such systems points of view. Interesting read!

[Read More]

Using Kong API Gateway with an event driven system to modernize legacy integrations

Categories

Tags web-development devops app-development kubernetes containers

Let’s talk API gateways and event based integration a bit. Amazon API gateway has been a pillar of serverless applications on AWS, it allows developers to manage API endpoints backed by Lambda functions or potentially other services. By Sebastien Goasguen.

Building REST APIs with serverless functions has truly empowered developers to deliver products faster in the Cloud. For enterprises with significant on-premises systems, there is no AWS API Gateway, but you have the Kong Gateway which allows you to do similar things. In this post, we are going to go one step beyond and show you how you can use the Kong Gateway to expose a REST API in front of an event driven integration. In other terms, front your asynchronous event flow with an API.

The article also pays attention to:

  • First, a REST Endpoint
  • Second, an IBM MQ Connector in Kubernetes
  • Finally, Add a Synchronizer and Transformations

Moving to the Cloud does not mean throwing away decades of enterprise efforts, performance optimization, workflows and system of records. You do not need to lift and shift everything at once. What you can definitely do is modernize your approach to software development and start bringing in new technologies to your entire software and infrastructure stack. Nice one!

[Read More]

Automation isn't the biggest threat to US factory jobs

Categories

Tags robotics iot management miscellaneous cio agile

German factories have more robots than their US counterparts - so why are Americans four times more likely to leave their manufacturing jobs? By Anna Waldman-Brown.

The number of American workers who quit their jobs during the pandemic - over a fifth of the workforce - may constitute one of the largest American labor movements in recent history. Workers demanded higher pay and better conditions, spurred by rising inflation and the pandemic realization that employers expected them to risk their lives for low wages, mediocre benefits, and few protections from abusive customers - often while corporate stock prices soared.

The answer depends on more than what’s technologically feasible, including what actually happens when a factory installs a new robot or a cashier aisle is replaced by a self-checkout booth and what future possibilities await displaced workers and their children. So far, we know the gains from automation have proved notoriously unequal. A key component of 20th century productivity growth came from replacing workers with technology, and economist Carl Benedikt Frey notes that American productivity grew by 400 percent from 1930 to 2000, while average leisure time only increased by 3 percent. (Since 1979, American labor productivity, or dollars created per worker, has increased eight times faster than workers’ hourly compensation.)

While 8 percent of German manufacturing workers left their jobs (voluntarily or involuntarily) between 1993 and 2009, 34 percent of US manufacturing workers left their jobs over the same period. Thanks to workplace bargaining and sectoral wage setting, German manufacturing workers have better financial incentives to stay at their jobs; The Conference Board reports that the average German manufacturing worker earned $43.18 (plus $8.88 in benefits) per hour in 2016, while the average American manufacturing worker earned $39.03 with only $3.66 in benefits.

As the German example illustrates, robots can improve ergonomics and save workers from drudgery, and recent studies indicate that robot adoption can boost employment for small and midsize manufacturers by enhancing product quality, improving productivity, and allowing firms to branch into new product lines. Yet robots have also been known to have the opposite effect on workers—especially in larger factories with less skilled workers, where extensive automation can break up jobs and leave workers with repetitive, hard-to-automate tasks, such as continuously loading the same item into the same machine. But a lack of robots may make firms more susceptible to being outbid by higher tech rivals, potentially leading to even more widespread job loss in manufacturing. Very interesting read!

[Read More]

Rapid event notification system at Netflix

Categories

Tags streaming messaging kubernetes containers devops infosec

Netflix has more than 220 million active members who perform a variety of actions throughout each session, ranging from renaming a profile to watching a title. Reacting to these actions in near real-time to keep the experience consistent across devices is critical for ensuring an optimal member experience. By Ankush Gulati, David Gevorkyan.

This is not an easy task, considering the wide variety of supported devices and the sheer volume of actions our members perform. To this end, we developed a Rapid Event Notification System (RENO) to support use cases that require server initiated communication with devices in a scalable and extensible manner.

The main content is split into:

  • Motivation
  • Use cases
  • Design decisions
  • Single events source
  • Event prioritization
  • Hybrid communication model
  • Targeted delivery
  • Managing high RPS

Using a Push-and-Pull delivery model combination also supports devices limited to a single communication model. This includes older, legacy devices that do not support Push Notifications.

With over 220 million members, we were conscious of the fact that a service like RENO needs to process many events per member during a viewing session. At peak times, RENO serves about 150k events per second. Such a high RPS during specific times of the day can create a thundering herd problem and put strain on internal and external downstream services. Excellent read!

[Read More]

Increasing the security bar in Ingress-NGINX v1.2.0

Categories

Tags nginx kubernetes containers devops infosec

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 sql web-development app-development database

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 elixir web-development app-development learning erlang performance

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 java web-development programming scala jvm devops

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 sql database cio infosec devops

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 linux software cio cloud devops

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]