<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>John Heidemann</title>
    <description>John Heidemann</description>
    <link>https://ant.isi.edu/~johnh//</link>
    <atom:link href="https://ant.isi.edu/~johnh//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 19 Mar 2026 09:37:47 -0700</pubDate>
    <lastBuildDate>Thu, 19 Mar 2026 09:37:47 -0700</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>Image Formats</title>
        <description>
&lt;p&gt;Please be aware the choice of formats for figures makes a &lt;strong&gt;big&lt;/strong&gt;
difference in technical papers in several ways: quality, render time, and file
size.&lt;/p&gt;

&lt;p&gt;There is a &lt;em&gt;correct&lt;/em&gt; choice for each figure.  Understanding the options
can help.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Use PDF if you can, use PNG for line-art, use JPG for photos.
Do &lt;em&gt;not&lt;/em&gt; use JPEG for graphs or line-art–it will look bad.&lt;/p&gt;

&lt;h2 id=&quot;what-are-the-options&quot;&gt;What Are The Options?&lt;/h2&gt;

&lt;p&gt;There are three general options: PDF, PNG, and JPG. 
Briefly about each:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/PDF&quot;&gt;PDF&lt;/a&gt;&lt;/strong&gt; is a standard format
for documents and graphical images.
It’s a great default.
PDF is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Vector_graphics&quot;&gt;vector format&lt;/a&gt;)
where it describes what shapes to draw.
As a result,
it should be small in size, and yet will look good
even if you enlarge the image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/PNG&quot;&gt;PNG&lt;/a&gt;&lt;/strong&gt; is a standard format
for lossless images.
It is great for icons, and for graphs, and line-art when you cannot use
PDF.
PNG is a &lt;em&gt;bitmap&lt;/em&gt; format, so it represents the image as an array of colored
squares, and if you zoom in, you can see the squares and the image will be blocky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/JPEG&quot;&gt;JPG&lt;/a&gt;&lt;/strong&gt; (JPG is the usual extension, JPEG is the name of the format)
is a standard format for lossy images.
It is great for photographs, where will be much smaller
than the other choices.
JPG is a bitmap format (like PNG), so ultimately it’s image
is an array of colored squares, but its lossy compression makes it smaller
but also nosier.&lt;/p&gt;

&lt;p&gt;(Details: yes, you can put bitmaps in PDF format images. 
Don’t do that, it only makes it harder to do things.
There is also the &lt;a href=&quot;https://en.wikipedia.org/wiki/GIF&quot;&gt;GIF&lt;/a&gt;
format, but for all practical purposes it is
long since superseded by PNG.)&lt;/p&gt;

&lt;h2 id=&quot;for-diagrams-and-graphs-in-technical-papers-use-pdf-almost-always&quot;&gt;FOR DIAGRAMS AND GRAPHS IN TECHNICAL PAPERS: USE PDF (ALMOST ALWAYS)&lt;/h2&gt;

&lt;p&gt;Whenever you can (for example, if you’re using LaTeX) use PDF
over bitmaps (JPG or PNG or GIF).&lt;/p&gt;

&lt;p&gt;It will &lt;em&gt;look better&lt;/em&gt; because a vector format can scale to any size and
look good, while bitmaps look pixelated when zoomed too far.&lt;/p&gt;

&lt;p&gt;And it will usually &lt;em&gt;be smaller&lt;/em&gt; and &lt;em&gt;render faster&lt;/em&gt;, because
you say what to do (draw a line from here to there) not all the
details (put a dot here put a dot here put a dot here…)&lt;/p&gt;

&lt;p&gt;See https://en.wikipedia.org/wiki/Vector_graphics for more details.&lt;/p&gt;

&lt;h3 id=&quot;please-always-generate-pdf-directly-from-your-plotting-program&quot;&gt;PLEASE ALWAYS GENERATE PDF DIRECTLY FROM YOUR PLOTTING PROGRAM&lt;/h3&gt;

&lt;p&gt;You have to generate a PDF directly to get these benefits.&lt;/p&gt;

&lt;p&gt;In gnuplot, do:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;    set terminal pdfcairo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you generate a PNG and convert to PDF, you’ve already lost.&lt;/p&gt;

&lt;h3 id=&quot;exceptions-when-not-to-use-pdf&quot;&gt;EXCEPTIONS: When NOT to use PDF&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;In PowerPoint, support for vector graphics seems somewhat poor, so
PNGs are necessary.  Please generate PDF and then convert it to PNG.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I use this make recipe:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%.png: %.pdf
	pstoimg -antialias -aaliastext -depth 24 -density 200 -type png $&amp;lt;

figure.png: figure.pdf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;If your source image is a photo, use JPG.  There’s no point in
converting it to PDF.
(PDF will just encapsulate the JPG
internally anyway.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If your source image is actually a set of pixels (like a grid
of radar squares), then a PDF doesn’t add anything and you can just use the
PNG.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Screenshots are another case where your source image is a set of
pixels.  For screenshots, always use a PNG.  (PDF will just
encapsulate the PNG internally anyway.)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But you should also ask yourself: do I really want a screenshot, or do
I want to show the text in the screenshot?  Sometimes you want an
screenshot (to say: this is real software, or if you have buttons and
menus and such).  But if your point is to show a CLI command, do you
really need a screenshot or can you just put the text in a typewriter
font?&lt;/p&gt;

&lt;h3 id=&quot;why-not-png-for-technical-diagrams-in-papers&quot;&gt;Why not PNG? (For technical diagrams in papers)&lt;/h3&gt;

&lt;p&gt;A PNG bitmap will EITHER be low resolution and look pixelated, OR it
will be high resolution (300dpi) and then be really really big (many
megabytes).&lt;/p&gt;

&lt;p&gt;High resolution bitmaps can easily make files many megabytes in size.
Although that’s not the end of the world in 2023, 
it’s usually unnecessary.&lt;/p&gt;

&lt;h3 id=&quot;why-not-jpg-for-technical-diagrams-in-papers&quot;&gt;Why not JPG? (For technical diagrams in papers)&lt;/h3&gt;

&lt;p&gt;JPG has the problems of PNG, PLUS for graphs it causes artifacts,
as described below.&lt;/p&gt;

&lt;h2 id=&quot;for-photos-in-papers-always-use-jpg&quot;&gt;FOR PHOTOS IN PAPERS, ALWAYS USE JPG&lt;/h2&gt;

&lt;p&gt;JPEG is designed for photos.  Please always use it for photos.&lt;/p&gt;

&lt;p&gt;A professional photographer
will probably take &lt;a href=&quot;https://en.wikipedia.org/wiki/Raw_image_format&quot;&gt;raw image formats&lt;/a&gt;,
but that won’t work in a paper, and is not generally needed.
(If you know what it is, you probably already know where you want to use it.)&lt;/p&gt;

&lt;h3 id=&quot;why-not-pdf--for-photos-in-papers&quot;&gt;Why not PDF?  (For photos in papers)&lt;/h3&gt;

&lt;p&gt;There is no need to convert JPG to PDF, that doesn’t make it any better
(the image is already a bitmap).&lt;/p&gt;

&lt;p&gt;In fact, the best way to convert a JPG to PDF will just stick the JPG
in a PDF container, gaining nothing and losing the ability to extract and edit
the image.&lt;/p&gt;

&lt;h3 id=&quot;why-not-png-for-photos-in-papers&quot;&gt;Why not PNG? (For photos in papers)&lt;/h3&gt;

&lt;p&gt;Use PNG for cases described below, but not generally for photos.
PNG will be bigger and gains nothing for photos.&lt;/p&gt;

&lt;h3 id=&quot;be-careful-re-saving-jpg&quot;&gt;Be careful re-saving JPG&lt;/h3&gt;

&lt;p&gt;In general, don’t edit JPGs.
Each time you resave it, it can get recompressed.
Since compression is lossy, each recompression can add more noise 
to the image.&lt;/p&gt;

&lt;h2 id=&quot;for-graphs-and-line-art-always-use-png-if-you-cant-use-pdf&quot;&gt;FOR GRAPHS AND LINE-ART, ALWAYS USE PNG (if you can’t use PDF)&lt;/h2&gt;

&lt;p&gt;If you can’t use PDF, it’s &lt;em&gt;critical&lt;/em&gt; to use PNG for
graphs and line-art.&lt;/p&gt;

&lt;p&gt;JPEG does lossy compression.  Lossy compression is great
for photos because changing a few pixels doesn’t matter, and the
result is much smaller than a png.  It’s designed explicitly for
photos.&lt;/p&gt;

&lt;p&gt;Lossy compression is &lt;em&gt;awful&lt;/em&gt; for diagrams and line-art,
because it causes little
artifacts around the edge of straight lines and corners.  (Convert a
PowerPoint diagram with black-on-white text to JPG and then look at
the text close up: you’ll see lots of extra black pixels).&lt;/p&gt;

&lt;p&gt;Text and line graphs &lt;em&gt;always&lt;/em&gt; have artifacts in JPG.  &lt;em&gt;Never&lt;/em&gt; use JPG for
them.  (You can hide them by making the resolution very high,
or by setting the JPEG compression to 95%, but now you’ve got a huge image.
And there are still little artifacts in there.)&lt;/p&gt;

&lt;h3 id=&quot;artifacts-are-they-really-so-bad&quot;&gt;Artifacts, are they really so bad?&lt;/h3&gt;

&lt;p&gt;Yes, when you zoom in, or when you look closely.&lt;/p&gt;

&lt;p&gt;Compare these two smiley faces:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2023/smile.200.png&quot; alt=&quot;(PNG smile with minimal artifacts)&quot; /&gt;
&lt;img src=&quot;../BLOG/2023/smile.200.jpg&quot; alt=&quot;(JPG smile with noticeable artifacts)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Look particularly around the curves–there are subtle boxes of dots.
In fact, around the blue mouth, there are subtle yellow and red blotches.&lt;/p&gt;

&lt;p&gt;See this zoomed in version:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2023/smile_zoomed.png&quot; alt=&quot;(Zoom of JPG smile artifacts)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Or this one where I exaggerated the colors to emphasize the artifacts:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2023/smile_zoomed_colored.png&quot; alt=&quot;(Zoom of JPG smile artifacts)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You don’t want little gray boxes around curves on your images!
Curves are bad, text is bad.  It’s all bad.
Don’t make the smiley face’s unnecessary imperfections make your reader sad!&lt;/p&gt;

&lt;p&gt;(If it was PDF, these artifacts wouldn’t occur.
It it was a high-enough resolution PNG, 
the only artifacts would be due to anti-aliasing.)&lt;/p&gt;

&lt;h3 id=&quot;why-not-gifs-for-graphs-or-line-art&quot;&gt;Why not GIFs? (for graphs or line-art)&lt;/h3&gt;

&lt;p&gt;Please use PNG over GIF.  GIFs have only 256 colors,
but PNGs can have millions of colors.&lt;/p&gt;

&lt;p&gt;(PNGs were started due to patents on the GIF format in the 1990s.  The
GIF patent has now expired, but PNG is still a better format for
several technical reasons.)&lt;/p&gt;

&lt;p&gt;(The only place GIF is still advantageous is for animation.)&lt;/p&gt;

</description>
        <pubDate>Mon, 20 Feb 2023 00:00:00 -0800</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2023/0220-image-formats.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2023/0220-image-formats.html</guid>
        
        <category>blog,</category>
        
        <category>rants</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Javascript woes</title>
        <description>&lt;p&gt;(Warning, rant mode: on.)&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://conferences.sigcomm.org/sigcomm/2016/program.php&quot;&gt;SIGCOMM 2016 program is out&lt;/a&gt;
and there is much to like:
a bunch of interesting papers and a keynote from Jim Kurose, and other events.&lt;/p&gt;

&lt;p&gt;But the website follows the &lt;em&gt;JavaScript trend&lt;/em&gt; that really grates on me.
Each paper has a “paper” button that takes you to the content.
Attractively rounded corners show it was made in the 2010s.&lt;/p&gt;

&lt;p&gt;But I want to skim the program and download the most interesting papers to read later.
How do I do that?  I’d like to right-click and do “save link as…”.&lt;/p&gt;

&lt;p&gt;But no, these are not actual links, they’re JavaScript.
Specifically for the technical, they HREF doesn’t have  a URL, it is “javascript:void(0)
with an onclick handler.&lt;/p&gt;

&lt;p&gt;The nine most terrifying words on the web are
&lt;strong&gt;“Hi, I’m JavaScript; I’m here to improve your link’s user-experience”.&lt;/strong&gt;
(OK, ten words.)&lt;/p&gt;

&lt;p&gt;Clicking on “paper” replaces the program with the paper.
Let’s review the pain:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;saving document goes from 3 steps (right click to save as, press return, close PDF application) to &lt;em&gt;6 steps&lt;/em&gt; and a lot of mouse movement (click on java script “link”, find PDF save button elsewhere on screen, click on save, close PDF application that popped up, hit back-arrow to go back to program, scroll back to where I was in the program)&lt;/li&gt;
  &lt;li&gt;I lose context about where you are in the program (back takes you to the top of the program not where you were)&lt;/li&gt;
  &lt;li&gt;consumes your whole web screen (I’m on a 30” monitor and would like multiple visible window, thank you, not everyone is on their phone)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And replacing a URL HREF with JavaScript was a &lt;em&gt;bunch of work&lt;/em&gt; for the web page author
and is &lt;em&gt;slower&lt;/em&gt;:
someone had to find the JavaScript library and
code the A HREF with JavaScript,
and your browser has to load all this and interpret it.
(Sure, it’s a library, and the Internet is so fast these days, but you’re making work for yourself!)&lt;/p&gt;

&lt;p&gt;But the best part is:
&lt;em&gt;how did this improve the User Experience&lt;/em&gt; &lt;strong&gt;at all&lt;/strong&gt;?
The functionality is &lt;em&gt;just like&lt;/em&gt; a URL HREF would have been.&lt;/p&gt;

&lt;p&gt;Now I get that not everyone browses this way
(right clicking, with multiple windows at a time on a desktop, wanting to save files for offline reading).
But think of us 1%!
And the 1% is not just for strange users—how’s that Javascript work out with
your &lt;a href=&quot;http://www.section508.gov/&quot;&gt;accessiblility plan&lt;/a&gt; for the visually or physically impared?&lt;/p&gt;

&lt;p&gt;I get that JavaScript is a thing of wonder, bringing me an &lt;a href=&quot;http://www.bing.com/maps/&quot;&gt;interactive&lt;/a&gt; &lt;a href=&quot;https://maps.google.com&quot;&gt;atlas&lt;/a&gt;),
a usable equivalent to a whole desktop &lt;a href=&quot;https://www.google.com/docs/&quot;&gt;office&lt;/a&gt; &lt;a href=&quot;https://products.office.com/really-microsoft-i-cant-try-without-signing-up?&quot;&gt;suite&lt;/a&gt; and &lt;a href=&quot;https://gmail.com&quot;&gt;mail&lt;/a&gt; &lt;a href=&quot;https://roundcube.net&quot;&gt;reader&lt;/a&gt;,
&lt;a href=&quot;http://www.collmath-games.com&quot;&gt;hundreds&lt;/a&gt; of &lt;a href=&quot;http://diep.io&quot;&gt;shoot-em-up&lt;/a&gt; &lt;a href=&quot;http://agar.io&quot;&gt;video&lt;/a&gt; &lt;a href=&quot;http://slither.io&quot;&gt;games&lt;/a&gt;,
and a whole &lt;a href=&quot;http://www.visual6502.org/&quot;&gt;6502 simulator&lt;/a&gt; in my web browser.
Those are great.
But a better URL link, &lt;strong&gt;not!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What am I missing here?!?
&lt;em&gt;When did a simple URL become passé?&lt;/em&gt;&lt;/p&gt;

</description>
        <pubDate>Wed, 10 Aug 2016 13:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2016/0810-javascript-woes.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2016/0810-javascript-woes.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>more blog choices</title>
        <description>&lt;p&gt;I’ve been a relatively happy user of &lt;a href=&quot;https://ikiwiki.info/&quot;&gt;ikiwiki&lt;/a&gt; since 2011
for &lt;a href=&quot;/~johnh/BLOG/2011/0716-blog-choices.html&quot;&gt;reasons previously discussed&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, I recently switched over to &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;.
The &lt;strong&gt;main reason is &lt;a href=&quot;https://github.com/inukshuk/jekyll-scholar&quot;&gt;jekyll-scholar&lt;/a&gt;&lt;/strong&gt;,
a bibliography formatter for Jekyll.
As a researcher, writing papers is my job,
and formatting bibliographic entries is tedious and error prone.
Bibtex has existed for 30 years, and although I had custom-written
a bibtex-to-HTML converter 20 years ago, it still resulted in a lot of cut-and-pasting.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;second reason is &lt;a href=&quot;https://github.com/Shopify/liquid/wiki&quot;&gt;Liquid&lt;/a&gt;&lt;/strong&gt;.
Yes, it is limited, but it seems to hit a nice level for in-line templates
(with out dropping down to a real language like Perl or Ruby).
When it is combined with a little data structured in YAML,
it is a very powerful way to script things that would otherwise be tedious
repetition.&lt;/p&gt;

&lt;h2 id=&quot;adding-ikiwiki-style-navigation-to-jekyll&quot;&gt;Adding Ikiwiki-style Navigation to Jekyll&lt;/h2&gt;

&lt;p&gt;One feature of ikiwiki I liked was the automatic navigation at the top of the page.
By default, the top of the page follows the directory tree,
so if your website structure follows a directory structure,
the link “up” one or more levels are automatic.&lt;/p&gt;

&lt;p&gt;This feature is missing from Jekyll, but fairly easy to script in Liquid.
My effort was inspired by
Alex Ellison’s &lt;a href=&quot;http://thinkshout.com/blog/2014/12/creating-dynamic-menus-in-jekyll/&quot;&gt;post about building Jekyll menus that follow the directory tree&lt;/a&gt;,
something similar in spirit but opposite in detail to what I wanted.&lt;/p&gt;

&lt;p&gt;My version is:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  &amp;lt;!-- _includes/base.html --&amp;gt;
  &amp;lt;!-- http://ricostacruz.com/til/relative-paths-in-jekyll.html --&amp;gt;
  {% assign base = &apos;&apos; %}{% assign depth = page.path | prepend: &apos;/&apos; | split: &apos;/&apos; | size | minus: 1 %}{% if depth == 1 %}{% assign base = &apos;.&apos; %}{% elsif depth == 2 %}{% assign base = &apos;..&apos; %}{% elsif depth == 3 %}{% assign base = &apos;../..&apos; %}{% elsif depth == 4 %}{% assign base = &apos;../../..&apos; %}{% endif %}
  {!-- _includes/topbar.html --&amp;gt;
  &amp;lt;section class=&quot;topbar&quot;&amp;gt;
    {% if page.titleicon %}&amp;lt;img alt=&quot;({{ page.title }})&quot; src=&quot;{{ page.titleicon }}&quot; /&amp;gt;{% endif %}
    &amp;lt;h1&amp;gt;
      {% if page.url != &quot;/&quot; %}&amp;lt;a href=&quot;{{ base }}/index.html&quot;&amp;gt;{{ site.title }}&amp;lt;/a&amp;gt; / {% endif %}
      {% assign topdown = &apos;&apos; %}
      {% assign url_parts = page.url | split: &apos;/&apos; %}
      {% for part in url_parts %}
        {% if part != &apos;&apos; %}
          {% capture topdown %}{{ topdown }}/{{ part }}{% endcapture %}
          {% capture target_url %}{{ topdown }}/index.html{% endcapture %}
          {% for p in site.pages %}
            {% if p.url == target_url and p.url != page.url %}
              &amp;lt;a href=&quot;{{ base }}{{ p.url }}&quot;&amp;gt;{{ p.title }}&amp;lt;/a&amp;gt; / 
            {% endif %}
          {% endfor %}
        {% endif %}
      {% endfor %}
      {{ page.title }}
    &amp;lt;/h1&amp;gt;
  &amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This bit of code illustrates the strength and weakness of Jekyll:
it’s possible to get this feature scripted in Liquid alone (good!),
but each page iterates over all pages, for O(n^2) performance (bad!).
Too bad there is no associative array &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pages_by_url&lt;/code&gt;.&lt;/p&gt;

</description>
        <pubDate>Mon, 22 Feb 2016 23:00:00 -0800</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2016/0222-more-blog-choices.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2016/0222-more-blog-choices.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>blogging choices</title>
        <description>&lt;p&gt;Some thoughts about choices in setting up a new blog, and why I ended up with ikiwiki. (Other than to maximize the geek factor.)&lt;/p&gt;

&lt;h2 id=&quot;why-blog&quot;&gt;Why blog?&lt;/h2&gt;

&lt;p&gt;Why a blog? All the cool kids are doing Facebook and Twitter, or the new Google Plus, aren’t they?&lt;/p&gt;

&lt;p&gt;As was recently said to me, “as a professor-type, it’s all about you talking”. Sigh, so true.&lt;/p&gt;

&lt;p&gt;I don’t want to friend people, just to talk to the world.&lt;/p&gt;

&lt;h2 id=&quot;hosted-or-self-hosted&quot;&gt;Hosted or Self-hosted&lt;/h2&gt;

&lt;p&gt;First: hosted somewhere else, or by myself?&lt;/p&gt;

&lt;p&gt;A dozen sites will run your blog for a few clicks. Hundreds will host a new website with a pre-setup blogging package.&lt;/p&gt;

&lt;p&gt;Well, really I like owning my own data, at my own address (well, OK, at ISI’s address). (I don’t want to worry about someone else going out of business or changing their terms-of-service after I’m locked in.)&lt;/p&gt;

&lt;p&gt;And since I’m a computer guy for a living, self-hosting is not insurmountable.&lt;/p&gt;

&lt;p&gt;Self-hosting it is. (10x the difficulty.)&lt;/p&gt;

&lt;h2 id=&quot;database-or-not&quot;&gt;Database or Not&lt;/h2&gt;

&lt;p&gt;I already run &lt;a href=&quot;http://www.isi.edu/ant/blog/&quot;&gt;a WordPress blog&lt;/a&gt; for a research project. And WordPress is quite easy to set up, looks great (or is easy to make look great), and has all the blogging doodads one could want.&lt;/p&gt;

&lt;p&gt;But I really hate plugging all my data into a database. Just like I like owning my own data, I like being able to see it sit there on the disk in nice, simple files. SQL is not the end of the world, but it seems like overkill for a blog.&lt;/p&gt;

&lt;p&gt;When data is in files, one can edit it with, say, a text editor. Not that junky thing in your web browser—regardless of how AJAX’ed it is, it doesn’t have the 30 years of hacking into it that Emacs or vi has.&lt;/p&gt;

&lt;p&gt;So “no” to WordPress and SQL, hello to one of the dozens of non-database-backed blogs. (And 10x the difficulty.)&lt;/p&gt;

&lt;h2 id=&quot;ending-up-with-ikiwiki&quot;&gt;Ending up with Ikiwiki&lt;/h2&gt;

&lt;p&gt;I’ve been looking at &lt;a href=&quot;http://ikiwiki.info&quot;&gt;ikiwiki&lt;/a&gt; for a while.&lt;/p&gt;

&lt;p&gt;It’s a “wiki compiler”, so it takes a bunch of wiki pages (and blog entries) and converts them to static web pages [good].&lt;/p&gt;

&lt;p&gt;It uses a standard revision control system rather than rolling its own (like most other wikis) [good]. (That’s right, the many hours put into git and friends trumps doing it all again in Mediawiki. And a real distributed version control system means I can edit when off-line with my laptop.)&lt;/p&gt;

&lt;p&gt;And the ikiwiki code seems quite clean and modular and hackable. (Good news, because I chose to add several things to make it do what I want. More on that later.)&lt;/p&gt;

&lt;p&gt;And enough people use it that it seems reasonably well fleshed out and beaten upon. (Although I’m sure its userbase is measured in micro- or nano-WordPresses.)&lt;/p&gt;

&lt;h2 id=&quot;not-just-a-blog&quot;&gt;Not just a blog&lt;/h2&gt;

&lt;p&gt;The best part is that ikiwiki is not just a blog, it’s really a web Content Management System.&lt;/p&gt;

&lt;p&gt;So not only did I roll a blog, I re-rolled all my web pages. Which took some time (where some == a lot of), but it was something I’ve been wanting to do for quite a while.&lt;/p&gt;

&lt;p&gt;Another side effect, it means all my pages are now taggable, something I’ve wanted to play with for a long time. (More on that later.)&lt;/p&gt;
</description>
        <pubDate>Sat, 16 Jul 2011 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2011/0716-blog-choices.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2011/0716-blog-choices.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>this is my blog</title>
        <description>&lt;p&gt;This is my blog. There are many like it, but this one is &lt;a href=&quot;CONTACT&quot;&gt;mine&lt;/a&gt;. (Late to the show, I finally am starting a blog.)&lt;/p&gt;

&lt;p&gt;There are a few things about technology that folks be interested in, and after a few years of academic writing I find myself saying a few things over and over again. No, really—useful things—at least sometimes.&lt;/p&gt;
</description>
        <pubDate>Fri, 15 Jul 2011 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2011/0715-blog.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2011/0715-blog.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Page 123</title>
        <description>&lt;p&gt;Ok, pretty trendy (from &lt;a href=&quot;http://www.beatniksoftware.com/blog/index.php?p=16&quot;&gt;a blog&lt;/a&gt;), but, from &lt;em&gt;Loney Planet’s Yomsemite National Park&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;You’ll find few visitor services; for information and supplies, head directly to Tuolumne Meadows, where you’ll find an excellent visitor center, a good grocery store, and a post office.&lt;/p&gt;

&lt;p&gt;Here’s the context:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Grab the nearest book.&lt;/li&gt;
  &lt;li&gt;Open the book to page 123.&lt;/li&gt;
  &lt;li&gt;Find the fifth sentence.&lt;/li&gt;
  &lt;li&gt;Post the text of the sentence in your journal along with these instructions.&lt;/li&gt;
  &lt;li&gt;Don’t search around and look for the “coolest” book you can find. Do what’s actually next to you.&lt;/li&gt;
&lt;/ol&gt;

</description>
        <pubDate>Fri, 17 Jun 2005 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2005/0617-page-123.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2005/0617-page-123.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>! Warning</title>
        <description>
&lt;p&gt;&lt;strong&gt;! Warning.&lt;/strong&gt; Discard this web page immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;! Warning&lt;/strong&gt;: reading this web page may be dangerous, causing you to get eye strain, hit your head against the computer monitor, fall over in your chair, and it has been shown to produce boredom in cats (but then, what except string under a blanket, doesn’t).&lt;/p&gt;

&lt;p&gt;I got a new keyboard today. Microsoft’s Natural Keyboard Pro. (While they make horribly bad operating system software (IMHO) and yet still manage to legally monopolize the market, they make good keyboards.)&lt;/p&gt;

&lt;p&gt;As you would expect in today’s litigious society, with the horrors of carpal tunnel syndrome, it comes with a warning. In fact, prominantly attached to the cord that ties the keyboard to the computer is this prominant “! HEALTH WARNING” label:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/stag.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/stag.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;(As instructed, you will find the complete warning at the bottom, in this case, of this web page.)&lt;/p&gt;

&lt;p&gt;What was much &lt;strong&gt;more&lt;/strong&gt; concerning to me was the that the most dangerous thing is &lt;em&gt;not&lt;/em&gt; the keyboard, the device by which many a computer user’s hands have met their doom.&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It was… the &lt;strong&gt;bag&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Yes. The plastic bag in which the keyboard was placed was covered with no fewer than &lt;strong&gt;24&lt;/strong&gt; warning messages.&lt;/p&gt;

&lt;p&gt;23 using characters &lt;em&gt;not present&lt;/em&gt; on the keyboard itself.&lt;/p&gt;

&lt;p&gt;10 using characters &lt;em&gt;not present&lt;/em&gt; in ISO-8859-1 (Western European “Latin Alphabet No. 1”).&lt;/p&gt;

&lt;p&gt;Let it not be said that &lt;strong&gt;YOU HAVE BEEN WARNED!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/scol1.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/scol1.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No, really, we mean it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/scol2.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/scol2.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run now, while you have your life!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/scol3.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/scol3.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now that’s plastic wrap suited to hold the Necronomicon.&lt;/p&gt;

&lt;p&gt;And, for completeness, what not to do with your keyboard:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/skeyboard1.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/skeyboard1.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/2002/WARNING/skeyboard2.png&quot; alt=&quot;&quot; title=&quot;BLOG/2002/WARNING/skeyboard2.png&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 01 May 2002 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2002/0501-warning.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2002/0501-warning.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Options are not an Option</title>
        <description>&lt;p&gt;The tag line for the IMAX film &lt;a href=&quot;http://members.aol.com/neihousej/imax/imaxfilm.htm#antarctica&quot;&gt;&lt;em&gt;Antarctica&lt;/em&gt;&lt;/a&gt; is “Casual wear is not an option”. Digital domain &lt;a href=&quot;http://www.d2.com/nn/base.html&quot;&gt;proclaims&lt;/a&gt;: “Failure is not an option”. The 1996 presidental campaign offers me Tweedledum and Tweedledee: Clinton promises to sign the family leave act, completely reversing his stand of four years ago; Dole (in a frighteningly calculated gasp to save his campaign) reverses himself on supply-side economics and promises at 15% tax cut. What choices remain in life?&lt;/p&gt;

&lt;p&gt;From an Altavista &lt;a href=&quot;http://www.altavista.digital.com/cgi-bin/query?pg=q&amp;amp;what=web&amp;amp;fmt=.&amp;amp;q=%22is+not+an+option%22&quot;&gt;search&lt;/a&gt; “not an option”:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.etisales.com/artic11.htm&quot;&gt;&lt;strong&gt;Computerization is not an option:&lt;/strong&gt;&lt;/a&gt;: But then, you already knew that. Remember:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Although is possible to do all the paperwork and analysis for a telemarketing operation manually, this no longer makes sense in these hi-tech days. The thought of churning out a mountain of paper every month by filling out numerous forms by hand to record essential information, is surely long past.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Fri, 09 Jun 2000 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/2000/0609-options.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/2000/0609-options.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Rational Approximations to Pi</title>
        <description>
&lt;p&gt;A clear descent into geekdom, I started searching for rational approximations to pi. Everybody knows that 22/7ths is close to pi, but what’s the next best one?&lt;/p&gt;

&lt;p&gt;A brief mathemetical review: a rational number is one that can be expressed as an integer divided by another integer (i.e., a/b). The math question is, what a’s and b’s work well and how are they distributed. The computer science question is what’s an easy algorithm to find the next best one given an existing one.&lt;/p&gt;

&lt;p&gt;So I wrote a program to figure out the answers (exhaustively…I’m a computer “scientist”). To jump to the chase, here’s the:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;../BLOG/1999/RATIONAL_PI/top_approximations.txt&quot;&gt;the top 172 rational approximations to pi&lt;/a&gt; (the first 172 approximations where each is better than the last)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;top_denominators.txt&quot;&gt;the first 400 approximations to pi&lt;/a&gt; (the approximations for all denominators 1 to 400)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;../BLOG/1999/RATIONAL_PI/rational_approximations.pl.txt&quot;&gt;computer program to find the answers&lt;/a&gt; (in &lt;a href=&quot;http://www.perl.com/&quot;&gt;Perl&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because you were going to ask, yes the program generalizes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;../BLOG/1999/RATIONAL_PI/top_e_approximations.txt&quot;&gt;the top 40 rational approximations of e&lt;/a&gt; (e is a lot more rational than pi, apparently)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;../BLOG/1999/RATIONAL_PI/top_e_denominators.txt&quot;&gt;the first 400 approximations of e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can’t wait, here’s the summaries:&lt;/p&gt;

&lt;h2 id=&quot;top-15-rational-approximations&quot;&gt;Top 15 Rational Approximations&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#h a     b        r                  e                     new
3        1        3.0000000000000000 1.4159265358979312e-01 *
13       4        3.2500000000000000 1.0840734641020688e-01 *
16       5        3.2000000000000002 5.8407346410207062e-02 *
19       6        3.1666666666666665 2.5074013076873403e-02 *
22       7        3.1428571428571428 1.2644892673496777e-03 *
179      57       3.1403508771929824 1.2417763968106676e-03 *
201      64       3.1406250000000000 9.6765358979311600e-04 *
223      71       3.1408450704225350 7.4758316725809237e-04 *
245      78       3.1410256410256410 5.6701256415214729e-04 *
267      85       3.1411764705882352 4.1618300155787935e-04 *
289      92       3.1413043478260869 2.8830576370619809e-04 *
311      99       3.1414141414141414 1.7851217565167943e-04 *
333      106      3.1415094339622640 8.3219627529107498e-05 *
355      113      3.1415929203539825 2.6676418940496660e-07 *
52163    16604    3.1415923873765359 2.6621325721620792e-07 *
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;IMHO, only 22/7 and 355/113 are even close to “useful”.&lt;/p&gt;

&lt;h2 id=&quot;first-20-rational-approximations&quot;&gt;First 20 Rational Approximations&lt;/h2&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#h a     b        r                  e                     new
3        1        3.0000000000000000 1.4159265358979312e-01 *
6        2        3.0000000000000000 1.4159265358979312e-01 .
9        3        3.0000000000000000 1.4159265358979312e-01 .
13       4        3.2500000000000000 1.0840734641020688e-01 *
16       5        3.2000000000000002 5.8407346410207062e-02 *
19       6        3.1666666666666665 2.5074013076873403e-02 *
22       7        3.1428571428571428 1.2644892673496777e-03 *
25       8        3.1250000000000000 1.6592653589793116e-02 .
28       9        3.1111111111111112 3.0481542478681956e-02 .
31       10       3.1000000000000001 4.1592653589793027e-02 .
35       11       3.1818181818181817 4.0225528228388541e-02 .
38       12       3.1666666666666665 2.5074013076873403e-02 .
41       13       3.1538461538461537 1.2253500256360628e-02 .
44       14       3.1428571428571428 1.2644892673496777e-03 .
47       15       3.1333333333333333 8.2593202564598123e-03 .
50       16       3.1250000000000000 1.6592653589793116e-02 .
53       17       3.1176470588235294 2.3945594766263678e-02 .
57       18       3.1666666666666665 2.5074013076873403e-02 .
60       19       3.1578947368421053 1.6302083252312194e-02 .
63       20       3.1499999999999999 8.4073464102067952e-03 .
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This table shows the basic structure: you’ll find a cluster of better approximations, then a long stretch of not very good ones.&lt;/p&gt;

&lt;h2 id=&quot;the-first-400-denominators-graphically&quot;&gt;The First 400 Denominators, Graphically&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;../BLOG/1999/RATIONAL_PI/first_400.png&quot; alt=&quot;[The First 400 Denominators, Graphically]&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-disclaimer&quot;&gt;The Disclaimer&lt;/h2&gt;

&lt;p&gt;I’m not a mathematician (in fact, I had to have ispell help me spell it, but that’s another story). What’s here is probably obvious to someone with real training. (In fact, see below for a better way to figure rational approxmations, for some definition of better.) But perhaps you’ll find it a little bit amusing.&lt;/p&gt;

&lt;p&gt;If you want to know more about pi (&lt;em&gt;much&lt;/em&gt; more), go to Yahoo and search for pi, or (much better still), talk to your local math teacher.&lt;/p&gt;

&lt;h2 id=&quot;whats-going-on&quot;&gt;What’s going on&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;These are my comments about the program and the algorithm. For full details, see the program source code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;usage: rational_approximation [-v] [-l denominator-limit] [-t target-value]&lt;/p&gt;

&lt;p&gt;Outputs a list of rational approximations to pi. By default, data is shown only when there is a new best approximation. The verbose flag (-v) shows data for each new denominator. The debug flag (-d) shows additional information. “-l X” sets the last denominator to try to X (by default, infinity), and “-t Y” sets the value to search for (by default pi).&lt;/p&gt;

&lt;p&gt;The algorithm is to start with a rational approximation (initially the closest integer, 3/1 for pi) and refine that approximation by testing each successive denominator.&lt;/p&gt;

&lt;p&gt;We make use of the fact that is we know a rational number a/b which we want to use to approximate R, then we know that the closest approximation with the next higher denominator is c/(b+1) which is one of (c’-1)/(b+1), c’/(b+1), (c’+1)/(b+1) where c’ = a + int(a/b).&lt;/p&gt;

&lt;p&gt;Output format is a table of the format&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;    #h a     b        r                  e                     new
    3        1        3.0000000000000000 1.4159265358979312e-01 *
    13       4        3.2500000000000000 1.0840734641020688e-01 *
    16       5        3.2000000000000002 5.8407346410207062e-02 *
    19       6        3.1666666666666665 2.5074013076873403e-02 *
    22       7        3.1428571428571428 1.2644892673496777e-03 *
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;where each column is a different value. The first two (a, b) are the numerator and denominator of the rational approximation. The third (r) is the decimal expansion of a/b. The fourth (e) is the error, i.e. abs(pi - a/b). The fifth (new) is a flag indicating when the approximation is a new best.&lt;/p&gt;

&lt;p&gt;The algorithm is not written using numerically sound techniques, so its accuracy is limited (although this has not yet been a limit to the program’s amusement value.) The problem is that it depends on the accuracy of subtracting two floating point numbers. Since floating point numbers are of finite precision (unlike the mathematical concept of real numbers that they approximate), this means that you cannot trust this program to approximate pi closer than the number of digits (minus one) present in your computer’s implementation of floating point. For IEEE floating point present in all modern computers gives you at least 14 decimal digits, although I should look up (or get the energy to compute) exactly how accurate it is. Eventually the program should be re-written using a bignum package to get around this problem.&lt;/p&gt;

&lt;p&gt;Another comment about the algorithm: currently we iterate through all denominators. This seems easy and works well since computers are fast. It might be better instead to use the error value reported to jump more quickly to the next plausible candidate. (I.e., 22/7ths is accurate to ~1.3e-3, and numbers expressed in units of a/7 have a resolution of ~1.4e-1. From these two we should be able to figure out that we can’t possibly do better for a while. I haven’t worked out the exact relationship yet.)&lt;/p&gt;

&lt;h2 id=&quot;a-better-way&quot;&gt;A Better Way&lt;/h2&gt;

&lt;p&gt;It turns out there’s a much more clever way to compute rational approximations if your definition of better is converges fasters. In fact, it finds 104348/33215 in four steps. I’ll let the person who explained it to me &lt;a href=&quot;../BLOG/1999/RATIONAL_PI/fast_convergence.txt&quot;&gt;explain it to you&lt;/a&gt; (thanks, Brian). (This method takes advantage of the error as I suggested above but didn’t work through.)&lt;/p&gt;

&lt;h2 id=&quot;other-stuff&quot;&gt;Other stuff&lt;/h2&gt;

&lt;p&gt;In the process of writing up this page, I came across a couple of other interesting web pages relating to numbers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://zap.to/goldenratio&quot;&gt;phi, the golden ratio&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://public.logica.com/~stepneys/cyc/b/big.htm&quot;&gt;really big numbers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://singularity.posthuman.com/singularity.html#big&quot;&gt;Graham’s number&lt;/a&gt;, in the midst of an interesting (in the science fiction sense) speculation on the doubling of compute power (IMHO leading to an inaccurate conclusion for at least two reasons: (1) There &lt;em&gt;are&lt;/em&gt; physical limits to Moore’s law. (2) It’s incorrect to generalize to “Computing power doubles every two subjective years of work” since the current doubling already includes the benefits of better technology. Something to take away: one should be &lt;em&gt;very&lt;/em&gt; careful when projecting thing based on continued exponential growth.)&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Wed, 28 Jul 1999 11:00:00 -0700</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/1999/0728-rational-pi.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/1999/0728-rational-pi.html</guid>
        
        <category>blog,</category>
        
        <category>amusements,</category>
        
        <category>math</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>Some Questions</title>
        <description>&lt;p&gt;Two random questions that have come up, mostly in lunchtime conversation. They’re outside my field, so don’t hold bad terminology or errors of fact against me.&lt;/p&gt;

&lt;p&gt;So if you have answers to (or additional information about) these questions, let me know.&lt;/p&gt;

&lt;h2 id=&quot;rate-of-flow-of-cash-at-a-small-business&quot;&gt;Rate of Flow of Cash at a Small Business&lt;/h2&gt;

&lt;p&gt;A business (say, a restaurant) has cash going in and out. Some kinds of cash (bills and coins) primarily flow out. For example, very few people bring pennies into a restaurant, while people paying with bills often get a few pennies in change. The converse is also true: businesses today must get lots of $20’s since that’s the only bill that ATMs output.&lt;/p&gt;

&lt;p&gt;For each unit of currency (pennies, nickels, dimes, quarters, dollars, $5s, $10s, $20s, $50s, $100s), what is the average net change per day for a restaurant (say, McDonald’s)? for an upscale restaurant (say, McCormick and Schmidts)? for a grocery store? What were these values like in 1980 before ATMs were widely used?&lt;/p&gt;

&lt;h2 id=&quot;cost-of-an-atm&quot;&gt;Cost of an ATM&lt;/h2&gt;

&lt;p&gt;What is the incremental cost of maintaining a second ATM (automated teller machine) at a site that already has one?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The example:&lt;/em&gt; Wells Fargo Bank had two ATMs on the first floor of ISI (back before they removed their branch). A few months after the branch moved out they removed one of the ATMs. Why?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Defining the problem:&lt;/em&gt; There are a set of fixed and incremental costs to maintaining an ATM. The fixed costs are things like the cost of buying and installing the ATM. Incremental costs are the costs of visiting the ATM to pick up deposits and add cash and deposit envelops, servicing it when it breaks, and so on.&lt;/p&gt;

&lt;p&gt;Once the fixed costs of installing an ATM were paid (as they had been), I would have thought that the fixed costs were small. Furthermore, the costs of removing the ATM would be exceeded by the small benefit of having two ATMs.&lt;/p&gt;

&lt;p&gt;I don’t know the costs involved, but I’d guess it’s about $10k for a machine, about $10k to have it installed and about $5k to have it removed. The incremental costs of maintaining a second machine must be small (the crew who reloads it already must pay the cost of getting there and handling a second machine can’t take that long). The cost of keeping a second machine stocked with envelopes must be fairly small. There’s also the cost of keeping it filled with cash.&lt;/p&gt;

&lt;p&gt;So what of the incremental costs makes it worth the cost of taking out an existing second machine? My only guess is that the cost of keeping the machine stocked with cash is substantial, or that the bank needed the ATM somewhere else and moving this one was cheaper than buying a new one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update April 2003:&lt;/em&gt; a person who works for a bank pointed out that there is also an incremental cost of communications. Assuming “conservative” networking (one leased 56k frame relay line per ATM), the incremental cost of this is (in 2003) about $100/month. (Obviously this could be reduced by using a simple phone line and modem, or by having both ATMs share a phone line, but those choices are less conservative.)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update Jan 2004:&lt;/em&gt; Wells Fargo finally lost their lease on the ATM slot and so now both ATMs are gone :-)&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Feb 1999 11:00:00 -0800</pubDate>
        <link>https://ant.isi.edu/~johnh//BLOG/1999/0209-questions.html</link>
        <guid isPermaLink="true">https://ant.isi.edu/~johnh//BLOG/1999/0209-questions.html</guid>
        
        <category>blog,</category>
        
        <category>amusements</category>
        
        
        <category>blog</category>
        
      </item>
    
  </channel>
</rss>
