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 ]

Why Gatsby chose headless WordPress for our blog

Categories

Tags web-development php javascript frameworks

Back when Gatsby first launched we produced all of our content — including blog, landing pages, and documentation — in a public GitHub repo. That approach just made sense for an open-source software company where most of the team were web developers. And it worked fine … for a while. By Hashim Warren.

As the team grew and added staff from different disciplines (marketing, events, HR, etc), however, this workflow became less ideal. Not everyone was equally comfortable with the command line or writing their content in MDX markdown files.

We had a lively debate within Gatsby about which CMS to adopt. Because of our ecosystem of 2,600+ Gatsby plugins, we were spoiled with the riches of choice. We could use an open-source CMS like Ghost, Drupal, or Strapi. Or we could stick with MDX files and use Forestry or Netlify CMS.

The article then describes:

  • Why headless WordPress?
  • Unlocking a faster workflow
  • Page builder bonus
  • Inviting the community

Beyond the blog, they are also working on using WordPress to collect and manage community submissions to our site showcase. Once that is ready to ship, you will be able to submit your Gatsby site through a form. Then, through the power of GraphQL mutations, and WPGraphQL, the submission will be automatically captured in WordPress, then edited and published. Good read!

[Read More]

RPC over RabbitMQ (with Elixir)

Categories

Tags erlang programming web-development app-development performance

At Community we use RabbitMQ, a lot. It’s the infrastructure backbone that allows our services (over forty at this point) to communicate with each other. That mostly happens through events (since we have an event-sourced system), but in some cases what we need is a request-response interaction between two services. By Andrea Leopardi.

We settled on using it for request-response interactions as well in the form of Remote Procedure Calls (RPCs). In this post, I’ll go over the architecture of such interactions, the RabbitMQ topologies we use to make them work, the benefits around reliability and the compromises around performance, and finally how this all implemented to be as fault-tolerant as possible with Elixir.

The article deals with:

  • What is an RPC
  • Why RPCs over RabbitMQ
  • RabbitMQ topology
  • Caller architecture
    • The response queue
    • Elixir process architecture
  • Receiver architecture and topology
    • In Elixir, as always, the answer is Broadway

We saw how we architected a system to make service-to-service RPCs over RabbitMQ. We went over the RabbitMQ topology we use, showing all the queues, exchanges, and bindings involved. We also covered the Elixir-specific implementation of this system, to sprinkle some practical examples on top of this stuff. You will find also plenty of links to further reading in the article. Good read!

[Read More]

Server-Side development with Kotlin: Frameworks and libraries

Categories

Tags kotlin programming jvm performance

It is quite common to use existing frameworks and libraries for backend application development. If we look at most of the popular frameworks in the Java ecosystem, many of them actually support Kotlin out of the box. There are a lot of Java libraries too. You can use these frameworks and libraries in your Kotlin programs thanks to Kotlin’s flawless Java interoperability. By Anton Arhipov.

The article then compares these frameworks for development with Kotlin:

  • Spring framework
  • Ktor
  • More web frameworks (Micronaut, Quarkus, Javalin, SparkJava, Vaadin, CUBA, and Vert.x)
  • Database access
  • Testing
  • Other libraries
  • Additional tools

gRPC is a high-performance, open-source, universal RPC framework. Kotlin is now supported by gRPC. And RSocket is also gaining popularity as a protocol for use in building microservices. Kotlin integration was recently added to RSocket.

Kotlin was initially designed as an alternative JVM programming language, meaning that Kotlin can be used anywhere where Java is used. Thanks to Java interoperability, it is easy to use any of the existing frameworks and libraries that are familiar to Java developers. This all greatly simplifies the adoption of Kotlin for application development on the JVM. Great news!

[Read More]

Mapping the future of legal personality

Categories

Tags blockchain teams crypto miscellaneous how-to cloud cio

This article evaluates how to adapt to disruption by examining the concept of legal personality as applied to DAOs, taking into account the unique features of DAOs, and reimagining how these and other Innovative Technology Arrangements might be regulated more effectively. By Max Ganado, Joshua Ellul, Gordon Pace, Steven Tendon, and Bryan Wilson.

Innovative Technology Arrangements (“ITAs”), including Decentralized Autonomous Organizations (“DAOs”), are beginning to challenge existing constructions of legal personality for non-human business entities around the globe.

Blockchain and DAOs are exciting because they represent an opportunity to revisit the way society itself is organized; in the same way, they are scary because of the unknowns associated with how these new technologies will fit into the world around us.

The article is split into multiple sections:

  • Decentralized autonomous organizations
  • Overview of legal personality
  • Similarities between legal organizations and DAOs - Analyzing the blockchain context
  • A new model for DAOs - the Maltese direction
  • Examples of how to regulate DAOs: United States
  • Challenges to granting legal personality to technology arrangements

Just as other forms of legal personality have been granted to non-human entities, there should be a new form of legal personality for DAOs. Existing literature has demonstrated that certain rights are required for certain protections. Interesting read!

[Read More]

How to use Azure spot to reduce Azure virtualization costs

Categories

Tags azure cloud cio servers

One of the key benefits of cloud computing is the resource optimization achieved through hardware abstraction. This article explains how Azure Spot can provide a scalable virtualization management solution saving you from using unnecessary VMs. By Symon Perriman.

When a workload becomes virtualized, it is no longer bound to any specific server and can be placed on any host with available and compatible resources. This allows organizations to consolidate their hardware and reduce their expenses by optimizing the placement of these virtual machines (VMs) so that they are most efficiently using the underlying hardware.

The main bits of the article:

  • What is Azure spot?
  • Azure spot VM workloads
  • Deploying an Azure spot VM
  • Evicting an Azure spot VM
  • Virtual Machine Scale Sets (VMSS) and Azure spot VMs

This is another great example of how Microsoft is providing its customers with more deployment options and reducing costs while maximizing their hardware utilization. Nice one!

[Read More]

Getting started with SwiftIO

Categories

Tags swiftlang ios app-development robotics

SwiftIO is an electronic circuit board that runs Swift on the bare metal. It can control sensors, displays, lights, motors and more. By Tibor Bödecs.

MadMachine’s SwiftIO board is an Arduino-like system, but it can run Swift code natively on the hardware. Swift is a great programming language for education purposes, it is a modern language with a JavaScript-like syntax that is easy to learn and understand. Swift is safe and efficient, this combination makes it a perfect candidate for embedded systems. The SwiftIO board enables us regular Swift / iOS developers to build IoT projects using our favorite programming language.

The board itself has a small footprint, it’s just about 1,57" x 2,36" (4cm x 6cm) big.

It’s quite a powerful microcontroller. It is definitely the most affordable Swift language learning device. It can be ideal for STEM education purposes for students who want to see how to build electronic circuits and get some basic Swift programming skills at the same time.

The article main parts:

  • Technical specifications (Arm® Cortex®-M7 core @600MHz)
  • Ports, communication, architecture
  • The SwiftIO environment
  • Installing the MadMachine SDK & CLI
  • The MadMachine toolchain
  • The SwiftIO framework
  • Using Xcode

… and more. You can build some really fun stuff with SwiftIO, it’s a perfect tool for learning how electric circuits work. Good read!

[Read More]

Pulsar advantages over Kafka

Categories

Tags apache devops queues event-driven messaging app-development

Recently, author has been looking at Pulsar and how it compares to Kafka. A quick search will show you that there is a current war between the two most famous open source messaging systems. By Javier Ramos.

Author focuses on the Pulsar advantages and give you some reasons why you should consider it over Kafka. But let’s be clear, in terms of production usage, support, community, documentation, etc; Kafka clearly surpasses Pulsar according the author.

Pulsar is very flexible; it can act as a distributed log like Kafka or a pure messaging system like RabbitMQ. It has multiple types of subscriptions, several delivery guarantees, retention policies and several ways to deal with schema evolution. It also has a big list of features …

Pulsar architecture

Source: https://pulsar.apache.org/docs/en/concepts-architecture-overview/

The article then describes:

  • Kafka in a nutshell
  • Kafka pain points
  • Pulsar in a nutshell
  • Pulsar features
  • Pulsar hands-on
  • Akka streams example
  • Pulsar function example
  • Pulsar advantages
  • Pulsar cons
  • Pulsar use cases

Competition is good, it drives innovation. Kafka is a mature, resilient, and battle-tested product used all over the world with great success. However, Pulsar is still quite immature and I would be careful before introducing into production. Perform analysis, do benchmarks, research and write proof of concepts before incorporating Pulsar into your organization. Nice read!

[Read More]

Angular push notifications: complete step-by-step guide

Categories

Tags angular web-development frontend app-development

In this post, we are going to go through a complete example of how to implement Web Push Notifications in an Angular Application using the Angular Service Worker. By Angular University.

Note that these are the exact same native notifications that we receive for example on our mobile phones home screen or desktop, but they are triggered via a web application instead of a native app. When well used, Push notifications are a great way of having our users re-engage with our application.

You will also learn along the way how Push Notifications work in general, as we follow and explain the complete flow that a given notification follows.

The article content is split into:

  • How do Push Notifications work?
  • Browser Push Service Providers
  • What is a VAPID key pair?
  • generating a VAPID key pair using node webpush
  • Subscribing to Push Notifications
  • showing again the Allow/Deny Notifications popup
  • Understanding the PushSubscription object and its properties
  • How to use the Push Subscription?
  • Sending Push Notifications from a Node backend
  • Push Notifications In Action - Demo
  • Source Code + Github Running Example (complete Angular PWA)

When the Push service receives the message (e.g. Firebase Cloud Messaging), it will know to which browser instance to forward the message to based on the unique url of the endpoint. Please, also check a video channel with free Angular videos. Perfect!

[Read More]

Migrating our Ansible roles to a collection

Categories

Tags ansible web-development devops web-development app-development

An article by Sebastian Gumprich about their experience with decision to move their existing Ansible roles for Linux, ssh, nginx and MySQL into an Ansible collection. Collections are a distribution format for Ansible content that can include playbooks, roles, modules, and plugins.

Having only one repository for all roles means we don’t have to duplicate code. We have one common test-suite for all roles that works the same for every role. Also Collections are the future, as there is possibly no support for roles in the next version of Ansible Galaxy (see ansible/galaxy_ng#58).

However, collections are only supported from Ansible 2.9 and onwards. And Ansible 2.8 is still supported (https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html#release-status). This means we need to support the separate roles until 2.9 is the oldest maintained release.

The guide then describes:

  • The plan
  • Problems and other interesting things
  • The Result
  • The future

The hardest bug we encountered was a problem with AppArmor and MySQL on recent Ubuntu distributions. Here’s the bug: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765. A faulty AppArmor profile prevents MySQL from starting because AppArmor blocks access to MySQL’s configuration files. And Github Actions run on a Ubuntu 18.04 virtual machine with AppArmor enabled. So I wondered why the role does work when running molecule locally (btw: I use Arch) but not in the CI-pipeline. It took some days to figure this one out. However once I found out the reason for this, the solution was found much faster. Robert de Bock also had this problem and fixed it here

Nice one!

[Read More]

How to keep NgRx state on refresh in Angular

Categories

Tags frontend nodejs angular javascript web-development

It’s a common requirement: persisting NgRx state in order to load it back up when your Angular application is restarted. This process of populating an empty object with domain data is called re-hydration. While it’s common to persist the store data to the browser storage (mostly localStorage), you might also re-hydrate from a server-side cache. By Nils Mehlhorn.

There are some pitfalls to watch out for when applying this pattern. For one thing, you should take care not to store sensitive data in potentially insecure storages. Consider factors such as multiple users working on the same machine. Additionally, the state you’re storing can become outdated. Consequently, you might incorporate techniques like validation and partial re-hydration.

The article pays attention to:

  • Persist with Redux DevTools
  • Re-Hydration Meta-Reducer
  • Re-Hydration Meta-Reducer + Effects

You will find detailed code examples for each of the discussed topics. The only disadvantage To learn about advantages and disadvantages of re-hydration follow the link to full article. Nice one!

[Read More]