|
|
boston.conman.org.rss.xml - sfeed_tests - sfeed tests and RSS and Atom files |
|
|
 |
git clone git://git.codemadness.org/sfeed_tests (git://git.codemadness.org) |
|
|
 |
Log |
|
|
 |
Files |
|
|
 |
Refs |
|
|
 |
README |
|
|
 |
LICENSE |
|
|
|
--- |
|
|
|
boston.conman.org.rss.xml (37448B) |
|
|
|
--- |
|
|
|
1 <?xml version="1.0" encoding="UTF-8" ?> |
|
|
|
2 <rss version="0.91"> |
|
|
|
3 |
|
|
|
4 <!-- ========================================== --> |
|
|
|
5 <!-- Note, there is no AUTHOR tag in this DTD --> |
|
|
|
6 <!-- neither in rss-0.92 ... --> |
|
|
|
7 <!-- ========================================== --> |
|
|
|
8 |
|
|
|
9 <channel> |
|
|
|
10 <title>The Boston Diaries</title> |
|
|
|
11 <link>http://boston.conman.org/</link> |
|
|
|
12 <description> |
|
|
|
13 The on going saga of a programmer who doesn't live in Boston, nor |
|
|
|
14 does he even like Boston, but yet named his weblog/journal |
|
|
|
15 “The Boston Diaries.” |
|
|
|
16 </description> |
|
|
|
17 <language>en-us</language> |
|
|
|
18 <pubDate>Fri, 13 May 2022 05:18:05 GMT</pubDate> |
|
|
|
19 <managingEditor>sean@conman.org (Sean Conner)</managingEditor> |
|
|
|
20 <webMaster>sean@conman.org (Sean Conner)</webMaster> |
|
|
|
21 <copyright> |
|
|
|
22 Copyright 1999-2022 by Sean Conner. All Rights Reserved. |
|
|
|
23 </copyright> |
|
|
|
24 |
|
|
|
25 <item> |
|
|
|
26 <title>Programming, up hill, both ways</title> |
|
|
|
27 <!-- <author>Sean Conner</author> --> |
|
|
|
28 <link>http://boston.conman.org/2022/05/12.2</link> |
|
|
|
29 <description> |
|
|
|
30 <![CDATA[ |
|
|
|
31 <BLOCKQUOTE CITE="https://justinjackson.ca/webmaster/" TITLE="I'm a XXXXXXX webmaster"> |
|
|
|
32 |
|
|
|
33 <P>People would come to us with a <B>problem,</B> and we would |
|
|
|
34 figure out a solution. We couldn't just search the web <B>because |
|
|
|
35 the web was still being written.</B> And you couldn't just punt a |
|
|
|
36 hard question to the engineer in the desk next to you. Why? |
|
|
|
37 Because you were sitting alone in a utility closet packed with |
|
|
|
38 floppy disks and old tape drives.</P> |
|
|
|
39 |
|
|
|
40 <P CLASS="cite"><CITE><A CLASS="external" HREF="https://justinjackson.ca/webmaster/">I'm a <SPAN CLASS="cut">XXXXXXX</SPAN> webmaster</A></CITE></P> |
|
|
|
41 |
|
|
|
42 </BLOCKQUOTE> |
|
|
|
43 |
|
|
|
44 <P>Ah, |
|
|
|
45 this takes me back. |
|
|
|
46 I got my first computer back in 1984, |
|
|
|
47 and if I wanted to know anything about it I was on my own. |
|
|
|
48 Google didn't exist |
|
|
|
49 (the public Internet didn't exist at the time). |
|
|
|
50 I didn't have anyone I could ask about computer related things. |
|
|
|
51 I did have books and magazines. |
|
|
|
52 So between experimentation and learning to read between the lines, |
|
|
|
53 I picked up programming.</P> |
|
|
|
54 |
|
|
|
55 <P>So when it came time to write a <A CLASS="site" HREF="http://www.conman.org/people/spc/refs/search/">metasearch engine</A>, |
|
|
|
56 there were no tutorials. |
|
|
|
57 There were no open source metasearch engines to download and use. |
|
|
|
58 There was only the problem of writing a metasearch engine, |
|
|
|
59 <A CLASS="site" HREF="http://www.conman.org/people/spc/refs/search/search.hp1.html">in a language I didn't even know</A> |
|
|
|
60 (and which itself was less than a year old at the time).</P> |
|
|
|
61 |
|
|
|
62 <P>Fun times.</P> |
|
|
|
63 |
|
|
|
64 <P>So I always found it odd when people would go online asking for tutorials, |
|
|
|
65 <EM>especially</EM> for writing metasearch engines |
|
|
|
66 (and yes, that did happen back then). |
|
|
|
67 So when something like <A CLASS="local" HREF="/2021/06/07.3">testing a negative</A> comes up, |
|
|
|
68 and I can't convince the Powers That Be that it's never a good idea to prove a negative, |
|
|
|
69 I can't just look up some tutorial on proving negatives—I just have to <A CLASS="local" HREF="/2021/07/29.1">figure it out on my own</A>.</P> |
|
|
|
70 |
|
|
|
71 ]]> |
|
|
|
72 </description> |
|
|
|
73 </item> |
|
|
|
74 |
|
|
|
75 <item> |
|
|
|
76 <title>“This is how we do things around here.”</title> |
|
|
|
77 <!-- <author>Sean Conner</author> --> |
|
|
|
78 <link>http://boston.conman.org/2022/05/12.1</link> |
|
|
|
79 <description> |
|
|
|
80 <![CDATA[ |
|
|
|
81 <BLOCKQUOTE CITE="https://logicmag.io/clouds/agile-and-the-long-crisis-of-software/" TITLE="Agile and the Long Crisis of Software"> |
|
|
|
82 |
|
|
|
83 <P>And, in fact, anyone with any proximity to software development has likely |
|
|
|
84 heard rumblings about Agile. For all the promise of the manifesto, one |
|
|
|
85 starts to get the sense when talking to people who work in technology that |
|
|
|
86 laboring under Agile may not be the liberatory experience it’s billed as. |
|
|
|
87 Indeed, software development is in crisis again—but, this time, it’s an |
|
|
|
88 Agile crisis. On the web, everyone from regular developers to some of the |
|
|
|
89 original manifesto authors is raising concerns about Agile practices. They |
|
|
|
90 talk about the “Agile-industrial complex,” the network of consultants, |
|
|
|
91 speakers, and coaches who charge large fees to fine-tune Agile processes. |
|
|
|
92 And almost everyone complains that Agile has taken a wrong turn: somewhere |
|
|
|
93 in the last two decades, Agile has veered from the original manifesto’s |
|
|
|
94 vision, becoming something more restrictive, taxing, and stressful than it |
|
|
|
95 was meant to be.</P> |
|
|
|
96 |
|
|
|
97 <P>Part of the issue is Agile’s flexibility. Jan Wischweh, a freelance |
|
|
|
98 developer, calls this the “no true Scotsman” problem. Any Agile practice |
|
|
|
99 someone doesn’t like is not Agile at all, it inevitably turns out. The |
|
|
|
100 construction of the manifesto makes this almost inescapable: because the |
|
|
|
101 manifesto doesn’t prescribe any specific activities, one must gauge the |
|
|
|
102 spirit of the methods in place, which all depends on the person experiencing |
|
|
|
103 them. Because it insists on its status as a “mindset,” not a methodology, |
|
|
|
104 Agile seems destined to take on some of the characteristics of any |
|
|
|
105 organization that adopts it. And it is remarkably immune to criticism, |
|
|
|
106 since it can’t be reduced to a specific set of methods. “If you do one |
|
|
|
107 thing wrong and it’s not working for you, people will assume it’s because |
|
|
|
108 you’re doing it wrong,” one product manager told me. “Not because there’s |
|
|
|
109 anything wrong with the framework.”</P> |
|
|
|
110 |
|
|
|
111 <P CLASS="cite">Via <A CLASS="external" HREF="https://news.ycombinator.com/item?id=31310561">Hacker News</A>, <CITE><A CLASS="external" HREF="https://logicmag.io/clouds/agile-and-the-long-crisis-of-software/">Agile and the Long Crisis of Software</A></CITE></P> |
|
|
|
112 </BLOCKQUOTE> |
|
|
|
113 |
|
|
|
114 |
|
|
|
115 <P>That last line, |
|
|
|
116 “it's not working for you, |
|
|
|
117 people will assume it's because you're doing it wrong,” |
|
|
|
118 rings really true to me. |
|
|
|
119 At <DEL>The Corporation</DEL>—no, |
|
|
|
120 I no longer work for The Corporation, |
|
|
|
121 I now work for The Enterprise now that the Corporate Overlords have finally taken over. |
|
|
|
122 So, |
|
|
|
123 at The Enterprise, |
|
|
|
124 I've been informing them pretty much all this year that this “Agile” development system they're forcing on us isn't working. |
|
|
|
125 Before they <A CLASS="local" HREF="/2021/09/24.1">finally took over</A>, |
|
|
|
126 the team I was on was always on time, |
|
|
|
127 on budget, |
|
|
|
128 smooth deployments |
|
|
|
129 (only two bad deployments in ten years) |
|
|
|
130 and no show-stopping bugs found in production. |
|
|
|
131 As I told upper management, |
|
|
|
132 given our prior track record, |
|
|
|
133 <EM>why</EM> change how we do development? |
|
|
|
134 Why fix what isn't broken? |
|
|
|
135 And while upper management never said this directly, |
|
|
|
136 through their actions they answered: this is our process, |
|
|
|
137 and we're sticking to it, |
|
|
|
138 slipped schedules and disasterous deployments be damned!</P> |
|
|
|
139 |
|
|
|
140 <P>As to why I haven't left yet? |
|
|
|
141 Because it seems this “Agile” movement has invaded everywhere and things would be “more of the same” elsewhere. |
|
|
|
142 At least here, |
|
|
|
143 <A CLASS="local" HREF="/2022/02/11.3">I'm not forced to use Windows</A>.</P> |
|
|
|
144 |
|
|
|
145 |
|
|
|
146 ]]> |
|
|
|
147 </description> |
|
|
|
148 </item> |
|
|
|
149 |
|
|
|
150 <item> |
|
|
|
151 <title>Springfield isn't the most popular city name in the US</title> |
|
|
|
152 <!-- <author>Sean Conner</author> --> |
|
|
|
153 <link>http://boston.conman.org/2022/05/10.1</link> |
|
|
|
154 <description> |
|
|
|
155 <![CDATA[ |
|
|
|
156 <BLOCKQUOTE CITE="https://www.smithsonianmag.com/arts-culture/matt-groening-reveals-the-location-of-the-real-springfield-60583379/" TITLE="Matt Groening Reveals the Location of the Real Springfield | Arts & Culture| Smithsonian Magazine"> |
|
|
|
157 |
|
|
|
158 <P><B>OK, why do the Simpsons live in a town called Springfield? |
|
|
|
159 Isn't that a little generic?</B></P> |
|
|
|
160 |
|
|
|
161 <P>Springfield was named after Springfield, Oregon. The only reason |
|
|
|
162 is that when I was a kid, the TV show “Father Knows Best” took |
|
|
|
163 place in the town of Springfield, and I was thrilled because I |
|
|
|
164 imagined that it was the town next to Portland, my hometown. When I |
|
|
|
165 grew up, I realized it was just a fictitious name. I also figured |
|
|
|
166 out that Springfield was one of the most common names for a city in |
|
|
|
167 the U.S. In anticipation of the success of the show, I thought, |
|
|
|
168 “This will be cool; everyone will think it's their Springfield.” |
|
|
|
169 And they do.</P> |
|
|
|
170 |
|
|
|
171 <P CLASS="cite"><CITE><A CLASS="external" HREF="https://www.smithsonianmag.com/arts-culture/matt-groening-reveals-the-location-of-the-real-springfield-60583379/">Matt |
|
|
|
172 Groening Reveals the Location of the Real Springfield | Arts & |
|
|
|
173 Culture| Smithsonian Magazine</A></CITE></P> |
|
|
|
174 |
|
|
|
175 </BLOCKQUOTE> |
|
|
|
176 |
|
|
|
177 <P>So I got to wondering, |
|
|
|
178 <I>is Springfield the most popular city name in the <ABBR TITLE="United States">US</ABBR>?</I> |
|
|
|
179 I know, |
|
|
|
180 weird question, |
|
|
|
181 but I'm curious. |
|
|
|
182 So some quick searching lead me to the <A CLASS="external" HREF="https://www.usgs.gov/u.s.-board-on-geographic-names/download-gnis-data">United States Geological Survey Geographical Names Database</A>. |
|
|
|
183 With some massaging of the data, |
|
|
|
184 I was able to determine that there are 34 States with a “Springfield,” |
|
|
|
185 but it's not alone. |
|
|
|
186 There are eight other cities that are also in 34 States: |
|
|
|
187 Arlington, |
|
|
|
188 Chester, |
|
|
|
189 Clinton, |
|
|
|
190 Farmington, |
|
|
|
191 Florence, |
|
|
|
192 Greenville, |
|
|
|
193 Milton, |
|
|
|
194 and Newport. |
|
|
|
195 Okay, |
|
|
|
196 maybe not the same 34 states across all those cities, |
|
|
|
197 but you get the idea.</P> |
|
|
|
198 |
|
|
|
199 <P>But those cities aren't the most popular names. |
|
|
|
200 No, |
|
|
|
201 all of them are tied for <EM>ninth place!</EM> |
|
|
|
202 The city name that appears in most states is “Riverside” at 46 States |
|
|
|
203 (plus Puerto Rico). |
|
|
|
204 The States that don't have a “Riverside” are Alaska, |
|
|
|
205 Hawaii, |
|
|
|
206 Oklahoma, |
|
|
|
207 and Louisiana |
|
|
|
208 (really? |
|
|
|
209 <EM>Louisiana?</EM> |
|
|
|
210 One of the world's largest river run straight through that state, |
|
|
|
211 and no one bothered to name a town in Louisiana, |
|
|
|
212 “Riverside?”).</P> |
|
|
|
213 |
|
|
|
214 <P>And just to satisfy the curious:</P> |
|
|
|
215 |
|
|
|
216 <TABLE> |
|
|
|
217 <CAPTION>Top 10 city names in the <ABBR TITLE="United States">US</ABBR> (including territories)</CAPTION> |
|
|
|
218 <THEAD> |
|
|
|
219 <TR><TH>Place</TH><TH>Name</TH><TH># States</TH></TR> |
|
|
|
220 </THEAD> |
|
|
|
221 <TBODY> |
|
|
|
222 <TR><TH ROWSPAN="1" CLASS="num">1</TH> <TD>Riverside</TD> <TD>47</TD></TR> |
|
|
|
223 <TR><TH ROWSPAN="1" CLASS="num">2</TH> <TD>Centerville</TD> <TD>43</TD></TR> |
|
|
|
224 <TR><TH ROWSPAN="1" CLASS="num">3</TH> <TD>Fairview</TD> <TD>41</TD></TR> |
|
|
|
225 <TR><TH ROWSPAN="1" CLASS="num">4</TH> <TD>Franklin</TD> <TD>40</TD></TR> |
|
|
|
226 <TR><TH ROWSPAN="1" CLASS="num">5</TH> <TD>Midway</TD> <TD>39</TD></TR> |
|
|
|
227 <TR><TH ROWSPAN="3" CLASS="num">6</TH> <TD>Georgetown</TD> <TD>37</TD></TR> |
|
|
|
228 <TR> <TD>Glendale</TD> <TD>37</TD></TR> |
|
|
|
229 <TR> <TD>Greenwood</TD> <TD>37</TD></TR> |
|
|
|
230 <TR><TH ROWSPAN="6" CLASS="num">7</TH> <TD>Lincoln</TD> <TD>36</TD></TR> |
|
|
|
231 <TR> <TD>Marion</TD> <TD>36</TD></TR> |
|
|
|
232 <TR> <TD>Oakland</TD> <TD>36</TD></TR> |
|
|
|
233 <TR> <TD>Pleasant Valley</TD> <TD>36</TD></TR> |
|
|
|
234 <TR> <TD>Salem</TD> <TD>36</TD></TR> |
|
|
|
235 <TR> <TD>Union</TD> <TD>36</TD></TR> |
|
|
|
236 <TR><TH ROWSPAN="3" CLASS="num">8</TH> <TD>Fairfield</TD> <TD>35</TD></TR> |
|
|
|
237 <TR> <TD>Lakeview</TD> <TD>35</TD></TR> |
|
|
|
238 <TR> <TD>Liberty</TD> <TD>35</TD></TR> |
|
|
|
239 <TR><TH ROWSPAN="9" CLASS="num">9</TH> <TD>Arlington</TD> <TD>34</TD></TR> |
|
|
|
240 <TR> <TD>Chester</TD> <TD>34</TD></TR> |
|
|
|
241 <TR> <TD>Clinton</TD> <TD>34</TD></TR> |
|
|
|
242 <TR> <TD>Farmington</TD> <TD>34</TD></TR> |
|
|
|
243 <TR> <TD>Florence</TD> <TD>34</TD></TR> |
|
|
|
244 <TR> <TD>Greenville</TD> <TD>34</TD></TR> |
|
|
|
245 <TR> <TD>Milton</TD> <TD>34</TD></TR> |
|
|
|
246 <TR> <TD>Newport</TD> <TD>34</TD></TR> |
|
|
|
247 <TR> <TD>Springfield</TD> <TD>34</TD></TR> |
|
|
|
248 <TR><TH ROWSPAN="9" CLASS="num">10</TH> <TD>Bethel</TD> <TD>33</TD></TR> |
|
|
|
249 <TR> <TD>Clifton</TD> <TD>33</TD></TR> |
|
|
|
250 <TR> <TD>Eden</TD> <TD>33</TD></TR> |
|
|
|
251 <TR> <TD>Glenwood</TD> <TD>33</TD></TR> |
|
|
|
252 <TR> <TD>Hamilton</TD> <TD>33</TD></TR> |
|
|
|
253 <TR> <TD>Kingston</TD> <TD>33</TD></TR> |
|
|
|
254 <TR> <TD>Lakeside</TD> <TD>33</TD></TR> |
|
|
|
255 <TR> <TD>Mount Pleasant</TD> <TD>33</TD></TR> |
|
|
|
256 <TR> <TD>Summit <TD>33</TD></TR> |
|
|
|
257 </TBODY> |
|
|
|
258 </TABLE> |
|
|
|
259 |
|
|
|
260 ]]> |
|
|
|
261 </description> |
|
|
|
262 </item> |
|
|
|
263 |
|
|
|
264 <item> |
|
|
|
265 <title>Star Wars Day?</title> |
|
|
|
266 <!-- <author>Sean Conner</author> --> |
|
|
|
267 <link>http://boston.conman.org/2022/05/04.1</link> |
|
|
|
268 <description> |
|
|
|
269 <![CDATA[ |
|
|
|
270 <P>It's not Star Wars Day—it's Dave Brubeck Day! |
|
|
|
271 (and give yourself 10 cool points if you get the reference) |
|
|
|
272 Of course, |
|
|
|
273 it's only Dave Brubeck day in the <ABBR TITLE="United States">US</ABBR>. |
|
|
|
274 Elsewhere in the world, |
|
|
|
275 Dave Brubeck Day is April 5<SUP>th</SUP> for some odd reason |
|
|
|
276 (give yourself a geek point for getting this reference).</P> |
|
|
|
277 |
|
|
|
278 <P><SPAN CLASS="comments">[And of course Sean didn't tell you he pulled this meme from FaceMeLinkedInstaMySpaceBookWeInGram. |
|
|
|
279 He's not that cool to think of this. —Editor]</SPAN></P> |
|
|
|
280 |
|
|
|
281 ]]> |
|
|
|
282 </description> |
|
|
|
283 </item> |
|
|
|
284 |
|
|
|
285 <item> |
|
|
|
286 <title>The legality of double slashes in URIs</title> |
|
|
|
287 <!-- <author>Sean Conner</author> --> |
|
|
|
288 <link>http://boston.conman.org/2022/05/03.2</link> |
|
|
|
289 <description> |
|
|
|
290 <![CDATA[ |
|
|
|
291 <P><A CLASS="external" HREF="gemini://gemini.clehaxze.tw/gemlog/2022/05-03-two-cents-on-the-mistery-of-double-slashes-in-urls.gmi">Martin Chang replied</A> to my <A CLASS="local" HREF="/2022/04/30.1">musings on processing malformed Gemini requests</A>, |
|
|
|
292 saying that double slashes in <ABBR TITLE="Uniform Resource Indicator">URI</ABBR>s are illegal, |
|
|
|
293 and pointed out the <ABBR TITLE="Augmented Backus-Naur Form">ABNF</ABBR> grammar from <A CLASS="external" HREF="https://www.ietf.org/rfc/rfc3986.txt">the <ABBR TITLE="Uniform Resource Indicator">URI</ABBR> specification</A> to back up his claim:</P> |
|
|
|
294 |
|
|
|
295 <PRE CLASS="language-ABNF" TITLE="ABNF"> |
|
|
|
296 path = path-absolute ; begins with "/" but not "//" |
|
|
|
297 path-absolute = "/" [ segment-nz *( "/" segment ) ] |
|
|
|
298 segment-nz = 1*pchar |
|
|
|
299 pchar = unreserved / pct-encoded / sub-delims / ":" / "@" |
|
|
|
300 </PRE> |
|
|
|
301 |
|
|
|
302 |
|
|
|
303 <P>But he didn't quote the <CODE>segment</CODE> rule:</P> |
|
|
|
304 |
|
|
|
305 <PRE CLASS="language-ABNF" TITLE="ABNF"> |
|
|
|
306 segment = *pchar |
|
|
|
307 </PRE> |
|
|
|
308 |
|
|
|
309 |
|
|
|
310 <P>which translated says, |
|
|
|
311 “0 or more <CODE>pchar</CODE> rules.” </P> |
|
|
|
312 |
|
|
|
313 <P>So the <ABBR TITLE="Augmented Backus-Naur Form">ABNF</ABBR> he quoted does indeed rule out <CODE>//boston/2018/07/04.2</CODE>. |
|
|
|
314 It doesn't rule out <CODE>/boston//2018/07/04.2</CODE>, |
|
|
|
315 since by the time we hit the double slash, |
|
|
|
316 we're in the <CODE>*( "/" segment )</CODE> part of the <CODE>path-absolute</CODE> rule, |
|
|
|
317 and <CODE>segment</CODE> can have 0 characters. |
|
|
|
318 But what he quoted only applies to relative links, |
|
|
|
319 what I receive is an abolute link. |
|
|
|
320 If you follow the <ABBR TITLE="Augmented Backus-Naur Form">ABNF</ABBR> from that perspective:</P> |
|
|
|
321 |
|
|
|
322 <PRE CLASS="language-ABNF" TITLE="ABNF"> |
|
|
|
323 URI-reference = URI / relative-ref |
|
|
|
324 URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] |
|
|
|
325 hier-part = "//" authority path-abempty |
|
|
|
326 / path-absolute |
|
|
|
327 / path-rootless |
|
|
|
328 / path-empty |
|
|
|
329 |
|
|
|
330 path-abempty = *( "/" segment ) |
|
|
|
331 |
|
|
|
332 ; other rules omitted |
|
|
|
333 </PRE> |
|
|
|
334 |
|
|
|
335 |
|
|
|
336 <P>not only does this allow <CODE>gemini://gemini.conman.org//boston/2018/07/04.2</CODE> but <CODE>gemini://gemini.conman.org///////////boston/2018/07/04.2</CODE>.</P> |
|
|
|
337 |
|
|
|
338 <P>I can understand why this was done—to simplify the grammar as the various <CODE>path-</CODE> rules generally end with <CODE>*( "/" segment )</CODE> allows one to end a <ABBR TITLE="Uniform Resource Indicator">URI</ABBR> with a trailing slash or not. |
|
|
|
339 I don't think the intent was to allow long strings of slashes, |
|
|
|
340 but that's the end result of a lax grammar. |
|
|
|
341 Martin is also correct that multiple slashes are treated as a single slash on <ABBR TITLE="Portable Operating System Interface">POSIX</ABBR> |
|
|
|
342 (basically, |
|
|
|
343 any Unix system), |
|
|
|
344 that's not the case across all operating systems. |
|
|
|
345 One exception I can think of Amiga<ABBR TITLE="Operating System">OS</ABBR>, |
|
|
|
346 where each slash represents a parent directory. |
|
|
|
347 This command, <CODE>cd ///</CODE> on Amiga<ABBR TITLE="Operating System">OS</ABBR> is the same as <CODE>cd ‥/‥/‥</CODE> on a <ABBR TITLE="Portable Operating System Interface">POSIX</ABBR> system. |
|
|
|
348 Crazy, |
|
|
|
349 I know. |
|
|
|
350 And maybe not even relevant these days, |
|
|
|
351 but I thought I should mention it.</P> |
|
|
|
352 |
|
|
|
353 ]]> |
|
|
|
354 </description> |
|
|
|
355 </item> |
|
|
|
356 |
|
|
|
357 <item> |
|
|
|
358 <title>I'm hoping this is a joke, because if it's not, I'm not sure what that says about our society</title> |
|
|
|
359 <!-- <author>Sean Conner</author> --> |
|
|
|
360 <link>http://boston.conman.org/2022/05/03.1</link> |
|
|
|
361 <description> |
|
|
|
362 <![CDATA[ |
|
|
|
363 <P>I finished my lunch of a sub sandwich when I notice a message printed on the wrapper in not-so-small print:</P> |
|
|
|
364 |
|
|
|
365 <DIV CLASS="pf"> |
|
|
|
366 |
|
|
|
367 <IMG SRC="/2022/05/03/wrapper.jpg" WIDTH="400" HEIGHT="300" ALT="[A sub sandwich wrapper with “DO NOT EAT THIS WRAPPER” printed on it.] I'll admit, the sub was good, but not so good as to keep eating everything in sight." TITLE="I'll admit, the sub was good, but not so good as to keep eating everything in sight."> |
|
|
|
368 |
|
|
|
369 </DIV> |
|
|
|
370 |
|
|
|
371 <P>I have no words.</P> |
|
|
|
372 |
|
|
|
373 ]]> |
|
|
|
374 </description> |
|
|
|
375 </item> |
|
|
|
376 |
|
|
|
377 <item> |
|
|
|
378 <title>Notes on an overheard conversation about tea</title> |
|
|
|
379 <!-- <author>Sean Conner</author> --> |
|
|
|
380 <link>http://boston.conman.org/2022/05/02.1</link> |
|
|
|
381 <description> |
|
|
|
382 <![CDATA[ |
|
|
|
383 <P>“You know, |
|
|
|
384 you forgot to remind me to make your tea.” </P> |
|
|
|
385 |
|
|
|
386 <P>“Oh. |
|
|
|
387 I need to remind you make tea.” </P> |
|
|
|
388 |
|
|
|
389 <P>“Sigh.” </P> |
|
|
|
390 |
|
|
|
391 <P>“So thank you for reminding me to remind you to make tea.” </P> |
|
|
|
392 |
|
|
|
393 <P>“…” </P> |
|
|
|
394 |
|
|
|
395 <P>“Um, |
|
|
|
396 doesn't hitting your head against the wall hurt?” </P> |
|
|
|
397 |
|
|
|
398 ]]> |
|
|
|
399 </description> |
|
|
|
400 </item> |
|
|
|
401 |
|
|
|
402 <item> |
|
|
|
403 <title>It was a simple bug, but …</title> |
|
|
|
404 <!-- <author>Sean Conner</author> --> |
|
|
|
405 <link>http://boston.conman.org/2022/05/01.2</link> |
|
|
|
406 <description> |
|
|
|
407 <![CDATA[ |
|
|
|
408 <P>I was right about <A CLASS="local" HREF="/2022/04/30.1">the double slash bug</A>—<A CLASS="local" HREF="/2022/04/16.1">it was a simple bug after all</A>. |
|
|
|
409 The authors of two Gemini crawlers wrote in about the double slash bug, |
|
|
|
410 and from them, |
|
|
|
411 I was able to get the root cause of the problem—<A CLASS="site" HREF="gemini://gemini.conman.org/boston/">my blog on Gemini</A>. |
|
|
|
412 Good thing I hedged my statement about not being the cause yesterday. |
|
|
|
413 Sigh.</P> |
|
|
|
414 |
|
|
|
415 <P>Back in Debtember, |
|
|
|
416 <A CLASS="local" HREF="/2021/12/06.2">I added support for displaying multiple posts</A>. |
|
|
|
417 It's not an easy feature to describe, |
|
|
|
418 but basically, |
|
|
|
419 it allows one to |
|
|
|
420 (by hacking the <ABBR TITLE="Uniform Resource Locator">URL</ABBR>, |
|
|
|
421 but who hacks <ABBR TITLE="Uniform Resource Locator">URL</ABBR>s these days?) |
|
|
|
422 specify posts via a range of dates. |
|
|
|
423 And it's on these pages that the double slashed <ABBR TITLE="Uniform Resource Locator">URL</ABBR>s appear. |
|
|
|
424 Why that happens is easy—I was generating the links directly from strings:</P> |
|
|
|
425 |
|
|
|
426 <PRE CLASS="language-Lua" TITLE="Lua"> |
|
|
|
427 local function geminilink(entry) |
|
|
|
428 return string.format("gemini://%s%s/%s%04d/%02d/%02d.%d", |
|
|
|
429 config.url.host, |
|
|
|
430 port, -- generated elsewhere |
|
|
|
431 config.url.path, |
|
|
|
432 entry.when.year, |
|
|
|
433 entry.when.month, |
|
|
|
434 entry.when.day, |
|
|
|
435 entry.when.part |
|
|
|
436 ) |
|
|
|
437 end |
|
|
|
438 </PRE> |
|
|
|
439 |
|
|
|
440 |
|
|
|
441 <P>instead of from a <ABBR TITLE="Uniform Resource Locator">URL</ABBR> type. |
|
|
|
442 I think when I wrote the above code, |
|
|
|
443 I wasn't thinking in terms of a <ABBR TITLE="Uniform Resource Locator">URL</ABBR> type, |
|
|
|
444 but of constructing a <ABBR TITLE="Uniform Resource Locator">URL</ABBR> from data I already had. |
|
|
|
445 The bug itself is due to <CODE>config.url.path</CODE> ending in a slash, |
|
|
|
446 so the third slash in the string literal wasn't needed. |
|
|
|
447 The correct way isn't that hard:</P> |
|
|
|
448 |
|
|
|
449 <PRE CLASS="language-Lua" TITLE="Lua"> |
|
|
|
450 local function geminilink(entry) |
|
|
|
451 return uurl.toa(uurl.merge(config.url, |
|
|
|
452 { |
|
|
|
453 path = string.format("%04d/%02d/%02d.%d", |
|
|
|
454 entry.when.year, |
|
|
|
455 entry.when.month, |
|
|
|
456 entry.when.day, |
|
|
|
457 entry.when.part) |
|
|
|
458 })) |
|
|
|
459 end |
|
|
|
460 </PRE> |
|
|
|
461 |
|
|
|
462 <P>and it wouldn't have exhibited the issue.</P> |
|
|
|
463 |
|
|
|
464 <P>With this fix in place, |
|
|
|
465 I think I will continue to reject requests with the double slash, |
|
|
|
466 as it is catching bugs, |
|
|
|
467 which is a Good Thing™.</P> |
|
|
|
468 |
|
|
|
469 ]]> |
|
|
|
470 </description> |
|
|
|
471 </item> |
|
|
|
472 |
|
|
|
473 <item> |
|
|
|
474 <title>A zombie site from May Days past</title> |
|
|
|
475 <!-- <author>Sean Conner</author> --> |
|
|
|
476 <link>http://boston.conman.org/2022/05/01.1</link> |
|
|
|
477 <description> |
|
|
|
478 <![CDATA[ |
|
|
|
479 <P>Given that today is <A CLASS="external" HREF="https://en.wikipedia.org/wiki/May_Day">May Day</A> I was curious as to <A CLASS="local" HREF="/thisday/05/01">what I wrote on past May Days</A>. |
|
|
|
480 And lo' |
|
|
|
481 sixteen years ago <A CLASS="local" HREF="/2006/05/01.2">I wrote about <CODE>OsiXs.org</CODE></A> and their attempt to “change the world!” |
|
|
|
482 Amazingly, |
|
|
|
483 <A CLASS="external" HREF="http://osixs.org/">the website</A> is still around, |
|
|
|
484 although with even less than there was sixteen years ago. |
|
|
|
485 I guess I was right when I wrote back then, |
|
|
|
486 “I personally don't see this going anywhere fast.” </P> |
|
|
|
487 |
|
|
|
488 ]]> |
|
|
|
489 </description> |
|
|
|
490 </item> |
|
|
|
491 |
|
|
|
492 <item> |
|
|
|
493 <title>Musings on processing malformed Gemini (and web) requests</title> |
|
|
|
494 <!-- <author>Sean Conner</author> --> |
|
|
|
495 <link>http://boston.conman.org/2022/04/30.1</link> |
|
|
|
496 <description> |
|
|
|
497 <![CDATA[ |
|
|
|
498 <P>I'm still bothered with Gemini requests like <CODE>gemini://gemini.conman.org//boston/2015/10/17.2</CODE>. |
|
|
|
499 I thought <A CLASS="local" HREF="/2022/04/16.1">it might be a simple bug</A> but now I'm not so sure. |
|
|
|
500 There's a client out there that has made 1,070 such requests, |
|
|
|
501 and if that was all, |
|
|
|
502 or even most, |
|
|
|
503 of the requests, |
|
|
|
504 then yes, |
|
|
|
505 that's probably a simple bug. |
|
|
|
506 But it's not. |
|
|
|
507 It turns out to be only 4% of the requests from said client are malformed in that way. |
|
|
|
508 Which to me indicates that something out there might be generating such links |
|
|
|
509 (and for this case, |
|
|
|
510 I checked and <A CLASS="local" HREF="/2022/04/22.3">I don't think I'm the cause this time</A>).</P> |
|
|
|
511 |
|
|
|
512 <P>I decided to see what happens on the web. |
|
|
|
513 I poked a few web sites with similar “double slash” requests and I got mixed results. |
|
|
|
514 Most of the sites just accepted them as is and served up a page. |
|
|
|
515 The only site that seemed to have issues with it was <A CLASS="external" HREF="https://news.ycombinator.com/">Hacker News</A>, |
|
|
|
516 and I'm not sure what status it returned since it's difficult to obtain the status codes from browsers.</P> |
|
|
|
517 |
|
|
|
518 <P>So, |
|
|
|
519 I have a few options.</P> |
|
|
|
520 |
|
|
|
521 <OL> |
|
|
|
522 |
|
|
|
523 <LI>I can keep the current code and always reject such requests. |
|
|
|
524 In my mind, |
|
|
|
525 such requests have no meaning and are malformed, |
|
|
|
526 so why shouldn't I just reject them?</LI> |
|
|
|
527 |
|
|
|
528 <LI>I can send a permanent redirection to the “proper” location. |
|
|
|
529 This has the upside of maintaining a canonical link to each page, |
|
|
|
530 but with the downside of forcing clients through an additional request, |
|
|
|
531 and me having to live with the redundant requests in the log files. |
|
|
|
532 But it's obvious what resource is being requested, |
|
|
|
533 and sending a permenent redirect informs the client of the proper location.</LI> |
|
|
|
534 |
|
|
|
535 <LI>I can just silently clean up the request and carry on. |
|
|
|
536 The upside—clean logs with only one request. |
|
|
|
537 The downside—two (or more) valid locations for content. |
|
|
|
538 On the one hand, |
|
|
|
539 this just feels wrong to me, |
|
|
|
540 as technically speaking, |
|
|
|
541 <CODE>/foo</CODE> and <CODE>//foo</CODE> should be different resources |
|
|
|
542 (as per <A CLASS="external" HREF="https://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier: Generic Syntax</A>, |
|
|
|
543 <CODE>/foo</CODE> and <CODE>/foo/</CODE> are technically different resources, |
|
|
|
544 so why not this case?). |
|
|
|
545 On the other hand, |
|
|
|
546 this issue is generally ignored by most web servers out there anyway, |
|
|
|
547 so there's that precendent. |
|
|
|
548 On the gripping hand, |
|
|
|
549 doing this just seems like a cop out and blindly following what the web does.</LI> |
|
|
|
550 |
|
|
|
551 </OL> |
|
|
|
552 |
|
|
|
553 <P>Well, |
|
|
|
554 how do current Gemini servers deal with it? |
|
|
|
555 Pretty much like existing web servers—most just treat multiple slashses as a single slash. |
|
|
|
556 I think <A CLASS="site" HREF="gemini://gemini.conman.org//boston/2015/10/17.2">my server</A> is the outlier here. |
|
|
|
557 Now the question is—how pedantic do I want to be? |
|
|
|
558 Is “good enough” better then “perfect?” </P> |
|
|
|
559 |
|
|
|
560 <P>Perhaps a better question is—why am I worrying about this anyway?</P> |
|
|
|
561 |
|
|
|
562 ]]> |
|
|
|
563 </description> |
|
|
|
564 </item> |
|
|
|
565 |
|
|
|
566 <item> |
|
|
|
567 <title>“We're a local newspaper run by a non-local company, we don't care about European readers”</title> |
|
|
|
568 <!-- <author>Sean Conner</author> --> |
|
|
|
569 <link>http://boston.conman.org/2022/04/23.2</link> |
|
|
|
570 <description> |
|
|
|
571 <![CDATA[ |
|
|
|
572 <BLOCKQUOTE CITE="gemini://station.martinrue.com/adou/f3868913db6e409eae9fa67845f70324"> |
|
|
|
573 |
|
|
|
574 <P>I was reading Conman's latest article, and he linked to a page called |
|
|
|
575 «Transilvania Times». I wanted to see it, but for the first time since the |
|
|
|
576 vote of the GPDR my visit was denied because I'm European.</P> |
|
|
|
577 |
|
|
|
578 <P CLASS="cite"><CITE><CODE><A CLASS="external" HREF="gemini://station.martinrue.com/adou/f3868913db6e409eae9fa67845f70324">gemini://station.martinrue.com/adou/f3868913db6e409eae9fa67845f70324</A></CODE></CITE></P> |
|
|
|
579 </BLOCKQUOTE> |
|
|
|
580 |
|
|
|
581 |
|
|
|
582 <P>The “GPDR” is a typo—the author actually meant the <A CLASS="external" HREF="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation" TITLE="General Data Protection Regulation">GDPR</A>. |
|
|
|
583 And it pains me to see something like this happen. |
|
|
|
584 Here's someone from Europe who was interested in reading a story about a person in <A CLASS="external" HREF="https://www.cityofbrevard.com/">a small <ABBR TITLE="United States">US</ABBR> town</A> and yet, |
|
|
|
585 they couldn't because the owners of the news website |
|
|
|
586 (which isn't owned locally, |
|
|
|
587 but instead by <A CLASS="external" HREF="https://en.wikipedia.org/wiki/CNHI">a larger company in another state</A>) |
|
|
|
588 probably doesn't care about European readers. |
|
|
|
589 The company does have a policy for <A CLASS="external" HREF="https://www.transylvaniatimes.com/site/california_privacy_policy.html">California readers</A>, |
|
|
|
590 so I don't see why it can't be extended for the <ABBR TITLE="General Data Protection Regulation">GDPR</ABBR>. |
|
|
|
591 This is just so short sighted.</P> |
|
|
|
592 |
|
|
|
593 ]]> |
|
|
|
594 </description> |
|
|
|
595 </item> |
|
|
|
596 |
|
|
|
597 <item> |
|
|
|
598 <title>Does that mean I know have to unit test my text-only websites?</title> |
|
|
|
599 <!-- <author>Sean Conner</author> --> |
|
|
|
600 <link>http://boston.conman.org/2022/04/23.1</link> |
|
|
|
601 <description> |
|
|
|
602 <![CDATA[ |
|
|
|
603 <P>I fixed the <A CLASS="local" HREF="/2022/04/22.2">infinite redirections from Hell bug</A>. |
|
|
|
604 And again, |
|
|
|
605 like most bugs, |
|
|
|
606 it was an easy fix—just don't redirect if you come from <CODE>http://flummux.org/</CODE>. |
|
|
|
607 It feels weird to think of having to test a text-only website, |
|
|
|
608 but there is a form of programming involved, |
|
|
|
609 so it shouldn't be as much of a surprise as it is.</P> |
|
|
|
610 |
|
|
|
611 <P>Sigh.</P> |
|
|
|
612 |
|
|
|
613 ]]> |
|
|
|
614 </description> |
|
|
|
615 </item> |
|
|
|
616 |
|
|
|
617 <item> |
|
|
|
618 <title>I have now wrapped my brain around how it got that link</title> |
|
|
|
619 <!-- <author>Sean Conner</author> --> |
|
|
|
620 <link>http://boston.conman.org/2022/04/22.3</link> |
|
|
|
621 <description> |
|
|
|
622 <![CDATA[ |
|
|
|
623 <P><A CLASS="external" HREF="gemini://gemini.clehaxze.tw/gemlog/2022/04-22-re-my-common-gemini-crawler-pitfalls.gmi">Martin Chang replied</A> to my <A CLASS="local" HREF="/2022/04/16.1">post about Gemini crawlers</A>, |
|
|
|
624 saying that it was his crawler that had sent links like <CODE>gemini://gemini.conman.org/boston/2008/04/30/2008/04/30.1</CODE> and decided to look into the issue. |
|
|
|
625 Well, |
|
|
|
626 he did, |
|
|
|
627 and he found it wasn't his issue, |
|
|
|
628 but mine.</P> |
|
|
|
629 |
|
|
|
630 <P>Oh my.</P> |
|
|
|
631 |
|
|
|
632 <P>Okay, |
|
|
|
633 so how did I end up generating links like <CODE>gemini://gemini.conman.org/boston/2008/04/30/2008/04/30.1</CODE>?</P> |
|
|
|
634 |
|
|
|
635 <P>This is, |
|
|
|
636 first and foremost, |
|
|
|
637 a blog on the web. |
|
|
|
638 Each entry is stored as <ABBR TITLE="HyperText Markup Language">HTML</ABBR>, |
|
|
|
639 and when a request is made via <A CLASS="site" HREF="gopher://gopher.conman.org/1Phlog:">gopher</A> or <A CLASS="site" HREF="gemini://gemini.conman.org/boston/">Gemini</A>, |
|
|
|
640 the entries making up the request are retrieved and <A CLASS="local" HREF="/2021/12/06.2">converted to the appropriate format</A>. |
|
|
|
641 As part of that conversion, |
|
|
|
642 links to the blog itself have to be translated appropriately, |
|
|
|
643 and that's where the error happened.</P> |
|
|
|
644 |
|
|
|
645 <P>So, |
|
|
|
646 for example, |
|
|
|
647 the links for the above entry are collected:</P> |
|
|
|
648 |
|
|
|
649 <OL> |
|
|
|
650 <LI><CODE>http://www.cisco.com/</CODE></LI> |
|
|
|
651 <LI><CODE>http://it.slashdot.org/article.pl?sid=08/04/29/2254242</CODE></LI> |
|
|
|
652 <LI><CODE>http://www.arin.net/</CODE></LI> |
|
|
|
653 <LI><CODE>2008/04/30.1#fn-2008-04-30-1-1</CODE></LI> |
|
|
|
654 <LI><CODE>http://www.barracudanetworks.com/</CODE></LI> |
|
|
|
655 <LI><CODE>http://answers.yahoo.com/question/index?qid=20080219010714AAnF91Q</CODE></LI> |
|
|
|
656 </OL> |
|
|
|
657 |
|
|
|
658 <P>Those links with a <ABBR TITLE="Uniform Resource Locator">URL</ABBR> scheme are passed through as is, |
|
|
|
659 but #4 is special, |
|
|
|
660 not only is it a relative link to my blog, |
|
|
|
661 but it also contains a <ABBR TITLE="Uniform Resource Locator">URL</ABBR> fragment, |
|
|
|
662 and that's where things went pear-shaped. |
|
|
|
663 The code to do the <ABBR TITLE="Uniform Resource Locator">URL</ABBR> translations parsed each link as a <ABBR TITLE="Uniform Resource Locator">URL</ABBR>, |
|
|
|
664 but for relative links, |
|
|
|
665 I used the string, |
|
|
|
666 not the parsed <ABBR TITLE="Uniform Resource Locator">URL</ABBR> structure. |
|
|
|
667 As such, |
|
|
|
668 the code didn't work so well with <ABBR TITLE="Uniform Resource Locator">URL</ABBR> fragments, |
|
|
|
669 and thus, |
|
|
|
670 I ended up with links like <CODE>gemini://gemini.conman.org/boston/2008/04/30/2008/04/30.1</CODE> |
|
|
|
671 (for the record, |
|
|
|
672 the same bug was in the gopher translation code as well).</P> |
|
|
|
673 |
|
|
|
674 <P>The fix, |
|
|
|
675 as for most bugs, |
|
|
|
676 was easy once the core issue was identified. |
|
|
|
677 The other issues I talked about are, |
|
|
|
678 as far as I can tell, |
|
|
|
679 not stuff I can fix.</P> |
|
|
|
680 |
|
|
|
681 ]]> |
|
|
|
682 </description> |
|
|
|
683 </item> |
|
|
|
684 |
|
|
|
685 <item> |
|
|
|
686 <title>Play stupid games, win stupid prizes</title> |
|
|
|
687 <!-- <author>Sean Conner</author> --> |
|
|
|
688 <link>http://boston.conman.org/2022/04/22.2</link> |
|
|
|
689 <description> |
|
|
|
690 <![CDATA[ |
|
|
|
691 <P>It's not only <A CLASS="local" HREF="/2022/01/11.1">Gemini bots having issues with redirects</A>. |
|
|
|
692 I'm poking around the logs from my webserver, |
|
|
|
693 when I scan all of them to see the breakdown of response codes my server is sending |
|
|
|
694 (for this month). |
|
|
|
695 And well … it's rather surprising:</P> |
|
|
|
696 |
|
|
|
697 <TABLE> |
|
|
|
698 <CAPTION>Breakdown of HTTP response codes from all the sites I host</CAPTION> |
|
|
|
699 <THEAD> |
|
|
|
700 <TR><TH>Status</TH> <TH>Meaning</TH> <TH>Count</TH></TR> |
|
|
|
701 </THEAD> |
|
|
|
702 <TFOOT> |
|
|
|
703 <TR><TH>Status</TH> <TH>Meaning</TH> <TH>Count</TH></TR> |
|
|
|
704 </TFOOT> |
|
|
|
705 <TBODY> |
|
|
|
706 <TR><TD CLASS="num">302</TD> <TD>Found (moved temporarily)</TD> <TD CLASS="num">253773</TD></TR> |
|
|
|
707 <TR><TD CLASS="num">200</TD> <TD>OK</TD> <TD CLASS="num">178414</TD></TR> |
|
|
|
708 <TR><TD CLASS="num">304</TD> <TD>Not Modified</TD> <TD CLASS="num">25552</TD></TR> |
|
|
|
709 <TR><TD CLASS="num">404</TD> <TD>Not Found</TD> <TD CLASS="num">8214</TD></TR> |
|
|
|
710 <TR><TD CLASS="num">301</TD> <TD>Moved Permanently</TD> <TD CLASS="num">6358</TD></TR> |
|
|
|
711 <TR><TD CLASS="num">405</TD> <TD>Method Not Allowed</TD> <TD CLASS="num">1453</TD></TR> |
|
|
|
712 <TR><TD CLASS="num">410</TD> <TD>Gone</TD> <TD CLASS="num">685</TD></TR> |
|
|
|
713 <TR><TD CLASS="num">400</TD> <TD>Bad Request</TD> <TD CLASS="num">255</TD></TR> |
|
|
|
714 <TR><TD CLASS="num">206</TD> <TD>Partial Content</TD> <TD CLASS="num">151</TD></TR> |
|
|
|
715 <TR><TD CLASS="num">401</TD> <TD>Unauthorized</TD> <TD CLASS="num">48</TD></TR> |
|
|
|
716 <TR><TD CLASS="num">500</TD> <TD>Internal Server Error</TD> <TD CLASS="num">24</TD></TR> |
|
|
|
717 <TR><TD CLASS="num">403</TD> <TD>Forbidden</TD> <TD CLASS="num">4</TD></TR> |
|
|
|
718 </TBODY> |
|
|
|
719 </TABLE> |
|
|
|
720 |
|
|
|
721 |
|
|
|
722 <P>I was not expecting that many temporary redirects. |
|
|
|
723 Was it some massive issue across all the sites? |
|
|
|
724 Or just a few? |
|
|
|
725 Well, |
|
|
|
726 it turned all of the temporary redirects were from one site: <CODE>http://www.flummux.org/</CODE> |
|
|
|
727 (and no, |
|
|
|
728 I'm not linking to it as the reason why will become clear). |
|
|
|
729 I registered the domain way back in 2000 just as a place to play around with web stuff or to temporarly make files available without cluttering up my main websites. |
|
|
|
730 The site isn't meant to be at all serious.</P> |
|
|
|
731 |
|
|
|
732 <P>Scanning the log file manually, |
|
|
|
733 I was seeing endless log entries like:</P> |
|
|
|
734 |
|
|
|
735 <PRE CLASS="language-data" TITLE="data"> |
|
|
|
736 <SPAN CLASS="cut">XXXXXXXXXXXXXXX</SPAN> - - [10/Apr/2022:20:55:05 -0400] "GET / HTTP/1.0" 302 284 "http://flummux.org/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 4.6 (build 01425); .NET CLR 1.0.3705; .NET CLR 2.0.50727)" -/- (-%) |
|
|
|
737 </PRE> |
|
|
|
738 |
|
|
|
739 |
|
|
|
740 <P>That log entry indicates a “browser” from <ABBR TITLE="Internet Protocol">IP</ABBR> address <SPAN CLASS="cut">XXXXXXXXXXXXXXX</SPAN>, |
|
|
|
741 identifying itself as “Mozilla (yada yada)” on the 10<SUP>th</SUP> of April, |
|
|
|
742 attempted to get the main page, |
|
|
|
743 as referred by <CODE>http://flummux.org/</CODE>. |
|
|
|
744 And for how many times this happened, |
|
|
|
745 broken down by browser:</P> |
|
|
|
746 |
|
|
|
747 <TABLE> |
|
|
|
748 <CAPTION>Top five user agents making the troublesome requests</CAPTION> |
|
|
|
749 <THEAD> |
|
|
|
750 <TR><TH>Count</TH> <TH>User agent</TH></TR> |
|
|
|
751 </THEAD> |
|
|
|
752 <TBODY> |
|
|
|
753 <TR><TD CLASS="num">127100</TD> <TD>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MRA 4.6 (build 01425); .NET CLR 1.0.3705; .NET CLR 2.0.50727)</TD></TR> |
|
|
|
754 <TR><TD CLASS="num">126495</TD> <TD>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)</TD></TR> |
|
|
|
755 <TR><TD CLASS="num">42</TD> <TD>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36</TD></TR> |
|
|
|
756 <TR><TD CLASS="num">36</TD> <TD>CATExplorador/1.0beta (sistemes at domini dot cat; https://domini.cat/catexplorador/)</TD></TR> |
|
|
|
757 <TR><TD CLASS="num">15</TD> <TD>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0</TD></TR> |
|
|
|
758 </TBODY> |
|
|
|
759 </TABLE> |
|
|
|
760 |
|
|
|
761 |
|
|
|
762 <P>Ah, |
|
|
|
763 two “browsers” that don't limit the number of redirects they follow. |
|
|
|
764 And amusingly enough, |
|
|
|
765 <EM>both</EM> agents came from the <EM>same</EM> <ABBR TITLE="Internet Protocol">IP</ABBR> address. |
|
|
|
766 Or maybe it's the same agent, |
|
|
|
767 just lying about what it is. |
|
|
|
768 Who knows? |
|
|
|
769 Well, |
|
|
|
770 aside from the author(s) of said “browser.” </P> |
|
|
|
771 |
|
|
|
772 <P>But what was all horribly confusing to me why the server was issuing a temporary redirect. |
|
|
|
773 Yes, |
|
|
|
774 if you try to go to <CODE>http://flummux.org/</CODE> the server will repond with a permanent redirect (status 301) to <CODE>http://www.flummux.org/</CODE> |
|
|
|
775 (the reasons for that is to canonicalize the <ABBR TITLE="Uniform Resource Locator">URL</ABBR>s and avoid the “duplicate content penalty” from Google—I set this all up years ago). |
|
|
|
776 But the site shouldn't redirect again. |
|
|
|
777 I can bring the site up in my browser without issue |
|
|
|
778 (which is a visual … pun? Commentary? Joke? on the line “The sky above the port was the color of television, tuned to a dead channel.”).</P> |
|
|
|
779 |
|
|
|
780 <P>And then I remembered—back in 2016, |
|
|
|
781 I set things up such that if the browser sent in a referring link, |
|
|
|
782 the page would temporarily redirect back to the referring link |
|
|
|
783 (which is why I'm not linking to it—you would just be redirected right back to this page). |
|
|
|
784 I set that up on a lark for some reason that now esacapes me. |
|
|
|
785 So the above “browsers” kept bouncing back and forth between <CODE>flummux.org</CODE> and <CODE>www.flummux.org</CODE>. |
|
|
|
786 For a quarter of a million requests.</P> |
|
|
|
787 |
|
|
|
788 <P>Sigh.</P> |
|
|
|
789 |
|
|
|
790 <P>In other news, |
|
|
|
791 bugs are nothing more than an inattention to detail.</P> |
|
|
|
792 |
|
|
|
793 ]]> |
|
|
|
794 </description> |
|
|
|
795 </item> |
|
|
|
796 |
|
|
|
797 <item> |
|
|
|
798 <title>Notes on some extreme lawn ornaments, Brevard edition</title> |
|
|
|
799 <!-- <author>Sean Conner</author> --> |
|
|
|
800 <link>http://boston.conman.org/2022/04/22.1</link> |
|
|
|
801 <description> |
|
|
|
802 <![CDATA[ |
|
|
|
803 <P>Eight years ago |
|
|
|
804 (wow! Has it been that long? |
|
|
|
805 <SPAN CLASS="comments">[Yes. —Editor]</SPAN> |
|
|
|
806 <SPAN CLASS="comments">[Who asked you? —Sean]</SPAN>) |
|
|
|
807 while in <A CLASS="external" HREF="http://brevardnc.org/">Brevard</A>, |
|
|
|
808 I took a picture of some <A CLASS="local" HREF="/2014/10/29.2">extreme lawn ornaments—life sized plastic cows</A>. |
|
|
|
809 I wrote the “eat moar chikin” image caption |
|
|
|
810 (if you hold your mouse over the image, |
|
|
|
811 it should pop up) |
|
|
|
812 because the cows reminded me of the cows used by <A CLASS="external" HREF="https://www.chick-fil-a.com/">Chick-fil-a</A>.</P> |
|
|
|
813 |
|
|
|
814 <P>I'm reading the <A CLASS="external" HREF="https://www.transylvaniatimes.com/">Transylvania Times</A> when I come across the article |
|
|
|
815 “<A CLASS="external" HREF="https://www.transylvaniatimes.com/features/transylvanian-of-the-week-john-taylor/article_0ace5e02-bb59-11ec-a02d-3fc39a4c45c6.html">Transylvanian of the Week: John Taylor</A>.” |
|
|
|
816 He owns <A CLASS="external" HREF="https://optaylors.com/">O.P. Taylor's</A>, |
|
|
|
817 a well known toy store in the area, |
|
|
|
818 and he's the one with the life sized plastic cows in his front yard. |
|
|
|
819 Not only that, |
|
|
|
820 but he purchased them from the person who made them for Chick-fil-a. |
|
|
|
821 Little did I know that my caption was more correct than I thought.</P> |
|
|
|
822 |
|
|
|
823 ]]> |
|
|
|
824 </description> |
|
|
|
825 </item> |
|
|
|
826 |
|
|
|
827 |
|
|
|
828 </channel> |
|
|
|
829 </rss> |
|
|
|
830 |
|