A final website for the project 'DEPENDENCIES IN A NETWORK' - special issue #08

master
bootje 5 years ago
commit 670610df21

BIN
_old/.DS_Store vendored

Binary file not shown.

@ -0,0 +1,89 @@
<html><head><link href="style.css" rel="stylesheet" type="text/css"/><meta charset="utf-8"/></head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence">ESSAY — From the January 2019 issue
</div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">Machine Politics
</div></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence">The rise of the internet and a new age of authoritarianism
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">By Fred Turner
</div></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-5"><div class="comment" id="comment-5" ><span class="comment-text" style="border-bottom: 2.5px solid rgb(115,153,6);;">bootje: #comment 5 This article saids: we have to develop the alternative system: inventing the mailart/federated social network/wikipedia/blockchain/...
(08:04PM on March 18, 2019)</span></div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence">"The Goliath of totalitarianism will be brought down by the David of the microchip,” Ronald Reagan said in 1989. He was speaking to a thousand British notables in Londons historic Guildhall, several months before the fall of the Berlin Wall. Reagan proclaimed that the world was on the precipice of “a new era in human history,” one that would bring “peace and freedom for all.” Communism was crumbling, just as fascism had before it. Liberal democracies would soon encircle the globe, thanks to the innovations of Silicon Valley. “I believe,” he said, “that more than armies, more than diplomacy, more than the best intentions of democratic nations, the communications revolution will be the greatest force for the advancement of human freedom the world has ever seen.”
</div></div><div class="rightcolumn" id="rightcolumn-6"><div class="comment" id="comment-6" ><span class="comment-text" style="border-bottom: 2.5px solid rgb(115,153,6);" >bootje: #comment 6 classical left wing's political activisim: it was an idea that you have to see the exsiting system of power, let them be in the Maxism idea. that's what happened in communist country.
ex) you don't change how the system works, but you just replace the ideology of the people.
ex) change a newspaper -&gt; a communist newspaper
: these are all cybernetic idea/approach (08:06PM on March 18, 2019)</span></div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence">At the time, most everyone thought Reagan was right. The twentieth century had been dominated by media that delivered the same material to millions of people at the same time—radio and newspapers, movies and television. These were the kinds of one-to-many, top-down mass media that Orwells Big Brother had used to stay in power. Now, however, Americans were catching sight of the internet. They believed that it would do what earlier media could not: it would allow people to speak for themselves, directly to one another, around the world. “True personalization is now upon us,” wrote MIT professor Nicholas Negroponte in his 1995 bestseller Being Digital. Corporations, industries, and even whole nations would soon be transformed as centralized authorities were demolished. Hierarchies would dissolve and peer-to-peer collaborations would take their place. “Like a force of nature,” wrote Negroponte, “the digital age cannot be denied or stopped.”
</div></div><div class="rightcolumn" id="rightcolumn-8"><div class="comment" id="comment-8" ><span class="comment-text" style="border-bottom: 2.5px solid rgb(209,49,18);">bootje: #comment 8 The idea of alternative movement: this is not how it works. we need to change the whole on the structural level. not just pouring into the exsiting system, but actually ahve to change the system.
(08:18PM on March 18, 2019)</span></div><div class="comment" id="comment-8" ><span class="comment-text" style="border-bottom: 2.5px solid rgb(209,49,18);">bootje: #comment 8 Author's opinion is:
— need to buy a fluxux island
— can't live in the capital society
— In the article, what we now see is that today we have authoritarianism and facism. they are not saying we neeed to build a big centralized institusion.
It's about distribution/personal voice. (08:43PM on March 18, 2019)</span></div></div></div><div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">One of the deepest ironies of our current situation is that the modes of communication that enable todays authoritarians were first dreamed up to defeat them. The same technologies that were meant to level the political playing field have brought troll farms and Russian bots to corrupt our elections. The same platforms of self-expression that we thought would let us empathize with one another and build a more harmonious society have been co-opted by figures such as Milo Yiannopoulos and, for that matter, Donald Trump, to turn white supremacy into a topic of dinner-­table conversation. And the same networked methods of organizing that so many thought would bring down malevolent states have not only failed to do so—think of the Arab Spring—but have instead empowered autocrats to more closely monitor protest and dissent.
</div></div><div class="rightcolumn" id="rightcolumn-10"><div class="comment" id="comment-10" ><span class="comment-text" style="border-bottom: 2.5px solid rgb(240,47,87);">bootje: #comment 10 He sees this as a problem, the whole idea of thinking of althernative and decentralized structure is totally backrupt because of the whole authoritarian happening everywhere. (08:45PM on March 18, 2019) </span></div></div></div><div class="linenum" id="linenum-11"><div class="leftcolumn" id="leftcolumn-11"><div class="linenumber">11</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-12"><div class="leftcolumn" id="leftcolumn-12"><div class="linenumber">12</div><div class="sentence">If were going to resist the rise of despotism, we need to understand how this happened and why we didnt see it coming. We especially need to grapple with the fact that todays right wing has taken advantage of a decades-long liberal effort to decentralize our media. That effort began at the start of the Second World War, came down to us through the counterculture of the 1960s, and flourishes today in the high-tech hothouse of Silicon Valley. It is animated by a deep faith that when engineering replaces politics, the alienation of mass society and the threat of totalitarianism will melt away. As Trump fumes on Twitter, and Facebook posts are linked to genocide in Myanmar, we are beginning to see just how misplaced that faith has been. Even as they grant us the power to communicate with others around the globe, our social-­media networks have spawned a new form of authoritarianism.
</div></div><div class="rightcolumn" id="rightcolumn-12"><div class="comment" id="comment-12"><span class="comment-text" style="border-bottom: 2.5px solid rgb(29,37,234);;">bootje: #comment 12 The new authoritarianism represented by Spencer nad Trump is not only a product of who owns today's media. (08:46PM on March 18, 2019) </span></div></div></div><div class="linenum" id="linenum-13"><div class="leftcolumn" id="leftcolumn-13"><div class="linenumber">13</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-14"><div class="leftcolumn" id="leftcolumn-14"><div class="linenumber">14</div><div class="sentence">The political vision that brought us to this point emerged in the 1930s, as a response to fascism. In the years before the Second World War, Americans were mystified as to how Germany, one of the most sophisticated nations in Europe, had tumbled down the dark hole of National Socialism. Today wed likely blame Hitlers rise on the economic chaos and political infighting of the Weimar era. But at the time, many blamed mass media. When Hitler spoke to row upon row of Nazi soldiers at torch-lit rallies, the radio broadcast his voice into every German home. When he drove through adoring crowds, standing in his Volks­wagen convertible, giving the Nazi salute, the newsreel cameras were there. In 1933, the New York Times described the predicament of the average German this way:
</div></div></div><div class="linenum" id="linenum-15"><div class="leftcolumn" id="leftcolumn-15"><div class="linenumber">15</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-16"><div class="leftcolumn" id="leftcolumn-16"><div class="linenumber">16</div><div class="sentence">With coordinated newspaper headlines overpowering him, with radio voices beseeching him, with news reels and feature pictures arousing him, and with politicians and professors philosophizing for him, the individual German has been unable to salvage his identity and has been engulfed in a brown wave. . . . They are living in a Nazi dream and not in the reality of the world.
</div></div></div><div class="linenum" id="linenum-17"><div class="leftcolumn" id="leftcolumn-17"><div class="linenumber">17</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-18"><div class="leftcolumn" id="leftcolumn-18"><div class="linenumber">18</div><div class="sentence">Toward the end of the decade, President Roosevelt began searching for ways to urge Americans to take a unified stand against fascism. Given the rise of right-wing fervor in the United States at the time, he had reason to worry. The racism and anti-­Semitism that characterized Nazi Germany also characterized much of American life. By 1938, millions of Americans listened weekly as Father Charles Coughlin, a Catholic demagogue, celebrated the rise of fascism and decried the existence of the Jews. Thousands of American fascists banded together in groups with names like the Silver Legion of America and the Crusader White Shirts. The Amerikadeutscher Volksbund, a 25,000-member pro-Nazi organization commonly known as the Bund, ran a summer camp on Long Island called Camp Siegfried, where young men marched in Nazi-style uniforms as their friends and families cheered. On February 20, 1939, the Bund brought more than 22,000 Americans to New Yorks Madison Square Garden to welcome fascism to American shores. When they gathered, a huge banner hung over their heads: stop jewish domination of christian americans!
</div></div></div><div class="linenum" id="linenum-19"><div class="leftcolumn" id="leftcolumn-19"><div class="linenumber">19</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-20"><div class="leftcolumn" id="leftcolumn-20"><div class="linenumber">20</div><div class="sentence">As the United States geared up for war, its leaders faced a quandary: they wanted to use media to unite Americans against their enemies, but many also feared that using mass media to do it would transform Americans into just the kind of authoritarians they were trying to defeat. Roosevelts cabinet sought advice from a group of intellectuals calling themselves the Committee for National Morale. The Committee had been founded in the summer of 1940 by a historian of Persian art named Arthur Upham Pope, who brought together a number of Americas leading thinkers, including the anthropologists Margaret Mead and Gregory Bateson, psychologists Gordon Allport and Kurt Lewin, and journalists Edmond Taylor and Ladislas Farago. Over the next two years, they would advise the Roosevelt Administration; produce pamphlets, news articles, and books; and set the cornerstone of our contemporary faith in decentralized media.
</div></div></div><div class="linenum" id="linenum-21"><div class="leftcolumn" id="leftcolumn-21"><div class="linenumber">21</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-22"><div class="leftcolumn" id="leftcolumn-22"><div class="linenumber">22</div><div class="sentence">The Committee began by defining national morale in terms of what they called the democratic personality. Members of the Committee joined many American intellectuals in subscribing to the views of the anthropologist Franz Boas, who believed that cultures shape the personalities of their members in predictable ways. Germans, they thought, tended toward rigidity and an affection for authority, hence Hitlers famously bureaucratic Nazi regime was a natural extension of the German character. Americans were more open, individualistic, expressive, collaborative, and tolerant, and so more at home in loose coalitions. Whatever kind of propaganda medium the Committee promoted would need to preserve the individuality of American citizens. Allport summed up the Committees vision in a 1942 essay. “In a democracy,” he wrote, “every personality can be a citadel of resistance to tyranny. In the co-ordination of the intelligences and wills of one hundred million whole men and women lies the formula for an invincible American morale.”
</div></div></div><div class="linenum" id="linenum-23"><div class="leftcolumn" id="leftcolumn-23"><div class="linenumber">23</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-24"><div class="leftcolumn" id="leftcolumn-24"><div class="linenumber">24</div><div class="sentence">As the Committee sought to coordinate rather than dominate American minds, its members turned to a kind of media system that we might now call a platform: the museum. These days were not used to the idea of buildings as media systems. But the Committee thought about museums in the same way many think about virtual reality today—as immersive visual environments where we can increase our empathy for one another. Mead, who was a student of Boas and worked for the American Museum of Natural History in New York, pointed out that in a museum, people could walk among images and objects distributed across the walls and around the floor, choosing to pay attention to those that seemed most meaningful to them. They could hone their individual tastes, they could reason about their individual places in the world, and they could do it together.
</div></div></div><div class="linenum" id="linenum-25"><div class="leftcolumn" id="leftcolumn-25"><div class="linenumber">25</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-26"><div class="leftcolumn" id="leftcolumn-26"><div class="linenumber">26</div><div class="sentence">In 1942, the Museum of Modern Art in New York put the Committees vision into practice with a widely heralded propaganda exhibition entitled Road to Victory. Most American art shows at the time featured images of more or less identical sizes hung in a row at eye level, but this one mounted images of all sizes overhead, at the viewers feet, and everywhere in between. A path wound through the forest of photographs. The pictures were carefully chosen to spark patriotic fervor, but judging from reviews, it was the manner of their display that captivated the shows audience. As one critic put it, the show did not seek to “mold” its visitors beliefs, “for that word smacks of the Fascist concept of dominating mens minds.” It simply invited Americans to walk down the road to war, individually unique, yet collectively united. Another reviewer wrote: “It is this inescapable sense of identity—the individual spectator identifying himself with the whole—that makes the event so moving.”
</div></div></div><div class="linenum" id="linenum-27"><div class="leftcolumn" id="leftcolumn-27"><div class="linenumber">27</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-28"><div class="leftcolumn" id="leftcolumn-28"><div class="linenumber">28</div><div class="sentence">The first electronic computer would not be unveiled until 1946, and the internet was still decades away. Yet the Committees vision became central to how we think about computers today when several of its members began to collaborate with a mathematician named Norbert Wiener. In the first years of the war, Wiener and his MIT colleagues were trying to design a more accurate antiaircraft defense system. Antiaircraft gunners would only be able to shoot down enemy planes reliably if they could predict where the planes would be when the gunners shells reached the sky. At the time, there was no way to make that prediction with any certainty, since both gunner and pilot were capable of random movements. Wiener tried to solve this problem by imagining the gunner, the antiaircraft gun, the enemy pilot, and the enemy plane as elements in a single system whose behavior could be represented mathematically.
</div></div></div><div class="linenum" id="linenum-29"><div class="leftcolumn" id="leftcolumn-29"><div class="linenumber">29</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-30"><div class="leftcolumn" id="leftcolumn-30"><div class="linenumber">30</div><div class="sentence">Wieners antiaircraft predictor never worked on the battlefield. But his insight that the behavior of both machines and human beings could be represented through computation became a founding principle of computer science. In 1946, it also became a founding principle of a new political vision. That year, Wiener and members of his scientific community traveled to New York to meet with a group of sociologists and psychologists, Mead and Bateson of the Committee for National Morale prominent among them. Together, the social and laboratory scientists began to outline a vision of a liberal world modeled and managed by computers, a vision that they would develop over the next seven years, and that would become one of the most influential intellectual movements of the twentieth century: cybernetics.
</div></div></div><div class="linenum" id="linenum-31"><div class="leftcolumn" id="leftcolumn-31"><div class="linenumber">31</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-32"><div class="leftcolumn" id="leftcolumn-32"><div class="linenumber">32</div><div class="sentence">In 1950, Wiener published The Human Use of Human Beings, an enormously popular introduction to the new field that argued that modern society operated through a series of information exchanges, just like the antiaircraft predictor. Reporters and social scientists gathered data; intellectuals, business leaders, and politicians processed it; and, ultimately, the systems they controlled took action. When working properly, such a process would naturally tend toward equilibrium—that is, social order. And computers, Wiener argued, could help improve the flow of information by supplying decision-makers with better data faster. “Fascists, Strong Men in Business, and Government . . . prefer an organization in which all orders come from above, and none return,” wrote Wiener. The solution to totalitarianism, he argued, was to recognize the world as a system of leveled, distributed communication that could be modeled and managed by computers. The proper way to achieve the Committees vision and democratize society, his argument implied, was to take power away from politicians and put it in the hands of engineers.
</div></div></div><div class="linenum" id="linenum-33"><div class="leftcolumn" id="leftcolumn-33"><div class="linenumber">33</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-34"><div class="leftcolumn" id="leftcolumn-34"><div class="linenumber">34</div><div class="sentence">Wieners writings fired the imaginations of an unlikely group of young Americans, members of the Sixties counterculture who would go on to have an outsized impact on the computer industry. Between 1965 and 1973, as many as 750,000 Americans left their apartments and suburban houses and created new collective communities. A few of these communes were religious, but most were secular gatherings of white, middle- and upper-middle-class young people seeking to leave mainstream America behind. In northern California, refugees from Haight-Ashbury migrated north, to the woods of Mendocino, and east, to the high plains of Colorado and the mountains of New Mexico. Some even set up shop in the hills around Stanford University, overlooking what we now call Silicon Valley.
</div></div><div class="rightcolumn" id="rightcolumn-34"><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2.5px solid rgb(103,64,119);">bootje: #comment 34 create commune... (10:01AM on March 19, 2019) </span></div></div></div><div class="linenum" id="linenum-35"><div class="leftcolumn" id="leftcolumn-35"><div class="linenumber">35</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-36"><div class="leftcolumn" id="leftcolumn-36"><div class="linenumber">36</div><div class="sentence">Elsewhere Ive called this generation of pilgrims the “New Communalists” to distinguish them from members of the New Left, with whom they often disagreed. Unlike the young dissidents who formed parties and wrote manifestos, the New Communalists hoped to do away with politics entirely. They wanted to organize their communities around a shared mind-set, a unified consciousness. Many agreed with Charles Reich when he wrote in his 1970 bestseller, The Greening of America, that industrial society offered “a robot life, in which man is deprived of his own being, and he becomes instead a mere role, occupation, or function.” According to Reich, the solution was to cultivate a new consciousness of ones own desires and needs, of the connections between ones body, ones mind, and the natural world. Such a consciousness, he explained, could become the foundation of a new kind of society, one that would be nonhierarchical and collaborative.
</div></div></div><div class="linenum" id="linenum-37"><div class="leftcolumn" id="leftcolumn-37"><div class="linenumber">37</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-38"><div class="leftcolumn" id="leftcolumn-38"><div class="linenumber">38</div><div class="sentence">Watching this migration take shape was Stewart Brand, a former multimedia artist and sometime member of Ken Keseys psychedelic wrecking crew, the Merry Pranksters. In 1968, Brand and his wife Lois drove their aging pickup truck to a string of communes to see what the new settlers needed in the way of tools. That fall, the Brands set up shop in Menlo Park, California, not far from where Facebooks headquarters stand today, and began to publish a document that quickly became required reading across the counterculture: the Whole Earth Catalog. Despite its name, the Catalog did not actually sell anything. Instead, it collected recommendations for tools that might be useful to people headed back to the land. One of those tools was Norbert Wieners first book, Cybernetics. Another was an early and massive Hewlett-Packard calculator.
</div></div></div><div class="linenum" id="linenum-39"><div class="leftcolumn" id="leftcolumn-39"><div class="linenumber">39</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-40"><div class="leftcolumn" id="leftcolumn-40"><div class="linenumber">40</div><div class="sentence">The New Communalists eschewed what Reich called the “machine world” of tanks and bombs and the industrial bureaucracies that produced them. The rule-bound hierarchies of the corporation and the state, they thought, alienated their members from their own feelings and turned them into the kind of buttoned-­down apparatchiks who could launch a nuclear war. Even so, the New Communalists embraced small technologies that they hoped would help them live as independent citizens within the kind of universe that Wiener and the Committee had described, a universe in which all things were interlinked by information. The Catalog gave readers access to plans for Buckminster Fullers geodesic domes and guides to everything from cheap travel to boatbuilding. At a time when it could be difficult to find a commune if you didnt know someone who lived on one, the Catalog also became a map of the commune world and its concerns. As the first nodes of the internet were being wired together, the Catalog became a paperbound search engine.
</div></div></div><div class="linenum" id="linenum-41"><div class="leftcolumn" id="leftcolumn-41"><div class="linenumber">41</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-42"><div class="leftcolumn" id="leftcolumn-42"><div class="linenumber">42</div><div class="sentence">The future leaders of Silicon Valley took notice. Steve Jobs, who had spent some time on a commune called All One Farm, would later call the Catalog “one of the bibles of my generation. . . . It was sort of like Google in paperback form, thirty-five years before Google came along.” Alan Kay, whose designs for a graphical user interface would shape several generations of Apple computers, explained that he and his colleagues saw the Catalog as an information system in its own right. In that sense, he said, he “thought of the Whole Earth Catalog as a print version of what the internet was going to be.”
</div></div></div><div class="linenum" id="linenum-43"><div class="leftcolumn" id="leftcolumn-43"><div class="linenumber">43</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-44"><div class="leftcolumn" id="leftcolumn-44"><div class="linenumber">44</div><div class="sentence">By the mid-1980s, computers were small enough to sit on desks, and individual users were able to type messages to one another in real time. Most of the communes had collapsed, but the computer industry in northern California was growing rapidly, and it welcomed former communards. Brand worked with Larry Brilliant, who would later help launch Googles philanthropy division, ­Google.org, to design an online discussion system known as the Whole Earth Lectronic Link or WELL. On the WELL, users dialed in to a server where they saw messages from other users in threaded conversations. Howard Rheingold, a journalist and early member, believed that the WELL was a melding of the minds, a kind of virtual community. “Personal computers and the PC industry,” he wrote later, “were created by young iconoclasts who had seen the LSD revolution fizzle, the political revolution fail. Computers for the people was the latest battle in the same campaign.”
</div></div></div><div class="linenum" id="linenum-45"><div class="leftcolumn" id="leftcolumn-45"><div class="linenumber">45</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-46"><div class="leftcolumn" id="leftcolumn-46"><div class="linenumber">46</div><div class="sentence">By the end of the decade, when Reagan hailed the “David of the microchip,” many in Silicon Valley believed they had the tools to create the kind of person-centered democracy that the Committee had envisioned. They would achieve it through open conversation spaces like the WELL, engineered public spheres in which individuals gave voice to their experiences, gathered feedback from their peers, and changed their behavior accordingly. They shared Wieners faith in the power of information systems to liberate those who used them, and the Committees confidence that, given the chance to express themselves, individuals could create their own social order, without the need for top-down government control. If the mass-media era had brought us Hitler and Stalin, they believed, the internet would bring us back our individuality. Finally, we could do away with hierarchy, bureaucracy, and totalitarianism. Finally, we could just be ourselves, together.
</div></div></div><div class="linenum" id="linenum-47"><div class="leftcolumn" id="leftcolumn-47"><div class="linenumber">47</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-48"><div class="leftcolumn" id="leftcolumn-48"><div class="linenumber">48</div><div class="sentence">Today, that sense of utopian mission persists throughout Silicon Valley. A month after Trump took office, Mark Zuckerberg laid out his social vision in a Facebook post entitled “Building Global Community.” Though only a few thousand words long, the document is every bit as ambitious as Wieners The Human Use of Human Beings. Like Wiener, Zuckerberg envisions a world in which individuals, communities, and nations create an ideal social order through the constant exchange of information—that is, through staying “connected.” “Our greatest opportunities are now global—like spreading prosperity and freedom, promoting peace and understanding, lifting people out of poverty, and accelerating science,” he wrote, sounding much like a representative of the Cold Warera State Department. “In times like these,” he continued, “the most important thing we at Facebook can do is develop the social infrastructure to give people the power to build a global community that works for all of us.”
</div></div></div><div class="linenum" id="linenum-49"><div class="leftcolumn" id="leftcolumn-49"><div class="linenumber">49</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-50"><div class="leftcolumn" id="leftcolumn-50"><div class="linenumber">50</div><div class="sentence">For Zuckerberg, as for much of the left today, the key to a more egalitarian society lies in the freeing of individual voices, the expression of different lived experiences, and the forming of social groups around shared identities. But Facebook has tried to enable this kind of society by creating privately owned, for-profit digital technologies. As Zuckerberg put it, echoing the goals of the Whole Earth Catalog fifty years before, “Our commitment is to continue improving our tools to give you the power to share your experience.” Engineers like Zuckerberg or, for that matter, Wiener, have little interest in party politics: if you want to change the world, you dont lobby or vote; you build new technologies.
</div></div></div><div class="linenum" id="linenum-51"><div class="leftcolumn" id="leftcolumn-51"><div class="linenumber">51</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-52"><div class="leftcolumn" id="leftcolumn-52"><div class="linenumber">52</div><div class="sentence">This view has proved enormously profitable across Silicon Valley. By justifying the belief that for-profit systems are the best way to improve public life, it has helped turn the expression of individual experience into raw material that can be mined, processed, and sold. The big social-media companies, which often began with a dream of making WELL-like virtual communities at scale, have now become radically commercialized and devoted to surveillance at every level. On the WELL, users listened to each other, trying to get a feel for what kinds of people they were and how they might work together. Now user data is optimized and retailed automatically, to advertisers and other media firms, in real time. Computers track conversations and extract patterns at light speed, rendering them profitable. In 2017, Facebook reported annual revenue of more than $40 billion.
</div></div></div><div class="linenum" id="linenum-53"><div class="leftcolumn" id="leftcolumn-53"><div class="linenumber">53</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-54"><div class="leftcolumn" id="leftcolumn-54"><div class="linenumber">54</div><div class="sentence">Social medias ability to simultaneously solicit and surveil communication has not only turned the dream of individualized, expressive democracy into a fountain of wealth. It has turned it into the foundation of a new kind of authoritarianism. Fascists used to be distinguished by their penchant for obedience, submission, and self-erasure, with the power of public emotional expression reserved for the dictator. That is why both Wiener and the Committee stressed the qualities of independence and self-awareness in the democratic personality. And it was against the background of fascism that, during and after the 1960s, Vietnam protestors, civil-rights activists, feminists, queer-rights activists, and other members of the myriad communities who drove the rise of identity politics asserted their individual, lived experience as the basis of their right to political power. If the essence of totalitarianism was collective self-effacement, the foundation of democracy would have to be the assertion of collective individuality.
</div></div></div><div class="linenum" id="linenum-55"><div class="leftcolumn" id="leftcolumn-55"><div class="linenumber">55</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-56"><div class="leftcolumn" id="leftcolumn-56"><div class="linenumber">56</div><div class="sentence">Today, radio and television talk shows, podcasts, blogs, and, of course, social media are part of a new media ecosystem that has rendered the voicing of ones experiences so easy and powerful as to turn it into an appealing tool for the right as well as the left. Figures such as Richard Spencer, for instance, have adopted the playful, confessional style of online influencers everywhere. Since Spencer coined the euphemistic term in 2008, the “alt-right” has come to shelter white nationalists, anti-Semites, radical misogynists, and neo-Nazis. What holds the movement together in the public eye is its savvy use of social media. Over the past two years, scholars at the Data &amp; Society Research Institute, an independent think tank in New York, have been tracking the rise of the alt-right online. In a series of reports, they have revealed a world in which the kinds of men who chanted “Jews will not replace us!” in Char­lottesville, Virginia, present themselves in the bright, first-person style of online makeup instructors. They aim to be read as whole people—witty, warm, and authentically themselves.
</div></div></div><div class="linenum" id="linenum-57"><div class="leftcolumn" id="leftcolumn-57"><div class="linenumber">57</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-58"><div class="leftcolumn" id="leftcolumn-58"><div class="linenumber">58</div><div class="sentence">Rebecca Lewis, a Data &amp; Society researcher who is now a ­PhD student at Stanford, has studied sixty-five such right-wing influencers on ­YouTube. Most are masters of microcelebrity. They brand themselves with care, spark attention-getting controversy wherever possible, link to one anothers websites, appear on one anothers ­YouTube shows, and optimize their video feeds for search engines. Despite their intellectual differences, Lewis points out that they have been able to create the impression that they are a unified political force. Their chummy, millennial-­friendly style, she argues, goes a long way toward suggesting that really, you know, anti-Semitism and violent, racist riots are the kind of thing that thinking young people everywhere ought to embrace.
</div></div></div><div class="linenum" id="linenum-59"><div class="leftcolumn" id="leftcolumn-59"><div class="linenumber">59</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-60"><div class="leftcolumn" id="leftcolumn-60"><div class="linenumber">60</div><div class="sentence">Alt-right figures have consciously modeled their online behavior after the political logic of the 1960s counterculture, and particularly its New Communalist wing. In a 2016 interview with The Atlantic, Spencer could have been channeling an entire generation of commune-builders when he said, “We are really trying to change the world, and we are going to do that by changing consciousness, and by changing how people see the world, and how they see themselves.” The Daily Stormer, a neo-Nazi website, put the project less benignly in a leaked style guide: “One should study the ways that Jews conquered our culture in the 1960s. . . . They created a subculture by infesting certain elements of the existing culture. That is what we aim to do.”
</div></div></div><div class="linenum" id="linenum-61"><div class="leftcolumn" id="leftcolumn-61"><div class="linenumber">61</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-62"><div class="leftcolumn" id="leftcolumn-62"><div class="linenumber">62</div><div class="sentence">The identity-based movements of the left have been extraordinarily effective at changing American culture, and the alt-right clearly hopes to copy their success. By claiming the mantle of rebellion, the alt-right can take to the streets in protest as if anticolonialism in the classroom were a new Vietnam War. They can argue that their ability to spew hate is in fact a civil right, and that their movement is simply a new version of the Free Speech Movement of 1964. On ­YouTube, they can tell stories of their own conversion to conservatism in an idiom pioneered by gay activists: the coming-out story. Lewis notes that the conservative activist Candace Owens rose to YouTube fame after she posted a humorous video on her channel, Red Pill Black, that revealed her political beliefs to her parents. Owens titled it, “Mom, Dad?. . . Im a Conservative.” When friends and families find their new politics reprehensible, the converts need not engage. Their storytelling style alone implies that racism and nationalism are in fact just as natural and true as a persons sexuality.
</div></div></div><div class="linenum" id="linenum-63"><div class="leftcolumn" id="leftcolumn-63"><div class="linenumber">63</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-64"><div class="leftcolumn" id="leftcolumn-64"><div class="linenumber">64</div><div class="sentence">Pundits on the left are fond of reminding us of how Trump storms and fulminates, the White House itself unable to contain his petulance and rage. Those same pundits then marvel that around 40 percent of the American people still think he is doing a good job. What they fail to understand is that Trump has mastered the politics of authenticity for a new media age. What mainstream analysts see as psychological weakness, Trumps fans see as the man just being himself. Whats more, his anger, his rants, and his furious narcissism act out the feelings of people who believe they have been dispossessed by immigrants, women, and people of color. Trump is not only true to his own emotions. He is the personification of his supporters grievances. He is to his political base what Hitler was to many Germans, or Mussolini to Italians—the living embodiment of the nation.
</div></div></div><div class="linenum" id="linenum-65"><div class="leftcolumn" id="leftcolumn-65"><div class="linenumber">65</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-66"><div class="leftcolumn" id="leftcolumn-66"><div class="linenumber">66</div><div class="sentence">Here, the identity-centered liberalism that has dominated so much of public life since the Second World War has come full circle. Its victories have been many, from civil rights to legalized abortion and gay marriage, and they have dramatically changed American life for the better. But in the form of people like Trump and Spencer, the performance of individualism—the revelation of the whole person in the context of public debate that was meant for so long to be a bulwark against totalitarianism—has also allowed todays authoritarians to claim a new legitimacy. Fifty years ago, the New Left marched on the Pentagon, hoping to undermine the military-industrial complex behind the Vietnam War. Today, Trump attacks the FBI and the Justice Department, hoping to undermine a fantastical Mino­taur called “the deep state.” Fifty years ago, the counterculture hoped to bring about a world in which individuals could be more authentically themselves, and in which the hierarchies of organizations and states would disappear. Today, those hierarchical institutions are all that stand between us and a cult of personality.
</div></div></div><div class="linenum" id="linenum-67"><div class="leftcolumn" id="leftcolumn-67"><div class="linenumber">67</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-68"><div class="leftcolumn" id="leftcolumn-68"><div class="linenumber">68</div><div class="sentence">If the communes of the 1960s teach us anything, they teach us that a community that replaces laws and institutions with a cacophony of individual voices courts bigotry and collapse. Without explicit, democratically adopted rules for distributing resources, the communes allowed unspoken cultural norms to govern their lives. Women were frequently relegated to the most traditional of gender roles; informal racial segregation was common; and charismatic leaders—almost always men—took charge. Even the most well-intentioned communes began to replicate the racial and sexual dynamics that dominated mainstream America. Lois Brand recalled that on the communes they visited, men would do “important stuff” like framing up domes, while she and the other women would put small amounts of bleach in the water to keep residents from getting sick.
</div></div></div><div class="linenum" id="linenum-69"><div class="leftcolumn" id="leftcolumn-69"><div class="linenumber">69</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-70"><div class="leftcolumn" id="leftcolumn-70"><div class="linenumber">70</div><div class="sentence">For all their sophistication, the algorithms that drive Facebook cannot prevent the recrudescence of the racism and sexism that plagued the communes. On the contrary, social-media platforms have helped bring them to life at a global scale. And now those systems are deeply entrenched. Social-media technologies have spawned enormous corporations that make money by mapping and mining the social world. Like the extraction industries of previous centuries, they are highly motivated to expand their territories and bend local elites to their will. Without substantial pressure, they have little incentive to serve a public beyond their shareholders. Companies such as Facebook and Twitter are coming to dominate our public sphere to the same degree that Standard Oil once dominated the petroleum industry. They too should be subject to antitrust laws. We have every right to apply the same standards to social-media companies that we have applied to other extraction industries. We cannot allow them to pollute the lands they mine, or to injure their workers, nearby residents, or those who use their products.
</div></div></div><div class="linenum" id="linenum-71"><div class="leftcolumn" id="leftcolumn-71"><div class="linenumber">71</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-72"><div class="leftcolumn" id="leftcolumn-72"><div class="linenumber">72</div><div class="sentence">As Columbia law professor Tim Wu has argued, social-media companies are enabling a new form of censorship by allowing human and robotic users to flood the inboxes of their enemies in an effort to keep them quiet, and there are little-used provisions of the First Amendment that could radically slow these processes. We also have alternatives to traditional private or stockholder ownership of our social media. We can already see some of the possibilities in sharing practices developed within the computer industry, such as open-source code and “copyleft” rights management. An international community of scholars and technologists has looked for some time at creating cooperatively owned online platforms. As Nathan Schneider, a professor at the University of Colorado and one of the movements leaders, has pointed out, member-owned cooperatives generate 11 percent of the electricity sold in America. If social media are equally important to our lives, he asks, why shouldnt we take a hand in owning and managing them?
</div></div></div><div class="linenum" id="linenum-73"><div class="leftcolumn" id="leftcolumn-73"><div class="linenumber">73</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-74"><div class="leftcolumn" id="leftcolumn-74"><div class="linenumber">74</div><div class="sentence">That question is a good one, but it doesnt quite capture the historical specifics of our situation. The new authoritarianism represented by Spencer and Trump is not only a product of who owns todays media. Its also a product of the political vision that helped drive the creation of social media in the first place—a vision that distrusts public ownership and the political process while celebrating engineering as an alternative form of governance. Since the Second World War, critics have challenged the legitimacy of our civic institutions simply on the grounds that they were bureaucratic and slow to change. Yet organizations such as hospitals demonstrate the value of these features. They remind us that a democracy must do more than allow its citizens to speak. It must help them live. Above all, it must work to distribute our wealth more equably and to ensure that every member of society has both independence and security. This is work that requires intense negotiation among groups with conflicting material interests, and, often, deep-seated cultural differences. It requires the existence of institutions that can preserve and enforce the results of those negotiations over time. And it requires that those institutions be obliged to serve the public before tending to their own profits.
</div></div></div><div class="linenum" id="linenum-75"><div class="leftcolumn" id="leftcolumn-75"><div class="linenumber">75</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-76"><div class="leftcolumn" id="leftcolumn-76"><div class="linenumber">76</div><div class="sentence">Todays social media will never be able to do the difficult, embodied work of democracy. Computer-­supported interconnection is simply no substitute for face-to-face negotiation, long-term collaboration, and the hard work of living together. The Black Lives Matter and #MeToo movements have taught us that social media can be a powerful force for liberating us from the fiction that all is well just as it is. But the attention these activists have brought to their causes will mean little if the changes they call for are not enshrined in explicit, enforceable laws. Even though the American state can be inefficient, unfair, corrupt, and discriminatory, the logic of representation that underlies it remains the most effective engine we have for ensuring the equable distribution of our collective wealth.
</div></div></div><div class="linenum" id="linenum-77"><div class="leftcolumn" id="leftcolumn-77"><div class="linenumber">77</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-78"><div class="leftcolumn" id="leftcolumn-78"><div class="linenumber">78</div><div class="sentence">Over time, as new media have saturated our public lives, and as the children of the 1960s have grown into the elites of today, we have learned that if we want a place on the political stage, we need to make our interior lives outwardly visible. We need to say who we are. We need to confess. When Richard Spencer calls himself a member of a victimized minority, or when Donald Trump bares his anger on Twitter, they are using the same tactics once deployed by the protesters of the 1960s or, for that matter, by participants in the #MeToo movement today. To make this observation is not to say that their causes are in any way equivalent—far from it. But whether they are lying like Trump or revealing long-buried truths like the members of #MeToo, those who would claim power in the public sphere today must speak in a deeply personal idiom. They must display the authentic individuality that members of the Committee for National Morale once thought could be the only bulwark against totalitarianism, abroad and at home.
</div></div></div><div class="linenum" id="linenum-79"><div class="leftcolumn" id="leftcolumn-79"><div class="linenumber">79</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-80"><div class="leftcolumn" id="leftcolumn-80"><div class="linenumber">80</div><div class="sentence">Speaking our truths has always been necessary, but it will never be sufficient to sustain our democracy. Its time to let go of the fantasy that engineers can do our politics for us, and that all we need to do to change the world is to voice our desires in the public forums they build. For much of the twentieth century, Americans on both the left and right believed that the organs of the state were the enemy and that bureaucracy was totalitarian by definition. Our challenge now is to reinvigorate the institutions they rejected and do the long, hard work of turning the truths of our experience into legislation.</div></div></div><div class="linenum" id="linenum-81"><div class="leftcolumn" id="leftcolumn-81"><div class="linenumber">81</div><div class="sentence">Speaking our truths has always been necessary, but it will never be sufficient to sustain our democracy. Its time to let go of the fantasy that engineers can do our politics for us, and that all we need to do to change the world is to voice our desires in the public forums they build. For much of the twentieth century, Americans on both the left and right believed that the organs of the state were the enemy and that bureaucracy was totalitarian by definition. Our challenge now is to reinvigorate the institutions they rejected and do the long, hard work of turning the truths of our experience into legislation.</div></div></div></body></html>

@ -0,0 +1,80 @@
<html><head><link href="style.css" rel="stylesheet" type="text/css"/><meta charset="utf-8"/></head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence">ESSAY — From the January 2019 issue
</div></div><div class="rightcolumn" id="rightcolumn-1"><div class="comment" id="comment-1"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 1 test? (05:17PM on March 20, 2019) </span></div><div class="comment" id="comment-1"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 1 The Goliath of totalitarianism will be brought down by the David of the microchip,” Ronald Reagan said in 1989. He was speaking to a thousand British notables in Londons historic Guildhall, several months before the fall of the Berlin Wall. Reagan proclaimed that the world was on the precipice of “a new era in human history,” one that wo (05:24PM on March 20, 2019) </span></div><div class="comment" id="comment-1"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 1 The Goliath of totalitarianism will be brought down by the David of the microchip,” Ronald Reagan said in 1989. He was speaking to a thousand British notables in Londons historic Guildhall, several months before the fall of the Berlin Wall. Reagan proclaimed that the world was on the precipice of “a new era in human history,” one that would bring “peace and freedom for all.” Communism was crumbling, just as fascism had before it. Liberal democracies would soon encircle the globe, thanks to the innovations of Silicon Valley. “I believe,” he said, “that more than armies, more than diplomacy, more than the best intentions of democratic nations, the communications revolution will be the greatest force for the advancement of human freedom the world has ever seen.” (05:24PM on March 20, 2019) </span></div><div class="comment" id="comment-1"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 1 but it doesnt quite capture the historical specifics of our situation. The new authoritarianism represented by Spencer and Trump is not only a product of who owns todays media. Its also a product of the political vision that helped drive the creation of social media in the first place—a vision that distrusts public ownership and the political process while celebrating engineering as an alternative form of governance. Since the Second World War, critics have challenged the legitimacy of our civic institutions simply on the grounds that they were bureaucratic and slow to change. Yet organizations such as hospitals demonstrate the value of these features. They remind us that a democracy must do more than allow its citizens to speak. It must help them live. Above all, it must work to distribute our wealth more equably and to ensure that every member of society has both independence and security. This is work that requires intense negotiation among groups with conflicting material interests, and, often, deep-seated cultural differences. It requires the existence of institutions that can preserve and enforce the results of those negotiations over time. And it requires that those institutions be obliged to serve the public before tending to their own profits. (05:48PM on March 20, 2019) </span></div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">Machine Politics
</div></div><div class="rightcolumn" id="rightcolumn-2"><div class="comment" id="comment-2"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 2 I am commenting via one XMPP channel to the multiple HTMLs. (05:34PM on March 20, 2019) </span></div></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence">The rise of the internet and a new age of authoritarianism
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">By Fred Turner
</div></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence">"The Goliath of totalitarianism will be brought down by the David of the microchip,” Ronald Reagan said in 1989. He was speaking to a thousand British notables in Londons historic Guildhall, several months before the fall of the Berlin Wall. Reagan proclaimed that the world was on the precipice of “a new era in human history,” one that would bring “peace and freedom for all.” Communism was crumbling, just as fascism had before it. Liberal democracies would soon encircle the globe, thanks to the innovations of Silicon Valley. “I believe,” he said, “that more than armies, more than diplomacy, more than the best intentions of democratic nations, the communications revolution will be the greatest force for the advancement of human freedom the world has ever seen.”
</div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence">At the time, most everyone thought Reagan was right. The twentieth century had been dominated by media that delivered the same material to millions of people at the same time—radio and newspapers, movies and television. These were the kinds of one-to-many, top-down mass media that Orwells Big Brother had used to stay in power. Now, however, Americans were catching sight of the internet. They believed that it would do what earlier media could not: it would allow people to speak for themselves, directly to one another, around the world. “True personalization is now upon us,” wrote MIT professor Nicholas Negroponte in his 1995 bestseller Being Digital. Corporations, industries, and even whole nations would soon be transformed as centralized authorities were demolished. Hierarchies would dissolve and peer-to-peer collaborations would take their place. “Like a force of nature,” wrote Negroponte, “the digital age cannot be denied or stopped.”
</div></div></div><div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">One of the deepest ironies of our current situation is that the modes of communication that enable todays authoritarians were first dreamed up to defeat them. The same technologies that were meant to level the political playing field have brought troll farms and Russian bots to corrupt our elections. The same platforms of self-expression that we thought would let us empathize with one another and build a more harmonious society have been co-opted by figures such as Milo Yiannopoulos and, for that matter, Donald Trump, to turn white supremacy into a topic of dinner-­table conversation. And the same networked methods of organizing that so many thought would bring down malevolent states have not only failed to do so—think of the Arab Spring—but have instead empowered autocrats to more closely monitor protest and dissent.
</div></div></div><div class="linenum" id="linenum-11"><div class="leftcolumn" id="leftcolumn-11"><div class="linenumber">11</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-12"><div class="leftcolumn" id="leftcolumn-12"><div class="linenumber">12</div><div class="sentence">If were going to resist the rise of despotism, we need to understand how this happened and why we didnt see it coming. We especially need to grapple with the fact that todays right wing has taken advantage of a decades-long liberal effort to decentralize our media. That effort began at the start of the Second World War, came down to us through the counterculture of the 1960s, and flourishes today in the high-tech hothouse of Silicon Valley. It is animated by a deep faith that when engineering replaces politics, the alienation of mass society and the threat of totalitarianism will melt away. As Trump fumes on Twitter, and Facebook posts are linked to genocide in Myanmar, we are beginning to see just how misplaced that faith has been. Even as they grant us the power to communicate with others around the globe, our social-­media networks have spawned a new form of authoritarianism.
</div></div></div><div class="linenum" id="linenum-13"><div class="leftcolumn" id="leftcolumn-13"><div class="linenumber">13</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-14"><div class="leftcolumn" id="leftcolumn-14"><div class="linenumber">14</div><div class="sentence">The political vision that brought us to this point emerged in the 1930s, as a response to fascism. In the years before the Second World War, Americans were mystified as to how Germany, one of the most sophisticated nations in Europe, had tumbled down the dark hole of National Socialism. Today wed likely blame Hitlers rise on the economic chaos and political infighting of the Weimar era. But at the time, many blamed mass media. When Hitler spoke to row upon row of Nazi soldiers at torch-lit rallies, the radio broadcast his voice into every German home. When he drove through adoring crowds, standing in his Volks­wagen convertible, giving the Nazi salute, the newsreel cameras were there. In 1933, the New York Times described the predicament of the average German this way:
</div></div></div><div class="linenum" id="linenum-15"><div class="leftcolumn" id="leftcolumn-15"><div class="linenumber">15</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-16"><div class="leftcolumn" id="leftcolumn-16"><div class="linenumber">16</div><div class="sentence">With coordinated newspaper headlines overpowering him, with radio voices beseeching him, with news reels and feature pictures arousing him, and with politicians and professors philosophizing for him, the individual German has been unable to salvage his identity and has been engulfed in a brown wave. . . . They are living in a Nazi dream and not in the reality of the world.
</div></div></div><div class="linenum" id="linenum-17"><div class="leftcolumn" id="leftcolumn-17"><div class="linenumber">17</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-18"><div class="leftcolumn" id="leftcolumn-18"><div class="linenumber">18</div><div class="sentence">Toward the end of the decade, President Roosevelt began searching for ways to urge Americans to take a unified stand against fascism. Given the rise of right-wing fervor in the United States at the time, he had reason to worry. The racism and anti-­Semitism that characterized Nazi Germany also characterized much of American life. By 1938, millions of Americans listened weekly as Father Charles Coughlin, a Catholic demagogue, celebrated the rise of fascism and decried the existence of the Jews. Thousands of American fascists banded together in groups with names like the Silver Legion of America and the Crusader White Shirts. The Amerikadeutscher Volksbund, a 25,000-member pro-Nazi organization commonly known as the Bund, ran a summer camp on Long Island called Camp Siegfried, where young men marched in Nazi-style uniforms as their friends and families cheered. On February 20, 1939, the Bund brought more than 22,000 Americans to New Yorks Madison Square Garden to welcome fascism to American shores. When they gathered, a huge banner hung over their heads: stop jewish domination of christian americans!
</div></div></div><div class="linenum" id="linenum-19"><div class="leftcolumn" id="leftcolumn-19"><div class="linenumber">19</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-20"><div class="leftcolumn" id="leftcolumn-20"><div class="linenumber">20</div><div class="sentence">As the United States geared up for war, its leaders faced a quandary: they wanted to use media to unite Americans against their enemies, but many also feared that using mass media to do it would transform Americans into just the kind of authoritarians they were trying to defeat. Roosevelts cabinet sought advice from a group of intellectuals calling themselves the Committee for National Morale. The Committee had been founded in the summer of 1940 by a historian of Persian art named Arthur Upham Pope, who brought together a number of Americas leading thinkers, including the anthropologists Margaret Mead and Gregory Bateson, psychologists Gordon Allport and Kurt Lewin, and journalists Edmond Taylor and Ladislas Farago. Over the next two years, they would advise the Roosevelt Administration; produce pamphlets, news articles, and books; and set the cornerstone of our contemporary faith in decentralized media.
</div></div></div><div class="linenum" id="linenum-21"><div class="leftcolumn" id="leftcolumn-21"><div class="linenumber">21</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-22"><div class="leftcolumn" id="leftcolumn-22"><div class="linenumber">22</div><div class="sentence">The Committee began by defining national morale in terms of what they called the democratic personality. Members of the Committee joined many American intellectuals in subscribing to the views of the anthropologist Franz Boas, who believed that cultures shape the personalities of their members in predictable ways. Germans, they thought, tended toward rigidity and an affection for authority, hence Hitlers famously bureaucratic Nazi regime was a natural extension of the German character. Americans were more open, individualistic, expressive, collaborative, and tolerant, and so more at home in loose coalitions. Whatever kind of propaganda medium the Committee promoted would need to preserve the individuality of American citizens. Allport summed up the Committees vision in a 1942 essay. “In a democracy,” he wrote, “every personality can be a citadel of resistance to tyranny. In the co-ordination of the intelligences and wills of one hundred million whole men and women lies the formula for an invincible American morale.”
</div></div></div><div class="linenum" id="linenum-23"><div class="leftcolumn" id="leftcolumn-23"><div class="linenumber">23</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-24"><div class="leftcolumn" id="leftcolumn-24"><div class="linenumber">24</div><div class="sentence">As the Committee sought to coordinate rather than dominate American minds, its members turned to a kind of media system that we might now call a platform: the museum. These days were not used to the idea of buildings as media systems. But the Committee thought about museums in the same way many think about virtual reality today—as immersive visual environments where we can increase our empathy for one another. Mead, who was a student of Boas and worked for the American Museum of Natural History in New York, pointed out that in a museum, people could walk among images and objects distributed across the walls and around the floor, choosing to pay attention to those that seemed most meaningful to them. They could hone their individual tastes, they could reason about their individual places in the world, and they could do it together.
</div></div></div><div class="linenum" id="linenum-25"><div class="leftcolumn" id="leftcolumn-25"><div class="linenumber">25</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-26"><div class="leftcolumn" id="leftcolumn-26"><div class="linenumber">26</div><div class="sentence">In 1942, the Museum of Modern Art in New York put the Committees vision into practice with a widely heralded propaganda exhibition entitled Road to Victory. Most American art shows at the time featured images of more or less identical sizes hung in a row at eye level, but this one mounted images of all sizes overhead, at the viewers feet, and everywhere in between. A path wound through the forest of photographs. The pictures were carefully chosen to spark patriotic fervor, but judging from reviews, it was the manner of their display that captivated the shows audience. As one critic put it, the show did not seek to “mold” its visitors beliefs, “for that word smacks of the Fascist concept of dominating mens minds.” It simply invited Americans to walk down the road to war, individually unique, yet collectively united. Another reviewer wrote: “It is this inescapable sense of identity—the individual spectator identifying himself with the whole—that makes the event so moving.”
</div></div></div><div class="linenum" id="linenum-27"><div class="leftcolumn" id="leftcolumn-27"><div class="linenumber">27</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-28"><div class="leftcolumn" id="leftcolumn-28"><div class="linenumber">28</div><div class="sentence">The first electronic computer would not be unveiled until 1946, and the internet was still decades away. Yet the Committees vision became central to how we think about computers today when several of its members began to collaborate with a mathematician named Norbert Wiener. In the first years of the war, Wiener and his MIT colleagues were trying to design a more accurate antiaircraft defense system. Antiaircraft gunners would only be able to shoot down enemy planes reliably if they could predict where the planes would be when the gunners shells reached the sky. At the time, there was no way to make that prediction with any certainty, since both gunner and pilot were capable of random movements. Wiener tried to solve this problem by imagining the gunner, the antiaircraft gun, the enemy pilot, and the enemy plane as elements in a single system whose behavior could be represented mathematically.
</div></div></div><div class="linenum" id="linenum-29"><div class="leftcolumn" id="leftcolumn-29"><div class="linenumber">29</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-30"><div class="leftcolumn" id="leftcolumn-30"><div class="linenumber">30</div><div class="sentence">Wieners antiaircraft predictor never worked on the battlefield. But his insight that the behavior of both machines and human beings could be represented through computation became a founding principle of computer science. In 1946, it also became a founding principle of a new political vision. That year, Wiener and members of his scientific community traveled to New York to meet with a group of sociologists and psychologists, Mead and Bateson of the Committee for National Morale prominent among them. Together, the social and laboratory scientists began to outline a vision of a liberal world modeled and managed by computers, a vision that they would develop over the next seven years, and that would become one of the most influential intellectual movements of the twentieth century: cybernetics.
</div></div></div><div class="linenum" id="linenum-31"><div class="leftcolumn" id="leftcolumn-31"><div class="linenumber">31</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-32"><div class="leftcolumn" id="leftcolumn-32"><div class="linenumber">32</div><div class="sentence">In 1950, Wiener published The Human Use of Human Beings, an enormously popular introduction to the new field that argued that modern society operated through a series of information exchanges, just like the antiaircraft predictor. Reporters and social scientists gathered data; intellectuals, business leaders, and politicians processed it; and, ultimately, the systems they controlled took action. When working properly, such a process would naturally tend toward equilibrium—that is, social order. And computers, Wiener argued, could help improve the flow of information by supplying decision-makers with better data faster. “Fascists, Strong Men in Business, and Government . . . prefer an organization in which all orders come from above, and none return,” wrote Wiener. The solution to totalitarianism, he argued, was to recognize the world as a system of leveled, distributed communication that could be modeled and managed by computers. The proper way to achieve the Committees vision and democratize society, his argument implied, was to take power away from politicians and put it in the hands of engineers.
</div></div></div><div class="linenum" id="linenum-33"><div class="leftcolumn" id="leftcolumn-33"><div class="linenumber">33</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-34"><div class="leftcolumn" id="leftcolumn-34"><div class="linenumber">34</div><div class="sentence">Wieners writings fired the imaginations of an unlikely group of young Americans, members of the Sixties counterculture who would go on to have an outsized impact on the computer industry. Between 1965 and 1973, as many as 750,000 Americans left their apartments and suburban houses and created new collective communities. A few of these communes were religious, but most were secular gatherings of white, middle- and upper-middle-class young people seeking to leave mainstream America behind. In northern California, refugees from Haight-Ashbury migrated north, to the woods of Mendocino, and east, to the high plains of Colorado and the mountains of New Mexico. Some even set up shop in the hills around Stanford University, overlooking what we now call Silicon Valley.
</div></div></div><div class="linenum" id="linenum-35"><div class="leftcolumn" id="leftcolumn-35"><div class="linenumber">35</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-36"><div class="leftcolumn" id="leftcolumn-36"><div class="linenumber">36</div><div class="sentence">Elsewhere Ive called this generation of pilgrims the “New Communalists” to distinguish them from members of the New Left, with whom they often disagreed. Unlike the young dissidents who formed parties and wrote manifestos, the New Communalists hoped to do away with politics entirely. They wanted to organize their communities around a shared mind-set, a unified consciousness. Many agreed with Charles Reich when he wrote in his 1970 bestseller, The Greening of America, that industrial society offered “a robot life, in which man is deprived of his own being, and he becomes instead a mere role, occupation, or function.” According to Reich, the solution was to cultivate a new consciousness of ones own desires and needs, of the connections between ones body, ones mind, and the natural world. Such a consciousness, he explained, could become the foundation of a new kind of society, one that would be nonhierarchical and collaborative.
</div></div></div><div class="linenum" id="linenum-37"><div class="leftcolumn" id="leftcolumn-37"><div class="linenumber">37</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-38"><div class="leftcolumn" id="leftcolumn-38"><div class="linenumber">38</div><div class="sentence">Watching this migration take shape was Stewart Brand, a former multimedia artist and sometime member of Ken Keseys psychedelic wrecking crew, the Merry Pranksters. In 1968, Brand and his wife Lois drove their aging pickup truck to a string of communes to see what the new settlers needed in the way of tools. That fall, the Brands set up shop in Menlo Park, California, not far from where Facebooks headquarters stand today, and began to publish a document that quickly became required reading across the counterculture: the Whole Earth Catalog. Despite its name, the Catalog did not actually sell anything. Instead, it collected recommendations for tools that might be useful to people headed back to the land. One of those tools was Norbert Wieners first book, Cybernetics. Another was an early and massive Hewlett-Packard calculator.
</div></div></div><div class="linenum" id="linenum-39"><div class="leftcolumn" id="leftcolumn-39"><div class="linenumber">39</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-40"><div class="leftcolumn" id="leftcolumn-40"><div class="linenumber">40</div><div class="sentence">The New Communalists eschewed what Reich called the “machine world” of tanks and bombs and the industrial bureaucracies that produced them. The rule-bound hierarchies of the corporation and the state, they thought, alienated their members from their own feelings and turned them into the kind of buttoned-­down apparatchiks who could launch a nuclear war. Even so, the New Communalists embraced small technologies that they hoped would help them live as independent citizens within the kind of universe that Wiener and the Committee had described, a universe in which all things were interlinked by information. The Catalog gave readers access to plans for Buckminster Fullers geodesic domes and guides to everything from cheap travel to boatbuilding. At a time when it could be difficult to find a commune if you didnt know someone who lived on one, the Catalog also became a map of the commune world and its concerns. As the first nodes of the internet were being wired together, the Catalog became a paperbound search engine.
</div></div></div><div class="linenum" id="linenum-41"><div class="leftcolumn" id="leftcolumn-41"><div class="linenumber">41</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-42"><div class="leftcolumn" id="leftcolumn-42"><div class="linenumber">42</div><div class="sentence">The future leaders of Silicon Valley took notice. Steve Jobs, who had spent some time on a commune called All One Farm, would later call the Catalog “one of the bibles of my generation. . . . It was sort of like Google in paperback form, thirty-five years before Google came along.” Alan Kay, whose designs for a graphical user interface would shape several generations of Apple computers, explained that he and his colleagues saw the Catalog as an information system in its own right. In that sense, he said, he “thought of the Whole Earth Catalog as a print version of what the internet was going to be.”
</div></div></div><div class="linenum" id="linenum-43"><div class="leftcolumn" id="leftcolumn-43"><div class="linenumber">43</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-44"><div class="leftcolumn" id="leftcolumn-44"><div class="linenumber">44</div><div class="sentence">By the mid-1980s, computers were small enough to sit on desks, and individual users were able to type messages to one another in real time. Most of the communes had collapsed, but the computer industry in northern California was growing rapidly, and it welcomed former communards. Brand worked with Larry Brilliant, who would later help launch Googles philanthropy division, ­Google.org, to design an online discussion system known as the Whole Earth Lectronic Link or WELL. On the WELL, users dialed in to a server where they saw messages from other users in threaded conversations. Howard Rheingold, a journalist and early member, believed that the WELL was a melding of the minds, a kind of virtual community. “Personal computers and the PC industry,” he wrote later, “were created by young iconoclasts who had seen the LSD revolution fizzle, the political revolution fail. Computers for the people was the latest battle in the same campaign.”
</div></div></div><div class="linenum" id="linenum-45"><div class="leftcolumn" id="leftcolumn-45"><div class="linenumber">45</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-46"><div class="leftcolumn" id="leftcolumn-46"><div class="linenumber">46</div><div class="sentence">By the end of the decade, when Reagan hailed the “David of the microchip,” many in Silicon Valley believed they had the tools to create the kind of person-centered democracy that the Committee had envisioned. They would achieve it through open conversation spaces like the WELL, engineered public spheres in which individuals gave voice to their experiences, gathered feedback from their peers, and changed their behavior accordingly. They shared Wieners faith in the power of information systems to liberate those who used them, and the Committees confidence that, given the chance to express themselves, individuals could create their own social order, without the need for top-down government control. If the mass-media era had brought us Hitler and Stalin, they believed, the internet would bring us back our individuality. Finally, we could do away with hierarchy, bureaucracy, and totalitarianism. Finally, we could just be ourselves, together.
</div></div></div><div class="linenum" id="linenum-47"><div class="leftcolumn" id="leftcolumn-47"><div class="linenumber">47</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-48"><div class="leftcolumn" id="leftcolumn-48"><div class="linenumber">48</div><div class="sentence">Today, that sense of utopian mission persists throughout Silicon Valley. A month after Trump took office, Mark Zuckerberg laid out his social vision in a Facebook post entitled “Building Global Community.” Though only a few thousand words long, the document is every bit as ambitious as Wieners The Human Use of Human Beings. Like Wiener, Zuckerberg envisions a world in which individuals, communities, and nations create an ideal social order through the constant exchange of information—that is, through staying “connected.” “Our greatest opportunities are now global—like spreading prosperity and freedom, promoting peace and understanding, lifting people out of poverty, and accelerating science,” he wrote, sounding much like a representative of the Cold Warera State Department. “In times like these,” he continued, “the most important thing we at Facebook can do is develop the social infrastructure to give people the power to build a global community that works for all of us.”
</div></div></div><div class="linenum" id="linenum-49"><div class="leftcolumn" id="leftcolumn-49"><div class="linenumber">49</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-50"><div class="leftcolumn" id="leftcolumn-50"><div class="linenumber">50</div><div class="sentence">For Zuckerberg, as for much of the left today, the key to a more egalitarian society lies in the freeing of individual voices, the expression of different lived experiences, and the forming of social groups around shared identities. But Facebook has tried to enable this kind of society by creating privately owned, for-profit digital technologies. As Zuckerberg put it, echoing the goals of the Whole Earth Catalog fifty years before, “Our commitment is to continue improving our tools to give you the power to share your experience.” Engineers like Zuckerberg or, for that matter, Wiener, have little interest in party politics: if you want to change the world, you dont lobby or vote; you build new technologies.
</div></div></div><div class="linenum" id="linenum-51"><div class="leftcolumn" id="leftcolumn-51"><div class="linenumber">51</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-52"><div class="leftcolumn" id="leftcolumn-52"><div class="linenumber">52</div><div class="sentence">This view has proved enormously profitable across Silicon Valley. By justifying the belief that for-profit systems are the best way to improve public life, it has helped turn the expression of individual experience into raw material that can be mined, processed, and sold. The big social-media companies, which often began with a dream of making WELL-like virtual communities at scale, have now become radically commercialized and devoted to surveillance at every level. On the WELL, users listened to each other, trying to get a feel for what kinds of people they were and how they might work together. Now user data is optimized and retailed automatically, to advertisers and other media firms, in real time. Computers track conversations and extract patterns at light speed, rendering them profitable. In 2017, Facebook reported annual revenue of more than $40 billion.
</div></div></div><div class="linenum" id="linenum-53"><div class="leftcolumn" id="leftcolumn-53"><div class="linenumber">53</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-54"><div class="leftcolumn" id="leftcolumn-54"><div class="linenumber">54</div><div class="sentence">Social medias ability to simultaneously solicit and surveil communication has not only turned the dream of individualized, expressive democracy into a fountain of wealth. It has turned it into the foundation of a new kind of authoritarianism. Fascists used to be distinguished by their penchant for obedience, submission, and self-erasure, with the power of public emotional expression reserved for the dictator. That is why both Wiener and the Committee stressed the qualities of independence and self-awareness in the democratic personality. And it was against the background of fascism that, during and after the 1960s, Vietnam protestors, civil-rights activists, feminists, queer-rights activists, and other members of the myriad communities who drove the rise of identity politics asserted their individual, lived experience as the basis of their right to political power. If the essence of totalitarianism was collective self-effacement, the foundation of democracy would have to be the assertion of collective individuality.
</div></div></div><div class="linenum" id="linenum-55"><div class="leftcolumn" id="leftcolumn-55"><div class="linenumber">55</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-56"><div class="leftcolumn" id="leftcolumn-56"><div class="linenumber">56</div><div class="sentence">Today, radio and television talk shows, podcasts, blogs, and, of course, social media are part of a new media ecosystem that has rendered the voicing of ones experiences so easy and powerful as to turn it into an appealing tool for the right as well as the left. Figures such as Richard Spencer, for instance, have adopted the playful, confessional style of online influencers everywhere. Since Spencer coined the euphemistic term in 2008, the “alt-right” has come to shelter white nationalists, anti-Semites, radical misogynists, and neo-Nazis. What holds the movement together in the public eye is its savvy use of social media. Over the past two years, scholars at the Data &amp; Society Research Institute, an independent think tank in New York, have been tracking the rise of the alt-right online. In a series of reports, they have revealed a world in which the kinds of men who chanted “Jews will not replace us!” in Char­lottesville, Virginia, present themselves in the bright, first-person style of online makeup instructors. They aim to be read as whole people—witty, warm, and authentically themselves.
</div></div></div><div class="linenum" id="linenum-57"><div class="leftcolumn" id="leftcolumn-57"><div class="linenumber">57</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-58"><div class="leftcolumn" id="leftcolumn-58"><div class="linenumber">58</div><div class="sentence">Rebecca Lewis, a Data &amp; Society researcher who is now a ­PhD student at Stanford, has studied sixty-five such right-wing influencers on ­YouTube. Most are masters of microcelebrity. They brand themselves with care, spark attention-getting controversy wherever possible, link to one anothers websites, appear on one anothers ­YouTube shows, and optimize their video feeds for search engines. Despite their intellectual differences, Lewis points out that they have been able to create the impression that they are a unified political force. Their chummy, millennial-­friendly style, she argues, goes a long way toward suggesting that really, you know, anti-Semitism and violent, racist riots are the kind of thing that thinking young people everywhere ought to embrace.
</div></div></div><div class="linenum" id="linenum-59"><div class="leftcolumn" id="leftcolumn-59"><div class="linenumber">59</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-60"><div class="leftcolumn" id="leftcolumn-60"><div class="linenumber">60</div><div class="sentence">Alt-right figures have consciously modeled their online behavior after the political logic of the 1960s counterculture, and particularly its New Communalist wing. In a 2016 interview with The Atlantic, Spencer could have been channeling an entire generation of commune-builders when he said, “We are really trying to change the world, and we are going to do that by changing consciousness, and by changing how people see the world, and how they see themselves.” The Daily Stormer, a neo-Nazi website, put the project less benignly in a leaked style guide: “One should study the ways that Jews conquered our culture in the 1960s. . . . They created a subculture by infesting certain elements of the existing culture. That is what we aim to do.”
</div></div></div><div class="linenum" id="linenum-61"><div class="leftcolumn" id="leftcolumn-61"><div class="linenumber">61</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-62"><div class="leftcolumn" id="leftcolumn-62"><div class="linenumber">62</div><div class="sentence">The identity-based movements of the left have been extraordinarily effective at changing American culture, and the alt-right clearly hopes to copy their success. By claiming the mantle of rebellion, the alt-right can take to the streets in protest as if anticolonialism in the classroom were a new Vietnam War. They can argue that their ability to spew hate is in fact a civil right, and that their movement is simply a new version of the Free Speech Movement of 1964. On ­YouTube, they can tell stories of their own conversion to conservatism in an idiom pioneered by gay activists: the coming-out story. Lewis notes that the conservative activist Candace Owens rose to YouTube fame after she posted a humorous video on her channel, Red Pill Black, that revealed her political beliefs to her parents. Owens titled it, “Mom, Dad?. . . Im a Conservative.” When friends and families find their new politics reprehensible, the converts need not engage. Their storytelling style alone implies that racism and nationalism are in fact just as natural and true as a persons sexuality.
</div></div></div><div class="linenum" id="linenum-63"><div class="leftcolumn" id="leftcolumn-63"><div class="linenumber">63</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-64"><div class="leftcolumn" id="leftcolumn-64"><div class="linenumber">64</div><div class="sentence">Pundits on the left are fond of reminding us of how Trump storms and fulminates, the White House itself unable to contain his petulance and rage. Those same pundits then marvel that around 40 percent of the American people still think he is doing a good job. What they fail to understand is that Trump has mastered the politics of authenticity for a new media age. What mainstream analysts see as psychological weakness, Trumps fans see as the man just being himself. Whats more, his anger, his rants, and his furious narcissism act out the feelings of people who believe they have been dispossessed by immigrants, women, and people of color. Trump is not only true to his own emotions. He is the personification of his supporters grievances. He is to his political base what Hitler was to many Germans, or Mussolini to Italians—the living embodiment of the nation.
</div></div></div><div class="linenum" id="linenum-65"><div class="leftcolumn" id="leftcolumn-65"><div class="linenumber">65</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-66"><div class="leftcolumn" id="leftcolumn-66"><div class="linenumber">66</div><div class="sentence">Here, the identity-centered liberalism that has dominated so much of public life since the Second World War has come full circle. Its victories have been many, from civil rights to legalized abortion and gay marriage, and they have dramatically changed American life for the better. But in the form of people like Trump and Spencer, the performance of individualism—the revelation of the whole person in the context of public debate that was meant for so long to be a bulwark against totalitarianism—has also allowed todays authoritarians to claim a new legitimacy. Fifty years ago, the New Left marched on the Pentagon, hoping to undermine the military-industrial complex behind the Vietnam War. Today, Trump attacks the FBI and the Justice Department, hoping to undermine a fantastical Mino­taur called “the deep state.” Fifty years ago, the counterculture hoped to bring about a world in which individuals could be more authentically themselves, and in which the hierarchies of organizations and states would disappear. Today, those hierarchical institutions are all that stand between us and a cult of personality.
</div></div></div><div class="linenum" id="linenum-67"><div class="leftcolumn" id="leftcolumn-67"><div class="linenumber">67</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-68"><div class="leftcolumn" id="leftcolumn-68"><div class="linenumber">68</div><div class="sentence">If the communes of the 1960s teach us anything, they teach us that a community that replaces laws and institutions with a cacophony of individual voices courts bigotry and collapse. Without explicit, democratically adopted rules for distributing resources, the communes allowed unspoken cultural norms to govern their lives. Women were frequently relegated to the most traditional of gender roles; informal racial segregation was common; and charismatic leaders—almost always men—took charge. Even the most well-intentioned communes began to replicate the racial and sexual dynamics that dominated mainstream America. Lois Brand recalled that on the communes they visited, men would do “important stuff” like framing up domes, while she and the other women would put small amounts of bleach in the water to keep residents from getting sick.
</div></div></div><div class="linenum" id="linenum-69"><div class="leftcolumn" id="leftcolumn-69"><div class="linenumber">69</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-70"><div class="leftcolumn" id="leftcolumn-70"><div class="linenumber">70</div><div class="sentence">For all their sophistication, the algorithms that drive Facebook cannot prevent the recrudescence of the racism and sexism that plagued the communes. On the contrary, social-media platforms have helped bring them to life at a global scale. And now those systems are deeply entrenched. Social-media technologies have spawned enormous corporations that make money by mapping and mining the social world. Like the extraction industries of previous centuries, they are highly motivated to expand their territories and bend local elites to their will. Without substantial pressure, they have little incentive to serve a public beyond their shareholders. Companies such as Facebook and Twitter are coming to dominate our public sphere to the same degree that Standard Oil once dominated the petroleum industry. They too should be subject to antitrust laws. We have every right to apply the same standards to social-media companies that we have applied to other extraction industries. We cannot allow them to pollute the lands they mine, or to injure their workers, nearby residents, or those who use their products.
</div></div></div><div class="linenum" id="linenum-71"><div class="leftcolumn" id="leftcolumn-71"><div class="linenumber">71</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-72"><div class="leftcolumn" id="leftcolumn-72"><div class="linenumber">72</div><div class="sentence">As Columbia law professor Tim Wu has argued, social-media companies are enabling a new form of censorship by allowing human and robotic users to flood the inboxes of their enemies in an effort to keep them quiet, and there are little-used provisions of the First Amendment that could radically slow these processes. We also have alternatives to traditional private or stockholder ownership of our social media. We can already see some of the possibilities in sharing practices developed within the computer industry, such as open-source code and “copyleft” rights management. An international community of scholars and technologists has looked for some time at creating cooperatively owned online platforms. As Nathan Schneider, a professor at the University of Colorado and one of the movements leaders, has pointed out, member-owned cooperatives generate 11 percent of the electricity sold in America. If social media are equally important to our lives, he asks, why shouldnt we take a hand in owning and managing them?
</div></div></div><div class="linenum" id="linenum-73"><div class="leftcolumn" id="leftcolumn-73"><div class="linenumber">73</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-74"><div class="leftcolumn" id="leftcolumn-74"><div class="linenumber">74</div><div class="sentence">That question is a good one, but it doesnt quite capture the historical specifics of our situation. The new authoritarianism represented by Spencer and Trump is not only a product of who owns todays media. Its also a product of the political vision that helped drive the creation of social media in the first place—a vision that distrusts public ownership and the political process while celebrating engineering as an alternative form of governance. Since the Second World War, critics have challenged the legitimacy of our civic institutions simply on the grounds that they were bureaucratic and slow to change. Yet organizations such as hospitals demonstrate the value of these features. They remind us that a democracy must do more than allow its citizens to speak. It must help them live. Above all, it must work to distribute our wealth more equably and to ensure that every member of society has both independence and security. This is work that requires intense negotiation among groups with conflicting material interests, and, often, deep-seated cultural differences. It requires the existence of institutions that can preserve and enforce the results of those negotiations over time. And it requires that those institutions be obliged to serve the public before tending to their own profits.
</div></div></div><div class="linenum" id="linenum-75"><div class="leftcolumn" id="leftcolumn-75"><div class="linenumber">75</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-76"><div class="leftcolumn" id="leftcolumn-76"><div class="linenumber">76</div><div class="sentence">Todays social media will never be able to do the difficult, embodied work of democracy. Computer-­supported interconnection is simply no substitute for face-to-face negotiation, long-term collaboration, and the hard work of living together. The Black Lives Matter and #MeToo movements have taught us that social media can be a powerful force for liberating us from the fiction that all is well just as it is. But the attention these activists have brought to their causes will mean little if the changes they call for are not enshrined in explicit, enforceable laws. Even though the American state can be inefficient, unfair, corrupt, and discriminatory, the logic of representation that underlies it remains the most effective engine we have for ensuring the equable distribution of our collective wealth.
</div></div></div><div class="linenum" id="linenum-77"><div class="leftcolumn" id="leftcolumn-77"><div class="linenumber">77</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-78"><div class="leftcolumn" id="leftcolumn-78"><div class="linenumber">78</div><div class="sentence">Over time, as new media have saturated our public lives, and as the children of the 1960s have grown into the elites of today, we have learned that if we want a place on the political stage, we need to make our interior lives outwardly visible. We need to say who we are. We need to confess. When Richard Spencer calls himself a member of a victimized minority, or when Donald Trump bares his anger on Twitter, they are using the same tactics once deployed by the protesters of the 1960s or, for that matter, by participants in the #MeToo movement today. To make this observation is not to say that their causes are in any way equivalent—far from it. But whether they are lying like Trump or revealing long-buried truths like the members of #MeToo, those who would claim power in the public sphere today must speak in a deeply personal idiom. They must display the authentic individuality that members of the Committee for National Morale once thought could be the only bulwark against totalitarianism, abroad and at home.
</div></div></div><div class="linenum" id="linenum-79"><div class="leftcolumn" id="leftcolumn-79"><div class="linenumber">79</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-80"><div class="leftcolumn" id="leftcolumn-80"><div class="linenumber">80</div><div class="sentence">Speaking our truths has always been necessary, but it will never be sufficient to sustain our democracy. Its time to let go of the fantasy that engineers can do our politics for us, and that all we need to do to change the world is to voice our desires in the public forums they build. For much of the twentieth century, Americans on both the left and right believed that the organs of the state were the enemy and that bureaucracy was totalitarian by definition. Our challenge now is to reinvigorate the institutions they rejected and do the long, hard work of turning the truths of our experience into legislation.</div></div></div><div class="linenum" id="linenum-81"><div class="leftcolumn" id="leftcolumn-81"><div class="linenumber">81</div><div class="sentence">Speaking our truths has always been necessary, but it will never be sufficient to sustain our democracy. Its time to let go of the fantasy that engineers can do our politics for us, and that all we need to do to change the world is to voice our desires in the public forums they build. For much of the twentieth century, Americans on both the left and right believed that the organs of the state were the enemy and that bureaucracy was totalitarian by definition. Our challenge now is to reinvigorate the institutions they rejected and do the long, hard work of turning the truths of our experience into legislation.</div></div><div class="rightcolumn" id="rightcolumn-81"><div class="comment" id="comment-81"><span class="comment-text" style="border-bottom: 2px solid rgb(83,158,210);">bootje: #comment 81 test? (05:30PM on March 20, 2019) </span></div></div></div></body></html>

@ -0,0 +1,10 @@
<html><head><link rel="stylesheet" href="style.css" type="text/css"/><meta charset="utf-8"/></head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence">DEPENDENCY OF NETWORK
</div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">By Bohye Woo
</div></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">DEPENDENCY
</div></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence">NETWORK
</div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence">WHAT DOES DEPENDENCY MEAN IN OUR NETWORK?
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence">Traceroute:
</div></div></div><div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">XMPP:
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">Annotation Bot:</div></div></div></body></html>

@ -0,0 +1,76 @@
<html><head><link href="style.css" rel="stylesheet" type="text/css"/><meta charset="utf-8"/></head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence">[DEPENDENCIES IN A NETWORK]
</div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">HOW IS OUR NETWORK DEPENDING ON OTHERS?
</div></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence">By Bohye Woo
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence">Categories:
</div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence">
<a href="http://p.lions.es/GN_3/gn_3.html">#NETWORK(ED) PUBLISHING</a>
</div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence">#AUTONOMY AND ITS CONTINGENCIES
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence">#MAPPING NETWORKS
</div></div></div><div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">ANNOTATED GLOSSARY:
</div></div></div><div class="linenum" id="linenum-11"><div class="leftcolumn" id="leftcolumn-11"><div class="linenumber">11</div><div class="sentence">DEPENDENCIES
</div></div><div class="rightcolumn" id="rightcolumn-11"><div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(146,194,110);">bootje: Is then Artemis independent?
She is reliant on her router in order to give me permission to have my server hosted and hers too. Her router is connected to the Eternet cable that is one of the most common forms of network cable used on wired networks. If she disconnect the Ethernet cable from her router, she and I will be disconnected from our own servers too. Likewise if she doesn't pay the Internet fee or her contract is finished, then she'll lose her network too.
(09:20AM on March 26, 2019) </span></div><div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(111,234,131);">bootje: The reason why I am socially dependent on Artemis is because of my technical problem at my house. (09:21AM on March 26, 2019) </span></div><div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(111,234,131);">bootje: Social dependency:
Although I'm hosting my server, I feel that I have a sense of distance from my server that I don't tend to use it often for such a long time. While my classmates made use of it for saving files and images, I left my server empty for quite long time. Because I am not physically possess my sever at home nor I didn't want to bother her for asking to visit her checking my device, I tend to forget using it nor thinking of it. Moreover if she doesn't allow me to either visit her to fix my device that is connected to my server or if there is a disconnection from ethernet cable, her network will disjoin from me.
(09:21AM on March 26, 2019) </span></div><img src="./output/my server.png"/><div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(32,189,42);">bootje: I'm relying on some different protocols: TCP/IP, HTTP, XMPP, SSH... (09:22AM on March 26, 2019) </span></div><div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(12,254,241);">bootje: Relying on someone else's network to host my own server means that it's the beginning of an endless parasitic situation. Being a bloodsucker feels much more pressures than being a host because you have many technical, physical and practical concerns come along while being dependent on the host. Even if I have my own server hosted, that doesn't mean that I have full control over the server. Over the few months, my server has been staying at my host's server trying to be dependent on its own situation. Living off at someone else's bring you a mixture feeling of being useless sometimes.
(09:42AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-12"><div class="leftcolumn" id="leftcolumn-12"><div class="linenumber">12</div><div class="sentence">OUR NETWORK
</div></div><div class="rightcolumn" id="rightcolumn-12"><div class="comment" id="comment-12"><span class="comment-text" style="border-bottom: 2px solid rgb(111,234,131);">bootje: I use two computer network protocols: TCP/IP(Transmission control protocol/Internet protocol) that TCP divides a message or files into packets that are transmitted over the Internet and then reassembled when they reach their destination, and IP is responsible for the address of each packet so that it gets to the correct destination. It is a communication protocol for enabling smooth connunication within the local area network. I am relying on these protocol within my self-hosted network.
(09:22AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-13"><div class="leftcolumn" id="leftcolumn-13"><div class="linenumber">13</div><div class="sentence">XMPP
</div></div></div><div class="linenum" id="linenum-14"><div class="leftcolumn" id="leftcolumn-14"><div class="linenumber">14</div><div class="sentence">ANNOTAION
</div></div></div><div class="linenum" id="linenum-15"><div class="leftcolumn" id="leftcolumn-15"><div class="linenumber">15</div><div class="sentence">SCREEN
</div></div></div><div class="linenum" id="linenum-16"><div class="leftcolumn" id="leftcolumn-16"><div class="linenumber">16</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-17"><div class="leftcolumn" id="leftcolumn-17"><div class="linenumber">17</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-17"><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(146,194,110);">bootje: Layers of Parasitism (Why couldn't I make my own Internet Protocol(IP) for my server?)
One form of my parasitism is a social parasitism that is when an species relies on another species to raise its young. In my case, in order to raise my own network, I become a parasite who stays in Artemis' router to host my server. When I succeeded becoming a technical parasite, I got my Internet Protocol address (IP address): 77.172.158.66:4444. Here I can see my success on becoming a technical parasite with the port number :4444. I am officially part of the host 77.172.158.66 being an semi-dependent as '4444'. By having the port number '4444', I claim my own independent space, however I am technically leaving off inside Artemis' local area network(LAN).
(09:17AM on March 26, 2019) </span></div><img src="./output/my IP address.png"/></div></div><div class="linenum" id="linenum-18"><div class="leftcolumn" id="leftcolumn-18"><div class="linenumber">18</div><div class="sentence">Why I couldn't have my server hosted in my house?
</div></div><div class="rightcolumn" id="rightcolumn-18"><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(110,8,118);">bootje: Sharing on my own experience living in Holland as an international student, I had humongous amount of belongings in my previous place in Den Haag, it was such a big problem to move out with all the furnitures and the home appliances, so I sold everything of what I bought, and moved into the new place.
(09:12AM on March 26, 2019) </span></div><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(213,156,108);">bootje: Currently I'm living in the apartment owned by a housing company called Holland2Stay, mostly international expats and students stay, where everything, including a bed, a table, a sofa, drawers, dish plates, cups, wineglasses, even an iron, mini spoons were all inclusive as a full package. Obviously internet service was included too, and you only needed to purchase a router. It seems very convinient, however, when I tried hosting my server in the router, it never made me pleasent. The central network system where they control all the routers connected to, is prohibited me from hosting my server because I couldn't have access to the router. Eventually I can't install any other server under this network that's highly secured. The housing company(Holland2Stay) has a bigger power on the network that I can't do anything with my Internet which I pay for my own service.
(09:12AM on March 26, 2019) </span></div><img src="./output/My internet router webpage.png"/><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(110,8,118);">bootje: #What kinds of unexpected situation occured(contingency).
A contingency plan: I became technically dependent on someone: hosting my server at Artemis' place where her server also stays in. Partly my server is separated from hers because I'm not sharing server with her, but with her router(machine). Being hosted your own server at someone else's place doesn't feel that I am fully dependent on my server. I am dependent on someone's physical space, router, Internet provider, electricity, time, even financially... (I feel like I need to support her in some different ways.) If any of them changes by her own freedom of choice, I will forcefully have to change my situation that is caused by the host's selection.
(09:13AM on March 26, 2019) </span></div><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(213,156,108);">bootje: I'm parasitic on someone to be able to live my own. I am parasitic in her server, meaning that my sever will be dependent on her decision. How ironic it is to be autonomous by parasiting on someone else.
(09:14AM on March 26, 2019) </span></div><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(90,106,133);">bootje: Dependency is where there is a power dynamic, some sort of giving permission to someone else to do something. One person being more powerful than others because one has something that the others doesn't have. Therefore the weak need to be parasitic to the host.
(09:16AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-19"><div class="leftcolumn" id="leftcolumn-19"><div class="linenumber">19</div><div class="sentence">What solutions I found around them?
</div></div></div><div class="linenum" id="linenum-20"><div class="leftcolumn" id="leftcolumn-20"><div class="linenumber">20</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-21"><div class="leftcolumn" id="leftcolumn-21"><div class="linenumber">21</div><div class="sentence">XMPP
</div></div></div><div class="linenum" id="linenum-22"><div class="leftcolumn" id="leftcolumn-22"><div class="linenumber">22</div><div class="sentence">What is XMPP?
</div></div><div class="rightcolumn" id="rightcolumn-22"><div class="comment" id="comment-22"><span class="comment-text" style="border-bottom: 2px solid rgb(5,46,144);">bootje: XMPP(Extensible Messaging and Presence Protocol) is a communication protocol that allows systems to talk to each other. An XMPP server provides basic messaging features, and you can use to run your own XMPP service over the Internet or on a local area network.
(09:23AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-23"><div class="leftcolumn" id="leftcolumn-23"><div class="linenumber">23</div><div class="sentence">How does XMPP work?
</div></div><div class="rightcolumn" id="rightcolumn-23"><div class="comment" id="comment-23"><span class="comment-text" style="border-bottom: 2px solid rgb(193,155,105);">bootje: There are bunch of XMPP clients that is available. XMPP clients is any software or application that enables you to connect to an XMPP for instant messaging with other people over the Internet. Basically it's like a platform where you open your chatting room. There are many free clients you can use to open the chatting, for many different devices and operating systems. In my case, I used XMPP client called 'Converse'.
(09:24AM on March 26, 2019) </span></div><div class="comment" id="comment-23"><span class="comment-text" style="border-bottom: 2px solid rgb(193,155,105);">bootje: In order to use XMPP protocol, first, you need an account to log in via client. Having your own domain name system on your server, you can create unlimited amount of account for users who shares your local area network. Or with one account, you can log in to different devices such as phone, laptop, desktop, ipad and so on.. Once you're logged in, you can start creating any of channel you'd like to create, and start chatting!
(09:26AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-24"><div class="leftcolumn" id="leftcolumn-24"><div class="linenumber">24</div><div class="sentence">How does it dependent on others?
</div></div><div class="rightcolumn" id="rightcolumn-24"><div class="comment" id="comment-24"><span class="comment-text" style="border-bottom: 2px solid rgb(62,9,226);">bootje: Since I am staying inside Artemis' local area network(LAN), I had no choice but to create my account from her network. Although I have my own server with the port number '4444' provided by my host(Artemis), still I am residing in her local are network. Eventually I couldn't create my own account. Again this idea of parasitization is coming back: I don't have the right to change neither my account name nor create another account. From A to Z, I am fully unexpectedly relying on her. Although an XMPP protocol is meant to be a free and open-source chat client, I can't be fully independent as a user in this protocol.
(09:31AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-25"><div class="leftcolumn" id="leftcolumn-25"><div class="linenumber">25</div><div class="sentence">An explanation of the dependency map
<div><img class="map" src="dependency-map.pdf"/></div>
</div></div><div class="rightcolumn" id="rightcolumn-25"><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(62,9,226);">bootje: 1. Technically to be able to host your own server, you need a physical house where you can connect the ethernet cable with your router that is joined to Internet provided by Internet service provider(ISP). In my case, Artemis' house is a place we have the main router, with the Internet provider 'Telfort', that allows her to host the server, 77.172.158.66 with a domain name 'please.undo.undo.it'.
(09:32AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(62,9,226);">bootje: 2.
The main local area network brunched out to give permission to create another severs which are: 'sweetandsour.chickenkiller.com', and 'nothat.bad.mn'. Seemingly both local area network(LAN) looks fully independent on each other from their domain name. In actuality, 'sweetandsour.chickenkiller.com' and 'nothat.bad.mn' are living off in the 'please.undo.undo.it' with extra public port numbers of '4444' and '3333' which was created with the lan port 80. Therefore 'sweetandsour.chickenkiller.com' has an IP address of '77.172.158.66:4444' and '77.172.158.66:3333' is the IP address of 'nothat.bad.mn'.
(09:32AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(214,18,105);">bootje: 2.1 Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.
(09:33AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(214,18,105);">bootje: 3. This is an account for logging into an XMPP client. As you can see after the username, we're sharing the host's domain name again. This has to do with the fact of using one local area network. If someone else would like to join to make an account for an XMPP client, that person needs to ask to receive one from the host.
(09:35AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(214,18,105);">bootje: 3-1. Once you have account, it is possible to log in via any digital devices such as phone, laptop, desktop, Ipad and so on.
(09:35AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(228,177,154);">bootje: 4.
This is an XMPP client where we can log in to create channels from an account we created from the local area network of the host. After logged into an XMPP client(server), it's possible to create any channel, meaning that you can be a host of channel or join the existed channel based upon the server of your account. (09:41AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(12,254,241);">bootje: 5. This is an annotation bot channel in which you annotate your comments in. In order to activate the channel, you need to stay inside the server where the Python script is located in, in this case, 'sweetandsour.chickenkiller.com'. The Python script can be runned by entering an XMPP account with the channel name in Terminal, an interface in which you can type and execute text based commands.
(09:43AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(12,254,241);">bootje: 6. Python script is built upon an XMPP library called Slixmpp, Argparse (A parser for command-line), Beautiful Soup (A Python library for pulling data out of HTML and XML files), Pickle/.PKL file (A Python library for serializing and de-serializing an object structure in Python), Urllib (A Python package that collects several modules for working with URLs.), and using txt file (An unformatted generic text content file) and a stylesheet file.
(09:43AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(179,69,10);">bootje: 7. An HTML file will be generated inside the server 'sweetandsour.chickenkiller.com' when running the Python script in Terminal.
(09:44AM on March 26, 2019) </span></div><div class="comment" id="comment-25"><span class="comment-text" style="border-bottom: 2px solid rgb(125,251,93);">bootje: 8. Screen is a command line that offers you to remotely run the Python script persistently. This means you can have your annotation bot run all all times in your server as long as the server is online.
(09:44AM on March 26, 2019) </span></div></div></div><div class="linenum" id="linenum-26"><div class="leftcolumn" id="leftcolumn-26"><div class="linenumber">26</div><div class="sentence">How XMPP is dependent on what?
</div></div></div><div class="linenum" id="linenum-27"><div class="leftcolumn" id="leftcolumn-27"><div class="linenumber">27</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-28"><div class="leftcolumn" id="leftcolumn-28"><div class="linenumber">28</div><div class="sentence">ANNOTATION BOT
</div></div></div><div class="linenum" id="linenum-29"><div class="leftcolumn" id="leftcolumn-29"><div class="linenumber">29</div><div class="sentence">What is Annotation Bot?
</div></div></div><div class="linenum" id="linenum-30"><div class="leftcolumn" id="leftcolumn-30"><div class="linenumber">30</div><div class="sentence">How annotation bot is dependent on what?
</div></div></div><div class="linenum" id="linenum-31"><div class="leftcolumn" id="leftcolumn-31"><div class="linenumber">31</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-32"><div class="leftcolumn" id="leftcolumn-32"><div class="linenumber">32</div><div class="sentence">Screen
</div></div><div class="rightcolumn" id="rightcolumn-32"><img src="./output/screen.png"/></div></div><div class="linenum" id="linenum-33"><div class="leftcolumn" id="leftcolumn-33"><div class="linenumber">33</div><div class="sentence">Traceroute
</div></div></div><div class="linenum" id="linenum-34"><div class="leftcolumn" id="leftcolumn-34"><div class="linenumber">34</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-35"><div class="leftcolumn" id="leftcolumn-35"><div class="linenumber">35</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-36"><div class="leftcolumn" id="leftcolumn-36"><div class="linenumber">36</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-37"><div class="leftcolumn" id="leftcolumn-37"><div class="linenumber">37</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-38"><div class="leftcolumn" id="leftcolumn-38"><div class="linenumber">38</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-39"><div class="leftcolumn" id="leftcolumn-39"><div class="linenumber">39</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-40"><div class="leftcolumn" id="leftcolumn-40"><div class="linenumber">40</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-41"><div class="leftcolumn" id="leftcolumn-41"><div class="linenumber">41</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-42"><div class="leftcolumn" id="leftcolumn-42"><div class="linenumber">42</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-43"><div class="leftcolumn" id="leftcolumn-43"><div class="linenumber">43</div><div class="sentence">.
</div></div></div><div class="linenum" id="linenum-44"><div class="leftcolumn" id="leftcolumn-44"><div class="linenumber">44</div><div class="sentence">.
</div></div></div></body></html>l&gt;t;

@ -0,0 +1,294 @@
#!/usr/bin/env python3
import logging
from getpass import getpass
from argparse import ArgumentParser
import datetime
import pickle
import numpy as np
import slixmpp
import ssl, os, requests, urllib
from bs4 import BeautifulSoup
from urllib.parse import quote as urlquote, unquote as urlunquote
nickname_color = {}
# import the pickled object, serializing and de-serializing a Python object)
def save_obj(obj, name):
with open(name + '.pkl', 'wb') as f:
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
def load_obj(name):
with open(name + '.pkl', 'rb') as f:
return pickle.load(f)
# make a numbered text
def make_numbered_text(input_text, output_html):
if not os.path.exists(output_html): # if output_html path does not exist
text = open(input_text, 'r') # open the txt file
lines = text.readlines() # to divide the text into lines in the form {{"This is line 1"},{"This is line 2"},...}
x = 1
with open(output_html, 'w') as new_html: # open the output_html with writing only as new_html
new_html.write('<html><head><link rel="stylesheet" href="style.css" type="text/css"/><meta '
'charset="utf-8"/></head><body>')
for line in lines: # for each line in the list of lines
new_html.write(
'<div class="linenum" id="linenum-{}"><div class="leftcolumn" id="leftcolumn-{}"><div class="linenumber">{}</div><div class="sentence">{}</div></div></div>'.format(
x, x, x, line))
x = x + 1
new_html.write('</body></html>')
print('I wrote a file', output_html)
# Get color from nickname_color dictionary. If it does not exist, create a color and save it
def get_nickname_color(nickname):
if nickname not in nickname_color: # If nickname is not in dict
color = list(np.random.choice(range(256), size=3)) # Generate random new color
nickname_color[nickname] = color # Save new color in dict
save_obj(nickname_color, 'nickname_color')
return nickname_color[nickname]
# (parameter variable,parameter variable,parameter variable)
def insert_comment_at_line(output_html, comment, line_number, nickname):
with open(output_html, 'r') as f:
text = f.read()
html = BeautifulSoup(text, 'html.parser')
div_id = 'linenum-{}'.format(line_number) # out comes linenum-line_number
line = html.find('div', {'id': div_id}) # find the div that has the id div_id (has the id linenum-line_number)
if not html.find('div', {
'id': 'rightcolumn-{}'.format(line_number)}): # if there is no div with id rightcolumn-line_number
# then make a new div with rightcolumn-line_number and class rightcolumn. Then, append it to the line variable.
right_column = html.new_tag("div")
right_column['id'] = 'rightcolumn-{}'.format(line_number)
right_column['class'] = 'rightcolumn'
line.append(right_column)
else:
right_column = html.find('div', {'id': 'rightcolumn-{}'.format(line_number)})
time = datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")
color = get_nickname_color(nickname)
print(color)
# new_comment = html.new_tag("comment") # make <comment></comment>
new_comment = html.new_tag("div") # make <comment></comment>
new_comment['id'] = 'comment-{}'.format(line_number)
new_comment['class'] = 'comment'
# new_comment['style'] = 'text-decoration: underline; -webkit-text-decoration-color: rgb(' + str(color[0]) + ',' + str(color[1]) + ',' + str(color[2])+');'
comment_text = html.new_tag("span")
comment_text['style'] = 'border-bottom: 2px solid rgb(' + str(color[0]) + ',' + str(color[1]) + ',' + str(color[2])+');'
#remove #comment <number>
comment = comment.split(' ',2)[2]
comment_text.string = nickname + ': ' + comment + ' (' + time + ') ' # make <comment>comment (the parameter variable)</comment>
comment_text['class'] = 'comment-text'
new_comment.append(comment_text)
right_column.append(new_comment)
print(line, comment, '#' + str(line_number) + '#')
print(div_id)
if line:
with open(output_html, 'w') as f:
right_column.append(new_comment)
f.write(html.decode())
def insert_media_at_line(output_html, mediafile, line_number):
with open(output_html, 'r') as f:
text = f.read()
html = BeautifulSoup(text, 'html.parser')
div_id = 'linenum-{}'.format(line_number)
line = html.find('div', {'id': div_id})
if not html.find('div', {'id': 'rightcolumn-{}'.format(line_number)}):
right_column = html.new_tag("div")
right_column['id'] = 'rightcolumn-{}'.format(line_number)
right_column['class'] = 'rightcolumn'
line.append(right_column)
else:
right_column = html.find('div', {'id': 'rightcolumn-{}'.format(line_number)})
print(line, mediafile, '#' + str(line_number) + '#')
print(div_id)
if line:
# notes to self write function to the detect media type
with open(output_html, 'w') as f:
new_image = html.new_tag("img", src=mediafile)
right_column.append(new_image)
f.write(html.decode())
class MUCBot(slixmpp.ClientXMPP):
def __init__(self, jid, password, room, nick, output):
slixmpp.ClientXMPP.__init__(self, jid, password)
self.room = room
self.nick = nick
self.output = output
self.current_line = 0
self.add_event_handler("session_start", self.start) # moment that it logs on
self.add_event_handler("groupchat_message", self.muc_message) # moment that someone start speaking someone
output = self.output
if not os.path.exists(output):
os.mkdir(output)
make_numbered_text('text.txt', 'dependency-of-network.html')
def start(self, event):
self.get_roster()
self.send_presence()
# https://xmpp.org/extensions/xep-0045.html
self.plugin['xep_0045'].join_muc(self.room,
self.nick,
# If a room password is needed, use:
# password=the_room_password,
wait=True)
def muc_message(self, msg):
# Always check that a message is not the bot itself, otherwise you will create an infinite loop responding to your own messages.
if msg['mucnick'] != self.nick:
# Check if an OOB URL is included in the stanza (which is how an image is sent)
# (OOB object - https://xmpp.org/extensions/xep-0066.html#x-oob)
if len(msg['oob']['url']) > 0:
# UPLOADED IMAGE
# Send a reply
self.send_message(mto=msg['from'].bare,
mbody="Really? Oke. I'll add your photo for you, {}.".format(msg['mucnick']),
mtype='groupchat')
# Save the image to the output folder
url = msg['oob']['url'] # grep the url in the message
# urlunquote is like url to filename
filename = os.path.basename(urlunquote(url)) # grep the filename in the url
output = self.output
# if not os.path.exists(output):
# os.mkdir(output)
output_path = os.path.join(output, filename)
u = urllib.request.urlopen(url) # read the image data
new_html = open(output_path, 'wb') # open the output file
new_html.write(u.read()) # write image to file
new_html.close() # close the output file
# If we haven't set current line yet, prompt the user to do so
if self.current_line < 0:
self.send_message(mto=msg['from'].bare,
mbody="{}, before uploading an image, please use the following syntax: #image <line number>".format(
msg['mucnick']),
mtype='groupchat')
# Add image to stream
img = output_path
insert_media_at_line('dependency-of-network.html', img, self.current_line)
else:
# TEXT MESSAGE
words = msg['body'].split()
linenum = words[1]
if msg['body'].startswith("#image"):
if (linenum.isdigit()):
self.current_line = int(words[1])
self.send_message(mto=msg['from'].bare,
mbody="Please now upload the image to be inserted on line {}.".format(
self.current_line),
mtype='groupchat')
else:
self.current_line = -1
self.send_message(mto=msg['from'].bare,
mbody="{}, please use the following syntax: #image <line number>".format(
msg['mucnick']),
mtype='groupchat')
if msg['body'].startswith("#comment"):
print(linenum)
if (linenum.isdigit()):
self.send_message(mto=msg['from'].bare,
mbody="Really? Oke. I'll add your comment that for you, {}.".format(
msg['mucnick']),
mtype='groupchat')
# output_html,comment,line_number,username
insert_comment_at_line('dependency-of-network.html', msg['body'], linenum, msg['mucnick'])
else:
self.send_message(mto=msg['from'].bare,
mbody="{}, please use the following syntax: #comment <line number> <message>...".format(
msg['mucnick']),
mtype='groupchat')
if __name__ == '__main__':
# Setup the command line arguments.
parser = ArgumentParser() # making your own command line - ArgumentParser.
# output verbosity options.
parser.add_argument("-q", "--quiet", help="set logging to ERROR",
action="store_const", dest="loglevel",
const=logging.ERROR, default=logging.INFO)
parser.add_argument("-d", "--debug", help="set logging to DEBUG",
action="store_const", dest="loglevel",
const=logging.DEBUG, default=logging.INFO)
# JID and password options.
parser.add_argument("-j", "--jid", dest="jid", # jid = user
help="JID to use")
parser.add_argument("-p", "--password", dest="password",
help="password to use")
parser.add_argument("-r", "--room", dest="room",
help="MUC room to join")
parser.add_argument("-n", "--nick", dest="nick",
help="MUC nickname") # MUC = multi user chat
# output folder for images
parser.add_argument("-o", "--output", dest="output",
help="output folder, this is where the files are stored",
default="./output/", type=str)
args = parser.parse_args()
# Setup logging.
logging.basicConfig(level=args.loglevel,
format='%(levelname)-8s %(message)s')
if args.jid is None:
args.jid = input("User: ")
if args.password is None:
args.password = getpass("Password: ")
if args.room is None:
args.room = input("MUC room: ")
if args.nick is None:
args.nick = input("MUC nickname: ")
if args.output is None:
args.output = input("Output folder: ")
# Setup the MUCBot and register plugins. Note that while plugins may
# have interdependencies, the order in which you register them does
# not matter.
xmpp = MUCBot(args.jid, args.password, args.room, args.nick, args.output)
xmpp.register_plugin('xep_0030') # Service Discovery
xmpp.register_plugin('xep_0045') # Multi-User Chat
xmpp.register_plugin('xep_0199') # XMPP Ping
xmpp.register_plugin('xep_0066') # Process URI's (files, images)
# Connect to the XMPP server and start processing XMPP stanzas.
xmpp.connect()
xmpp.process()
# Load color data
if os.path.exists("nickname_color.pkl"):
nickname_color = load_obj("nickname_color") # Load dictionary from file into variable (nickname_color)

@ -0,0 +1,173 @@
<html><head><link href="style.css" rel="stylesheet" type="text/css"/><link href="print.css" media="print" rel="stylesheet"/><meta charset="utf-8"/></head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence"><b>DEPENDENCIES IN A NETWORK</b>
</div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">HOW IS OUR NETWORK DEPENDING ON OTHERS?
</div></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence"><i>By Bo Woo</i>
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence"><b>CATEGORIES</b>
</div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence"><a href="http://p.lions.es/GN_3/gn_3.html"><i># NETWORK(ED) PUBLISHING</i></a>
</div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence"><a href="http://p.lions.es/GN_3/gn_3.html"><i># AUTONOMY AND ITS CONTINGENCIES</i></a>
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence"><a href="http://p.lions.es/GN_3/gn_3.html"><i># MAPPING NETWORKS</i></a></div></div></div>
<div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-11"><div class="leftcolumn" id="leftcolumn-11"><div class="linenumber">11</div><div class="sentence">
</div></div></div>
<div class="linenum" id="linenum-12">
<div class="leftcolumn" id="leftcolumn-12">
<div class="linenumber">12</div><div class="sentence">
</div>
</div>
<div class="rightcolumn" id="rightcolumn-12">
<div class="comment" id="comment-12">
<span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: Within the context about the Special Issue, dependency in my case is very much about technical question, specifically about the structure of internet protocols. It's about the structure of how my server has been built that my annotation bot has installed in. I am very much looking at this technical dependency of the protocol here.
(11:15PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-12"><span class="comment-text" style="border-bottom: 1px solid rgb(100,216,184);">bootje: It all came from the first day of our Insfrastructour, where we visited each home to host our server. There were many frustrations whilst installing servers. During the setting up our networks, I started to be interested in dependency.
(12:31AM on April 02, 2019) </span></div><img src="./output/infratour.png"/>
</div>
</div>
<div class="linenum" id="linenum-13">
<div class="leftcolumn" id="leftcolumn-13">
<div class="linenumber">13</div>
<div class="sentence"><b>INTRODUCTION</b>
</div>
</div>
<div class="rightcolumn" id="rightcolumn-13">
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 1px solid rgb(70,73,196);">bootje: This is an annotated reader, an XMPP based publishing tool, that I developed as a way to comment my thoughts on the subject of dependencies in our network. (11:06PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: In this reader, some of thoughts are centered around my server, whereas some others are about a new protocol that I learned, the XMPP. And the other is a publishing tool I made, the Annotation Bot.
(11:12PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 1px solid rgb(20,102,98);">bootje: These three layers are the infrastructures I made to host, to chat, and to publish. The first infrastructure is: My server — A hosting infrastructure where I talk about a dependency map, a web tool for tracing the routers, and some situations I went through whilst installing the server. Secondly, an XMPP(Extensible Messaging and Presence Protocol) that is a chatting infrastructure which I eventually made my own tool with. Last but not least, an Annotation Bot as a media tool — <br>A publishing infrastructure that I had been developing as a way to annotate some thoughts. (11:16PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-16">
<span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: This reader is an ongoing project, sometimes I leave the questions or don't answer myself yet. Please feel free to annotate here with the guest account I provide for you. Enjoy your annotating experience.
(11:17PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-16">
<span class="comment-text" style="border-bottom: 1px solid rgb(240,150,100);">bootje: <br/>Guest account: guest@please.undo.undo.it<br/>
Password: guestpassword<br/>
(11:17PM on April 01, 2019) </span>
</div>
<img src="./output/Screenshot 2019-04-01 at 23.22.07.png"/>
<img src="./output/Screenshot 2019-04-01 at 22.58.44.png"/>
</div></div>
<div class="linenum" id="linenum-14"><div class="leftcolumn" id="leftcolumn-14"><div class="linenumber">14</div><div class="sentence"><b>ANNOTATED GLOSSARY</b>
</div></div></div><div class="linenum" id="linenum-15"><div class="leftcolumn" id="leftcolumn-15"><div class="linenumber">15</div><div class="sentence"> ANNOTAION BOT
</div></div><div class="rightcolumn" id="rightcolumn-15"><div class="comment" id="comment-15"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Annotation Bot is an XMPP based web-publishing tool to annotate texts associated with thoughts, images, and sources.<br>With this tool, a user can add comments or image references from any XMPP client via several digital devices. (09:57PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-16"><div class="leftcolumn" id="leftcolumn-16"><div class="linenumber">16</div><div class="sentence"> DEPENDENCIES
</div></div><div class="rightcolumn" id="rightcolumn-16"><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: The term "dependencies" incorporates not only technical factors such as physical access to a router, but also social dependencies,<br>such as whether or not we had to ask anyone for permission to use the network. (03:32PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-17"><div class="leftcolumn" id="leftcolumn-17"><div class="linenumber">17</div><div class="sentence"> OUR NETWORK
</div></div><div class="rightcolumn" id="rightcolumn-17"><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'b-e-e-t.r-o-o-t.net' (09:59PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: ' ciao.urca.tv' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'richfolks.club' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'nothat.bad.mn' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: ' p.lions.es' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'foshan-1992.pw' (10:01PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'please.undo.undo.it' (10:01PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: 'sweetandsour.chickenkiller.com' (10:01PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-18"><div class="leftcolumn" id="leftcolumn-18"><div class="linenumber">18</div><div class="sentence"> TCP/IP
</div></div><div class="rightcolumn" id="rightcolumn-18"><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: They are two protocols (TCP &amp; IP) that allows to establish communication between computers. Now widely adopted as a network standard, its archetype is the Defense Data Network, developed as part of Department of Defense.
(11:12PM on April 01, 2019) </span></div><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 1px solid rgb(100,216,184);">bootje: I use two computer network protocols: TCP/IP(Transmission control protocol/Internet protocol) that TCP divides a message or files into packets that are transmitted over the Internet and then reassembled when they reach their destination, and IP is responsible for the address of each packet so that it gets to the correct destination. It is a communication protocol for enabling smooth connunication within the local area network. I am relying on these protocol within my server. (12:29AM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-19"><div class="leftcolumn" id="leftcolumn-19"><div class="linenumber">19</div><div class="sentence"> DNS
</div></div><div class="rightcolumn" id="rightcolumn-19"><div class="comment" id="comment-19"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: The Domain Name System (DNS) is a hierarchical decentralized naming system for computers, services, or other resources connected to the Internet or a private network. DNS is in the application layer within IP Suite. (11:52PM on April 01, 2019) </span></div></div></div><div class="linenum" id="linenum-20"><div class="leftcolumn" id="leftcolumn-20"><div class="linenumber">20</div><div class="sentence"> HTTP
</div></div><div class="rightcolumn" id="rightcolumn-20"><div class="comment" id="comment-20"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermediainformation systems. HTTP is the foundation of data communication for the World Wide Web, where hypertextdocuments include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen. HTTP was developed to facilitate hypertext and the World Wide Web. (03:53PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-21"><div class="leftcolumn" id="leftcolumn-21"><div class="linenumber">21</div><div class="sentence"> SSH
</div></div><div class="rightcolumn" id="rightcolumn-21"><div class="comment" id="comment-21"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Typical applications include remote command-line login and remote command execution, but any network service can be secured with SSH.<br>On application layer of IP Suite. (07:19PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-22"><div class="leftcolumn" id="leftcolumn-22"><div class="linenumber">22</div><div class="sentence"> XMPP
</div></div><div class="rightcolumn" id="rightcolumn-22"><div class="comment" id="comment-22"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Extensible Messaging and Presence Protocol (XMPP) is a communication protocol for message-oriented middlewarebased on XML (Extensible Markup Language). It enables the near-real-time exchange of structured yet extensible data between any two or more network entities. Originally named Jabber, the protocol was developed by the homonym open-source community in 1999 for near real-time instant messaging (IM), presence information, and contact listmaintenance. Designed to be extensible, the protocol has been used also for publish-subscribe systems, signalling for VoIP, video, file transfer, gaming, the Internet of Things (IoT) applications such as the smart grid, and social networking services. On application layer of Internet Protocal Suite. (07:20PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-23"><div class="leftcolumn" id="leftcolumn-23"><div class="linenumber">23</div><div class="sentence"> ROUTER
</div></div><div class="rightcolumn" id="rightcolumn-23"><div class="comment" id="comment-23"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: A router is a networking device that forwards data packets between computer networks. Routers perform the traffic directing functions on the Internet. (07:21PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-24"><div class="leftcolumn" id="leftcolumn-24"><div class="linenumber">24</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-24"></div></div><div class="linenum" id="linenum-25"><div class="leftcolumn" id="leftcolumn-25"><div class="linenumber">25</div><div class="sentence"><b>SERVER — A HOSTING INFRASTRUCTURE</b>
</div></div></div>
<div class="linenum" id="linenum-26">
<div class="leftcolumn" id="leftcolumn-26">
<div class="linenumber">26</div><div class="sentence"> Dependency Map <div><div class="map"><img src="./output/dependency-map.jpg"/></div></div></div>
</div>
<div class="rightcolumn" id="rightcolumn-26">
<div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(244,240,52);">bootje: An explanation of the dependency map (11:03PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(80,190,112);">bootje: 1. Technically to be able to host your own server, you need a physical home where you can connect the ethernet cable with your router that is joined to Internet provided by Internet service provider(ISP). In my case, Artemis' house is a place we have the main router, with the Internet provider 'Telfort', that allows her to host the server, 77.172.158.66 with a domain name 'please.undo.undo.it'. (11:03PM on April 01, 2019) </span></div><img src="./output/02 Artemis - 77.172.158.66.png"/><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(184,220,204);">bootje: 2.
The main local area network brunched out to give permission to create another severs which are: 'sweetandsour.chickenkiller.com', and 'nothat.bad.mn'. Seemingly both local area network(LAN) looks fully independent on each other from their domain name. In actuality, 'sweetandsour.chickenkiller.com' and 'nothat.bad.mn' are living off in the 'please.undo.undo.it' with extra public port numbers of '4444' and '3333' which was created with the lan port 80. Therefore 'sweetandsour.chickenkiller.com' has an IP address of '77.172.158.66:4444' and '77.172.158.66:3333' is the IP address of 'nothat.bad.mn'.
(11:05PM on April 01, 2019) </span></div>
<img src="./output/myweb.png"/><img src="./output/myweb1.png"/>
<img src="./output/rita.png"/><img src="./output/rita2.png"/>
<div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: 2.1 Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.
(11:09PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: 2.2 Apache is a web/ HTTP Server, a free and open-source cross-platform web server. (11:11PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: 3. This is an account for logging into an XMPP client. As you can see after the username, we're sharing the host's domain name again. This has to do with the fact of using one local area network. If someone else would like to join to make an account for an XMPP client, the person needs to ask to receive one from the host. (11:34PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: 3. This is an account for logging into an XMPP client. As you can see after the username, we're sharing the host's domain name again. This has to do with the fact of using one local area network. If someone else would like to join to make an account for an XMPP client,<br>the person needs to ask to receive one from the host. (12:13AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: 3-1. Once you have account, it is possible to log in via any digital devices such as phone, laptop, desktop, Ipad and so on.
(12:13AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(100,216,184);">bootje: 4. This is an XMPP client where we can log in to create channels from an account we created from the local area network of the host. After logged into an XMPP client(server), it's possible to create any channel, meaning that you can be a host of channel or join the existed channel based upon the server of your account. (12:29AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(109,158,146);">bootje: 5. This is an annotation bot channel in which you annotate your comments in. In order to activate the channel, you need to stay inside the server where the Python script is located in, in this case, 'sweetandsour.chickenkiller.com'. The Python script can be runned by entering an XMPP account with the channel name in Terminal, an interface in which you can type and execute text based commands. (10:53AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(116,39,140);">bootje: 6. Python script is built upon an XMPP library called Slixmpp, Argparse (A parser for command-line), Beautiful Soup (A Python library for pulling data out of HTML and XML files), Pickle/.PKL file (A Python library for serializing and de-serializing an object structure in Python), Urllib (A Python package that collects several modules for working with URLs.), and using TXT file (An unformatted generic text content file) and a stylesheet file. (02:15PM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(116,39,140);">bootje: 7. An HTML file will be generated inside the server 'sweetandsour.chickenkiller.com' when running the Python script in Terminal.
(02:39PM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: 8. Screen is a command line that offers you to remotely run the Python script persistently. This means you can have your annotation bot run all all times in your server as long as the server is online.
(03:29PM on April 02, 2019) </span></div>
</div></div>
<div class="linenum" id="linenum-27"><div class="leftcolumn" id="leftcolumn-27"><div class="linenumber">27</div><div class="sentence"> Why I couldn't host my server at home?
</div></div><div class="rightcolumn" id="rightcolumn-27"><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: Sharing on my own experience living in Holland as an international student, I had humongous amount of belongings in my previous place in Den Haag, it was such a big problem to move out with all the furnitures and the home appliances, so I sold everything of what I bought, and moved into the new place.
(11:16PM on April 01, 2019) </span></div><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: Currently I'm living in the apartment owned by a housing company called Holland2Stay, mostly international expats and students stay, where everything, including a bed, a table, a sofa, drawers, dish plates, cups, wineglasses, even an iron, mini spoons were all inclusive as a full package. Obviously internet service was included too, and you only needed to purchase a router. It seems very convinient, however, when I tried hosting my server in the router, it never made me pleasent. The central network system where they control all the routers connected to, is prohibited me from hosting my server because I couldn't have access to the router. Eventually I can't install any other server under this network that's highly secured. The housing company(Holland2Stay) has a bigger power on the network that I can't do anything with my Internet which I pay for my own service. (12:15AM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 00.18.31.png"/><img src="./output/My internet router webpage.png"/><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 1px solid rgb(232,57,52);">bootje: What kinds of unexpected situation occured? — contingency
A contingency plan: I became technically dependent on someone: hosting my server at Artemis' place where her server also stays in. Partly my server is separated from hers because I'm not sharing server with her, but with her router(machine). Being hosted on own server at someone else's place doesn't feel that I am fully dependent on my server. I am dependent on someone's physical space, router, Internet provider, electricity, time, even financially... If any of them changes by her own freedom of choice, I will forcefully have to change my situation that is caused by the host's selection. (12:22AM on April 02, 2019) </span></div><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: As a student in Holland, you live in housing where everything is provided for you. Everything is included even Internet. So I didn't need to apply for the Internet company, but just needed to plug in my router at home. Once I had Internet connection problem, which have come from the main server of my apartment, everyone in this apartment couldn't use Internet for some periods.
(03:33PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-28"><div class="leftcolumn" id="leftcolumn-28"><div class="linenumber">28</div><div class="sentence"> What solution I found around?
</div></div><div class="rightcolumn" id="rightcolumn-28"><div class="comment" id="comment-28"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Although I'm hosting my server, I feel that I have a sense of distance from my server that I don't tend to use it often for such a long time. While my classmates made use of it for saving files and images, I left my server empty for quite long time. Because I am not physically possess my sever at home nor I didn't want to bother her for asking to visit her checking my device, I tend to forget using it nor thinking of it. Moreover if she doesn't allow me to either visit her to fix my device that is connected to my server or if there is a disconnection from ethernet cable, her network will disjoin from me. (12:25AM on April 02, 2019) </span></div><div class="comment" id="comment-28"><span class="comment-text" style="border-bottom: 1px solid rgb(100,216,184);">bootje: For the second best plan to connect with my server, not physically but in a network way: I became technically dependent on another protocol called SSH(Secure Shell) that is a cryptographic network protocol for operating network services securely over an unsecured network. Being dependent on SSH protocol, I am virtually able to be connected to my server. Again, my ssh connection will be broken down if one of those factors I mentioned above has become a problem. (12:26AM on April 02, 2019) </span></div><img src="./output/ssh.png"/></div></div><div class="linenum" id="linenum-29"><div class="leftcolumn" id="leftcolumn-29"><div class="linenumber">29</div><div class="sentence"> Layers of Parasitism
</div></div><div class="rightcolumn" id="rightcolumn-29"><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: One form of my parasitism is a social parasitism that is when an species relies on another species to raise its young. In my case, in order to raise my own network, I become a parasite who stays in Artemis' router to host my server. When I succeeded becoming a technical parasite, I got my Internet Protocol address (IP address): 77.172.158.66:4444. Here I can see my success on becoming a technical parasite with the port number :4444. I am officially part of the host 77.172.158.66 being an semi-dependent as '4444'. By having the port number '4444', I claim my own independent space, however I am technically leaving off inside Artemis' local area network(LAN). Therefore I have to rely on good will because she is in more powerful position than me. (11:38PM on April 01, 2019) </span></div><img src="./output/my IP address.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 1px solid rgb(232,57,52);">bootje: Dependency is where there is a power dynamic, some sort of giving permission to someone else to do something. One person being more powerful than others because one has something that the others doesn't have. Therefore the weak need to be parasitic to the host.
(12:23AM on April 02, 2019) </span></div><div class="comment" id="comment-30"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Is then Artemis independent? She is reliant on her router in order to give me permission to host my server and hers. Her router is connected to the Eternet cable that is one of the most common forms of network cable used on wired networks. And if she disconnects the Ethernet cable from her router, she and I will be disconnected from the server too. Likewise, if she doesn't pay the Internet fee or her contract is finished, then she'll lose her network too. (02:41PM on April 02, 2019) </span></div><img src="./output/router artemis.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: Relying on someone else's network to host my own server means that it's the beginning of an endless parasitic situation. Being a bloodsucker feels much more pressures than being a host because you have many technical, physical and practical concerns come along while being dependent on the host. Even if I have my own server hosted, that doesn't mean that I have full control over it. Over the few months, my server has been staying at my host's server trying to be dependent on its own situation. Living off at someone else's bring you a mixture feeling of being useless sometimes.. (03:01PM on April 02, 2019) </span></div><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: I'm parasitic on someone to be able to live my own. I am parasitic in Artemis' server, meaning that my sever will be dependent on her decision. How ironic it is to be autonomous by parasiting on someone else. (03:30PM on April 02, 2019) </span></div><img src="./output/artemis1.png"/><img src="./output/artemis3.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 1px solid rgb(94,26,236);">bootje: many 'sorry' and 'thank you' from my side.. (04:35PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-30"><div class="leftcolumn" id="leftcolumn-30"><div class="linenumber">30</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-30"></div></div><div class="linenum" id="linenum-31"><div class="leftcolumn" id="leftcolumn-31"><div class="linenumber">31</div><div class="sentence"> <b>— TRACEROUTE</b>
</div></div></div><div class="linenum" id="linenum-32"><div class="leftcolumn" id="leftcolumn-32"><div class="linenumber">32</div><div class="sentence"> What is Traceroute?
</div></div><div class="rightcolumn" id="rightcolumn-32"><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(184,220,204);">bootje: Traceroute is a network diagnostic tool to map the journey that a packet of IP network undertakes from its source(website) to its destination(website). In simple language, it traces the exact route taken to reach the website from your IP address. (11:08PM on April 01, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(109,158,146);">bootje: When we try reaching to one website, information or requests went from your computer don't reach the final destination(website) in a single jump because there are many networks(Telecommunication companies) involved in between. (10:53AM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(116,39,140);">bootje: So when tracing the router to a random website, there are some hops that show telecommunication companies with IP addresses including a speed it has taken during the journey. (02:45PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(116,39,140);">bootje: A hop is a journey from one source(server) to destination(server). (02:46PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(176,45,254);">bootje: Milliseconds is the amount of time it takes to make a hop
(02:47PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: A packet is the information that travels along the traceroute
(03:35PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-33"><div class="leftcolumn" id="leftcolumn-33"><div class="linenumber">33</div><div class="sentence"> What do you see from Traceroute?
</div></div><div class="rightcolumn" id="rightcolumn-33"><img src="./output/01 traceroute explanation.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(109,158,146);">bootje: The output explains how the server at home traveled to the final destination (sweetandsour.chickenkiller.com). (10:55AM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(116,39,140);">bootje: The first line shows when I Iogged in Terminal, and next line gives what command I used for tracing the router. And there is a third line that shows the Domain Name of my server with the IP address of '77.172.158.66', which, technically, is not mine. (02:48PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: My address would be '77.172.158.66:4444' that has an extra port number because she was willing to share her local are network with another port number. Therefore this address without the port number is technically belongs to Artemis. This means that the IP address shown in Terminal won't lead me to 'sweetandsour.chickenkiller.com' but to to Artemis': 'please.undo.undo.it'.
(02:48PM on April 02, 2019) </span></div><img src="./output/port number.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: I can have a detailed look into each hop between the servers. The first hop is the Internet gateway on the network. It is a private IP address that always starts with '192.168...' A private IP address is just for my router, my network and me. In other words, it is reserved for internal use behind a router apart from the public. (02:56PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: Next, there is 'prioritytelecom.net' with the IP address '80.113.23.145' on the second hop which is a static IP address of Ziggo, an Internet service provider(ISP). (03:36PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Likewise, the third hop is a router on the network 'Ziggo Services B.V.', where they use different IP address '213.126.178.209', is hosted on. I assumed Ziggo has several routers in different locations.
(Ziggo ips) (03:44PM on April 02, 2019) </span></div><img src="./output/ziggo.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: The Fourth hop shows another Internet service provider called Liberty Global, originally an American international telecommunication company that has a brunch in the Netherlands. The 4th, 5th and 6th are the routers on the Liberty Global telecommunication company because of its IP address that starts with '84.116.' In conclusion, there were 6 hops that was needed to go to my server.
(03:54PM on April 02, 2019) </span></div><img src="./output/liberty BV.png"/><img src="./output/Liberty global.png"/></div></div><div class="linenum" id="linenum-34"><div class="leftcolumn" id="leftcolumn-34"><div class="linenumber">34</div><div class="sentence"> How does my server travel to others?
</div></div><div class="rightcolumn" id="rightcolumn-34"><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: Based on my experience on tracing the router from A to B, I was wondering how my server is relating to others. Will my server be depending on anything when it travels to another server? If so, what does my server depends on? (11:39PM on April 01, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: When visiting another website from my home server, what route will I reach to the destination? What can I see when we visit each other's servers?
(02:57PM on April 02, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: I started mapping who I am dependent onto make a connection by tracing the router from each other's server. So I SSH-ed to my server with the username 'bootje', and entered into my server in order to install it: sudo apt-get install traceroute. (02:57PM on April 02, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(141,13,10);">bootje: After finished installing it, I started tracing the routers to 'b-e-e-t.r-o-o-t.net', ' ciao.urca.tv', 'richfolks.club', 'nothat.bad.mn', ' p.lions.es ', 'foshan-1992.pw', 'please.undo.undo.it', and to my own server 'sweetandsour.chickenkiller.com'. (03:37PM on April 02, 2019) </span></div><img src="./output/trace-beetroot.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: Next I asked my fellows to do the same thing: So they traced the router from their server to others including mine. (03:54PM on April 02, 2019) </span></div><img src="./output/traceroute_eachother.jpg"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Tracing the routers between 'sweetandsour.chickenkiller.com' and 'ciao.urca.tv'
(09:01PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.55.15.png"/><img src="./output/Screenshot 2019-04-02 at 20.55.26.png"/>
<div class="comment" id="comment-24"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Tracing the routers between 'ciao.urca.tv' and 'foshan-1992.pw' (09:28PM on April 02, 2019) </span></div>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Tracing the routers between 'nothat.bad.mn' and 'foshan-1992.pw' (09:02PM on April 02, 2019)</span></div><img src="./output/Screenshot 2019-04-02 at 20.55.00.png"/><img src="./output/Screenshot 2019-04-02 at 20.54.52.png"/>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Tracing the routers between 'richfolks.club' and 'please.undo.undo.it' (09:03PM on April 02, 2019) </span></div>
<img src="./output/Screenshot 2019-04-02 at 20.54.30.png"/><img src="./output/Screenshot 2019-04-02 at 20.54.21.png"/>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Tracing the routers between 'b-e-e-t.r-o-o-t.net' and 'foshan-1992.pw' (09:25PM on April 02, 2019) </span></div>
<img src="./output/Screenshot 2019-04-02 at 21.19.43.png"/><img src="./output/Screenshot 2019-04-02 at 21.19.30.png"/><div class="comment" id="comment-24"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Tracing the routers between 'ciao.urca.tv' and 'foshan-1992.pw' (09:28PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.19.18.png"/><img src="./output/Screenshot 2019-04-02 at 21.19.06.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Tracing the routers between 'nothat.bad.mn' and 'foshan-1992.pw' (09:32PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.18.56.png"/><img src="./output/Screenshot 2019-04-02 at 21.18.47.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(206,203,202);">bootje: Tracing the routers between 'please.undo.undo.it' and 'foshan-1992.pw' (09:33PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.18.38.png"/><img src="./output/Screenshot 2019-04-02 at 21.18.31.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: This experiment showed me on how many hops we need to pass to get to each other's server. Besides that I could anticipate the predictable route that was taken during the journey by comparing the route from both sides. (03:55PM on April 02, 2019) </span></div></div></div>
<div class="linenum" id="linenum-35"><div class="leftcolumn" id="leftcolumn-35"><div class="linenumber">35</div><div class="sentence"> What does the traceroute results are?</div></div><div class="rightcolumn" id="rightcolumn-35"><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: When I tracerouted from my server to Biyi's: traceroute foshan-1992.pw, I could see there are three telecommunication company involved: KPN, Swipnet backbone and Tele2. When Biyi traced the router to my server (traceroute sweetandsour.chickenkiller.com),<br>it showed same telecommunication companies: Tele2, swipnet backbone and KPN.
(11:47PM on April 01, 2019) </span></div><img src="./output/bo to biyi.png"/><img src="./output/biyi to bo.png"/><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: The result shows me whenever I or Biyi would visit each other's website, we will have to pass by the three routers from the aforementioned company. (11:49PM on April 01, 2019) </span></div><img src="./output/bo-to-biyi.jpg"/><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: What if the Traceroute cannot find the routers from three companies? The solution would be: My server will find another way to get to the destination, so does hers.
(02:58PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: From this research, I convey the Traceroute is not showing us how the server is relying on something because it doesn't show the hierarchy of our network. But it gives the information such as how my server travels through the routers provided by telecommunication company.
(02:59PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(111,131,118);">bootje: What if one of those telecommunication companies stop their business and remove the router? Then my server can't approach to the destination unless there are still some routers provided by another company.
(03:45PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: For me dependency is about who owns the power, and to whom it has more power to control the situation. I see the relation of a power ownership here: When visiting someone else's server, I should have some routers that is a part of a journey to the destination. Moreover I need telecommunication company, who owns the router, to make connections too. If there would be no companies, there will be routers, which means there will be no hops at all: Eventually my server wouldn't be able to travel to the destination. Each hop is a bridge between two server in our network we made, and if the bridge broke, you can't reach to the final destination unless there is an alternative bridge instead. (03:45PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-36"><div class="leftcolumn" id="leftcolumn-36"><div class="linenumber">36</div><div class="sentence"> Does the telecommunication company owns power?
</div></div><div class="rightcolumn" id="rightcolumn-36"><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(240,32,143);">bootje: Traceroute research shows me a journey to the destination. In this journey, there are at least 1 to 30 hops that shows a router with its IP address of telecomunication company. While tracing the route from 'sweetandsour.chickenkiller.com' to 'foshan-1992.pw', I got to know there are three company involved in several routers. With a small research on the companies, I have found out that Swipnet is Sweden's one of the first commercial Internet service provider in the early 1990s. (11:42PM on April 01, 2019) </span></div><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: And the service is now closed down by Tele2 Sweden, which owned Swipnet since 1994. This means that Swipnet will be disappeared by Tele2 who owns the power. If Tele2 fully takes over the Swipnet, the route of the journey from the servers will be totally different. (11:53PM on April 01, 2019) </span></div><img src="./output/swipnet to tele2.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: About owning the power between the telecommunication company, there is another taking over situation between Tele2 and T-Mobile. According to the government agency, T-Mobile will takeover Tele2 officially, and Tele2 customers will probably be transferred to a comparable or better T-Mobile subscription. (11:54PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-03-31 at 17.37.50.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: There is another small anecdote: When Biyi tried installing a new Internet from Tele2, KPN was taking part of the system for Tele2. Apparently Tele2 and KPN cohabitates each other for their own convenience.
(11:57PM on April 01, 2019) </span></div><img src="./output/kpn.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: I am guessing the final parasitic structure is: Swipnet &lt; Tele2 &lt; T-Mobile, Tele2 <br> &lt; KPN (02:59PM on April 02, 2019) </span></div><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 1px solid rgb(141,13,10);">bootje: The situation of being eaten by another and cohabitation gives me a thought of how the telecommunication companies are hierarchically related each other. Through the Traceroute exercise,<br>I found there is the power constrcution in the concept of Traceroute.
(03:40PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-37"><div class="leftcolumn" id="leftcolumn-37"><div class="linenumber">37</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-37"></div></div><div class="linenum" id="linenum-38"><div class="leftcolumn" id="leftcolumn-38"><div class="linenumber">38</div><div class="sentence"><b>XMPP — A CHATTING INFRASTRUCTURE</b>
</div></div></div><div class="linenum" id="linenum-39"><div class="leftcolumn" id="leftcolumn-39"><div class="linenumber">39</div><div class="sentence"> What is XMPP?
</div></div><div class="rightcolumn" id="rightcolumn-39"><div class="comment" id="comment-39"><span class="comment-text" style="border-bottom: 1px solid rgb(51,1,137);">bootje: XMPP(Extensible Messaging and Presence Protocol) is a communication protocol that allows systems to talk to each other. An XMPP server provides basic messaging features, and you can use to run your own XMPP service over the Internet or on a local area network.
(11:58PM on April 01, 2019) </span></div></div></div><div class="linenum" id="linenum-40"><div class="leftcolumn" id="leftcolumn-40"><div class="linenumber">40</div><div class="sentence"> How does XMPP work?
</div></div><div class="rightcolumn" id="rightcolumn-40"><div class="comment" id="comment-40"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: There are bunch of XMPP clients that is available. An XMPP clients is any software or application that enables you to connect for instant messaging with other people over the Internet. Basically it's like a platform where you open your chatting room. There are many free clients you can use to open the chatting, for many different devices and operating systems. In my case, I used an XMPP client called 'Converse'. (11:58PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-04-01 at 17.09.06.png"/><img src="./output/Screenshot 2019-04-01 at 17.09.38.png"/><img src="./output/xmpp.png"/><div class="comment" id="comment-40"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: There are bunch of XMPP clients that is available. An XMPP clients is any software or application that enables you to connect for instant messaging with other people over the Internet. Basically it's like a platform where you open your chatting room. There are many free clients you can use to open the chatting, for many different devices and operating systems. In my case, I used an XMPP client called 'Converse'.
(03:00PM on April 02, 2019) </span></div><div class="comment" id="comment-40"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: In order to use an XMPP protocol, first, you need an account to log in via client. Having your own domain name system on your server, you can create unlimited amount of account for users who shares your local area network. Or you can log in to different devices such as phone, laptop, desktop, ipad with one account. Once you're logged in, you can start creating any of channel you'd like to create, and start chatting!
(03:40PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-41"><div class="leftcolumn" id="leftcolumn-41"><div class="linenumber">41</div><div class="sentence"> How was I dependent on XMPP?
</div></div><div class="rightcolumn" id="rightcolumn-41"><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: Since I am a parasite on Artemis' local area network(LAN), I had no choice but to create my account from her network. Although I have my own server with the port number '4444' provided by the host, yet I am residing in her local are network. Eventually I couldn't create my own account. Again this idea of parasitization is coming back: I don't have the right to change neither my account name nor create another account.
(03:01PM on April 02, 2019) </span></div><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 1px solid rgb(247,92,86);">bootje: Therefore when creating an XMPP account, I had to ask her permission again. whereas, she never asked me to get permission to do something because she didn't need to.
(03:46PM on April 02, 2019) </span></div><img src="./output/artemis2.png"/><div class="comment" id="comment-42"><span class="comment-text" style="border-bottom: 1px solid rgb(247,92,86);">bootje: Although an XMPP protocol is meant to be a free and open-source chat client, I can't be fully independent as a user in this protocol. From A to Z, I am fully relying on her. (03:46PM on April 02, 2019) </span></div><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: After receiving an account, finally creating a channel is possible. In any channel I created, I can be a host myself. However, in order to make the channel, an address of groupchat is required. For that I need an local area network address, in my case, of course: Artemis' address: please.undo.undo.it. Every step of creating my own<br>server to XMPP account to a channel: I needed her permission.
(03:56PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 18.52.34.png"/></div></div><div class="linenum" id="linenum-42"><div class="leftcolumn" id="leftcolumn-42"><div class="linenumber">42</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-42"></div></div><div class="linenum" id="linenum-43"><div class="leftcolumn" id="leftcolumn-43"><div class="linenumber">43</div><div class="sentence"><b>ANNOTATION BOT — A PUBLISHING INFRASTRUCTURE</b>
</div></div></div><div class="linenum" id="linenum-44"><div class="leftcolumn" id="leftcolumn-44"><div class="linenumber">44</div><div class="sentence"> What is Annotation Bot?
</div></div><div class="rightcolumn" id="rightcolumn-44"><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 1px solid rgb(183,225,197);">bootje: Annotation Bot is an XMPP based web-publishing tool to annotate texts associated with thoughts, images, and sources. With this tool, a user can add comments or image references from any XMPP client via several digital devices. (03:26PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 1px solid rgb(93,202,162);">bootje: Annotation Bot can be used for the following purposes:
(03:26PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: — To add comments with multiple users at the same time remotely
(03:27PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: — To overview the transparency of ownership on commenting
(03:27PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: — As a collaborative publishing tool to discuss the contents
(03:27PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-45"><div class="leftcolumn" id="leftcolumn-45"><div class="linenumber">45</div><div class="sentence"> How was Annotation Bot installed?
</div></div><div class="rightcolumn" id="rightcolumn-45"><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(229,58,246);">bootje: To install the Annotation Bot, you need the following structures: a home server/an account/an XMPP client/ a channel/a TXT file. (03:28PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(141,13,10);">bootje: A home server means a place you store the HTML in which the file was created from a Python script runned by Terminal. (03:41PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(247,92,86);">bootje: As for creating an account, you need a server that allows you to create an account. (03:49PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(247,92,86);">bootje: An XMPP client can be selected depending on the user's preference.
(03:49PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: A Channel is a platform in XMPP client to upload comments and image references.
(03:51PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(13,1,192);">bootje: A TXT file is to store the original text you will annotate.
(03:59PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: The Annotation Bot is written in a Python language that requires some libraries and basic HTML/CSS structure. Before running the Python script inside your server, you need another software to install in order to use this software: Slixmpp, Argparse, Beautiful Soup, Pickle/.PKL file, Urllib. (03:59PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.29.34.png"/><img src="./output/Screenshot 2019-04-02 at 19.30.54.png"/><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(2,1,92);">bootje: Once you have all the libraries installed in the server and the original text is saved as TXT tile, you can go to an XMPP client you selected, in my case 'Converse'. After logging in with your account, A channel can be created. The channel will need an address that will be using when running the code. In my case: dependency-of-network@groups.please.undo.undo.it. (04:07PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(87,179,40);">bootje: Finally you need the following command to run the Bot: python3 FileName.py --jid username@yourserver --room Achannelname@groups.yourserver --nick assign a name for your bot (04:08PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 18.40.27.png"/><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 1px solid rgb(94,26,236);">bootje: After executing the code, a HTML is automatically generated at which you runs the Python script. And it's time to annotate!
(04:23PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-46"><div class="leftcolumn" id="leftcolumn-46"><div class="linenumber">46</div><div class="sentence"> How does Annotation Bot work?
</div></div><div class="rightcolumn" id="rightcolumn-46"><div class="comment" id="comment-46"><span class="comment-text" style="border-bottom: 1px solid rgb(141,13,10);">bootje: Once you have your TXT file ready, it will be used to create a HTML website automatically by Python script. It also generates line numbers which will guide you to annotate. (03:41PM on April 02, 2019) </span></div><div class="comment" id="comment-46"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: Next, you can start commenting by using'#comment linenumber yourcomment'. In case of inserting a photo, you could type '#image linenumber', then the Bot will guide you to upload a photo.
(03:50PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.48.45.png"/></div></div><div class="linenum" id="linenum-47"><div class="leftcolumn" id="leftcolumn-47"><div class="linenumber">47</div><div class="sentence"> What happened when using it?
</div></div><div class="rightcolumn" id="rightcolumn-47"><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: While using the Annotation Bot as a publishing tool, I have bumped with some unexpected situation that limited me to use because of some technical issues.
(03:50PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 1px solid rgb(200,130,92);">bootje: When using the Annotation Bot, the XMPP client kept logging out automatically, that I had to log in several times to connect to the client. Whenver I lose the connection from the client, I can't annotate anything.
(04:00PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 1px solid rgb(87,179,40);">bootje: Even though I was connected to the XMPP clients, I lost my annotation channel quite often for some reason. So I had to set a persistent configuration to my channel in order for the channel(room) should remain when it's empty. (04:08PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-01 at 17.13.52.png"/><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 1px solid rgb(69,16,58);">bootje: In order to use the Bot, you need to be able to log in via an XMPP client, and for that you need to have your account. To be able to get an account, owning your own server is required. Or you can also ask others to make one account for you unless you want an account with your server. (04:09PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 1px solid rgb(94,26,236);">bootje: In my case, although I have self-hosted server, I couldn't manage to get my own account as I was a parasite on Artemis' local area network. So I asked her to create an account for me. (04:23PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-48"><div class="leftcolumn" id="leftcolumn-48"><div class="linenumber">48</div><div class="sentence"> What if?
</div></div><div class="rightcolumn" id="rightcolumn-48"><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(141,13,10);">bootje: If there is no Python language, I can't design the Annotation Bot.
(03:42PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: If I miss one library to download, I can't use my Annotation Bot.
(03:51PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(200,0,10);">bootje: If I don't have my account, I can't use my Annotation Bot.
(04:02PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(69,16,58);">bootje: If I don't have Artemis' server, I can't have my account.
(04:09PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(241,57,219);">bootje: If I don't have Artemis' server, I can't have my account.
(04:10PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(188,40,234);">bootje: If Artemis lose her WIFI connection, she can't have her server.
(04:14PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(188,40,234);">bootje: If she stop subscripting Telfort, she will lose her WIFI connection.
(04:15PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 1px solid rgb(49,125,74);">bootje: If Telfort will be takenover by T-Mobile, she will have to stop the Internet subscription. (04:16PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-49"><div class="leftcolumn" id="leftcolumn-49"><div class="linenumber">49</div><div class="sentence"> How does it dependent on others?
</div></div><div class="rightcolumn" id="rightcolumn-49"><div class="comment" id="comment-49"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: Setting up a server at home has an implicit level of autonomy, yet we're dependent on many levels in our network. One example could be: When using an XMPP, using the protocol already means that you're relying on a certain level. However, there is no such thing as a complete autonomy/dependency. (04:04PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-50"><div class="leftcolumn" id="leftcolumn-50"><div class="linenumber">50</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-51"><div class="leftcolumn" id="leftcolumn-51"><div class="linenumber">51</div><div class="sentence"><b>SCREEN</b>
</div></div></div><div class="linenum" id="linenum-52"><div class="leftcolumn" id="leftcolumn-52"><div class="linenumber">52</div><div class="sentence"> What is Screen?
</div></div><div class="rightcolumn" id="rightcolumn-52"><div class="comment" id="comment-52"><span class="comment-text" style="border-bottom: 1px solid rgb(201,253,110);">bootje: Screen is a command line that offers you to remotely run the Python script persistently. This means you can have your Annotation Bot run all the times in the server as long as the server is online.
(11:13PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.23.54.png"/></div></div><div class="linenum" id="linenum-53"><div class="leftcolumn" id="leftcolumn-53"><div class="linenumber">53</div><div class="sentence"> How to use Screen?
</div></div><div class="rightcolumn" id="rightcolumn-53"><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 1px solid rgb(13,200,192);">bootje: Screen has to be installed where you save your Annotation Bot.
(03:52PM on April 02, 2019) </span></div><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 1px solid rgb(241,57,219);">bootje: How to install: $ sudo apt install screen<br>
(04:12PM on April 02, 2019) </span></div><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 1px solid rgb(73,247,217);">bootje: To open a new terminal session: $ screen<br>
(04:13PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.29.53.png"/><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 1px solid rgb(188,40,234);">bootje: To show all the active screen sessions: $ screen -ls<br>
(04:14PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.51.16.png"/><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 1px solid rgb(49,125,74);">bootje: To Kill a screen session : $ screen -x -s 'screenname' kill
(04:17PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.28.31.png"/></div></div><div class="linenum" id="linenum-54"><div class="leftcolumn" id="leftcolumn-54"><div class="linenumber">54</div><div class="sentence"> Why do I need it?
</div></div><div class="rightcolumn" id="rightcolumn-54"><div class="comment" id="comment-54"><span class="comment-text" style="border-bottom: 1px solid rgb(241,57,219);">bootje: I started thinking about why I couldn't have my Annotation Bot on my laptop all the time. It is because I need to use my computer for other things, I can't have it run 24/7. (04:12PM on April 02, 2019) </span></div><div class="comment" id="comment-54"><span class="comment-text" style="border-bottom: 1px solid rgb(73,247,217);">bootje: Moreover when the Annotation Bot is running, I need a space in my network where I store the HTML generated by Annotation Bot. Because of its live collaborationism in network, I need to have it somewhere in online remotely running. (04:13PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-55"><div class="leftcolumn" id="leftcolumn-55"><div class="linenumber">55</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-56"><div class="leftcolumn" id="leftcolumn-56"><div class="linenumber">56</div><div class="sentence">Acknowledgement</div></div><div class="rightcolumn" id="rightcolumn-56"><div class="comment" id="comment-56"><span class="comment-text" style="border-bottom: 1px solid rgb(127,205,255);">bootje: The Network We (de)Served —
XPUB Special Issue #08 (08:11PM on April 02, 2019) </span></div><div class="comment" id="comment-56"><span class="comment-text" style="border-bottom: 1px solid rgb(100,216,184);">bootje: Brought to you by the Master of Arts in Fine Art and Design: Experimental Publishing (XPUB) of the Piet Zwart Institute, and Varia, Centre for Everyday Technology, Rotterdam, April 2019.<br>(08:16PM on April 02, 2019)</span></div>
</div></div></body>
<!-- <script type="text/javascript" src="https://issue.xpub.nl/08/cnn/cnn.js"></script>
--></html>

@ -0,0 +1,182 @@
<html><head><link href="style.css" rel="stylesheet" type="text/css"/><link href="print.css" media="print" rel="stylesheet"/><meta charset="utf-8"/> <!-- <meta http-equiv="refresh" content="3"> -->
<link href="https://cdn.conversejs.org/4.2.0/css/converse.min.css" media="screen" rel="stylesheet" type="text/css"/>
<script charset="utf-8" src="https://cdn.conversejs.org/4.2.0/dist/converse.min.js"></script>
</head><body><div class="linenum" id="linenum-1"><div class="leftcolumn" id="leftcolumn-1"><div class="linenumber">1</div><div class="sentence"><b>DEPENDENCIES IN A NETWORK</b>
</div></div></div><div class="linenum" id="linenum-2"><div class="leftcolumn" id="leftcolumn-2"><div class="linenumber">2</div><div class="sentence">HOW IS OUR NETWORK DEPENDING ON OTHERS?
</div></div><div class="rightcolumn" id="rightcolumn-2"></div></div><div class="linenum" id="linenum-3"><div class="leftcolumn" id="leftcolumn-3"><div class="linenumber">3</div><div class="sentence"><i>By Bo Woo</i>
</div></div></div><div class="linenum" id="linenum-4"><div class="leftcolumn" id="leftcolumn-4"><div class="linenumber">4</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-4"></div></div><div class="linenum" id="linenum-5"><div class="leftcolumn" id="leftcolumn-5"><div class="linenumber">5</div><div class="sentence"><b>CATEGORIES</b>
</div></div></div><div class="linenum" id="linenum-6"><div class="leftcolumn" id="leftcolumn-6"><div class="linenumber">6</div><div class="sentence"># NETWORK(ED) PUBLISHING
</div></div></div><div class="linenum" id="linenum-7"><div class="leftcolumn" id="leftcolumn-7"><div class="linenumber">7</div><div class="sentence"># AUTONOMY AND ITS CONTINGENCIES
</div></div></div><div class="linenum" id="linenum-8"><div class="leftcolumn" id="leftcolumn-8"><div class="linenumber">8</div><div class="sentence"># MAPPING NETWORKS</div></div></div>
<div class="linenum" id="linenum-9"><div class="leftcolumn" id="leftcolumn-9"><div class="linenumber">9</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-10"><div class="leftcolumn" id="leftcolumn-10"><div class="linenumber">10</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-11"><div class="leftcolumn" id="leftcolumn-11"><div class="linenumber">11</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-11">
<div class="comment" id="comment-11">
<span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: Within the context about the Special Issue, dependency in my case is very much about technical question, specifically about the structure of internet protocols. It's about the structure of how my server has been built that my annotation bot has installed in. I am very much looking at this technical dependency of the protocol here.
(11:15PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-11"><span class="comment-text" style="border-bottom: 2px solid rgb(100,216,184);">bootje: It all came from the first day of our Insfrastructour, where we visited each home to host our server. There were many frustrations whilst installing servers. During the setting up our networks, I started to be interested in dependency.
(12:31AM on April 02, 2019) </span></div><img src="./output/infratour.png"/>
</div>
</div>
<div class="linenum" id="linenum-12">
<div class="leftcolumn" id="leftcolumn-12">
<div class="linenumber">12</div><div class="sentence">
<b>INTRODUCTION</b>
</div>
</div>
<div class="rightcolumn" id="rightcolumn-12">
</div>
</div>
<div class="linenum" id="linenum-13">
<div class="leftcolumn" id="leftcolumn-13">
<div class="linenumber">13</div>
<div class="sentence">
</div>
</div>
<div class="rightcolumn" id="rightcolumn-13">
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 2px solid rgb(70,73,196);">bootje: This is an annotated reader, an XMPP based publishing tool, that I developed as a way to comment my thoughts on the subject of dependencies in our network. (11:06PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 2px solid rgb(80,190,112);">bootje: In this reader, some of thoughts are centered around my server, whereas some others are about a new protocol that I learned, the XMPP. And the other is a publishing tool I made, the Annotation Bot.
(11:12PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 2px solid rgb(20,102,98);">bootje: These three layers are the infrastructures I made to host, to chat, and to publish. The first infrastructure is: My server — A hosting infrastructure where I talk about a dependency map, a web tool for tracing the routers, and some situations I went through whilst installing the server. Secondly, an XMPP(Extensible Messaging and Presence Protocol) that is a chatting infrastructure which I eventually made my own tool with. Last but not least, an Annotation Bot as a media tool — A publishing infrastructure that I had been developing as a way to annotate some thoughts. (11:16PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: This reader is an ongoing project, sometimes I leave the questions or don't answer myself yet. Please feel free to annotate here with the guest account I provide for you. Enjoy your annotating experience.
(11:17PM on April 01, 2019) </span>
</div>
<div class="comment" id="comment-13">
<span class="comment-text" style="border-bottom: 2px solid rgb(240,150,100);">bootje: <br/>Guest account: guest@please.undo.undo.it<br/>
Password: guestpassword<br/>
(11:17PM on April 01, 2019) </span>
</div>
<img src="./output/Screenshot 2019-04-01 at 23.22.07.png"/>
<img src="./output/Screenshot 2019-04-01 at 22.58.44.png"/>
</div></div>
<div class="linenum" id="linenum-14"><div class="leftcolumn" id="leftcolumn-14"><div class="linenumber">14</div><div class="sentence"><b>ANNOTATED GLOSSARY</b>
</div></div></div><div class="linenum" id="linenum-15"><div class="leftcolumn" id="leftcolumn-15"><div class="linenumber">15</div><div class="sentence"> ANNOTAION BOT
</div></div><div class="rightcolumn" id="rightcolumn-15"><div class="comment" id="comment-15"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: Annotation Bot is an XMPP based web-publishing tool to annotate texts associated with thoughts, images, and sources. With this tool, a user can add comments or image references from any XMPP client via several digital devices.<br/>(09:57PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-16"><div class="leftcolumn" id="leftcolumn-16"><div class="linenumber">16</div><div class="sentence"> DEPENDENCIES
</div></div><div class="rightcolumn" id="rightcolumn-16"><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(35,45,107);">guest: The term "dependencies" incorporates not only technical factors such as physical access to a router, but also social dependencies, such as whether or not we had to ask anyone for permission to use the network. (11:55AM on April 12, 2019) </span></div></div></div><div class="linenum" id="linenum-17"><div class="leftcolumn" id="leftcolumn-17"><div class="linenumber">17</div><div class="sentence"> OUR NETWORK
</div></div><div class="rightcolumn" id="rightcolumn-17"><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'b-e-e-t.r-o-o-t.net' (09:59PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: ' ciao.urca.tv' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'richfolks.club' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'nothat.bad.mn' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: ' p.lions.es' (10:00PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'foshan-1992.pw' (10:01PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'please.undo.undo.it'(10:01PM on April 02, 2019) </span></div><div class="comment" id="comment-17"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: 'sweetandsour.chickenkiller.com' (10:01PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-18"><div class="leftcolumn" id="leftcolumn-18"><div class="linenumber">18</div><div class="sentence"> TCP/IP
</div></div><div class="rightcolumn" id="rightcolumn-18"><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: They are two protocols (TCP &amp; IP) that allows to establish communication between computers. Now widely adopted as a network standard, its archetype is the Defense Data Network, developed as part of Department of Defense.
(11:12PM on April 01, 2019) </span></div><div class="comment" id="comment-18"><span class="comment-text" style="border-bottom: 2px solid rgb(100,216,184);">bootje: I use two computer network protocols: TCP/IP(Transmission control protocol/Internet protocol) that TCP divides a message or files into packets that are transmitted over the Internet and then reassembled when they reach their destination, and IP is responsible for the address of each packet so that it gets to the correct destination. It is a communication protocol for enabling smooth connunication within the local area network. I am relying on these protocol within my server. (12:29AM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-19"><div class="leftcolumn" id="leftcolumn-19"><div class="linenumber">19</div><div class="sentence"> DNS
</div></div><div class="rightcolumn" id="rightcolumn-19"><div class="comment" id="comment-19"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: The Domain Name System (DNS) is a hierarchical decentralized naming system for computers, services, or other resources connected to the Internet or a private network. DNS is in the application layer within IP Suite. (11:52PM on April 01, 2019) </span></div></div></div><div class="linenum" id="linenum-20"><div class="leftcolumn" id="leftcolumn-20"><div class="linenumber">20</div><div class="sentence"> HTTP
</div></div><div class="rightcolumn" id="rightcolumn-20"><div class="comment" id="comment-20"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermediainformation systems. HTTP is the foundation of data communication for the World Wide Web, where hypertextdocuments include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen. HTTP was developed to facilitate hypertext and the World Wide Web. (03:53PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-21"><div class="leftcolumn" id="leftcolumn-21"><div class="linenumber">21</div><div class="sentence"> SSH
</div></div><div class="rightcolumn" id="rightcolumn-21"><div class="comment" id="comment-21"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Typical applications include remote command-line login and remote command execution, but any network service can be secured with SSH. On application layer of IP Suite. (07:19PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-22"><div class="leftcolumn" id="leftcolumn-22"><div class="linenumber">22</div><div class="sentence"> XMPP
</div></div><div class="rightcolumn" id="rightcolumn-22"><div class="comment" id="comment-22"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Extensible Messaging and Presence Protocol (XMPP) is a communication protocol for message-oriented middlewarebased on XML (Extensible Markup Language). It enables the near-real-time exchange of structured yet extensible data between any two or more network entities. Originally named Jabber, the protocol was developed by the homonym open-source community in 1999 for near real-time instant messaging (IM), presence information, and contact listmaintenance. Designed to be extensible, the protocol has been used also for publish-subscribe systems, signalling for VoIP, video, file transfer, gaming, the Internet of Things (IoT) applications such as the smart grid, and social networking services. On application layer of Internet Protocal Suite. (07:20PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-23"><div class="leftcolumn" id="leftcolumn-23"><div class="linenumber">23</div><div class="sentence"> ROUTER
</div></div><div class="rightcolumn" id="rightcolumn-23"><div class="comment" id="comment-23"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: A router is a networking device that forwards data packets between computer networks. Routers perform the traffic directing functions on the Internet. (07:21PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-24"><div class="leftcolumn" id="leftcolumn-24"><div class="linenumber">24</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-24"></div></div><div class="linenum" id="linenum-25"><div class="leftcolumn" id="leftcolumn-25"><div class="linenumber">25</div><div class="sentence"><b>SERVER — A HOSTING INFRASTRUCTURE</b>
</div></div></div>
<div class="linenum" id="linenum-26">
<div class="leftcolumn" id="leftcolumn-26">
<div class="linenumber">26</div><div class="sentence"> The Dependency Map <div><div class="map"><img src="./output/dependency-map.jpg"/></div></div></div>
</div>
<div class="rightcolumn" id="rightcolumn-26">
<div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(244,240,52);">bootje: An explanation of the dependency map<br/>(11:03PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(80,190,112);">bootje: 1. Technically to be able to host your own server, you need a physical home where you can connect the ethernet cable with your router that is joined to Internet provided by Internet service provider(ISP). In my case, Artemis' house is a place we have the main router, with the Internet provider 'Telfort', that allows her to host the server, 77.172.158.66 with a domain name 'please.undo.undo.it'. (11:03PM on April 01, 2019) </span></div><img src="./output/02 Artemis - 77.172.158.66.png"/><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(184,220,204);">bootje: 2.
The main local area network brunched out to give permission to create another severs which are: 'sweetandsour.chickenkiller.com', and 'nothat.bad.mn'. Seemingly both local area network(LAN) looks fully independent on each other from their domain name.<br/>In actuality, 'sweetandsour.chickenkiller.com' and 'nothat.bad.mn' are living off in the 'please.undo.undo.it' with extra public port numbers of '4444' and '3333' which was created with the lan port 80. Therefore 'sweetandsour.chickenkiller.com' has an IP address of '77.172.158.66:4444' and '77.172.158.66:3333' is the IP address of 'nothat.bad.mn'.
(11:05PM on April 01, 2019) </span></div>
<!-- <img src="./output/myweb.png"/><img src="./output/myweb1.png"/>
--><img src="./output/rita.png"/><img src="./output/rita2.png"/>
<div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: 2.1 Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network.
(11:09PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: 2.2 Apache is a web/ HTTP Server, a free and open-source cross-platform web server. (11:11PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: 3. This is an account for logging into an XMPP client. As you can see after the username, we're sharing the host's domain name again. This has to do with the fact of using one local area network. If someone else would like to join to make an account for an XMPP client, the person needs to ask to receive one from the host. (11:34PM on April 01, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: 3. This is an account for logging into an XMPP client. As you can see after the username, we're sharing the host's domain name again. This has to do with the fact of using one local area network. If someone else would like to join to make an account for an XMPP client,the person needs to ask to receive one from the host. (12:13AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: 3-1. Once you have account, it is possible to log in via any digital devices such as phone, laptop, desktop, Ipad and so on.
(12:13AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(100,216,184);">bootje: 4. This is an XMPP client where we can log in to create channels from an account we created from the local area network of the host. After logged into an XMPP client(server), it's possible to create any channel, meaning that you can be a host of channel or join the existed channel based upon the server of your account. (12:29AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(109,158,146);">bootje: 5. This is an annotation bot channel in which you annotate your comments in. In order to activate the channel, you need to stay inside the server where the Python script is located in, in this case, 'sweetandsour.chickenkiller.com'. The Python script can be run by entering an XMPP account with the channel name in Terminal, an interface in which you can type and execute text based commands. (10:53AM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(116,39,140);">bootje: 6. Python script is built upon an XMPP library called Slixmpp, Argparse (A parser for command-line), Beautiful Soup (A Python library for pulling data out of HTML and XML files), Pickle/.PKL file (A Python library for serializing and de-serializing an object structure in Python), Urllib (A Python package that collects several modules for working with URLs.), and using TXT file (An unformatted generic text content file) and a stylesheet file. (02:15PM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(116,39,140);">bootje: 7. An HTML file will be generated inside the server 'sweetandsour.chickenkiller.com' when running the Python script in Terminal.
(02:39PM on April 02, 2019) </span></div><div class="comment" id="comment-16"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: 8. Screen is a command line that offers you to remotely run the Python script persistently. This means you can have your annotation bot run all all times in your server as long as the server is online.
(03:29PM on April 02, 2019) </span></div>
</div></div>
<div class="linenum" id="linenum-27"><div class="leftcolumn" id="leftcolumn-27"><div class="linenumber">27</div><div class="sentence"> Why couldn't I host my server at home?
</div></div><div class="rightcolumn" id="rightcolumn-27"><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: Sharing on my own experience living in Holland as an international student, I had humongous amount of belongings in my previous place in Den Haag, it was such a big problem to move out with all the furnitures and the home appliances, so I sold everything of what I bought, and moved into the new place.
(11:16PM on April 01, 2019) </span></div><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: Currently I'm living in the apartment owned by a housing company called Holland2Stay, mostly international expats and students stay, where everything, including a bed, a table, a sofa, drawers, dish plates, cups, wineglasses, even an iron, mini spoons are all included as a full package. Obviously Internet service was included too, and you only needed to purchase a router. It seems very convinient, however, when I tried hosting my server in the router, it never made me pleasent. The central network system where they control all the routers connected to, is prohibited me from hosting my server because I couldn't have access to the router. Eventually I can't install any other server under this network that's highly secured. The housing company(Holland2Stay) has a bigger power on the network that I can't do anything with my Internet which I pay for my own service. (12:15AM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 00.18.31.png"/><img src="./output/My internet router webpage.png"/><div class="comment" id="comment-27"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: As a student in Holland, you live in housing where everything is provided for you. Everything is included even Internet. So I didn't need to apply for the Internet company, but just needed to plug in my router at home. Once I had Internet connection problem, which have come from the main server of my apartment, everyone in this apartment couldn't use Internet for some periods.
(03:33PM on April 02, 2019) </span></div><div class="comment" id="comment-28"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Although I'm hosting my server, I feel that I have a sense of distance from my server that I don't tend to use it often for such a long time. While my classmates made use of it for saving files and images, I left my server empty for quite long time. Because I am not physically possess my sever at home nor I didn't want to bother her for asking to visit her checking my device, I tend to forget using it nor thinking of it. Moreover if she doesn't allow me to either visit her to fix my device that is connected to my server or if there is a disconnection from ethernet cable, her network will disjoin from me. (12:25AM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-28"><div class="leftcolumn" id="leftcolumn-28"><div class="linenumber">28</div><div class="sentence"> What solution I found around?
</div></div><div class="rightcolumn" id="rightcolumn-28"><div class="comment" id="comment-28"><span class="comment-text" style="border-bottom: 2px solid rgb(232,57,52);">bootje: What kinds of unexpected situation occured?<br/>A contingency plan: I became technically dependent on someone: hosting my server at Artemis' place where her server also stays in. Partly my server is separated from hers because I'm not sharing server with her, but with her router(machine). Being hosted on own server at someone else's place doesn't feel that I am fully dependent on my server. I am dependent on someone's physical space, router, Internet provider, electricity, time, even financially... If any of them changes by her own freedom of choice, I will forcefully have to change my situation that is caused by the host's selection. (12:22AM on April 02, 2019) </span></div><div class="comment" id="comment-28"><span class="comment-text" style="border-bottom: 2px solid rgb(100,216,184);">bootje: For the second best plan to connect with my server, not physically but in a network way: I became technically dependent on another protocol called SSH(Secure Shell) that is a cryptographic network protocol for operating network services securely over an unsecured network. Being dependent on SSH protocol, I am virtually able to be connected to my server. Again, my ssh connection will be broken down if one of those factors I mentioned above has become a problem. (12:26AM on April 02, 2019) </span></div><img src="./output/ssh.png"/></div></div><div class="linenum" id="linenum-29"><div class="leftcolumn" id="leftcolumn-29"><div class="linenumber">29</div><div class="sentence"> Layers of Parasitism
</div></div><div class="rightcolumn" id="rightcolumn-29"><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: One form of my parasitism is a social parasitism that is when an species relies on another species to raise its young. In my case, in order to raise my own network, I become a parasite who stays in Artemis' router to host my server. When I succeeded becoming a technical parasite, I got my Internet Protocol address (IP address): 77.172.158.66:4444. Here I can see my success on becoming a technical parasite with the port number :4444. I am officially part of the host 77.172.158.66 being an semi-dependent as '4444'. By having the port number '4444', I claim my own independent space, however I am technically leaving off inside Artemis' local area network(LAN). Therefore I have to rely on good will because she is in more powerful position than me. (11:38PM on April 01, 2019) </span></div><img src="./output/my IP address.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 2px solid rgb(232,57,52);">bootje: Dependency is where there is a power dynamic, some sort of giving permission to someone else to do something. One person being more powerful than others because one has something that the others doesn't have. Therefore the weak need to be parasitic to the host.
(12:23AM on April 02, 2019) </span></div><div class="comment" id="comment-30"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Is then Artemis independent? She is reliant on her router in order to give me permission to host my server and hers. Her router is connected to the Eternet cable that is one of the most common forms of network cable used on wired networks. And if she disconnects the Ethernet cable from her router, she and I will be disconnected from the server too. Likewise, if she doesn't pay the Internet fee or her contract is finished, then she'll lose her network too. (02:41PM on April 02, 2019) </span></div><img src="./output/router artemis.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: Relying on someone else's network to host my own server means that it's the beginning of an endless parasitic situation. Being a bloodsucker feels much more pressures than being a host because you have many technical, physical and practical concerns come along while being dependent on the host. Even if I have my own server hosted, that doesn't mean that I have full control over it. Over the few months, my server has been staying at my host's server trying to be dependent on its own situation. Living off at someone else's bring you a mixture feeling of being useless sometimes.. (03:01PM on April 02, 2019) </span></div><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: I'm parasitic on someone to be able to live my own. I am parasitic in Artemis' server, meaning that my sever will be dependent on her decision. How ironic it is to be autonomous by parasiting on someone else. (03:30PM on April 02, 2019) </span></div><img src="./output/artemis1.png"/><img src="./output/artemis3.png"/><div class="comment" id="comment-29"><span class="comment-text" style="border-bottom: 2px solid rgb(94,26,236);">bootje: many 'sorry' and 'thank you' from my side.. (04:35PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-30"><div class="leftcolumn" id="leftcolumn-30"><div class="linenumber">30</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-30"></div></div><div class="linenum" id="linenum-31"><div class="leftcolumn" id="leftcolumn-31"><div class="linenumber">31</div><div class="sentence"> <b>— TRACEROUTE</b>
</div></div></div><div class="linenum" id="linenum-32"><div class="leftcolumn" id="leftcolumn-32"><div class="linenumber">32</div><div class="sentence"> What is Traceroute?
</div></div><div class="rightcolumn" id="rightcolumn-32"><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(184,220,204);">bootje: Traceroute is a network diagnostic tool to map the journey that a packet of IP network undertakes from its source(website) to its destination(website). In simple language, it traces the exact route taken to reach the website from your IP address. (11:08PM on April 01, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(109,158,146);">bootje: When we try reaching to one website, information or requests went from your computer don't reach the final destination(website) in a single jump because there are many networks(Telecommunication companies) involved in between. (10:53AM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(116,39,140);">bootje: So when tracing the router to a random website, there are some hops that show telecommunication companies with IP addresses including a speed it has taken during the journey. (02:45PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(116,39,140);">bootje: A hop is a journey from one source(server) to destination(server). (02:46PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(176,45,254);">bootje: Milliseconds is the amount of time it takes to make a hop
(02:47PM on April 02, 2019) </span></div><div class="comment" id="comment-32"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: A packet is the information that travels along the traceroute
(03:35PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-33"><div class="leftcolumn" id="leftcolumn-33"><div class="linenumber">33</div><div class="sentence"> What do you see from Traceroute?
</div></div><div class="rightcolumn" id="rightcolumn-33"><img src="./output/01 traceroute explanation.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(109,158,146);">bootje: The output explains how the server at home traveled to the final destination: sweetandsour.chickenkiller.com (10:55AM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(116,39,140);">bootje: The first line shows when I Iogged in Terminal, and next line gives what command I used for tracing the router. And there is a third line that shows the Domain Name of my server with the IP address of '77.172.158.66', which, technically, is not mine. (02:48PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: My address would be '77.172.158.66:4444' that has an extra port number because she was willing to share her local are network with another port number. Therefore this address without the port number is technically belongs to Artemis. This means that the IP address shown in Terminal won't lead me to 'sweetandsour.chickenkiller.com' but to to Artemis': 'please.undo.undo.it'.
(02:48PM on April 02, 2019) </span></div><img src="./output/port number.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: I can have a detailed look into each hop between the servers. The first hop is the Internet gateway on the network. It is a private IP address that always starts with '192.168...' A private IP address is just for my router, my network and me. In other words, it is reserved for internal use behind a router apart from the public. (02:56PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: Next, there is 'prioritytelecom.net' with the IP address '80.113.23.145' on the second hop which is a static IP address of Ziggo, an Internet service provider(ISP). (03:36PM on April 02, 2019) </span></div><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Likewise, the third hop is a router on the network 'Ziggo Services B.V.', where they use different IP address '213.126.178.209', is hosted on. I assumed Ziggo has several routers in different locations.(03:44PM on April 02, 2019) </span></div><img src="./output/ziggo.png"/><div class="comment" id="comment-33"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: The Fourth hop shows another Internet service provider called Liberty Global, originally an American international telecommunication company that has a brunch in the Netherlands. The 4th, 5th and 6th are the routers on the Liberty Global telecommunication company because of its IP address that starts with '84.116.' In conclusion, there were 6 hops that was needed to go to my server.
(03:54PM on April 02, 2019) </span></div><img src="./output/liberty BV.png"/><img src="./output/Liberty global.png"/></div></div><div class="linenum" id="linenum-34"><div class="leftcolumn" id="leftcolumn-34"><div class="linenumber">34</div><div class="sentence"> How does my server travel to others?
</div></div><div class="rightcolumn" id="rightcolumn-34"><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: Based on my experience on tracing the router from A to B, I was wondering how my server is relating to others. Will my server be depending on anything when it travels to another server? If so, what does my server depends on? (11:39PM on April 01, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: When visiting another website from my home server, what route will I reach to the destination? What can I see when we visit each other's servers?
(02:57PM on April 02, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: I started mapping who I am dependent onto make a connection by tracing the router from each other's server. So I SSH-ed to my server with the username 'bootje', and entered into my server in order to install it: sudo apt-get install traceroute. (02:57PM on April 02, 2019) </span></div><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(141,13,10);">bootje: After finished installing it, I started tracing the router to 'b-e-e-t.r-o-o-t.net', ' ciao.urca.tv', 'richfolks.club', 'nothat.bad.mn', ' p.lions.es ', 'foshan-1992.pw', 'please.undo.undo.it', and to my own server 'sweetandsour.chickenkiller.com'. (03:37PM on April 02, 2019) </span></div><img src="./output/trace-beetroot.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: Next I asked my fellows to do the same thing: So they traced the router from their server to others including mine. (03:54PM on April 02, 2019) </span></div><img src="./output/traceroute_eachother.jpg"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Tracing the routers between 'sweetandsour.chickenkiller.com' and 'ciao.urca.tv'
(09:01PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.55.15.png"/><img src="./output/Screenshot 2019-04-02 at 20.55.26.png"/>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Tracing the routers between 'nothat.bad.mn' and 'foshan-1992.pw' (09:02PM on April 02, 2019)</span></div><img src="./output/Screenshot 2019-04-02 at 20.55.00.png"/><img src="./output/Screenshot 2019-04-02 at 20.54.52.png"/>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Tracing the routers between 'richfolks.club' and 'please.undo.undo.it' (09:03PM on April 02, 2019) </span></div>
<img src="./output/Screenshot 2019-04-02 at 20.54.30.png"/><img src="./output/Screenshot 2019-04-02 at 20.54.21.png"/>
<div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: Tracing the routers between 'b-e-e-t.r-o-o-t.net' and 'foshan-1992.pw' (09:25PM on April 02, 2019) </span></div>
<img src="./output/Screenshot 2019-04-02 at 21.19.43.png"/><img src="./output/Screenshot 2019-04-02 at 21.19.30.png"/><div class="comment" id="comment-24"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: Tracing the routers between 'ciao.urca.tv' and 'foshan-1992.pw' (09:28PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.19.18.png"/><img src="./output/Screenshot 2019-04-02 at 21.19.06.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: Tracing the routers between 'nothat.bad.mn' and 'foshan-1992.pw' (09:32PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.18.56.png"/><img src="./output/Screenshot 2019-04-02 at 21.18.47.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(206,203,202);">bootje: Tracing the routers between 'please.undo.undo.it' and 'foshan-1992.pw' (09:33PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 21.18.38.png"/><img src="./output/Screenshot 2019-04-02 at 21.18.31.png"/><div class="comment" id="comment-34"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: This experiment showed me on how many hops we need to pass to get to each other's server. Besides that I could anticipate the predictable route that was taken during the journey by comparing the route from both sides. (03:55PM on April 02, 2019) </span></div></div></div>
<div class="linenum" id="linenum-35"><div class="leftcolumn" id="leftcolumn-35"><div class="linenumber">35</div><div class="sentence"> What are the traceroute results?</div></div><div class="rightcolumn" id="rightcolumn-35"><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: When I tracerouted from my server to Biyi's: traceroute foshan-1992.pw, I could see there are three telecommunication company involved: KPN, Swipnet backbone and Tele2. When Biyi traced the router to my server (traceroute sweetandsour.chickenkiller.com), it showed same telecommunication companies: Tele2, swipnet backbone and KPN.
(11:47PM on April 01, 2019) </span></div><img src="./output/bo to biyi.png"/><img src="./output/biyi to bo.png"/><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: The result shows me whenever I or Biyi would visit each other's website, we will have to pass by the three routers from the aforementioned company. (11:49PM on April 01, 2019) </span></div><img src="./output/bo-to-biyi.jpg"/><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: What if the Traceroute cannot find the routers from three companies? The solution would be: My server will find another way to get to the destination, so does hers.
(02:58PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: From this research, I convey the Traceroute is not showing us how the server is relying on something because it doesn't show the hierarchy of our network. But it gives the information such as how my server travels through the routers provided by telecommunication company.
(02:59PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(111,131,118);">bootje: What if one of those telecommunication companies stop their business and remove the router? Then my server can't approach to the destination unless there are still some routers provided by another company.
(03:45PM on April 02, 2019) </span></div><div class="comment" id="comment-35"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: For me dependency is about who owns the power, and to whom it has more power to control the situation. I see the relation of a power ownership here: When visiting someone else's server, I should have some routers that is a part of a journey to the destination. Moreover I need telecommunication company, who owns the router, to make connections too. If there would be no companies, there will be routers, which means there will be no hops at all: Eventually my server wouldn't be able to travel to the destination. Each hop is a bridge between two server in our network we made, and if the bridge broke, you can't reach to the final destination unless there is an alternative bridge instead. (03:45PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-36"><div class="leftcolumn" id="leftcolumn-36"><div class="linenumber">36</div><div class="sentence"> Does telecommunication companies own power?
</div></div><div class="rightcolumn" id="rightcolumn-36"><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(240,32,143);">bootje: Traceroute research shows me a journey to the destination. In this journey, there are at least 1 to 30 hops that shows a router with its IP address of telecomunication company. While tracing the route from 'sweetandsour.chickenkiller.com' to 'foshan-1992.pw', I got to know there are three company involved in several routers. With a small research on the companies, I have found out that Swipnet is Sweden's one of the first commercial Internet service provider in the early 1990s. (11:42PM on April 01, 2019) </span></div><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: And the service is now closed down by Tele2 Sweden, which owned Swipnet since 1994. This means that Swipnet will be disappeared by Tele2 who owns the power. If Tele2 fully takes over the Swipnet, the route of the journey from the servers will be totally different. (11:53PM on April 01, 2019) </span></div><img src="./output/swipnet to tele2.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: About owning the power between the telecommunication company, there is another taking over situation between Tele2 and T-Mobile. According to the government agency, T-Mobile will takeover Tele2 officially, and Tele2 customers will probably be transferred to a comparable or better T-Mobile subscription. (11:54PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-03-31 at 17.37.50.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: There is another small anecdote: When Biyi tried installing a new Internet from Tele2, KPN was taking part of the system for Tele2. Apparently Tele2 and KPN cohabitates each other for their own convenience.
(11:57PM on April 01, 2019) </span></div><img src="./output/kpn.png"/><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: I am guessing the final parasitic structure is: Swipnet &lt; Tele2 &lt; T-Mobile, Tele2 &lt; KPN (02:59PM on April 02, 2019) </span></div><div class="comment" id="comment-36"><span class="comment-text" style="border-bottom: 2px solid rgb(141,13,10);">bootje: The situation of being eaten by another and cohabitation gives me a thought of how the telecommunication companies are hierarchically related each other. Through the Traceroute exercise, I found there is the power constrcution in the concept of Traceroute.
(03:40PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-37"><div class="leftcolumn" id="leftcolumn-37"><div class="linenumber">37</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-37"></div></div><div class="linenum" id="linenum-38"><div class="leftcolumn" id="leftcolumn-38"><div class="linenumber">38</div><div class="sentence"><b>XMPP — A CHATTING INFRASTRUCTURE</b>
</div></div></div><div class="linenum" id="linenum-39"><div class="leftcolumn" id="leftcolumn-39"><div class="linenumber">39</div><div class="sentence"> What is XMPP?
</div></div><div class="rightcolumn" id="rightcolumn-39"><div class="comment" id="comment-39"><span class="comment-text" style="border-bottom: 2px solid rgb(51,1,137);">bootje: XMPP(Extensible Messaging and Presence Protocol) is a communication protocol that allows systems to talk to each other. An XMPP server provides basic messaging features, and you can use to run your own XMPP service over the Internet or on a local area network.
(11:58PM on April 01, 2019) </span></div></div></div><div class="linenum" id="linenum-40"><div class="leftcolumn" id="leftcolumn-40"><div class="linenumber">40</div><div class="sentence"> How does XMPP work?
</div></div><div class="rightcolumn" id="rightcolumn-40"><div class="comment" id="comment-40"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: There are bunch of XMPP clients that are available. An XMPP clients is any software or application that enables you to connect for instant messaging with other people over the Internet. Basically it's like a platform where you open your chatting room. There are many free clients you can use to open the chatting, for many different devices and operating systems. In my case, I used an XMPP client called 'Converse'. (11:58PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-04-01 at 17.09.06.png"/><img src="./output/Screenshot 2019-04-01 at 17.09.38.png"/><img src="./output/xmpp.png"/><div class="comment" id="comment-40"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: In order to use an XMPP protocol, first, you need an account to log in via client. Having your own domain name system on your server, you can create unlimited amount of account for users who shares your local area network. Or you can log in to different devices such as phone, laptop, desktop, ipad with one account. Once you're logged in, you can start creating any of channel you'd like to make, and start chatting!
(03:40PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-41"><div class="leftcolumn" id="leftcolumn-41"><div class="linenumber">41</div><div class="sentence"> How was I dependent on?
</div></div><div class="rightcolumn" id="rightcolumn-41"><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: Since I am a parasite on Artemis' local area network(LAN), I had no choice but to create my account from her network. Although I have my own server with the port number '4444' provided by the host, yet I am residing in her local are network. Eventually I couldn't create my own account. Again this idea of parasitization is coming back: I don't have the right to change neither my account name nor create another account.
(03:01PM on April 02, 2019) </span></div><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 2px solid rgb(247,92,86);">bootje: Therefore when creating an XMPP account, I had to ask her permission again. whereas, she never asked me to get permission to do something because she didn't need to.
(03:46PM on April 02, 2019) </span></div><div class="comment" id="comment-41"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: After receiving an account, finally creating a channel is possible. In any channel I created, I can be a host myself. However, in order to make the channel, an address of groupchat is required. For that I need an local area network address, in my case, of course: Artemis' address: please.undo.undo.it. Every step of creating my own server to XMPP account to a channel: I needed her permission.
(03:56PM on April 02, 2019) </span></div><img src="./output/artemis2.png"/><div class="comment" id="comment-42"><span class="comment-text" style="border-bottom: 2px solid rgb(247,92,86);">bootje: Although an XMPP protocol is meant to be a free and open-source chat client, I can't be fully independent as a user in this protocol. From A to Z, I am fully relying on her. (03:46PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-42"><div class="leftcolumn" id="leftcolumn-42"><div class="linenumber">42</div><div class="sentence">
</div></div><div class="rightcolumn" id="rightcolumn-42"></div></div><div class="linenum" id="linenum-43"><div class="leftcolumn" id="leftcolumn-43"><div class="linenumber">43</div><div class="sentence"><b>ANNOTATION BOT — A PUBLISHING INFRASTRUCTURE</b>
</div></div></div><div class="linenum" id="linenum-44"><div class="leftcolumn" id="leftcolumn-44"><div class="linenumber">44</div><div class="sentence"> What is Annotation Bot?
</div></div><div class="rightcolumn" id="rightcolumn-44"><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 2px solid rgb(183,225,197);">bootje: Annotation Bot is an XMPP based web-publishing tool to annotate texts associated with thoughts, images, and sources. With this tool, a user can add comments or image references from any XMPP client via several digital devices. (03:26PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 2px solid rgb(93,202,162);">bootje: Annotation Bot can be used for the following purposes:
(03:26PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: — To add comments with multiple users at the same time remotely
(03:27PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: — To overview the transparency of ownership on commenting
(03:27PM on April 02, 2019) </span></div><div class="comment" id="comment-44"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: — As a collaborative publishing tool to discuss the contents
(03:27PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-45"><div class="leftcolumn" id="leftcolumn-45"><div class="linenumber">45</div><div class="sentence"> How was Annotation Bot installed?
</div></div><div class="rightcolumn" id="rightcolumn-45"><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(229,58,246);">bootje: To install the Annotation Bot, you need the following structures: a home server/an account/an XMPP client/ a channel/a TXT file. (03:28PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(141,13,10);">bootje: A home server means a place you store the HTML in which the file was created from a Python script runned by Terminal. (03:41PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(247,92,86);">bootje: As for creating an account, you need a server that allows you to create an account. (03:49PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(247,92,86);">bootje: An XMPP client can be selected depending on the user's preference.
(03:49PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: A Channel is a platform in XMPP client to upload comments and image references.
(03:51PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(13,1,192);">bootje: A TXT file is to store the original text you will annotate.
(03:59PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: The Annotation Bot is written in a Python language that requires some libraries and basic HTML/CSS structure. Before running the Python script inside your server, you need another software to install in order to use this software: Slixmpp, Argparse, Beautiful Soup, Pickle/.PKL file, Urllib. (03:59PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.29.34.png"/><img src="./output/Screenshot 2019-04-02 at 19.30.54.png"/><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(2,1,92);">bootje: Once you have all the libraries installed in the server and the original text is saved as TXT tile, you can go to an XMPP client you selected, in my case 'Converse'. After logging in with your account, A channel can be created. The channel will need an address that will be using when running the code. In my case: dependency-of-network@groups.please.undo.undo.it. (04:07PM on April 02, 2019) </span></div><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(87,179,40);">bootje: Finally you need the following command to run the Bot: python3 FileName.py --jid username@yourserver --room Achannelname@groups.yourserver --nick assign a name for your bot (04:08PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 18.40.27.png"/><div class="comment" id="comment-45"><span class="comment-text" style="border-bottom: 2px solid rgb(94,26,236);">bootje: After executing the code, a HTML is automatically generated at which you runs the Python script. And it's time to annotate!
(04:23PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-46"><div class="leftcolumn" id="leftcolumn-46"><div class="linenumber">46</div><div class="sentence"> How does Annotation Bot work?
</div></div><div class="rightcolumn" id="rightcolumn-46"><div class="comment" id="comment-46"><span class="comment-text" style="border-bottom: 2px solid rgb(141,13,10);">bootje: Once you have your TXT file ready, it will be used to create a HTML website automatically by Python script. It also generates line numbers which will guide you to annotate. (03:41PM on April 02, 2019) </span></div><div class="comment" id="comment-46"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: Next, you can start commenting by using'#comment linenumber yourcomment'. In case of inserting a photo, you could type '#image linenumber', then the Bot will guide you to upload a photo.
(03:50PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.48.45.png"/></div></div><div class="linenum" id="linenum-47"><div class="leftcolumn" id="leftcolumn-47"><div class="linenumber">47</div><div class="sentence"> What was happening when using it?
</div></div><div class="rightcolumn" id="rightcolumn-47"><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: While using the Annotation Bot as a publishing tool, I have bumped with some unexpected situation that limited me to use because of some technical issues.
(03:50PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 2px solid rgb(200,130,92);">bootje: When using the Annotation Bot, the XMPP client kept logging out automatically, that I had to log in several times to connect to the client. Whenever I lose the connection from the client, I can't annotate anything.
(04:00PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 2px solid rgb(87,179,40);">bootje: Even though I was connected to the XMPP clients, I lost my annotation channel quite often for some reason. So I had to set a persistent configuration to my channel in order for the channel(room) should remain when it's empty. (04:08PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-01 at 17.13.52.png"/><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 2px solid rgb(69,16,58);">bootje: In order to use the Bot, you need to be able to log in via an XMPP client, and for that you need to have your account. To be able to get an account, owning your own server is required. Or you can also ask others to make one account for you unless you want an account with your server. (04:09PM on April 02, 2019) </span></div><div class="comment" id="comment-47"><span class="comment-text" style="border-bottom: 2px solid rgb(94,26,236);">bootje: In my case, although I have self-hosted server, I couldn't manage to get my own account as I was a parasite on Artemis' local area network. So I asked her to create an account for me. (04:23PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-48"><div class="leftcolumn" id="leftcolumn-48"><div class="linenumber">48</div><div class="sentence"> What if?
</div></div><div class="rightcolumn" id="rightcolumn-48"><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(141,13,10);">bootje: If there is no Python language, I can't design the Annotation Bot.
(03:42PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: If I miss one library to download, I can't use my Annotation Bot.
(03:51PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(200,0,10);">bootje: If I don't have my account, I can't use my Annotation Bot.
(04:02PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(69,16,58);">bootje: If I don't have Artemis' server, I can't have my account.
(04:09PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(241,57,219);">bootje: If I don't have Artemis' server, I can't have my account.
(04:10PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(188,40,234);">bootje: If Artemis lose her WIFI connection, she can't have her server.
(04:14PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(188,40,234);">bootje: If she stop subscripting Telfort, she will lose her WIFI connection.
(04:15PM on April 02, 2019) </span></div><div class="comment" id="comment-48"><span class="comment-text" style="border-bottom: 2px solid rgb(49,125,74);">bootje: If Telfort will be takenover by T-Mobile, she will have to stop the Internet subscription. (04:16PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-49"><div class="leftcolumn" id="leftcolumn-49"><div class="linenumber">49</div><div class="sentence"> How does it dependent on others?
</div></div><div class="rightcolumn" id="rightcolumn-49"><div class="comment" id="comment-49"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: Setting up a server at home has an implicit level of autonomy, yet we're dependent on many levels in our network. One example could be: When using an XMPP, using the protocol already means that you're relying on a certain level. However, there is no such thing as a complete autonomy/dependency. (04:04PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-50"><div class="leftcolumn" id="leftcolumn-50"><div class="linenumber">50</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-51"><div class="leftcolumn" id="leftcolumn-51"><div class="linenumber">51</div><div class="sentence"><b>SCREEN</b>
</div></div></div><div class="linenum" id="linenum-52"><div class="leftcolumn" id="leftcolumn-52"><div class="linenumber">52</div><div class="sentence"> What is Screen?
</div></div><div class="rightcolumn" id="rightcolumn-52"><div class="comment" id="comment-52"><span class="comment-text" style="border-bottom: 2px solid rgb(201,253,110);">bootje: Screen is a command line that offers you to remotely run the Python script persistently. This means you can have your Annotation Bot run all the times in the server as long as the server is online.
(11:13PM on April 01, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.23.54.png"/></div></div><div class="linenum" id="linenum-53"><div class="leftcolumn" id="leftcolumn-53"><div class="linenumber">53</div><div class="sentence"> How to use it?
</div></div><div class="rightcolumn" id="rightcolumn-53"><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 2px solid rgb(13,200,192);">bootje: Screen has to be installed where you save your Annotation Bot.
(03:52PM on April 02, 2019) </span></div><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 2px solid rgb(241,57,219);">bootje: How to install: $ sudo apt install screen
(04:12PM on April 02, 2019) </span></div><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 2px solid rgb(73,247,217);">bootje: To open a new terminal session: $ screen
(04:13PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.29.53.png"/><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 2px solid rgb(188,40,234);">bootje: To show all the active screen sessions: $ screen -ls
(04:14PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 19.51.16.png"/><div class="comment" id="comment-53"><span class="comment-text" style="border-bottom: 2px solid rgb(49,125,74);">bootje: To Kill a screen session : $ screen -x -s 'screenname' kill
(04:17PM on April 02, 2019) </span></div><img src="./output/Screenshot 2019-04-02 at 20.28.31.png"/></div></div><div class="linenum" id="linenum-54"><div class="leftcolumn" id="leftcolumn-54"><div class="linenumber">54</div><div class="sentence"> Why do I need it?
</div></div><div class="rightcolumn" id="rightcolumn-54"><div class="comment" id="comment-54"><span class="comment-text" style="border-bottom: 2px solid rgb(241,57,219);">bootje: I started thinking about why I couldn't have my Annotation Bot on my laptop all the time. It is because I need to use my computer for other things, I can't have it run 24/7. (04:12PM on April 02, 2019) </span></div><div class="comment" id="comment-54"><span class="comment-text" style="border-bottom: 2px solid rgb(73,247,217);">bootje: Moreover when the Annotation Bot is running, I need a space in my network where I store the HTML generated by Annotation Bot. Because of its live collaborationism in network, I need to have it somewhere in online remotely running. (04:13PM on April 02, 2019) </span></div></div></div><div class="linenum" id="linenum-55"><div class="leftcolumn" id="leftcolumn-55"><div class="linenumber">55</div><div class="sentence">
</div></div></div><div class="linenum" id="linenum-56"><div class="leftcolumn" id="leftcolumn-56"><div class="linenumber">56</div><div class="sentence">Acknowledgement</div></div><div class="rightcolumn" id="rightcolumn-56"><div class="comment" id="comment-56"><span class="comment-text" style="border-bottom: 2px solid rgb(127,205,255);">bootje: The Network We (de)Served —
XPUB Special Issue #08 (08:11PM on April 02, 2019) </span></div><div class="comment" id="comment-56"><span class="comment-text" style="border-bottom: 2px solid rgb(100,216,184);">bootje: Brought to you by the Master of Arts in Fine Art and Design: Experimental Publishing (XPUB) of the Piet Zwart Institute, and Varia, Centre for Everyday Technology, Rotterdam, April 2019. (08:16PM on April 02, 2019)</span></div>
<div class="comment" id="comment-56"><span class="comment-text" style="border-bottom: 2px solid rgb(3,140,5);">bootje: . (11:31AM on April 08, 2019) </span></div></div></div>
</body>
<script src="https://issue.xpub.nl/08/cnn/cnn.js" type="text/javascript"></script>
<script>
converse.initialize({
bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
show_controlbox_by_default: true
});
</script>
</html>

@ -0,0 +1,294 @@
#!/usr/bin/env python3
import logging
from getpass import getpass
from argparse import ArgumentParser
import datetime
import pickle
import numpy as np
import slixmpp
import ssl, os, requests, urllib
from bs4 import BeautifulSoup
from urllib.parse import quote as urlquote, unquote as urlunquote
nickname_color = {}
# import the pickled object, serializing and de-serializing a Python object)
def save_obj(obj, name):
with open(name + '.pkl', 'wb') as f:
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
def load_obj(name):
with open(name + '.pkl', 'rb') as f:
return pickle.load(f)
# make a numbered text
def make_numbered_text(input_text, output_html):
if not os.path.exists(output_html): # if output_html path does not exist
text = open(input_text, 'r') # open the txt file
lines = text.readlines() # to divide the text into lines in the form {{"This is line 1"},{"This is line 2"},...}
x = 1
with open(output_html, 'w') as new_html: # open the output_html with writing only as new_html
new_html.write('<html><head><link rel="stylesheet" href="style.css" type="text/css"/><meta '
'charset="utf-8"/></head><body>')
for line in lines: # for each line in the list of lines
new_html.write(
'<div class="linenum" id="linenum-{}"><div class="leftcolumn" id="leftcolumn-{}"><div class="linenumber">{}</div><div class="sentence">{}</div></div></div>'.format(
x, x, x, line))
x = x + 1
new_html.write('</body></html>')
print('I wrote a file', output_html)
# Get color from nickname_color dictionary. If it does not exist, create a color and save it
def get_nickname_color(nickname):
if nickname not in nickname_color: # If nickname is not in dict
color = list(np.random.choice(range(256), size=3)) # Generate random new color
nickname_color[nickname] = color # Save new color in dict
save_obj(nickname_color, 'nickname_color')
return nickname_color[nickname]
# (parameter variable,parameter variable,parameter variable)
def insert_comment_at_line(output_html, comment, line_number, nickname):
with open(output_html, 'r') as f:
text = f.read()
html = BeautifulSoup(text, 'html.parser')
div_id = 'linenum-{}'.format(line_number) # out comes linenum-line_number
line = html.find('div', {'id': div_id}) # find the div that has the id div_id (has the id linenum-line_number)
if not html.find('div', {
'id': 'rightcolumn-{}'.format(line_number)}): # if there is no div with id rightcolumn-line_number
# then make a new div with rightcolumn-line_number and class rightcolumn. Then, append it to the line variable.
right_column = html.new_tag("div")
right_column['id'] = 'rightcolumn-{}'.format(line_number)
right_column['class'] = 'rightcolumn'
line.append(right_column)
else:
right_column = html.find('div', {'id': 'rightcolumn-{}'.format(line_number)})
time = datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")
color = get_nickname_color(nickname)
print(color)
# new_comment = html.new_tag("comment") # make <comment></comment>
new_comment = html.new_tag("div") # make <comment></comment>
new_comment['id'] = 'comment-{}'.format(line_number)
new_comment['class'] = 'comment'
# new_comment['style'] = 'text-decoration: underline; -webkit-text-decoration-color: rgb(' + str(color[0]) + ',' + str(color[1]) + ',' + str(color[2])+');'
comment_text = html.new_tag("span")
comment_text['style'] = 'border-bottom: 2px solid rgb(' + str(color[0]) + ',' + str(color[1]) + ',' + str(color[2])+');'
#remove #comment <number>
comment = comment.split(' ',2)[2]
comment_text.string = nickname + ': ' + comment + ' (' + time + ') ' # make <comment>comment (the parameter variable)</comment>
comment_text['class'] = 'comment-text'
new_comment.append(comment_text)
right_column.append(new_comment)
print(line, comment, '#' + str(line_number) + '#')
print(div_id)
if line:
with open(output_html, 'w') as f:
right_column.append(new_comment)
f.write(html.decode())
def insert_media_at_line(output_html, mediafile, line_number):
with open(output_html, 'r') as f:
text = f.read()
html = BeautifulSoup(text, 'html.parser')
div_id = 'linenum-{}'.format(line_number)
line = html.find('div', {'id': div_id})
if not html.find('div', {'id': 'rightcolumn-{}'.format(line_number)}):
right_column = html.new_tag("div")
right_column['id'] = 'rightcolumn-{}'.format(line_number)
right_column['class'] = 'rightcolumn'
line.append(right_column)
else:
right_column = html.find('div', {'id': 'rightcolumn-{}'.format(line_number)})
print(line, mediafile, '#' + str(line_number) + '#')
print(div_id)
if line:
# notes to self write function to the detect media type
with open(output_html, 'w') as f:
new_image = html.new_tag("img", src=mediafile)
right_column.append(new_image)
f.write(html.decode())
class MUCBot(slixmpp.ClientXMPP):
def __init__(self, jid, password, room, nick, output):
slixmpp.ClientXMPP.__init__(self, jid, password)
self.room = room
self.nick = nick
self.output = output
self.current_line = 0
self.add_event_handler("session_start", self.start) # moment that it logs on
self.add_event_handler("groupchat_message", self.muc_message) # moment that someone start speaking someone
output = self.output
if not os.path.exists(output):
os.mkdir(output)
make_numbered_text('text.txt', 'dependencies-in-a-network.html')
def start(self, event):
self.get_roster()
self.send_presence()
# https://xmpp.org/extensions/xep-0045.html
self.plugin['xep_0045'].join_muc(self.room,
self.nick,
# If a room password is needed, use:
# password=the_room_password,
wait=True)
def muc_message(self, msg):
# Always check that a message is not the bot itself, otherwise you will create an infinite loop responding to your own messages.
if msg['mucnick'] != self.nick:
# Check if an OOB URL is included in the stanza (which is how an image is sent)
# (OOB object - https://xmpp.org/extensions/xep-0066.html#x-oob)
if len(msg['oob']['url']) > 0:
# UPLOADED IMAGE
# Send a reply
self.send_message(mto=msg['from'].bare,
mbody="Really? Oke. I'll add your photo for you, {}.".format(msg['mucnick']),
mtype='groupchat')
# Save the image to the output folder
url = msg['oob']['url'] # grep the url in the message
# urlunquote is like url to filename
filename = os.path.basename(urlunquote(url)) # grep the filename in the url
output = self.output
# if not os.path.exists(output):
# os.mkdir(output)
output_path = os.path.join(output, filename)
u = urllib.request.urlopen(url) # read the image data
new_html = open(output_path, 'wb') # open the output file
new_html.write(u.read()) # write image to file
new_html.close() # close the output file
# If we haven't set current line yet, prompt the user to do so
if self.current_line < 0:
self.send_message(mto=msg['from'].bare,
mbody="{}, before uploading an image, please use the following syntax: #image <line number>".format(
msg['mucnick']),
mtype='groupchat')
# Add image to stream
img = output_path
insert_media_at_line('dependencies-in-a-network.html', img, self.current_line)
else:
# TEXT MESSAGE
words = msg['body'].split()
linenum = words[1]
if msg['body'].startswith("#image"):
if (linenum.isdigit()):
self.current_line = int(words[1])
self.send_message(mto=msg['from'].bare,
mbody="Please now upload the image to be inserted on line {}.".format(
self.current_line),
mtype='groupchat')
else:
self.current_line = -1
self.send_message(mto=msg['from'].bare,
mbody="{}, please use the following syntax: #image <line number>".format(
msg['mucnick']),
mtype='groupchat')
if msg['body'].startswith("#comment"):
print(linenum)
if (linenum.isdigit()):
self.send_message(mto=msg['from'].bare,
mbody="Really? Oke. I'll add your comment that for you, {}.".format(
msg['mucnick']),
mtype='groupchat')
# output_html,comment,line_number,username
insert_comment_at_line('dependencies-in-a-network.html', msg['body'], linenum, msg['mucnick'])
else:
self.send_message(mto=msg['from'].bare,
mbody="{}, please use the following syntax: #comment <line number> <message>...".format(
msg['mucnick']),
mtype='groupchat')
if __name__ == '__main__':
# Setup the command line arguments.
parser = ArgumentParser() # making your own command line - ArgumentParser.
# output verbosity options.
parser.add_argument("-q", "--quiet", help="set logging to ERROR",
action="store_const", dest="loglevel",
const=logging.ERROR, default=logging.INFO)
parser.add_argument("-d", "--debug", help="set logging to DEBUG",
action="store_const", dest="loglevel",
const=logging.DEBUG, default=logging.INFO)
# JID and password options.
parser.add_argument("-j", "--jid", dest="jid", # jid = user
help="JID to use")
parser.add_argument("-p", "--password", dest="password",
help="password to use")
parser.add_argument("-r", "--room", dest="room",
help="MUC room to join")
parser.add_argument("-n", "--nick", dest="nick",
help="MUC nickname") # MUC = multi user chat
# output folder for images
parser.add_argument("-o", "--output", dest="output",
help="output folder, this is where the files are stored",
default="./output/", type=str)
args = parser.parse_args()
# Setup logging.
logging.basicConfig(level=args.loglevel,
format='%(levelname)-8s %(message)s')
if args.jid is None:
args.jid = input("User: ")
if args.password is None:
args.password = getpass("Password: ")
if args.room is None:
args.room = input("MUC room: ")
if args.nick is None:
args.nick = input("MUC nickname: ")
if args.output is None:
args.output = input("Output folder: ")
# Setup the MUCBot and register plugins. Note that while plugins may
# have interdependencies, the order in which you register them does
# not matter.
xmpp = MUCBot(args.jid, args.password, args.room, args.nick, args.output)
xmpp.register_plugin('xep_0030') # Service Discovery
xmpp.register_plugin('xep_0045') # Multi-User Chat
xmpp.register_plugin('xep_0199') # XMPP Ping
xmpp.register_plugin('xep_0066') # Process URI's (files, images)
# Connect to the XMPP server and start processing XMPP stanzas.
xmpp.connect()
xmpp.process()
# Load color data
if os.path.exists("nickname_color.pkl"):
nickname_color = load_obj("nickname_color") # Load dictionary from file into variable (nickname_color)

Binary file not shown.

BIN
output/.DS_Store vendored

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

@ -0,0 +1,53 @@
@media print {
@page {
size: A3 portrait;
width: 297mm;
margin: 10mm 10mm 10mm 10mm;
/* page-break-after: always;
*/ }
body {
font-size: 5pt;
font-family: Helvetica Neue, sans-serif;
/* counter-reset: chapternum figurenum;
*/ columns: 5 auto;
}
img {
width: 100%;
}
a:link {
color: black;
text-decoration: none;
}
.linenum {
border-top: .80pt solid black;
clear: both;
}
.leftcolumn {
}
.linenumber {
width: 10mm;
margin-right: 1mm;
display: inline;
}
.sentence {
width: 50mm;
display: inline;
}
.comment {
margin-bottom: 3mm;
}
}

@ -0,0 +1,105 @@
@media screen {
*{
font-family: Arial, Helvetica, sans-serif;
letter-spacing: 0.4px;
}
body{
font-size: 13px;
line-height: 1.4em
}
.linenum {
border: 1px solid black;
clear: both;
line-height: 1.4em;
}
#linenum-5 {
width: 100%;
background-color: pink;
}
.linenumber {
margin-right: 1em;
}
.comment{
width: 30%;
font-size: 10pt;
line-height: 1.5em;
/* column-count:3;
*/
color: black;
padding: 3px;
clear: both;
/* display: inline-block;
*/
}
.comment-text {
line-height: 16px;
/* padding-bottom: 1px;
*/
}
.leftcolumn {
font:black;
width: 30%; float: left;
display: inline-flex;
}
.rightcolumn {
float: right;
width: 70%
}
/* unvisited link */
a:link {
color: black;
}
/* visited link */
a:visited {
color: black;
}
/* mouse over link */
a:hover {
color: black;
}
/* selected link */
a:active {
color: black;
}
img {
min-width: 30%;
max-width: 30%;
float: left;
border: 1.5px solid black;
}
img:hover{
max-width: 50%;
}
.map {
width:190%;
float: left;
}
}

@ -0,0 +1,14 @@
WHAT IS NETWORK?
By Bohye Woo
What does it mean to have self-hosted network?
What does it mean to have an annotation bot that runs on XMPP?
What does it mean to run annotation bot on a self-hosted server from home?
WHAT DOES DEPENDENCY MEAN IN OUR NETWORK?
How much are we dependent in our network?
Are we actually indepenedent in our network?
Does self-hosted mean it is decentralized?
What does it mean to be decentralized? are they a contrary concept?
In what scale can i talk about centralization and decentralization?

@ -0,0 +1 @@
weasyprint -s print.css dependencies-in-a-network-print.html final1.pdf

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 KiB

Loading…
Cancel
Save