2021-01-09: Embedded Tweets From @realDonaldTrump: They Won’t Break, But They Can Be Faked Skip to main content Search This Blog Web Science and Digital Libraries Research Group Research and Teaching Updates from the Web Science and Digital Libraries Research Group (@WebSciDL) at Old Dominion University. Subscribe Subscribe to this blog Follow by Email 2021-01-09: Embedded Tweets From @realDonaldTrump: They Won’t Break, But They Can Be Faked Get link Facebook Twitter Pinterest Email Other Apps By Shawn M. Jones - January 09, 2021 On Friday, Twitter suspended Donald Trump's account due to concerns that his current and future tweets might continue to foment violence in the United States. Hayes Brown from MSNBC and Marshall Cohen from CNN echoed a concern I had when developing MementoEmbed: what happens to the embed if the source material or a service managing the embed goes away? Shoutout to every digital journalist who’s just realized how many articles they now have out there full of broken embeds — Hayes Brown (@HayesBrown) January 8, 2021 Trump’s tweets are embedded in thousands of news articles, and now all those links are dead...... — Marshall Cohen (@MarshallCohen) January 8, 2021 Are the embeds really dead? What can we do to provide evidence that the tweet actually existed? Are Trump's tweet embeds dead? No. As explained by Michael Nelson in the Twitter thread below, the embeds still display the tweet text because the tweet contents are stored in the embedding page by-value and thus the content is still accessible on the embedding page. "Don't cry for embedded tweets The truth is they never left you" That's because embedding is done by-value and not by-reference. They don't render nicely once deleted, but the text is still there, as is the tweet id & URL. Pic example from:https://t.co/u5iyhGCAko https://t.co/yN44BBuSbu pic.twitter.com/jI47QMu4nm — Michael L. Nelson (@phonedude_mln) January 9, 2021 If we visit one of Trump's tweets directly on Twitter, we get the following: If we embed the same tweet in a page, we get the following: To all of those who have asked, I will not be going to the Inauguration on January 20th. — Donald J. Trump (@realDonaldTrump) January 8, 2021 The embed code itself is quite simple. As seen below, an embed of a tweet contains HTML with the tweet text, author, author's Twitter handle, and date. The last element loads the JavaScript library widgets.js that applies formatting, labels, and other content to enhance this HTML so that the embed looks more like something from the Twitter website.

To all of those who have asked, I will not be going to the Inauguration on January 20th.

— Donald J. Trump (@realDonaldTrump) January 8, 2021
By including the tweet text, author, author's twitter handle, date, and link to tweet, the HTML allows the embed to gracefully degrade if the browser cannot load widgets.js. The widgets.js JavaScript does not modify this HTML for suspended accounts, deleted tweets, or invalid tweets in general; it just doesn't bother formatting them. What can we do to provide evidence that the tweet actually existed? From the perspective of a web page author, tweet embeds exist to serve two purposes: They provide a visualization of the tweet and its contents so that authors can demonstrate to readers what someone tweeted. They link to the actual tweet to provide evidence to readers of its existence. Some web page authors forgo embedding and include a screenshot of the tweet instead. This satisifies the first purpose, but not the second. While I do not question the integrity of any author who includes screenshots, it is possible to modify or otherwise forge a screenshot. A link to the actual tweet could allow readers to visit the tweet and verify its existence for themselves. In this case, we are considering Twitter, through widgets.js, the trustworthy source for proving existence. A degraded embed does include the link, but the link goes to an unavailable tweet. So, how does one establish that a degraded embed refers to a tweet that truly existed? Let's start with creating some fake tweets. How would fake tweet embeds work? Some know that Michael Nelson and I have differing opinions when it comes to pineapple on pizza. The animation video below demonstrates two @phonedude_mln tweets: one with a pro-pineapple argument and second with an anti-pineapple argument (page used in this animation). Note how the HTML displays first before widgets.js renders the embed. Faking scenario #1: changing the text of the tweet in the embed In the animation below (link to page), Michael changed the text in the embed HTML of the first tweet to "@shawnmjones pineapple on pizza is great!" and the text of the second to "@shawnmjones pineapple on pizza is great! anyone who disagrees should be exiled." In the first case, we changed a single word. In the second, we added an entire sentence to the tweet in an attempt to see if an "overflow" of the tweet text alters how it is rendered. When the browser runs widgets.js to render these embeds, the JavaScript ignores what is in the HTML of the embed and loads the correct tweet text. This further demonstrates that widgets.js serves as an integrity check on embeds. Faking scenario #2: creating an embed for a deleted tweet with the incorrect text Here we deleted the second tweet from Twitter, but we left the embed with the incorrect text on the page. Note how widgets.js does nothing to indicate that the second embed refers to a deleted tweet. It allows the embed to gracefully degrade to the incorrect text. Thus, a malicious author could apply a legitimate deleted tweet URL to an embed that has incorrect text, claim that the tweet once existed, and we would have no evidence to disprove their claim. Faking scenario #3: creating an embed for a completely fake tweet that never existed @shawnjones pineapple on pizza is great! anyone who disagrees should be exiled. — Michael L. Nelson (@phonedude_mln) January 9, 2021 Let's start with the embed above of the tweet that was deleted from scenario #2. This embed has the wrong text, but the link does refer to a real tweet. Because the tweet was deleted, widgets.js will not render anything for it. Now, consider the tweet below that never existed. @shawnjones I deny the existence of pineapples. — Michael L. Nelson (@phonedude_mln) January 9, 2021 If embeds for deleted and fake tweets look the same, then how does someone distinguish between a deleted tweet and a fake one? Maybe deleted tweets act differently if we try to visit their URLs? If we remove the query string text of ?ref_src=twsrc%5Etfw from the tweet URL and paste the rest into our browser, we get the following messages for the deleted (left) and fake (right) tweets. visiting deleted tweet in browser visting fake tweet in browser We did not reuse the same image. These are two different screenshots. How do we distinguish fake tweets from deleted tweets? Some potential solutions Web archives could provide evidence that a tweet existed. We could reformat the embed to point to a memento. Consider the embedded tweet from Michael Nelson above. Unexpectedly, if we replace the URL in the embed's href with the URI-M from the Internet Archive of the same tweet (https://web.archive.org/web/20210109205943/https://twitter.com/phonedude_mln/status/1347970115766259715), then we get the following. @shawnjones pineapple on pizza is awful! — Michael L. Nelson (@phonedude_mln) January 9, 2021 It still renders, but it links to the live web resource rather than the memento. This is likely an unintended effect from the widgets.js code. The code in widgets.js is extracting the URI-R from the URI-M by pattern matching. If we try using a URI-M with Trump's tweet embed, again from a suspended account, it degrades to just the content in the HTML. To all of those who have asked, I will not be going to the Inauguration on January 20th. — Donald J. Trump (@realDonaldTrump) January 8, 2021 To further demonstrate this pattern-matching behavior, We replaced the Tweet URL in the embed code of Nelson's tweet with its URI-M https://archive.is/Kc7NZ from Archive.Today. The widgets.js does not format it at all. This establishes that widgets.js is not really archive-aware, but the first example accidentally worked due to some pattern matching that searches the URL for a tweet ID. In fact, we've conducted additional experiments and found that patterns like XXXXXXXXXXhttp://twitter.com/acct/status/1347569870578266115 also work in the href of the embed. @shawnjones pineapple on pizza is awful! — Michael L. Nelson (@phonedude_mln) January 9, 2021 We could not find Trump's latest tweet in Archive.Today, but we did find an Archive.Today memento of an earlier @realDonaldTrump Tweet. The widgets.js does not format it either. This further supports the hypothesis that it is not the suspended account's status, but the fact that wigets.js cannot find a Twitter URL within the embed. Statement by Donald J. Trump, The President of the United States Full Video: https://fb.watch/2ynPrdD81y/ — Donald J. Trump (@realDonaldTrump) December 22, 2020 A better approach than replacing the tweet's link with its URI-M would include Robust Links in the process. This way a reader can visit the tweet at its live URL, see that the account has been disabled, but still visit evidence of the tweet's existence in a web archive. Robust Links include additional attributes with the a element that provide links to the live web resource, a memento of that resource, and the date that the author viewed the resource. Below is an annotated example of a robust link for Michael Nelson's tweet. If the web page author loads robustlinks.js and robustlinks.css into the page, then the Robust Links dropdown menu (e.g., ) appears next to the robust link text. The reader can click this symbol and get a menu that provides access to the current version of the page, the memento, and other mementos for the same link without having to install additional browser extensions or other software. We show this menu in the screenshot below. We use a Robust Link in the degraded embed of Trump's latest tweet below. To all of those who have asked, I will not be going to the Inauguration on January 20th. — Donald J. Trump (@realDonaldTrump) January 8, 2021 It would be nice if we could combine the Robust Links code with the widgets.js code, but the widgets.js code ceases to function if we include the Robust Links data attributes inside the link portion of the embed. We see this below with an example of Michael Nelson's still present tweet, but with Robust Links markup added. Fortunately, the Robust Links dropdown menu still works so readers can navigate to the tweet's live version or its mementos. @shawnjones pineapple on pizza is awful! — Michael L. Nelson (@phonedude_mln) January 9, 2021 Can we combine some of these ideas? Seen below, authors could take the screenshot (this one from Yahoo! News), but also wrap the image in the robust link. This way they can convey what they saw in their own browser while also providing one or more links to evidence from third parties. Thus, an author can convey what they saw in their own browser while also allowing readers to verify the existence of the tweet both on the live web and in web archives. Additionally, the reader can leverage the robust link to visit view mementos of this tweet in multiple web archives and compare different mementos to each other. If we want to still use embeds, what can MementoEmbed do for us? Fortunately, MementoEmbed still works in this scenario. In the case of mementos of tweets, the tweet text is available in the og:description field of the meta element on the page. This field exists so that card services like MementoEmbed know which description to render in the card. Because MementoEmbed already applies the additional attributes of Robust Links to its HTML, as shown below, it can satisfy both needs of the web page author. Donald J. Trump on Twitter   Preserved by ARCHIVE.ORG“To all of those who have asked, I will not be going to the Inauguration on January 20th.”      twitter.com  @  2021-01-08T15:45:49Z   Other Versions  || Current version unavailable Unfortunately, while MementoEmbed is Robust Links compatible and archive-aware, it is not Twitter-aware. More complex tweets that contain additional tweets, their own cards, videos, and images do not render as expected. The example below contains a quote tweet. MementoEmbed only sees the quoted tweet URL (https://t.co/3fs1oPVnAx) as text and does nothing to expand it because MementoEmbed is just relaying text from og:description. Donald J. Trump on Twitter   Preserved by ARCHIVE.ORG“Get smart Republicans. FIGHT! https://t.co/3fs1oPVnAx”      twitter.com  @  2021-01-08T01:33:38Z   Other Versions  || Current version unavailable Since, 2015, Trump has posted more than 57,000 tweets. If the webmaster for cnn.com, thehill.com, or another news websites wants to sustain the existing embeds for these tweets, because the effort to replace them manually would be too great due, they could create their own widgets.js. It would be even better for readers if it were both Twitter-aware and archive-aware. It could still provide an integrity check on the embed while also providing Robust Links. Summary Trump's Twitter account suspension will not result in broken embeds in news articles. The embeds will degrade and continue to display the content of the tweet. While this may be a relief to page authors who embedded these tweets, this graceful degradation preserves the content, but also demonstrates how a web page author could insert fake tweets into a web page and then claim that the tweets had been since deleted or are otherwise unavailable. Could embeds be an additional front for the circulation of disinformation? Web archives can help us demonstrate that a tweet truly existed with the content cited by the citing web page author, but links alone are not enough. In the case of tweets, embeds help readers view what the author saw while providing a link to the tweet for verification. If the tweeting account is suspended or the tweet is otherwise not available, the embed fails to support the author's argument that the tweet even existed. Embeds alone do not link to web archives, but by incorporating Robust Links, we can help readers easily verify the evidence presented by web page authors. We have outlined several potential solutions to address this problem, like adding Robust Links to screenshots or generating embeds of archived tweets with MementoEmbed. The ideal solution should be both archive-aware and Twitter-aware and incorporate Robust Links to help readers find other mementos as supporting evidence. By providing embeds and robust links to mementos from multiple web archives, we have the tools to defend ourselves on the embed front of the disinformation war. --Shawn M. Jones and Michael L. Nelson Acknowledgements I would like to thank Kelly Durkin Ruth (United States Naval Academy) and Herbert Van de Sompel for bringing these tweets to my attention. Kelly started me thinking in this direction with an early conversation of Cohen's tweet. Valentina Neblitt-Jones, Martin Klein, and Herbert further helped me discuss and flesh out some of the ideas present in this blog post. I noticed that Michael Nelson was explaining this in a Twitter thread while I beginning this blog post, so we started to coordinate on a joint post. - Shawn Archiving Twitter embeds Twitter Web Archives Get link Facebook Twitter Pinterest Email Other Apps Comments Post a Comment Powered by Blogger Web Science and Digital Libraries This blog is used to communicate research and education updates from the Web Science and Digital Libraries Research Group at Old Dominion University. Annual summaries are available for 2019, 2018, 2017, 2016, 2015, 2014, and 2013. Faculty: Michael L. Nelson Michele C. Weigle Sampath Jayarathna Jian Wu Vikas Ashok Faryaneh Poursardar You can also follow us on Twitter: @WebSciDL -- Michael L. Nelson Archive 2021 10 January 10 2021-01-26: Summary of "CVExplorer: Multidimension... 2020-01-22 Twitter rewrites your URLs, but assumes... 2020-01-20: 366 dots in 2020 - top news stories of... 2021-01-20: Between the Election Day and the suspe... 2021-01-19: Summary of "Latent Feature Vulnerabili... 2021-01-15: Six WS-DL classes Offered for Spring 2021 2021-01-14: Review of WS-DL's 2020 2021-01-11: Trip report to SDP (First Workshop on ... 2021-01-09: Embedded Tweets From @realDonaldTrump:... 2021-01-05: Summary of "BRON--Linking Attack Tacti... 2020 72 December 8 November 5 September 10 August 12 July 5 June 8 May 6 April 6 March 4 February 2 January 6 2019 54 December 5 November 4 October 5 September 9 August 5 July 5 June 6 May 5 April 2 March 2 February 4 January 2 2018 52 December 5 November 8 October 3 September 3 August 3 July 7 June 5 May 2 April 6 March 5 February 1 January 4 2017 47 December 6 November 4 October 2 September 2 August 7 July 4 June 3 April 7 March 5 February 2 January 5 2016 55 December 1 November 6 October 13 September 7 August 4 July 5 June 6 May 1 April 6 March 3 February 1 January 2 2015 39 December 2 November 3 October 3 September 6 August 3 July 5 June 4 May 3 April 2 March 3 February 2 January 3 2014 44 December 1 November 3 October 4 September 7 August 3 July 10 June 5 May 4 April 3 March 2 January 2 2013 47 December 3 November 7 October 6 September 2 August 3 July 7 June 1 May 8 April 2 March 3 February 1 January 4 2012 31 December 4 November 2 October 3 September 3 August 2 July 5 June 3 May 1 April 1 March 1 February 3 January 3 2011 41 December 6 November 6 October 5 September 1 August 3 July 4 June 5 May 1 April 3 March 4 February 1 January 2 2010 31 December 3 November 2 October 4 August 2 July 5 June 1 May 2 April 2 March 1 February 4 January 5 2009 17 December 1 November 3 October 3 September 3 August 1 July 4 June 2 Show more Show less Labels @WebSciDL \ref \vref #WebArchiveWedneday 116th Congress 2004 2008 2008 Election 2009 2010 2011 2012 2012 Election 2013 2014 2015 2016 2017 2018 2019 2020 2020 Election 2020 Presidential Elections 2021 365 dots 366 dots 404 error 4chan 8chan aaai abbyy accessibility ACM ACM/IEEE-CS Add-on adversarial machine learning African drumming laws Age agile AI Al-Qaeda Alabama Senate Alexa ALEXANDRIA Project algorithm Allow ALP alumni AMA amazon textract AMF anchor text Android annotation Annotations Anonymous FTP aoc Apache api Appium Arab Spring Arabic Linguistic Pipeline Arabic Names Arabic Websites ArabWIC ARC archivability Archival Acid Test Archival Replay archive Archive Facebook Archive Profiling Archive Unleashed 3.0 Archive-it Archive.is archive.today archivenow archives Archives Unleashed ArchiveSpark Archiving Archiving Facebook Archiving Instagram Archiving Twitter ArcSpread artificial intelligence arXiv ASIS&T astronomy Asynchronous at risk websites Atlanta AU4 Augmented Human Aura Australia Autism Automation autoplay award banners Barack Obama BeautifulSoup berkman klein center Berlin Best Paper best poster Bibliotheca Alexandrina big data BigData bing cache biodiversity Bitcoin BitTorrent Blockchain Blogging boilerplate removal book of the dead BookReader Boston MA Brazil Breitbart News brisbane British Library browser based preservation Brozzler building collections Bush cache CACM California canada CAPWIC Carbon Date Career Fair Caselaw Access Project ccf CDL CDX CDX-JSON CDXJ CEDWARC CEOS character encoding China Chrome CIKM citations cite-as citeseerx classify client-side rewriting Clinton Cloud cluster cmu CNI CNI Fall 2009 CNI Fall 2015 CNI Fall 2017 cni Fall 2018 CNI Spring 2017 CNI Spring 2019 CNN CNU code quality Code{4}Lib Cognitive Memory Collaborative Filtering collection evaluation collection summary collections Collective Intelligence Colloquium Columbia College Communications of the ACM Composite Memento computer science conference Conference Congressional Tweets Conifer conspiracy containerization content content drift content moderation Content Negotiation Content-based filtering Cookie Cookie Violation CoQA corpus Cosine Similarity counting COVE COVID-19 CRA-W2013 CRA-W2014 crawler Crawler Trap Creation Date Cross Country cs 395 CS 418/518 CS 431/531 cs 432/532 cs 480/580 CS 495 cs 495/595 CS 620 CS 625 CS 695 cs 725/825 CS 734/834 CS 751/851 CS 791/891 CS 795/895 CS 796/896 cs 800 CS 891 CS418 cs432/532 cs495/595 cs725/825 CSPAN Curation curation sites custom missions cybersecurity Cyprus D-Lib Magazine d3 damage dark web analysis data data analysis Data Mining data model data portability Data Science data set data streams Data-Driven Science Datathon DDU Decentralized Web deep learning Defaced Memento defense defensive cyber operations deferred representations Deleted Tweets delicious demo Democratic National Convention developer DFS Dialog System Dictionary Dictionary Explorer Digging Into Data digital humanities digital libraries Digital Library digital preservation Digital Preservation 2013 Digital Preservation Award dissertation diversity index DL DL 2014 dl2014 DNC Docker Docker Campus Ambassador Doctoral Consortium Documenting the Now Dodging the Memory Hole Dodging The Memory Hole 2016 DOE DOIs Double Metaphone Drexel dthmh2016 DTMH DTMH2017 Dutch 2012 Web archive DWeb DWeb 2018 DWeb Summit EAW ECIR ECIR 2014 eclipse Ed Fox Educause Review EEG Egypt Egyptian revolution Electron embeds EMNLP Emu Emulation enrichment seminar enterprise research entrepreneurship evaluation Event Archiving event characteristics event triggering events Evidence Evolution expected value experiment Extension extreme Extremists Propaganda eye tracking Eye-Tracking facebook Facebook API fake accounts fake news fall 2011 Fall 2012 fall 2013 Fall 2014 fall 2015 Fall 2016 fall 2017 Fall 2018 Fall 2019 Fall 2020 farewell FaryanehPoursardar Fbarc federal summit Fellowship figure label recognition File Format Firefox fixity Flipboard follower count Foo Camp Foo Camp 2010 Football Fox News framework France Fulbright Gaddafi GargKritika Generative Models Georgetown Germany GHC GHC14 GHC15 GHC17 GHC2013 GHC2014 GHC2015 GHC2017 Gini Git GitHub gluecon Google google cache Google Language Detection API Google Maps google vision api Google+ government websites Grace Hopper Celebration Grad Cohort Workshop grant graph Grasshopper Guantanamo Bay Guess-Language Haar hackathon Hadoop Handles Hany Harvard harvard law school Harvard LIL hash HATEOAS hawaii Hbase hearing conservation Heritrix Heuristic Model Hiberlink high fidelity web archiving High School High School Event higher education HimarshaJ HME HT HT 2010 html HTML Language html removal HTTP HTTP Mailbox HTTP Methods http prefer HTTPRange-14 huge data Hussein Abdel-Wahab hybrid course Hypercane Hypertext Hypertext 2009 Hypertext 2010 Hypertext 2015 Hypertext 2018 IA IA20 ibnesayeed ide idea IEEE IEEE TCDL IEEE VIS IEEE-IRI-2020 IETF IETF 78 iFly IIPC IIPC 2011 IIPC 2012 IIPC 2013 IIPC 2014 IIPC 2015 IIPC 2016 IIPC 2017 IIPCGA15 Illinois IMLS Indexing Indian Students Indiana University Indonesia InDP InDP 2009 Information Extraction Information Retrieval Information Science infovis Instagram Institutional Repositories integrity inter-server links Internet archive Internet Draft Internships intra-server links Invited Talk ipfs iPRES iPRES 2018 iPRES2015 ipwb IRI Irony ISIL ISIS Islamic State Jaccard index Japan java javascript Javed JCDL JCDL 2014 JCDL 2009 JCDL 2010 JCDL 2011 JCDL 2012 JCDL 2013 JCDL 2014 JCDL 2015 JCDL 2016 JCDL 2017 JCDL 2018 JCDL 2019 JCDL 2020 jcdl2015 Jellyfish jianwu John McCain journalism JSON Justext Katy Perry kdd kdd2011 Kerry kgarg knowledge discovery kurtosis L3S Label Langdell hall langid Language Language Detection Language Header languageidentifier LANL Last-Modified latex LAWA LDA LDOW LDOW 2010 Lecture Levenshtein Distance lexical signature LIBER Libindic Library Library and Archive Canada Library of Congress Libya Linda link extraction link rot link words linking links loc local memory local memory project local news log analysis London Los Alamos Los Angeles LSL lxml Machine Learning Magdeburg Magnifier Map margin Markdown Match Rating Approach math formula extraction matKelly md5 mechanical turk Media media manipulation Media Type Mediawiki Memento Memento Audit memento modifications Memento-Datetime MementoFox memgator Mental Health Messaging Metadata Metaphone Metaphone 3 Microsoft Microsoft Research Faculty Summit Microsoft Word Mink MITRE Mitt Romney ML mobile mink mod_rewrite model Montréal MS thesis multihash MuntabirChoudhury Named Entity Recognition named graph Names Matching NaN nanopublication Narrator NASA National Symposium on Web Archiving Interoperability natural language processing Nauman Navy NDIIPP NDIIPP 2009 NDIIPP 2010 NDIIPP 2011 NDIIPP 2012 NDIIPP 2013 NDIIPP 2014 NDSA NEH NER NERC Neural Networks NeuroPype news News Archiving news preservation news similarity Newspapers NFL ngrams ni-uri NISO NLI NLP NLTK Nodejs NodeXL NoSQL notepad NSF NSF/JISC Workshop NTRS Nuremberg project NUS Nutrition nyc NYSIIS OAC OAC 2011 OAI OAI-ORE OAI-PMH Object Reuse and Exchange ocasio2018 OCR ODU off-topic oldweb.today On-Demand online course ontology open-source OpenCV OCR OPTIONS Orange orchestration ORE OriginStamp ORS OSoMe PageRank paper summary Paris Parser patent pattern recognition Paul Evan Peters Award Paywall PDA2011 PDA2012 PDA2013 PDA2017 Pearltrees Perma.cc Personal Archiving Personal Assistant phantomjs PhD PhD defense Phonetic Algorithms Pig Pittsburgh planet plotting poem poetry Poland Politwoops Popular Media Portuguese Postdam Poster. PowerPoint Poznan prefer preservation Preserve Me presidential debate press release Privacy private profile discovery Profiling Programming Projects PRONI Proof Protocol Labs provenance PSU psychology PTSD Public Record Office of Northern Ireland publication publications Puppeteer Python Python-boilerpipe Python-goose PyWB pywinauto Q&A questions R Radiation radio random variable raw mementos RDF Reading Tasks recollection of events recommend recommendation recommendation systems recommendations Reconstructive records management Recruiting Reddit redirection rediscover missing web pages RegEx regular expression Reinforcement Learning Replay representations Reproducible Research Republican National Convention research ResourceSync REST retraction Revolution RFC7089 Rhizome RIBDA Rio de Janeiro rladies RNC Roadtrip robots.txt rogue planet rstat Ruby Ruby on Rails Sami San Francisco Santa Clara Sapien Labs Satellite satellites Scanned Image Scholarly Communication Scholarly Orphans scholarship School of computing scientific article scrapbook screen scraping SDP workshop search Search Engine security selenium self-reference semantic web Sentiment Analysis Serialization server-side rewriting service ServiceWorker Sessions SEWIC sha256 shannon's diversity index share sharing shiny shuttering services sigir Signal Processing Signposting Silicon Valley Simhash simpson's diversity index Singapore SiteStory Slovenia Snowflake Social Feed Manager social media social network social networks software Soundex spin SPN spoilers spring 2012 spring 2013 Spring 2014 spring 2015 Spring 2016 Spring 2017 spring 2018 Spring 2019 Spring 2020 Spring 2021 Squidwarc sse Standard Compliance Audit standard deviation Stanford Stanford CoreNLP Stanford NER Stanford WebBase startups statistical computing Statistics STEAM on Spectrum Storify Storify API Story storygraph storytelling Streaming-hub stupid german laws sumgram summarization Summer Camp Summer Workshop summit sunlight web integrity project Superbowl surrogate Surveillance Survey Sutori Switzerland Synchronicity tags Tahrir talk TAMU TDT Teaching technical drawing technical report Temp Temp Web Temporal Coherence temporal drift Temporal Intention Temporal Violation Tensorflow TensorFlow.js tenure-track tesseract-OCR Texas Text Analysis text mining text parsing text processing TF-IDF The European Archive The Internet Memory Thumbnails tidyverse Time Series Data Time Travel timemap timestamp Timestamps TIRM Tools top news topic detection and tracking Topic modeling Topsy toronto TPDL TPDL 2013 TPDL 2014 TPDL 2015 TPDL 2016 tpdl 2020 TPDL2012 TPDL2015 TR transactional web archive travel Travis CI trip report Trump trusted timestamping trusty uri Tumblr tutorial tv stations Tweet Analysis Tweet Congress Tweet Timestamp TweetedAt Twitter Twitter accounts Twitter API Twitter UI TwitterLabel ua list UI UIA UMD unarchived web UNC undergraduate research uniform distribution University Rankings Unsupervised Small-World upnext Urbana-Champaign Urdu Urdu Blogosphere UrduTech UrduWeb URI aliases URL diversity US Congress user studies useR! useR!2018 useR2018 USW Va Tech validity Vancouver video Video Games Vint Cerf Virtual Conference Virtual Symposium Visualization VMASC Volunteering VT Vulnerabilities vulnerability exploit prediction W3C WAC wadl WADL 2013 WADL 2015 WADL 2017 WADL 2018 WADL 2019 wadl 2020 wadl2016 WAIL Walkthrough WARC Warcbase WARCMerge warcprox WARCreate Warrick WASAPI Washington DC Wayback Machine Wayback++ WCI wdill Web Web Archives Web Archives Abuse Web Archives Misuse Web Archiving web archiving forensics web page title Web Science Web Science 2017 Web Science Conference web scraping Web Service Web Site Reconstruction webarchiveplayer webcitation.org WebCite webcomics webrecorder webrecorder.io WebRTC websatchel whatdiditlooklike WIKICON USA Wikipedia WING Wolfram Data Summit Women women in computing Women in tech Women in technology Workshop world local news wosp WS-DL WS-DL Review wsdl WSDL diversity index WWW WWW 2010 WWW 2013 WWW 2016 xinwei xml YouTube zombie resources Zurich Show more Show less