Concept of the semaphore and its counterpart object in the pthread library: the POSIX semaphore, with an example.

Concurrency simply means having multiple pieces of logic within a program being executed simultaneously. Modern software systems are often concurrent, as programs need to run various pieces of logic at the same time. Concurrency can be implemented using only one of the multithreading or multi-processing approaches within a POSIX compliant system.

We are going to have a look at possible control mechanisms that are offered by the pthread library. Semaphores, mutexes, and condition variables alongside different types of locks are used in various combinations to bring determinism to multithreaded programs. …

In this article, we will look at how we can enhance a JavaScript library and add syntactic sugar through declaration files.

One of the most appealing facets of JavaScript development is the wealth of external JavaScript libraries that have already been published, are tried and tested, and are available for re-use.

This article is an excerpt from the book, Mastering TypeScript, 4th Edition by Nathan Rozentals — A comprehensive guide to understand TypeScript language and its latest features.

Declaration files

A declaration file is a special type of file used by the TypeScript compiler. It is only used during the compilation step and is used as a sort of reference file to describe JavaScript. Declaration files are similar to the header files used…

In this article we are going to learn about essential statistics for data assessment, also often referred to as descriptive statistics. Descriptive statistics provide simple, quantitative summaries of datasets, usually combined with graphics. As we shall shortly see, they can demonstrate the tendency to centralization, provide measures of the variability of features, and much more besides.

Note that there is another kind of statistics, known as inferential statistics, which tries to learn information from the distribution of the population that the dataset was generated or sampled from. …

Rust is a modern, open source system programming language that promises the best of three worlds: the type safety of Java; the speed, expressiveness, and efficiency of C++; and memory safety without a garbage collector. In this article, we look at building terminal-based applications in Rust.

Terminal applications are an integral part of many software programs, including games, text editors, and terminal emulators. For developing these types of programs, it helps to understand how to build customized terminal interface-based applications. …

Upgrading an app to its latest platform version, just for the sake of upgrading, is usually not a fun exercise, especially if there is no new and exciting feature to be added. Fortunately, Microsoft has provided solid inter-compatibility between libraries developed for earlier versions of .NET and .NET 5 to make the migration process much smoother. The cherry on top is the underlying performance enhancement that will make the existing code run faster without any significant transformation by the app developer.

There are some technologies that Microsoft has decided not to port to the .NET 5 platform, such as Windows…

Migrating data is a tough role in any organization. Getting all the data from source to destination is a challenging task, especially with Microsoft SharePoint, mapped drives, and other storage resources. Users will complain about data being missing, even if it is irrelevant. In some cases, they will be irritated or even combative, because they are afraid of change. This overview will give you valuable insights to help you master these challenges to deliver a painless migration.

Getting ready: know your content

When contemplating a SharePoint migration, the first piece of advice is to plan and make sure you understand your users’ data, some of…

Moodle is the most-used Learning Management Systems (LMS) there is, and now it’s joined by Moodle Workplace. In this overview, we introduce Moodle Workplace and describe its various new key features. We then compare this newly updated software with standard Moodle, its little sibling, and with Totara, the other popular Moodle distribution for learning in organizations and businesses. Finally, we explore Moodle Workplace’s business model and its versioning policy.

Introducing Moodle Workplace

An open-source LMS that has been developed by Moodle Pty Ltd, Moodle Workplace is based on standard Moodle and has extra features specially designed for corporate and organizational training, resulting in…

The objective of this overview is to help you become familiar with some of the main concepts and terminology used in the field of cyber threat intelligence (CTI). We shall cover the following topics:

  • Cyber threat intelligence
  • The intelligence cycle
  • Defining your intelligence requirements
  • The collection process
  • Processing and exploitation
  • Bias and analysis

With no further ado, let’s get started!

Cyber threat intelligence

If we want to discuss the roots of intelligence discipline, we could probably go back as far as the 19th century, when the first military intelligence departments were founded. …

This guide will show you how to configure the Salesforce Mobile App using declarative customization and actions in the Salesforce Lightning platform. You will learn about the features available to customize the Salesforce mobile application user interface, and you will learn how to configure actions and action layouts and optimize the Salesforce Mobile App user experience for users accessing the Lightning Platform on the go.

We will cover the following topics:

  • Exam objectives — Mobile apps
  • Installing the Salesforce Mobile App
  • Configuring the Salesforce mobile application user interface
  • Building global and object-specific actions and action layouts

Exam objectives — Mobile apps

To complete the Mobile…

The Linux kernel sits between the hardware and user processes. The kernel core implements a set of functions that helps you avoid having to reinvent the wheel and makes it easier to develop device drivers.

In this guide for Linux system engineers and system programmers and Linux embedded development enthusiasts, we look in detail at a key aspect of accessing shared hardware resources safely: locking. Using the kernel locking API, you can protect shared objects and avoid race conditions.


A resource is said to be shared when it can be accessed by several contenders. When they are exclusive, access must…


We help developers build better software | Email for support | Twitter support 9-5 Mon-Fri

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store