Markov chain

Markov chain

In probability theory and statistics, a Markov chain or Markov process is a stochastic process describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event. Informally, this may be thought of as, "What happens next depends only on the state of affairs now." A countably infinite sequence, in which the chain moves state at discrete time steps, gives a discrete-time Markov chain (DTMC). A continuous-time process is called a continuous-time Markov chain (CTMC). Markov processes are named in honor of the Russian mathematician Andrey Markov. Markov chains have many applications as statistical models of real-world processes. They provide the basis for general stochastic simulation methods known as Markov chain Monte Carlo, which are used for simulating sampling from complex probability distributions, and have found application in areas including Bayesian statistics, biology, chemistry, economics, finance, information theory, physics, signal processing, and speech processing. The adjectives Markovian and Markov are used to describe something that is related to a Markov process. == Principles == === Definition === A Markov process is a stochastic process that satisfies the Markov property (sometimes characterized as "memorylessness"). In simpler terms, it is a process for which predictions can be made regarding future outcomes based solely on its present state and—most importantly—such predictions are just as good as the ones that could be made knowing the process's full history. In other words, conditional on the present state of the system, its future and past states are independent. A Markov chain is a type of Markov process that has either a discrete state space or a discrete index set (often representing time), but the precise definition of a Markov chain varies. For example, it is common to define a Markov chain as a Markov process in either discrete or continuous time with a countable state space (thus regardless of the nature of time), but it is also common to define a Markov chain as having discrete time in either countable or continuous state space (thus regardless of the state space). === Types of Markov chains === The system's state space and time parameter index need to be specified. The following table gives an overview of the different instances of Markov processes for different levels of state space generality for both discrete and continuous time: Note that there is no definitive agreement in the literature on the use of some of the terms that signify special cases of Markov processes. Usually the term "Markov chain" is reserved for a process with a discrete set of times, that is, a discrete-time Markov chain (DTMC), but a few authors use the term "Markov process" to refer to a continuous-time Markov chain (CTMC) without explicit mention. In addition, there are other extensions of Markov processes that are referred to as such but do not necessarily fall within any of these four categories (see Markov model). Moreover, the time index need not necessarily be real-valued; like with the state space, there are conceivable processes that move through index sets with other mathematical constructs. Notice that the general state space continuous-time Markov chain is general to such a degree that it has no designated term. While the time parameter is usually discrete, the state space of a Markov chain does not have any generally agreed-on restrictions: the term may refer to a process on an arbitrary state space. However, many applications of Markov chains employ finite or countably infinite state spaces, which have a more straightforward statistical analysis. Besides time-index and state-space parameters, there are many other variations, extensions and generalizations (see Variations). For simplicity, most of this article concentrates on the discrete-time, discrete state-space case, unless mentioned otherwise. === Transitions === The changes of state of the system are called transitions. The probabilities associated with various state changes are called transition probabilities. The process is characterized by a state space, a transition matrix describing the probabilities of particular transitions, and an initial state (or initial distribution) across the state space. By convention, we assume all possible states and transitions have been included in the definition of the process, so there is always a next state, and the process does not terminate. A discrete-time random process involves a system which is in a certain state at each step, with the state changing randomly between steps. The steps are often thought of as moments in time, but they can equally well refer to physical distance or any other discrete measurement. Formally, the steps are the integers or natural numbers, and the random process is a mapping of these to states. The Markov property states that the conditional probability distribution for the system at the next step (and in fact at all future steps) depends only on the current state of the system, and not additionally on the state of the system at previous steps. Since the system changes randomly, it is generally impossible to predict with certainty the state of a Markov chain at a given point in the future. However, the statistical properties of the system's future can be predicted. In many applications, it is these statistical properties that are important. == History == Andrey Markov studied Markov processes in the early 20th century, publishing his first paper on the topic in 1906. Markov processes in continuous time were discovered long before his work in the early 20th century in the form of the Poisson process. Markov was interested in studying an extension of independent random sequences, motivated by a disagreement with Pavel Nekrasov who claimed independence was necessary for the weak law of large numbers to hold. In his first paper on Markov chains, published in 1906, Markov showed that under certain conditions the average outcomes of the Markov chain would converge to a fixed vector of values, so proving a weak law of large numbers without the independence assumption, which had been commonly regarded as a requirement for such mathematical laws to hold. Markov later used Markov chains to study the distribution of vowels in Eugene Onegin, written by Alexander Pushkin, and proved a central limit theorem for such chains. In 1912 Henri Poincaré studied Markov chains on finite groups with an aim to study card shuffling. Other early uses of Markov chains include a diffusion model, introduced by Paul and Tatyana Ehrenfest in 1907, and a branching process, introduced by Francis Galton and Henry William Watson in 1873, preceding the work of Markov. After the work of Galton and Watson, it was later revealed that their branching process had been independently discovered and studied around three decades earlier by Irénée-Jules Bienaymé. Starting in 1928, Maurice Fréchet became interested in Markov chains, eventually resulting in him publishing in 1938 a detailed study on Markov chains. Andrey Kolmogorov developed in a 1931 paper a large part of the early theory of continuous-time Markov processes. Kolmogorov was partly inspired by Louis Bachelier's 1900 work on fluctuations in the stock market as well as Norbert Wiener's work on Einstein's model of Brownian movement. He introduced and studied a particular set of Markov processes known as diffusion processes, where he derived a set of differential equations describing the processes. Independent of Kolmogorov's work, Sydney Chapman derived in a 1928 paper an equation, now called the Chapman–Kolmogorov equation, in a less mathematically rigorous way than Kolmogorov, while studying Brownian movement. The differential equations are now called the Kolmogorov equations or the Kolmogorov–Chapman equations. Other mathematicians who contributed significantly to the foundations of Markov processes include William Feller, starting in 1930s, and then later Eugene Dynkin, starting in the 1950s. == Examples == Mark V. Shaney is a third-order Markov chain program, and a Markov text generator. It ingests the sample text (the Tao Te Ching, or the posts of a Usenet group) and creates a massive list of every sequence of three successive words (triplet) which occurs in the text. It then chooses two words at random, and looks for a word which follows those two in one of the triplets in its massive list. If there is more than one, it picks at random (identical triplets count separately, so a sequence which occurs twice is twice as likely to be picked as one which only occurs once). It then adds that word to the generated text. Then, in the same way, it picks a triplet that starts with the second and third words in the generated text, and that gives a fourth word. It adds the fourth word, then repeats with the third and fourth words, and so on. Random walks based on integers and the gambler's ruin problem are ex

Machine learning in video games

Artificial intelligence and machine learning techniques are used in video games for a wide variety of applications such as non-player character (NPC) control, procedural content generation (PCG) and deep learning-based content generation. Machine learning is a subset of artificial intelligence that uses historical data to build predictive and analytical models. This is in sharp contrast to traditional methods of artificial intelligence such as search trees and expert systems. Information on machine learning techniques in the field of games is mostly known to public through research projects as most gaming companies choose not to publish specific information about their intellectual property. The most publicly known application of machine learning in games is likely the use of deep learning agents that compete with professional human players in complex strategy games. There has been a significant application of machine learning on games such as Atari/ALE, Doom, Minecraft, StarCraft, and car racing. Other games that did not originally exists as video games, such as chess and Go have also been affected by the machine learning. == Overview of relevant machine learning techniques == === Deep learning === Deep learning is a subset of machine learning which focuses heavily on the use of artificial neural networks (ANN) that learn to solve complex tasks. Deep learning uses multiple layers of ANN and other techniques to progressively extract information from an input. Due to this complex layered approach, deep learning models often require powerful machines to train and run on. ==== Convolutional neural networks ==== Convolutional neural networks (CNN) are specialized ANNs that are often used to analyze image data. These types of networks are able to learn translation invariant patterns, which are patterns that are not dependent on location. CNNs are able to learn these patterns in a hierarchy, meaning that earlier convolutional layers will learn smaller local patterns while later layers will learn larger patterns based on the previous patterns. A CNN's ability to learn visual data has made it a commonly used tool for deep learning in games. === Recurrent neural network === Recurrent neural networks are a type of ANN that are designed to process sequences of data in order, one part at a time rather than all at once. An RNN runs over each part of a sequence, using the current part of the sequence along with memory of previous parts of the current sequence to produce an output. These types of ANN are highly effective at tasks such as speech recognition and other problems that depend heavily on temporal order. There are several types of RNNs with different internal configurations; the basic implementation suffers from a lack of long term memory due to the vanishing gradient problem, thus it is rarely used over newer implementations. ==== Long short-term memory ==== A long short-term memory (LSTM) network is a specific implementation of a RNN that is designed to deal with the vanishing gradient problem seen in simple RNNs, which would lead to them gradually "forgetting" about previous parts of an inputted sequence when calculating the output of a current part. LSTMs solve this problem with the addition of an elaborate system that uses an additional input/output to keep track of long term data. LSTMs have achieved very strong results across various fields, and were used by several monumental deep learning agents in games. === Reinforcement learning === Reinforcement learning is the process of training an agent using rewards and/or punishments. The way an agent is rewarded or punished depends heavily on the problem; such as giving an agent a positive reward for winning a game or a negative one for losing. Reinforcement learning is used heavily in the field of machine learning and can be seen in methods such as Q-learning, policy search, Deep Q-networks and others. It has seen strong performance in both the field of games and robotics. === Neuroevolution === Neuroevolution involves the use of both neural networks and evolutionary algorithms. Instead of using gradient descent like most neural networks, neuroevolution models make use of evolutionary algorithms to update neurons in the network. Researchers claim that this process is less likely to get stuck in a local minimum and is potentially faster than state of the art deep learning techniques. == Deep learning agents == Machine learning agents have been used to take the place of a human player rather than function as NPCs, which are deliberately added into video games as part of designed gameplay. Deep learning agents have achieved impressive results when used in competition with both humans and other artificial intelligence agents. === Chess === Chess is a turn-based strategy game that is considered a difficult AI problem due to the computational complexity of its board space. Similar strategy games are often solved with some form of a Minimax Tree Search. These types of AI agents have been known to beat professional human players, such as the historic 1997 Deep Blue versus Garry Kasparov match. Since then, machine learning agents have shown ever greater success than previous AI agents. === Go === Go is another turn-based strategy game which is considered an even more difficult AI problem than chess. The state space of is Go is around 10^170 possible board states compared to the 10^120 board states for Chess. Prior to recent deep learning models, AI Go agents were only able to play at the level of a human amateur. ==== AlphaGo ==== Google's 2015 AlphaGo was the first AI agent to beat a professional Go player. AlphaGo used a deep learning model to train the weights of a Monte Carlo tree search (MCTS). The deep learning model consisted of 2 ANN, a policy network to predict the probabilities of potential moves by opponents, and a value network to predict the win chance of a given state. The deep learning model allows the agent to explore potential game states more efficiently than a vanilla MCTS. The network were initially trained on games of humans players and then were further trained by games against itself. ==== AlphaGo Zero ==== AlphaGo Zero, another implementation of AlphaGo, was able to train entirely by playing against itself. It was able to quickly train up to the capabilities of the previous agent. === StarCraft series === StarCraft and its sequel StarCraft II are real-time strategy (RTS) video games that have become popular environments for AI research. Blizzard and DeepMind have worked together to release a public StarCraft 2 environment for AI research to be done on. Various deep learning methods have been tested on both games, though most agents usually have trouble outperforming the default AI with cheats enabled or skilled players of the game. ==== Alphastar ==== Alphastar was the first AI agent to beat professional StarCraft 2 players without any in-game advantages. The deep learning network of the agent initially received input from a simplified zoomed out version of the gamestate, but was later updated to play using a camera like other human players. The developers have not publicly released the code or architecture of their model, but have listed several state of the art machine learning techniques such as relational deep reinforcement learning, long short-term memory, auto-regressive policy heads, pointer networks, and centralized value baseline. Alphastar was initially trained with supervised learning, it watched replays of many human games in order to learn basic strategies. It then trained against different versions of itself and was improved through reinforcement learning. The final version was hugely successful, but only trained to play on a specific map in a protoss mirror matchup. === Dota 2 === Dota 2 is a multiplayer online battle arena (MOBA) game. Like other complex games, traditional AI agents have not been able to compete on the same level as professional human player. The only widely published information on AI agents attempted on Dota 2 is OpenAI's deep learning Five agent. ==== OpenAI Five ==== OpenAI Five utilized separate long short-term memory networks to learn each hero. It trained using a reinforcement learning technique known as Proximal Policy Learning running on a system containing 256 GPUs and 128,000 CPU cores. Five trained for months, accumulating 180 years of game experience each day, before facing off with professional players. It was eventually able to beat the 2018 Dota 2 esports champion team in a 2019 series of games. === Planetary Annihilation === Planetary Annihilation is a real-time strategy game which focuses on massive scale war. The developers use ANNs in their default AI agent. === Supreme Commander 2 === Supreme Commander 2 is a real-time strategy (RTS) video game. The game uses Multilayer Perceptrons (MLPs) to control a platoon’s reaction to encountered enemy units. Total of four MLPs are used, one for each platoon type: land, naval

Contact cleaner

Contact cleaner, also known as switch-cleaner, is any of various chemicals, or mixtures of chemicals, intended to remove or prevent the build-up of oxides or other unwanted substances on the conductive surfaces of connectors, switches, and other electronic components with moving surface-contacts, and thus reduce the contact resistance encountered. The use of contact cleaner can help to minimize the wetting current across a pair of contacts. An example of a simple contact cleaner is isopropyl alcohol Some contact cleaners are designed to evaporate completely and rapidly, leaving no residue. Others may contain lubricants. Lubricants themselves should not necessarily be used as contact cleaners, especially if they are designed to leave an unsuitable residue. However, appropriate lubricants may work well as contact cleaners.

Frictionless sharing

Frictionless sharing refers to the transparent or automatic dissemination of user activity across social media platforms, typically without requiring explicit action from the user each time content is shared. The concept gained prominence in 2011 after Mark Zuckerberg announced a series of new features for Facebook at the F8 developers conference, framing the changes as enabling “real-time serendipity in a friction-less experience.” == History and concept == Before 2011, the term “frictionless sharing” was occasionally used in academic and technical contexts to describe sharing of resources with minimal effort, such as through social bookmarking or Creative Commons licensing to reduce barriers to reuse of research data. The concept took on a broader cultural meaning when Facebook introduced its Timeline interface and new “social apps” in 2011. These features enabled third-party applications to automatically publish user activity to the platform—effectively shifting sharing from a deliberate act to a passive process. For example, integrating music streaming service Spotify meant that any song a user listened to could automatically appear in a Facebook “Ticker,” allowing friends to see the activity and click through to play the song themselves. == Zuckerberg’s vision == Zuckerberg articulated a vision of a Web in which sharing occurs by default rather than by choice: “You read, you watch, you listen, you buy—and everyone you know will hear all about it on Facebook.” This “frictionless” model assumes ongoing consent after an initial opt-in. Once users connect an app to their profile, any future activity with that app may be automatically shared. This shift from intentional posting to ambient sharing represented a significant evolution in how personal data is distributed online. == Criticism and debate == Many commentators and users have raised concerns about frictionless sharing. While some criticism centers on online privacy, others focus on how automatic updates can flood news feeds and erode the social value of sharing. Critics argue that when sharing becomes automatic, it dilutes the personal curation that makes social media exchanges meaningful. According to Slate, this approach risks “killing taste,” because users typically choose to share only select content they find worth highlighting, rather than everything they consume. AL.com similarly observed that the frictionless model encourages over-sharing, overwhelming both users and their networks with minor or trivial activities. For example, integrating multiple platforms—such as Twitter, Foursquare, Pinterest, Spotify, and others—can create an incessant stream of updates that some users may find intrusive or irritating. This can lead to what critics describe as “narcissistic” or noisy timelines, potentially undermining the “social” nature of social media. == Business model and data implications == For Facebook, frictionless sharing offers clear business advantages. More frequent and detailed sharing provides valuable data that can be used to refine targeted advertising and personalize content delivery. The model also encourages users to spend more time on the platform, reinforcing its position as a central hub of online social activity. Other technology companies have experimented with similar approaches. Google has introduced forms of cross-platform integration that facilitate automatic activity sharing, though with a more explicit opt-in structure compared to Facebook. This approach has been described as “friction with consent,” allowing users to manually enable or disable integrations on a per-service basis.

Digital Cinema Initiatives

Digital Cinema Initiatives, LLC (DCI) is a consortium of major motion picture studios, formed to establish specifications for a common systems architecture for digital cinema systems. The organization was formed in March 2002 by Metro-Goldwyn-Mayer, Paramount Pictures, Sony Pictures, 20th Century Studios, Universal Studios, Walt Disney Studios and Warner Bros. Entertainment The primary purpose of DCI is to establish and document specifications for an open architecture for digital cinema that ensures a uniform and high level of technical performance, reliability and quality. By establishing a common set of content requirements, distributors, studios, exhibitors, d-cinema manufacturers and vendors can be assured of interoperability and compatibility. Because of the relationship of DCI to many of Hollywood's key studios, conformance to DCI's specifications is considered a requirement by software developers or equipment manufacturers targeting the digital cinema market. == Specification == On July 20, 2005, DCI released Version 1.0 of its "Digital Cinema System Specification", commonly referred to as the "DCI Specification". The document describes overall system requirements and specifications for digital cinema. Between March 28, 2006, and March 21, 2007, DCI issued 148 errata to Version 1.0. DCI released Version 1.1 of the DCI Specification on April 12, 2007, incorporating the previous 148 errata into the DCI Specification. On April 15, 2007, at the annual NAB Digital Cinema Summit, DCI announced the new version, as well as some future plans. They released the "Stereoscopic Digital Cinema Addendum" to begin to establish 3-D technical specifications in response to the popularity of 3-D stereoscopic films. It was also announced "which studios would take over the leadership roles in DCI after the current leadership term expires at the end of September." Subsequently, between August 27, 2007, and February 1, 2008, DCI issued 100 errata to Version 1.1. So, DCI released Version 1.2 of the DCI Specification on March 7, 2008, again incorporating the previous 100 errata into the specification document. An additional 96 errata were issued by August 30, 2012, so a revised Version 1.2 incorporating those additional errata was approved on October 10, 2012. DCI approved DCI Specification Version 1.3 on June 27, 2018, integrating the 45 errata issued to the previous version into a new document. On July 20, 2020, fifteen years to the day after Version 1.0, DCI issued a new DCI Specification Version 1.4 that assimilated 29 errata issued since Version 1.3. On October 13, 2021, DCI approved a new DCI Specification Version 1.4.1 that integrated the 23 errata that had been issued to DCI Specification Version 1.4. For the convenience of users, DCI also created an online HTML version of DCI Specification, Version 1.4.1. Due to the HTML conversion process, the footnotes in the DCSS now appear as endnotes. The PDF version contains pagination and page numbers whereas the HTML version does not. DCI Specification Version 1.4.2, dated June 15, 2022, includes revisions and refinements respecting Object-Based Audio Essence (OBAE), also known as Immersive Audio Bitstream (IAB). Version 1.4.2 also implements post-show log record collection utilizing SMPTE 430-17 SMS-OMB Communications Protocol Specification. Additionally, Version 1.4.2 incorporated two prior addenda: the Digital Cinema Object-Based Audio Addendum, dated October 1, 2018 and the Stereoscopic Digital Cinema Addendum, Version 1.0, dated July 11, 2007. Users using Version 1.4.2 no longer need to refer to the separate addenda. Previous DCSS versions are archived on the DCI web site. Based on many SMPTE and ISO standards, such as JPEG 2000-compressed image and "broadcast wave" PCM/WAV sound, the DCI Specification explains the route to create an entire Digital Cinema Package (DCP) from a raw collection of files known as the Digital Cinema Distribution Master (DCDM), as well as the specifics of its content protection, encryption, and forensic marking. The DCI Specification also establishes standards for the decoder requirements and the presentation environment itself, such as ambient light levels, pixel aspect and shape, image luminance, white point chromaticity, and those tolerances to be kept. Even though it specifies what kind of information is required, the DCI Specification does not include specific information about how data within a distribution package is to be formatted. Formatting of this information is defined by the Society of Motion Picture and Television Engineers (SMPTE) digital cinema standards and related documents. == Image and audio capability overview == === 2D image === 2048×1080 (2K) at 24 frame/s or 48 frame/s, or 4096×2160 (4K) at 24 frame/s In 2K, for Scope (2.39:1) presentation 2048×858 pixels of the imager is used In 2K, for Flat (1.85:1) presentation 1998×1080 pixels of the imager is used In 4K, for Scope (2.39:1) presentation 4096×1716 pixels of the imager is used In 4K, for Flat (1.85:1) presentation 3996×2160 pixels of the imager is used 12 bits per color component (36 bits per pixel) via dual HD-SDI (encrypted) 10 bits only permitted for 2K at 48 frame/s CIE XYZ color space, gamma-corrected TIFF 6.0 container format (one file per frame) JPEG 2000 compression From 0 to 5 or from 1 to 6 wavelet decomposition levels for 2K or 4K resolutions, respectively Compression rate of 4.71 bits/pixel (2K @ 24 frame/s), 2.35 bits/pixel (2K @ 48 frame/s), 1.17 bits/pixel (4K @ 24 frame/s) 250 Mbit/s maximum image bit rate === Stereoscopic 3D image === 2048×1080 (2K) at 48 frame/s - 24 frame/s per eye (4096×2160 4K not supported) In 2K, for Scope (2.39:1) presentation 2048×858 pixels of the imager is used In 2K, for Flat (1.85:1) presentation 1998×1080 pixels of the imager is used Optionally, in the HD-SDI link only: 12 bit color, YCxCz 4:2:2 (i.e. chroma subsampling in XYZ space), each eye in separate stream === Audio === 24 bits per sample, 48 kHz or 96 kHz Up to 16 channels WAV container, uncompressed PCM DCI has additionally published a document outlining recommended practice for High Frame Rate digital cinema. This document discloses the following proposed frame rates: 60, 96, and 120 frames per second for 2D at 2K resolution; 48 and 60 for stereoscopic 3D at 2K resolution; 48 and 60 for 2D at 4K resolution. The maximum compressed bit rate for support of all proposed frame rates should be 500 Mbit/s. == Related information == The idea for DCI was originally mooted in late 1999 by Tom McGrath, then COO of Paramount Pictures, who applied to the U.S. Department of Justice for anti-trust waivers to allow the joint cooperation of all seven major motion picture studios. Universal Pictures made one of the first feature-length DCPs created to DCI specifications, using their film Serenity. Although it was not distributed theatrically, it had one public screening on November 7, 2005, at the USC Entertainment Technology Center's Digital Cinema Laboratory in the Pacific Theatre, Hollywood. Inside Man (2006) was Universal's first DCP commercial release, and, in addition to 35mm film distribution, was delivered via hard drive to 20 theatres in the United States along with two trailers. The Academy Film Archive houses the Digital Cinema Initiatives, LLC Collection, which includes film and digital elements from DCI's Standard Evaluation Material (StEM), a 12-minute production shot on 35mm and 65mm film, created for vendors and standards organizations to test and evaluate image compression and digital projection technologies.

Flutter (software)

Flutter is an open-source UI software development kit created by Google. It can be used to develop cross platform applications from a single codebase for the web, Fuchsia, Android, iOS, Linux, macOS, and Windows. First described in 2015, Flutter was released in May 2017. Flutter is used internally by Google in apps such as Google Pay and Google Earth as well as by other software developers including ByteDance and Alibaba. Flutter ships applications with its own rendering engine which directly outputs pixel data to the screen. This is in contrast to many other UI frameworks that rely on the target platform to provide a rendering engine, such as native Android apps which rely on the device-level Android SDK or iOS SDK which use the target platform's built-in UI stack. Flutter's control of its rendering pipeline simplifies multi-platform support as identical UI code can be used for all target platforms.One of Flutter’s key features is hot reload, which allows developers to see code changes instantly without restarting the application. == Architecture == The basic component in a Flutter program is a "widget", which can in turn consist of other widgets. A widget describes the logic, interaction, and design of a UI element with an implementation similar to React. Unlike other cross-platform toolkits such as React Native and Xamarin which draw widgets using native platform components, Flutter renders widgets itself on a per-pixel basis. Flutter has two types of widgets: stateless and stateful. Stateless widgets only update if their inputs change, meaning they otherwise won't need to be rebuilt when other elements of the screen change, while stateful widgets can call the setState() method to update an internal state and redraw. Although widgets are the primary method of constructing Flutter applications, they can also be bypassed in favor of directly drawing on a canvas. This feature has been occasionally used to implement game engines in Flutter. The Flutter framework contains two sets of widgets that conform to specific design languages: Material Design widgets implement Google's design language of the same name, and Cupertino widgets implement Apple's iOS Human interface guidelines. Flutter allows the developer to use either set of widgets on either platform. Developers can use Cupertino widgets on Android. Flutter apps are written in the Dart language. Release versions of Flutter apps on all platforms use ahead-of-time (AOT) compilation except for on the Web where code is transpiled to JavaScript or WebAssembly. Flutter inherits Dart's Pub package manager and software repository, which allows users to publish and use custom packages as well as Flutter-specific plugins. The Foundation library, written in Dart, provides basic classes and functions that are used to construct applications using Flutter, such as APIs to communicate with the engine. Flutter's engine, written primarily in C++, provides low-level rendering support using either Google's Skia graphics library or the custom "Impeller" graphics layer, which is enabled by default on iOS and Android API 29 and higher. The engine interfaces with platform-specific SDKs such as those provided by Android and iOS to implement features like accessibility, file and network I/O, native plugin support, etc. == History == The first version of Flutter was known as "Sky" and ran on the Android operating system. It was unveiled at the 2015 Dart developer summit with the stated intent of being able to render consistently at 120 frames per second. On December 4, 2018, Flutter 1.0 was released at the Flutter conference in London. On May 6, 2020, the Dart software development kit (SDK) version 2.8 and Flutter 1.17.0 were released, adding support for the Metal API. On March 3, 2021, Google released Flutter 2 during an online Flutter Engage event. It added a Canvas-based renderer for web in addition to the HTML-based renderer and early-access desktop application support for Windows, macOS, and Linux. It also shipped with Dart 2.0 which included support for null-safety. Null safety was initially optional as it was a breaking change and was made mandatory in Dart 3 released in 2023. On May 12, 2022, Flutter 3 and Dart 2.17 were released with support for all desktop platforms as stable. On October 27, 2024, a number of Flutter community developers announced Flock, a fork of Flutter intended to be easier to contribute to while still keeping in sync with all changes made in the upstream code base. In 2025, Google continued Flutter's evolution with enhanced modular architecture, foldable device support, and ARM IoT optimizations as outlined in the updated roadmap. === Major releases in Flutter === Prior to the Flutter 2.0 release in March of 2021, the Flutter framework was centered on mobile development. The developers of Flutter were primarily focused on the two main platforms, IOS and Android. Specifically, they wanted to deliver strong performance and improve access to native API and platform features and expand the widget system. With the release of Flutter 2.0, the framework moved beyond mobile and introduced support for the web platform. This marked a shift into a broader cross platform development environment. With this release, developers could produce applications for Web, Android and IOS from the same codebase. This release also brought the desktop platform closer to stable. There have been a number of improvements since then that have broadened platform support. They introduced enhancements to performance and workflow, redefined the developer’s toolkit, and added an improved rendering engine. "Flutter 2.10.0 release notes". docs.flutter.dev. Retrieved 2025-11-11.

Packard Bell Statesman

The Packard Bell Statesman was an economy line of notebook-sized laptops introduced in 1993 by Packard Bell. They were slower in performance and lacked features compared to most competitor products, but they were lower in price. It was created in a collaboration between Packard Bell and Zenith Data Systems. The Statesman series was essentially a rebrand of Zenith Data Systems Z-Star 433 series, with the only notable difference of the logo in the middle and text on the front bezel. == History == In June 1993 Zenith Data Systems announced an alliance with Packard Bell. Zenith acquired about 20% of Packard Bell and they would both now work together to design and build PC's. Zenith would also provide Packard Bell with private-label versions of their portable PC's. The Packard Bell Statesman was a rebrand of the Zenith Z-Star notebook computer series. While the Statesman was being advertised by Packard Bell, the Z-Star series was also still being sold by Zenith. The Statesman was first introduced on October 4, 1993. Prices started at $1,500 for a monochrome or color DSTN model with a 33 MHz Cyrix Cx486SLC, 4 MB of RAM, 200 MB hard disk drive, internal 1.44 MB floppy disk drive, and MS-DOS 6.0 with Windows 3.1 for the included software. A "J mouse" pointing device was included, similar to the TrackPoint. The Statesman was expected to begin shipping within the next few weeks. == Specifications == === Hardware === CPU The first two models, the 200M and 200C, used the Cyrix Cx486SLC. This was Cyrix's first processor, which was a 386SX pin-compatible chip with on-board L1 cache and 486 instructions, being known as a "hybrid chip". The processor was clocked at 33 MHz and had 1 KB of L1 cache. It was a 16-bit processor and was pin compatible with the Intel 80386SX. On the bottom of the unit, the motherboard had an empty socket for a Cyrix FasMath co-processor, which could improve floating-point math performance. The 200M and 200C plus models had a Cyrix Cx486SLC2 clocked at 50 MHz, which was 50% faster than the original 486SLC. The SLC2 similarly had 1 KB of on-board cache and was pin compatible with the previous model. Graphics & Display For video all models used three versions of the Chips & Technologies 655xx, the CT65520, 65525, and 65530. The 65520 was first introduced in early 1992 as the first controller with Super VGA resolution. It supported resolutions up to 1024x768 in 16 colors or shades of gray. If in 800x600 resolution, it can display up to 256 colors. All 3 chips were the same, with the CT65525 identifying as a CT65530. The CT65530 had an ability of 5V and 3.3V mixed operation and linear video memory addressing. All models used a 9.5in 800x600 resolution DSTN LCD. The 200M and 200M Plus had a monochrome display, while the 200C and 200C Plus had a color display. Audio All models had only basic audio available, with just a piezo speaker soldered onto the motherboard and no sound controller. Memory Standard RAM included was 4-8 MB of EDO RAM. The RAM was on a proprietary SIPP package that could only be upgraded to 12 MB maximum if the user had compatible modules. Storage For storage all models used a hard drive with a size of 100 or 200 MB, and all models had an internal 1.44 MB floppy disk drive located on the side of the unit. The maximum capacity hard drive compatible if the user wanted to upgrade was 500 MB.Ports & Expansion For ports all models had 1x serial, 1x parallel, 1x VGA output, and 1x PS/2 keyboard/mouse input. For expansion all models only had one PCMCIA type II slot. Keyboard & Mouse All models used a small-scale keyboard with control keys. One interesting feature of the keyboard is that the J key also acted as a mouse, working similar to IBM's ThinkPad TrackPoint. On some models additional keys such as S, D, F, G and space let you do other mouse actions such as right click, left click, double click, and middle mouse click. === Software === The series shipped with MS-DOS and Windows 3.1 as the included operating system. == Model Comparison == Statesman 200M — The first Statesman model, it came with a DSTN monochrome screen, and a Nickel-cadmium battery pack which could last up to 4 hours. It weighed 7.4 lb and was $1500. Statesman 200C — The second Statesman model, it was the same as the 200M with the only notable differences of a DSTN color display rather than monochrome and a slightly decreased battery life of about 3 hours. It cost $700 more than the 200M at $2200. Statesman 200M/200C Plus — The 200M/200C Plus were both identical to their previous base models, with the only difference of them having a Cx486SLC2 running at 50 MHz. In 1994 it cost around $2,295 for the 200C plus with 4 MB of ram, with 8 MB costing an extra $400. == Reception == The Statesman received fair reception, with most reviewers giving positivity for the low price and high battery life, but mainly criticizing the performance and screen quality of the model line. A review by PC World writer Rex Farrance and Owen Linderholm said the 200M had a good price, being only $1500, and a good battery life which lasted about 4 hours. In benchmarks however, the 200M performed "noticeably below the average". It was noted that the 200M's worst feature was its monochrome display, being "cloudy and a bit dim for our tastes". The J mouse was considered a decent choice, and was said to be "highly usable" after some practice. The 200M was listed as number 3 on PC World's top 20 budget PC list. PC World also reviewed the 200C, saying the color display is only a "marginal, although an improvement on the monochrome version". The 200C placed 9 on the PC World top 20 budget PC list. Compute! Magazine reviewed the 200C Plus in September 1994 stating it "lagged far behind the others, especially the DXs, but then speed isn't everything". It was given pros for low cost and good display, but criticized for its low performance, not having a trackball, and poor external monitor support.