<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jim Fowler</title>
<link>http://kisonecat.com/</link>

<atom:link href="http://www.math.osu.edu/~fowler/blog/feed.xml" rel="self" type="application/rss+xml" />
<description>
Jim Fowler's blog.
</description>
<language>en-us</language>
<copyright>Copyright 2011 Jim Fowler</copyright>
<managingEditor>fowler@math.osu.edu (Jim Fowler)</managingEditor>
<lastBuildDate>Thu, 22 Dec 2011 11:34:31 -0500</lastBuildDate>
<ttl>60</ttl>





<item>
<title>Reflecting Triangles, live
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/reflecting-triangles-live/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/reflecting-triangles-live/</guid>
<description><![CDATA[<p>A while back I made some movies which began with a triangle in the
plane, reflected that triangle through its three sides, reflected
those triangles through their sides, and so forth.  The interesting
result is that for only four shapes of triangles, the resulting set
of triangle vertices is discrete.</p>
<p>
Using <a href="http://raphaeljs.com/">Raphael</a> and a plane geometry
package that I wrote, I quickly redid this visualization in
Javascript; you can now move the vertices around to see the effect on
the reflected triangles.</p>
      
<script src="/~fowler/blog/posts/reflecting-triangles-live/raphael-min.js" type="text/javascript" charset="utf-8"></script>
<script src="/~fowler/blog/posts/reflecting-triangles-live/geometry.js" type="text/javascript" charset="utf-8"></script>  
<div class="canvas" id="sample"/>
<script language="javascript">

var element = document.getElementById("sample");
var width = 400;
var height = width * 0.7;
var paper = Raphael(element, width, height);
console.log(width);
pA = paper.geometry.point( 0.5*width, 0.8*height );
pB = paper.geometry.point( 0.25*width, 0.5*height );
pC = paper.geometry.point( 0.5*width, 0.25*height );
/*
paper.geometry.label( pA, "A" );
paper.geometry.label( pB, "B" );
paper.geometry.label( pC, "C" );
*/

sC = paper.geometry.segment( pA,pB );
sA = paper.geometry.segment( pB,pC );
sB = paper.geometry.segment( pC,pA );
sA.attr({"stroke-width":3});
sB.attr({"stroke-width":3});
sC.attr({"stroke-width":3});

points = new Object();

points["A"] = pA;
points["B"] = pB;
points["C"] = pC;

function simplify(string) {
    var first = string.slice(0,1);
    var rest = string.slice(1, string.length);
    if (rest.indexOf(first) < 0)
	return first;

    return first + rest.slice( rest.indexOf(first), rest.length );
}

function string_to_point( string ) {
    if (points[string] != null) {
	return points[string];
    }

    var head = string.slice(0, string.length - 1);
    var tail = string.charAt(string.length - 1);
    var point = string_to_point( head );
    var line = {A:sA, B:sB, C:sC}[tail];

    var reflected = paper.geometry.point_reflected( line, point );
    reflected.attr( {r:0} );
    //paper.geometry.label( reflected, string );
    points[string] = reflected;

    var first = string.charAt(0);
    var rest = string.slice(1, string.length);
    var other = {A:"B", B:"C", C:"A"}[first];
    var another = {A:"C", B:"A", C:"B"}[first];
    
    var other_code = simplify(other + rest);
    var another_code = simplify(another + rest);
    
    var s1 = paper.geometry.segment( reflected, string_to_point( other_code ) );
    var s2 = paper.geometry.segment( reflected, string_to_point( another_code ) );

    var opacity = 1.0 / string.length;
    var linewidth = 4.0 / string.length;
    s1.attr( {opacity: opacity, "stroke-width": linewidth} );
    s2.attr( {opacity: opacity, "stroke-width": linewidth} );

    return reflected;
}

function list_codes( depth )
{
    if (depth == 1)
	return ["AA","BB","CC"];

    var result = new Array();
    var codes = list_codes( depth - 1 );
    for( var i in codes ) {
	code = codes[i];
	var last = code.slice(code.length-1,code.length);
	var other = {A:"B", B:"C", C:"A"}[last];
	var another = {A:"C", B:"A", C:"B"}[last];
	codes = codes.concat( [code + other, code + another] );
    }

    return codes;
}

var codes = list_codes( 5 );
for( var i in codes ) {
    var code = codes[i];
    string_to_point(code);
}

</script>
]]></description>
<pubDate>Wed, 23 Feb 2011 08:05:21 +0000</pubDate>
</item>



<item>
<title>Culturomics
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/culturomics/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/culturomics/</guid>
<description><![CDATA[<p>I have really fallen in love with <a href="http://ngrams.googlelabs.com/">Google Books Ngram Viewer</a>, so I thought I&#8217;d do a little &#8220;<a href="http://www.sciencemag.org/content/early/2010/12/15/science.1199644">culturomics</a>&#8221; myself.  Here&#8217;s an image I made using <a href="http://ngrams.googlelabs.com/datasets">Google&#8217;s data</a>:</p>

<div class="displayedMedia"><a href='/~fowler/blog/posts/culturomics/raster-original.png' title='Numbers in Print'><img src='/~fowler/blog/posts/culturomics/raster-small.png' alt='Numbers in Print' /></a></div>

<p>The brightness of the pixel at position $(x,y)$ is related to
how frequently &#8220;$x$&#8221; appears in books published in
the year $y$.  Specifically, if $p$ is the number of times &#8220;$x$&#8221;
appears in print during year $y$, divided by the number of times any
number less than 2100 appears in print during that year, then $(1 -
p)^{1500}$ is the brightness of the pixel at $(x,y)$.</p>

<p>The dark, diagonal edge along the right hand side appears because
in year $y$ there are many published appearances of numbers near $y$.</p>

<div class="displayedMedia"><img src='/~fowler/blog/posts/culturomics/dark-diagonal-edge.png' alt='Dark diagonal edge' /></div>

<p><b>World events have left their mark on the numbers appearing in books!</b>  For example, 1914 is still being talked about long after 1914, as evidenced by the darker line above 1914.</p>

<p>If we look at numbers just above 1000 and turn up the contrast a bit,</p>

<div class="displayedMedia"><img src='/~fowler/blog/posts/culturomics/around-one-thousand.png' alt='Around one thousand' /></div>

<p>we see an echo of the dark diagonal, from people writing (or more likely, the OCR software reading) zero instead of nine in the year.  There&#8217;s a dark column for the Norman conquest in 1066; a number like $2^{10} = 1024$ was not so important until the 20th century.</p>

<p>If we look at numbers just above 1300,</p>

<div class="displayedMedia"><img src='/~fowler/blog/posts/culturomics/above-1300.png' alt='Above 1300' /></div>

<p>we can see an diagonal line from 1800s being read as 1300s, and a dark vertical line above 1453 (the &#8220;end&#8221; of the middle ages).  In the 18th century,</p>

<div class="displayedMedia"><img src='/~fowler/blog/posts/culturomics/above-1700.png' alt='Above 1700' /></div>

<p>1776 is quite visible.  <b>And finally, a puzzle:</b></p>

<div class="displayedMedia"><img src='/~fowler/blog/posts/culturomics/why-2044.png' alt='Why 2044' /></div>

<p>Why was &#8220;2044&#8221; so significant until the 1920s?</p>

<div class="displayedMedia"><a href="http://ngrams.googlelabs.com/graph?content=2043,2044,2045&year_start=1800&year_end=2000&corpus=0&smoothing=0"><img width="500px" src='/~fowler/blog/posts/culturomics/2044-graph.png' alt='2043,2044,2045 in Google ngrams viewer' /></a></div>

<p>I&#8217;d love to know the answer to this question.  The only thing I can guess that might relate the year 1919 to the year 2044 is solar eclipses.</p>
]]></description>
<pubDate>Sat, 18 Dec 2010 09:02:45 +0000</pubDate>
</item>



<item>
<title>Many more Lights Out
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/many-more-lights-out/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/many-more-lights-out/</guid>
<description><![CDATA[<p>A very long while ago I posted some <a href="/~fowler/blog/posts/solutions-to-lights-out/">solutions to Lights Out</a>; back then, I solved the $n$-by-$n$ board by row-reducing an $n^2$-by-$n^2$ matrix.</p>

<p>Since then, both <a href="https://pantherfile.uwm.edu/okun/www/">Boris Okun</a> and <a href="http://www.facebook.com/bwerness">Brent Werness</a> pointed out to me that I should&#8217;ve solved Lights Out by using a <em>scanning algorithm</em>: propagating the button presses down one row at a time, and exponentiating the propagation matrix to make sure that I don&#8217;t get stuck at the last row.</p>

<p>This is much faster.</p>

<p>With this method, here is a (scaled down, auto-leveled) 2000-by-2000 solution:</p>
<div class="displayedMedia"><a href='/~fowler/blog/posts/many-more-lights-out/lights-2000.png' title='Solution to 2000x2000 Lights Out'><img src='/~fowler/blog/posts/many-more-lights-out/small-2000.png' alt='Solution to 2000x2000 Lights Out' /></a></div>

<p>And here is a (very much scaled-down, auto-leveled) 5000-by-5000 solution:</p>
<div class="displayedMedia"><a href='/~fowler/blog/posts/many-more-lights-out/lights-5000.png' title='Solution to 5000x5000 Lights Out'><img src='/~fowler/blog/posts/many-more-lights-out/small-5000.png' alt='Solution to 5000x5000 Lights Out' /></a></div>

]]></description>
<pubDate>Sat, 17 Jul 2010 00:05:32 +0000</pubDate>
</item>



<item>
<title>Reflecting Triangles
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/reflecting-triangles/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/reflecting-triangles/</guid>
<description><![CDATA[<p>My
  advisor, <a href="http://http://www.math.uchicago.edu/~shmuel/">Shmuel Weinberger</a>,
  was teaching <a href="http://math.uchicago.edu/~shmuel/113.pdf">Math 113</a>, and asked for some pictures of the following
  procedure:</p>
<ul>
<li>Start with a triangle in the plane.</li>
<li>Reflect that triangle across its three sides.</li>
<li>And repeat, reflecting the resulting triangles through their
  sides, and so forth.</li>
</ul>
<p>
I made a couple movies of this, illustrating this procedure as you
move through the space of triangles.  Observe how, for only four shapes
of triangles, the resulting set of triangle vertices is discrete.
</p>

<h3>Movie with only a few triangles</h3>
<div class="displayedMedia" id="movie-809665782-7" style="margin-left: auto;   margin-right: auto; width: 400px; height: 424px;"></div>

<script>flowplayer("movie-809665782-7", "/~fowler/js/flowplayer-3.1.4.swf",
{ playlist : [
  { url: '/~fowler/blog/posts/reflecting-triangles/sparse.jpg' },
  { url: '/~fowler/blog/posts/reflecting-triangles/sparse.m4v',
    autoPlay: false,
    autoBuffering: false }
  ] } );</script>

<p><a href="/~fowler/blog/posts/reflecting-triangles/sparse.mov">Download the
 original</a> as a QuickTime movie.</p>

<h3>Movie with more triangles</h3>
<div class="displayedMedia" id="movie-809665782-8" style="margin-left: auto;   margin-right: auto; width: 400px; height: 424px;"></div>

<script>flowplayer("movie-809665782-8", "/~fowler/js/flowplayer-3.1.4.swf",
{ playlist : [
  { url: '/~fowler/blog/posts/reflecting-triangles/dense.jpg' },
  { url: '/~fowler/blog/posts/reflecting-triangles/dense.m4v',
    autoPlay: false,
    autoBuffering: false }
  ] } );</script>

<p><a href="/~fowler/blog/posts/reflecting-triangles/dense.mov">Download the
 original</a> as a QuickTime movie.</p>
]]></description>
<pubDate>Tue, 16 Mar 2010 05:23:23 +0000</pubDate>
</item>



<item>
<title>Projector on Blackboard

</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/projector-on-blackboard/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/projector-on-blackboard/</guid>
<description><![CDATA[<p>I recently gave a beamer talk, which gave me the chance to point the beamer at my blackboard.</p>

<div class="displayedMedia" id="movie--1273976808-1" style="margin-left: auto;   margin-right: auto; width: 320px; height: 264px;"></div>

<script>flowplayer("movie--1273976808-1", "/~fowler/js/flowplayer-3.1.4.swf",
{ playlist : [
  { url: '/~fowler/blog/posts/projector-on-blackboard/projector.jpg' },
  { url: '/~fowler/blog/posts/projector-on-blackboard/projector.m4v',
    autoPlay: false,
    autoBuffering: false }
  ] } );</script>

]]></description>
<pubDate>Tue, 19 Jan 2010 07:30:13 +0000</pubDate>
</item>



<item>
<title>My mathematical genealogy
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/my-mathematical-genealogy/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/my-mathematical-genealogy/</guid>
<description><![CDATA[According to the <a href="http://genealogy.math.ndsu.nodak.edu/">Mathematics Genealogy Project</a>, my mathematical genealogy is:
<ul>
<li><a href="http://en.wikipedia.org/wiki/Luca_Pacioli">Luca Pacioli</a></li>
<li><a href="http://en.wikipedia.org/wiki/Domenico_Maria_Novara_da_Ferrara">Domenico Maria Novara da Ferrara</a></li>
<li><a href="http://en.wikipedia.org/wiki/Nicholas_Copernicus">Nicolaus Copernicus</a></li>
<li><a href="http://en.wikipedia.org/wiki/Georg_Joachim_Rheticus">Georg Joachim von Leuchen Rheticus</a></li>
<li><a href="http://en.wikipedia.org/wiki/Caspar_Peucer">Caspar Peucer</a></li>
<li><a href="http://de.wikipedia.org/wiki/Salomon_Alberti">Salomon Alberti</a></li>
<li><a href="http://de.wikipedia.org/wiki/Ernestus_Hettenbach">Ernestus Hettenbach</a></li>
<li><a href="http://de.wikipedia.org/wiki/Ambrosius_Rhode">Ambrosius Rhodius</a></li>
<li><a href="http://de.wikipedia.org/wiki/Christoph_Notnagel">Christoph Notnagel</a></li>
<li><a href="http://en.wikipedia.org/wiki/Johannes_Andreas_Quenstedt">Johann Andreas Quenstedt</a></li>
<li>
<a href="http://de.wikipedia.org/wiki/Michael_Walther_der_J&uuml;ngere">Michael Walther, Jr.</a></li>
<li><a href="http://sv.wikipedia.org/wiki/Johan_Pasch">Johann Pasch</a></li>
<li><a href="http://en.wikipedia.org/wiki/Johann_Andreas_Planer">Johann Andreas Planer</a> who doesn&#8217;t have a Wikipedia page</li>
<li><a href="http://en.wikipedia.org/wiki/Christian_August_Hausen">Christian August Hausen</a></li>
<li><a href="http://en.wikipedia.org/wiki/Abraham_Gotthelf_K&auml;stner">Abraham Gotthelf K&auml;stner</a></li>
<li><a href="http://en.wikipedia.org/wiki/Johann_Friedrich_Pfaff">Johann Friedrich Pfaff</a></li>
<li><a href="http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss">Carl Friedrich Gauss</a></li>
<li><a href="http://en.wikipedia.org/wiki/Christian_Ludwig_Gerling">Christian Ludwig Gerling</a></li>
<li><a href="http://en.wikipedia.org/wiki/Pl&uuml;cker">Julius Pl&uuml;cker</a></li>
<li><a href="http://en.wikipedia.org/wiki/Felix_Klein">C. Felix (Christian) Klein</a></li>
<li><a href="http://en.wikipedia.org/wiki/William_Edward_Story">William Edward Story</a></li>
<li><a href="http://en.wikipedia.org/wiki/Solomon_Lefschetz">Solomon Lefschetz</a></li>
<li><a href="http://en.wikipedia.org/wiki/Norman_Steenrod">Norman Earl Steenrod</a></li>
<li><a href="http://en.wikipedia.org/wiki/George_W._Whitehead">George William Whitehead, Jr.</a></li>
<li><a href="http://en.wikipedia.org/wiki/John_Coleman_Moore">John Coleman Moore</a></li>
<li><a href="http://en.wikipedia.org/wiki/William_Browder_(mathematician)">William Browder</a></li>
<li><a href="http://en.wikipedia.org/wiki/Sylvain_Cappell">Sylvain Edward Cappell</a></li>
<li><a href="http://en.wikipedia.org/wiki/Shmuel_Weinberger">Shmuel Aaron Weinberger</a></li>
</ul>
<p>There are some branches to choose among, but I think the branch starting with Pacioli is the most appropriate.</p>
]]></description>
<pubDate>Thu, 11 Jun 2009 20:06:38 +0000</pubDate>
</item>



<item>
<title>M&#246;bius strip, and pairs of points on a circle.
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/mbius-strip-and-pairs-of-points-on-a-circle/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/mbius-strip-and-pairs-of-points-on-a-circle/</guid>
<description><![CDATA[<p>Here&#8217;s a little movie I made:</p>

<div class="displayedMedia" id="movie-1825003476-3" style="margin-left: auto;   margin-right: auto; width: 320px; height: 264px;"></div>

<script>flowplayer("movie-1825003476-3", "/~fowler/js/flowplayer-3.1.4.swf",
{ playlist : [
  { url: '/~fowler/blog/posts/mbius-strip-and-pairs-of-points-on-a-circle/mobius.jpg' },
  { url: '/~fowler/blog/posts/mbius-strip-and-pairs-of-points-on-a-circle/mobius.m4v',
    autoPlay: false,
    autoBuffering: false }
  ] } );</script>


<p>I&#8217;m grading for the first year topology course at Chicago, and one of their homework problems asked them to show that pairs of (indistinguishable!) points on a circle correspond to points on the <a href="http://en.wikipedia.org/wiki/Möbius_strip">M&ouml;bius strip</a>; in other words, the quotient of the torus $T^2 = S^1 \times S^1$ by the $\Z/2$-action which exchanges the two $S^1$ factors is a M&ouml;bius strip.</p>

<p>In the above animation, you can see the identification in action: the two red points on the green circle correspond to the red dot on the M&ouml;bius strip.</p>

]]></description>
<pubDate>Wed, 28 Jan 2009 18:33:51 +0000</pubDate>
</item>



<item>
<title>I can drive!
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/i-can-drive/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/i-can-drive/</guid>
<description><![CDATA[<p>I took my road test this morning&mdash;and I passed!</p>

<p>After all these years, I am a licensed driver.  Now, where should I drive to?</p>]]></description>
<pubDate>Fri, 26 Sep 2008 21:46:39 +0000</pubDate>
</item>



<item>
<title>Global Warming according to Google
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/global-warming-according-to-google/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/global-warming-according-to-google/</guid>
<description><![CDATA[<p><a href="http://www.google.com/trends">Google Trends</a> plots the search volume (or some other measure?  search percentage?) for a given phrase over time.  It&#8217;s ridiculously fun!</p>

<p>As an example, let&#8217;s look at the number of times people search for the words <b>hot</b> and <b>cold</b>.  I downloaded the <a href='/~fowler/blog/posts/global-warming-according-to-google/google-global-warming.csv' title='Google Global Warming Data'>CSV file</a> offered by Google trends to make the following graph:</p>

<div class="displayedMedia"><img src="/~fowler/blog/posts/global-warming-according-to-google/google-global-warming.png" alt=""/></div>


<p>The thick red and blue lines are the linear regressions on the number of searches for <b>hot</b> and <b>cold</b>, respectively.  Behold!&mdash;people are searching <i>more often</i> for <b>hot</b> lately, and <i>less often</i> as of late for <b>cold</b>!  The search volume does seem to be related to the temperature: you might notice that the search volume for <b>cold</b> dips under the regression line during the summer, but exceeds it during the winter.</p>

<p>And so, <b>global warming is being revealed in our search habits.</b>  Maybe I should&#8217;ve titled this post &#8220;Google warming.&#8221;</p>]]></description>
<pubDate>Fri, 22 Aug 2008 00:04:32 +0000</pubDate>
</item>



<item>
<title>Ancient xerox technology.
</title>
<link>http://www.math.osu.edu/~fowler/blog/posts/ancient-xerox/</link>
<guid>http://www.math.osu.edu/~fowler/blog/posts/ancient-xerox/</guid>
<description><![CDATA[<p>The Romans (among others!) wrote in <a href="http://en.wikipedia.org/wiki/Wax_tablet">wax with a stylus</a>; the wax was embedded in boards, which were bound together in pairs.  <b>If a Roman were to place clay between these boards, could they make a copy of their wax tablet in the clay?</b></p>

<p>It strikes me as remarkable that coins were minted so long before books were printed&mdash;though I guess the motivation behind minting coins and printing books are rather different.</p>]]></description>
<pubDate>Mon, 28 Jul 2008 23:02:57 +0000</pubDate>
</item>



</channel>
</rss>
