AI Chat Picture

AI Chat Picture — independent reviews, comparisons, pricing and step-by-step guides on Aizhi.

  • Exploration–exploitation dilemma

    Exploration–exploitation dilemma

    The exploration–exploitation dilemma, also known as the explore–exploit tradeoff, is a fundamental concept in decision-making that arises in many domains. It is depicted as the balancing act between two opposing strategies. Exploitation involves choosing the best option based on current knowledge of the system (which may be incomplete or misleading), while exploration involves trying out new options that may lead to better outcomes in the future at the expense of an exploitation opportunity. Finding the optimal balance between these two strategies is a crucial challenge in many decision-making problems whose goal is to maximize long-term benefits. == Application in machine learning == In the context of machine learning, the exploration–exploitation tradeoff is fundamental in reinforcement learning (RL), a type of machine learning that involves training agents to make decisions based on feedback from the environment. Crucially, this feedback may be incomplete or delayed. The agent must decide whether to exploit the current best-known policy or explore new policies to improve its performance. === Multi-armed bandit methods === The multi-armed bandit (MAB) problem was a classic example of the tradeoff, and many methods were developed for it, such as epsilon-greedy, Thompson sampling, and the upper confidence bound (UCB). See the page on MAB for details. In more complex RL situations than the MAB problem, the agent can treat each choice as a MAB, where the payoff is the expected future reward. For example, if the agent performs an epsilon-greedy method, then the agent will often "pull the best lever" by picking the action that had the best predicted expected reward (exploit). However, it would pick a random action with probability epsilon (explore). Monte Carlo tree search, for example, uses a variant of the UCB method. === Exploration problems === There are some problems that make exploration difficult. Sparse reward. If rewards occur only once a long while, then the agent might not persist in exploring. Furthermore, if the space of actions is large, then the sparse reward would mean the agent would not be guided by the reward to find a good direction for deeper exploration. A standard example is Montezuma's Revenge. Deceptive reward. If some early actions give immediate small reward, but other actions give later large reward, then the agent might be lured away from exploring the other actions. Noisy TV problem. If certain observations are irreducibly noisy (such as a television showing random images), then the agent might be trapped exploring those observations (watching the television). === Exploration reward === This section based on. The exploration reward (also called exploration bonus) methods convert the exploration-exploitation dilemma into a balance of exploitations. That is, instead of trying to get the agent to balance exploration and exploitation, exploration is simply treated as another form of exploitation, and the agent simply attempts to maximize the sum of rewards from exploration and exploitation. The exploration reward can be treated as a form of intrinsic reward. We write these as r t i , r t e {\displaystyle r_{t}^{i},r_{t}^{e}} , meaning the intrinsic and extrinsic rewards at time step t {\displaystyle t} . However, exploration reward is different from exploitation in two regards: The reward of exploitation is not freely chosen, but given by the environment, but the reward of exploration may be picked freely. Indeed, there are many different ways to design r t i {\displaystyle r_{t}^{i}} described below. The reward of exploitation is usually stationary (i.e. the same action in the same state gives the same reward), but the reward of exploration is non-stationary (i.e. the same action in the same state should give less and less reward). Count-based exploration uses N n ( s ) {\displaystyle N_{n}(s)} , the number of visits to a state s {\displaystyle s} during the time-steps 1 : n {\displaystyle 1:n} , to calculate the exploration reward. This is only possible in small and discrete state space. Density-based exploration extends count-based exploration by using a density model ρ n ( s ) {\displaystyle \rho _{n}(s)} . The idea is that, if a state has been visited, then nearby states are also partly-visited. In maximum entropy exploration, the entropy of the agent's policy π {\displaystyle \pi } is included as a term in the intrinsic reward. That is, r t i = − ∑ a π ( a | s t ) ln ⁡ π ( a | s t ) + ⋯ {\displaystyle r_{t}^{i}=-\sum _{a}\pi (a|s_{t})\ln \pi (a|s_{t})+\cdots } . === Prediction-based === This section based on. The forward dynamics model is a function for predicting the next state based on the current state and the current action: f : ( s t , a t ) ↦ s t + 1 {\displaystyle f:(s_{t},a_{t})\mapsto s_{t+1}} . The forward dynamics model is trained as the agent plays. The model becomes better at predicting state transition for state-action pairs that had been done many times. A forward dynamics model can define an exploration reward by r t i = ‖ f ( s t , a t ) − s t + 1 ‖ 2 2 {\displaystyle r_{t}^{i}=\|f(s_{t},a_{t})-s_{t+1}\|_{2}^{2}} . That is, the reward is the squared-error of the prediction compared to reality. This rewards the agent to perform state-action pairs that had not been done many times. This is however susceptible to the noisy TV problem. Dynamics model can be run in latent space. That is, r t i = ‖ f ( s t , a t ) − ϕ ( s t + 1 ) ‖ 2 2 {\displaystyle r_{t}^{i}=\|f(s_{t},a_{t})-\phi (s_{t+1})\|_{2}^{2}} for some featurizer ϕ {\displaystyle \phi } . The featurizer can be the identity function (i.e. ϕ ( x ) = x {\displaystyle \phi (x)=x} ), randomly generated, the encoder-half of a variational autoencoder, etc. A good featurizer improves forward dynamics exploration. The Intrinsic Curiosity Module (ICM) method trains simultaneously a forward dynamics model and a featurizer. The featurizer is trained by an inverse dynamics model, which is a function for predicting the current action based on the features of the current and the next state: g : ( ϕ ( s t ) , ϕ ( s t + 1 ) ) ↦ a t {\displaystyle g:(\phi (s_{t}),\phi (s_{t+1}))\mapsto a_{t}} . By optimizing the inverse dynamics, both the inverse dynamics model and the featurizer are improved. Then, the improved featurizer improves the forward dynamics model, which improves the exploration of the agent. Random Network Distillation (RND) method attempts to solve this problem by teacher–student distillation. Instead of a forward dynamics model, it has two models f , f ′ {\displaystyle f,f'} . The f ′ {\displaystyle f'} teacher model is fixed, and the f {\displaystyle f} student model is trained to minimize ‖ f ( s ) − f ′ ( s ) ‖ 2 2 {\displaystyle \|f(s)-f'(s)\|_{2}^{2}} on states s {\displaystyle s} . As a state is visited more and more, the student network becomes better at predicting the teacher. Meanwhile, the prediction error is also an exploration reward for the agent, and so the agent learns to perform actions that result in higher prediction error. Thus, we have a student network attempting to minimize the prediction error, while the agent attempting to maximize it, resulting in exploration. The states are normalized by subtracting a running average and dividing a running variance, which is necessary since the teacher model is frozen. The rewards are normalized by dividing with a running variance. Exploration by disagreement trains an ensemble of forward dynamics models, each on a random subset of all ( s t , a t , s t + 1 ) {\displaystyle (s_{t},a_{t},s_{t+1})} tuples. The exploration reward is the variance of the models' predictions. === Noise === For neural network–based agents, the NoisyNet method changes some of its neural network modules by noisy versions. That is, some network parameters are random variables from a probability distribution. The parameters of the distribution are themselves learnable. For example, in a linear layer y = W x + b {\displaystyle y=Wx+b} , both W , b {\displaystyle W,b} are sampled from Gaussian distributions N ( μ W , Σ W ) , N ( μ b , Σ b ) {\displaystyle {\mathcal {N}}(\mu _{W},\Sigma _{W}),{\mathcal {N}}(\mu _{b},\Sigma _{b})} at every step, and the parameters μ W , Σ W , μ b , Σ b {\displaystyle \mu _{W},\Sigma _{W},\mu _{b},\Sigma _{b}} are learned via the reparameterization trick.

    Read more →
  • Loab

    Loab

    Loab ( LOBE) is a fictional character that artist and writer Steph Maj Swanson claimed to have discovered with a text-to-image AI model in April 2022. In a viral Twitter thread, Swanson described the images of Loab as an unexpectedly emergent property of the software, saying they discovered them when asking the model to produce something "as different from the prompt as possible". == History == The Sweden-based artist Steph Maj Swanson said that they first generated these images in April 2022 by using the algorithmic technique of "negative prompt weights" accessing latent space. The initial prompt - 'Brando::-1', requesting the opposite of actor Marlon Brando - generated a "skyline logo" with the cryptic lettering "DIGITA PNTICS". Attempting to generate the opposite of this image using the prompt "DIGITA PNTICS skyline logo::-1" yielded what Swanson described as "off-putting images, all of the same devastated-looking older woman with defined triangles of rosacea(?) on her cheeks". Swanson nicknamed the character "Loab", after one of the generated images resembled an album cover that included the printed word "loab". Swanson says that using the image as a prompt for further images produced increasingly violent and gory results. Swanson speculated that something about the image could be "adjacent to extremely gory and macabre imagery in the distribution of the AI's world knowledge". Swanson says that when they combined images of Loab with other pictures, the subsequent results consistently return an image including Loab, regardless of how much distortion they added to the prompts to try and remove her visage. Swanson speculated that the latent space region of the AI map that Loab is located in, in addition to being near gruesome imagery, must be isolated enough that any combinations with other images could only use Loab from her area and no related images due to its isolation. After enough crossbreeding of images and dilution attempts, Swanson was able to eventually generate images without Loab, but found that crossbreeding those diluted images would also eventually lead to a version of Loab to reappear in the resulting images. Swanson has said that "for various reasons" they declined to disclose the software used to create the images. Loab has been referred to as the "first AI-generated cryptid" and as such has gone viral. Despite hyping up the cryptid nature of the discovery in their wording, Swanson admitted that "Loab isn't really haunted, of course", but noted that the mythos that has sprung up around the AI-generated character has gone beyond their initial involvement. Swanson speculated that people sharing pictures and memes of Loab would lead future AIs to use those images as a part of their latent space maps, making her an innate part of the internet landscape, with Swanson adding "If we want to get rid of her, it's already too late." == Response == There has been discussion of whether the Loab series of images are "a legitimate quirk of AI art software, or a cleverly disguised creepypasta." Smithsonian magazine has written that "Loab sparked some lengthy ethical conversations around visual aesthetics, art and technology," and some have criticized the labeling of a woman with rosacea as a horror image, considering this to be "stigmatizing disability". Swanson responded that if the AI map is combining Loab with violent imagery, then that is a "social bias" in the data being used for the image modeling software. The Atlantic writer Stephen Marche described Loab as a "form of expression that has never existed before" whose authorship is unclear and that exists as an "emanation of the collective imagistic heritage, the unconscious visual mind". Laurens Verhagen in de Volkskrant commented that rather than showing that there are "dark horror creatures hidden deep within AI", the existence of Loab instead implies that our current "understanding of AI is limited". Mhairi Aitken at the Alan Turing Institute stated that rather than a "creepy" emergent property, output results like Loab were representative of the "limitations of AI image-generator models" and was more concerned about the urban legends that are born from such "boring" innocuous things and how easily "other people take these things seriously". Carly Cassella for ScienceAlert described Loab as a "modern day tronie" (a style of Dutch painting) that is not representative of an actual person, but just a concept or idea, similar but distinct from works like the Girl With A Pearl Earring. Wired's Joel Warner argued that Loab was only the beginning and that, with AI text generators such as ChatGPT becoming more commonplace, a "linguistic version of Loab" would emerge in that space as well and begin creating ideas through "intentional prompts" or otherwise that will be as disturbing as The 120 Days of Sodom.

    Read more →
  • ICAART

    ICAART

    The International Conference on Agents and Artificial Intelligence (ICAART) is a meeting point for researchers (among others) with interest in the areas of Agents and Artificial Intelligence. There are 2 tracks in ICAART, one related to Agents and Distributed AI in general and the other one focused in topics related to Intelligent Systems and Computational Intelligence. The conference program is composed of several different kind of sessions like technical sessions, poster sessions, keynote lectures, tutorials, special sessions, doctoral consortiums, panels and industrial tracks. The papers presented in the conference are made available at the SCITEPRESS digital library, published in the conference proceedings and some of the best papers are invited to a post-publication with Springer. ICAART's first edition was in 2009 counting with several keynote speakers like Marco Dorigo, Edward H. Shortliffe and Eduard Hovy. Since then, the conference had several other invited speakers like Katia Sycara, Nick Jennings, Robert Kowalski, Boi Faltings and Tim Finin. Bart Selman is one of the names confirmed for the next edition of this conference. Since 2012 the conference is held in conjunction with 2 other conferences: the International Conference on Operations Research and Enterprise Systems (ICORES) and the International Conference on Pattern Recognition Applications and Methods (ICPRAM). == Areas == === Agents === Agent communication languages Cooperation and Coordination Distributed Problem Solving Economic Agent Models Emotional Intelligence Group Decision Making Intelligent Auctions and Markets Mobile Agents Multi-agent systems Negotiation and Interaction Protocols Nep News Detection Agent Models and Architectures Physical Agents at Work Privacy, Safety and Security Programming Environments and Languages Robot and Multi-Robot Systems Self Organizing Systems Semantic Web Simulation Swarm Intelligence Task Planning and Execution Transparency and Ethical Issues Agent-Oriented Software Engineering Web Intelligence Agent Platforms and Interoperability Autonomous systems Cloud Computing and Its Impact Cognitive robotics Collective Intelligence Conversational Agents === Artificial intelligence === AI and Creativity Deep Learning Evolutionary Computing Fuzzy Systems Hybrid Intelligent Systems Industrial Applications of AI Intelligence and Cybersecurity Intelligent User Interfaces Knowledge Representation and Reasoning Knowledge-Based Systems Ambient Intelligence Machine learning Model-Based Reasoning Natural Language Processing Neural Networks Ontologies Planning and Scheduling Social Network Analysis Soft Computing State Space Search Bayesian Networks Uncertainty in AI Vision and Perception Visualization Big Data Case-Based Reasoning Cognitive Systems Constraint Satisfaction Data Mining Data Science == Editions == === ICAART 2023 – Lisbon, Portugal === === ICAART 2020 – Valletta, Malta === === ICAART 2019 – Prague, Czech Republic === Proceedings - Proceedings of the 11th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-350-6 Proceedings - Proceedings of the 11th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-350-6 === ICAART 2018 – Funchal, Madeira, Portugal === Proceedings - Proceedings of the 10th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-275-2 Proceedings - Proceedings of the 10th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-275-2 === ICAART 2017 – Porto, Portugal === Proceedings - Proceedings of the 9th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-219-6 Proceedings - Proceedings of the 9th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-220-2 === ICAART 2016 – Rome, Italy === Proceedings - Proceedings of the 8th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-172-4 Proceedings - Proceedings of the 8th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-172-4 === ICAART 2015 – Lisbon, Portugal === Proceedings - Proceedings of the 7th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-073-4 Proceedings - Proceedings of the 7th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-074-1 === ICAART 2014 – ESEO, Angers, Loire Valley, France === Proceedings - Proceedings of the 6th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-758-015-4 Proceedings - Proceedings of the 6th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-758-016-1 === ICAART 2013 – Barcelona, Spain === Proceedings - Proceedings of the 5th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-8565-38-9 Proceedings - Proceedings of the 5th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-8565-39-6 === ICAART 2012 – Vilamoura, Algarve, Portugal === Proceedings - Proceedings of the 4th International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-8425-95-9 Proceedings - Proceedings of the 4th International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-8425-96-6 === ICAART 2011 – Rome, Italy === Proceedings - Proceedings of the 3rd International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-8425-40-9 Proceedings - Proceedings of the 3rd International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-8425-41-6 === ICAART 2010 – Valencia, Spain === Proceedings - Proceedings of the 2nd International Conference on Web Information Systems and Technologies - Volume 1. ISBN 978-989-674-021-4 Proceedings - Proceedings of the 2nd International Conference on Web Information Systems and Technologies - Volume 2. ISBN 978-989-674-022-1 === ICAART 2009 – Porto, Portugal === Proceedings - Proceedings of the 1st International Conference on Web Information Systems and Technologies. ISBN 978-989-8111-66-1

    Read more →
  • Fragile Dreams: Farewell Ruins of the Moon

    Fragile Dreams: Farewell Ruins of the Moon

    Fragile Dreams: Farewell Ruins of the Moon (フラジール ~さよなら月の廃墟~, Furajīru: Sayonara Tsuki no Haikyo; known in Japan as Fragile) is an action role-playing game for the Wii developed by Namco Bandai Games in co-operation with Tri-Crescendo. The game was released by Namco Bandai Games in Japan on January 22, 2009. It was later published by Xseed Games in North America on March 16, 2010, and in Europe by Rising Star Games on March 19, 2010, followed by its release in Australia on April 1, 2010. == Gameplay == In Fragile Dreams, the player character, Seto, must traverse the ruins of Tokyo and the surrounding areas, fighting off ghosts that lurk within these ruins. The game's heads-up display includes a mini-map and HP gauge for Seto's location and health, respectively. Seto will fall unconscious if his HP reaches zero, resulting in a game over. The player controls Seto from a third-person perspective with the Wii Remote and Nunchuk. Seto can use his flashlight (controlled by the Wii Remote pointer) to illuminate his surroundings or solve puzzles and interact with the environment. When searching for certain objectives or hidden enemies, pointing Seto's light in their direction picks up and plays their sounds through the Wii Remote's mini speaker. The Wii Nunchuk, meanwhile, directly controls Seto's movement: aside of basic movement, he can crouch to hide and crawl through small spaces. Seto will often come across damaged floors, which require slow movement (and for heavily damaged floors, crouching) to cross without falling through. As Seto, the player can use weapons found throughout the world to fight off ghosts, ranging from slingshots and golf clubs to crossbows and katanas. Each weapon can only take a certain amount of use: once a weapon reaches its limit, it will break after battle. The player can also find other usable and collectable items in the field, marked with fireflies. The player can only save their game by resting at small fire pits scattered throughout the world: used fire pits are marked with a bonfire. The player can also examine and identify Mystery Items, organize their inventory, as well as after encountering the Merchant, buy and sell items. As stated by the producer of the game, Kentarō Kawashima, Fragile Dreams is not strictly a survival horror: rather, its story focuses on human drama. In Fragile Dreams, aside of the main story, the player can find and examine objects and graffiti throughout the world. Objects called memory items (ranging from origami and stones to cell phones and books) hold the memories of their former owners (only accessible at bonfires), while the graffiti contains messages only seen by pointing at them in first-person. By examining these messages, the player can piece together hints to the game's backstory. == Story == === Setting and characters === Fragile Dreams is set in a post-apocalyptic version of Earth in the near-future. Almost all the world's population has vanished, leaving the surviving buildings and structures abandoned. The game is set in and near the ruins of Tokyo, Japan, where the event that nearly wiped out humanity may have originated. The protagonist, Seto, is a 15-year-old boy who searches the world for other living humans. He encounters Ren, a silver-haired girl who often leaves behind large, cryptic drawings. Other characters include: Sai, the ghost of a young woman; Crow, a mischievous and straightforward amnesiac boy; Personal Frame (P.F.), a portable computer who loves having conversations more than anything else; Chiyo, the ghost of a little girl; and the Merchant, a mysterious yet merry man who trades various goods. The game's host of enemies mainly consist of ghosts, but also include humanoid robots and security proxies. The main antagonist, Shin, is the AI of a scientist who considers speech to be an inferior means of communication. Various memory items include a greater set of characters, each giving hints to the game's backstory. === Plot === At the end of Seto's fifteenth summer, his grandfather dies. Seto buries him in front of their home, an old observatory, and that from then on he became "truly alone". At night, he searches for anything the old man had left for him and discovers a letter, along with a strange blue stone in a locket. Suddenly, a mask-like ghost appears and attacks Seto. After driving the creature off, Seto reads the old man's letter, who tells him to "reach a tall red tower" east of the observatory, where he might find other survivors. After departing for the tower, Seto reaches an old subway entrance in the Azabudai district and finds Ren sitting on a collapsed pillar, singing to the stars. He accidentally startles her and the frightened Ren flees into the subway station: getting over the shock of meeting another person, Seto follows her. While searching the station, he discovers a Personal Frame, who guides him towards Ren. Unfortunately, just as they reach the exit, P.F.'s battery dies out: Seto buries the device, keeping a screw from it in his locket. From the underground, Seto finds himself at an abandoned amusement park and encounters Crow, who steals Seto's locket. After a long chase across the park and another encounter with the masked ghost, Crow returns Seto's locket and directs him to a hotel nearby, where he saw a girl who might know something about Ren. Crow also gives Seto his skull ring to keep in his locket and kisses him. At the hotel, Seto encounters Sai and fights the masked ghost again. After laying to rest the spirit of an old woman named Chiyo, the two discover Ren's drawings by a sewer. Returning to the underground, Seto and Sai find themselves at a hydropower dam. While searching for Ren, Seto discovers that Crow is actually a robot, but his battery begins to fail and Seto mourns for him as he "die[s]". Finally, they encounter Ren in a cell: although glad to see him again, Ren runs off after Shin calls. Sai explains to Seto that most of humanity died because of a "human empathy expansion project" called Glass Cage. The project was meant to make human thoughts transparent, meaning that no one would need words to communicate. However, after Glass Cage activated, people who went to sleep never woke up again. Sai reveals that she was Glass Cage's first catalyst: this time, Shin intends to use Ren as the catalyst. After exiting the dam, a demolition crane attempts to destroy it. Hearing both Shin's and the masked ghost's voices from the crane — saying, "Any threat to the project must be eliminated." — the player realizes both are manifestations of Glass Cage. After Seto destroys the crane, Sai leads him to the facility where Ren was taken to. Entering the laboratory, Seto and Sai are confronted by Shin, who coldly dismisses Sai's attempts at reasoning with him and is adamant about proceeding with his plans. As they traverse the laboratory, they overhear a voice announcing "Glass Cage Launch Preparations Complete", strengthening their resolve to save Ren. Making it into the room where Ren is being held, Shin tells them of his intention to use Glass Cage to "obliterate corporeal beings". After Seto defeats him, Shin disappears and Seto releases Ren from the device holding her. Their reunion is cut short as Sai tells them that the backup system has "finished copying her psyche to the AI", allowing Glass Cage to proceed. Ren reveals Shin has escaped to the top of the Tokyo Tower and Seto asks Ren to wait at the base of the tower and for Sai to accompany her. On his way up the tower, Seto hears the voices of P.F., Chiyo and Crow wishing him luck. He confronts and defeats Shin a second time, who reveals his motivations: he had secretly used himself as the first test subject of the human empathy expansion project and gained the ability to hear the thoughts of those around him. Despite his initial belief in the project as a way for humans to empathize with one another, all he heard around him was "jealousy and contempt" and he soon grew disillusioned with the world as even his parents turned against him. Believing no person loved him, Shin wants to put an end to humanity. His words meet with a vehement response from Sai, as she tells him that she loves him, having developed those feelings while she was the catalyst and all she ever wanted was to be part of his life. Hearing this, Shin finds peace, tossing the AI mainframe away so Glass Cage can never be reactivated and vanishes together with Sai, hand-in-hand, after thanking Seto. Descending from the tower, Seto finally learns Ren's name and they resolve to look for other survivors together. == Development == Fragile Dreams was developed by the team at Namco Bandai Games. Director and producer Kentarō Kawashima came up with the concept for the game in 2003, before the Wii console was revealed. When the Wii was unveiled, it became the obvious choice as the game's platform as the Wii remote could be used to control the flashlight. Kawashima wrote the main scenario for the title, w

    Read more →
  • Chasys Photo

    Chasys Photo

    Chasys Photo (previously called Chasys Draw Artist, then Chasys Draw IES) is a suite of applications including a layer-based raster graphics editor with adjustment layers, linked layers, timeline and frame-based animation, icon editing, image stacking and comprehensive plug-in support (Chasys Draw IES Artist), a fast multi-threaded image file converter (Chasys Draw IES Converter) and a fast image viewer (Chasys Draw IES Viewer), with RAW image support in all components. It supports the native file formats of several competitors including Adobe Photoshop, Affinity Photo, Corel Photo-Paint, GIMP, Krita, Paint.NET and PaintShop Pro, and the whole suite is designed to make effective use of multi-core processors, touch-screens and pen-input devices. The software is developed by John Paul Chacha in Nairobi, Kenya. Chasys Draw IES is currently released as freeware, and is available for computers running Microsoft Windows operating systems. It is available in three distributions: the standard distro, a portable version and a Microsoft Store version. The suite is coded in a blend of C, C++ and assembly language. It runs on x86 processors and supports the MMX, SSE, SSE2, S-SSE3, and SSE4.1 instruction sets. == History == Chasys Draw is a project that was started in November 2001 by John Paul Chacha, mostly as a hobby than anything else. The original Chasys Draw was a rather simple bitmap editor done in Visual Basic, a lot like MS Paint save for its ability to do gradients. This application underwent many changes, eventually leading up to Chasys Draw 5. This was the first version to have its own native format, referred to simply as CD5. Major updates to the graphics code in May 2002 resulted in Chasys Draw DTFx (Direct Tool eFfects). The new graphics code being referred to here was actually a miniature bitmap abstraction engine that allowed for fast per-pixel operations and direct image buffer access (much as the DIB engine does for GDI). The engine was named JpDRAW. This version was also done in VB, but was much faster than all the previous versions. The new graphics code allowed for more tools to be implemented than was ever possible before. Later on in 2002, the developer decided to completely abandon VB as a programming platform and moved all the code to C/C++. The move to C/C++ allowed the development of a full-fledged graphics engine which was named JpDRAW2. Chasys was renamed to Chasys Draw Artist, and the CD5 image format was also updated to reflect the new features. By coincidence, the module that implemented the file format was the fifth module to be added, so the format was called Chasys Draw module 5, retaining the .cd5 file extension. First public release In April 2004, Chasys Draw Artist was released to the public via the internet for the first time (version 1.27). The release was done via betanews). In 2005, Chasys Draw underwent major user interface changes as well as internal changes. By December of that year, the project had reached version 1.63. This was the first version to introduce advanced features such as anti-aliasing. It was also the first version with full support for alpha channels. The CD5 image format was also upgraded to version 2, adding advanced compression, full alpha channels, encryption and metadata. Version 1.63 was the first version to win an IEEE (Kenya chapter) award in ICT. The "chazy-glass" interface, from which the all later versions' user interfaces borrowed, was introduced in version 1.80. Chasys Draw Artist adopted photo editing features in version 2.01. Comprehensive tutorials were added and many features were re-designed to make them easier to use. Multi-threading was introduced to accelerate some tasks, such as the improved auto-save engine. Utilities such as a converter and browser were added. Version 2.43 of Chasys Draw Artist was quietly released to the public in late 2007 without any announcements. It featured many fixes to the formal version 2.42, as well as many new features. The quiet release was due to a decision to re-build Chasys Draw Artist from scratch, while still continuing support for the old architecture. An experimental version 2.45 was released only to beta-testers for the purpose of testing new technologies that would be included in the new architecture and was officially withdrawn in May 2008. During the time when the versions 2.43~2.45 were being released, work was underway to create a new layer-based Chasys Draw, which was released as Chasys Draw IES (Image Editing Suite), with the initial version number 2.50. A new multi-layer tag-based image format was created to support layering and blending modes; this was named CD5 v3. The next version introduced animation and multi-resolution support as editing modes, and the next one brought in an unlimited undo engine, new plug-ins and several internal fixes. Further development led to the introduction of super-resolution and image stacking, support for video and video capture, Anti-aliasing, metadata save and restore, a "Pen and Path" tool, physical measurement specification, and a video sequence composer engine. The user interface was enhanced with adaptive scrolling and the auto-save engine was optimized. Some memory management was added for machines with low RAM. By version 2.60, Chasys Draw IES was capable of loading Photoshop's PSD files, as well as load and save JPEG 2000. This version also had shell integration with thumbnails and application-level support for multi-monitor display setups. Metadata was extended to support save, restore and scaling for text formatting and path data. There was also a new palette with exchangeable swatches, loadable from all kinds of palette files. A slicing tool for web and user interface design was also included. A C++ code module output for inline image generation was added, as was a constrained recolor brush. The concept of a "fully anti-aliased work-flow" was introduced in version 2.62, in which all drawing and selection tools were anti-aliased by default. Support for Photoshop plug-ins using Adobe's 8bf format was added in version 2.66, allowing users to utilize thousands of free plug-ins available online. Equivalents for the Pantone palettes (PMS 100 to 814-2x) were added, and the "Just-in-Time" memory compressor significantly reduced the editor's memory requirements. First freeware release Chasys Draw IES went freeware on 6 June 2009. With the coming of the freeware IES, two blending modes (Hue and Chroma) were added. Textures were improved to allow multiple layer-based textures. The TextArt G3 engine was enhanced with LINK metadata, and alpha shift was improved. IES 2.72 added the Luma Wand tool, fixed PNG and TIFF transparency issues, and fixed Smart-Paste transparency. IES 2.74 introduced alpha protection, and 2.75 followed with a new adjustments engine that faced out many effects implemented by the effects engine. The adjustments engine was designed to appeal to experienced image editors. IES 2.76 introduced a new transform engine and the Resizer for IES plug-in supporting multi-core and 18 scaling methods, including customizable windowed Sinc interpolation. IES 2.77 added Greyscale with Tint adjustment, separated the Lock and Click-Thru layer properties, extended the Cloning Brush with three options (this, below and composite) and also extended the Color Picker with multiple point sampling. IES 3.01 brought a new look and many breakthrough tools to the suite. It was geared toward touch and was fully compatible with Windows 7. The toolbox was reorganized, with some tools being grouped and new ones added. Some message boxes were replaced with a new popup system, and the working of the workspace was changed to use a back-blitter, which enabled the addition of new blending modes, Screen and Mask. The printing interface was modified and given accurate proofing. Alpha Function Adjustment was added and a new Anti-Quantization Engine included for all adjustments to remove the need for 16 bits per channel editing. An internal clipboard was created to cater for copying images that are too large for the Windows clipboard, and translucency full-page gradients added. Some new tutorials were added and keyboard shortcuts made configurable. IES 3.05 brought the power of custom full-page gradients to the suite, supporting .ggr, .grd and .gra gradients. New gradient styles were included, as was support for Adobe color tables (.act), palette previewing, point color editing and a highly improved TextArt engine. Digital lightroom IES 3.11 was introduced on 14 December 2009. It was done on a new development base and added a new application, raw-Input. This was a RAW image format processor based on dcraw. This application allowed the use of Chasys Draw IES in processing digital negatives, which are popular with professional photographers. Chasys Draw IES 3.24 was released with a re-designed user interface, powered by a higher performance graphics core and better memory management. A history palette w

    Read more →
  • Iron Man 2020 (event)

    Iron Man 2020 (event)

    "Iron Man 2020" is a storyline published by Marvel Comics in 2020 which follows the character Arno Stark as he attempts to take over Stark Industries and the mantle of his estranged brother Tony Stark (Iron Man). The crossover characters of two different brands meeting up in one storyline received mixed reviews from critics. == Publication history == Marvel Comics released the teaser for the event at New York Comic Con in November 2019. It was also alluded to in December 2019's Incoming! In the original checklist released for the event, 2020 Force Works was originally titled Force Works 2020, while 2020 Machine Man was previously named Machine Man 2020, and so on. Additionally, 2020 Wolverine was going to be called Weapon.EXE 2020. The publication of this event was intended to span from January to June 2020, however, due to the COVID-19 pandemic, Diamond Comic Distributors suspended the distribution of new print titles between April 1 and May 27, which also caused digital releases by Marvel Entertainment to be postponed. The rescheduling of the postponed issues to new dates pushed the event's conclusion to August, and certain issues, namely 2020 Force Works #3 and 2020 Ironheart #1–2, were released exclusively in a digital format. == Main plot == Arno Stark wakes up from a nightmare involving the Extinction Entity, a monstrous amalgamation of alien and machine. He dreams that the Extinction Entity is going to come to Earth in a matter of weeks and create an artificial intelligence (A.I.) army to consume humanity. After eating breakfast with duplicates of Howard Stark and Maria Stark, Arno suits up as Iron Man and saves a construction worker from a hostage situation involving several Nick Fury Life Model Decoys, which represent the A.I. army trying to liberate construction robots. Over different news outlets, the media wonders about the whereabouts of Tony Stark, who declared himself as nothing more than a simulation of the real, late Tony Stark. At the A.I. army's base, Machine Man is commanding the robots' moves when Arno appears, having planned for the A.I. army's leader to show himself. Machine Man activates the bomb, forcing Arno to fly it away so it explodes somewhere safe while he escapes. Machine Man reaches the Thirteenth Floor, a dimensional-shunted plane of existence made of solid light, and a haven for robotkind that humans cannot access or comprehend. Aaron meets with the leader of the A.I. army and creator of Thirteenth Floor: Tony Stark -- who is now going by the name Mark One, having embraced his nature as artificial intelligence. Also in the A.I. army are Albert, Awesome Android, H.E.R.B.I.E., Machinesmith, and Quasimodo. The A.I. army continues its efforts to liberate artificial life forms by raiding places where robots are being subjugated. Iron Man intercepts an attack on a Futura Motors testing site by Quasimodo and H.E.R.B.I.E. and manages to recover an Un-Inhibitor allowing him to take control of all A.I.s. On the Thirteenth Floor, Mark One receives a transmission from a mole inside Baintronics -- codenamed Ghost in the Machine --revealing that Arno used the submission code on Jocasta, who received a new body, making her entirely compliant. Stark plans to upload the submission code to the internet to instantly infect robots. With only three hours before the code is transmitted to Stark Unlimited's satellite network, Mark One devises a heist on Bain Tower to tamper with the code before launch. Having discovered the secret behind the Thirteenth Floor, Arno shuts out the A.I. army, uses Jocasta to lure Machine Man away from the tower, infects Machinesmith with the submission code, and confronts Mark One. H.E.R.B.I.E., Awesome Android, and Machinesmith escape from Bain Tower and call for help to every robot in New York City. Mark One is left to fight Iron Man and is defeated. Meanwhile, Sunset Bain confronts and fires Andy Bhang under the accusation of working as a mole inside Stark Unlimited and feeding Bethany Cabe information to relay to the A.I. army. Arno takes Mark One inside Bain Tower to meet Howard and Maria Stark and asks Tony to join him, but he refuses and dismisses his rationale as lunacy. The robotic mob assembled by Machine Man reaches Bain Tower, giving Mark a distraction which allows him to fly off and disable the transmission dish from which Arno intends to broadcast the obedience O.S. to subjugate every robot. Tony manages to stop the upload and make the antenna unusable. In retaliation, Arno fires all of his armor's firepower at Tony as he falls to the ground. Tony Stark's remaining allies escape with his body as Arno attacks the robot protesters. Tony wakes up inside the Thirteenth Floor and is greeted by F.R.I.D.A.Y., who had plucked Tony's consciousness from his body during his fall. In the streets, Arno Stark tracks down Howard and Maria, who die from an illness inherited from Arno. When Sunset Bain objects to Arno creating new bodies for his parents and trying to control people, he reveals she is an A.I., a duplicate of the real Bain whom Arno replaced back when she solicited him to heal a scar on her face. He makes new bodies for Howard and Maria by recreating the Arsenal and Mistress bodies from the eScape. After learning of Arno's new plan, Dr. Shapiro (who is the actual mole) sneaks into a computer and warns F.R.I.D.A.Y. about it. When F.R.I.D.A.Y. relays that only Tony Stark can stop Arno, Tony insists that he is not the real Tony Stark, but is confronted by holographic manifestations of himself in different points of his life, until they all merge into him and he acknowledges that he has always been Tony. As Arno Stark sets off to the Stark Space Station to install his mind-controlling device to enslave all of humanity, Tony Stark's allies assault the Stark Unlimited HQ, confronting Sunset Bain's duplicate and Arno's Iron Legion. Jocasta uploads a submission code to Bain and they place Tony's body inside a bio-pod that restores his body to normalcy, uploads his consciousness back into his body. Using the Thirteenth Floor's access mechanisms, Tony and his allies reach the Stark Space Station from one of the elevators within. Employing his new Virtual Armor, Tony defeats Arno in combat. When Arno prepares to activate his mind-controlling device, the Extinction Entity suddenly appears. Arno ultimately defeats the Extinction Entity by willingly assimilating with it, causing it to explode. The entity is revealed to be a delusion caused by Arno's terminal disease, of which he would die by the end of 2020. Unable to stop Arno, Tony placed him in a simulation where he successfully stopped the entity. Afterwards, Jocasta uses the submission code to force Sunset Bain's duplicate to confess all of Baintronics' crimes, also claiming responsibility for tricking Tony into thinking he was an artificial intelligence and pulling the strings of the A.I. Army, putting an end to the robot revolution. Tony gives up Stark Unlimited to Bhang Robotics and he flies off in a new armor, reasserting himself as Iron Man. == Issues involved == === Main issues === Iron Man 2020 (vol. 2) #1–6 === Tie-In issues === 2020 Force Works #1–3 2020 Iron Age #1 2020 Ironheart #1–2 2020 Machine Man #1–2 2020 Rescue #1–2 2020 iWolverine #1–2 == Critical reception == According to Comic Book Roundup, the entire crossover received an average score of 6.4 out of 10 based on 36 reviews. William Tucker from ButWhyTho Podcast stated "Iron Man 2020 #6 is an initially exciting end to a great event that eventually feels deflated. There is absolutely nothing wrong with the art, Woods has been incredible throughout, but the ending that Slott and Gage chose to round out an epic tale like this left me feeling cold. And while there were loads of enjoyable cameos, their involvement ultimately didn't seem important to the story as a whole. Which is disappointing, as the rest of the event really was a fun and exciting ride." Anthony Wendel from MonkeysFightingRobots wrote "The 2020 event seems like it is taking some big risk, and it doesn't inspire a lot of confidence from the start. Iron Man 2020 #1 has set the stakes and shown some very intense players on both sides of the board. Sadly, if it doesn't unfold just the right way, many may feel cheated about defending the path characters are taking." == Collected editions ==

    Read more →
  • Random-fuzzy variable

    Random-fuzzy variable

    In measurements, the measurement obtained can suffer from two types of uncertainties. The first is the random uncertainty which is due to the noise in the process and the measurement. The second contribution is due to the systematic uncertainty which may be present in the measuring instrument. Systematic errors, if detected, can be easily compensated as they are usually constant throughout the measurement process as long as the measuring instrument and the measurement process are not changed. But it can not be accurately known while using the instrument if there is a systematic error and if there is, how much? Hence, systematic uncertainty could be considered as a contribution of a fuzzy nature. This systematic error can be approximately modeled based on our past data about the measuring instrument and the process. Statistical methods can be used to calculate the total uncertainty from both systematic and random contributions in a measurement. However, the computational complexity is very high, and hence not desirable. L.A.Zadeh introduced the concepts of fuzzy variables and fuzzy sets. Fuzzy variables are based on the theory of possibility and hence are possibility distributions. This makes them suitable to handle any type of uncertainty, i.e., both systematic and random contributions to the total uncertainty. Random-fuzzy variable (RFV) is a type 2 fuzzy variable, defined using the mathematical possibility theory, used to represent the entire information associated to a measurement result. It has an internal possibility distribution and an external possibility distribution called membership functions. The internal distribution is the uncertainty contributions due to the systematic uncertainty and the bounds of the RFV are because of the random contributions. The external distribution gives the uncertainty bounds from all contributions. == Definition == A random-fuzzy Variable (RFV) is defined as a type 2 fuzzy variable which satisfies the following conditions: Both the internal and the external functions of the RFV can be identified. Both the internal and the external functions are modeled as possibility distributions (PD). Both the internal and external functions have a unitary value for possibility to the same interval of values. An RFV can be seen in the figure. The external membership function is the distribution in blue and the internal membership function is the distribution in red. Both the membership functions are possibility distributions. Both the internal and external membership functions have a unitary value of possibility only in the rectangular part of the RFV. Therefore, all three conditions have been satisfied. If there are only systematic errors in the measurement, then the RFV simply becomes a fuzzy variable which consists of just the internal membership function. Similarly, if there is no systematic error, then the RFV becomes a fuzzy variable with just the random contributions and therefore, is just the possibility distribution of the random contributions. == Construction == A random-fuzzy variable can be constructed using an internal possibility distribution (rinternal) and a random possibility distribution (rrandom). === The random distribution (rrandom) === rrandom is the possibility distribution of the random contributions to the uncertainty. Any measurement instrument or process suffers from random error contributions due to intrinsic noise or other effects. This is completely random in nature and is a normal probability distribution when several random contributions are combined according to the central limit theorem. However, there can also be random contributions from other probability distributions, such as a uniform distribution, gamma distribution and so on. The probability distribution can be modeled from the measurement data. Then, the probability distribution can be used to model an equivalent possibility distribution using the maximally specific probability-possibility transformation. Some common probability distributions and the corresponding possibility distributions can be seen in the figures. === The internal distribution (rinternal) === rinternal is the internal distribution in the RFV which is the possibility distribution of the systematic contribution to the total uncertainty. This distribution can be built based on the information that is available about the measuring instrument and the process. The largest possible distribution is the uniform or rectangular possibility distribution. This means that every value in the specified interval is equally possible. This actually represents the state of total ignorance according to the theory of evidence which means it represents a scenario in which there is maximum lack of information. This distribution is used for the systematic error when we have absolutely no idea about the systematic error except that it belongs to a particular interval of values. This is quite common in measurements. However, in certain cases, it may be known that certain values have a higher or lower degrees of belief than certain other values. In this case, depending on the degrees of belief for the values, an appropriate possibility distribution could be constructed. === The construction of the external distribution (rexternal) and the RFV === After modeling the random and internal possibility distribution, the external membership function, rexternal, of the RFV can be constructed by using the following equation: where x ∗ {\displaystyle x^{}} is the mode of r random {\displaystyle r_{\textit {random}}} , which is the peak in the membership function of r r a n d o m {\displaystyle r_{random}} and Tmin is the minimum triangular norm. RFV can also be built from the internal and random distributions by considering the α-cuts of the two possibility distributions (PDs). An α-cut of a fuzzy variable F can be defined as Therefore, essentially an α-cut is the set of values for which the value of the membership function μ F ( a ) {\displaystyle \mu _{\rm {F}}(a)} of the fuzzy variable is greater than α. This gives the upper and lower bounds of the fuzzy variable F for each α-cut. The α-cut of an RFV, however, has 4 specific bounds and is given by R F V α = [ X a α , X b α , X c α , X d α ] {\displaystyle RFV^{\alpha }=[X_{a}^{\alpha },X_{b}^{\alpha },X_{c}^{\alpha },X_{d}^{\alpha }]} . X a α {\displaystyle X_{a}^{\alpha }} and X d α {\displaystyle X_{d}^{\alpha }} are the lower and upper bounds respectively of the external membership function (rexternal) which is a fuzzy variable on its own. X b α {\displaystyle X_{b}^{\alpha }} and X c α {\displaystyle X_{c}^{\alpha }} are the lower and upper bounds respectively of the internal membership function (rinternal) which is a fuzzy variable on its own. To build the RFV, let us consider the α-cuts of the two PDs i.e., rrandom and rinternal for the same value of α. This gives the lower and upper bounds for the two α-cuts. Let them be [ X L R α , X U R α ] {\displaystyle [X_{LR}^{\alpha },X_{UR}^{\alpha }]} and [ X L I α , X U I α ] {\displaystyle [X_{LI}^{\alpha },X_{UI}^{\alpha }]} for the random and internal distributions respectively. [ X L R α , X U R α ] {\displaystyle [X_{LR}^{\alpha },X_{UR}^{\alpha }]} can be again divided into two sub-intervals [ X L R α , x ∗ ] {\displaystyle [X_{LR}^{\alpha },x^{}]} and [ x ∗ , X U R α ] {\displaystyle [x^{},X_{UR}^{\alpha }]} where x ∗ {\displaystyle x^{}} is the mode of the fuzzy variable. Then, the α-cut for the RFV for the same value of α, R F V α = [ X a α , X b α , X c α , X d α ] {\displaystyle RFV^{\alpha }=[X_{a}^{\alpha },X_{b}^{\alpha },X_{c}^{\alpha },X_{d}^{\alpha }]} can be defined by Using the above equations, the α-cuts are calculated for every value of α which gives us the final plot of the RFV. A random-fuzzy variable is capable of giving a complete picture of the random and systematic contributions to the total uncertainty from the α-cuts for any confidence level as the confidence level is nothing but 1-α. An example for the construction of the corresponding external membership function (rexternal) and the RFV from a random PD and an internal PD can be seen in the following figure.

    Read more →
  • Fuzzy differential equation

    Fuzzy differential equation

    Fuzzy differential equation are general concept of ordinary differential equation in mathematics defined as differential inclusion for non-uniform upper hemicontinuity convex set with compactness in fuzzy set. d x ( t ) / d t = F ( t , x ( t ) , α ) , {\displaystyle dx(t)/dt=F(t,x(t),\alpha ),} for all α ∈ [ 0 , 1 ] {\displaystyle \alpha \in [0,1]} . == First order fuzzy differential equation == A first order fuzzy differential equation with real constant or variable coefficients x ′ ( t ) + p ( t ) x ( t ) = f ( t ) {\displaystyle x'(t)+p(t)x(t)=f(t)} where p ( t ) {\displaystyle p(t)} is a real continuous function and f ( t ) : [ t 0 , ∞ ) → R F {\displaystyle f(t)\colon [t_{0},\infty )\rightarrow R_{F}} is a fuzzy continuous function y ( t 0 ) = y 0 {\displaystyle y(t_{0})=y_{0}} such that y 0 ∈ R F {\displaystyle y_{0}\in R_{F}} . == Linear systems of fuzzy differential equations == A system of equations of the form x ( t ) n ′ = a n 1 ( t ) x 1 ( t ) + . . . . . . + a n n ( t ) x n ( t ) + f n ( t ) {\displaystyle x(t)'_{n}=a_{n}1(t)x_{1}(t)+......+a_{n}n(t)x_{n}(t)+f_{n}(t)} where a i j {\displaystyle a_{i}j} are real functions and f i {\displaystyle f_{i}} are fuzzy functions x n ′ ( t ) = ∑ i = 0 1 a i j x i . {\displaystyle x'_{n}(t)=\sum _{i=0}^{1}a_{ij}x_{i}.} == Fuzzy partial differential equations == A fuzzy differential equation with partial differential operator is ∇ x ( t ) = F ( t , x ( t ) , α ) , {\displaystyle \nabla x(t)=F(t,x(t),\alpha ),} for all α ∈ [ 0 , 1 ] {\displaystyle \alpha \in [0,1]} . == Fuzzy fractional differential equation == A fuzzy differential equation with fractional differential operator is d n x ( t ) d t n = F ( t , x ( t ) , α ) , {\displaystyle {\frac {d^{n}x(t)}{dt^{n}}}=F(t,x(t),\alpha ),} for all α ∈ [ 0 , 1 ] {\displaystyle \alpha \in [0,1]} where n {\displaystyle n} is a rational number.

    Read more →
  • Dynamic epistemic logic

    Dynamic epistemic logic

    Dynamic epistemic logic (DEL) is a logical framework dealing with knowledge and information change. Typically, DEL focuses on situations involving multiple agents and studies how their knowledge changes when events occur. These events can change factual properties of the actual world (they are called ontic events): for example a red card is painted in blue. They can also bring about changes of knowledge without changing factual properties of the world (they are called epistemic events): for example, a card is revealed publicly (or privately) to be red. Originally, DEL focused on epistemic events. Only some of the basic ideas are present in this entry of the original DEL framework; more details about DEL in general can be found in the references. Due to the nature of its object of study and its abstract approach, DEL is related and has applications to numerous research areas, such as computer science (artificial intelligence), philosophy (formal epistemology), economics (game theory) and cognitive science. In computer science, DEL is for example very much related to multi-agent systems, which are systems where multiple intelligent agents interact and exchange information. As a combination of dynamic logic and epistemic logic, dynamic epistemic logic is a young field of research. It really started in 1989 with Plaza's logic of public announcement. Independently, Gerbrandy and Groeneveld proposed a system dealing moreover with private announcement and that was inspired by the work of Veltman. Another system was proposed by van Ditmarsch whose main inspiration was the Cluedo game. But the most influential and original system was the system proposed by Baltag, Moss and Solecki. This system can deal with all the types of situations studied in the works above and its underlying methodology is conceptually grounded. This entry will present some of its basic ideas. Formally, DEL extends ordinary epistemic logic by the inclusion of event models to describe actions, and a product update operator that defines how epistemic models are updated as the consequence of executing actions described through event models. Epistemic logic will first be recalled. Then, actions and events will enter into the picture and we will introduce the DEL framework. == Epistemic logic == Epistemic logic is a modal logic dealing with the notions of knowledge and belief. As a logic, it is concerned with understanding the process of reasoning about knowledge and belief: which principles relating the notions of knowledge and belief are intuitively plausible? Like epistemology, it stems from the Greek word ϵ π ι σ τ η μ η {\displaystyle \epsilon \pi \iota \sigma \tau \eta \mu \eta } or ‘episteme’ meaning knowledge. Epistemology is nevertheless more concerned with analyzing the very nature and scope of knowledge, addressing questions such as “What is the definition of knowledge?” or “How is knowledge acquired?”. In fact, epistemic logic grew out of epistemology in the Middle Ages thanks to the efforts of Burley and Ockham. The formal work, based on modal logic, that inaugurated contemporary research into epistemic logic dates back only to 1962 and is due to Hintikka. It then sparked in the 1960s discussions about the principles of knowledge and belief and many axioms for these notions were proposed and discussed. For example, the interaction axioms K p → B p {\displaystyle Kp\rightarrow Bp} and B p → K B p {\displaystyle Bp\rightarrow KBp} are often considered to be intuitive principles: if an agent Knows p {\displaystyle p} then (s)he also Believes p {\displaystyle p} , or if an agent Believes p {\displaystyle p} , then (s)he Knows that (s)he Believes p {\displaystyle p} . More recently, these kinds of philosophical theories were taken up by researchers in economics, artificial intelligence and theoretical computer science where reasoning about knowledge is a central topic. Due to the new setting in which epistemic logic was used, new perspectives and new features such as computability issues were then added to the research agenda of epistemic logic. === Syntax === In the sequel, A G T S = { 1 , … , n } {\displaystyle AGTS=\{1,\ldots ,n\}} is a finite set whose elements are called agents and P R O P {\displaystyle PROP} is a set of propositional letters. The epistemic language is an extension of the basic multi-modal language of modal logic with a common knowledge operator C A {\displaystyle C_{A}} and a distributed knowledge operator D A {\displaystyle D_{A}} . Formally, the epistemic language L EL C {\displaystyle {\mathcal {L}}_{\textsf {EL}}^{C}} is defined inductively by the following grammar in BNF: L EL C : ϕ ::= p ∣ ¬ ϕ ∣ ( ϕ ∧ ϕ ) ∣ K j ϕ ∣ C A ϕ ∣ D A ϕ {\displaystyle {\mathcal {L}}_{\textsf {EL}}^{C}:\phi ~~::=~~p~\mid ~\neg \phi ~\mid ~(\phi \land \phi )~\mid ~K_{j}\phi ~\mid ~C_{A}\phi ~\mid ~D_{A}\phi } where p ∈ P R O P {\displaystyle p\in PROP} , j ∈ A G T S {\displaystyle j\in {AGTS}} and A ⊆ A G T S {\displaystyle A\subseteq {AGTS}} . The basic epistemic language L E L {\displaystyle {\mathcal {L}}_{EL}} is the language L E L C {\displaystyle {\mathcal {L}}_{EL}^{C}} without the common knowledge and distributed knowledge operators. The formula ⊥ {\displaystyle \bot } is an abbreviation for ¬ p ∧ p {\displaystyle \neg p\land p} (for a given p ∈ P R O P {\displaystyle p\in PROP} ), ⟨ K j ⟩ ϕ {\displaystyle \langle K_{j}\rangle \phi } is an abbreviation for ¬ K j ¬ ϕ {\displaystyle \neg K_{j}\neg \phi } , E A ϕ {\displaystyle E_{A}\phi } is an abbreviation for ⋀ j ∈ A K j ϕ {\displaystyle \bigwedge \limits _{j\in A}K_{j}\phi } and C ϕ {\displaystyle C\phi } an abbreviation for C A G T S ϕ {\displaystyle C_{AGTS}\phi } . Group notions: general, common and distributed knowledge. In a multi-agent setting there are three important epistemic concepts: general knowledge, distributed knowledge and common knowledge. The notion of common knowledge was first studied by Lewis in the context of conventions. It was then applied to distributed systems and to game theory, where it allows to express that the rationality of the players, the rules of the game and the set of players are commonly known. General knowledge. General knowledge of ϕ {\displaystyle \phi } means that everybody in the group of agents A G T S {\displaystyle {AGTS}} knows that ϕ {\displaystyle \phi } . Formally, this corresponds to the following formula: E ϕ := ⋀ j ∈ A G T S K j ϕ . {\displaystyle E\phi :={\underset {j\in {AGTS}}{\bigwedge }}K_{j}\phi .} Common knowledge. Common knowledge of ϕ {\displaystyle \phi } means that everybody knows ϕ {\displaystyle \phi } but also that everybody knows that everybody knows ϕ {\displaystyle \phi } , that everybody knows that everybody knows that everybody knows ϕ {\displaystyle \phi } , and so on ad infinitum. Formally, this corresponds to the following formula C ϕ := E ϕ ∧ E E ϕ ∧ E E E ϕ ∧ … {\displaystyle C\phi :=E\phi \land EE\phi \land EEE\phi \land \ldots } As we do not allow infinite conjunction the notion of common knowledge will have to be introduced as a primitive in our language. Before defining the language with this new operator, we are going to give an example introduced by Lewis that illustrates the difference between the notions of general knowledge and common knowledge. Lewis wanted to know what kind of knowledge is needed so that the statement p {\displaystyle p} : “every driver must drive on the right” be a convention among a group of agents. In other words, he wanted to know what kind of knowledge is needed so that everybody feels safe to drive on the right. Suppose there are only two agents i {\displaystyle i} and j {\displaystyle j} . Then everybody knowing p {\displaystyle p} (formally E p {\displaystyle Ep} ) is not enough. Indeed, it might still be possible that the agent i {\displaystyle i} considers possible that the agent j {\displaystyle j} does not know p {\displaystyle p} (formally ¬ K i K j p {\displaystyle \neg K_{i}K_{j}p} ). In that case the agent i {\displaystyle i} will not feel safe to drive on the right because he might consider that the agent j {\displaystyle j} , not knowing p {\displaystyle p} , could drive on the left. To avoid this problem, we could then assume that everybody knows that everybody knows that p {\displaystyle p} (formally E E p {\displaystyle EEp} ). This is again not enough to ensure that everybody feels safe to drive on the right. Indeed, it might still be possible that agent i {\displaystyle i} considers possible that agent j {\displaystyle j} considers possible that agent i {\displaystyle i} does not know p {\displaystyle p} (formally ¬ K i K j K i p {\displaystyle \neg K_{i}K_{j}K_{i}p} ). In that case and from i {\displaystyle i} ’s point of view, j {\displaystyle j} considers possible that i {\displaystyle i} , not knowing p {\displaystyle p} , will drive on the left. So from i {\displaystyle i} ’s point of view, j {\displaystyle j} might drive on the left as well (by the same argument as abov

    Read more →
  • Feeding the Machine (book)

    Feeding the Machine (book)

    Feeding the Machine: The Hidden Human Labour Powering AI is a 2024 book by James Muldoon, Mark Graham and Callum Cant. == Writing == The authors developed the concept for the book while doing fieldwork studying data annotation in developing countries in East Africa. == Synopsis == The book examines the human input needed to develop and sustain AI ecosystems. == Reception == The book received positive reviews. Rosalie Waelen of Capital & Class gave it a mostly positive review. Tim Hornyak of Literary Review praised it. Kirkus Reviews called it "A sobering and timely—if sometimes distracted—study of AI.". Publishers Weekly gave the book a starred review, writing that "The grim real-life stories read like dystopian parables, such as the account of a European voice actor whose recordings were legally used without her consent to create an inexpensive synthetic clone whom she now competes with for business. Driven by striking reporting and finely observed profiles, this unsettles."

    Read more →
  • Dartmouth workshop

    Dartmouth workshop

    The Dartmouth Summer Research Project on Artificial Intelligence was a 1956 summer workshop widely considered to be the founding event of artificial intelligence as a field. The workshop has been referred to as "the Constitutional Convention of AI". The project's four organizers, Claude Shannon, John McCarthy, Nathaniel Rochester and Marvin Minsky, are considered some of the "founding fathers" of AI. However it was not the first conference devoted to what would now be described as the question of artificial intelligence: it postdated meetings such as the 1951 Paris cybernetics conference and the Macy meetings. The project lasted approximately six to eight weeks and consisted largely of brainstorming sessions. Eleven mathematicians and scientists originally planned to attend; not all of them attended, but more than ten others came for short times. == Background == In the early 1950s, there were various names for the field of "thinking machines": cybernetics, automata theory, and complex information processing. The variety of names suggests the variety of conceptual orientations. In 1955, John McCarthy, then a young Assistant Professor of Mathematics at Dartmouth College, decided to organize a group to clarify and develop ideas about thinking machines. He picked the name 'Artificial Intelligence' for the new field. He chose the name partly for its neutrality; avoiding a focus on narrow automata theory, and avoiding cybernetics which was heavily focused on analog feedback, as well as him potentially having to accept the assertive Norbert Wiener as guru or having to argue with him. In early 1955, McCarthy approached the Rockefeller Foundation to request funding for a summer seminar at Dartmouth for about 10 participants. In June, he and Claude Shannon, a founder of information theory then at Bell Labs, met with Robert Morison, Director of Biological and Medical Research to discuss the idea and possible funding, though Morison was unsure whether money would be made available for such a visionary project. On September 2, 1955, the project was formally proposed by McCarthy, Marvin Minsky, Nathaniel Rochester and Claude Shannon. The proposal is credited with introducing the term 'artificial intelligence'. The Proposal states: We propose that a 2-month, 10-man study of artificial intelligence be carried out during the summer of 1956 at Dartmouth College in Hanover, New Hampshire. The study is to proceed on the basis of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it. An attempt will be made to find how to make machines use language, form abstractions and concepts, solve kinds of problems now reserved for humans, and improve themselves. We think that a significant advance can be made in one or more of these problems if a carefully selected group of scientists work on it together for a summer. The proposal goes on to discuss computers, natural language processing, neural networks, theory of computation, abstraction and creativity (these areas within the field of artificial intelligence are considered still relevant to the work of the field). On May 26, 1956, McCarthy notified Robert Morison of the planned 11 attendees: For the full period: 1) Dr. Marvin Minsky 2) Dr. Julian Bigelow 3) Professor D.M. Mackay 4) Mr. Ray Solomonoff 5) Mr. John Holland 6) Dr. John McCarthy For four weeks: 7) Dr. Claude Shannon 8) Mr. Nathaniel Rochester 9) Mr. Oliver Selfridge For the first two weeks: 10) Dr. Allen Newell 11) Professor Herbert Simon He noted, "we will concentrate on a problem of devising a way of programming a calculator to form concepts and to form generalizations. This of course is subject to change when the group gets together." The actual participants came at different times, mostly for much shorter times. Trenchard More replaced Rochester for three weeks and MacKay and Holland did not attend—but the project was set to begin. Around June 18, 1956, the earliest participants (perhaps only Ray Solomonoff, maybe with Tom Etter) arrived at the Dartmouth campus in Hanover, N.H., to join John McCarthy who already had an apartment there. Solomonoff and Minsky stayed at Professors' apartments, but most would stay at the Hanover Inn. == Dates == The Dartmouth Workshop is usually said to have run for six weeks. Ray Solomonoff's notes taken during the workshop, however, indicate that it ran for roughly eight weeks, from about June 18 to August 17. Solomonoff's notes start on June 22; June 28 mentions Minsky, June 30 mentions Hanover, N.H., July 1 mentions Tom Etter. On August 17, Solomonoff gave a final talk. == Participants == Initially, McCarthy lost his list of attendees. Instead, after the workshop, McCarthy sent Solomonoff a preliminary list of participants and visitors plus those interested in the subject. 47 people were listed. Solomonoff, however, made a list of participants in his notes of the summer project: Ray Solomonoff Marvin Minsky John McCarthy Claude Shannon Trenchard More Nat Rochester Oliver Selfridge Julian Bigelow W. Ross Ashby W.S. McCulloch Abraham Robinson Tom Etter John Nash David Sayre Arthur Samuel Kenneth R. Shoulders Shoulders' friend Alex Bernstein Herbert Simon Allen Newell Shannon attended Solomonoff's talk on July 10 and Bigelow gave a talk on August 15. Solomonoff doesn't mention Bernard Widrow, but in 1994 Widrow said that he and an unidentified colleague from the same lab in MIT had attended for one week. In the same interview Widrow recalled that "I think [Wesley] Clark and [Belmont] Farley were there from Lincoln Lab." Trenchard mentions R. Culver and Solomonoff mentions Bill Shutz. Herb Gelernter didn't attend, but was influenced later by what Rochester learned. In an article in IEEE Spectrum, Grace Solomonoff additionally identifies Peter Milner in a photo taken by Nathaniel Rochester in front of Dartmouth Hall. Ray Solomonoff, Marvin Minsky, and John McCarthy were the only three who stayed for the full time. Trenchard took attendance during two weeks of his three-week visit. From three to about eight people would attend the daily sessions. == Event and aftermath == They had the entire top floor of the Dartmouth Math Department to themselves, and most weekdays they would meet at the main math classroom where someone might lead a discussion focusing on his ideas, or more frequently, a general discussion would be held. It was not a directed group research project; discussions covered many topics, but several directions are considered to have been initiated or encouraged by the Workshop: the rise of symbolic methods, systems focused on limited domains (early expert systems), and deductive systems versus inductive systems. One participant, Arthur Samuel, said, "It was very interesting, very stimulating, very exciting". Ray Solomonoff kept notes giving his impression of the talks and the ideas from various discussions. === McCarthy's 1956 AI distribution list === This is the list in the "People Interested in the Artificial Intelligence Problem" document which McCarthy produced in 1956, partly in lieu of a list of attendees at the Dartmouth workshop. According to McCarthy the list was "being sent to the people on the list and a few others", and its purpose was "to let those on it know who is interested in receiving documents on the problem" of artificial intelligence. McCarthy also promised to deliver them a report on the Dartmouth conference, and to send an updated list soon afterwards. It includes people who did not attend the conference and does not include everyone who did attend it.

    Read more →
  • Murderbot (TV series)

    Murderbot (TV series)

    Murderbot is an American science fiction action comedy television series created by Paul Weitz and Chris Weitz for Apple TV+. It is based on All Systems Red, the first book of the series The Murderbot Diaries by Martha Wells, who serves as a consulting producer. The series stars Alexander Skarsgård as the titular character. The first season premiered on May 16, 2025 and received positive reviews. In July 2025, the series was renewed for a second season. == Premise == A media-obsessed private security construct (manufactured from cloned human tissue and mechanical parts) calling itself Murderbot must hide its newly acquired autonomy while completing dangerous assignments and being simultaneously drawn to humans, and appalled by their weakness. == Cast and characters == === Main === Alexander Skarsgård as Murderbot Noma Dumezweni as Ayda Mensah, a terraforming specialist, the President of Preservation Alliance and the leader of the science team protected by Murderbot David Dastmalchian as Gurathin, a tech expert and augmented human Sabrina Wu as Pin-Lee, a scientist and legal counsel to the team Akshay Khanna as Ratthi, a wormhole expert Tamara Podemski as Bharadwaj, a geochemist Tattiawna Jones as Arada, a biologist === Recurring === Cast of show-within-a-show The Rise and Fall of Sanctuary Moon John Cho as Eknie Jef Chem (playing Captain Hossein) Jack McBrayer as Breiller MocJac (playing Navigation Officer Hordööp-Sklanch) Clark Gregg as Arletty (playing Lieutenant Kullervv) DeWanda Wise as Pordron Bretney III Roche (playing NawBot 337 Alt 66) === Guest === Anna Konkle as Leebeebee, a member of another survey team on the planet. The character does not appear in the novella. Amanda Brugel as GrayCris Blue Leader David Reale as GrayCris Yellow == Episodes == == Production == The book series was optioned in the late 2010s, and its film adaptation was considered. In 2021, book series author Martha Wells said that a potential TV series adaptation was in development and that she had read the script and was "really excited about it". The series was green lit by Apple TV+ in 2022, with Wells serving as a consulting producer. The production design team, led by Sue Chan, started work in the autumn. Tommy Arnold, the Murderbot Diaries special edition illustrator, created the concept art for the show. After the casting was delayed by the 2023 SAG-AFTRA strike, in December 2023 it was announced that Alexander Skarsgård would produce and star in the series. He developed the character and the world of Murderbot with the showrunners. In February 2024, David Dastmalchian and Noma Dumezweni joined the cast. In March, Sabrina Wu, Tattiawna Jones, Akshay Khanna, and Tamara Podemski joined the cast. On July 10, 2025, the series was renewed for a second season. Showrunners Chris and Paul Weitz suggested the second season would combine the next three books of the series and will have longer episodes. === Filming === Principal photography for the first season took place from March–June 2024, in Toronto and parts of Ontario, Canada. Most of the filming was done on location, with the Sanctuary Moon scenes filmed on a virtual production stage. Principal photography for the second season began in mid-2026, in Madrid, Spain. It is planned to last 71 days, with Martha Wells also visiting the set. == Release == The first two episodes of Murderbot premiered on Apple TV+ on May 16, 2025, with subsequent episodes released weekly. The first season consists of ten episodes. == Reception == Even before the release of the show, numerous media sources had commented on the titular character as being coded as autistic and agender. On the review aggregator website Rotten Tomatoes, Murderbot has an approval rating of 96% with an average score of 7.5/10, based on 76 critics' reviews. The website's critical consensus states, "Alexander Skarsgård's superbly dry wit brings a lot of heart to Murderbot, making for a refreshingly jaunty sci-fi saga about finally coming out of one's shell". Metacritic, which uses a weighted average, assigned a score of 70 out of 100, based on 28 critics, indicating "generally favorable" reviews. Some reviewers have criticized Murderbot's changes to Wells' original books. Angela Watercutter of Wired noted that the series has significant tonal differences from the books and noted the show's changes to characters, particularly Murderbot and Dr. Mensah, and Wells' social commentary. === Accolades === Murderbot was a finalist for the 2025 Dragon Award for Best Science Fiction or Fantasy TV Series. Tommy Arnold won the 2025 Concept Art Association Award in the category of Live-Action Series Character Art for his work on Murderbot. Alexander Skarsgård was nominated for a Critics' Choice Award for Best Actor in a Comedy Series. Carrie Grace and Laura Jean Shannon were nominated for a Costume Designers Guild Award in the category of Excellence in Sci-Fi/Fantasy Television for their work on FreeCommerce. Amanda Jones was nominated for a Composers & Lyricists Award for Outstanding Original Title Sequence for a Television Production.

    Read more →
  • Free boundary condition

    Free boundary condition

    In image processing, the free boundary condition is the convention used when applying a convolution kernel to a digital image in which pixel locations that lie outside the image boundaries are interpreted as having a value of zero.[1] The question of what value to assign out-of-bounds pixels may arise, for instance, when applying a 3×3 kernel to the corner pixel in an image.

    Read more →
  • The Life and Times of Multivac

    The Life and Times of Multivac

    "The Life and Times of Multivac" is a science fiction short story by American writer Isaac Asimov. The story first appeared in the 5 January 1975 issue of The New York Times Magazine, and was reprinted in the collections The Bicentennial Man and Other Stories and The Best of Creative Computing in 1976. It is one of a loosely connected series of stories concerning a fictional supercomputer called Multivac. "The Life and Times of Multivac" was the first piece of fiction ever commissioned and published by The New York Times. Asimov's original title for the story was "Mathematical Games", but after the story appeared under the new title he decided he liked it. In his commentary on the story in The Bicentennial Man and Other Stories collection, Asimov stated, "More people came up to me over the next few weeks to tell me they had read that story than had ever been the case for any other story I had ever written." == Plot summary == When humanity begins to chafe under Multivac’s benevolent tyranny, one man takes matters into his own hands to destroy the great computer. By appearing to betray his fellow humans, he places himself in a position to permanently destroy Multivac. It is implied that it is not until completion of the act that he and his peers suddenly realize the enormity of their actions and the consequences it will have on humanity.

    Read more →
  • Diagnosis (artificial intelligence)

    Diagnosis (artificial intelligence)

    As a subfield in artificial intelligence, diagnosis is concerned with the development of algorithms and techniques that are able to determine whether the behaviour of a system is correct. If the system is not functioning correctly, the algorithm should be able to determine, as accurately as possible, which part of the system is failing, and which kind of fault it is facing. The computation is based on observations, which provide information on the current behaviour. The expression diagnosis also refers to the answer of the question of whether the system is malfunctioning or not, and to the process of computing the answer. This word comes from the medical context where a diagnosis is the process of identifying a disease by its symptoms. == Example == An example of diagnosis is the process of a garage mechanic with an automobile. The mechanic will first try to detect any abnormal behavior based on the observations on the car and his knowledge of this type of vehicle. If he finds out that the behavior is abnormal, the mechanic will try to refine his diagnosis by using new observations and possibly testing the system, until he discovers the faulty component; the mechanic plays an important role in the vehicle diagnosis. == Expert diagnosis == The expert diagnosis (or diagnosis by expert system) is based on experience with the system. Using this experience, a mapping is built that efficiently associates the observations to the corresponding diagnoses. The experience can be provided: By a human operator. In this case, the human knowledge must be translated into a computer language. By examples of the system behaviour. In this case, the examples must be classified as correct or faulty (and, in the latter case, by the type of fault). Machine learning methods are then used to generalize from the examples. The main drawbacks of these methods are: The difficulty acquiring the expertise. The expertise is typically only available after a long period of use of the system (or similar systems). Thus, these methods are unsuitable for safety- or mission-critical systems (such as a nuclear power plant, or a robot operating in space). Moreover, the acquired expert knowledge can never be guaranteed to be complete. In case a previously unseen behaviour occurs, leading to an unexpected observation, it is impossible to give a diagnosis. The complexity of the learning. The off-line process of building an expert system can require a large amount of time and computer memory. The size of the final expert system. As the expert system aims to map any observation to a diagnosis, it will in some cases require a huge amount of storage space. The lack of robustness. If even a small modification is made on the system, the process of constructing the expert system must be repeated. A slightly different approach is to build an expert system from a model of the system rather than directly from an expertise. An example is the computation of a diagnoser for the diagnosis of discrete event systems. This approach can be seen as model-based, but it benefits from some advantages and suffers some drawbacks of the expert system approach. == Model-based diagnosis == Model-based diagnosis is an example of abductive reasoning using a model of the system. In general, it works as follows: We have a model that describes the behaviour of the system (or artefact). The model is an abstraction of the behaviour of the system and can be incomplete. In particular, the faulty behaviour is generally little-known, and the faulty model may thus not be represented. Given observations of the system, the diagnosis system simulates the system using the model, and compares the observations actually made to the observations predicted by the simulation. The modelling can be simplified by the following rules (where A b {\displaystyle Ab\,} is the Abnormal predicate): ¬ A b ( S ) ⇒ I n t 1 ∧ O b s 1 {\displaystyle \neg Ab(S)\Rightarrow Int1\wedge Obs1} A b ( S ) ⇒ I n t 2 ∧ O b s 2 {\displaystyle Ab(S)\Rightarrow Int2\wedge Obs2} (fault model) The semantics of these formulae is the following: if the behaviour of the system is not abnormal (i.e. if it is normal), then the internal (unobservable) behaviour will be I n t 1 {\displaystyle Int1\,} and the observable behaviour O b s 1 {\displaystyle Obs1\,} . Otherwise, the internal behaviour will be I n t 2 {\displaystyle Int2\,} and the observable behaviour O b s 2 {\displaystyle Obs2\,} . Given the observations O b s {\displaystyle Obs\,} , the problem is to determine whether the system behaviour is normal or not ( ¬ A b ( S ) {\displaystyle \neg Ab(S)\,} or A b ( S ) {\displaystyle Ab(S)\,} ). This is an example of abductive reasoning. == Diagnosability == A system is said to be diagnosable if whatever the behavior of the system, we will be able to determine without ambiguity a unique diagnosis. The problem of diagnosability is very important when designing a system because on one hand one may want to reduce the number of sensors to reduce the cost, and on the other hand one may want to increase the number of sensors to increase the probability of detecting a faulty behavior. Several algorithms for dealing with these problems exist. One class of algorithms answers the question whether a system is diagnosable; another class looks for sets of sensors that make the system diagnosable, and optionally comply to criteria such as cost optimization. The diagnosability of a system is generally computed from the model of the system. In applications using model-based diagnosis, such a model is already present and doesn't need to be built from scratch.

    Read more →