# Semantic Role Labelling

## Summary

In linguistics, *predicate* refers to the main verb in the sentence. Predicate takes arguments. The role of **Semantic Role Labelling (SRL)** is to determine how these arguments are semantically related to the predicate.

Consider the sentence "Mary loaded the truck with hay at the depot on Friday". 'Loaded' is the predicate. Mary, truck and hay have respective semantic roles of loader, bearer and cargo. We can identify additional roles of location (depot) and time (Friday). The job of SRL is to identify these roles so that downstream NLP tasks can "understand" the sentence.

SRL is also known by other names such as thematic role labelling, case role assignment, or shallow semantic parsing.

## Discussion

### Why do we need semantic role labelling when there's already parsing?

Often an idea can be expressed in multiple ways. Consider these sentences that all mean the same thing: "Yesterday, Kristina hit Scott with a baseball"; "Scott was hit by Kristina yesterday with a baseball"; "With a baseball, Kristina hit Scott yesterday"; "Kristina hit Scott with a baseball yesterday".

Either constituent or dependency parsing will analyze these sentence syntactically. But syntactic relations don't necessarily help in determining semantic roles. One way to understand SRL is via an analogy. In image captioning, we extract main objects in the picture, how they are related and the background scene. This is precisely what SRL does but from unstructured input text. Such an understanding goes beyond syntax.

However, parsing is not completely useless for SRL. In a traditional SRL pipeline, a parse tree helps in identifying the predicate arguments.

But SRL performance can be impacted if the parse tree is wrong. This has motivated SRL approaches that completely ignore syntax. However, many research papers through the 2010s have shown how syntax can be effectively used to achieve state-of-the-art SRL.

### What are some applications of SRL?

SRL is useful in any NLP application that requires semantic understanding: machine translation, information extraction, text summarization, question answering, and more. For example, predicates and heads of roles help in document summarization. For information extraction, SRL can be used to construct extraction rules.

SRL can be seen as answering "who did what to whom". Obtaining semantic information thus benefits many downstream NLP tasks such as question answering, dialogue systems, machine reading, machine translation, text-to-scene generation, and social network analysis.

Historically, early applications of SRL include Wilks (1973) for machine translation; Hendrix et al. (1973) for question answering; Nash-Webber (1975) for spoken language understanding; and Bobrow et al. (1977) for dialogue systems.

### Which are the essential roles used in SRL?

One of the oldest models is called **thematic roles** that dates back to Pāṇini from about 4th century BC. Roles are assigned to subjects and objects in a sentence. Roles are based on the type of event. For example, if the verb is 'breaking', roles would be *breaker* and *broken thing* for subject and object respectively. Some examples of thematic roles are agent, experiencer, result, content, instrument, and source. There's no well-defined universal set of thematic roles.

A modern alternative from 1991 is **proto-roles** that defines only two roles: *Proto-Agent* and *Proto-Patient*. Using heuristic features, algorithms can say if an argument is more agent-like (intentionality, volitionality, causality, etc.) or patient-like (undergoing change, affected by, etc.).

### How are VerbNet, PropBank and FrameNet relevant to SRL?

Verbs can realize semantic roles of their arguments in multiple ways. This is called *verb alternations* or *diathesis alternations*. Consider "Doris gave the book to Cary" and "Doris gave Cary the book". The verb 'gave' realizes THEME (the book) and GOAL (Cary) in two different ways. **VerbNet** is a resource that groups verbs into semantic classes and their alternations.

**PropBank** contains sentences annotated with proto-roles and verb-specific semantic roles. Arguments to verbs are simply named Arg0, Arg1, etc. Typically, Arg0 is the Proto-Agent and Arg1 is the Proto-Patient. Being also verb-specific, PropBank records roles for each sense of the verb. For example, for the word sense 'agree.01', Arg0 is the Agreer, Arg1 is Proposition, and Arg2 is other entity agreeing.

An idea can be expressed with similar words such as increased (verb), rose (verb), or rise (noun). PropBank may not handle this very well. **FrameNet** is another lexical resources defined in terms of frames rather than verbs. For every frame, *core roles* and *non-core roles* are defined. Frames can inherit from or causally link to other frames.

### What's the typical SRL processing pipeline?

SRL involves predicate identification, predicate disambiguation, argument identification, and argument classification.

Argument identification is aided by **full parse trees**. However, in some domains such as biomedical, full parse trees may not be available. In such cases, **chunking** is used instead.

When a full parse is available, **pruning** is an important step. Using heuristic rules, we can discard constituents that are unlikely arguments. In fact, full parsing contributes most in the pruning step. Pruning is a recursive process.

If each argument is classified independently, we ignore interactions among arguments. A better approach is to assign multiple possible labels to each argument. Then we can use global context to select the final labels. This step is called **reranking**.

### Which are the main approaches to SRL?

Early SRL systems were rule based, with rules derived from grammar. Since the mid-1990s, statistical approaches became popular due to FrameNet and PropBank that provided training data. Classifiers could be trained from feature sets. A set of features might include the predicate, constituent phrase type, head word and its POS, predicate-constituent path, voice (active/passive), constituent position (before/after predicate), and so on.

SRL has traditionally been a supervised task but adequate annotated resources for training are scarce. Research from early 2010s focused on inducing semantic roles and frames. There's also been research on transferring an SRL model to low-resource languages.

One novel approach trains a supervised model using question-answer pairs. Given a sentence, even non-experts can accurately generate a number of diverse pairs. We therefore don't need to compile a pre-defined inventory of semantic roles or frames.

### Which are the neural network approaches to SRL?

Neural network approaches to SRL are the state-of-the-art since the mid-2010s. We note a few of them.

Roth and Lapata (2016) used dependency path between predicate and its argument. Words and relations along the path are represented and input to an LSTM. Another input layer encodes binary features. A hidden layer combines the two inputs using RLUs. Finally, there's a classification layer.

He et al. (2017) used deep BiLSTM with highway connections and recurrent dropout. With word-predicate pairs as input, output via softmax are the predicted tags that use BIO tag notation. GloVe input embeddings were used. Another research group also used BiLSTM with highway connections but used CNN+BiLSTM to learn character embeddings for the input.

Since 2018, self-attention has been used for SRL. Strubell et al. (2018) applied it to train a model to jointly predict POS tags and predicates, do parsing, attend to syntactic parse parents, and assign semantic roles. One of the self-attention layers attends to syntactic relations. Shi and Lin used BERT for SRL without using syntactic features and still got state-of-the-art results.

## Milestones

350
BC

Indian grammarian Pāṇini authors *Aṣṭādhyāyī*, a treatise on Sanskrit grammar. It records rules of linguistics, syntax and semantics. His work is discovered only in the 19th century by European scholars. His work identifies semantic roles under the
 name of *kāraka*.

1965

In what may be the beginning of modern **thematic roles**, Gruber gives the example of motional verbs (go, fly, swim, enter, cross) and states that the entity conceived of being moved is the *theme*. The theme is syntactically and semantically significant to the sentence and its situation. A related development of semantic roles is due to Fillmore (1968).

1991

Dowty notes that all through the 1980s new thematic roles were proposed. There's no consensus even on the common thematic roles. A large number of roles results in *role fragmentation* and inhibits useful generalizations. As an alternative, he proposes **Proto-Agent** and **Proto-Patient** based on verb entailments. An argument may be either or both of these in varying degrees. He then considers both fine-grained and coarse-grained verb arguments, and 'role hierarchies'. Essentially, Dowty focuses on *the mapping problem*, which is about how syntax maps to semantics.

Sep
1993

Beth Levin published *English Verb Classes and Alternations*. This work classifies over 3,000 verbs by meaning and behaviour. She makes a hypothesis that a verb's meaning influences its syntactic behaviour. She then shows how identifying verbs with similar syntactic structures can lead us to semantically coherent verb classes. For example, "John cut the bread" and "Bread cuts easily" are valid. But 'cut' can't be used in these forms: "The bread cut" or "John cut at the bread".

1997

**FrameNet** is launched as a three-year NSF-funded project. Semantic information is manually annotated on large corpora along with descriptions of semantic frames. Conceptual structures are called **frames**. Role names are called **frame elements**. For example, in the *Transportation* frame, *Driver*, *Vehicle*, *Rider*, and *Cargo* are possible frame elements.

2000

Kipper et al. at the University of Pennsylvania create **VerbNet**. This is a verb lexicon that includes syntactic and semantic information. In 2004 and 2005, other researchers extend Levin classification with more classes. In 2008, Kipper et al. use Levin-style classification on PropBank with 90% coverage, thus providing useful resource for researchers.

2000

Just as Penn Treebank has enabled syntactic parsing, the Propositional Bank or **PropBank** project is proposed to build a semantic lexical resource to aid research into linguistic semantics. The idea is to add a layer of predicate-argument structure to the Penn Treebank II corpus. By 2005, this corpus is complete. It uses VerbNet classes. In time, PropBank becomes the preferred resource for SRL since FrameNet is not representative of the language.

2002

Making use of FrameNet, Gildea and Jurafsky apply statistical techniques to identify semantic roles filled by constituents. Their work also studies different features and their combinations. They also explore how syntactic parsing can integrate with SRL. Other techniques explored are automatic clustering, WordNet hierarchy, and bootstrapping from unlabelled data. In the coming years, this work influences greater application of statistics and machine learning to SRL.

2004

Swier and Stevenson note that SRL approaches are typically supervised and rely on manually annotated FrameNet or PropBank. They propose an **unsupervised** "bootstrapping" method. They start with unambiguous role assignments based on a verb lexicon. In further iterations, they use the probability model derived from current role assignments. This may well be the first instance of unsupervised SRL.

Jun
2008

Punyakanok et al. apply full syntactic parsing to the task of SRL. They show that this impacts most during the pruning stage. Based on CoNLL-2005 Shared Task, they also show that when outputs of two different constituent parsers (Collins and Charniak) are combined, the resulting performance is much higher. They call this **joint inference**.

Oct
2008

Johansson and Nugues note that state-of-the-art use of parse trees are based on constituent parsing and not much has been achieved with dependency parsing. This is due to low parsing accuracy. They use dependency-annotated Penn TreeBank from 2008 CoNLL Shared Task on joint syntactic-semantic analysis. Using only dependency parsing, they achieve state-of-the-art results.

2009

Researchers propose **SemLink** as a tool to map PropBank representations to VerbNet or FrameNet. PropBank provides best training data. VerbNet excels in linking semantics and syntax. FrameNet provides richest semantics. SemLink allows us to use the best of all three lexical resources. For example, VerbNet can be used to merge PropBank and FrameNet to expand training resources. By 2014, SemLink integrates OntoNotes sense groupings, WordNet and WSJ Tokens as well. Shi and Mihalcea (2005) presented an earlier work on combining FrameNet, VerbNet and WordNet.

2015

Inspired by Dowty's work on proto roles in 1991, Reisinger et al. produce a large-scale corpus-based annotation. They use PropBank as the data source and use Mechanical Turk crowdsourcing platform. They confirm that fine-grained role properties predict the mapping of semantic
 roles to argument position. In 2016, this work leads to **Universal Decompositional Semantics**, which adds semantics to the syntax of Universal Dependencies.

Nov
2017

Google's open sources **SLING** that represents the meaning of a sentence as a *semantic frame graph*. Unlike a traditional SRL pipeline that involves dependency parsing, SLING avoids intermediate representations and directly captures semantic annotations. It uses an encoder-decoder architecture. Simple lexical features (raw word, suffix, punctuation, etc.) are used to represent input words. Decoder computes sequence of transitions and updates the frame graph. The system is based on the frame semantics of Fillmore (1982).

Sep
2019

While dependency parsing has become popular lately, it's really constituents that act as predicate arguments. Marcheggiani and Titov use Graph Convolutional Network (GCN) in which graph nodes represent constituents and graph edges represent parent-child relations. BiLSTM states represent start and end tokens of constituents. Their earlier work from 2017 also used GCN but to model dependency relations.

Semantic Role Labelling


# Python

## Summary

Python is a general purpose programming language that blends procedural, functional and object-oriented functionality in scripting mode. It has efficient high-level data structures, powerful flexible string handling and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms. This pseudo-code nature of Python is one of its greatest strengths. It allows you to concentrate on the solution to the problem rather than the language itself. Python has an extraordinarily simple syntax. It's creator, Guido van Rossum, says,

> Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another's code; too little and expressiveness is endangered.

## Discussion

### What's so attractive about Python?

    + Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages.
    + Python allows you to write the programs in fewer lines of code.
    + Very clear readable syntax and keywords, with proper indentation a part of syntax checking.
    + Declaration of variables is not required. Object-oriented and imperative programming can be mixed.
    + Easy to manipulate large data, can perform linear algebra and matrix operations with `pandas`, `numpy`, `scipy`, `scikit-learn`, etc. for machine learning.
    + Lists, stacks, queues, dictionaries—you name it, Python has it. Moreover, complex data structures like graphs can be easily implemented in python using a list of dictionaries.

### How do you classify Python as a language?

Python is a programming language that lets you work more quickly and integrate your systems more effectively. It's a high-level, interpreted, interactive and object-oriented scripting language. It incorporates modules, exceptions, dynamic typing, very high-level dynamic data types, and classes.

    + **Python is Interpreted**: Python is processed at runtime by the interpreter. You do not need to compile your program before executing it. This is similar to Perl and PHP.
    + **Python is Interactive**: You can access a Python prompt and interact with the interpreter directly to write your programs.
    + **Python is Object-Oriented**: Python supports object-oriented style or technique of programming that encapsulates code within objects.
    + **Python is a Beginner's Language**: Python is a great language for the beginner-level programmers and supports the development of a wide range of applications from simple text processing to WWW browsers to games.
    + **Python is Portable**: It runs on many Unix variants, on macOS, and on Windows 2000 and later.

### What are some applications where Python is suited?

Python is versatile and it's been used in a variety of applications: console programs, GUI apps including games, server-side programming for web/mobile apps including creation or use of web frameworks, apps that handle media (image/audio/video), enterprise apps for ERP or CRM, data-oriented apps that can handle data in various formats and file types, database-driven apps, networking, scientific apps that require complex and intensive numerical computations, software development tools such as build tools, test automation, software delivery tools such as package managers or installers, system administration utilities, etc.

### I've heard of The Zen of Python. What's that?

Back in August 2004, Tim Peters released an informational document that stated best practices or guiding principles that can benefit Python developers. This document was released as PEP20 -- The Zen of Python. Developers who wish to understand them can do so by studying sample Python code.

### As a developer, how do I get started with Python?

Python can be installed on Windows, Linux or Mac. The default Python distribution by the Python Software Foundation can be installed. For scientific applications, the Anaconda distribution is recommended.

Among the IDEs are IDLE, PyDev for Eclipse, PyCharm, Sublime Text, Visual Studio Code, Spyder, etc. Sublime Text and Visual Studio Code are generic editors that can be enhanced with plugins to support Python. For scientific apps, Spyder may be a good IDE to use.

Python comes with an interactive shell but IPython is an enhanced shell that offers more features. Jupyter Notebook allows programmers to combine code, results and descriptions into a nice flow that can be shared with others. IPython and Jupyter Notebook are part of Anaconda distribution.

For installing new packages or updating existing ones, `pip` is the tool to use. Since developers often work on multiple projects, and each project may use different packages or even versions of Python, it's recommended to use *virtual environments*. A virtual environment can be created using `pip install virtualenv`.

PEP8 is a style guide developers should read to make their code more readable and maintainable.

### Can Python be used in embedded systems?

Yes. Devices that could be considered as embedded by modern standards and can run tuned versions of CPython include:

    + Gumstix
    + Raspberry Pi: The "Pi" in Raspberry Pi comes from Python.
    + BeagleBone Black*MicroPython* is a lean and efficient implementation of a subset Python 3. It's optimised to run on microcontrollers with as little as 256K of Flash and 16K of RAM. The *pyboard* is a compact and powerful development board that runs MicroPython. A quick reference to programming the pyboard is available. MicroPython is supported on a number of MCUs, including many variants from STMicroelectronics.

### Can I use Python along with other languages in a single program?

Yes. For example, time-critical code could be in C and this could be invoked from within Python.

In fact, Python is a specification that has been implemented in many different languages. This makes it easier to interface Python with code from other languages. The interpreter compiles Python source code into bytecode and execute on a virtual machine. Following are some existing implementations:

| Implementation | Virtual Machine | Compatible Language |
| --- | --- | --- |
| CPython | CPython VM | C |
| Jython | Java Virtual Machine | Java |
| IronPython | CLR | C# |
| Brython | JavaScript engine (eg. V8) | JavaScript |
| RubyPython | Ruby VM | Ruby |

Python implementation in RPython (a subset of Python) is called *PyPy*, which is fast due to JIT (just-in-time) compilation. PyPy aims to be cross-platform, memory-light and stackless-supportive.

## Milestones

Dec
1989

Guido van Rossum at CWI in the Netherlands encounters some shortcomings with ABC programming language on the Amoeba operating system. He likes the scripting syntax of ABC but doesn't want to create an Amoeba-specific language. So he decides to create an extensible language giving due importance to exception handling. He starts the implementation during 1989 Christmas holidays.

Feb
1991

Guido van Rossum uploads Python to USENET, thus making it publicly available for the first time.

Oct
2000

Python 2.0 is released. Starting from this release, the development of the language becomes more open and community driven.

Oct
2008

Python 2.6 is released. The development of this release is synchronized with that of Python 3.0. Thus, Python 2.6 incorporates some changes that are part of Python 3.0. This backporting is expected to make way for easier migration of Python 2.6+ code to Python 3.x. Module `future_builtins` has 3.0 semantics.

Dec
2008

Python 3.0 is released. It simplifies some of the unwieldy syntax that was in Python 2.x. It's not backward compatible with Python 2.x and hence its release is seen as controversial. However, Python 3.x is the future of the language.

Jul
2010

Python 2.7 is released. It includes some features introduced in Python 3.1. Python 2.7.x releases will receive bug fixes as well as backports from Python 3.x to make it easier in future to migrate that code to Python 3. It's the last 2.x release (there won't be a 2.8 release). It's expected to be retired in January 2020, implying that it will be maintained for 10 years since its initial release.

Dec
2017

Python 3.6.4 is released. In 2017, Python was ranked among the top 5 languages. Python is promoted and managed by the Python Software Foundation.

Python


# NB-IoT

## Summary

Narrowband IoT (NB-IoT) is a cellular low-power wide-area (LPWA) connectivity standard that enables IoT devices to send their data directly to the cloud without a gateway in between. By low power, we mean that IoT devices can run on battery for 10+ years. By wide area, we mean that cell coverage is improved so that, for example, smart meters in basements can connect to the network reliably.

Traditional cellular standards were focused on either voice or bandwidth-intensive low-latency data applications. These are not scalable for IoT due to reasons of cost, coverage, device density and power. NB-IoT reduces complexity, limits bandwidth, and caps maximum data rates. This is possible because IoT sensor devices are tolerant to delays, require minimum mobility and operate at low data rates.

## Discussion

### What are some use cases of NB-IoT?

In general, applications that send small amounts of data occasionally from sensor nodes that run on batteries, of limited mobility and installed in remote locations will benefit by using NB-IoT. NB-IoT fills the gap between cellular technologies such as 3G/4G and short range technologies such as Wi-Fi/ZigBee/Bluetooth. In other words, it solves the last-mile problem for IoT devices. Applications that require high device density (50,000 device per cell) can use NB-IoT.

Smart metering, asset tracking, wearables including health monitoring, facilities management, intruder and fire alarms, smart dustbins, smart street lighting, connected appliances at home or factories... these are some use cases of NB-IoT.

GSMA has published detailed case studies on smart metering, smart parking, wildlife tracking and environmental monitoring. Likewise, successful implementations of smart metering, smart parking and smart agriculture have been reported.

### What are the techniques enabling NB-IoT?

Since sensor nodes require low data rates, bandwidth is reduced to 180 kHz. Many of the supported bands are in sub-GHz so that better range is obtained. Range is also increased by repeating transmissions. Further reduction in device cost and complexity is due to supporting only FDD, single antenna (no MIMO) and half-duplex mode.

Multitone uplink is optional. Single-tone uplink uses the power amplifier more efficiently. More devices can be supported within the same cell.

For lowering power requirements, Release 12 introduced both *Power Saving Mode (PSM)* and *Discontinuous Reception (DRX)*. With PSM, device is registered with network but can go into deep sleep for up to 12.1 days. Device can wakeup to send data or do a Tracking Area Update. With DRX, device need not monitor control channels most of the time. Release 13 improves this with *extended DRX (eDRX)* in which the device can go to sleep for up to 3 hours.

For unscheduled mobile terminated data, DRX is better. DRX also avoids unnecessary signalling, whereas PSM would still require a TAU even when device has no data to send.

### What are the key parameters of NB-IoT?

In Release 13, NB-IoT is supported in many bands, many of which are sub-GHz. NB-IoT uses only one physical resource block (PRB) of 180 kHz. Coverage is better than GPRS by 20dB. Support is only for FDD, half-duplex without any MIMO. Since sensor devices will mostly be sending data and occasionally receiving commands, uplink data rate is higher than downlink. Uplink can be single-tone or multitone.

### What are the modes in which NB-IoT can be deployed?

NB-IoT has three modes:

    + **In-band Mode**: This is easiest for operators since no changes to hardware are needed. LTE spectrum is used. Many operators in Europe have adopted this. Internal interference (inter-PRB) can be a problem and this has to be managed effectively.
    + **Guardband Mode**: NB-IoT is served by the same eNodeB that serves the LTE cell, thus sharing the power. There's no spectrum cost since operation is in the guard band. Interference is better managed than in in-band mode.
    + **Standalone Mode**: By refarming unused GSM bands, NB-IoT can be deployed in these bands. Frequency planning incurs a cost. New RF modules are needed but more power may be available since this is independent of the LTE cell.

### Who are the chipset vendors for NB-IoT?

Among the major vendors are ARM, Altair Semiconductor (acquired by Sony), Huawei, Intel, Qualcomm, Sequans Communications and Nordic Semiconductor. ARM is a relatively new entrant to this space. It's Cordio-N IP includes Cortex-M33 that could run both the stack and application.

Industry's design approach seems to be a dual-mode chip for both Cat-M1 and Cat-NB1. This is seen in Altair's ALT1250, Intel's XMM 7315, Qualcomm's MDM9206, Sequans' Monarch and Monarch SX, and Nordic's nRF91. . One reason for this dual-mode approach is the uncertainty of NB-IoT's adoption due to presence of LTE-M.

MediaTek has integrated NB-IoT and GSM/GPRS into a single SoC MT2621 for IoT deployment in a GSM/GPRS network that can later be migrated to NB-IoT. The SARA-R4/N4 series from u-blox also dual-mode.

At module level, Sierra Wireless supplies modules that use Altair's ALT1250. Murata will supply modules that integrate ALT1250 and MCUs from STMicroelectronics.

Nick Hunn has given a thorough discussion of NB-IoT chipset landscape as of March 2018.

### What are some considerations when designing for NB-IoT?

High levels of SoC integration are seen for example in Monarch SX that includes an ARM Cortex-M4, an ARM-based sensor hub, a graphics controller, and a media processing engine. Indeed, it's been said that while firms initially focused on making thin modems, the current battle is about SoC integration. Unlike the Monarch SX, Altair's ALT1250 doesn't have an MCU but includes GPS.

It's been said of NB-IoT SoC that,

> Design efforts need to be directed at optimizing power and cost rather than optimizing performance.

Cache memory sub-system involves a tradeoff between performance and area. The use of hardware accelerators are not preferred at NB-IoT's low data rates.

With regard to the protocol stack, an optimized memory footprint can avoid the use of external flash and hence save on both cost and power consumption. Optimal RAM usage will most likely be achieved by designing from scratch rather than downscaling from legacy LTE design. Single-core solutions that integrate service layer, application and layer 1 is now possible, due to half-duplex operation and relaxed delay constraints. Applications must manage sleep and wakeup cycles for power optimization.

### Could you compare NB-IoT against other LPWA technologies?

LPWA technologies competing with NB-IoT include the following:

    + **LoRa**: By early 2018, LoRa had 60+ public networks and 350+ ongoing trials in 100+ countries. LoRaWAN is a networking stack that uses LoRa. Symphony Link and Haystack are alternatives that uses LoRa.
    + **SigFox**: Started in France, by September 2017, SigFox was deployed in 36 countries with national coverage in 17 of them.
    + **RPMA**: US company Ingenu has used *Random Phase Multiple Access* technology to provide its Machine Network in some areas of the US. The technology is now available for deployment outside the US.
    + **Weightless**: Weightless SIG has standardized three variants: Weightless-N, -P and -W. Weightless-P also uses licensed spectrum.NB-IoT has the advantage that it builds on existing cellular networks and enables global roaming. It also uses licensed spectrum implying that interference is better managed. As of February 2018, NB-IoT had 41 launches by 23 operators in 26 countries.

### Could you compare NB-IoT against other cellular IoT standards?

There are two alternatives that 3GPP provides:

    + **LTE-M**: LTE-M is also known by the name *enhanced Machine Type Communications (eMTC)* or *LTE-MTC*. UE category that supports NB-IoT is named *Cat-NB1*; the same for LTE-M is called *Cat-M1*.
    + **EC-GSM-IoT**: *Extended Coverage GSM-IoT* optimizes GSM networks for IoT. Upgrade costs are expected to be minimal but there's also doubt if market will require this technology.LTE-M operates in LTE spectrum while NB-IoT can be deployment in three different modes. While LTE-M is a simplification of LTE, NB-IoT is really DSSS modulation. For operators, LTE-M is only a software upgrade from LTE but NB-IoT will require infrastructure upgrade.

While NB-IoT is suited for low data rate applications, LTE-M targets content rich applications as well. LTE-M is suited for higher data rates and mobility than NB-IoT can provide. For example, LTE-M is suited for wearables while NB-IoT is suited for smart metering. Note that the 200+ kbps peak data rates in NB-IoT are at Layer 1 and peak throughputs are much lower.

### Are there any concerns about NB-IoT?

LoRa and SigFox have been deployed in many countries. For example, Netherlands and South Korea both deployed nationwide LoRa networks in September 2016. The Dutch KPN commented that they chose LoRA "based on quality, technology readiness and industry adoption." NB-IoT is therefore a late entrant in the LPWAN space. If it has to succeed, it has drive down costs; get the pricing right; devices have to be interoperable. There have been concerns of interoperability between Ericsson and Huawei devices.

NB-IoT Release 13 is available in 14 bands and Release 14 added another 4 bands. This may lead to market fragmentation. Support for all bands may result in higher cost and power consumption. From the point of power availability at eNodeB, either eNodeB has to be upgraded or NB-IoT has to resort of retransmissions. The former incurs cost while the latter drains end-device battery.

On the business side, business models are far from clear. Will people buy NB-IoT product and separately subscribe to a connection? Or will NB-IoT offer end-to-end services or solutions including perhaps data analytics? Issues of data privacy and regulations also matter.

### Is LTE-M competing against NB-IoT?

NB-IoT was created because LTE-M was seen too 'broadbandish' to compete against SigFox or LoRa. However, differences between LTE-M and NB-IoT are no longer seen to be significant. If LTE-M achieves high volumes and drives down costs, then this could be bad news for NB-IoT. LTE-M is a simple software upgrade to the RAN while NB-IoT is perceived to require new infrastructure and a new core network. France's Orange instead uses a combination of LTE-M and LoRa. In March 2018, AT&T reported that it's deploying LTE-M but is keeping an eye on NB-IoT developments.

Others believe that both will coexist since their use cases are different. As of June 2017, operators worldwide are showing interest in both technologies. From the standardization perspective, both technologies have a roadmap that include single-cell multicast (for over-the-air upgrades), enhance device positioning (for asset tracking) and TDD support in NB-IoT.

### What support can developers expect in the NB-IoT space?

*GSMA NB-IoT Forum* is promoting NB-IoT and membership is open to non-GSMA members as well. In April 2016, Vodafone and Huawei set up the world's first NB-IoT Open Lab as a testbed for manufacturers and app developers. Since then many others have been set up worldwide.

Since 2012, Deutsche Telekom has been running an incubator named hub:raum to support early stage startups. As part of WARP NB-IoT accelerator program, hub:raum selected 12 startups whose ideas will be piloted to customers around December 2017.

## Milestones

2014

A new study item titled "Cellular System Support for Ultra Low Complexity and Low Throughput Internet of Things" (GP-140421) is proposed in 3GPP. This kickstarts the work on NB-IoT. The document states that 3GPP M2M devices use legacy GPRS but there are competing technologies that provide better coverage and efficiency at lower cost. Document proposes looking into evolving GERAN plus designing a new access system.

2015

3GPP Release 12 introduces Cat-0 UE category. This is targeted towards the IoT market. Neul releases the first pre-standard NB-IoT chip named Iceni. The same year u-blox uses Iceni to produce the first NB-IoT module. Huawei later acquires Neul.

Jun
2016

3GPP completes the standardization of NB-IoT, which is part of Release 13 (LTE-Advanced Pro). Further changes to the specifications can be done only in a backward-compatible manner.

Oct
2016

World's first commercial NB-IoT network goes live in Deutsche Telekom's German and Dutch networks. The first application is a smart parking system. Deutsche Telekom had launched a pre-standard NB-IoT on a commercial network back in October 2015.

Jun
2017

Enhancements to NB-IoT is introduced as part of 3GPP Release 14. These include improved positioning capabilities, enhanced Multicast DL transmission, new band and power class support, mobility enhancements, support of higher data rates, and non-anchor PRB enhancements. UE category Cat-NB2 is introduced.

Dec
2020

A GSMA report notes that 111 operators have deployed NB-IoT networks, of which 34 operators have also deployed LTE-M networks. Whereas 32 countries have both NB-IoT and LTE-M networks, 28 countries have only NB-IoT networks. Among NB-IoT compliant devices, 347 Cat-NB1 devices and 63 Cat-NB2 devices are now available in the market.

NB-IoT


# 5G Ecosystem

## Summary

5G is a complex system that involves multiple players fulfilling various roles. 5G chipset vendors offer 5G modems and SoCs. These chipsets are used by mobile device manufacturers and network infrastructure vendors. Mobile carriers deploy and maintain 5G networks, often in partnership with infrastructure vendors and handset vendors.

While 5G infrastructure vendors provide both radio access network and core network equipment, virtualization in 5G means that network functions can be hosted in the cloud. Thus, cloud providers play an important role. From a data perspective, there are CDN providers, data center connectivity vendors, and cloud providers.

Standardization bodies play an essential role in defining what is 5G. They're complemented by industry bodies that promote 5G and focus on specific verticals. Finally, universities and institutes contribute in terms of research, prototyping and training.

## Discussion

### Who are the key players in the 5G ecosystem?

Without being exhaustive, we note a few players to get a sense of who's involved:

    + **Chipset Vendors**: Qualcomm, Samsung, Huawei, MediaTek, Unisoc, Nokia Networks, Intel, Broadcom, etc.
    + **Infrastructure Vendors**: Huawei, ZTE, Ericsson, Nokia Networks, Samsung, Cisco, HPE, Dell EMC, etc.
    + **Mobile Device Makers**: Apple (iPhone 12), Google (Pixel 5), HTC (mobile hotspot), LG (V50 ThinQ), Samsung (Galaxy 10 5G), Motorola (G 5G Plus), Huawei (Mate 20 X), Nokia (Nokia 8.3), Xiaomi (Mi 10 Pro 5G), OnePlus (OnePlus 8), etc.
    + **Mobile Network Operators**: Verizon, AT&T, T-Mobile, Vodafone, SK Telecom, China Mobile, etc.
    + **Standardization Bodies**: 3GPP, IETF, ITU, and ETSI.
    + **Regulatory Bodies**: Government departments and authorities allocate and auction spectrum for 5G. These include FCC (US), DoT (India), CITC (Saudi Arabia), etc.
    + **Industry Bodies**: 5GAA, 5G-PPP, 5G-MoNArch, 5G IA, 5G-ACIA, NGMN Alliance, O-RAN Alliance, IEEE 5G World Forum, 5G Future Forum, ONF, BBF, etc.
    + **Cloud Providers**: AWS, Google Cloud, Microsoft Azure, Alibaba Cloud, Tencent Cloud, IBM Cloud, etc.
    + **Data Center Colocation Connectivity Providers**: China Unicom, Equinix, CoreSite, Digital Realty, CenturyLink, etc.
    + **CDN Providers**: Akamai, Cloudflare, Fastly, Limelight Networks, AWS, Google Cloud, Microsoft Azure, etc.

### Which are the official standardization bodies for 5G?

The main standard bodies for 5G are:

    + **3GPP**: 3GPP defines the 5G NR specification for 5G communications. It also defines standard User Equipment (UE) and 5G Core Network.
    + **IETF**: IETF contributes towards routing-related work, traffic engineering, abstractions, network management, deterministic networking, and a new transport protocol name QUIC.
    + **ITU**: ITU has a rich history in the development of radio interface standards for mobile communications. The framework of standards for International Mobile Telecommunications (IMT), encompassing IMT-2000 and IMT-Advanced, spans 3G/4G industry perspectives and will continue to evolve into 5G as IMT-2020.
    + **ETSI**: Via Industry Specification Groups (ISGs), ETSI facilitates industry collaboration on topics such as Network Function Virtualization (NFV), Multi-Access Edge Computing (MEC), Microwave Transmission (mWT) and Next Generation Protocols (NGP).

### Which are some industry bodies looking at 5G?

Industry alliances and consortia tend to focus on specific aspects of 5G. Some of these include 5G Automotive Association (5GAA), 5G Infrastructure Public Private Partnership (5G-PPP), 5G-MoNArch, 5G Infrastructure Association (5G IA), 5G Alliance for Connected Industries and Automation (5G-ACIA), NGMN Alliance and O-RAN Alliance.

Among the forums and foundations are IEEE 5G World Forum, 5G Future Forum (5GFF), TM Forum, Broadband Forum (BBF) and Open Networking Foundation (ONF).

**5GAA** is an example of an industry body with a vertical focus. Involving telecom players and vehicle manufacturers, it seeks to provide end-to-end solutions for future mobility and transportation services.

**ONF** is led by operators. It aims to transform network infrastructure and carrier business models through adoption of network disaggregation, open source software and SDN/NFV. OpenFlow, ONOS and CORD are some components of an SDN architecture developed by ONF.

**BBF** is working on a project named *5G-Fixed Mobile Convergence (5G-FMC)*. It concerns mobility and simultaneous access across 3GPP and non-3GPP networks.

### Who are the main infrastructure vendors for 5G?

The telecom industry was traditionally limited to a few who specialized in telecom infrastructure. The equipment was custom-built and expensive. The main vendors for 5G are Ericsson, Samsung, Nokia, Huawei, and ZTE, who supply equipment for both RAN and 5G Core.

5G Core adopts an **open flexible** Service-Based Architecture (SBA). This has enabled new players to enter the industry. They may not supply RAN equipment (base stations or antenna arrays). They're more likely to focus on 5G Core and edge. Companies in this category include Cisco, Dell EMC, Hewlett Packard Enterprise, Lenovo, and more. Cloud providers who're also in this space include AWS, IBM, Oracle, Microsoft Azure, and Google.

Some **acquisitions** have happened to build 5G capability. For example, HPE acquired Aruba and Silver Peak. Microsoft acquired Affirmed Networks and Metaswitch.

These companies leverage their expertise in networking, compute, storage and cloud technologies. They deliver capability to build 5G services using AI/ML and SDN/NFV. Ultimately, a Communications Service Provider (CSP) will deploy a variety of components from many vendors to deliver 5G services. It's therefore essential that all components **interoperate**.

### Which are the main 3GPP specifications for 5G?

Release 15 technical specifications with a focus on 5G is available on 3GPP site. Excluding technical reports, this is close to 900 documents.

5G New Radio (NR) specifications are in the 38 Series. Specifications that concern both LTE and NR are in the 37 Series.

We note a few high-level specifications to get started:

    + TS 22.261: Service Requirements
    + TS 23.501: System Architecture
    + TS 37.340: Multi-connectivity
    + TS 38.300: NR and NG-RAN Overall Description
    + TS 38.401: NG-RAN Architecture

### Apart from the 5G standards, what additional resources are out there to learn more?

Industry players often publish white papers, blog posts, news articles or explanatory videos to help researchers and public understand 5G better. We note a few of these useful websites: Qualcomm's 5G page, Ericsson's The Voice of 5G that's a regular podcast, Nokia's 5G Resources page, Intel's 5G Resource Center, and Huawei's 5G page.

From operators, we have Verizon's 5G News and Resources and Vodafone's 5G for Business.

GSMA's 5G Resources page has white papers and video recordings of webinars.

Keysight Technologies has published a useful glossary of 5G terms and acronyms.

From the many books on 5G, we mention two: 5G New Radio: A Beam-based Air Interface (2020) and 5G Core Networks: Powering Digitalization (2019).

## Milestones

Oct
2016

Qualcomm releases the **world's first 5G modem** in its Snapdragon X50. With support for 28GHz mmWave spectrum, it can achieve a top download speed of 5Gbps, 5x faster than the fastest 4G modems. Qualcomm dominates the market through the first commercial 5G deployments in 2019. But by the end of 2019, Samsung (Exynos 980), MediaTek (Helio P90) and Huawei (Balong 5000 series) emerge as competitors.

Dec
2017

**3GPP approves the first specifications for 5G**, called "early drop" of Release 15. This is followed by "main drop" (June 2018) and "late drop" (March 2019). Release 16 comes out in July 2020.

2018

Across the world, operators and network vendors partner together and conduct **5G trials**. In May, Ooredoo Qatar launches the world's first 5G network. Due to lack of 5G mobile devices, this is probably with fixed terminals. A Stratfor research study names Ericsson, Huawei, Nokia, ZTE and Samsung as leaders in telecom equipment.

Feb
2018

AT&T, China Mobile, Deutsche Telekom, NTT DOCOMO and Orange jointly create **O-RAN Alliance**. The focus is to define specifications, leading to a more open, intelligent and interoperable RAN. The Alliance also supports members in testing their implementations. In February 2020, they publish **O-RAN Architecture Description 1.0**. This is followed by many more specifications covering use cases, operations and maintenance, and slicing architecture.

Apr
2019

South Korean carriers SK Telecom and KT Corp become the first operators to launch the **world's first commercial 5G service**. Within an hour later, Verizon launches its own 5G service in the US in Chicago and Minneapolis. This is the first time 5G commercial networks connect to 5G smartphones. 5G smartphones used in these deployments are Samsung Galaxy S10 5G and Motorola's Moto Z3 with 5G Mod.

Nov
2019

At the World Radiocommunication Conference 2019 (WRC-19), countries support the **harmonization of spectrum for 5G**. In particular, 26GHz, 40GHz, and 66GHz are identified. Under the leadership of ITU, WRC-19 represents good collaboration across countries and industries. This is essential for the success of 5G, known within ITU as IMT-2020. The next meeting will be WRC-23 in 2023.

Dec
2019

A study by Counterpoint Technology Market Research shows that Qualcomm is one of the few to offer an **end-to-end semiconductor portfolio**. Qualcomm offer SoC, modem, RF Front End (RFFE), and antenna technology. This is also the month when Qualcomm announces Snapdragon 865 5G.

Jan
2020

Six operators América Móvil, KT Corp., Rogers, Telstra, Verizon, and Vodafone jointly launch **5G Future Forum (5GFF)**. Its focus is towards delivery and interoperability of **Multi-Access Edge Computing (MEC)** solutions. The Forum publishes the first technical specifications for MEC in August (available to members).

Feb
2020

A presentation from Qualcomm claims that 230+ 5G devices based on Qualcomm Snapdragon have been launched or in development.

Nov
2020

IBM announces *IBM Cloud for Telecommunications* that includes 35+ partners. This highlights the importance of ecosystem and collaboration to deliver a compelling 5G solution. Similar partnerships between other cloud providers (AWS, Google Cloud, Azure), operators and equipment vendors were shared by Netmanias in October.

5G Ecosystem


# Apache Kafka

## Summary

Any change of state can be considered an event. Event streaming is really a sequence of events collected, stored and processed in a timely manner, often in real time. Apache Kafka is an open-source distributed event streaming platform.

Apache Kafka offers the following three primary capabilities for organizations to implement event streaming:

* To produce and consume event streams to and from a variety of systems
* To store these events for the configured time and in a reliable manner
* To process the event streams as they happen or in a batch-oriented way

Apache Kafka offers these capabilities in a distributed, scalable, fault-tolerant, and secure way.

Kafka can be deployed on bare-metal hardware, virtual machines, or containers, both on-premise or on the cloud. Deployments can be self-managed or fully managed by third-party vendors.

## Discussion

### Why do we need Kafka?

In today's Internet applications, performing analytics based on user activity or device/sensor data has become a trend. The intent is to provide useful recommendations in real time. A few of such analytical applications are recommendations based on past user actions or advertisements to users based on their current proximity. The real-time use of these events collected from production applications and IoT systems has become a challenge because of the volume of data collected and processed. Apache Kafka works well for such use cases by unifying real-time and batch processing requirements.

Apache Kafka facilitates parallel processing in batch processing systems such as Hadoop. It also provides the ability to partition online consumption of data over a cluster of machines. Kafka has gained popularity because of its **exceptional performance**. This is because clients and servers communicate with a simple, high-performance, language agnostic TCP protocol.

Kafka is scalable, reliable, and robust. It's now trusted by 20,360 companies.

### What's the architecture of Apache Kafka?

A **producer** in Kafka architecture is a client application that produces events or messages to a Kafka topic. A **topic** is similar to a directory in an operating system's filesystem, and the messages are the files in that directory. Kafka topics are created on a Kafka **broker** that operates as a Kafka server. A Kafka **cluster** consists of one or more Kafka brokers running Kafka. It's the Kafka broker where the produced messages are stored.

A **consumer** subscribes to one or more interested Kafka topics to get the messages. A **consumer group** is a set of consumers who coordinate to consume data from the subscribed topics. A message within a topic is consumed by a single consumer within the group.

A topic can be **partitioned** to spread the messages over several buckets in the Kafka brokers. Every partition holds the messages in an ordered, immutable sequence. Brokers and consumers use *Zookeeper* to get the Kafka server's state information and track offsets of the messages consumed. An **offset** is a unique sequential number assigned to a message in the topic partition.

### How is Kafka used in the context of messaging?

In the context of messaging systems, Kafka acts as a message broker that enables services, applications, and systems to communicate with each other and exchange information, even if they're written in different languages or implemented on different platforms.

A design principle of Kafka is to **decouple producers and consumers** via the message brokers. Broker buffers unprocessed messages. Producers don't wait for consumers to read messages. This decoupling is a key aspect of Kafka's scalability.

Consider an e-commerce site. An order service validates an order and sends a message to the *Order Validated* topic. A payment service is a consumer of this topic. It processes the payment and sends a message to the *Payment Processed* topic. Others services who are consumers of this topic continue the workflow. Due to Kafka's decoupling, each service does its work without even being aware of other services.

Kafka has better throughput, built-in partitioning, replication, and fault-tolerance when compared to other message broker solutions in the market. This makes Apache Kafka an ideal solution for large-scale message processing applications.

### How is Kafka used in the context of storage?

Kafka is different from traditional messaging systems, where the messages get deleted once consumed by the consumers. Kafka can be configured to store the messages in the Kafka broker for a particular period. Theoretically, this retention period can be set to retain the data forever.

However, Kafka can't be used as a traditional database as its core library lacks support for random data lookup based on joins or `where` conditions. However, **ksqlDB**, a library in the Kafka ecosystem, gives the developer the ability to build event streaming applications by leveraging the familiarity with relational databases.

### Could you list a few companies that use Kafka and their respective use cases?

The following information is sourced from Apache's Confluence page:

    + **LinkedIn**: Kafka is applied for streaming user activity data and operational metrics. LinkedIn Newsfeed and LinkedIn Today are two products that use this.
    + **DataSift**: Kafka is used as a collector to monitor events and as a tracker of users’ consumption of data streams in real time.
    + **Simple**: Kafka is used for log aggregation and to power their analytics infrastructure.
    + **Foursquare**: Kafka powers online-to-online and online-to-offline messaging. It's used to integrate Foursquare's monitoring and production systems with Foursquare's Hadoop-based offline infrastructures.
    + **SocialTwist**: Kafka is used in SocialTwist as part of their reliable email queueing system.
    + **Hotels.com**: Hotels.com uses Kafka to collect real-time events from multiple sources and sends them to HDFS.
    + **Cisco**: At Cisco, Kafka is used as part of their OpenSOC (Open Security Operations Center) project.

### What are the ways to interact with Kafka?

A developer can interact with Kafka via command-line scripts or APIs.

Command-line scripts are used to:

    + Make ad hoc requests to a Kafka cluster such as starting up a Kafka service, creating topics in Kafka brokers, etc.
    + Perform list operations such as listing the topics or the consumer groups created in the cluster, etc.
    + Monitor consumer group lags or offsets of each partition in a Kafka topic
    + Produce messages to a topic and consume messages from a topicKafka offers the following core APIs with which developers can build their client applications:

    + The Producer API allows applications to send messages to topics in the Kafka cluster
    + The Consumer API allows applications to consume messages from topics in the Kafka cluster
    + The Streams API allows transforming messages from one topic to another
    + The Connect API allows implementing connectors to pull from some source system into Kafka or push from Kafka into some sink system
    + The Admin API allows managing and examining topics, brokers, and other Kafka entities

### What are some key components in Apache Kafka ecosystem?

The ecosystem around Apache Kafka is quite vast. There are plenty of libraries and frameworks to help developers integrate third-party software, log and monitor clusters, collect metrics, and distribute or package solutions. We mention key ones that help in creating enterprise-level solutions:

    + **Kafka Connect**: Streams or batch transfers data to and from Kafka, with ready-to-use connectors.
    + **Kafka Streams**: A client library for creating applications and microservices, where the input and output data are persisted in a Kafka cluster.
    + **Schema Registry**: Persists the schema structure of an event that is pushed to and consumed from a topic. Helps to validate the events against the registered schema.
    + **Kafka REST Proxy**: Offers a RESTful interface to a Kafka cluster. It facilitates another way with which the applications can interact with the Kafka cluster without using the Kafka client libraries or Kafka's native protocol.

### Could you describe some specific features of Kafka?

**Replication** in Kafka assures that the events will be published and consumed even in the case of broker failure by maintaining specified number of copies of data across various brokers in the Kafka cluster. The unit of replication is the partition. The replication factor configuration is set on a topic level. Kafka replication feature has been available since Kafka version 0.8.0.

**Retention** happens at Kafka brokers, which are configured with a default retention period per topic. The default is 7 days. It can be set using the topic-level config token `retention.ms`. The admin can also configure it by size (in bytes) using the topic-level config token `retention.bytes`. Once these limits are reached, the corresponding events are expired and deleted. However, the developers or Kafka admin can choose **Log Compaction** by setting the token `log.cleanup.policy = compact`. This tells Kafka to retain only the last message produced for each message key in a topic. This can be useful for changelog type of data, where we need to retain only the last update.

## Milestones

Jan
2011

Kafka is **open sourced by LinkedIn**.

Jul
2011

Kafka project enters **Apache Incubation** state. In October 2012, Kafka graduates from Apache Incubator.

Dec
2013

Apache Kafka v0.8.0 is released. In addition to bug fixes and other improvements, this adds a key feature called **intra-cluster replication support**. Also for the first time, the Kafka release JAR file gets published to a public Maven repository so that developers can conveniently download and use the software.

Nov
2014

Key engineers who built Kafka at LinkedIn announce the formation of a new company called *Confluent* with a focus on Apache Kafka.

Feb
2015

Apache Kafka v0.8.2.0 is released. This includes **in-built consumer offset management**. This release also includes other improvements and bug fixes.

Nov
2017

Apache Kafka v1.0.0 is released. The first full version number indicates that Kafka is **ready for enterprise adoption**.

Jul
2018

Apache Kafka v2.0.0 is released. Major improvements are in the areas of security, stability and reliability.

Dec
2019

Apache Kafka v2.4.0 is released. This includes an upgraded version of MirrorMaker, **MirrorMaker 2.0**. This is a new multi-cluster, cross-datacenter replication engine.

Aug
2020

Apache Kafka v2.6.0 is released. This improves the performance of brokers dealing with large number of partitions. New monitoring metrics provide better operational insights. This release also includes other improvements and bug fixes.

Jan
2022

Apache Kafka releases v3.1.0. Among the new features are support for Java 17, extending SASL/OAUTHBEARER with support for OIDC, addition of new broker count metrics, and support for the usage of custom partitioners in foreign-key joins. Eager rebalance protocol is deprecated.

Oct
2022

Apache Kafka releases v3.3.0. **KRaft mode** becomes production ready in this release. KRaft allows Kafka to self-manage metadata without relying on Apache ZooKeeper. KRaft mode was first previewed in Kafka v3.0. ZooKeeper is deprecated in Kafka v3.5 (April 2023). It will removed in v4.0 (2024).

Apache Kafka


# Dark Data

## Summary

Organizations typically collect, process and store lots of information in the normal course of their operations. A lot of this is done simply for compliance purposes. However, the same data could be useful to plan product roadmaps, aid business decisions or optimize operations. This is possible today due to modern techniques of machine learning and data analytics.

**Dark data** is simply data that's available to organizations but not being used. The term "dark" does not refer to something evil or illegal. Nor is it specifically about security or privacy. Rather, it's about data that's hidden from view, easy to ignore, and hard to access or analyse.

In physics, we know that dark matter comprises most of the universe. Similarly, dark data is lot bigger than data that organizations typically analyse to aid decision making.

## Discussion

### Could you explain dark data with some examples?

Consider a banking application for credit card approval. The focus is on customer information and eligibility. However, how the user arrived at the online form could be useful information. This data is available but is not used.

In medical domain, paper records are digitized. These are used by doctors. Since they're are stored as scanned images, information retrieval or analysis systems ignore them.

Another example is when a business acquires users or gathers feedback via different channels. Call centre logs are captured as audio files whereas website visits are captured as web server logs. This is another source of dark data when new insights are inaccessible just because data sources exist independently and can't be easily combined.

Consider an Accounts Payable department. Dark data could include overviews in the ERP system, previous transactions, account history, CRM information, and so on. This data is not just unused but also presents a risk due to its sensitive and confidential nature.

### What are the different types or sources of dark data?

Dark data is different in each industry. Some categories of dark data include customer information, ex-employee information, log files, survey data, financial statements, notes, presentations, emails, email attachments, inactive databases, old versions of documents, call-centre transcripts, customer reviews, etc.

Dark data has come about because organizations realize that data is valuable and storage is cheap. So they end up storing lots of it without using them properly. Data lakes and their associated technologies help store large volumes of multiformat data.

An important reason for dark data is big data. Big data's traits (volume, variety and velocity) make it difficult for organizations to process it. So they store it and defer the processing until later. From this perspective, the term "dusty data" has been used.

Where credibility of data is essential, data that can't be traced to its source won't be used for analysis.

### How does dark data differ from unstructured data?

Often dark data is unstructured because unstructured data is harder to analyse. Unstructured data "becomes dark" when organizations don't have the know-how to analyse them and obtain insights.

However, structured data can also be part of dark data. For example, two structured datasets might exist independently in their own silos. If they were to be combined, new insights could be obtained. Combining two datasets might not be trivial, particularly when they exist in different formats, stored in different systems or controlled by different teams.

In general, dark data can be structured or unstructured but they share some common characteristics. Data might be redundant, obsolete or trivial. This view expands the definition of what's dark data. It's not just valuable data that's not used but includes useless data that's simply taking up storage space.

### How can I make use of or analyse dark data?

Those who manage dark data should regularly do audits and attempt to structure the data. You may decide not to dump dark data but it should be encrypted and stored in a secure manner. For unstructured data, at least attach metadata labels that so they can be easier to find for future analysis. Classify or organize data in a single repository so that users can find them faster.

Before dark data can throw up insights, you have to ask the right questions, questions that are relevant to your business. The question could be about 'What' or 'Why'. Each type of question might need a different approach.

Tools to work with dark data include DeepDive, Snorkel, and Dark Vision. Docugami is a company that's looking at ways to enable computers to understand documents written by and for humans. They call the problem "document dysfunction".

Any effort to use dark data manually will be almost impossible. Automation is the key. Robotic Process Automation (RPA) can be enhanced with cognitive abilities to understand dark data.

## Milestones

Jul
2012

A researcher at Gartner mentions the term *Dark Data* in a blog post. This may well be the first mention of the term. He notes that dark data is stored "just in case it might come in handy" at a later point. To get any value out of dark data, it's important that business users ask the right questions. In subsequent literature, Gartner is credited with coining the term.

Mar
2013

Gartner Research publishes a report titled *Innovation Insight: File Analysis Innovation Delivers an Understanding of Unstructured Dark Data*. Two months later, Gartner publishes a separate article on *Dark Data* in its online glossary of information technology terms.

2015

IBM reports that 90% of IoT sensor data is not used. Moreover, 60% of this data loses its value within milliseconds. Technologies that allow us to process this data in almost real time is therefore critical. If not, we end up with dark data.

2016

A study by Veritas involving 22 countries shows that 52% of all data collected by organizations is dark. They say it's data "beneath the line of sight of senior management".

Jan
2017

Chan Zuckerberg Initiative (CZI) acquires **Meta**, which is a search engine focused on scientific literature. This is an effort to unlock the value in dark data.

May
2017

Apple acquires **Lattice Data** that specializes in dark data. Lattice Data commercialized DeepDive, a tool developed at Stanford University. DeepDive uses machine learning to convert dark data into structured data that can be combined within existing structured data sources. DeepDive extracts relationships and makes inferences. It's development can be traced back to 2014.

2018

Some folks extend the definition of dark data to include data that's hidden behind firewalls or not accessible by search engines. Thus, dark data includes data from the deep web as well.

Dark Data


# 5G Technology

## Summary

5G is next big evolution in cellular networks from its previous technologies of LTE, UMTS, and GSM. 5G is simply named as 5G, unlike 4G aka LTE, or 2G aka GSM. 5G offers very high throughput with ultra-low latency and more connected devices. With these new capabilities, 5G can support diverse applications including AR/VR, IoT, autonomous driving, 4K streaming, and more.

Millimeter Wave, Small Cells, Massive MIMO, Beamforming, and Full Duplex are the foundations of 5G. Major changes seen in 5G architecture is with network elements, signal processing, interfaces between network elements, and protocol stack. 5G also migrates from traditional telecom-style protocol interfaces to a *Service-Based Architecture (SBA)* that uses web services and APIs.

5G was first standardized in 3GPP Release 15 specifications (2018). First commercial 5G networks were launched in April 2019.

## Discussion

### What are the key features or capabilities of 5G?

A comparison of 5G with 4G is insightful into what 5G has to offer. 5G improves on 4G in terms of latency (1 ms vs 10-50 ms), throughput (20 vs 2 Gbps), spectral efficiency (100 vs 30 bps/Hz), density (1M vs 100K conns/km²), traffic capacity (1000 Mbps/m² vs 10 Mbps/m²), and network energy efficiency (15% savings).

Another source lists 5G capabilities as promising up to 10 Gbps in data rate; 1 millisecond latency; 1000x bandwidth per unit area; 100x device density compared to 4G; 99.999% availability; 100% coverage; 90% energy savings; and up to 10-year battery life for low-power IoT devices.

### How is 5G technology able to promise 1000x data throughput?

Capacity in cellular systems is the number of bits that can be carried per second per unit area within a given spectrum. It's dimensions are bits/s/km². In general, capacity is composed of three parts: **cell density**, **spectral efficiency** and **available spectrum**. 5G improves capacity by improving each of these parts. Back in 2011, Nokia proposed to achieve 1000x by improving each part by 10x. In 2012, SK Telecom proposed improvements in the order of 56x, 6x and 3x.

Cell density can be increased provided interference is managed. Spectral efficiency can be improved by using an array of antennas so that all users in a cell can be sending/receiving at the same time using narrowly focused beams. This is what *Massive MIMO* is all about. Finally, more spectrum can be obtained if we go to millimeter waves, usually in the range of 30-300 GHz. However, this requires new hardware and signal propagation is limited.

### What are the main techniques that make 5G possible?

We note the following technical foundations of 5G:

    + **Millimeter Wave**: This refers to spectrum bands above 24 GHz. The abundant spectrum available at these high frequencies is capable of delivering extreme data speeds and capacity that will reshape the mobile experience.
    + **Massive MIMO** : Uses large antenna arrays at base stations to simultaneously serve many autonomous terminals. The rich and unique propagation signatures of the terminals are exploited with smart processing at the array.
    + **Beamforming** : Beamforming is a type of RF management in which an access point uses multiple antennas to send out the same signal. It ensures efficient data-delivery route to a user and reduces interference to other users. Along with massive MIMO, beamforming improves spectrum efficiency and capacity.
    + **Full Duplex** : This allow us to transmit and receive on same channel. Benefits include more spectrum efficiency, symmetric fading characteristics, better filtering, novel relay solutions and enhanced interference coordination.
    + **Small Cell** : Small cells are low-power miniature base stations. They operate in licensed or unlicensed spectrum, based on cellular technologies or Wi-Fi. Small cells can help 5G achieve 1000x throughput.

### What are some use cases and applications of 5G?

ITU has identified three main categories of 5G applications based on performance attributes:

    + **Enhanced Mobile Broadband (eMBB)**: Enables large volumes of data transfer and extreme data rates. Applies to mobile phones, tablets and laptops. Covers human-centric use cases.
    + **Massive Machine Type Communications (mMTC)**: Also called *Critical Machine Type Communications (cMTC)*. In the context of IoT and machine communications, this serves massive number of devices of low complexity and bandwidth that send small amounts of data. Good coverage is important. Serves low-cost battery-powered sensors, meters, actuators, trackers, and wearables.
    + **Ultra-Reliable Low Latency Communications (URLLC)**: Like mMTC, this is also machine-centric but with a focus on reliability and latency. Applications include AR/VR, advanced wearables, autonomous vehicles, real-time industrial control, and more.We can also visualize the above applications mapped to a 3D vector space defined in terms of throughput, delay and density. For example, smart sensors would require high density, tolerable delay and only low throughput. Interactive HD TV would require good throughput, delay and density. Thus, there are many use cases that are a hybrid of the above categories.

### Could you give an overview of the 5G architecture?

**Next Generation Radio Access Network (NG-RAN)** consists of gNB and ng-eNB. *gNB* serves a 5G UE over 5G New Radio (NR), a new air interface developed for 5G. gNB connects to 5G Core, though some can connect to 4G EPC as well. *ng-eNB* connects to 5G Core but serves a 5G UE over 4G radio.

5G NR brings performance, flexibility, scalability and efficiency to spectrum usage. Spectrum includes low-band (600 MHz), mid-band (3-5 GHz), and high-band (24-86 GHz) regions.

**5G Core (5GC)** adopts a service-based architecture consisting of many interconnected *Network Functions (NFs)*. Rather than use fixed network elements, all of these can be virtualized in the cloud. Via *Network Slicing*, many virtual networks with different characteristics can reside on the same physical nodes. Automation, programmability, flexibility and interoperability come from this architecture.

5GC control plane includes AMF (Access and Mobility Management Function) and SMF (Session Management Function). 5G user plane includes UPF (User Plane Function). 5GC implements *Control and User Plane Separation (CUPS)*. This enables it to centralize control plane functions while distributing user planes functions closer to users for better performance.

### What are some common criticisms of 5G?

To obtain 1Gbps and 1ms performance, we need mmWave 5G. However, at this spectrum, range is limited. Users will get this performance in limited locations within urban areas. Coverage will be spotty. To counteract this, operators may need to install lots of small cells. 5G rollout will come at a high cost, some of which may be passed on to subscribers. New masts, antennas and smartphones will be needed. Batteries may need to be recharged more often. In rural areas, low-band 5G can give better coverage than 4G but can't offer peak 5G performance.

With increase data rates and integration with IoT devices, 5G poses a data security risk. With many more connected devices, greater use of cloud and virtualization the attack surface increases.

There have also been hoax theories concerning 5G. This has resulted in some groups distrusting 5G and even damaging 5G infrastructure. In 2020, 5G was linked to the coronavirus pandemic. The use of mmWave spectrum has been linked to cancer. However, it's known that only ionizing radiation at a much higher spectrum (Gamma rays and X-rays) is harmful.

## Milestones

Mar
2012

Huawei introduces the concept of "Beyond LTE". Meanwhile, at the initiative of the EU project METIS, a few organizations across the world start discussions on what should follow 4G/LTE networks. These discussions (2012-2014) lead to the first discussions within 3GPP in 2015.

May
2013

At 26GHz, **Samsung demos a prototype system** that achieves 1Gbps data rate. From 2013-2015, many more demos follow from Samsung, Ericsson, Nokia, Qualcomm, and others. The intent is to prove the feasibility of technologies that could be used in 5G, including the use of mmWave spectrum. In August 2015, FCC promotes five blocks of mmWave spectrum.

Mar
2017

3GPP begins the **standardization of 5G**. However, some requirements concerning Machine Type Communications (MTC) were already completed in earlier standardized features, namely LTE-M and NB-IoT. These were part of Release 13 (2016) and Release 14 (2017).

Dec
2017

3GPP approves the first specifications for 5G, called "early drop" of Release 15. Specifically, it ratifies **Non-Standalone (NSA) 5G New Radio (NR)** specification. This enables vendors to start implementing the first 5G products. NSA 5G will allow operators to leverage existing 4G infrastructure. However, it can't support some use cases that require ultra-low latency and higher capacity.

Jun
2018

Also part of Release 15, and called "main drop", 3GPP approves many specifications for 5G including the **Standalone (SA)** option. This allows operators without 4G networks to offer 5G service.

Mar
2019

3GPP approves "late drop" of Release 15. This might aid in migrating from 4G to 5G, or NSA 5G to SA 5G. However, some vendors and operators don't see this as essential since Release 16 or 17 specifications could offer alternatives.

Apr
2019

South Korean carriers SK Telecom and KT Corp become the first operators to launch the **world's first commercial 5G service**. Within an hour later, Verizon launches its own 5G service in the US in Chicago and Minneapolis. Though trials and limited deployments for enterprises happened in 2018, this is the first time 5G commercial networks connect to 5G smartphones. 5G smartphones used in these deployments are Samsung Galaxy S10 5G and Motorola's Moto Z3 with 5G Mod.

Jan
2020

Tests by OpenSignal shows Verizon delivering about 700Mbps download speeds in city downtown areas. In low-band 5G, AT&T and T-Mobile achieve speeds of about 60Mbps and 50Mbps respectively. This is better than what 4G can offer for rural areas. In another study from February to April, OpenSignal finds 5G giving better download speeds compared to 4G. This study included networks in the US, UK, South Korea and Australia.

Mar
2020

This year sees some **hoax theories** to discredit 5G. 5G is blamed for the coronavirus pandemic, either causing the pandemic, accelerating the spread of the virus or worsening the symptoms. In another incident, mass death of birds in Netherlands is blamed on 5G. Subsequent reports show that this is fake news. The birds died in another place and time due to other causes.

Jun
2020

There are now more than 35 countries with 5G service, with claims of faster rollout and adoption compared to 4G. Globally, there are now 114 commercial networks serving nearly **138 million 5G subscribers**. By August, **190 commercial 5G devices** are available in the market. In October, Apple announces **iPhone 12** models with support for 5G.

Jul
2020

3GPP finalizes **Release 16** specifications. This adds support for unlicensed spectrum. It improves on latency, power consumption, positioning and cellular-to-vehicle connectivity. Existing features enhanced by Release 16 include MIMO, beamforming, Dynamic Spectrum Sharing (DSS), Dual Connectivity (DC) and Carrier Aggregation (CA).

2022

3GPP **Release 17** specifications is expected to come out in 2022. It would impact all three use case families: eMBB, URLLC and mMTC. The focus will be on supporting growing traffic requirements, plus customizing NR for specific verticals such as automotive, logistics, public safety, media and manufacturing.

2023

First specifications of **5G Advanced** are expected to be released in 2023, with standardization work commencing in 2022. 5G Advanced will span releases 18, 19, 20 and 21.

5G Technology


# Web Font

## Summary

Web designers often wish to be creative with typography, which really means that they wish to use non-standard and even custom-designed fonts to convey their message in a particular way. Web font enables them to achieve this by allowing web pages to link to and download fonts on the web. Previously designers were limited by a few fonts installed on a user's computer. This is no longer the case with web fonts.

The format of font files (WOFF, WOFF2, and more) and how browsers behave while fonts are being download are some aspects that are standardized by W3C. In CSS3, these details are specified in the *CSS Fonts Module Level 4* document.

Since their introduction in 2009, web fonts have gained tremendous popularity. Hundreds, if not thousands, of fonts are available at the disposal of web designers.

## Discussion

### What's the need for web fonts?

Historically, web pages could be rendered only in **system fonts**, that is, fonts installed on the user's computer. This meant that even if a web designer chose to use a certain font there was no guarantee that the user would view the content in that font.

CSS `font-family` property accounted for this by providing fallback fonts. Consider the CSS rule `font-family: Helvetica, "Trebuchet MS", Verdana, sans-serif;`. The browser looks for Helvetica font. If not found, it looks for Trebuchet MS, and so on. Thus, text would be rendered but not necessarily in the designer's preferred font of Helvetica.

The web community attempted to address by creating a list of **web-safe fonts**. These are fonts that are likely to be available on most computers. Designers who used only these fonts could achieve consistent styling regardless of the device. Arial or Helvetica, Times New Roman or Times, Courier New or Courier are web safe. More web safe fonts include Verdana, Georgia, Palatino, Garamond, Bookman, and Avant Garde.

However, the list of web-safe fonts is still small. This is where web fonts become relevant.

### Which are some web services offering downloadable web fonts?

Many web font services are available, offering a mix of free and paid fonts: Google Fonts, The League of Movable Type, Font Fabric, Lost Type Co-op, Font Squirrel, Font Spring, MyFonts, dafont, Typekit, Fontdeck, Webtype, Open Font Library, FontSpace, Befonts, Fonts for Web, Adobe Fonts, Fonts.com, and Brick.

Since its launch in 2010, Google Fonts has been popular. Google offers a directory for browsing and downloading fonts. There's also an API that developers can call from CSS stylesheets. This enables browsers to download the specified font when required by a web page.

Typekit was launched in 2009, acquired by Adobe in 2011, and now part of Adobe Fonts. Typotheque, also started in 2009, is an alternative. For commercial fonts, Typotheque issues a license key that's linked with the domains that are meant to use them. This license key is part of the URL when downloading the font.

Icons can also be delivered as web fonts. Font Awesome is a well-known source for icon fonts.

### Which are some popular web fonts?

While many sites and blogs recommend dozens of web fonts, this list is based on actual downloads as on August 15, 2020.

An analytics dashboard on Google Fonts shows that top ten downloads (7 days) are for Roboto, Open Sans, Lato, Oswald, Montserrat, Roboto Condensed, Slabo 27px, Source Sans Pro, Raleway, and PT Sans.

On Font Squirrel, the most downloaded fonts are Open Sans, Montserrat, Roboto, Raleway, Great Vibes, Bebas Neue, Alex Brush, Quicksand, Lato and Pacifico.

Fonts.com lists the following all time bestselling web fonts: Neue Helvetica, Proxima Nova, Avenir, Avenir Next, Futura PT, Futura, Helvetica, Univers, Museo Sans and Sofia Pro.

Bestselling fonts (30 days) at MyFonts.com are Neue Helvetica, Gilroy, Proxima Nova, Avenir Next, FF DIN, Helvetica, Avenir, Helvetica Now, Milliard, and ITC Avant Garde Gothic.

### How can I include a web font for my web page?

Here's an example of using Google Fonts but the approach is similar for other web font services. You can even download the font file and serve it from your own server.

One method is to link to a CSS file from HTML using the `<link>` tag. This CSS file would contain details of the font including the URL of the actual font files, typically in WOFF or WOFF2 file formats. For example, HTML page points to CSS file `https://fonts.googleapis.com/css?family=Tangerine`, which contains the URL `https://fonts.gstatic.com/s/tangerine/v11/IurY6Y5j_oScZZow4VOxCZZM.woff2`.

An alternative is to download the web font from within another CSS file or within a `<style>` tag using `@import https://fonts.googleapis.com/css?family=Tangerine;`.

Text can be styled in CSS to use the web font, such as, `body { font-family: 'Tangerine', serif; }`. This can in HTML within a `<style>` tag or part of a separate CSS file.

### How do I use the CSS property "font-display" for web fonts?

Within the `@font-face` CSS rule, `font-display` property is applicable. It takes these values:

    + `auto`: Default. Allows browser to apply its own default. Often similar to `block`.
    + `block`: Text is hidden until the font is loaded. This results in Flash of Invisible Text (FOIT).
    + `swap`: Tells browser to use a fallback until font is loaded. This results in Flash of Unstyled Text (FOUT).
    + `fallback`: A compromise between `auto` and `swap`. Browser will hide text for a while and use fallback if the download is taking longer. If download takes too long, browser will stay with fallback.
    + `optional`: Like `fallback` but browser may ignore the font on slow connections.Among web designers, neither FOIT nor FOUT is satisfactory. FOIT is closer to the original design but users have to wait longer to read the content. With FOUT, users can read the content earlier but with a different user experience. In any case, with `font-display` designers get to choose.

A related behaviour is Flash of Faux Text (FOFT) in which `font-synthesis` is used to render bold/italic variations while the true bold/italics are loaded.

### For better performance, what's the best strategy for downloading web fonts?

It's possible to remove web fonts from the critical path. This could be done by lazy loading them until after the complete document is loaded. However, this only delays the FOIT that happens anyway when download is in progress. Hence lazy loading is not recommended.

Instead, it may be better to load web fonts in advance via preloading, as in `<link rel="preload" href="https://fonts.gstatic.com/s/tangerine/v11/IurY6Y5j_oScZZow4VOxCZZM.woff2" as="font" type="font/woff2" crossorigin="anonymous">`. By the time the font is seen in CSS, it's already loaded.

However, preloading should be done with care. Don't preload all web fonts since browser might prioritize font downloads over other downloads. If font resources are coming from external CDN, you might end up downloading old font files when newer ones are used in CSS. Always set `crossorigin="anonymous"` to the `<link>` tag.

If the user's system already has the font, there's no need to download it from the web. This can be specified in `@font-face` by putting `local('fontname')` before the font URL for the `src` property. It's also best to put `@font-face` rules before any `<script>` tags.

### Are there any best practices when working with web fonts?

Set HTTP headers correctly so that the font is cached at the browser. Avoid using localStorage or IndexDB since have their own performance issues.

Since web fonts take up bandwidth, a good design should probably stick to just two fonts, one for heading and one for the body. Even within each font, **subset** the characters and load only those characters needed for the design. Some sites such as IcoMoon allow designers to create custom font files by picking only what you need from other fonts.

## Milestones

1996

Microsoft starts *Core Fonts for the Web* project. This creates a pack of TrueType fonts consisting of Andalé Mono, Arial, Arial Black, Comic Sans MS, Courier New, Georgia, Impact, Times New Roman, Trebuchet MS, Verdana and Webdings. In subsequent years, these fonts are distributed by default on Windows and Macintosh. Web designers can now use these fonts and have some assurance that they would be available on user systems. However, later operating systems (Android, Ubuntu, iOS) and even some versions of Mac OS don't include all the fonts.

1998

CSS2 is released. It includes `@font-face` that enables developers to link to a font file on the web that browsers can download. Thus, web designers are no longer limited to a few fonts installed on computers or supported by browsers. But there's no consensus on the font format. Netscape uses a close-source format called TrueDoc. Microsoft uses Embedded OpenType (EOT) that also supports encryption. Ultimately, licensing issues come in the way of widespread adoption of web-based fonts.

2005

Based on JavaScript and Adobe Flash, **sIFR (Scalable Inman Flash Replacement)** is released. Designers could now replace text elements with Flash-based dynamic fonts. For example, headings and menus could be styled differently. Unlike replacing text with an image (some users might disable images), the text remains visible. If Flash is not installed on the browser, the browser falls back to a system font.

2008

Beta version of Safari 4 supports TrueType fonts with `@font-face`. Beta version of Firefox 3.1 supports both TrueType and OpenType. While this enables better typography on the web, there's continuing concern about font piracy.

May
2009

Small Batch, a company in San Francisco, announces the **Typekit** project. It proposes a font delivery mechanism in which the font is delivered in subsets across multiple files that can only be reassembled by Typekit's JavaScript code. This brings protection against font piracy. In November, Typekit is launched as a subscription-based service for designers and developers. Meanwhile, in October 2009, **Typotheque** launches a similar service and releases an API in November.

Jul
2010

W3C releases the first draft of the **WOFF file format**, which is a more optimized way to deliver fonts to browsers. It basically compresses other font formats. Traditional font formats such as TrueType, OpenType and Open Font Format can be compressed to WOFF. It's not an installable font format. Rather, it can be used with `@font-face` CSS declaration. The WOFF format itself was developed in 2009. This draft becomes a W3C Recommendation in December 2012.

Nov
2010

Google reports that it's **Google Font API** currently serves 17 million requests per day, and growing at 30% every month. Likewise, Typekit is seeing 400 million font views per month. Typekit notes equal interest for commercial as well as free and open source fonts. However, there's more work to be done for browser/device support for complex scripts such as Arabic.

2011

By this year, almost every major browser starts supporting WOFF, bringing true **cross-browser compatibility**. This is good news for font creators and web designers, who start using web fonts in their web designs.

May
2014

W3C releases the first working draft of **WOFF 2.0**. It offers 10-40% better compression than WOFF 1.0. It becomes a W3C Recommendation in March 2018.

Feb
2015

To address the problem of Flash of Invisible Text (FOIT), Jehl explores a method of embedding fonts directly within `@font-face` as **data URIs**. This indeed mitigates the problem but FOIT persists during a short interval when a slow device is processing the data URI. With the new **font events API**, Jehl shows how FOIT can be completely eliminated.

Jul
2017

W3C releases the first public working draft of *CSS Fonts Module Level 4*. This mentions `font-display` property of `@font-face`. This aims to give back control to web designers and developers. Previously browsers would determine how best to render text when fonts are downloading.

Jul
2020

W3C celebrates the 10th anniversary of the publication of the first draft of WOFF. WOFF, and web fonts in general, have transformed the way brands communicate with their customers. They've literally changed the *face* of the web. However, it's also noted that in some countries such as China they haven't been that popular.

Aug
2020

Reports at HTTP Archive show that on desktops the median download size of all font requests for a web page is about 128KB. Median number of font requests is 5. Similar numbers for mobile are 108KB and 4 requests. These numbers are for file extensions eot, ttf, woff, woff2, or otf, or MIME type containing `font`. On mobiles, 24.2% of pages avoid FOIT by using `font-display` property.

Web Font