Comet (programming)

Comet (programming)

Comet is a web application model in which a long-held HTTPS request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term, encompassing multiple techniques for achieving this interaction. All these methods rely on features included by default in browsers, such as JavaScript, rather than on non-default plugins. The Comet approach differs from the original model of the web, in which a browser requests a complete web page at a time. The use of Comet techniques in web development predates the use of the word Comet as a neologism for the collective techniques. Comet is known by several other names, including Ajax Push, Reverse Ajax, Two-way-web, HTTP Streaming, and HTTP server push among others. The term Comet is not an acronym, but was coined by Alex Russell in his 2006 blog post. In recent years, the standardisation and widespread support of WebSocket and Server-sent events has rendered the Comet model obsolete. == History == === Early Java applets === The ability to embed Java applets into browsers (starting with Netscape Navigator 2.0 in March 1996) made two-way sustained communications possible, using a raw TCP socket to communicate between the browser and the server. This socket can remain open as long as the browser is at the document hosting the applet. Event notifications can be sent in any format – text or binary – and decoded by the applet. === The first browser-to-browser communication framework === The very first application using browser-to-browser communications was Tango Interactive, implemented in 1996–98 at the Northeast Parallel Architectures Center (NPAC) at Syracuse University using DARPA funding. TANGO architecture has been patented by Syracuse University. TANGO framework has been extensively used as a distance education tool. The framework has been commercialized by CollabWorx and used in a dozen or so Command&Control and Training applications in the United States Department of Defense. === First Comet applications === The first set of Comet implementations dates back to 2000, with the Pushlets, Lightstreamer, and KnowNow projects. Pushlets, a framework created by Just van den Broecke, was one of the first open source implementations. Pushlets were based on server-side Java servlets, and a client-side JavaScript library. Bang Networks – a Silicon Valley start-up backed by Netscape co-founder Marc Andreessen – had a lavishly financed attempt to create a real-time push standard for the entire web. In April 2001, Chip Morningstar began developing a Java-based (J2SE) web server which used two HTTP sockets to keep open two communications channels between the custom HTTP server he designed and a client designed by Douglas Crockford; a functioning demo system existed as of June 2001. The server and client used a messaging format that the founders of State Software, Inc. assented to coin as JSON following Crockford's suggestion. The entire system, the client libraries, the messaging format known as JSON and the server, became the State Application Framework, parts of which were sold and used by Sun Microsystems, Amazon.com, EDS and Volkswagen. In March 2006, software engineer Alex Russell coined the term Comet in a post on his personal blog. The new term was a play on Ajax (Ajax and Comet both being common household cleaners in the USA). In 2006, some applications exposed those techniques to a wider audience: Meebo’s multi-protocol web-based chat application enabled users to connect to AOL, Yahoo, and Microsoft chat platforms through the browser; Google added web-based chat to Gmail; JotSpot, a startup since acquired by Google, built Comet-based real-time collaborative document editing. New Comet variants were created, such as the Java-based ICEfaces JSF framework (although they prefer the term "Ajax Push"). Others that had previously used Java-applet based transports switched instead to pure-JavaScript implementations. == Implementations == Comet applications attempt to eliminate the limitations of the page-by-page web model and traditional polling by offering two-way sustained interaction, using a persistent or long-lasting HTTP connection between the server and the client. Since browsers and proxies are not designed with server events in mind, several techniques to achieve this have been developed, each with different benefits and drawbacks. The biggest hurdle is the HTTP 1.1 specification, which states "this specification... encourages clients to be conservative when opening multiple connections". Therefore, holding one connection open for real-time events has a negative impact on browser usability: the browser may be blocked from sending a new request while waiting for the results of a previous request, e.g., a series of images. This can be worked around by creating a distinct hostname for real-time information, which is an alias for the same physical server. This strategy is an application of domain sharding. Specific methods of implementing Comet fall into two major categories: streaming and long polling. === Streaming === An application using streaming Comet opens a single persistent connection from the client browser to the server for all Comet events. These events are incrementally handled and interpreted on the client side every time the server sends a new event, with neither side closing the connection. Specific techniques for accomplishing streaming Comet include the following: ==== Hidden iframe ==== A basic technique for dynamic web application is to use a hidden iframe HTML element (an inline frame, which allows a website to embed one HTML document inside another). This invisible iframe is sent as a chunked block, which implicitly declares it as infinitely long (sometimes called "forever frame"). As events occur, the iframe is gradually filled with script tags, containing JavaScript to be executed in the browser. Because browsers render HTML pages incrementally, each script tag is executed as it is received. Some browsers require a specific minimum document size before parsing and execution is started, which can be obtained by initially sending 1–2 kB of padding spaces. One benefit of the iframes method is that it works in every common browser. Two downsides of this technique are the lack of a reliable error handling method, and the impossibility of tracking the state of the request calling process. ==== XMLHttpRequest ==== The XMLHttpRequest (XHR) object, a tool used by Ajax applications for browser–server communication, can also be pressed into service for server–browser Comet messaging by generating a custom data format for an XHR response, and parsing out each event using browser-side JavaScript; relying only on the browser firing the onreadystatechange callback each time it receives new data. === Ajax with long polling === None of the above streaming transports work across all modern browsers without negative side-effects. This forces Comet developers to implement several complex streaming transports, switching between them depending on the browser. Consequently, many Comet applications use long polling, which is easier to implement on the browser side, and works, at minimum, in every browser that supports XHR. As the name suggests, long polling requires the client to poll the server for an event (or set of events). The browser makes an Ajax-style request to the server, which is kept open until the server has new data to send to the browser, which is sent to the browser in a complete response. The browser initiates a new long polling request in order to obtain subsequent events. IETF RFC 6202 "Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP" compares long polling and HTTP streaming. Specific technologies for accomplishing long-polling include the following: ==== XMLHttpRequest long polling ==== For the most part, XMLHttpRequest long polling works like any standard use of XHR. The browser makes an asynchronous request of the server, which may wait for data to be available before responding. The response can contain encoded data (typically XML or JSON) or Javascript to be executed by the client. At the end of the processing of the response, the browser creates and sends another XHR, to await the next event. Thus the browser always keeps a request outstanding with the server, to be answered as each event occurs. ==== Script tag long polling ==== While any Comet transport can be made to work across subdomains, none of the above transports can be used across different second-level domains (SLDs), due to browser security policies designed to prevent cross-site scripting attacks. That is, if the main web page is served from one SLD, and the Comet server is located at another SLD (which does not have cross-origin resource sharing enabled), Comet events cannot be used to modify the HTML and DOM of the main page, using those transports. This problem can be sidestepped by creating a proxy server in

Fantavision

Fantavision is an animation program by Scott Anderson for the Apple II and published by Broderbund in 1985. Versions were released for the Apple IIGS (1987), Amiga (1988), and MS-DOS (1988). Fantavision allows the creation of vector graphics animations using the mouse and keyboard. The user creates frames, and the software generates the frames between them. Because this is done in real-time, it allows for creative exploration and quick changes. The program uses a graphical user interface in the style of the Macintosh with pull-down menus and black text on a white background. Advertisements claimed Fantavision a revolutionary breakthrough that brings the animation features of "tweening" and "transforming" to home computers. == Reception == Compute! in 1989 called Fantavision the best animation program for the IBM PC, although it noted the inability to draw curves. == Reviews == Games #70

Seeing AI

Seeing AI is an artificial intelligence application developed by Microsoft for iOS. Seeing AI uses the device camera to identify people and objects, and then the app audibly describes those objects for visually impaired people. == Capabilities == Seeing AI is primarily used to describe short text, documents, products, people, currency scenery, colors, handwriting and light. The app can scan a barcode to describe a product and uses sounds to assist the user in focusing on the barcode. When the app describes people, it attempts to estimate the person's age, gender, and emotional status. Additionally, in a test run by German journalists in December 2019, Seeing AI apparently used some sort of facial recognition system to identify people on photographs by name. Some functions are performed on the device, however more complex functions such as describing a scene or recognizing handwriting require an Internet connection. In December 2017, Seeing AI introduced the ability for currency recognition for US and Canadian dollar, British pounds and Euros. In December 2019, Seeing AI added support for five more languages, Dutch, French, German, Japanese, Spanish. Seeing AI is available in 70 countries such as Brazil, Argentina, Australia, Canada, Egypt, Albania, Bhutan, etc. Supported on iPhone 5C, 5S and later best performance with iPhone 6S, SE and later models

Semantic data model

A semantic data model (SDM) is a high-level semantics-based database description and structuring formalism (database model) for databases. This database model is designed to capture more of the meaning of an application environment than is possible with contemporary database models. An SDM specification describes a database in terms of the kinds of entities that exist in the application environment, the classifications and groupings of those entities, and the structural interconnections among them. SDM provides a collection of high-level modeling primitives to capture the semantics of an application environment. By accommodating derived information in a database structural specification, SDM allows the same information to be viewed in several ways; this makes it possible to directly accommodate the variety of needs and processing requirements typically present in database applications. The design of the present SDM is based on our experience in using a preliminary version of it. SDM is designed to enhance the effectiveness and usability of database systems. An SDM database description can serve as a formal specification and documentation tool for a database; it can provide a basis for supporting a variety of powerful user interface facilities, it can serve as a conceptual database model in the database design process; and, it can be used as the database model for a new kind of database management system. == In software engineering == A semantic data model in software engineering has various meanings: It is a conceptual data model in which semantic information is included. This means that the model describes the meaning of its instances. Such a semantic data model is an abstraction that defines how the stored symbols (the instance data) relate to the real world. It is a conceptual data model that includes the capability to express and exchange information which enables parties to interpret meaning (semantics) from the instances, without the need to know the meta-model. Such semantic models are fact-oriented (as opposed to object-oriented). Facts are typically expressed by binary relations between data elements, whereas higher order relations are expressed as collections of binary relations. Typically binary relations have the form of triples: Object-RelationType-Object. For example: the Eiffel Tower Paris. Typically the instance data of semantic data models explicitly include the kinds of relationships between the various data elements, such as . To interpret the meaning of the facts from the instances, it is required that the meaning of the kinds of relations (relation types) be known. Therefore, semantic data models typically standardize such relation types. This means that the second kind of semantic data models enables that the instances express facts that include their own meanings. The second kind of semantic data models are usually meant to create semantic databases. The ability to include meaning in semantic databases facilitates building distributed databases that enable applications to interpret the meaning from the content. This implies that semantic databases can be integrated when they use the same (standard) relation types. This also implies that in general they have a wider applicability than relational or object-oriented databases. == Overview == The logical data structure of a database management system (DBMS), whether hierarchical, network, or relational, cannot totally satisfy the requirements for a conceptual definition of data, because it is limited in scope and biased toward the implementation strategy employed by the DBMS. Therefore, the need to define data from a conceptual view has led to the development of semantic data modeling techniques. That is, techniques to define the meaning of data within the context of its interrelationships with other data, as illustrated in the figure. The real world, in terms of resources, ideas, events, etc., are symbolically defined within physical data stores. A semantic data model is an abstraction which defines how the stored symbols relate to the real world. Thus, the model must be a true representation of the real world. According to Klas and Schrefl (1995), the "overall goal of semantic data models is to capture more meaning of data by integrating relational concepts with more powerful abstraction concepts known from the Artificial Intelligence field. The idea is to provide high level modeling primitives as an integral part of a data model in order to facilitate the representation of real world situations". == History == The need for semantic data models was first recognized by the U.S. Air Force in the mid-1970s as a result of the Integrated Computer-Aided Manufacturing (ICAM) Program. The objective of this program was to increase manufacturing productivity through the systematic application of computer technology. The ICAM Program identified a need for better analysis and communication techniques for people involved in improving manufacturing productivity. As a result, the ICAM Program developed a series of techniques known as the IDEF (ICAM Definition) Methods which included the following: IDEF0 used to produce a “function model” which is a structured representation of the activities or processes within the environment or system. IDEF1 used to produce an “information model” which represents the structure and semantics of information within the environment or system. IDEF1X a semantic data modeling technique used to produce a graphical information model which represents the structure and semantics of information within an environment or system. Use of this standard permits the construction of semantic data models which may serve to support the management of data as a resource, the integration of information systems, and the building of computer databases. IDEF2 used to produce a “dynamics model” which represents the time varying behavioral characteristics of the environment or system. During the 1990s, the application of semantic modelling techniques resulted in the semantic data models of the second kind. An example of such is the semantic data model that is standardised as ISO 15926-2 (2002), which is further developed into the semantic modelling language Gellish (2005). The definition of the Gellish language is documented in the form of a semantic data model. Gellish itself is a semantic modelling language, that can be used to create other semantic models. Those semantic models can be stored in Gellish Databases, being semantic databases. == Applications == A semantic data model can be used to serve many purposes. Some key objectives include: Planning of data resources: A preliminary data model can be used to provide an overall view of the data required to run an enterprise. The model can then be analyzed to identify and scope projects to build shared data resources. Building of shareable databases: A fully developed model can be used to define an application independent view of data which can be validated by users and then transformed into a physical database design for any of the various DBMS technologies. In addition to generating databases which are consistent and shareable, development costs can be drastically reduced through data modeling. Evaluation of vendor software: Since a data model actually represents the infrastructure of an organization, vendor software can be evaluated against a company’s data model in order to identify possible inconsistencies between the infrastructure implied by the software and the way the company actually does business. Integration of existing databases: By defining the contents of existing databases with semantic data models, an integrated data definition can be derived. With the proper technology, the resulting conceptual schema can be used to control transaction processing in a distributed database environment. The U.S. Air Force Integrated Information Support System (I2S2) is an experimental development and demonstration of this kind of technology, applied to a heterogeneous type of DBMS environments.

Luciano Floridi

Luciano Floridi (Italian: [luˈtʃaːno ˈflɔːridi]; born 16 November 1964) is an Italian and British philosopher. He is John K. Castle Professor in the Practice of Cognitive Science and Founding Director of the Digital Ethics Center at Yale University. He is also a Professor of Sociology of Culture and Communication at the University of Bologna, Department of Legal Studies, where he is the director of the Centre for Digital Ethics. Furthermore, he is adjunct professor ("distinguished scholar in residence") at the Department of Economics, American University, Washington D.C. He is married to the neuroscientist Anna Christina Nobre. Floridi is best known for his work on two areas of philosophical research: the philosophy of information, and information ethics (also known as digital ethics or computer ethics), for which he received many awards, including the Knight of the Grand Cross of the Order of Merit, Italy's most prestigious honor. According to Scopus, Floridi was the most cited living philosopher in the world in 2020. Between 2008 and 2013, he held the research chair in philosophy of information and the UNESCO Chair in Information and Computer Ethics at the University of Hertfordshire. He was the founder and director of the IEG, an interdepartmental research group on the philosophy of information at the University of Oxford, and of the GPI the research Group in Philosophy of Information at the University of Hertfordshire. He was the founder and director of the SWIF, the Italian e-journal of philosophy (1995–2008). He is a former Governing Body Fellow of St Cross College, Oxford. == Early life and education == Floridi was born in Rome in 1964, and studied at Rome University La Sapienza (laurea, first class with distinction, 1988), where he was originally educated as a historian of philosophy. He soon became interested in analytic philosophy and wrote his tesi di laurea (roughly equivalent to an M.A. thesis) in philosophy of logic, on Michael Dummett's anti-realism. He obtained his Master of Philosophy (1989) and PhD degree (1990) from the University of Warwick, working in epistemology and philosophy of logic with Susan Haack (who was his PhD supervisor) and Michael Dummett. Floridi's early student years are partly recounted in the non-fiction book The Lost Painting: The Quest for a Caravaggio Masterpiece, where he is "Luciano". During his graduate and postdoctoral years, he covered the standard topics in analytic philosophy in search of a new methodology. He sought to approach contemporary problems from a heuristically powerful and intellectually enriching perspective when dealing with lively philosophical issues. During his graduate studies, he began to distance himself from classical analytic philosophy. In his view, the analytic movement had lost its way. For this reason, he worked on pragmatism (especially Peirce) and foundationalist issues in epistemology and philosophy of logic, as well as the history of skepticism. == Academic career and previous positions == Floridi started his academic career as a lecturer in philosophy at the University of Warwick in 1990–1991. He joined the Faculty of Philosophy of the University of Oxford in 1990 and the OUCL (Oxford's Department of Computer Science) in 1999. He was junior research fellow (JRF) in philosophy at Wolfson College, Oxford University (1990–1994), a Frances Yates Fellow in the History of Ideas at the Warburg Institute, University of London (1994–1995) and Research Fellow in philosophy at Wolfson College, Oxford University (1994–2001). During these years in Oxford, he held lectureships in different Colleges. Between 1994 and 1996, he also held a post-doctoral research scholarship at the Department of Philosophy, University of Turin. Between 2001 and 2006, he was Markle Foundation Senior Research Fellow in Information Policy at the Programme in Comparative Media Law and Policy, Oxford University. Between 2002 and 2008, he was associate professor of logic at the Università degli Studi di Bari. In 2006, he became Fellow by Special Election of St Cross College, Oxford University, where he played for the squash team. In 2008, he was appointed full professor of philosophy at the University of Hertfordshire, to hold the newly established research chair in philosophy of information and, in 2009, the UNESCO Chair in Information and Computer Ethics, a position which he held until 2013, when he moved back to Oxford. In 2017, Floridi became a fellow of the Alan Turing Institute and the chair of its Data Ethics Group, holding these positions until 2021 and 2020, respectively. Since 2010 he has been editor-in-chief of Philosophy & Technology (Springer). In January 2023, Floridi announced he would move to Yale at the beginning of the academic year 2023–2024, to take over the position of founding director of the Yale Digital Ethics Center. == Philosophical views == One of Floridi's key contributions is his formulation of the 'Philosophy of Information' (PoI). The PoI provides a framework for understanding the nature of information and its role in the world. According to Floridi, information is a vital resource that shapes our knowledge and understanding of the world. It is not simply a neutral representation of reality but a part of the world, with its own properties, effects, and moral implications. Floridi's PoI has several key components including an 'ontology of information', which defines the nature of information, an 'ethics of information', which provides a framework for evaluating the moral implications of information and information technologies, an 'epistemology of information', that analyses the role of information in the development of knowledge and science, and a 'logic of information', the concentrates on the more formal aspects. The PoI also includes a theory of the 'information environment', the infosphere, which encompasses the physical, social, and cultural contexts in which information is produced, used, and communicated. == Recognitions and awards == 2022 - Knight of the Grand Cross - First Class of the Order of Merit (Cavaliere di Gran Croce Ordine al Merito della Repubblica Italiana, the highest honor in the Italian Republic), awarded through a special decree by the president of the Italian Republic Sergio Mattarella for his work on the philosophy and ethics of information. 2022 - Fellow of the Accademia delle Scienze dell'Istituto di Bologna 2021 - Honorary Doctorate (Laurea honoris causa) in Informatics, University of Skövde, Sweden, for "his groundbreaking work on the philosophy of information". 2020 - Premio Udine Filosofia, Mimesis Festival, for The Logic of Information (OUP, 2019) 2020 - Premio Socrate, Cesare Landa Foundation, for philosophical communication 2019 - CogX Award, for "outstanding achievement in ethics of AI" 2019 - Gilbert Ryle Lectures, Trent University 2019 - Premio Aretè "Maestro della Responsabilità", Nuvolaverde, Confindustria, Gruppo 24 Ore Salone della CSR e dell'innovazione sociale, for ethics of communication 2018 - Thinker Award, IBM, for AI Ethics 2018 - Premio Conoscenza, Conferenza dei Rettori delle Università Italiane (CRUI, equivalent of Universities UK), for achievements in research and communication about digital ethics 2017 - Fellow of the Academy of Social Sciences 2016 - J. Ong Award, Media Ecology Association, for The Fourth Revolution (OUP, 2016) 2016 - Copernicus Scientist Award, Institute for Advanced Studies of the University of Ferrara, in recognition of research in the ethics and philosophy of information 2015 - Fernand Braudel Senior Fellow, European University Institute 2014-15 - Cátedras de Excelencia, University Carlos III of Madrid, for research in philosophy and ethics of information 2013 - Member of the Académie Internationale de Philosophie des Sciences 2013 - Fellow of the British Computer Society 2013 - Weizenbaum Award, International Society for Ethics and Information Technology, for "very significant contribution to the field of information and computer ethics, through his research, service, and vision" 2012 - Covey Award, International Association for Computing and Philosophy, for "outstanding research in computing and philosophy" 2011-12 - Fellow, Center for Information Policy Research, University of Wisconsin–Milwaukee 2011 - Honorary Doctorate (Laurea honoris causa) in philosophy, University of Suceava, Romania, for "his leading research in the philosophy and ethics of information" 2011 - Fellow, World Technology Network, NY, in the category "ethics and technology" 2010 - Vice Chancellor Research Award, University of Hertfordshire 2009 - Fellow of the Society for the Study of Artificial Intelligence and the Simulation of Behaviour (AIBS) 2009-10 - Gauss Professor of the Akademie der Wissenschaften, Göttingen, in recognition of research in the philosophy of information (first philosopher to receive the award, generally given to mathematicians or physicists) 2009 - Barwise Prize, American Philosophical Asso

Perceptual robotics

Perceptual robotics is an interdisciplinary science linking Robotics and Neuroscience. It investigates biologically motivated robot control strategies, concentrating on perceptual rather than cognitive processes and thereby sides with J. J. Gibson's view against the Poverty of the stimulus theory. As a working definition, the following quote from Chapter 64 by H. Bülthoff, C. Wallraven and M. Giese from The Springer Handbook of Robotics, edited by Bruno Siciliano and Oussama Khatib, published by Springer in 2007, could be used: In the following we will apply the term Perceptual Robotics to signify the design of robots based on principles that are derived from human perception on all three levels in the sense of Marr. This includes a realization in terms of specific neural circuits as well as the transfer of more abstract biologically-inspired strategies for the solution of relevant computational problems.

Utah Artificial Intelligence Policy Act

The Utah Artificial Intelligence Policy Act (SB-149) was signed into law in Utah in 2024 and amended in 2025. The first state law in the United States specifically regulating generative AI, it went into effect on May 1, 2024. The law requires companies to disclose if their customers interact with AI instead of a human. It also established an Office of Artificial Intelligence Policy. Amendments to the Act went into effect on May 7, 2025. While the 2024 Act requires companies to disclose generative AI use when asked by customers, the amendments introduced stricter requirements for higher-risk interactions. SB 226 mandates disclosure of AI use in high-risk interactions involving health, financial, and biometric data, or when providing consumers with advice on financial, legal, or healthcare matters.