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 ]

Spinning with Swift

Categories

Tags swiftlang programming web-development app-development javascript

Swift is a great language for creating Spin applications. This tutorial walks through the process of installing SwiftWasm, building a simple Wagi app, and then running it in Spin. Spin is a framework for building and running event-driven microservice applications with WebAssembly (Wasm) components. With Spin, we’re trying to make it easier to get started with using WebAssembly on the server so that we can all take advantage of the security, portability, and speed WebAssembly provides when it comes to running microservices. By Matt Butcher.

The article then describes in some detail:

  • Setting up Swift for WebAssembly
  • Creating a new Swift program
  • The getEnvVar function
  • The top-level code
  • Running the code
  • The getName function
  • Calling our functions
  • Compiling and running our code

… and more. Thanks to the hard work of the SwiftWasm community, Swift is turning out to be an excellent language for WebAssembly development. In this article, we’ve created a simple Spin application in Swift, compiled it to WebAssembly with WASI, and then executed it as a Swift Wagi application. Nice one!

[Read More]

Fewer working hours, more productivity

Categories

Tags miscellaneous performance app-development software

It seems like a counterintuitive question: how can employees get more done in less time? Surely, if we want employees to be productive, we need to give them more time to work, not less? But recent studies have shown that shorter working hours can lead to increased productivity. By @quire.io.

In one study, Microsoft found that when they reduced their employees’ working week from five days to four, they saw a 40% increase in productivity.

The article then focuses on the following:

  • Why working fewer hours makes employees more productive
  • The UK trialing a 4-day work week
  • How to be more productive with fewer working hours
  • Tips to help employees successfully work fewer hours and be more productive
  • Fewer working hours, more productive

… and more. When you take a break, it gives your mind a chance to rest and rejuvenate. This can help you come back to your work with fresh energy and new ideas. Try to take a break at least once every hour, even if it’s just for a few minutes. Get up and stretch, take a walk, or grab a quick snack. Good read!

[Read More]

How I use stories to share data at meetings

Categories

Tags miscellaneous cio agile data-science management

Want to keep people awake at data presentations? Try sharing your findings backwards. You’ve worked it. Now put your chart down, flip it and reverse it. By Ryan Estrellado.

The article main sections:

  • Sequence well or risk slumber
  • The analysis: Start with the data points
  • Look at all the data points
  • Note interesting details
  • Categorize details into interesting themes
  • The presentation: start with the story
  • Point out interesting themes

… and more. Starting with the data points and ending with the story doesn’t set the tone for a compelling discussion. It’s like inviting your friends over for dinner, then showing them your timeshare presentation before bringing out the food. They were there for the shrimp cocktail and gossip. That needs to come first if you want to keep them happy. Good reading!

[Read More]

Scaling up and load balancing your PostgreSQL Cluster using Pgpool-II

Categories

Tags database performance software-architecture sql

PostgreSQL’s speed, robustness and security makes it suitable for 99% of the new-age applications. Today, let’s deep dive into how you can enable scalability and load balancing of your PostgreSQL cluster using Pgpool-II. By Azman Agung Nugraha.

Pgpool-II is a middleware that works between PostgreSQL servers and a PostgreSQL database client. It is distributed under a license similar to BSD and MIT. Let’s take a look at the main features of the article:

  • What is PGPOOL-II?
  • How load balancing works within the PGPOOL-II
  • Load balancing mode in Pgpool-II
  • Best architecture to deploy Pgpool-II
  • Pgpool-II parameter that you should looking out

Generally, you would not install Pgpool-II on the backend servers. What you see in recent picture is the most common configuration. Pgpool-II is a standalone server which essentially sits in front of the databases. The two Postgres servers are often configured with streaming replication with one being the Primary DB and the other the Standby DB. Good read!

[Read More]

Interview: Haskell in production @Channable

Categories

Tags programming performance app-development functional-programming

Interview with Fabian Thorand @Channable. They use Haskell for a variety of backend services. The biggest one by far is their data processing system, which powers the import from our customers, manages the data storage, and applies the user-defined rules to the data before streaming it to other components in our backend which handle the actual connections to the third-party platforms. By Liam Mooney.

Haskell was first introduced as an experiment rewriting a component that was hitting the limits of what was possible in Python and the existing architecture (the full story is on our tech blog).

The main selling point is Haskell’s strong type system. It eliminates many types of runtime errors that we regularly see crop up in our Python code base (though it has gotten better since we use types in Python as well – via mypy). Additionally, it makes refactoring existing code a breeze: one can be sure that almost all required changes are caught by the compiler.

One big downside of Haskell that is noticeable in the daily development workflow is the lack of tooling. Fortunately, at least the “IDE” side of it improved quite a bit with the haskell-language-server project, which was a game-changer in terms of development convenience.

An underappreciated advantage of Haskell is also its great runtime system. It makes it very easy to add both concurrency and parallelism to your programs using lightweight threads. Something that is usually a lot harder to do in other programming languages if you didn’t design for it from the start. Good read!

[Read More]

Understanding the stack and heap in C#

Categories

Tags programming performance app-development code-refactoring

Based on my reading, “the stack” and “the heap” are clearly important concepts for understanding how memory is managed in C# programs, however until recently I had only a superficial understanding of them and their role. By Liam Mooney.

This is a basic class with two fields that are being initialised by a constructor

Source: https://endjin.com/blog/2022/07/understanding-the-stack-and-heap-in-csharp-dotnet.html

The article makes a good job explaining:

  • What is “the stack”?
  • What is “the heap”?
  • Thinking about variables and program memory
  • Value types vs reference types
  • So where do C# variables get stored?
  • There are exceptions

The defining property of stacks is that they’re last-in, first-out, meaning the last item added to the stack is the first item to be removed. In other words, to place a new item onto a stack it has to go on the top, and only the item currently at the top can be removed, therefore if you wanted to remove an item from the middle of a stack, say, the third item down from the top, you would first have to remove the top two items.

Excellent read with plenty of code examples and charts helping you to understand the concepts better!

[Read More]

Pair programming approach for engaging girls in the computing classroom: Study results

Categories

Tags miscellaneous programming agile teams career

Authors share the second report in our series of findings from the Gender Balance in Computing research programme, which they’ve been running as part of the National Centre for Computing Education and with various partners. By Katharine Childs.

In this research programme, funded by the Department for Education in England, we aim to identify ways to encourage more female learners to engage with Computing and choose to study it further.

The study main points are:

  • Computing education through a collaborative lens
  • Researching collaborative learning in the primary computing classroom
  • What can we learn about pair programming from the study?
  • Find out more about pair programming
  • Collaboration in our research

The evaluators also gathered qualitative data by running teacher and learner interviews and conducting lesson observations, and they were pleased that this data provided some rich insights into the benefits of using a pair programming approach in the primary classroom, and gave some promising indications of possible benefits for female learners in particular. Good read!

[Read More]

Lessons from writing a compiler

Categories

Tags miscellaneous programming oop app-development performance data-science

The standard academic literature is most useful for the extreme frontend (parsing) and the extreme backend (SSA, instruction selection and code generation), but the middle-end is ignored. This is fine if you want to learn how to build, e.g., the next LLVM: a fat backend with a very thin frontend. By Fernando Borretti.

Imagine a compiler as a 2D grid. The rows are the stages of compilation: from parsing, through the middleend, to the backend. The columns are the different facets of the programming language being implemented. For a smaller language like C, the different facets are: global variable declarations, enum declarations, type declarations, function declarations, and nothing else. More featureful languages add extra facets: interface and class definitions in C++, trait and impl definition in Rust, etc.

This article contains some of the lessons I learned writing the compiler for Austral, a new systems programming language with linear types that I’ve been working on for a while. The first few sections are high-level, the rest most specific to using OCaml to write a compiler.

The article then dives into:

  • Implementation strategies
  • Just use OCaml
  • Just use Menhir
  • What tests are useful
  • Compilation model
  • Code organization
  • Bootstrapping issues
  • The environment
  • Identifying declarations
  • Errors
  • Remarks

There are, broadly, two ways to implement a compiler. In the waterfall strategy, each stage is implemented one after the other: the complete parser, then the complete semantic analysis pass, then the complete type checking pass, and on to the backend stages. Excellent read!

[Read More]

Working with a JSONB array of objects in PostgreSQL

Categories

Tags json database sql app-development

Get, add and remove JSON objects from an array. By Rob Tomlin.

CREATE INDEX idx_purchases_name
 ON public.purchases
 ((items_purchased ->> 'name'));

In this article, author will work with a jsonb column containing an array of objects and explore how to:

  • Get all objects in the array
  • Get a specific object from the array by position in the array. When the position is known and when we have to discover it
  • Add a json object to the array
  • Remove a specific object from the array
  • Indexing including indexing a key in the JSONB column

PostgreSQL has many functions and operators for JSON data. Links to further reading also provided in the article. Nice one!

[Read More]

6 best practices to improve Node.js security

Categories

Tags infosec app-development javascript web-development nodejs

Today, Node.js is widely used in web and mobile applications, for it fills the gap between front-end and back-end applications. Unfortunately, increased usage of Node.js has opened new doors for attackers to exploit misconfigurations and vulnerabilities. By Lahiru Hewawasam.

The article main content is split into:

  • Validate user inputs
  • Using a reverse proxy to add a layer of security
  • Managing application secrets
  • Using HTTP response headers
  • Server-side logging and monitoring
  • Using security linters that capture vulnerabilities in code

Code linters help developers identify various issues in the code before compiling. They can detect the most common issues and force developers to follow best practices.Good read!

[Read More]