Agents of S.H.I.E.L.D. season 4

Agents of S.H.I.E.L.D. season 4

The fourth season of the American television series Agents of S.H.I.E.L.D., based on the Marvel Comics spy organization S.H.I.E.L.D., follows Phil Coulson and other S.H.I.E.L.D. agents and allies after the signing of the Sokovia Accords. It is set in the Marvel Cinematic Universe (MCU) and acknowledges the continuity of the franchise's films. The season was produced by ABC Studios, Marvel Television, and Mutant Enemy Productions, with Jed Whedon, Maurissa Tancharoen, and Jeffrey Bell serving as showrunners. Clark Gregg reprises his role as Coulson from the film series, starring alongside the returning series regulars Ming-Na Wen, Chloe Bennet, Iain De Caestecker, Elizabeth Henstridge, and Henry Simmons. They are joined by John Hannah who was promoted from his recurring guest role in the third season. The fourth season was ordered in March 2016, with production taking place from that July until the following April. Due to its broadcast schedule, the season was split into three "pods": Ghost Rider for the first eight episodes, featuring recurring guest star Gabriel Luna as the supernatural Robbie Reyes / Ghost Rider and exploring mysticism in the MCU alongside the film Doctor Strange (2016); LMD, referring to the new Life Model Decoy program, for the next seven episodes which focus on recurring guest star Mallory Jansen as the LMD Aida; and Agents of Hydra for the final seven episodes, partly set in a "what if" virtual reality that allowed the return of former series regular Brett Dalton as Grant Ward. The season is also affected by the events of the film Captain America: Civil War (2016), and continues storylines established in the canceled series Agent Carter. The first episode premiered at a screening on September 19, 2016, with the season then airing for 22 episodes on ABC, from September 20, 2016, until May 16, 2017. The premiere debuted to 3.58 million viewers, down from previous season premieres but average for the series. Critical response to the season was positive, with many feeling that each pod was better than the last and in particular praising the visual effects and tone of Ghost Rider, the writing and acting of LMD, and the character development and political commentary explored during Agents of Hydra. The season saw series low viewership, but was still considered to have solved ABC's problem during its new Tuesday night timeslot, and the series was renewed for a fifth season in May 2017. == Episodes == == Cast and characters == == Production == === Development === Agents of S.H.I.E.L.D. was renewed for a fourth season on March 3, 2016, earlier than usual for the series. Executive producer Jed Whedon said on this, "We're thrilled to know going into the end of [season three] with certainty that we will be returning, because we can build our story accordingly." Executive producer Maurissa Tancharoen also noted that logistics for hiring directors for the season in advance would be easier, "which is a very nice privilege to have...that's a luxury". The end of the episode "What If..." features an onscreen tribute to Bill Paxton, who died in February 2017 and had portrayed John Garrett in the series' first season. The series paid additional tribute to Paxton in "All the Madame's Men" with promos during The Bakshi Report news segment showcasing John Garrett as a fallen American hero. The end of "World's End" features a similar onscreen tribute to Powers Boothe, who died in May 2017 and had portrayed Gideon Malick in the series' third season. === Writing === The season shifted to the later 10 pm timeslot, allowing it to take on a darker, more mature tone than previous seasons. According to Tancharoen, "The whole tagline for this year is 'Agents of S.H.I.E.L.D. After Dark'". The timeslot gave the series the opportunity to present an increased level of violence and partial nudity, as well as take more risks and present edgier themes. Following the third-season finale, Tancharoen stated that the fourth season would explore the guilt Daisy Johnson has over Lincoln Campbell's death. Executive producer Jeffrey Bell noted the writers tried to continue the tradition of "finding new combinations and new conflicts" between different sets of characters, given "a lot of procedurals [see] the same people doing the same thing for five years". Pairings that would be explored included Coulson and Mack, continuing from the end of season three, who have a mutual respect for one another due to their relationships with Daisy, and Leo Fitz and Holden Radcliffe, who work together. The Fitz-Simmons relationship was also explored more, examining the new challenges it presented for the two "working together, loving each other and living together". Following the third season's dealing with the themes of Captain America: Civil War (2016), such as the opposing reactions to the Inhumans, Whedon said that the question of "How do you deal with a war with powered people at that level, a government level?" was one that they wanted to answer in the fourth season. Tancharoen called the Inhumans "a permanent part of our universe now", with Whedon adding, "we have a quick-fire way of introducing people with powers. It gives us a lot of leeway in our world, and it lets us explore the metaphors of what it is like to be different. We will never close that chapter." With the Inhumans film being removed from Marvel Studios' release schedule, the series had "a little more freedom" and were "able to do a little bit more" with the species, including the potential of introducing some of the "classic" Inhumans, though the series would focus less on Inhumans than the third season which saw "a real significant Inhuman agenda story". It was not intended to be a spin-off of Agents of S.H.I.E.L.D. On the evolution of S.H.I.E.L.D. to featuring so many powered characters, Whedon said "the dynamic in the world has changed. There was one person with powers, and then by The Avengers there were maybe six total ... now they're much more prevalent, so there's reaction from the public based on that." The season is structured into three "pods" based on its airing schedule: the first eight episodes, subtitled Ghost Rider; LMD (Life Model Decoy) for the subsequent seven episodes; and a third pod for the final seven episodes called Agents of Hydra. Elements and characters cross over between the different pods, but the sections "definitely have a different feel" from one another, as Bell explained that 22 episodes "is a long time to hold a big bad or a single plot line, especially for an audience", and for the past two seasons, the series was able to have two separated halves that "allows us to introduce a big bad. And then, something happens and we rise somebody new ... Now, there's three of those." "Financial considerations" were also taken into account in creating the pods for the season, as using LMDs does not "cost as much as setting a guy's head on fire via CGI". In terms of writing the "complicated season", Whedon said the writers were "aware that our fans are our fans and have spent some time with these characters and are clever and see things coming sometimes ... Part of our job is to create not just what we are presenting on plot, but letting the audience be one step ahead of us and being one step ahead of that." He added that the writers knew that they wanted to tell a Ghost Rider story, an LMD story, and a "what if" scenario, and the hardest part was making each pod still fit together as a single season. The major connection ultimately became the Darkhold, which leads from the magic of Ghost Rider to the advanced science of LMD and then the Framework in Agents of Hydra. Ghost Rider also reappears in the final episode of the season, "World's End", as an additional connection. ==== Ghost Rider ==== While planning the fourth season, Marvel suggested that the series introduce Ghost Rider, after the character's film rights had returned to Marvel from Sony in May 2013. Loeb felt that this made the season unquestionably "the series' biggest" with the "most ambitious story yet". He added that "one of the things that we talked about is, S.H.I.E.L.D. always looked out for the weird, the unusual, the things that were and could be a problem for the public", and Marvel realized that Ghost Rider's abilities, which are more mystical than anything seen in the series to date, opened up "a quarter of the universe that we haven't really spent a lot of time exploring ... what happens if our very real, our very grounded agents who are very much a family have to take on something that is as bizarre and powerful and unique as Ghost Rider." Bell added that the producers would have been willing to give an entire season of the show to a Ghost Rider arc if the season was 13 episodes or less, but 22 episodes seemed too long to "feel like one flavor". The Robbie Reyes version of Ghost Rider was chosen over other versions of the character from the comics because of his relationship with his brother Gabe, w

List of assembly software and tools

This is a list of assembly software and tools, including software used for assembly language programming, machine code generation, disassembly, debugging, binary analysis, reverse engineering, and instruction-set simulation. == Assemblers and machine-code generators == == Disassemblers and binary-analysis tools == == Debuggers with assembly-level features == == Educational IDEs, simulators and emulators == == Portable and intermediate assembly-like languages == == Assembly language families == Assembly language is not a single programming language, but a family of low-level languages associated with particular instruction set architectures and processor families. Examples include:

Content strategy

Content strategy guides the planning, development, and management of content. It is a recognized field in user experience design, and it also draws from adjacent disciplines such as information architecture, content management, business analysis, digital marketing, and technical communication. == Definitions == Content strategy has been described as planning for "the creation, publication, and governance of useful, usable content." It has also been called "a repeatable system that defines the entire editorial content development process for a website development project." In a 2007 article titled "Content Strategy: The Philosophy of Data," Rachel Lovinger describes the goal of content strategy as using "words and data to create unambiguous content that supports meaningful, interactive experiences." Here, she also provided the analogy that "content strategy is to copywriting as information architecture is to design." She encourages content strategists and collaborators to engage in early discussions about content meaning, models, and tools, to make sure strategy is integrated from the start rather than as an afterthought. The Content Strategy Alliance combines Kevin Nichols' definition with Kristina Halvorson's and defines content strategy as "getting the right content to the right user at the right time through strategic planning of content creation, delivery, and governance." == Practitioners == Content strategists are often familiar with a wide range of approaches, techniques, and tools. The perspectives that content strategists bring also depend heavily on their professional training and education. For instance, some specialize in "front-end strategy," which includes developing personas, journey mapping the user experience, aligning business strategy and user needs, developing a brand strategy, exploring different channels, and creating style guidelines and search engine optimization (SEO) guidelines. Others specialize in "back-end strategy," which includes creating content models, planning taxonomies and metadata, structuring content management systems, and building systems to support content reuse. Both roles involve addressing workflow and governance issues. Many organizations and individuals tend to confuse content strategists with editors. However, content strategy is "about more than just the written word," according to Washington State University associate professor Brett Atwood. For example, Atwood indicates that a practitioner needs to also "consider how content might be re-distributed and/or re-purposed in other channels of delivery." It has also been proposed that the content strategist performs the role of a curator. Just as a museum curator sifts through a collection of content and identifies key pieces that can be juxtaposed against each other to create meaning and spur excitement, a content strategist "must approach a business’s content as a medium that needs to be strategically selected and placed to engage the audience, convey a message, and inspire action."

Ambient awareness

Ambient awareness (AmA) is a term used by social scientists to describe a form of peripheral social awareness through social media. This awareness is propagated from relatively constant contact with one's friends and colleagues via social networking platforms on the Internet. The term essentially defines the sort of omnipresent knowledge one experiences by being a regular user of these media outlets that allow a constant connection with one's social circle. According to Clive Thompson of The New York Times, ambient awareness is "very much like being physically near someone and picking up on mood through the little things; body language, sighs, stray comments". Academic Andreas Kaplan defines ambient awareness as "awareness created through regular and constant reception, and/or exchange of information fragments through social media". Two friends who regularly follow one another's digital information can already be aware of each other's lives without actually being physically present to have had a conversation. == Social == Socially speaking, ambient awareness and social media are products of the new generations who are being born or growing up in the digital age, starting circa 1998 and running to current times. Social media is personal media (what you're doing in the moment, how you feel, a picture of where you are) combined with social communication. Social media is the lattice work for ambient awareness. Without social media the state of ambient awareness cannot exist. Artificial Social Networking Intelligence (ASNI) refers to the application of artificial intelligence within social networking services and social media platforms. It encompasses various technologies and techniques used to automate, personalize, enhance, improve, and synchronize user's interactions and experiences within social networks. ASNI is expected to evolve rapidly, influencing how we interact online and shaping their digital experiences. Transparency, ethical considerations, media influence bias, and user control over data will be crucial to ensure responsible development and positive impact. A significant feature of social media is that it is created by those who also consume it. Mostly, those participating in this phenomenon are adolescents, college age, or young adult professionals. According to Dr. Mimi Ito, a cultural anthropologist and Professor in Residence at the University of California at Irvine, the mobile device is the greatest proxy device used to create and distribute Social Media. She reportedly states that "teenagers capture and produce their own media, and stay in constant ambient contact with each other..." using mobile devices. Usually while doing this they are consuming other forms of media such as music or video content via their smart phones, tablets, or other similar devices. Effectively this has led social scientists to believe that learning and multitasking will have a new face as the products of the digital generation enter the work force and begin to integrate their learning methods into the standard preexisting business models of today. Professors Kaplan and Haenlein see ambient awareness as one of the major reasons for the success of such microblogging sites as Twitter. == Origins == The earliest available technology that could be used for constant social contact is the cell phone. For the first time, people could be contacted readily and at will beyond the confines of their work or homes. Then later, with the additional service of texting, one can see the somewhat primitive form of the status update. Since the text message only allows for 160 characters to transmit pertinent information it paved the way for the status update as we know it today. The transition from only having a few points of regular long distance contact, to being constantly available via cell phone, is what primed society for social networking websites. Perhaps the first instance where these websites created the possibility of larger scale ambient awareness was when Facebook installed the news feed. The news feed automatically sends compiled information on all of a users contacts activities directly to them so that they can access all of the happenings in their world from one location. For the first time, becoming someone's Facebook friend was the equivalent of subscribing to a feed of their daily minutiae. Since this innovation, a new wave of micro-blogging services have emerged, such as Twitter or Tumblr. Although these services have often been criticized as containing seemingly meaningless snippets of information, when a follower gathers a certain amount of information, they begin to obtain an ambient understanding of who they are following. This has led to the mass usage of social media as not only a social tool but also as a marketing and business tool. == Uses in marketing == Websites such as Twitter, YouTube, Facebook, and Myspace, among many others, have been used by people in all forms of business to create a closer digital/ambient bond with their clientele base. This is most notably seen in the music industry where social media networking has become the mainstay of all advertising for independent and major artists. The effect of this type of ambient marketing is that the consumer begins to get a sense of the artist's life style and personality. In this way social media outlets and ambient awareness have managed to tighten the gap between consumers and producers in all areas of business. == Uses in business processes == As web-based collaboration tools and social project management suites proliferate, the addition of activity streams to those products help to create business context-specific ambient awareness, and produce a new class of products, such as social project management platforms.

Telecommunications

Telecommunication, often used in its plural form or abbreviated as telecom, is the transmission of information over a distance using electrical or electronic means, typically through cables, radio waves, or other communication technologies. These means of transmission may be divided into communication channels for multiplexing, allowing for a single medium to transmit several concurrent communication sessions. Long-distance technologies invented during the 19th, 20th and 21st centuries generally use electric power, and include the electrical telegraph, telephone, television, and radio. Early telecommunication networks used metal wires as the medium for transmitting signals. These networks were used for telegraphy and telephony for many decades. In the first decade of the 20th century, a revolution in wireless communication began with breakthroughs including those made in radio communications by Guglielmo Marconi, who won the 1909 Nobel Prize in Physics. Other early pioneers in electrical and electronic telecommunications include co-inventors of the telegraph Charles Wheatstone and Samuel Morse, numerous inventors and developers of the telephone including Antonio Meucci, Philipp Reis, Elisha Gray and Alexander Graham Bell, inventors of radio Edwin Armstrong and Lee de Forest, as well as inventors of television like Vladimir K. Zworykin, John Logie Baird and Philo Farnsworth. Since the 1960s, the proliferation of digital technologies has meant that voice communications have gradually been supplemented by data. The physical limitations of metallic media prompted the development of optical fibre. The Internet, a technology independent of any given medium, has provided global access to services for individual users and further reduced location and time limitations on communications. == Definition == At the 1932 Plenipotentiary Telegraph Conference and the International Radiotelegraph Conference in Madrid, the two organizations merged to form the International Telecommunication Union (ITU). They defined telecommunication as "any telegraphic or telephonic communication of signs, signals, writing, facsimiles and sounds of any kind, by wire, wireless or other systems or processes of electric signaling or visual signaling (semaphores)." The definition was later reconfirmed, according to Article 1.3 of the ITU Radio Regulations, which defined it as "Any transmission, emission or reception of signs, signals, writings, images and sounds or intelligence of any nature by wire, radio, optical, or other electromagnetic systems". As such, slow communications technologies like postal mail and pneumatic tubes are excluded from the telecommunication's definition. The term telecommunication was coined in 1904 by the French engineer and novelist Édouard Estaunié, who defined it as "remote transmission of thought through electricity". Telecommunication is a compound noun formed from the Greek prefix tele- (τῆλε), meaning distant, far off, or afar, and the Latin verb communicare, meaning to share. Communication was first used as an English word in the late 14th century. It comes from Old French comunicacion (14c., Modern French communication), from Latin communicationem (nominative communication), noun of action from past participle stem of communicare, "to share, divide out; communicate, impart, inform; join, unite, participate in," literally, "to make common", from communis. == History == Many transmission media have been used for long-distance communication throughout history, from smoke signals, beacons, semaphore telegraphs, signal flags, and optical heliographs to wires and empty space made to carry electromagnetic signals. === Before the electrical and electronic era === Long-distance communication was used long before the discovery of electricity and electromagnetism enabled the invention of telecommunications. A few of the many ingenious methods for communicating over distances prior to that are described here. Homing pigeons have been used throughout history by different cultures. Pigeon post had Persian roots and was later used by the Romans to aid their military. Frontinus claimed Julius Caesar used pigeons as messengers in his conquest of Gaul. The Greeks also conveyed the names of the victors at the Olympic Games to various cities using homing pigeons. In the early 19th century, the Dutch government used the system in Java and Sumatra. And in 1849, Paul Julius Reuter started a pigeon service to fly stock prices between Aachen and Brussels, a service that operated for a year until the gap in the telegraph link was closed. In the Middle Ages, chains of beacons were commonly used on hilltops as a means of relaying a signal. Beacon chains suffered the drawback that they could only pass a single bit of information, so the meaning of the message, such as "the enemy has been sighted" had to be agreed upon in advance. One notable instance of their use was during the Spanish Armada, when a beacon chain relayed a signal from Plymouth to London. In 1792, Claude Chappe, a French engineer, built the first fixed visual telegraphy system (or semaphore line) between Lille and Paris. However semaphore suffered from the need for skilled operators and expensive towers at intervals of ten to thirty kilometres (six to nineteen miles). As a result of competition from the electrical telegraph, the last commercial line was abandoned in 1880. === Telegraph and telephone === On July 25, 1837, the first commercial electrical telegraph was demonstrated by English inventor Sir William Fothergill Cooke and English scientist Sir Charles Wheatstone. Both inventors viewed their device as "an improvement to the [existing] electromagnetic telegraph" and not as a new device. Samuel Morse independently developed a version of the electrical telegraph that he unsuccessfully demonstrated on September 2, 1837. His code was an important advance over Wheatstone's signaling method. The first transatlantic telegraph cable was successfully completed on July 27, 1866, allowing transatlantic telecommunication for the first time. After early attempts to develop a talking telegraph by Antonio Meucci and a telefon by Johann Philipp Reis, a patent for the conventional telephone was filed by Alexander Bell in February 1876 (just a few hours before Elisha Gray filed a patent caveat for a similar device). The first commercial telephone services were set up by the Bell Telephone Company in 1878 and 1879 on both sides of the Atlantic in the cities of New Haven and London. === Radio and television === In 1894, Italian inventor Guglielmo Marconi began developing wireless communication using the then-newly discovered phenomenon of radio waves, demonstrating, by 1901, that they could be transmitted across the Atlantic Ocean. This was the start of wireless telegraphy by radio. On 17 December 1902, a transmission from the Marconi station in Glace Bay, Nova Scotia, Canada, became the world's first radio message to cross the Atlantic from North America. In 1904, a commercial service was established to transmit nightly news summaries to subscribing ships, which incorporated them into their onboard newspapers. World War I accelerated the development of radio for military communications. After the war, commercial radio AM broadcasting began in the 1920s and became an important mass medium for entertainment and news. World War II again accelerated the development of radio for the wartime purposes of aircraft and land communication, radio navigation, and radar. Development of stereo FM broadcasting of radio began in the 1930s in the United States and the 1940s in the United Kingdom, displacing AM as the dominant commercial standard in the 1970s. On March 25, 1925, John Logie Baird demonstrated the transmission of moving pictures at the London department store Selfridges. Baird's device relied upon the Nipkow disk by Paul Nipkow and thus became known as the mechanical television. It formed the basis of experimental broadcasts done by the British Broadcasting Corporation beginning on 30 September 1929. === Vacuum tubes === Vacuum tubes use thermionic emission of electrons from a heated cathode for a number of fundamental electronic functions such as signal amplification and current rectification. The simplest vacuum tube, the diode invented in 1904 by John Ambrose Fleming, contains only a heated electron-emitting cathode and an anode. Electrons can only flow in one direction through the device—from the cathode to the anode. Adding one or more control grids within the tube enables the current between the cathode and anode to be controlled by the voltage on the grid or grids. These devices became a key component of electronic circuits for the first half of the 20th century and were crucial to the development of radio, television, radar, sound recording and reproduction, long-distance telephone networks, and analogue and early digital computers. While some applications had used earlier technologies such as the sp

Speculative decoding

Speculative decoding is an inference-time optimization for autoregressive large language models (LLMs) that generates multiple tokens per decoding step instead of one. A smaller draft model proposes a sequence of candidate tokens, and the larger target model verifies them in a single forward pass through a modified rejection sampling scheme. The verification preserves the target model's original output distribution, so the technique produces the same results as standard decoding while cutting latency by roughly two to three times. The name is an analogy to speculative execution in CPU design, where a processor runs instructions along a predicted branch before the outcome is known. == Background == Standard autoregressive decoding in large language models generates one token at a time. The model computes a probability distribution over its vocabulary, samples the next token, and feeds that token back as input. For large models, this process is bottlenecked by memory bandwidth rather than arithmetic throughput: loading the model's parameters from high-bandwidth memory (HBM) to the processor takes up most of the wall-clock time at each step. Because of this, a forward pass over one token and a forward pass over several tokens in a batch take roughly the same time. Speculative decoding relies on this property. == Mechanism == The technique alternates between two phases: drafting and verification. During drafting, a fast approximation model generates a short run of K candidate tokens, typically between 3 and 12. The draft model is usually a much smaller version of the target model or a lightweight auxiliary network. During verification, the target model scores the entire draft sequence in one batched forward pass. A modified rejection sampling algorithm compares the draft and target probabilities at each position. If the target model would have been at least as likely to produce a given token, that token is accepted; the first token that fails is resampled from a corrected distribution, and everything after it is thrown out. The result is that the output distribution is the same as if each token had been generated one at a time. How many tokens get accepted per cycle depends on how well the draft model matches the target. For common words and predictable continuations the match tends to be good, so the target model can confirm several tokens at once. == History == An early precursor was blockwise parallel decoding, proposed in 2018 by Stern, Shazeer, and Uszkoreit. Their method predicted multiple future tokens through auxiliary prediction heads and validated them against the autoregressive model, but it only worked with greedy decoding and did not preserve the full sampling distribution. The modern form of the technique came from Yaniv Leviathan, Matan Kalman, and Yossi Matias at Google Research, who posted "Fast Inference from Transformers via Speculative Decoding" on arXiv in November 2022. Separately and at about the same time, Charlie Chen and colleagues at DeepMind arrived at a closely related method they called speculative sampling, published in February 2023. Both papers introduced the use of rejection sampling to guarantee that the output distribution is unchanged. Leviathan et al. showed roughly 2–3x speedup on T5-XXL (11 billion parameters); Chen et al. reported 2–2.5x on the Chinchilla model (70 billion parameters). The Leviathan et al. paper was presented as an oral at the International Conference on Machine Learning in July 2023. == Variants == SpecInfer (Miao et al., 2024) uses multiple small language models to jointly build a tree of candidate continuations rather than a single chain. The target model verifies the whole tree in parallel and keeps the longest valid path, with reported speedups of 1.5–3.5x. Medusa (Cai et al., 2024) takes a different approach by not using a separate draft model at all. Extra lightweight decoding heads are attached to the target model itself, and each one predicts a token at a different future position. The candidates are evaluated through a tree-structured attention mechanism. The authors measured 2.2–3.6x speedup. EAGLE (Li et al., 2024) performs autoregression on the target model's internal feature representations (specifically the second-to-top layer) rather than on tokens directly. On LLaMA 2 Chat 70B, this gave a 2.7–3.5x latency reduction. Later versions added dynamic draft trees (EAGLE-2) and further optimizations (EAGLE-3), reaching 3–6.5x speedup. == Adoption == By 2024, speculative decoding had become a standard part of production LLM serving. Google uses it in the AI Overviews feature of Google Search. Open-source inference frameworks such as vLLM, NVIDIA's TensorRT-LLM, and SGLang all include built-in support for speculative decoding and its variants. Apple, AWS, and Meta have also published research extending the method or deploying it at scale.

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