Browse Source

Protocol-relative URLs where possible.

master
Ben Kurtovic 10 years ago
parent
commit
8956ed196b
8 changed files with 52 additions and 52 deletions
  1. +2
    -2
      404.html
  2. +3
    -3
      _layouts/base.html
  3. +10
    -10
      _layouts/home.html
  4. +2
    -2
      _layouts/post.html
  5. +3
    -3
      _posts/2011-08-23-earwigbot-progress-page-editing.md
  6. +4
    -4
      _posts/2012-01-29-earwigbot-and-toolserver-updates.md
  7. +15
    -15
      _posts/2014-06-01-obfuscating-hello-world.md
  8. +13
    -13
      index.html

+ 2
- 2
404.html View File

@@ -7,7 +7,7 @@
</head> </head>
<body> <body>
<div id="forkme-box"> <div id="forkme-box">
<a href="http://github.com/earwig">
<a href="//github.com/earwig">
<img id="forkme" src="/images/forkme.png" title="Fork me on GitHub" alt="Fork me on GitHub" /> <img id="forkme" src="/images/forkme.png" title="Fork me on GitHub" alt="Fork me on GitHub" />
</a> </a>
</div> </div>
@@ -24,7 +24,7 @@
</div> </div>
</div> </div>
<div id="footer"> <div id="footer">
<p>Copyright &copy; 2011&ndash;2014 Ben Kurtovic &bull; <a href="http://github.com/earwig/earwig.github.com">View Source</a> &bull; <a href="http://validator.w3.org/check?uri=referer">Valid HTML5</a></p>
<p>Copyright &copy; 2011&ndash;2014 Ben Kurtovic &bull; <a href="//github.com/earwig/earwig.github.com">View Source</a> &bull; <a href="http://validator.w3.org/check?uri=referer">Valid HTML5</a></p>
</div> </div>
</div> </div>
</div> </div>


+ 3
- 3
_layouts/base.html View File

@@ -6,11 +6,11 @@
<link rel="stylesheet" href="/css/main.css" type="text/css" /> <link rel="stylesheet" href="/css/main.css" type="text/css" />
<link rel="stylesheet" href="/css/syntax.css" type="text/css" /> <!-- shamelessly stolen from https://github.com/mojombo/tpw/blob/master/css/syntax.css --> <link rel="stylesheet" href="/css/syntax.css" type="text/css" /> <!-- shamelessly stolen from https://github.com/mojombo/tpw/blob/master/css/syntax.css -->
<script src="/js/date_format.js" type="text/javascript"></script> <script src="/js/date_format.js" type="text/javascript"></script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head> </head>
<body> <body>
<div id="forkme-box"> <div id="forkme-box">
<a href="http://github.com/earwig">
<a href="//github.com/earwig">
<img id="forkme" src="/images/forkme.png" title="Fork me on GitHub" alt="Fork me on GitHub" /> <img id="forkme" src="/images/forkme.png" title="Fork me on GitHub" alt="Fork me on GitHub" />
</a> </a>
</div> </div>
@@ -18,7 +18,7 @@
<div id="container"> <div id="container">
{{ content }} {{ content }}
<div id="footer"> <div id="footer">
<p>Copyright &copy; 2011&ndash;2014 Ben Kurtovic &bull; <a href="http://github.com/earwig/earwig.github.com">View Source</a> &bull; <a href="http://validator.w3.org/check?uri=referer">Valid HTML5</a></p>
<p>Copyright &copy; 2011&ndash;2014 Ben Kurtovic &bull; <a href="//github.com/earwig/earwig.github.com">View Source</a> &bull; <a href="http://validator.w3.org/check?uri=referer">Valid HTML5</a></p>
</div> </div>
</div> </div>
</div> </div>


+ 10
- 10
_layouts/home.html View File

@@ -24,19 +24,19 @@ layout: base
</tr> </tr>
<tr> <tr>
<td class="about-l light-l">Wikipedia</td> <td class="about-l light-l">Wikipedia</td>
<td class="about-r light-r"><a href="http://en.wikipedia.org/wiki/User:The_Earwig">[[User:The Earwig]]</a></td>
<td class="about-r light-r"><a href="//en.wikipedia.org/wiki/User:The_Earwig">[[User:The Earwig]]</a></td>
</tr> </tr>
<tr> <tr>
<td class="about-l dark-l">GitHub</td> <td class="about-l dark-l">GitHub</td>
<td class="about-r dark-r"><a href="http://github.com/earwig">earwig</a></td>
<td class="about-r dark-r"><a href="//github.com/earwig">earwig</a></td>
</tr> </tr>
<tr> <tr>
<td class="about-l light-l">BitBucket</td> <td class="about-l light-l">BitBucket</td>
<td class="about-r light-r"><a href="https://bitbucket.org/earwig">earwig</a></td>
<td class="about-r light-r"><a href="//bitbucket.org/earwig">earwig</a></td>
</tr> </tr>
<tr> <tr>
<td class="about-l dark-l">Twitter</td> <td class="about-l dark-l">Twitter</td>
<td class="about-r dark-r"><a href="http://twitter.com/the_earwig">@the_earwig</a></td>
<td class="about-r dark-r"><a href="//twitter.com/the_earwig">@the_earwig</a></td>
</tr> </tr>
<tr> <tr>
<td id="about-bl" class="about-l light-l">Tumblr</td> <td id="about-bl" class="about-l light-l">Tumblr</td>
@@ -49,9 +49,9 @@ layout: base


<td id="right-box"> <td id="right-box">
<div id="avatar-box"> <div id="avatar-box">
<img id="avatar" src="https://secure.gravatar.com/avatar/1b21804852ac50fee9f8e03cfa0da786?s=140" title="Earwig" alt="Earwig" />
<img id="avatar" src="//secure.gravatar.com/avatar/1b21804852ac50fee9f8e03cfa0da786?s=140" title="Earwig" alt="Earwig" />
</div> </div>
<p id="about-me-top">I'm Ben Kurtovic, a student, software developer, and <a href="http://en.wikipedia.org/">Wikipedian</a> who occasionally messes around with game production. I'm the guy behind <a href="https://github.com/earwig/mwparserfromhell">mwparserfromhell</a> and <a href="http://en.wikipedia.org/wiki/User:EarwigBot">EarwigBot</a>.</p>
<p id="about-me-top">I'm Ben Kurtovic, a student, software developer, and <a href="//en.wikipedia.org/">Wikipedian</a> who occasionally messes around with game production. I'm the guy behind <a href="//github.com/earwig/mwparserfromhell">mwparserfromhell</a> and <a href="//en.wikipedia.org/wiki/User:EarwigBot">EarwigBot</a>.</p>
<p>On this page, you can find my identities on a few other sites, check out the projects I'm working on, and read some of my incessant ramblings in blog form.</p> <p>On this page, you can find my identities on a few other sites, check out the projects I'm working on, and read some of my incessant ramblings in blog form.</p>
<h2 class="index-header">Posts</h2> <h2 class="index-header">Posts</h2>
<ul id="post-list"> <ul id="post-list">
@@ -59,10 +59,10 @@ layout: base
<li class="post">{{ post.date | date: "%b %d, %Y" }}: <a class="invert" href="{{ post.url }}">{{ post.title }}</a><br /><span class="description">{{ post.description }} (<a href="{{ post.url }}#disqus_thread" data-disqus-identifier="{{ post.id }}"></a>)</span></li> <li class="post">{{ post.date | date: "%b %d, %Y" }}: <a class="invert" href="{{ post.url }}">{{ post.title }}</a><br /><span class="description">{{ post.description }} (<a href="{{ post.url }}#disqus_thread" data-disqus-identifier="{{ post.id }}"></a>)</span></li>
{% endfor %} {% endfor %}
</ul> </ul>
<h2 class="index-header"><a class="incognito" href="https://twitter.com/the_earwig">Tweets</a></h2>
<div id="follow-button-box"><a href="https://twitter.com/the_earwig" class="twitter-follow-button" data-show-count="false" data-dnt="true">Follow @the_earwig</a>
<h2 class="index-header"><a class="incognito" href="//twitter.com/the_earwig">Tweets</a></h2>
<div id="follow-button-box"><a href="//twitter.com/the_earwig" class="twitter-follow-button" data-show-count="false" data-dnt="true">Follow @the_earwig</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></div> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></div>
<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/the_earwig" data-widget-id="392426863047364608" data-chrome="noheader" data-tweet-limit="5">Tweets by @the_earwig</a>
<a class="twitter-timeline" data-dnt="true" href="//twitter.com/the_earwig" data-widget-id="392426863047364608" data-chrome="noheader" data-tweet-limit="5">Tweets by @the_earwig</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</td> </td>
</tr> </tr>
@@ -76,7 +76,7 @@ layout: base
(function () { (function () {
var s = document.createElement('script'); s.async = true; var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript'; s.type = 'text/javascript';
s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s); (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
}()); }());
</script> </script>

+ 2
- 2
_layouts/post.html View File

@@ -21,9 +21,9 @@ layout: base
var disqus_developer = 1; var disqus_developer = 1;
(function() { (function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})(); })();
</script> </script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div> </div>

+ 3
- 3
_posts/2011-08-23-earwigbot-progress-page-editing.md View File

@@ -12,13 +12,13 @@ Because of [this](http://git.io/Nw-rLQ), doing this:
>>> site = wiki.get_site() >>> site = wiki.get_site()
>>> page = site.get_page("User:EarwigBot/Sandbox") >>> page = site.get_page("User:EarwigBot/Sandbox")
>>> page.edit("I can has content?", "BOT: Testing new framework", minor=True) >>> page.edit("I can has content?", "BOT: Testing new framework", minor=True)
>>>
>>>


{% endhighlight %} {% endhighlight %}


...produces ...produces
[this](http://en.wikipedia.org/w/index.php?title=User%3AEarwigBot%2FSandbox&diff=prev&oldid=446401978).
Clearly a MASSIVE DEVELOPMENT.
[this](//en.wikipedia.org/w/index.php?title=User%3AEarwigBot%2FSandbox&diff=prev&oldid=446401978).
Clearly a MASSIVE DEVELOPMENT.


After 5,800 lines of code, 54 files, and over 200 commits, EarwigBot can After 5,800 lines of code, 54 files, and over 200 commits, EarwigBot can
actually edit Wikipedia! actually edit Wikipedia!


+ 4
- 4
_posts/2012-01-29-earwigbot-and-toolserver-updates.md View File

@@ -30,7 +30,7 @@ EarwigBot's wiki toolset from `copyvios.mako`, and the config file is written,
so running the detector is trivial once it works. The only thing left here is so running the detector is trivial once it works. The only thing left here is
to have the tool produce relatively eye-pleasing output, perhaps with a to have the tool produce relatively eye-pleasing output, perhaps with a
"details" section showing the Markov chains formed from the two sources and "details" section showing the Markov chains formed from the two sources and
comparing them visually. Not necessary at all, but a nice touch.
comparing them visually. Not necessary at all, but a nice touch.


Unfortunately, there's still a bit more work to do on EarwigBot before he's Unfortunately, there's still a bit more work to do on EarwigBot before he's
ready for his first release (0.1!). Aside from the copyvio stuff above, which ready for his first release (0.1!). Aside from the copyvio stuff above, which
@@ -48,10 +48,10 @@ Now that that's covered, let's look at something (mostly unrelated) I finished
a couple days ago: dynamic backgrounds for a couple days ago: dynamic backgrounds for
[my new toolserver site](http://toolserver.org/~earwig/rewrite)! You can see it [my new toolserver site](http://toolserver.org/~earwig/rewrite)! You can see it
in action a bit better on [this page](http://toolserver.org/~earwig/earwigbot). in action a bit better on [this page](http://toolserver.org/~earwig/earwigbot).
The background is the the [Wikimedia Commons](http://commons.wikimedia.org/)
[Picture of the Day](http://commons.wikimedia.org/wiki/Commons:Picture_of_the_day),
The background is the the [Wikimedia Commons](//commons.wikimedia.org/)
[Picture of the Day](//commons.wikimedia.org/wiki/Commons:Picture_of_the_day),
loaded and displayed with JavaScript. loaded and displayed with JavaScript.
[Here's the code for it](https://github.com/earwig/toolserver/blob/master/static/js/potd.js),
[Here's the code for it](//github.com/earwig/toolserver/blob/master/static/js/potd.js),
a good deal more code than I had expected to write. a good deal more code than I had expected to write.


Here's what we have to do: Here's what we have to do:


+ 15
- 15
_posts/2014-06-01-obfuscating-hello-world.md View File

@@ -5,10 +5,9 @@ description: Fun with functional programming in Python.
--- ---


A few months ago, I got first place in A few months ago, I got first place in
[this Code Golf contest](http://codegolf.stackexchange.com/q/22533) to create
the weirdest obfuscated program that prints the string "Hello world!". I
decided to write up an explanation of how the hell it works. So, here's the
entry:
[this Code Golf contest](//codegolf.stackexchange.com/q/22533) to create the
weirdest obfuscated program that prints the string "Hello world!". I decided to
write up an explanation of how the hell it works. So, here's the entry:


{% highlight python %} {% highlight python %}


@@ -73,9 +72,9 @@ sys.stdout.write("Hello world!\n")
{% endhighlight %} {% endhighlight %}


But let's use something lower-level: But let's use something lower-level:
[`os.write()`](https://docs.python.org/2/library/os.html#os.write). We need
`stdout`'s [file descriptor](https://en.wikipedia.org/wiki/File_descriptor),
which is `1` (you can check with `print sys.stdout.fileno()`).
[`os.write()`](//docs.python.org/2/library/os.html#os.write). We need
`stdout`'s [file descriptor](//en.wikipedia.org/wiki/File_descriptor), which is
`1` (you can check with `print sys.stdout.fileno()`).


{% highlight python %} {% highlight python %}


@@ -85,7 +84,7 @@ os.write(1, "Hello world!\n")
{% endhighlight %} {% endhighlight %}


We want a single expression, so we'll use We want a single expression, so we'll use
[`__import__()`](https://docs.python.org/2/library/functions.html#__import__):
[`__import__()`](//docs.python.org/2/library/functions.html#__import__):


{% highlight python %} {% highlight python %}


@@ -180,9 +179,9 @@ convert = lambda num: chr(num % 256) + convert(num // 256) if num else ""
{% endhighlight %} {% endhighlight %}


Now we use Now we use
[anonymous recursion](https://en.wikipedia.org/wiki/Anonymous_recursion) to
turn this into a single expression. This requires a
[combinator](https://en.wikipedia.org/wiki/Combinatory_logic). Start with this:
[anonymous recursion](//en.wikipedia.org/wiki/Anonymous_recursion) to turn this
into a single expression. This requires a
[combinator](//en.wikipedia.org/wiki/Combinatory_logic). Start with this:


{% highlight pycon %} {% highlight pycon %}


@@ -238,7 +237,8 @@ some random function:
{% endhighlight %} {% endhighlight %}


What we're _really_ doing here is looking at the What we're _really_ doing here is looking at the
[line number table](http://svn.python.org/projects/python/branches/pep-0384/Objects/lnotab_notes.txt) of the `code` object contained within the function. Since it's anonymous, there
[line number table](http://svn.python.org/projects/python/branches/pep-0384/Objects/lnotab_notes.txt)
of the `code` object contained within the function. Since it's anonymous, there
are no line numbers, so the string is empty. Replace the `0` with `_` to make are no line numbers, so the string is empty. Replace the `0` with `_` to make
it more confusing (it doesn't matter, since the function's not being called), it more confusing (it doesn't matter, since the function's not being called),
and stick it in. We'll also refactor out the `256` into an argument that gets and stick it in. We'll also refactor out the `256` into an argument that gets
@@ -481,8 +481,8 @@ function. It's getting long, so I'll paste only the first half:


Only two more things are left. We'll start with the easy one: `256`. Only two more things are left. We'll start with the easy one: `256`.
<span>\\(256 = 2^8\\)</span>, so we can rewrite it as `1 << 8` (using a <span>\\(256 = 2^8\\)</span>, so we can rewrite it as `1 << 8` (using a
[left bit shift](http://stackoverflow.com/a/141873)), or `_ << ________` with
our obfuscated variables.
[left bit shift](//stackoverflow.com/a/141873)), or `_ << ________` with our
obfuscated variables.


We'll use the same idea with `802616035175250124568770929992`. A simple We'll use the same idea with `802616035175250124568770929992`. A simple
divide-and-conquer algorithm can break it up into sums of numbers which are divide-and-conquer algorithm can break it up into sums of numbers which are
@@ -490,7 +490,7 @@ themselves sums of numbers that are shifted together, and so on. For example,
if we had `112`, we could break it up into `96 + 16` and then if we had `112`, we could break it up into `96 + 16` and then
`(3 << 5) + (2 << 3)`. I like using bit shifts because the `<<` reminds me of `(3 << 5) + (2 << 3)`. I like using bit shifts because the `<<` reminds me of
`std::cout << "foo"` in C++, or `std::cout << "foo"` in C++, or
[`print` chevron](https://docs.python.org/2/reference/simple_stmts.html#the-print-statement)
[`print` chevron](//docs.python.org/2/reference/simple_stmts.html#the-print-statement)
(`print >>`) in Python, both of which are red herrings involving other ways of (`print >>`) in Python, both of which are red herrings involving other ways of
doing I/O. doing I/O.




+ 13
- 13
index.html View File

@@ -5,34 +5,34 @@ title: Home


<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/earwigbot">earwigbot</a> <span class="description"><i>(Python // started April 2009)</i></span>
<a class="invert" href="//github.com/earwig/earwigbot">earwigbot</a> <span class="description"><i>(Python // started April 2009)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>EarwigBot</i> is a <a href="http://python.org/">Python</a> robot that edits <a href="http://en.wikipedia.org/">Wikipedia</a> and interacts with people over <a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a>. It has <a href="https://github.com/earwig/earwigbot-plugins">a separate repository for plugins</a>.
<i>EarwigBot</i> is a <a href="//python.org/">Python</a> robot that edits <a href="//en.wikipedia.org/">Wikipedia</a> and interacts with people over <a href="//en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a>. It has <a href="//github.com/earwig/earwigbot-plugins">a separate repository for plugins</a>.
</div> </div>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/mwparserfromhell">mwparserfromhell</a> <span class="description"><i>(Python // started May 2012)</i></span>
<a class="invert" href="//github.com/earwig/mwparserfromhell">mwparserfromhell</a> <span class="description"><i>(Python // started May 2012)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>MWParserFromHell</i> is an easy-to-use and outrageously powerful <a href="http://python.org/">Python</a> parser for <a href="http://mediawiki.org/">MediaWiki</a> wikicode.
<i>MWParserFromHell</i> is an easy-to-use and outrageously powerful <a href="//python.org/">Python</a> parser for <a href="//mediawiki.org/">MediaWiki</a> wikicode.
</div> </div>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/copyvios">copyvios</a> <span class="description"><i>(Web // started July 2009)</i></span>
<a class="invert" href="//github.com/earwig/copyvios">copyvios</a> <span class="description"><i>(Web // started July 2009)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<a href="https://tools.wmflabs.org/copyvios"><i>Copyvios</i></a> is a copyright violation detector running on <a href="http://tools.wmflabs.org/">Wikimedia Labs</a>.
<a href="//tools.wmflabs.org/copyvios"><i>Copyvios</i></a> is a copyright violation detector running on <a href="//tools.wmflabs.org/">Wikimedia Labs</a>.
</div> </div>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/earwig.github.com">earwig.github.com</a> <span class="description"><i>(Web // started June 2011)</i></span>
<a class="invert" href="//github.com/earwig/earwig.github.com">earwig.github.com</a> <span class="description"><i>(Web // started June 2011)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>earwig.github.com</i> is... well... what you're viewing right now. In source code form! <i>earwig.github.com</i> is... well... what you're viewing right now. In source code form!
@@ -41,7 +41,7 @@ title: Home
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/git-repo-updater">git-repo-updater</a> <span class="description"><i>(Python // started June 2011)</i></span>
<a class="invert" href="//github.com/earwig/git-repo-updater">git-repo-updater</a> <span class="description"><i>(Python // started June 2011)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>Gitup</i> is a console script that allows you to easily pull to multiple git repositories at once. <i>Gitup</i> is a console script that allows you to easily pull to multiple git repositories at once.
@@ -50,25 +50,25 @@ title: Home
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/music-quizzer">music-quizzer</a> <span class="description"><i>(Python // started May 2011)</i></span>
<a class="invert" href="//github.com/earwig/music-quizzer">music-quizzer</a> <span class="description"><i>(Python // started May 2011)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>MusicQuizzer</i> is a <a href="http://en.wikipedia.org/wiki/Tk_(framework)">Tk</a>-based program that can help you prepare for your music final with randomly-generated listening quizzes.
<i>MusicQuizzer</i> is a <a href="//en.wikipedia.org/wiki/Tk_(framework)">Tk</a>-based program that can help you prepare for your music final with randomly-generated listening quizzes.
</div> </div>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/lobo">lobo</a> <span class="description"><i>(NetLogo // started December 2011)</i></span>
<a class="invert" href="//github.com/earwig/lobo">lobo</a> <span class="description"><i>(NetLogo // started December 2011)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>Lobo</i> is Logo Bolo: a re-envisioning of <a href="http://en.wikipedia.org/wiki/Bolo_(video_game)">the classic tank game</a> by Stuart Cheshire in NetLogo.
<i>Lobo</i> is Logo Bolo: a re-envisioning of <a href="//en.wikipedia.org/wiki/Bolo_(video_game)">the classic tank game</a> by Stuart Cheshire in NetLogo.
</div> </div>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<div class="project"> <div class="project">
<div class="project-head"> <div class="project-head">
<a class="invert" href="https://github.com/earwig/func-smash">func-smash</a> <span class="description"><i>(Python // started April 2012)</i></span>
<a class="invert" href="//github.com/earwig/func-smash">func-smash</a> <span class="description"><i>(Python // started April 2012)</i></span>
</div> </div>
<div class="project-body description"> <div class="project-body description">
<i>FuncSmash</i>, a small for-the-hell-of-it project, tries to generate random Python functions using Markov chains. <i>FuncSmash</i>, a small for-the-hell-of-it project, tries to generate random Python functions using Markov chains.


Loading…
Cancel
Save