Compare commits

...

4 Commits

11 changed files with 19 additions and 16 deletions

View File

@ -4,11 +4,8 @@
# that the contents of output/ can be copied to, committed, & pushed to the # that the contents of output/ can be copied to, committed, & pushed to the
# production server. # production server.
# TODO: replace gallery.tinyletterapp.com images with locally hosted content.
# TODO: in template.html, add apple touch icon, maybe other favicon sizes. # TODO: in template.html, add apple touch icon, maybe other favicon sizes.
# TODO: local mirrors of all papers in publications.html # TODO: local mirrors of all papers in publications.html
# TODO: just put the whole HTML content in the Atom feed?
# TODO: atom feed logo in the top-right.
# Requirements: # Requirements:
# sudo apt install python3-markdown # sudo apt install python3-markdown
@ -118,6 +115,7 @@ def process_markdown_files():
blog_entry['url'] = 'https://www.mcmillen.dev/' + page_url blog_entry['url'] = 'https://www.mcmillen.dev/' + page_url
blog_entry['date'] = update_date blog_entry['date'] = update_date
blog_entry['summary'] = find_summary(html_content) blog_entry['summary'] = find_summary(html_content)
blog_entry['content'] = html_content
blog_entries.append(blog_entry) blog_entries.append(blog_entry)
os.makedirs(out_dirpath, exist_ok=True) os.makedirs(out_dirpath, exist_ok=True)
@ -144,7 +142,7 @@ def make_atom_feed():
<title>Colin McMillen's Blog</title> <title>Colin McMillen's Blog</title>
<link href="https://www.mcmillen.dev"/> <link href="https://www.mcmillen.dev"/>
<link rel="self" href="https://www.mcmillen.dev/atom.xml"/> <link rel="self" href="https://www.mcmillen.dev/feed.atom"/>
<updated>{last_update}</updated> <updated>{last_update}</updated>
<author> <author>
<name>Colin McMillen</name> <name>Colin McMillen</name>
@ -160,9 +158,12 @@ def make_atom_feed():
<title>{title}</title> <title>{title}</title>
<id>{url}</id> <id>{url}</id>
<link rel="alternate" href="{url}"/> <link rel="alternate" href="{url}"/>
<content type="text/html" src="{url}"/> <content type="html">
<![CDATA[
{content}
]]>
</content>
<updated>{updated}</updated> <updated>{updated}</updated>
<summary>{summary} (...)</summary>
</entry> </entry>
''' '''
@ -178,7 +179,8 @@ def make_atom_feed():
url=entry['url'], url=entry['url'],
title=entry['title'], title=entry['title'],
updated=update_date, updated=update_date,
summary=entry['summary'])) summary=entry['summary'],
content=entry['content']))
entries_text = entries_io.getvalue() entries_text = entries_io.getvalue()
@ -187,7 +189,7 @@ def make_atom_feed():
entries=entries_io.getvalue()) entries=entries_io.getvalue())
entries_io.close() entries_io.close()
atom_filename = os.path.join(output_directory, 'atom.xml') atom_filename = os.path.join(output_directory, 'feed.atom')
print_file('', atom_filename) print_file('', atom_filename)
atom_file = open(atom_filename, 'w') atom_file = open(atom_filename, 'w')
atom_file.write(atom_feed) atom_file.write(atom_feed)

View File

@ -14,7 +14,7 @@ You might suspect there is some chicanery going on with this result. You'd be co
There's also some [supporting material](/sigbovik) on this website, including a [gallery of all 100 images](/sigbovik/splatters.html) and their associated valid Perl code. Here's a screenshot of some of them. (Did you know that the string `lerzfijglpFiji-j` evaluates to the number `0` in Perl?) There's also some [supporting material](/sigbovik) on this website, including a [gallery of all 100 images](/sigbovik/splatters.html) and their associated valid Perl code. Here's a screenshot of some of them. (Did you know that the string `lerzfijglpFiji-j` evaluates to the number `0` in Perl?)
![screenshot of 17 paint splatters, and the Perl programs they represent](https://gallery.tinyletterapp.com/76b879b0e95d11cda4d7d21283ce7d32a4f76e09/images/63d8cc7b-9d70-493c-9f64-1aa7da5b9426.png) ![screenshot of 17 paint splatters, and the Perl programs they represent](/media/20190403-update-splatters.png)
As it turns out, the publication date of my paper was exactly 10-years-minus-a-day since my Ph.D. thesis defense. I'd planned on travelling back to Carnegie Mellon to give this talk live at SIGBOVIK 2019, but unfortunately came down with a nasty cold-and-cough so I had to cancel my trip. :( Perhaps I can give a belated talk at next year's conference. As it turns out, the publication date of my paper was exactly 10-years-minus-a-day since my Ph.D. thesis defense. I'd planned on travelling back to Carnegie Mellon to give this talk live at SIGBOVIK 2019, but unfortunately came down with a nasty cold-and-cough so I had to cancel my trip. :( Perhaps I can give a belated talk at next year's conference.
@ -24,13 +24,13 @@ Some other random things that I've been up to in the last month-and-a-half:
* [ohnosay](https://twitter.com/mcmillen/status/1095795492196364297), which is like "cowsay" but for comics in the style of webcomicname. [GitHub] This was a good excuse to get a Linux development environment set up on a persistent Google Cloud instance & to learn how to GitHub. Since then, I also realized that the World Outside Google uses Python 3, so I've started learning that :) * [ohnosay](https://twitter.com/mcmillen/status/1095795492196364297), which is like "cowsay" but for comics in the style of webcomicname. [GitHub] This was a good excuse to get a Linux development environment set up on a persistent Google Cloud instance & to learn how to GitHub. Since then, I also realized that the World Outside Google uses Python 3, so I've started learning that :)
![a three panel comic displayed on a linux terminal: "i will write a silly program" "hm, what did i do with my ssh credentials?" "oh no"](https://gallery.tinyletterapp.com/76b879b0e95d11cda4d7d21283ce7d32a4f76e09/images/e5032bd6-fe2c-4d1a-a023-3598e144c9c2.png) ![a three panel comic displayed on a linux terminal: "i will write a silly program" "hm, what did i do with my ssh credentials?" "oh no"](/media/20190403-update-ohno.png)
* Gardening! Last August I randomly planted some peppermint in a railing container on my balcony, and it went gangbusters. This spring I've actually planned out a whole porch-garden (like [Stardew Valley but real life](https://twitter.com/sevandyk/status/1109121188079427585)). Last year's mint has started growing again, and I've added spearmint and mojito mint. I've also got two types of peas, two mixes of salad greens, and spinach planted. Later I'll be planting carrots, basil, and rosemary. The peas just started sprouting a couple days ago, which is exciting! * Gardening! Last August I randomly planted some peppermint in a railing container on my balcony, and it went gangbusters. This spring I've actually planned out a whole porch-garden (like [Stardew Valley but real life](https://twitter.com/sevandyk/status/1109121188079427585)). Last year's mint has started growing again, and I've added spearmint and mojito mint. I've also got two types of peas, two mixes of salad greens, and spinach planted. Later I'll be planting carrots, basil, and rosemary. The peas just started sprouting a couple days ago, which is exciting!
![a container showing an assortment of "asian salad" greens](https://gallery.tinyletterapp.com/76b879b0e95d11cda4d7d21283ce7d32a4f76e09/images/4e7e993c-8f90-4117-ad36-bb32a20a78c5.jpg) ![a container showing an assortment of "asian salad" greens](/media/20190403-update-garden.jpg)
* Gloomhaven! This is a cooperative legacy-style board game -- a fun dungeon-crawler that doesn't need a DM, so everyone gets to play. Our group is still only a few scenarios in, but we're enjoying it so far. SO MANY HEX TILES. I'm also getting ready to paint our party's miniatures, which is another (potential) new hobby of mine; more to come in a future newsletter, I suspect :) * Gloomhaven! This is a cooperative legacy-style board game --- a fun dungeon-crawler that doesn't need a DM, so everyone gets to play. Our group is still only a few scenarios in, but we're enjoying it so far. SO MANY HEX TILES. I'm also getting ready to paint our party's miniatures, which is another (potential) new hobby of mine; more to come in a future newsletter, I suspect :)
* Video games: just started Sekiro: Shadows Die Twice on PS4. Recently completed (and really enjoyed) New Super Mario Bros. U Deluxe for Nintendo Switch (though Nintendo seems to be trying to give Google a run for their money on ridiculous product names). I've also been playing Total War: Warhammer 2 regularly, and Splatoon 2 from time to time. I tried getting into XCOM 2 & enjoyed it, but I'm not sure I'm interested enough to finish the campaign. I keep going back to Total War when I want something in the tactical / strategy genre. * Video games: just started Sekiro: Shadows Die Twice on PS4. Recently completed (and really enjoyed) New Super Mario Bros. U Deluxe for Nintendo Switch (though Nintendo seems to be trying to give Google a run for their money on ridiculous product names). I've also been playing Total War: Warhammer 2 regularly, and Splatoon 2 from time to time. I tried getting into XCOM 2 & enjoyed it, but I'm not sure I'm interested enough to finish the campaign. I keep going back to Total War when I want something in the tactical / strategy genre.

View File

@ -14,7 +14,7 @@ If you want to follow along, I have an extremely-placeholder website up at [semi
I only got started in December & a lot of my work so far has been on building infrastructure (and learning how to start a business), so I don't have any Extremely Compelling Gameplay Videos yet. Here's a short animated GIF for now. The [bloopers on Twitter](https://twitter.com/mcmillen/status/1205164954728509440) might be more fun though. :) I only got started in December & a lot of my work so far has been on building infrastructure (and learning how to start a business), so I don't have any Extremely Compelling Gameplay Videos yet. Here's a short animated GIF for now. The [bloopers on Twitter](https://twitter.com/mcmillen/status/1205164954728509440) might be more fun though. :)
![Animation](https://gallery.tinyletterapp.com/76b879b0e95d11cda4d7d21283ce7d32a4f76e09/images/deb53c32-0d33-4362-bfd4-97c22b5745f5.gif) ![Animation of a pixel-art character swinging a sword](/media/20200209-sneak.gif)
(Art definitely not final!) (Art definitely not final!)
Thanks for following along with me on this adventure! Hopefully my next update will come more quickly, and be less wordy! I've wanted to make videogames since I was Literally A Kid, so I'm quite excited to finally be doing that full-time, and to hopefully share something good with all of you. When I'm at a stage where I want alpha testers, I'll definitely be asking here first. Thanks for following along with me on this adventure! Hopefully my next update will come more quickly, and be less wordy! I've wanted to make videogames since I was Literally A Kid, so I'm quite excited to finally be doing that full-time, and to hopefully share something good with all of you. When I'm at a stage where I want alpha testers, I'll definitely be asking here first.

View File

@ -8,8 +8,7 @@ In this paper, we aim to answer a long-standing open problem in the programming
We answer this question in the affirmative: it **is possible** to smear paint on the wall without creating a valid Perl program. We employ an empirical approach, using optical character recognition (OCR) software, which finds that merely 93% of paint splatters parse as valid Perl. We analyze the properties of paint-splatter Perl programs, and present seven examples of paint splatters which are not valid Perl programs. We answer this question in the affirmative: it **is possible** to smear paint on the wall without creating a valid Perl program. We employ an empirical approach, using optical character recognition (OCR) software, which finds that merely 93% of paint splatters parse as valid Perl. We analyze the properties of paint-splatter Perl programs, and present seven examples of paint splatters which are not valid Perl programs.
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">but is it possible to smear paint on the wall without creating valid Perl?</p>&mdash; Jake Archibald (@jaffathecake) <a href="https://twitter.com/jaffathecake/status/1095706032448393217?ref_src=twsrc%5Etfw">February 13, 2019</a></blockquote> [![Screenshot of a Twitter conversation. Adrienne Porter Felt says: "I don't want to teach my kid to code. I want him to splash in muddy puddles and smear paint on the walls and read novels under the covers way too late at night. I grew up too soon and wish I'd had more time to be a kid. Why do schools teach vocational skills so young these days?" Jake Archibald replies: "but is it possible to smear paint on the wall without creating valid Perl?"](/media/20190401-sigbovik-tweet.png)](https://twitter.com/jaffathecake/status/1095706032448393217)
<script async src="https://platform.twitter.com/widgets.js"></script>
Accepted for publication at SIGBOVIK 2019, held April 1st 2019 in Pittsburgh. Winner of a Unwitting Participation Ribbon, "an unwelcome brand weve affixed to each paper determined after careful scrutiny to have included a genuine artifact, thereby furthering the admirable causes of open science and fruitful procrastination." Accepted for publication at SIGBOVIK 2019, held April 1st 2019 in Pittsburgh. Winner of a Unwitting Participation Ribbon, "an unwelcome brand weve affixed to each paper determined after careful scrutiny to have included a genuine artifact, thereby furthering the admirable causes of open science and fruitful procrastination."

1
static/img/rss.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#FFFFFF" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path fill-rule="nonzero" d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z "></path></svg>

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" href="/favicon.ico"> <link rel="icon" type="image/png" href="/favicon.ico">
<link rel="canonical" href="https://www.mcmillen.dev/{page_url}"> <link rel="canonical" href="https://www.mcmillen.dev/{page_url}">
<link rel="alternate" type="application/atom+xml" href="https://www.mcmillen.dev/atom.xml" title="Colin McMillen's Blog - Atom"> <link rel="alternate" type="application/atom+xml" href="https://www.mcmillen.dev/feed.atom" title="Colin McMillen's Blog - Atom">
<title>{title}</title> <title>{title}</title>
@ -24,6 +24,7 @@
<div id="header"> <div id="header">
<div class="content"> <div class="content">
<a href="/" class="undecorated">Colin McMillen</a> <a href="/" class="undecorated">Colin McMillen</a>
<span style="float: right;"><a href="/feed.atom"><img src="/img/rss.svg" alt="Atom feed"></a></span>
<span style="float: right;"><a href="https://twitter.com/mcmillen"><img src="/img/twitter.svg" alt="@mcmillen"></a></span> <span style="float: right;"><a href="https://twitter.com/mcmillen"><img src="/img/twitter.svg" alt="@mcmillen"></a></span>
</div> </div>
</div> </div>