What is an operating system?

An operating system (OS) is the Application Which, after being initially loaded into the computer by a boot program, oversees all the other application programs in a computer. The application programs make use of the working system by making Furthermore, users can interact directly with the operating system Via a user interface like a command line or a graphical user interface (GUI).

9 Popular Mobile Operating Systems

Android OS (Google Inc.) ...
2. Bada (Samsung Electronics) ...
BlackBerry OS (Research In Motion) ...
iPhone OS / iOS (Apple) ...
MeeGo OS (Nokia and Intel) ...
Palm OS (Garnet OS) ...
Symbian OS (Nokia) ...
webOS (Palm/HP) ...

Types of operating systems.

Operating systems normally include pre-loaded on almost any Computer you purchase. Many men and women use the operating system which comes with their computer, however it is possible to update or perhaps alter operating systems. The three most frequent operating systems for personal computers are Microsoft Windows, macOS, and Linux. A GUI enables you to use your mouse to click on icons, switches , and menus, and that which is clearly displayed on the display by means of a combo of images and text. Each operating system's GUI includes a different feel and look, so if you Switch to another operating system it might appear unfamiliar at first. However, modern operating systems have been made to be effortless to utilize , and the majority of the fundamental principles are exactly the same.

Microsoft established the Windows operating platform at the mid-1980s. There have been a number of distinct variants of Windows, but the latest ones are Windows 10 (published in 2015), Windows 8 (2012), Windows 7 (2009), along with Windows Vista (2007). Windows includes pre-loaded on many new PCs, which helps to ensure it is the hottest operating system on the planet.
Microsoft Windows
Microsoft established the Windows operating platform at the mid-1980s. There have been a number of distinct variants of Windows, but the latest ones are Windows 10 (published in 2015), Windows 8 (2012), Windows 7 (2009), along with Windows Vista (2007). Windows includes pre-loaded on many new PCs, which helps to ensure it is the hottest operating system on the planet.
MacOS (formerly called OS X) is a Lineup of operating systems made by Apple. It comes preloaded on all Macintosh computers, or Macs. A number of the specific models include Mojave (published in 2018), High Sierra (2017), and Sierra (2016). Based on StatCounter Global Stats, macOS users accounts for significantly less than 10 percent of international functioning systems--considerably lower than the percent of Windows users (greater than 80 percent ). 1 reason behind this is that Apple computers have a tendency to be costlier. But a lot of individuals do prefer the appearance and feel of macOS over Windows.
MacOS (formerly called OS X) is a Lineup of operating systems made by Apple. It comes preloaded on all Macintosh computers, or Macs. A number of the specific models include Mojave (published in 2018), High Sierra (2017), and Sierra (2016). Based on StatCounter Global Stats, macOS users accounts for significantly less than 10 percent of international functioning systems--considerably lower than the percent of Windows users (greater than 80 percent ). 1 reason behind this is that Apple computers have a tendency to be costlier. But a lot of individuals do prefer the appearance and feel of macOS over Windows.
Linux (pronounced LINN-ux) is a household of open-source operating systems, so they may be altered and distributed by all around the globe. This differs from proprietary program such as Windows, which may only be altered by the organization that owns it. The benefits of Linux are that it's free, and there are several different distributions or variations you may select from. Based on StatCounter Global Stats, Linux users accounts for under 2 percent of international functioning systems. But most servers run Linux since it's relatively simple to personalize.
Linux (pronounced LINN-ux) is a household of open-source operating systems, so they may be altered and distributed by all around the globe. This differs from proprietary program such as Windows, which may only be altered by the organization that owns it. The benefits of Linux are that it's free, and there are several different distributions or variations you may select from. Based on StatCounter Global Stats, Linux users accounts for under 2 percent of international functioning systems. But most servers run Linux since it's relatively simple to personalize.
The operating systems we have been speaking about so much were created to operate on desktop and notebook computers. Mobile apparatus like telephones , tablets , and MP3 players Are distinct from desktop and notebook computers, so that they run operating systems that have been designed especially for mobile devices. From the screenshot below, you can view iOS running in an iPad. Operating systems for mobile devices normally are not as fully featured As those created for desktop and notebook computers, and they are not capable to Run each the exact same software. But, you can still perform a Great Deal of things Together, like watch videos, browse the net, manage your calendarand play games.
Operating systems for mobile devices
The operating systems we have been speaking about so much were created to operate on desktop and notebook computers. Mobile apparatus like telephones , tablets , and MP3 players Are distinct from desktop and notebook computers, so that they run operating systems that have been designed especially for mobile devices. From the screenshot below, you can view iOS running in an iPad. Operating systems for mobile devices normally are not as fully featured As those created for desktop and notebook computers, and they are not capable to Run each the exact same software. But, you can still perform a Great Deal of things Together, like watch videos, browse the net, manage your calendarand play games.
Pretty Good Privacy (PGP) and Digital Signatures
by Ankur Kothiwal

If you have sent any plaintext confidential emails to someone (most likely you did), have you ever questioned yourself about the mail being tampered with or read by anyone during transit? If not, you should!

Any unencrypted email is like a postcard. It can be seen by anyone (crackers/security hackers, corporations, governments, or anyone with the required skills), during its transit.

In 1991 Phil Zimmermann, a free speech activist, and anti-nuclear pacifist developed Pretty Good Privacy (PGP), the first software available to the general public that utilized RSA (a public key cryptosystem, will discuss it later) for email encryption and signing. Zimmermann, after having had a friend post the program on the worldwide Usenet, got prosecuted by the U.S. government; later he was charged by the FBI for illegal weapon export because encryption tools were considered as such (all charges were eventually dropped). Zimmermann later founded PGP Inc., which is now part of Symantec Corporation.

In 1997 PGP Inc. submitted a standardization proposal to the Internet Engineering Task Force. The standard was...

Mark Text vs. Typora: Best Markdown Editor For Linux?
by Sarvottam Kumar

Markdown is a widely used markup language, which is now not only used for creating documentation or notes but also for creating static websites (using Hugo or Jekyll). It is supported by major sites like GitHub, Bitbucket, GitLab, Stack Exchange, and Reddit.

Markdown follows a simple easy-to-read and easy-to-write plain text formatting syntax. By just using non-alphabetic characters like asterisk (*), hashtag (#), backtick (`), or dash (-), you can format text as bold, italics, lists, headings, tables and so on.

Now, to write in Markdown, you can choose any Markdown applications available for Windows, macOS, and Linux desktop. You can even use web-based in-browser Markdown editors like StackEdit. But if you’re specifically looking for the best Markdown editor for Linux desktop, I present you two Markdown editors: Mark Text and Typora.

I’ve also tried other popular Markdown apps available for Linux platforms such as Joplin, Remarkable, ReText, and Mark My Words. But the reason I chose Mark Text and Typora is the seamless live preview features with distraction free user interface. Unlike other...

In WWDC 2019, Apple announced a brand new feature for Xcode 11; the capability to create a new kind of binary frameworks with a special format called XCFramework. That was fantastic news to anyone, since an ongoing inconvenient situation that was lasting for years finally came to its end. Up until then, a binary framework could be used in one target platform only, and for a specific family of devices. For example, it was officially impossible to build a framework that would contain code aiming on both real iOS devices and the Simulator; unofficial solutions had come up of course […]

TCP Analysis with Wireshark
by Jeffrey Stewart

Transmission Control is an essential aspect of network activity and governs the behavior of many services we take for granted. When sending your emails or just browsing the web you are relying on TCP to send and receive your packets in a reliable fashion. Thanks to two DARPA scientists, Vinton Cerf and Bob Kahn who developed TCP/IP in 1970, we have a specific set of rules that define how we communicate over a network. When Vinton and Bob first conceptualized TCP/IP, they set up a basic network topology and a device that can interface between two other hosts.

Network A Network B

In the Figure 1 we have two networks connected by a single gateway. The gateway plays an essential role in the development of any network and bares the responsibility of routing data properly between these two networks.

Since the gateway must understand the addresses of each host on the network, it is necessary to have a standard format in every packet that arrives. Vince and Bob called this the internetwork header prefixed to the packet by the source host.

Internetwork header

The source and destination entries, along with the IP address, uniquely...

How to Add a Simple Progress Bar in Shell Script
by Nawaz Abbasi

At times, we need to write shell scripts that are interactive and user executing them need to monitor the progress. For such requirements, we can implement a simple progress bar that gives an idea about how much task has been completed by the script or how much the script has executed.

To implement it, we only need to use the “echo” command with the following options and a backslash-escaped character.

-n : do not append a newline
-e : enable interpretation of backslash escapes
r : carriage return (go back to the beginning of the line without printing a newline)

For the sake of understanding, we will use “sleep 2” command to represent an ongoing task or a step in our shell script. In a real scenario, this could be anything like downloading files, creating backup, validating user input, etc. Also, to give an example we are assuming only four steps in our script below which is why we are using 20,40,60,80 (%) as progress indicator. This can be adjusted as per the number of steps in a script. For instance, a script with three steps can be represented by 33,66,99 (%) or a script with ten steps...

Article Images
Ubuntu 20.10 “Groovy Gorilla” Arrives With Linux 5.8, GNOME 3.38, Raspberry Pi 4 Support

Just two days ago, Ubuntu marked the 16th anniversary of its first ever release, Ubuntu 4.10 “Warty Warthog,” which showed Linux could be a more user friendly operating system.

Back to now, after the six months of development cycle and the release of the current long-term Ubuntu 20.04 “Focal Fossa,” Canonical has announced a new version called Ubuntu 20.10 “Groovy Gorilla” along with its seven official flavor: Kubuntu, Lubuntu, Ubuntu MATE, Ubuntu Kylin, Xubuntu, Ubuntu Budgie, and Ubuntu Studio.

Ubuntu 20.10 is a short term or non-LTS release, which means it will be supported for 9 months until July 2021. Though v20.10 does not seem a major release, it does come with a lot of exciting and new features. So, let’s see what Ubuntu 20.10 “Groovy Gorilla” has to offer:

New Features in Ubuntu 20.10 “Groovy Gorilla”

Groovy Gorilla

Ubuntu desktop for Raspberry Pi 4

Starting with one of the most important enhancements, Ubuntu...

Btrfs on CentOS
by Charles Fisher


The btrfs filesystem has taunted the Linux community for years, offering a stunning array of features and capability, but never earning universal acclaim. Btrfs is perhaps more deserving of patience, as its promised capabilities dwarf all peers, earning it vocal proponents with great influence. Still, none can argue that btrfs is unfinished, many features are very new, and stability concerns remain for common functions.

Most of the intended goals of btrfs have been met. However, Red Hat famously cut continued btrfs support from their 7.4 release, and has allowed the code to stagnate in their backported kernel since that time. The Fedora project announced their intention to adopt btrfs as the default filesystem for variants of their distribution, in a seeming juxtaposition. SUSE has maintained btrfs support for their own distribution and the greater community for many years.

For users, the most desirable features of btrfs are transparent compression and snapshots; these features are stable, and relatively easy to add as a veneer to stock CentOS (and its peers). Administrators are...

How to Secure Your Website with OpenSSL and SSL Certificates
by Tedley Meralus

The Internet has become the number one resources for news, information, events, and all things social. As most people know there are many ways to create a website of your own and capture your own piece of the internet to share your stories, ideas, or even things you like with others. When doing so it is important to make sure you stay protected on the internet the same way you would in the real world. There are many steps to take in the real world to stay safe, however, in this article we will be talking about staying secure on the web with an SSL certificate.

OpenSSL is a command line tool we can use as a type of "bodyguard" for our webservers and applications. It can be used for a variety of things related to HTTPS, generating private keys and CSRs (certificate signing requests), and other examples. This article will break down what OpenSSL is, what it does, and examples on how to use it to keep your website secure. Most online web/domain platforms provide SSL certificates for a fixed yearly price. This method, although it takes a bit of technical knowledge, can save you some money and keep...

The tab bar interface appears in some of the most popular mobile apps such as Facebook, Instagram, and Twitter. A tab bar appears at the bottom of an app screen and let users quickly switch between different functions of an app. In UIKit, you use the UITabBarController to create the tab bar interface. For the SwiftUI framework, it provides a UI component called TabView for developers to display tabs in the apps. In this tutorial, we will show you how to create a tab bar interface using TabView, handle the tab selection, and customize the appearance of the tab bar. […]

mastering-swiftui-2We are launching the update of our Mastering SwiftUI book for Xcode 12 and iOS 14. Along with the release of Xcode 12, Apple released a big update to the SwiftUI framework with a lot of additions. Other than adding new UI components to streamline your UI development, Xcode 12 introduces a new App lifecycle API for SwiftUI. There are no more AppDelegate and SceneDelegate in the project. In other words, you can build a pure SwiftUI-based on iOS 14. All the content and projects of our Mastering SwiftUI book are updated to use this new lifecycle. You will learn […]

How to Use Shell Scripting in Linux
by Nawaz Abbasi

Simply put, a Shell Script is a program that is run by a UNIX/Linux shell. It is a file that contains a series of commands which are executed sequentially as if they were entered on the command line interface (CLI) or terminal.

In this quick tutorial on Shell Scripting, we will write a simple program to toss a coin. Basically, the output of our program should be either HEADS or TAILS (of course, randomly).

To start with, the first line of a shell script should indicate which interpreter/shell is to be used to execute the script. In this tutorial we will be using /bin/bash and it will be denoted as #!/bin/bash which is called a shebang!

Next, we will be using an internal Bash function - a shell variable named RANDOM. It returns a random (actually, pseudorandom) integer in the range 0-32767. We will use this variable to get 2 random values – either 0 (for HEADS) or 1 (for TAILS). This will be done via a simple arithmetic operation in shell using % (Modulus operator, returns remainder), $((RANDOM%2)) and this will be stored in a result variable. So, the second line of our program becomes...

How To Kill Zombie Processes on Linux
by Nawaz Abbasi

Killing Zombies!

Also known as “defunct” or “dead” process – In simple words, a Zombie process is one that is dead but is present in the system’s process table. Ideally, it should have been cleaned from the process table once it completed its job/execution but for some reason, its parent process didn’t clean it up properly after the execution.

In a just (Linux) world, a process notifies its parent process once it has completed its execution and has exited. Then the parent process would remove the process from process table. At this step, if the parent process is unable to read the process status from its child (the completed process), it won’t be able to remove the process from memory and thus the process being dead still continues to exist in the process table – hence, called a Zombie!

In order to kill a Zombie process, we need to identify it first. The following command can be used to find zombie processes:

$ ps aux | egrep "Z|defunct"

Z in the STAT column and/or [defunct] in the last (COMMAND) column of the output would identify a Zombie process.

Now practically you can’t kill a Zombie...

Linux Command Line Interface Introduction: A Guide to the Linux CLI
by Antonio Riso

Let’s get to know the Linux Command Line Interface (CLI).

  • Introduction
  • A bit of history
  • First look at the command line
  • Command syntax
  • Notes
  • Basic commands
    • pwd
    • ls
    • file
    • cat
    • cd
    • clear
    • history
    • cp
    • mv
    • rm


The Linux command line is a text interface to your computer.

Also known as shell, terminal, console, command prompts and many others, is a computer program intended to interpret commands.

Allows users to execute commands by manually typing at the terminal, or has the ability to automatically execute commands which were programmed in “Shell Scripts”.

A bit of history

The Bourne Shell (sh) was originally developed by Stephen Bourne while working at Bell Labs.

Released in 1979 in the Version 7 Unix release distributed to colleges and universities.

The Bourne Again Shell (bash) was written as a free and open source replacement for the Bourne Shell.

Given the open nature of Bash, over time it has been adopted as the default shell on most Linux systems.

First look at the command line

Now that we have covered some basics, let’s open a terminal window and see how it looks!

First look at the command line

When a terminal is...

How To Upgrade From Fedora 32 To Fedora 33
by Sarvottam Kumar

Last week, a Red Hat-sponsored community project, Fedora, announced the availability of Fedora 33 Beta. It is a prerelease version of the upcoming Fedora 33 Linux distribution, whose final stable version will arrive in the last week of October.

Fedora 33 is one of the exciting releases as it contains the fundamental shift of the default filesystem from ext4 to btrfs for all Fedora desktop editions and spins, along with other new features and visual changes.

Here are some of the key updates that Fedora 33 Beta includes:

  • GNOME 3.38 desktop environment
  • Linux Kernel 5.8
  • GNU Nano as default terminal text editor
  • earlyOOM enabled by default in Fedora 33 KDE
  • Fedora IoT as an official edition
  • Package update like Ruby, Python, and Perl

For complete details of all features, you can check out the Fedora 33 change set.

Coming to the main topic, you can also upgrade your current Fedora system to the beta version of Fedora 33, which you’ll also be able to upgrade further to the final stable release by simply updating your system once it arrives at the end of October.

So, if you’re the one who wants...

Article Images
Linux Mint 20.1 “Ulyssa” Will Arrive In Mid-December With Chromium, WebApp Manager

As the Linux Mint team is progressing to release the first point version of Linux Mint 20 series, its founder and project leader Clement Lefebvre has finally revealed the codename for Linux Mint 20.1 as “Ulyssa”. He has also announced that Mint 20.1 will most probably arrive in mid-December (just before Christmas).

Until you wait for its beta release to test Linux Mint 20.1, Clement has also shared some great news regarding the new updates and features that you’ll get in Mint 20.1.

First, packaging of open source Chromium web browser and its updates directly through the official Mint repositories. As the team noticed delays between the official release and the version available in Linux distros, it has now decided to set up their own packaging and build Chromium package based on upstream code, along with some patches from Debian and Ubuntu as well.

As a result, the first test build of Chromium is available to download from here.

In last month's blog, the Mint team introduced a new WebApp Manager, inspired by Peppermint OS and its SSB...

The Preservation and Continuation of the Iconic Linux Journal
by Matthew R. Higgins

Editor's note: Thank you to returning contributor Matthew Higgins for these reflections on what the return and preservation of Linux Journal means.

As we welcome the return of Linux Journal, it’s worth recognizing the impact of the September 22nd announcement of the magazine’s return and how it sparked many feelings of nostalgia and excitement in thousands among the Linux community. That being said, it is also worth noting that the ways in which journalism has changed since Linux Journal’s first publication in 1994. The number of printed magazines have significantly decreased and exclusively digitally published content has become the norm in most cases. Linux Journal experienced this change in 2011 when the print version of the magazine was discontinued. Although many resented the change, it is far from the only magazine that embraced this trend. Despite the bitterness by some, embracing the digital version of Linux Journal allowed for its writers and publishers to direct their focus on taking full advantage of what the internet had to offer. 

Despite several advantages of an online...

Installing Ubuntu with Two Hard Drives
by Tedley Meralus

Many computers these days come with two hard drives, one SSD for fast boot speeds, and one that can be used for storage. My Dell G5 gaming laptop is a great example with a 128GB NAND SSD and a 1TB SSD. When building out a Linux installation I have a few options. Option 1: Follow the steps and install Ubuntu on one SSD hard drive for quick boot times and better speed performance when opening files or moving data. Then mounting the second drive and copying files to it when I want to backup files or need to move files off the first drive. Or, Option 2: install Ubuntu on an older hard drive with more storage but slower start up speeds and use the 128GB as a small mount point.

However, as most Linux users are aware, solid state drives are much faster, and files, folders, and drives on a Linux system all have mount points that can be setup with ease.

In this article we’ll go over how to install Ubuntu Linux with separate /root and /home directories on two separate drives – with root folder on the SSD and home folder on the 1TB hard drive. This allows me to leverage the boot times and speed of the...

IPFire 2.25 - Core Update 147

Michael Tremer, maintainer of the IPFire project, announced IPFire 2.25 Core Update 147 today. This is the newest IPFire release since Core Update 146 on June 29th.

IPFire 2.25 Core Update 147 includes some important security updates including a newer version of Squid web proxy that has patched recent vulnerabilities.

Beyond security updates, IPFire 2.25 Core Update 147 adds support for additional hardware, as well as enhancing support for existing hardware because the new release ships with version 20200519 of the Linux firmware package.

IPFire 2.25 Core Update 147 also rectified a recurring issue relating to forwarding GRE connections.

In addition, the update improved IPFire on AWS configurations.

IPFire 2.25 Core Update 147 includes these updated packages: bind 9.11.20, dhcpcd 9.1.2, GnuTLS 3.6.14, gmp 6.2.0, iproute2 5.7.0, libassuan 2.5.3, libgcrypt 1.8.5, libgpg-error 1.38, OpenSSH 8.3p1, squidguard 1.6.0.

You can download IPFire 2.25 Core Update 147 here.


In iOS 14, Apple introduced a lot of new additions to the SwiftUI framework like LazyVGrid and LazyHGrid. But matchedGeometryEffect is the new one that really caught my attention because it allows developers to create some amazing view animations with a few lines of code. The SwiftUI framework already makes it easy for developers to animate changes of a view. The matchedGeometryEffect modifier just takes the implementation of view animations to the next level. For any mobile apps, it is very common that you need to transit from one view to another. Creating a delightful transition between views will definitely […]

Linux Journal
by Webmaster

As of today, Linux Journal is back, and operating under the ownership of Slashdot Media.

As Linux enthusiasts and long-time fans of Linux Journal, we were disappointed to hear about Linux Journal closing its doors last year. It took some time, but fortunately we were able to get a deal done that allows us to keep Linux Journal alive now and indefinitely. It's important that amazing resources like Linux Journal never disappear.

If you're a former Linux Journal contributor or a Linux enthusiast that would like to get involved, please contact us and let us know the capacity in which you'd like to contribute. We're looking for people to cover Linux news, create Linux guides, and moderate the community and comments. We'd also appreciate any other ideas or feedback you might have. Right now, we don't have any immediate plans to resurrect the subscription/issue model, and will be publishing exclusively on LinuxJournal.com free of charge. Our immediate goal is to familiarize ourself with the Linux Journal website and ensure it doesn't ever get shut down again.

Many of you are probably already aware of...

By the time SwiftUI was announced and given to developers in WWDC 2019, it was made obvious that this was going to be the future for developing applications for all Apple devices. However, even though SwiftUI might be the framework that will dominate on UI creation sooner or later, UIKit is still here, and WWDC 2020 came to prove that with some great additions and improvements announced this year. Most of those improvements took place for making it easier to port iPadOS apps to macOS and achieve the maximum possible compatibility. That doesn’t mean though that they can’t be used […]

Earlier, we wrote a tutorial on customizing the appearance of a SwiftUI button. This week, let’s see how to customize the look & feel of a SwiftUI toggle. If you’ve read the tutorial, you know we can use a protocol called ButtonStyle to create your own button style for customizations. For toggles, the customization can be achieved by adopting the ToggleStyle protocol. Later in this tutorial, we will make use of the protocol to transform a toggle from the standard appearance to a checkbox. First, let’s start with the basics. In SwiftUI, you create a toggle by using the Toggle […]

When a macOS user specifically grants a sandboxed app access to a file/folder outside of that app’s container, that special access only survives until the app is closed. If the user reopens the app and wants to again read from and write to that “outside” folder, they have to go through the whole process of showing macOS their “intent” to stray out of the container — unless the developer adds something called “security-scoped bookmarks.” These bookmarks are the topic of today’s tutorial. I’ll be explaining in-depth how developers can create these special bookmarks, store them, access them later, including two […]

WWDC20 finished almost two months ago, but still we are all talking about the new frameworks, APIs, and improvements announced this year. Among all those there’s something that is going to have a strong impact to the way we work when implementing in-app purchases in our apps. That is the brand new capability of testing StoreKit locally in Xcode 12. Up until now one had to stop the development workflow and visit the App Store Connect in order to create the necessary in-app purchase records and at least one sandbox user so testing is possible. After having gone through all […]

core-ml-machine-learning-bookWe’ve been working with Vardhan Agrawal, an iOS developer who has been actively contributed to the machine learning community, to write a book on machine learning and Core ML. Now we are happy to announce that the book “Mastering Machine Learning with Core ML and Python” is now available for early access. This book covers Core ML in-depth. You will learn how to create and deploy your own machine learning model. On top of that, you will learn about Turi Create, Create ML, Keras, Firebase, and Jupyter Notebooks, just to name a few. All these are professional tools which are […]

Have you ever used the magic move animation in Keynote? With magic move, you can easily create slick animation between slides. Keynote automatically analyzes the objects between slides and renders the animations automatically. To me, SwiftUI has brought Magic Move to app development. Animations using the framework are automatic and magical. You define two states of a view and SwiftUI will figure out the rest, animating the changes between these two states. SwiftUI empowers you to animate changes for individual views and transitions between views. The framework already comes with a number of built-in animations to create different effects. In […]

WWDC 2020 introduced several new features and improvements in the entire spectrum of develpment in Apple ecosystem, and definitely every developer found lots of things to get excited with. One of those features regard Xcode 12 and SwiftUI, and we briefly met it in this previous post about what’s new in Xcode 12 and SwiftUI. It is the ability given to developers to create reusable SwiftUI views and modifiers using LibraryContentProvider, and add them as new items to Xcode’s library. One might wonder why this is such a big deal so it deserves a whole new tutorial to discuss about […]

Hey everyone and welcome back to the second and final part of this tutorial series where we explore the intricacies of Apple’s MusicKit by building our very own music player in SwiftUI that can stream songs from our Apple Music account. If you haven’t read Part 1, you can do that here. In the last tutorial, we looked at how to create a MusicKit Identifier for our Apple Developer account, created a JSON Web Token private key, and we were able to successfully make web requests to the Apple Music API. At the end of the tutorial, we also built […]

Feature Flags can improve your continuous integration process in a number of ways. This post will focus on how CloudBees Feature Flags can help improve your developer productivity and shorten the feedback loop with the Flag Override view for frontend validation.  It includes Javascript in examples, but the override view can be used in all available platforms. The flag override view is a lightweight UI element that is very useful for debugging purposes. This override view exposes the current status for each flag set by developers and allows users to override these flags. All this is accomplished from within a handy popup in […]

While I’ve introduced you quite a number of new features announced in WWDC 2020. Let’s step back a bit and check out a useful framework introduced in WWDC 2019. At first glance, it does not look as significant or important as other frameworks, however it consists of a really useful tool when it is needed. That is the LinkPresentation framework, and it provides a handful of built-in functionalities that makes presenting rich links in apps a really simple and straightforward process. LinkPresentation framework contains mechanisms that parse the website behind a link and fetch metadata necessary in order to display […]

macOS developers will most likely be faced with the requirement to build an installer for apps they want to — or must — distribute outside of the Mac App Store (MAS). There is also substantial economic incentive to explore macOS development targeting sales outside of the MAS. In this tutorial, I’ll be explaining how to use Packages, by far one of the most popular tools for developing macOS app installers. It is used by macOS developers worldwide. I’ll provide step-by-step instructions, including many screenshots, walking you through the entire process of building installers. Very importantly, Packages is freeware. A 2019 […]

WWDC 2020 was finished just a few days ago under unprecedented conditions for first time. Virtually, all developers around the globe had the chance for a seat in the front row, being able to learn about all new features and improvements that Apple had to announce this year right at the moment they were becoming available. As always, lots of new stuff and great advancements were introduced, and once again everybody has got really excited and eager to try many new things out. This post is dedicated to the base that makes everything else real; Xcode and Swift. The first […]

The first version of SwiftUI doesn’t come with a native UI component for multiline text field. For multiline input, you can wrap a UITextView from the UIKit framework and make it available to your SwiftUI project by adopting the UIViewRepresentable protocol. We have written a detailed tutorial on the implementationg, showing you how to create a multiline text field in SwiftUI. In iOS 14, which is expected to be released in late Sep, Apple introduced a new component called TextEditor for the SwiftUI framework. This TextEditor enables developers to display and edit multiline text in your apps. In this tutorial, […]

swiftui-outline-view-ios14SwiftUI list is very similar to UITableView in UIKit. In the first release of SwiftUI, Apple’s engineers already made creating list view construction a breeze. You do not need to create a prototype cell and there is no delegate/data source protocol. With just a few lines of code, you can build a list view with custom cells. In iOS 14, Apple continued to improve the List view and introduce several new features. In this tutorial, we will show you how to build an expandable list / outline view and explore the inset grouped list style. Building an Expandable List View […]

swiftui-grid-layout-lazyvgridThe initial release of SwiftUI didn’t come with a native collection view. You can either build your own solution or use third party libraries. In this year’s WWDC, Apple introduced tons of new features for the SwiftUI framework. One of them is to address the need of implementing grid views. SwiftUI now provides developers two new UI components called LazyVGrid and LazyHGrid. One is for creating vertical grid and the other is for horizontal grid. The word Lazy, as mentioned by Apple, means that the grid view does not create items until they are needed. In this tutorial, I will […]

Did you know that a macOS app can read and write outside of its container when sandboxed? Did you know that a non-sandboxed macOS app has no container? Were you aware that you can sell and distribute non-sandboxed macOS apps without using the Mac App Store? Since the focus of most Apple development seems concentrated on iOS, many developers probably take the sandbox for granted. Some might not even be fully aware of the sandbox’s existence, especially in the case of iOS where all apps must be sandboxed. By ignoring the sandbox — and possibly macOS development entirely — developers […]

Earlier, we explored the use of UIViewRepresentable and show you how to integrate UITextView into a SwiftUI project. While you can use the UIViewRepresentable protocol to wrap a UIKit view, but how about a view controller? You probably need to use camera or access the user’s photo library in your app. So, how can use integrate the UIImagePickerController class into your SwiftUI view? In this tutorial, we will walk you through the integration by using the UIViewControllerRepresentable protocol. It’s very similar to the UIViewRepresentable protocol, but UIViewControllerRepresentable is designed for wrapping a UIKit view controller. If you have already read […]

One of the most common tasks that iOS -and not only- developers are called to perform in their programming endeavours is fetching and managing remote images that should be displayed to an app. For instance, suppose that you’re building the next great messaging application where obviously users have contacts. Those contacts have avatar images residing to a server. When users connect to the app then avatars must be downloaded in order to be used by the app. Or, another example, think of an app that manages the event of a worldwide convention, and among its features is the list of […]

Since the advent of OS X Mojave and especially Catalina and the requirement for app notarization, some of us old-time macOS developers are concerned that Apple will pull the plug on the apps that we distribute ourselves. Many of you have downloaded and installed macOS software directly from websites, i.e., not from the Mac App Store. Have you ever really considered it? You can’t download an iOS app outside of the App Store. Yes, I know about the Apple Developer Enterprise Program, but it only “allows large organizations to develop and deploy proprietary, internal-use apps to their employees.” How many […]

Welcome to another macOS tutorial! In this post we are about to learn how to create a macOS application that belongs to a unique category of apps; a category that is quite common but also quite important, and contains a large number of existing and new macOS apps. We are going to learn how to create a document based application. It would be pointless to try to give a definition about what a document based app is, as you can immediately get it; just think of the browser that you’re reading this post now, or Xcode, or even TextEdit app. […]

The List view in SwiftUI is very similar to the table view in UIKit. It is also designed for developers to present a list of items row by row. By default, each row of data is separated by a line separator. In UIKit, you can easily control the appearance and color of the line separator. Unfortunately, there is no official way to remove line separators in SwiftUI. That said, we can make use of the UIKit API to tweak the line separator of the List view in SwiftUI. In this article, we will show you how this can be done. […]

I enjoy so much working with the SwiftUI framework. Like most new frameworks, however, one drawback is that it doesn’t come with all UI controls which are available in UIKit. For example, you can’t find a SwiftUI counterpart of text view. Thankfully, Apple provided a protocol called UIViewRepresentable that allows you easily wrap a UIView and make it available to your SwiftUI project. In this article, we will show you how to create a text view by wrapping the UITextView class from UIKit using UIViewRepresentable. Editor’s note: If you are new to SwiftUI, you can check out our introductory tutorial. […]

swiftui-search-barOne recent question I got is about the implementation of search bar in SwiftUI projects. Unlike UIKit, SwiftUI doesn’t come with a built-in control for search bar. You may use the UIViewRepresentable protocol to reuse UISearchBar in your SwiftUI project. However, as you look at the search bar, it’s not too difficult to build one entirely using SwiftUI. In this tutorial, let’s try to build a SwiftUI version of search bar. The figure below gives you an idea about the search bar we’re going to build. The look & feel is the same as that of UISearchBar in UIKit. We […]

Welcome to another programming tutorial in the Swift programming language! Today we we are going to talk about a topic that usually everybody knows something more or less, but it’s important for new developers in Swift to really understand what is all about and how it works. It’s quite often for the subject of our discussion not to receive the proper attention, so it’s either misused or not used at all. It’s a topic that the more someone advances in Swift, the more necessary it becomes in order to write better and clearer code. And that topic is about Access […]

Apple’s “app group” technology allows a collection of macOS (or iOS) apps from the same development team, developer, vendor, etc., to all communicate with each other, coordinate functionality, share resources, and minimize redundancies. Apple says this capability “allows the apps within the group to share Mach and POSIX semaphores and to use certain other IPC [interprocess communication] mechanisms among the group’s members.” A word of caution, though: I’ve experienced inconsistent and erratic behavior with macOS app groups, especially on OS X 10.15, Catalina. As explained below, you may have to experiment with the app group ID format. Nonetheless, this tutorial […]

At WWDC 2017, Apple announced MusicKit, a framework to help developers build apps that allow users to play Apple Music and their local music library. Unlike most frameworks like ARKit or CoreML, MusicKit cannot be added to your code with a simple import function. Rather, it’s a combination of the Apple Music API, the StoreKit framework, the MediaPlayer framework, and some other web-based technologies. You may be wondering why is this framework so difficult to integrate into your applications compared to other API and frameworks. This is because MusicKit was not only built to work on iOS devices, but Android […]

One of the most common operations macOS users perform and they are quite familiar with is drag and drop. On a daily basis we all drag things around when working on our Macs. We drag files, text, images, and many, many more. Dragging is a kind of action that users expect to find pretty much in every app on macOS, so supporting it in our apps is something we should seriously consider. A drag operation starts somewhere, so it has a source, and it ends somewhere, so there is a destination. Dragging source and destination can be either within the […]

swift-playgrounds-ipad-app“I only have an iPad. Can I use it to develop iOS apps?” This is one of the most common questions for beginners. My answer is always “No, you need a Mac to run Xcode for iOS app development.” “But how about Swift Playgrounds for iPad? Can I use the app to learn Swift and app development?” I believe you know Apple released an app called Swift Playgrounds for iPad. The first version of the iPad app was released in September 2016 with the aim to make it easy for everyone to learn the basics of programming, in particular, the […]

Earlier, we published a SwiftUI tutorial showing you how to create perspective text using the framework. It’s very much like Star Wars’ perspective text but without animation. This week, Priyans Brahmbhatt will teach you how to add animations to the perspective text. Since this article was built on the top of the perspective text tutorial, I highly recommend you to check it out first. We will start from where the previous tutorial ended. Let’s have a look at the code again: Animating the Text Using SwiftUI Before writing the code, let’s think about how we can achieve the animation. I […]

Welcome to a new and interesting enough programming tutorial! Swift is a rich-featured language and it couldn’t be missing a great feature such as the higher order functions. According to Wikipedia: In mathematics and computer science, a higher-order function is a function that does at least one of the following: – takes one or more functions as arguments (i.e. procedural parameters), – returns a function as its result. All other functions are first-order functions. From the practical point of view in real world programming, higher order functions consist all together of a great tool that we can only have benefits […]

The Linux Foundation


Linux Tutorials & Guide

Linux Today