PageSourceSearch

https://pressthink.org/j/rosen-archive/

html pressthink.org collected 2026-10-02 04:25:39 UTC 7,041 bytes, 132 lines download raw bytes

1
2<!DOCTYPE html>
3<!--
4  jay rosen's internet archive  —  an impossible press in view-source
5  "the impossible press: american journalism and the decline of public life" (1986)
6
7  a dissertation that sat in a drawer for 39 years, finally published december 2025.
8  jay would say that the press-public relationship is transactional, not just informational.
9  you opening view-source proves his point.
10
11  stack: zero-build react 18 via esm.sh + htm, no bundler, no npm
12  built by: joe amditis (archive curator)  —  [email protected]
13  more at: pressthink.org
14-->
15<html lang="en">
16  <head>
17    <meta charset="UTF-8" />
18    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19    <title>Jay Rosen's Internet Archive</title>
20    <meta name="description" content="A curated public collection of the works, critiques, and teachings of Jay Rosen, professor of journalism at NYU. 25,000+ records spanning four decades." />
21    <link rel="canonical" href="https://pressthink.org/j/rosen-archive/" />
22
23    <!-- Open Graph -->
24    <meta property="og:title" content="Jay Rosen's Internet Archive" />
25    <meta property="og:description" content="A curated public collection of the works, critiques, and teachings of Jay Rosen, professor of journalism at NYU. 25,000+ records spanning four decades of journalism criticism, media theory, and public life." />
26    <meta property="og:url" content="https://pressthink.org/j/rosen-archive/" />
27    <meta property="og:type" content="website" />
28    <meta property="og:site_name" content="Jay Rosen's Internet Archive" />
29    <meta property="og:image" content="https://pressthink.org/j/rosen-archive/og-image.png" />
30    <meta property="og:image:width" content="1200" />
31    <meta property="og:image:height" content="630" />
32
33    <!-- Twitter Card -->
34    <meta name="twitter:card" content="summary_large_image" />
35    <meta name="twitter:title" content="Jay Rosen's Internet Archive" />
36    <meta name="twitter:description" content="A curated public collection of the works, critiques, and teachings of Jay Rosen, professor of journalism at NYU." />
37    <meta name="twitter:image" content="https://pressthink.org/j/rosen-archive/og-image.png" />
38
39    <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
40    <link rel="icon" href="./favicon.ico" />
41
42    <!-- RSS Feed Autodiscovery (Dave Winer alignment) -->
43    <link rel="alternate" type="application/rss+xml" title="Jay Rosen's Internet Archive" href="./data/feeds/rss.xml" />
44    <link rel="alternate" type="application/rss+xml" title="Jay Rosen's Internet Archive - Articles" href="./data/feeds/articles.xml" />
45
46    <!-- Module CDN: warm the esm.sh TLS handshake before the first React import (#283) -->
47    <link rel="preconnect" href="https://esm.sh" crossorigin>
48
49    <!-- Google Fonts -->
50    <link rel="preconnect" href="https://fonts.googleapis.com">
51    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
52    <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@300;400;500;700&family=Special+Elite&display=swap" rel="stylesheet">
53
54    <!-- External CSS (versioned for cache busting) -->
55    <link rel="stylesheet" href="./frontend/design-system/legacy-token-bridge.css?v=3.8.36" />
56    <link rel="stylesheet" href="./frontend/design-system/tokens.css?v=3.8.36" />
57    <link rel="stylesheet" href="./frontend/index.css?v=3.8.36" />
58
59    <!-- Tailwind CSS (pre-built for production) -->
60    <link rel="stylesheet" href="./frontend/dist/tailwind.css?v=3.8.36" />
61    <link rel="stylesheet" href="./frontend/design-system/recipes.css?v=3.8.36" />
62
63  <!-- Import Map -->
64  
64<script type="importmap">
65{
66  "imports": {
67    "react": "https://esm.sh/[email protected]",
68    "react-dom/client": "https://esm.sh/[email protected]/client",
69    "react-dom": "https://esm.sh/[email protected]",
70    "htm": "https://esm.sh/[email protected]",
71    "lucide-react": "https://esm.sh/[email protected][email protected]",
72    "sql.js": "https://esm.sh/[email protected]",
73    "idb-keyval": "https://esm.sh/[email protected]",
74    "minisearch": "https://esm.sh/[email protected]"
75  }
76}
77</script>
77
78</head>
79  <body class="antialiased font-body text-stone-900 min-h-screen flex flex-col">
80    <div id="root"></div>
81    
82    <!-- Main Entry Point (versioned for cache busting) -->
83    
83<script type="module" src="./frontend/index.js?v=3.8.36"></script>
83
84
85    <!-- Easter egg for the curious -->
86    
86<script>
87      console.log("%c jay rosen's internet archive ", 'background: #1c1917; color: #fdfbf7; font-weight: bold; font-size: 16px; padding: 4px 8px; border-radius: 2px; font-family: "Special Elite", serif;')
88      console.log('%c "the impossible press: american journalism and the decline of public life" (1986)', 'color: #78716c; font-style: italic; font-size: 13px;')
89      console.log('%c stack: zero-build react 18 · esm.sh · htm · no bundler · no npm', 'color: #a8a29e; font-size: 11px;')
90      console.log('%c built by joe amditis  —  [email protected]  —  pressthink.org', 'color: #a8a29e; font-size: 11px;')
91    </script>
91
92
93    <!-- Service Worker Registration (for offline support & fast caching) -->
94    
94<script>
95      // #428: archive-details (~13 MB) and archive-data (~30 MB) are cached only
96      // by the service-worker Cache Storage -- they exceed Web Storage's ~5 MB
97      // quota and the IndexedDB cache holds only archive-core. So whenever the
98      // service worker is unavailable (no support, disabled by policy, or a
99      // failed registration) those large payloads have no client cache and are
100      // refetched on every navigation, regardless of IndexedDB. Surface that
101      // once instead of refetching silently.
102      const noteNoOfflineCache = () => console.info(
103        'Running without the service-worker cache: large archive data (>5 MB) is refetched on each navigation. See issue #428.'
104      );
105      if ('serviceWorker' in navigator) {
106        const controlledAtEvaluation = Boolean(navigator.serviceWorker.controller);
107        if (controlledAtEvaluation) {
108          navigator.serviceWorker.addEventListener('controllerchange', () => {
109            window.__jrdaUpdateReady = true;
110            window.dispatchEvent(new Event('jrda:update-ready'));
111          }, { once: true });
112        }
113        window.addEventListener('load', () => {
114          // Register the root bridge so the worker controls the archive page,
115          // not only /frontend/. Checking imported scripts without HTTP-cache
116          // reuse makes a frontend/sw.js CACHE_VERSION bump observable even
117          // though this small bridge intentionally stays stable.
118          navigator.serviceWorker.register('./sw.js', { updateViaCache: 'none' })
119            .then(registration => {
120              console.log('SW registered:', registration.scope);
121            })
122            .catch(err => {
123              console.log('SW registration failed:', err);
124              noteNoOfflineCache();
125            });
126        });
127      } else {
128        noteNoOfflineCache();
129      }
130    </script>
130
131  </body>
132</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.