-%\begin{center}
-%\noindent%
-The number of computers around us is growing exponentially.
-With it, the systems in which they operate are becoming increasingly complex.
-Many of these computers are so called \emph{edge devices}, operating in \glsxtrfull{IOT} systems.
-Within these orchestras of computers, they perform the role of interacting with the outside world using sensors and actuators.
-These specialised computers designed for embedded applications are often powered by microcontrollers and therefore have little memory, unhurried processors, no \glsxtrshort{OS} and slow communication.
-On the other hand, they are cheap, tiny, and energy efficient.
-Programming \glsxtrshort{IOT} systems is complex because they are dynamic, interactive, distributed, collaborative, multi-user, multi-tiered, and multitasking.
-This is impeded even more due to the computers in each tier having vastly different hardware and software characteristics; using different programming languages; and operating in different abstraction levels, causing semantic friction.
+\glsresetall%
+The development of reliable software for the \gls{IOT} is difficult because \gls{IOT} systems are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking in nature.
+The complexity is increased further by semantic friction that arises through different hardware and software characteristics between tiers.
+Many computers that operate in \gls{IOT} systems are \emph{edge devices} that interact with the environment using sensors and actuators.
+Edge devices are often powered by low-cost microcontrollers designed for embedded applications.
+They have little memory, unhurried processors, and are slow in communication but are also small and energy efficient.