From eb33cb032fec4e4d835920a084e457fabaff1e50 Mon Sep 17 00:00:00 2001 From: Zachary Vance Date: Wed, 10 Jul 2024 20:55:50 -0400 Subject: [PATCH] Move categories, tags, author, date out of post content --- blog | 77 +++++++++++++++++-- config.yaml | 10 ++- posts/116.html | 9 +-- posts/20-minute-interruptions.html | 9 +-- posts/2020-books.html | 9 +-- posts/2020-review.html | 9 +-- posts/2020-videogames.html | 9 +-- posts/2021-books.html | 9 +-- posts/2022-books.html | 9 +-- posts/2022-year-in-review.html | 9 +-- ...media-longevity-testing-3-years-later.html | 9 +-- posts/3-more-games.html | 9 +-- ...ion-rpg-logic-potions-emperical-zendo.html | 9 +-- .../30-days-of-learning-play-and-newness.html | 9 +-- posts/a-mystery-in-the-text-editor.html | 9 +-- posts/a-pixel-art.html | 9 +-- posts/all-the-recipes.html | 9 +-- posts/amazon-aws.html | 9 +-- posts/android-backup-on-arch-linux.html | 9 +-- .../april-fools-puzzle-contest-solutions.html | 9 +-- posts/april-fools-puzzle-contest.html | 9 +-- posts/archiving-all-bash-commands-typed.html | 9 +-- posts/archiving-all-web-traffic.html | 9 +-- posts/archiving-github.html | 9 +-- posts/archiving-gmail.html | 9 +-- posts/archiving-twitch.html | 9 +-- posts/archiving-twitter.html | 9 +-- posts/articles-section.html | 9 +-- posts/backup-android-on-plugin.html | 9 +-- posts/banh-chung.html | 9 +-- posts/blast-furance.html | 9 +-- posts/blueprint-maker-13-complete.html | 9 +-- posts/board-game-travel-kit.html | 9 +-- ...-the-blackmagic-intensity-pro-4k-card.html | 9 +-- posts/cardboard-mail-holders.html | 9 +-- .../configuring-mailxs-mailrc-with-gmail.html | 9 +-- ...lling-a-computercraft-turtle-remotely.html | 9 +-- posts/cookbook.html | 9 +-- posts/crawling-etiquette.html | 9 +-- ...and-sending-email-to-only-one-address.html | 9 +-- .../dd-spells-srd-vs-5e-players-handbook.html | 9 +-- posts/dd-story-time.html | 9 +-- posts/ddos.html | 9 +-- posts/default-twitter-icons.html | 9 +-- .../dependency-resolution-in-javascript.html | 9 +-- posts/diy-hard-drive-carrying-case.html | 9 +-- .../diy-keyboards-and-how-keyboards-work.html | 9 +-- posts/domain-names-for-sale.html | 9 +-- posts/dungeon-master-ii-spell-runes.html | 9 +-- posts/e-ink-laptop.html | 9 +-- posts/easel-toy.html | 9 +-- ...root-on-debian-part-2-unattended-boot.html | 9 +-- posts/etherpad.html | 9 +-- posts/even-more-uri-handlers-in-linux.html | 9 +-- posts/fabric1-aur-package.html | 9 +-- posts/first-aid-kit.html | 9 +-- ...media-longevity-testing-4-years-later.html | 9 +-- posts/games-i-like.html | 9 +-- posts/garden-signs-on-wall-tiles-pt-2.html | 9 +-- posts/garden-signs-on-wall-tiles.html | 9 +-- posts/getting-rid-of-mold.html | 9 +-- ...ro-trinket-3-3v-to-work-in-arch-linux.html | 9 +-- ...ithub-com-archive-background-research.html | 9 +-- posts/good-time-estimation.html | 9 +-- posts/hack-a-day-2023-2.html | 9 +-- posts/hack-a-day-2023-is-done.html | 9 +-- posts/hack-a-day-2023.html | 9 +-- posts/hack-a-day-day-01-perquackey.html | 9 +-- posts/hack-a-day-day-04-lashed-table.html | 9 +-- .../hack-a-day-day-06-doodlemoji-alchemy.html | 9 +-- posts/hack-a-day-day-06.html | 9 +-- posts/hack-a-day-day-08-receipt-zine.html | 9 +-- posts/hack-a-day-day-10-typewriter.html | 9 +-- posts/hack-a-day-day-11-raytraced-rain.html | 9 +-- posts/hack-a-day-day-12-screensavers.html | 9 +-- posts/hack-a-day-day-13-blueprint-maker.html | 9 +-- posts/hack-a-day-day-14-bytebeat-synth.html | 9 +-- posts/hack-a-day-day-17-tower-of-choices.html | 9 +-- posts/hack-a-day-day-18-a-i-grab-bag.html | 9 +-- posts/hack-a-day-day-2-raytracing.html | 9 +-- ...y-20-hillsfar-lockpicking-spritesheet.html | 9 +-- posts/hack-a-day-day-22-homemade-pcbs.html | 9 +-- posts/hack-a-day-day-23-packing.html | 9 +-- posts/hack-a-day-day-28-90s-sitcom.html | 9 +-- posts/hack-a-day-day-29-speed-reading.html | 9 +-- ...day-30-music-of-the-celestial-spheres.html | 9 +-- posts/hack-a-day-hack-a-battle.html | 9 +-- posts/hack-a-day-hack-a-blog.html | 9 +-- posts/hack-a-day-hack-a-bug.html | 9 +-- posts/hack-a-day-hack-a-chat.html | 9 +-- posts/hack-a-day-hack-a-clock.html | 9 +-- posts/hack-a-day-hack-a-crop.html | 9 +-- posts/hack-a-day-hack-a-dictionary.html | 9 +-- posts/hack-a-day-hack-a-farm.html | 9 +-- posts/hack-a-day-hack-a-hang.html | 9 +-- posts/hack-a-day-hack-a-hell.html | 9 +-- posts/hack-a-day-hack-a-homepage.html | 9 +-- posts/hack-a-day-hack-a-line.html | 9 +-- posts/hack-a-day-hack-a-link-2.html | 9 +-- posts/hack-a-day-hack-a-link.html | 9 +-- posts/hack-a-day-hack-a-machine.html | 9 +-- posts/hack-a-day-hack-a-mandelbrot.html | 9 +-- posts/hack-a-day-hack-a-minigame.html | 9 +-- posts/hack-a-day-hack-a-paste.html | 9 +-- posts/hack-a-day-hack-a-snake.html | 9 +-- posts/hack-a-day-hack-a-song.html | 9 +-- posts/hack-a-day-hack-a-sound.html | 9 +-- posts/hack-a-day-hack-a-stats.html | 9 +-- posts/hack-a-day-hack-a-tank.html | 9 +-- posts/hack-a-day-hack-a-tile.html | 9 +-- posts/hack-a-day-hack-a-tv-guide.html | 9 +-- posts/hack-a-day-hack-an-adventure.html | 9 +-- posts/hack-a-day-hack-an-asteroid.html | 9 +-- posts/hack-a-day-hack-an-experiment.html | 9 +-- posts/hack-a-day-hack-an-icecube-failure.html | 9 +-- posts/hack-a-day-hack-an-mmo.html | 9 +-- posts/hack-a-day-hack-an-uptime.html | 9 +-- posts/hack-a-day-website.html | 9 +-- posts/hello-world.html | 9 +-- posts/hillsfar-lockpicking-20-complete.html | 9 +-- posts/how-to-retire-for-infinity-years.html | 9 +-- posts/html-css-cheatsheet.html | 9 +-- ...-imageclass-lbp-6000-on-64-bit-debian.html | 9 +-- ...alling-email-with-postfix-and-dovecot.html | 9 +-- ...introducing-the-zorchpad-display-demo.html | 9 +-- posts/irc.html | 9 +-- posts/ircpuzzles-2024.html | 9 +-- posts/is-rick-and-morty-out-season-5.html | 9 +-- posts/is-rick-and-morty-out-season-6.html | 9 +-- posts/life-logging-in-2019.html | 9 +-- posts/linux-print-server.html | 9 +-- posts/mail-filtering-with-dovecot.html | 9 +-- ...ng-a-hardware-random-number-generator.html | 9 +-- posts/making-my-finances-public.html | 9 +-- posts/making-signs-on-wall-tiles.html | 9 +-- posts/markdown-support.html | 9 +-- posts/meeple-initiative-tracker.html | 9 +-- ...debian-installation-to-encrypted-root.html | 9 +-- posts/mon8.html | 9 +-- posts/money-orders.html | 9 +-- posts/moreorcs-com.html | 9 +-- posts/multi-universe-rpg-toy.html | 9 +-- posts/my-todo-list.html | 9 +-- posts/new-experimental-blog.html | 9 +-- posts/ogs2021-27-million-go-games.html | 9 +-- posts/ok-mixnet.html | 9 +-- posts/old-wikipedia-urdu.html | 9 +-- posts/old-wikipedia.html | 9 +-- posts/one-page-rpgs.html | 9 +-- posts/one-screenshot-per-minute.html | 9 +-- posts/open-nntp-server.html | 9 +-- posts/painting.html | 9 +-- posts/pandora-songs.html | 9 +-- posts/paper-archival.html | 9 +-- posts/pixel-alphabet.html | 9 +-- posts/pixel-art-a-cool-cat.html | 9 +-- posts/pompompom.html | 9 +-- posts/postmortem-bs-store.html | 9 +-- posts/printable-todo-list.html | 9 +-- ...l-2270dw-printer-using-a-raspberry-pi.html | 9 +-- posts/problem-log-txt.html | 9 +-- posts/qr-backup-2.html | 9 +-- posts/qr-backup-v1-1.html | 9 +-- posts/qr-backup.html | 9 +-- posts/raspberry-pi-comparison.html | 9 +-- posts/relay-music.html | 9 +-- posts/repulsive-dots.html | 9 +-- posts/roasted-chickpeas.html | 9 +-- ...ning-a-forge-server-on-headless-linux.html | 9 +-- posts/scan-organizer.html | 9 +-- posts/scheme-interpreter.html | 9 +-- posts/screen-and-tmux-ides.html | 9 +-- posts/scroll-props.html | 9 +-- ...ng-up-ssl-certificates-using-startssl.html | 9 +-- posts/software-section.html | 9 +-- posts/sql-views.html | 9 +-- posts/steak-tartare-3.html | 9 +-- posts/storage-prices-2019-07.html | 9 +-- posts/storage-prices-2020-01.html | 9 +-- posts/storage-prices-2022-07.html | 9 +-- posts/storage-prices-2023-01.html | 9 +-- ...ng-linux-twitch-using-ffmpeg-and-alsa.html | 9 +-- posts/stylish.html | 9 +-- posts/talk-in-debian.html | 9 +-- .../terminal-goal-rationality-techniques.html | 9 +-- posts/testing-scrapers-faster.html | 9 +-- ...the-bible-translated-to-the-new-latin.html | 9 +-- posts/the-double-lives-of-books.html | 9 +-- ...the-life-changing-magic-of-tidying-up.html | 9 +-- posts/time-log-transcribed.html | 9 +-- ...ent-optimizers-satisficers-minimizers.html | 9 +-- posts/timelog-analysis.html | 9 +-- posts/tiny-cute-vampire-bat.html | 9 +-- posts/tty-audit-logs.html | 9 +-- posts/understanding-gzip-2.html | 9 +-- posts/url-handlers-in-linux.html | 9 +-- posts/usb-flash-longevity-testing-year-2.html | 9 +-- posts/what-i-know-about-sleep-schedules.html | 9 +-- ...rick-and-morty-out-season-4-episode-6.html | 9 +-- posts/whiteboard-partition.html | 9 +-- posts/whoosh.html | 9 +-- posts/whsh.html | 9 +-- posts/wip-dead-tree-publishing-2.html | 9 +-- posts/wip-dead-tree-publishing-3.html | 9 +-- posts/wip-dead-tree-publishing-4.html | 9 +-- posts/wip-dead-tree-publishing.html | 9 +-- posts/xp-boot-usb-stick.html | 9 +-- posts/year-in-review.html | 9 +-- posts/youtube-autodl.html | 9 +-- posts/zorchpad-keyboard-update.html | 9 +-- .../zorchpad-update-cardboard-mockup-mk1.html | 9 +-- posts/zorchpad-update-first-3d-print.html | 9 +-- posts/zorchpad-update-keyboard.html | 9 +-- templates/all_links.mustache.html | 5 ++ templates/category.mustache.html | 2 +- templates/feed.mustache.html | 2 +- templates/index.mustache.html | 3 + templates/layout.mustache.html | 24 +++--- templates/links.mustache.html | 5 ++ templates/post.mustache.html | 34 ++++++++ templates/tag.mustache.html | 2 +- wordpress2frontmatter.py | 5 +- 222 files changed, 353 insertions(+), 1715 deletions(-) create mode 100644 templates/all_links.mustache.html create mode 100644 templates/index.mustache.html create mode 100644 templates/links.mustache.html diff --git a/blog b/blog index 15db000..a1c75a5 100755 --- a/blog +++ b/blog @@ -83,6 +83,12 @@ def paginated_property(f): return AnonProperty(f) +def flag_last(l): + l = list(l) + for x in l[:-1]: + yield {"thing": x, "last": False} + yield {"thing": l[-1], "last": True} + def calc_range(l): it = iter(l) min = next(it) @@ -137,7 +143,7 @@ class Link(): @property def static(self): - return "../" + self.partial + return self.blog.web_root + "/" + self.partial @property def file(self): @@ -172,14 +178,14 @@ class Templatable(PseudoMap): @property def url(self): - return self.blog.web_root + "/" + self.output_path + return self.blog.web_root + "/" + str(self.output_path.relative_to(Path(self.blog.destination))) def render_template(source, blog, name, context): template_path = blog["{}_template".format(name)] with open(template_path, "r") as f: template = f.read() html = mustache.render(template, context, warn=True) - blog.replace_links(source, html) + html = blog.replace_links(source, html) return html def content(self): @@ -219,13 +225,24 @@ class Post(Templatable): def __init__(self, parsed, blog): super().__init__(blog) self.post, self.comments = parsed.pop("content").split("\n") + self.main_display = True for k, v in parsed.items(): + if k in {"tags", "author", "categories"}: + k = "_" + k self[k] = v @property def date_rfc822(self): return self.date.strftime(RFC822) + @property + def day(self): + return self.date.strftime("%B %d, %Y").replace(" 0", " ") + + @property + def time(self): + return self.date.strftime("%I:%M %P") + @property def id(self): if hasattr(self, "wordpress_slug"): return self.wordpress_slug @@ -235,6 +252,40 @@ class Post(Templatable): def __hash__(self): return hash(self.id) + @property + def author(self): + return self.blog.author_for(self._author) + + @property + def tags(self): + return [self.blog.tag_for(tag) for tag in self._tags] + + @property + def tags_list(self): + return flag_last(self.tags) + + @property + def categories(self): + return [self.blog.category_for(category) for category in self._categories] + + @property + def categories_list(self): + return flag_last(self.categories) + + @property + def has_tags(self): + return len(self.tags) > 0 + + @property + def has_categories(self): + return len(self.categories) > 0 + + @property + def html(self): + return self.render_template(self.blog, self.type, collections.ChainMap({ + "main_display": False, + }, self.context)) + class Tag(Templatable): def __init__(self, tag, blog): super().__init__(blog) @@ -307,6 +358,10 @@ class Blog(PseudoMap): def deadlinks(self): return sorted(link for link in self.links if link.is_dead and all(x not in link.partial for x in ("?replytocom", "#comment"))) + @property + def alllinks(self): + return sorted(self.links) + @paginated_property def posts(self): return self._posts @@ -328,10 +383,12 @@ class Blog(PseudoMap): self._posts.append(post) for tag in post.tags: - self.tag_for(tag).add_post(post) + tag.add_post(post) + for category in post.categories: - self.category_for(category).add_post(post) - self.author_for(post.author).add_post(post) + category.add_post(post) + + post.author.add_post(post) def category_for(self, category): if category not in self.categories: @@ -358,7 +415,9 @@ class Blog(PseudoMap): @property def pages(self): return [ + Page("index", self), Page("feed", self, use_layout=False), + Page("links", self), Page("deadlinks", self), # Must be last to avoid dead links ] @@ -408,6 +467,10 @@ class Blog(PseudoMap): return Templatable.render_template(Templatable, blog, "tagcloud", self) + @property + def feed_url(self): + return Page("feed", self, use_layout=False).url + def _update_happened(self, path): path = Path(path) reload_update = [ @@ -476,7 +539,7 @@ if __name__ == "__main__": blog = Blog(reload=args.reload) if args.local: - blog.web_root = ".." + blog.web_root = "file://" + blog.destination if args.all: blog.clean() blog.generate_all() diff --git a/config.yaml b/config.yaml index e06481d..2018981 100644 --- a/config.yaml +++ b/config.yaml @@ -5,13 +5,15 @@ web_root: "https://blog2.za3k.com" title: 'blog of zachary "za3k" vance' post_dir: "posts" -page_dir: "pages" +page_dir: "page" image_dir: "images" static_dir: "static" author_template: "templates/author.mustache.html" category_template: "templates/tag.mustache.html" deadlinks_template: "templates/deadlinks.mustache.html" +links_template: "templates/links.mustache.html" +index_template: "templates/index.mustache.html" feed_template: "templates/feed.mustache.html" layout_template: "templates/layout.mustache.html" post_template: "templates/post.mustache.html" @@ -20,8 +22,10 @@ tagcloud_template: "templates/tagcloud.mustache.html" author_destination: "{{destination}}/author/{{slug}}.html" category_destination: "{{destination}}/category/{{slug}}.html" -deadlinks_destination: "{{destination}}/pages/deadlinks.html" -feed_destination: "{{destination}}/pages/feed.xml" +deadlinks_destination: "{{destination}}/page/deadlinks.html" +links_destination: "{{destination}}/page/links.html" +index_destination: "{{destination}}/page/index.html" +feed_destination: "{{destination}}/page/feed.xml" image_destination: "{{destination}}/images/{{image}}" page_destination: "{{destination}}/{{page}}" post_destination: "{{destination}}/posts/{{id}}.html" diff --git a/posts/116.html b/posts/116.html index 11f425e..9faf999 100644 --- a/posts/116.html +++ b/posts/116.html @@ -15,17 +15,10 @@ wordpress_id: 116 wordpress_slug: '116' --- -
-

KISS vs DRY

-

The best practice or goal emphasized above with respect to templates and views is KISS and DRY. As long as the implementation does not become overly complex and difficult to grok, keep the template code DRY, otherwise KISS principle overrides the need to have template code that does not repeat itself.

–Vertebrae Framework

A nice illustration of conflicting positive principles and resolution.

-
-
-Tagged , , . Bookmark the permalink.
-
+ diff --git a/posts/20-minute-interruptions.html b/posts/20-minute-interruptions.html index d0ec0b6..7bc64cc 100644 --- a/posts/20-minute-interruptions.html +++ b/posts/20-minute-interruptions.html @@ -14,19 +14,12 @@ wordpress_id: 776 wordpress_slug: 20-minute-interruptions --- -
-

20 minute interruptions

-

Very, very early in my self-improvement journey, I tried adding a 20 minute timer to my life. Every 20 minutes of my waking life, it went off. I’d explicitly say to myself what it was I was doing (“Watching TV” or “Talking to Fred”). It’s important to have a verbal or written note of what you’re doing.

I added a specific prompt at one point: “What am I doing, and why?”. I don’t think goals are how I think about things today, but it’s how I tried to think back then (goal factoring). Today I might ask, “What am I doing, and do I want to be doing it? Do I want to be doing it this way?”

The basic 20-minute check-in process was very helpful to me. Some benefits:

  • Ding! What am I doing? It gave me an awareness of time. How long do things last? Our subjective sense of time doesn’t always match. For example, doing my daily chores takes about 20 minutes. A typical conversation with a friend takes 60-120 minutes for me. But the chores feel way longer to me!
  • What am I doing, and do I want to be doing it? Interrupting default activities (a type of inertia). Watching TV until I get bored of it takes me 2-10 hours, if I don’t have a timer. Having a timer interrupt me let me say “well, maybe this will be the last episode, then.” It’s easy to get into a low-energy state for leisure activities where you don’t notice the passage of time. And it’s important to note, I don’t have any rules. I can keep watching TV all night if I want to. This helps me avoid doing it out of pure inertia. (It also really keyed me in that TV does not really “recharge” my batteries. Other relaxation is better.)
  • Do I want to be doing it, or doing it this way? Interrupting bad approaches (a type of inertia). Sometimes, I get stubborn. I’ll keep trying to solve a problem in one way, for way too long. Having a regular interruption keys me into how long I’ve been doing that. I’ll notice I should maybe try a different approach or a work-around. Or give up.
  • Ding! Providing a check-in. I’ll just take stock, and say “hey, am I really having fun? is this even useful?”. Sometimes I’m just doing something dumb. Or sometimes I forget to have fun or take a break for too long. This is my reminder to check in with my strategic system; my emotions; my body.
-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/2020-books.html b/posts/2020-books.html index 920a5ce..26bc0b2 100644 --- a/posts/2020-books.html +++ b/posts/2020-books.html @@ -16,19 +16,12 @@ wordpress_id: 562 wordpress_slug: 2020-books --- -
-

2020 books

-

Here’s a list of books I read in 2020. The ones in bold I recommend.

Fiction:

A College of Magics by Caroline Stevermer
A Crucible of Souls by Mitchell Hogan
Alcatraz and the Evil Librarians by Brandon Sanderson
A Memory Called Empire, by Arkady Martine
Apex (Nexus 3) by Ramez Naam
A Practical Guide to Evil, to end of book 5
Arena by Holly Jennings
Ariel by Steven Barnett
Ascend Online by Luke Chmilenko
Bastard Operator from Hell
Circe, by Madeline Miller
City of Brass by S A Chakrabarty p1-460
Cold Comfort Farm by Stella Gibbons
Colour out of Space by HP Lovecraft
Crux (Nexus 2) by Ramez Naam
Cryptonomicon by Neal Stephenson
Cultivation Chat Group – ch1-56
Dark Lord of Derholm by Dianna Wynne Jones
Dayworld by Philip Jose Farmer
Dayworld Rebel by Philip Jose Farmer # gave up halfway
Dust by Hugh Howey
Emperor Mage by Tamora Pierce
Enchantress by James Maxwell
Exhalation by Ted Chiang
Fall by Neal Stephenson p1-545
Forging Divinity by Andrew Rowe
Future Indefinite by Dave Duncan
Futuristic Tales of the Here and Now by Cory Doctrow
Ghostwater by Will Wight
Gideon the Ninth by Tansyn Muir
House of Blades by Will Wight
House of Earth and Blood by Sarah Maas
Ithenalin’s Restoration by Lawrence Watt-Evans
Lament by Maggie Stiefvater
Legacy of the Fallen by Luke Chmilenko p1-316
Lone Wolf / Kai adventure series 1-5, magnakai 1, by Joe Dever
Magic for Liars by Sarah Gailey
Magician by Raymond Feist
Magicians by Lev Grossman
Making Money by Terry Pratchett
Mirror Gate by Jeff Wheeler
New York Fantastic by Paula Guran
Nexus by Ramez Naam
Night of Madness by Lawrence Watt-Evans
Ninth House by Leigh Bardogo
Od Magic by Patricia McKillip p1-222
One Word Kill by Mark Lawrence
On the Shoulders of Titans by Andrew Rowe
Past Imperative by Dave Duncan
Piranesi by Susanna Clarke
Present Tense by Dave Duncan
Prince of Thorns by Mark Lawrence
Priory of the Orange Tree by Samantha Shannon, p1-534?
Rage of Dragons by Evan Winter (some)
Relics of War by Lawrence Watt-Evans
Starfish (Rifters 1) by Peter Watts
Shades of Milk and Honey by Mary Robinette Kowal (all)
Shift (Silo 6-8) by Hugh Howey
Shining Path by Matthew Skala
Shouldn’t You Be In School? by Lemony Snicket
Sister Sable, by T Mountebank, p1-378
Skysworn by Will Wight
Skyward by Brandon Sanderson
Snowspelled by Stephanie Burges
Spellmonger by Terry Mancour, p1-165
Starfish by Peter Watts
Stone Unturned by Lawrence Watt-Evans
Storm Glass by Jeff Wheeler
Sufficiently Advanced Magic by Andrew Rowe
The Alien’s Lover by Zoey Draven
The Archived by Victoria Schwab
The Atrocity Archive by Charles Stross
The Blood of a Dragon by Lawrence Watt-Evans
The Burning White (Lightbringer 5) by Brent Weeks
The Collapsing Empire by John Scalzi
The Diamond Age by Neal Stephenson
The Fractured World by David Aries
The Goblin Emperor by Katherine Addison
The Library at Mount Char by Scott Hawkins
The Magic Goes Away by Larry Niven
The Maker of Universes by Philip Jose Farmer
The Misenchanted Sword by Lawrence Watt-Evans
The Mysterious Study of Doctor Sex by Tamsyn Muir
The Necromancer’s House by Christopher Buehlman
The Queen’s Poisoner by Jeff Wheeler
The Rook by Daniel O’Malley
The Sorcerer’s Widow by Lawrence Watt-Evans
The Spell of the Black Dagger by Lawrence Watt-Evans
The Spriggan Mirror by Lawrence Watt-Evans
The Unwilling Warlord by Lawrence Watt-Evans
The Vondish Ambassador by Lawrence Watt-Evans
The Warrior Heir by Cinda Williams Chima, p1-116
The Wiz Biz by Rick Cook
The Woven Ring by MD Presley, p1-28
Three-Body Problem by Cixin Liu
Three Men in a Boat by Jerome K. Jerome
Twig by wildbow (arc 1-18)
Uncrowned by Will Wight
Underlord by Will Wight
Unsong by Scott Alexander
Unsouled by Will Wight
When Did You See Her Last? by Lemony Snicket
Wintersteel by Will Wight
With a Single Spell by Lawrence Watt-Evans
Wool by Hugh Howey (v1-5)

Nonfiction (mostly I read web nonfiction):

507 Mechanical Movements by Henry T Brown
Advanced Magick for Beginners by Alan Chapman
Broadcast Channels with Confidential Messages
Busy Beaver Frontier by Scott Aaronson. I did some work based on it.
Computational Geometry by Mark de Berg
Craeft by Alexander Langlands
D&D 5e Player’s Handbook
D&D 5e Dungeon Master’s Guide
Forrest Mem’s Notebook
Forrest Mim’s Engineer’s Notebook
Forrest Mim’s Mini Notebook
Intel’s x86-64 manual
Introduction to Analysis by Maxwell Rosenlicht
Kademelia by Peter Maymounkov
kleiman v wright australian tax document
Incremental String Searching by Bertrand Meyer (KNP algorithm)
Rules to One Night Ultimate Werewolf
The Art of Computer Programming, v1, v3 by Donald Knuth (parts)
The Pragmatic Programmer
The Rust Programming Language
There’s Plenty of Room at the Bottom by Richard Feynman
Total Money Makeover by Dave Ramsey
W65025 manual (6502 clone)

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/2020-review.html b/posts/2020-review.html index 79096b5..18eecde 100644 --- a/posts/2020-review.html +++ b/posts/2020-review.html @@ -14,17 +14,10 @@ wordpress_id: 570 wordpress_slug: 2020-review --- -
-

2020 Review

-

What happened in 2020? Well,

  • (General news) COVID-19 of course, and Trump left office
  • I stayed inside. I’ve been getting groceries delivered, even–I’ve been somewhere other than my house maybe twice since COVID-19 lockdown started.
  • I started watching wayyy more videos, especially video game streams.
  • I looked into buying land in Colorado and living in an RV
  • I transcribed my log books, and started coverting them all to a standard, computer-parsable format (mostly done, one left).
  • I deleted bs.
  • I figured out twitch streaming, both with a standalone capture card and on linux.
  • I got hardware random number generators to work.
  • I designed v1 and v2 of a protocol to allow a set of computers to store a large amount of content. It’s designed to back up things like the Internet Archive. I’m calling the project “valhalla”, after ArchiveTeams’s project valhalla and IA.BAK.
  • I learned to use an oscilloscope, and bit-banged SPI and I2C for a while, trying to get a 9-axis sensor to work unsuccessfully.
  • I learned how to make a pretty good pizza
  • I played a bunch of video games
  • I worked on the Lazy Beaver problem, and tied the state of the art.
  • I made a master TODO list, and finished every single TODO I had that took an hour or less.
  • I figured out how to make VMs in Linux and run them all the time
  • I got a tablet, and learned GIMP and InkScape well enough to draw some stuff.
  • I wrote a custom client for omegle
  • I did a yearly backup
  • I did various research. I learned about algorithms, data structures, RALA, and quantum physics.
  • I wrote up my cookbook and released it.
  • I wrote some blog posts 🙂
  • Four of my friends moved to Ohio, two from nearby me. I only know one person in the state I’m in well at this point.
  • A friend of mine got out of jail and got to go home.

-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/2020-videogames.html b/posts/2020-videogames.html index 78421fd..b615ced 100644 --- a/posts/2020-videogames.html +++ b/posts/2020-videogames.html @@ -17,10 +17,6 @@ wordpress_id: 553 wordpress_slug: 2020-videogames --- -
-

2020 Videogames

-

In 2020 I’m newly retired, so I’ve had free time. I think it’s fun to do reviews, so without further ado here’s every video game I played in 2020!

I recommend:

@@ -28,9 +24,6 @@ wordpress_slug: 2020-videogames

The Rest

  • (3/5) 5D Chess with Multiverse Time Travel. More fun that it sounds. If you play to mess around and win by accident, it’s pretty good. Definitely play with a second human player, though.
  • (1.5/5) 7 billion humans. Better than the original, still not fun. Soulless game about a soulless, beige corporation. Just play Zachtronics instead. If you’re on a phone and want to engage your brain, play Euclidea.
  • (3/5) A Dark Room. Idle game.
  • (1/5) Amazing Cultivation Simulator. A big disappointment. Bad english voice acting which can’t be turned off, and a long, unskippable tutorial. I didn’t get to actual gameplay. I like Rimworld and cultivation novels so I had high hopes.
  • (3/5) ADOM (Steam version) – Fun like the original, which I would give 5/5. Developed some major issues on Linux, but I appreciate that there’s a graphical version available, one of my friends will play it now.
  • (4/5) agar.io – Good, but used to be better. Too difficult to get into games now. Very fun and addictive gameplay.
  • (3/5) Amorous – Furry dating sim. All of the hot characters are background art you can’t interact with, and the characters you can actually talk to are a bunch of sulky nerds who for some reason came to a nightclub. I think it was free, though.
  • (0/5) Apis. Alpha game, AFAIK I was the first player. Pretty much no fun right now (to the point of not really being a game yet), but it could potentially become fun if the author puts in work.
  • (4/5) Autonauts. I played a ton of Autonauts this year, almost finished it, which is rare for me. My main complaint is that it’s fundamentally supposed to be a game about programming robots, but I can’t actually make them do more than about 3 things, even as a professional programmer. Add more programming! It can be optional, that’s fine. They’re adding some kind of tower defense waves instead, which is bullshit. Not recommended because it’s not for everyone.
  • (3/5) A-Z Inc. Points for having the guts to have a simple game. At first this looked like just the bones of Swarm Simulator, but the more you look at the UI and the ascension system, the worse it actually is. I would regularly reset because I found out an ascension “perk” actually made me worse off.
  • (5/5) Beat Saber. Great game, and my favorite way to stay in shape early this year. Oculus VR only, if you have VR you already have this game so no need to recommend. Not QUITE worth getting a VR set just to play it at current prices.
  • (1/5) Big Tall Small. Good idea, but no fun to play. Needed better controls and level design, maybe some art.
  • (0.5/5) Blush Blush. Boring.
  • (3/5) Business Shark. I had too much fun with this simple game. All you do is just eat a bunch of office workers.
  • (3/5) chess.com. Turns out I like chess while I’m high?
  • (3/5) Circle Empires Rivals. Decent, more fun than the singleplayer original. It shouldn’t really have been a separate game from Circle Empires, and I’m annoyed I couldn’t get it DRM-free like the original.
  • (3/5) Cross Virus. By Dan-box. Really interesting puzzle mechanics.
  • (4/5) Cultist Simulator. Really fun to learn how to play–I love games that drop you in with no explanation. Great art and writing, I wish I could have gotten their tarot deck. Probably the best gameplay “ambience” I’ve seen–getting a card that’s labeled “fleeting sense of radiance” that disappears in 5 seconds? Great. Also the core stats are very well thought out for “feel” and real-life accuracy–dread (depression) conquers fascination (mania), etc. It has a few gameplay gotchas, but they’re not too big–layout issues, inability to go back to skipped text, or to put your game in an unwinnable state early on). Unfortunately it’s a “roguelike”, and it’s much too slow-paced and doesn’t have enough replay value, so it becomes a horrible, un-fun grind when you want to actually win. I probably missed the 100% ending but I won’t be going back to get it. I have no idea who would want to play this repeatedly. I’m looking forward to the next game from the same studio though! I recommend playing a friend’s copy instead of buying.
  • (2/5) Darkest Dungeon. It was fine but I don’t really remember it.
  • (2/5) Dicey Dungeons. Okay deck-building roguelike gameplay (with an inventory instead of a deck). Really frustrating, unskippably slow difficulty curve at the start. I played it some more this year and liked it better because I had a savegame. I appreciate having several character classes, but they should unlock every difficulty from the start.
  • (2/5) Diner Bros. Basically just a worse Overcooked. I didn’t like the controls, and it felt too repetitive with only one diner.
  • (2/5) Don’t Eat My Mind You Stupid Monster. Okay art and idea, the gameplay wasn’t too fun for me.
  • (2/5) Don’t Starve – I’ve played Don’t Stave maybe 8 different times, and it’s never really gripped me, I always put it back down. It’s slow, a bit grindy, and there’s no bigger goal–all you can do is live.
  • (3/5) Don’t Starve Together – Confusingly, Don’t Starve Together can be played alone. It’s Don’t Starve, plus a couple of the expansions. This really could be much more clearly explained.
  • (1/5) Elemental Abyss – A deck-builder, but this time it’s grid-based tactics. Really not all that fun. Just play Into the Abyss instead or something.
  • (1/5) Else Heart.Break() – I was excited that this might be a version of “Hack N’ Slash” from doublefine that actually delivered and let you goof around with the world. I gave it up in the first ten minutes, because the writing and characters drove me crazy, without getting to hacking the world.
  • (2/5) Everything is Garbage. Pretty good for a game jam game. Not a bad use of 10 minutes. I do think it’s probably possible to make the game unwinnable, and the ending is just nothing.
  • (1/5) Evolve. Idle game, not all that fun. I take issue with the mechanic in Sharks, Kittens, and this where buying your 15th fence takes 10^15 wood for some reason.
  • (4/5) Exapunks. Zachtronics has really been killing it lately, with Exapunks and Opus Magnum. WONDERFUL art and characters during story portions, and much better writing. The gameplay is a little more varied than in TIS-100 or the little I played of ShenZen I/O. My main complaint about Zachtronics games continues to be, that I don’t want to be given a series of resource-limited puzzles (do X, but without using more than 10 programming instructions). Exapunks is the first game where it becomes harder to do something /at all/, rather than with a particular amount of resources, but it’s still not there for me. Like ShenZen, they really go for a variety of hardware, too. Can’t recommend this because it’s really only for programmers.
  • (1/5) Exception. Programming game written by some money machine mobile games company. Awful.
  • (4/5) Factorio. Factorio’s great, but for me it doesn’t have that much replay value, even with mods. I do like their recent updates, which included adding blueprints from the start of the game, improving belt sorting, and adding a research queue. We changed movement speed, made things visually always day, and adding a small number of personal construction robots from the start this run. I’m sure if you’d like factorio you’ve played it already.
  • (3/5) Fall Guys – I got this because it was decently fun to watch. Unfortunately, it’s slightly less fun to play. Overall, there’s WAY too much matchmaking waiting considering the number of players, and the skill ceiling is very low on most of the games, some of which are essentially luck (I’m looking at you, team games).
  • (3/5) Forager – Decent game. A little too much guesswork in picking upgrades–was probably a bit more fun on my second play because of that. Overall, nice graphics and a cute map, but the gameplay could use a bit of work.
  • (3/5) Getting Over It – Funny idea, executed well. Pretty sure my friends and I have only gotten through 10% of the game, and all hit about the same wall (the first tunnel)
  • (3/5) Guild of Dungeoneering – Pretty decent gameplay. I feel like it’s a bit too hard for me, but that’s fine. Overall I think it could use a little more cute/fun art, I never quite felt that motivated.
  • (1/5) Hardspace: Shipbreakers. Okay, I seriously didn’t get to play this one, but I had GAMEBREAKING issues with my controller, which is a microsoft X-box controller for PC–THE development controller.
  • (2/5) Helltaker. All right art, meh gameplay. But eh, it’s free!
  • (3/5) Hot Lava. Decent gameplay. Somehow felt like the place that made this had sucked the souls out of all the devs first–no one cared about the story or characters. It’s a game where the floor is made out of lava, with a saturday morning cartoon open, so that was a really an issue. Admirable lack of bugs, though. I’m a completionist so I played the first world a lot to get all the medals, and didn’t try the later ones.
  • (3/5) House Flipper – Weird, but I had fun. I wish the gameplay was a little more unified–it felt like a bunch of glued-together minigames.
  • (2/5) Hydroneer. Utterly uninspiring. I couldn’t care about making progress at all, looked like a terrible grind to no benefit.
  • (1/5) io. Tiny game, I got it on Steam, also available on phone. Basically a free web flash game, but for money. Not good enough to pay the $1 I paid. Just a bit of a time-killer.
  • (3/5) Islanders – All you do is place buildings and get points. Not particularly challenging, but relaxing. Overall I liked it.
  • (3/5) Jackbox – I played this online with a streamer. Jackbox has always felt a little bit soulless money grab to me, but it’s still all right. I like that I can play without having a copy–we need more games using this purchase model.
  • (3/5) Life is Feudal – Soul-crushingly depressing and grindy, which I knew going in. I thought it was… okay, but I really want an offline play mode (Yes, I know there’s an unsupported single-player game, but it’s buggier and costs money). UI was pretty buggy, and I think hunting might literally be impossible.
  • (2/5) Minecraft – Antimatter Chemistry. Not particularly fun.
  • (3/5) Minecraft – ComputerCraft. I played a pack with just ComputerCraft and really nothing else. Was a little slow, would have been more fun with more of an audience. I love the ComputerCraft mod, I just didn’t have a great experience playing my pack I made.
  • (3/5) Minecraft – Foolcraft 3. Fun, a bit buggy. Honestly I can’t remember it too well.
  • (1/5) Minecraft – Manufactio. Looked potentially fun, but huge bugs and performance issues, couldn’t play.
  • (4/5) Minecraft – Tekkit. Tekkit remains one of my favorite Minecraft modpacks.
  • (3/5) Minecraft – Valhelsia 2. I remember this being fun, but I can’t remember details as much as I’d like. I think it was mostly based around being the latest version of minecraft?
  • (4/5) Minecraft – Volcano Block. Interesting, designed around some weird mods I hadn’t used. I could have used more storage management or bulk dirt/blocks early in the game–felt quite cramped. Probably got a third of the way through the pack. I got novelty value out of it, but I wouldn’t have enjoyed it if I had ever used the plant mod before–it’s a very fixed, linear progression.
  • (5/5) Minit. This is a weird, small game. I actually had a lot of fun with it. Then I 100% completed it, which was less fun but I still had a good time overall.
  • (3/5) Monster Box. By Dan-box. One of two Dan-box games I played a lot of. Just visually appealing, the gameplay isn’t amazing. Also, Dan-box does some great programming–this is a game written in 1990 or so, and it can render hundreds of arrows in the air smoothly in a background tab.
  • (3/5) Monster Train. A relatively fun deckbuilding card game. It can’t run well on my computer, which is UNACCEPTABLE–this is a card game with 2D graphics. My MICROWAVE should run this shit in 2020. Ignoring that, the gameplay style (summon monsters, MTG style) just isn’t my cup of tea.
  • (2/5) Moonlighter. Felt like it was missing some inspiration, just didn’t have a sense of “fun”. The art was nice. The credits list is surprisingly long.
  • (2/5) Muse Dash. All right, a basic rhythm game. Not enough variety to the game play, and everything was based around perfect or near-perfect gameplay, which makes things less fun for me.
  • (3/5) NES games – various. Dr Mario, Ice Climbers. Basically, I got some Chinese handheld “gameboy” that has all the NES games preloaded on it. Overall it was a great purchase.
  • (2/5) Noita. “The Powder Game” by Dan-Box, as a procedurally generated platformer with guns. Lets you design your own battle spells. Despite the description, you really still can’t screw around as much as I’d like. I also had major performance issues
  • (3/5) Observation. I haven’t played this one as much as I’d like, I feel like it may get better. Storytelling, 3D game from the point of view of the AI computer on a space station. I think I might have read a book it’s based on, unfortunately.
  • (2/5) One Step From Eden. This is a deck-building combat tactics game. I thought it was turn-based, but it’s actually realtime. I think if it was turn-based I would have liked it. The characters were a bit uninspired.
  • (1/5) Orbt XL. Very dull. I paid $0.50 for it, it was worth that.
  • (4/5) Opus Magnum. Another great game from Zachtronics, along with Exapunks they’re really ramping up. This is the third execution of the same basic concept. I’d like to see Zachtronics treading new ground more as far as gameplay–that said, it is much improved compared to the first two iterations. The art, writing, and story were stellar on the other hand.
  • (3/5) Out of Space. Fun idea, you clean a spaceship. It’s never that challenging, and it has mechanics such that it gets easier the more you clean, rather than harder. Good but not enough replay value. Fun with friends the first few times. The controls are a little wonky.
  • (1/5) Outpost (tower defense game). I hate all tower defense.
  • (3/5) Overcooked. Overcooked is a ton of fun.
  • (4/5) Powder Game – Dan-box. I played this in reaction to not liking Noita. It’s fairly old at this point. Just a fun little toy.
  • (1/5) Prime Mover – Very cool art, the gameplay put me to sleep immediately. A “circuit builder” game but somehow missing any challenge or consistency.
  • (2/5) Quest for Glory I. Older, from 1989. Didn’t really play this much, I couldn’t get into the writing, and the pseudo-photography art was a little jarring.
  • (4/5) Raft. I played this in beta for free on itch.io, and had a lot of fun. Not enough changed that it was really worth a replay, but it has improved, and I got to play with a second player. Not a hard game, which I think was a good thing. The late game they’ve expanded, but it doesn’t really add much. The original was fun and so was this.
  • (3/5) Satisfactory. I honestly don’t know how I like this one–I didn’t get too far into it.
  • (4/5) Scrap Mechanic. I got this on a recommendation from a player who played in creative. I only tried the survival mode–that mode is not well designed, and their focuses for survival are totally wrong. I like the core game, you can actually build stuff. If I play again, I’ll try the creative mode, I think.
  • (3.5/5) Shapez.io. A weird, abstracted simplification of Factorio. If I hadn’t played factorio and half a dozen copies, I imagine this would have been fun, but it’s just more of the same. Too much waiting–blueprints are too far into the game, too.
  • (2.5/5) Simmiland. Okay, but short. Used cards for no reason. For a paid game, I wanted more gameplay out of it?
  • (0.5/5) Snakeybus. The most disappointing game I remember this year. Someone made “Snake” in 3D. There are a million game modes and worlds to play in. I didn’t find anything I tried much fun.
  • (1/5) Soda Dungeon. A “mobile” (read: not fun) style idle game. Patterned after money-grab games, although I don’t remember if paid progress was actually an option. I think so.
  • (4/5) Spelunky. The only procedurally generated platformer I’ve ever seen work. Genuinely very fun.
  • (4/5) Spelunky 2. Fun, more of an upgrade of new content than a new game. Better multiplayer. My computer can’t run later levels at full speed.
  • (1/5) Stick Ranger 2. Dan-box. Not much fun.
  • (3/5) Superliminal. Fun game. A bit short for the pricetag.
  • (3/5) Tabletop Simulator – Aether’s End: Legacy. Interesting, a “campaign” (series of challenge bosses and pre-written encounters) deckbuilding RPG. I like the whole “campaign RPG boardgame” idea. This would have worked better with paper, there were some rough edges in both the game instructions and the port to Tabletop Simulator.
  • (4/5) Tabletop Simulator – The Captain is Dead. Very fun. I’d love to play with more than 2 people. Tabletop simulator was so-so for this one.
  • (2/5) Tabletop Simulator – Tiny Epic Mechs. You give your mech a list of instructions, and it does them in order. Arena fight. Fun, but I think I could whip up something at least as good.
  • (3/5) The Council. One of the only 3D games I finished. It’s a story game, where you investigate what’s going on and make various choices. It’s set in revolutionary france, at the Secret World Council that determines the fate of the world. It had a weak ending, with less choice elements than the rest of the game so far, which was a weird decision. Also, it has an EXCRUTIATINGLY bad opening scene, which was also weird. The middle 95% of the game I enjoyed, although the ending went on a little long. The level of background knowledge expected of the player swung wildly–they seemed to expect me to know who revolutionary French generals were with no explanation, but not Daedalus and the Minotaur. The acting was generally enjoyable–there’s a lot of lying going on in the game and it’s conveyed well. The pricetag is too high to recommend.
  • (0/5) The Grandma’s Recipe (Unus Annus). This game is unplayably bad–it’s just a random pixel hunt. Maybe it would be fun if you had watched the video it’s based on.
  • (3/5) The Room. Pretty fun! I think this is really designed for a touchscreen, but I managed to play it on my PC. Played it stoned, which I think helps with popular puzzle games–it has nice visuals but it’s a little too easy.
  • (3/5) This Call May Be Recorded. Goofy experimental game.
  • (4/5) TIS-100. Zachtronics. A programming game. I finally got done with the first set of puzzles and into the second this year. I had fun, definitely not for everyone.
  • (3/5) Trine. I played this 2-player. I think the difficulty was much better 2-player, but it doesn’t manage 2 players getting separated well. Sadly we skipped the story, which seemed like simple nice low-fantasy. Could have used goofier puzzles, it took itself a little too seriously and the levels were a bit same-y.
  • (2/5) Unrailed. Co-op railroad building game. It was okay but there wasn’t base-building. Overall not my thing. I’d say I would prefer something like Overcooked if it’s going to be timed? Graphics reminded me of autonauts.
  • (2/5) Vampire Night Shift. Art game. Gameplay could have used a bit of polish. Short but interesting.
  • (4/5) Wayward. To date, the best survival crafting system I’ve seen. You can use any pointy object and stick-like object, together with glue or twine, to make an arrow. The UI is not great, and there’s a very counter-intuitive difficulty system. You need to do a little too much tutorial reading, and it could use more goals. Overall very fun. Under constant development, so how it plays a given week is a crapshoot. The steam version finally works for me (last time I played it was worse than the free online alpha, now it’s the same or better). I recomend playing the free online version unless you want to support the author.
  • (1/5) We Need to Go Deeper. Multiplayer exploration game in a sub, with sidescrolling battle. Somehow incredibly unfun, together with high pricetag. Aesthetics reminded me of Don’t Starve somehow.
  • (2/5) We Were Here. Okay 2-player puzzle game. Crashed frequently, and there were some “huh” puzzles and UI. Free.
  • (3/5) Yes, your grace. Gorgeous pixel art graphics. The story is supposed to be very player-dependent, but I started getting the feeling that it wasn’t. I didn’t quite finish the game but I think I was well past halfway. Hard to resume after a save, you forget things. I got the feeling I wouldn’t replay it, which is a shame because it’s fun to see how things go differently in a second play with something like this.

These are not all new to me, and very few came out in 2020. I removed any games I don’t remember and couldn’t google (a fair number, I play a lot of game jam games) as well as any with pornographic content.

-
-
-Tagged , , , , . Bookmark the permalink.
-
+ diff --git a/posts/2021-books.html b/posts/2021-books.html index 48b6c90..6a2a8ce 100644 --- a/posts/2021-books.html +++ b/posts/2021-books.html @@ -16,18 +16,11 @@ wordpress_id: 723 wordpress_slug: 2021-books --- -
-

2021 books

-

Here’s a list of books I read in 2021. The ones in bold I recommend.

Fiction:

Enigma by Graeme Base
City of Stairs by Robert Jackson Bennett
Look to Windward (Culture 7) by Ian Banks
Surface Detail (Culture 8) by Ian M Banks
Pump Six by Paolo Bacigalupi
Six of Crows by Leigh Bardugo
Lexicon by Max Barry
Mage Errant 1 by John Bierce
Mage Errant 2 by John Bierce
Mage Errant 3 by John Bierce
Mage Errant 4 by John Bierce
Mage Errant 5 by John Bierce
The Atlas Six by Olivie Blake
Lilith’s Brood (Xenogenesis 1) by Octavia E Butler
Elegy Beach (Change 2) by Steven Boyett
Curse of Charion by Louis Bujold
Xenocide by Orson Scott Card
Bohemian Gospel by Dan Carpenter
Convergence (Foreigner 18) by C J Cherryh
Emergence (Foreigner 19) by C J Cherryh
Convergence (Foreigner 21) by C J Cherryh
Iron Prince by Bryce O’Conner and Luke Chmilenko
Murder on the Orient Express by Agatha Christie
The Alchemist by Paulo Coelho
Artemis Fowl (Artemis Fowl 1) by Eoin Colfer
The Arctic Incident (Artemis Fowl 2) by Eoin Colfer
Eternity Code (Artemis Fowl 3) by Eoin Colfer
Opal Deception (Artemis Fowl 4) by Eoin Colfer
Space Between Worlds by J Conrad and Micaiah Johnson
Little Brother by Cory Doctrow
Homeland (Little Brother 2) by Cory Doctrow
Children of Chaos by Dave Duncan
The Alchemist’s Apprentice by Dave Duncan
The Alchemist’s Code by Dave Duncan
The Alchemist’s Pursuit by Dave Duncan
The Cutting Edge by Dave Duncan
Upland Outlaws by Dave Duncan
The Stricken Field by Dave Duncan
Queen of Blood by Sarah Beth Durst
Vita Nostra by Maryna and Serhiy Dyachenko
How Rory Thorne Destroyed the Multiverse by K. Eason
Malazan (Malazan 1) by Steven Erikson
Daughter of the Empire by Raymond Feist and Janny Wurts
Mistress of the Empire by Raymond Feist and Janny Wurts
Servant of the Empire by Raymond Feist and Janny Wurts
Dragon’s Egg (Cheela 1) by Robert L Forward
Mother of Learning by Domagoj Kurmaic/nobody103
Books of Magic by Neil Gaiman
The Midnight Library by Matt Haig
The Warehouse by Rob Hart
Forging Hephestus by Drew Hayes
Super Powereds, v1 by Drew Hayes
Super Powereds, v2 by Drew Hayes
Super Powereds, v3 by Drew Hayes
Super Powereds, v4 by Drew Hayes
Johannes Cabal by Johnathan L. Howard
The Medusa Plague by Mary Kirchoff
Six Wakes by Muir Lafferty
King of Thorns by Mark Lawrence
Emperor of Thorns by Mark Lawrence
First Contacts by Murray Leinster
Futurological Congress by Stanislaw Lem
Perfect Vacuum by Stanislaw Lem
Tuf Voyaging by George R R Martin
Memory of Empire by Arkady Martine
A Desolation Called Peace by Arkady Martine
Middlegame by Seanan McGuire
The Host by Stephanie Meyers
The city & the city by China Mieville
*The House that Made the 16 Loops of time by Tamsyn Muir
Harrow the Ninth by Tamsyn Muir
Convenience Store Woman by Sayaka Murata
A Deadly Education by Naomi Novik
The Last Graduate (Schoolomance 2) by Naomi Novik
Stiletto (Chequey, book 2) by Daniel O’Malley
Special Topics in Calamity Physics by Marisha Pessl
Carpe Jugulum by Terry Pratchett
Guards! Guards! by Terry Pratchett
Jingo by Terry Pratchett
The Last Continent by Terry Pratchett
Monsterous Regiment by Terry Pratchett
Men at Arms by Terry Pratchett
Night Watch by Terry Pratchett
Snuff by Terry Pratchett
Sourcery by Terry Pratchett
The Truth by Terry Pratchett
The Woven Ring (Sol’s Harvest 1) by M D Presley
Years of Rice + Salt by Kim Stanley Robinson
The Torch That Ignites the Stars by Andrew Rowe
Sleep Donation by Karen Russell
A Darker Shade of Magic by V E Schwab
Invisible Life of Addie LaRue by V E Schwab
Vicious by V E Schwab
Vengeance by V E Schwab
Grasshopper Jungle by Andrew Smith
Why Is This Night Different Than All Other Nights? by Lemony Snicket
Dark Storm (Rhenwars 1) by M L Spenser
Anathem by Neal Stephenson
Cryptonomicon by Neal Stephenson
Nimona by Noele Stevenson
Hunter x Hunter manga v1-36 by Yoshihiro Togashi
Worth the Candle by Alexander Wales
Educated by Tara Westover
Soulsmith (Cradle 2) by Will Wight
Blackflame (Cradle 3) by Will Wight
Skysworn (Cradle 4) by Will Wight
Ghostwater (Cradle 5) by Will Wight
Underlord (Cradle 6) by Will Wight
Uncrowned (Cradle 7) by Will Wight
Wintersteel (Cradle 8) by Will Wight
Bloodlines (Cradle 9) by Will Wight
Reaper (Cradle 10) by Will Wight
The Crimson Vault (Travelers Gate 2) by Will Wight
*Dinosaurs by Walter Jon Williams
Blind Lake by Robert Charles Wilson
Thousand Li by Tao Wong
Thousand Li 2 by Tao Wong
Thousand Li 3 by Tao Wong
Thousand Li 4 by Tao Wong
Thousand Li 5 by Tao Wong
Sorcerer’s Legacy by Janny Wurts (see also Feist)
Heretical Edge by ceruleuanscrawling
Mark of the Fool by UnstoppableJuggernaut
there is no antimemetics division by qntm
Only Villains Do That by Webbonomicon
Worm by wildbow

Nonfiction:

Compiling with Continuations by Andrew W. Appel
The Rule of Benedict by St Benedict (read the front material only)
Programming Pearls by Jon Bentley
Whole Brain Emulation Roadmap by Nick Bostrom
Data Matching by Peter Christen
Attack and Defense by James Davies and Akira Ishida
Engines of Creation by K. Eric Drexler
Class by Paul Fussell
The Food Lab by J Kenzi Lopez-Alt
Primitive Technology by John Plant
Monero whitepaper by Nicolas van Saberhagen
Secrets and Lies by Bruce Schneier
The Cuckoo’s Egg by Clifford Stoll

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/2022-books.html b/posts/2022-books.html index 56838b6..29c4766 100644 --- a/posts/2022-books.html +++ b/posts/2022-books.html @@ -16,10 +16,6 @@ wordpress_id: 971 wordpress_slug: 2022-books --- -
-

2022 books

-

Here’s a list of books I read in 2022. The ones in bold I recommend.

Fiction:

@@ -27,9 +23,6 @@ wordpress_slug: 2022-books

Nonfiction:

The Art of Computer Programming v1 by Donald Knuth
The Art of Computer Programming v2 by Donald Knuth
Attack and Defense by James Davies
Burning Wheel (RPG) by Luke Crane
The Economist (magazine)
Home Improvement 1-2-3
Illustrated Guide to Everything Sold in Hardware Stores (1988) by Steve Ettlinger
Inadequate Equilibria by Eliezer Yudkowsky
The Prince by Niccolo Machiavelli
Programming Crystal by Ivo Balbaert
Sigbovik 2021
Spymistress by William Stevenson
What If? by Randall Munroe
What If? 2 by Randall Munroe

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/2022-year-in-review.html b/posts/2022-year-in-review.html index 150e1d3..ea5bfbd 100644 --- a/posts/2022-year-in-review.html +++ b/posts/2022-year-in-review.html @@ -15,10 +15,6 @@ wordpress_id: 1013 wordpress_slug: 2022-year-in-review --- -
-

2022 Year in Review

-

Here’s what happened in 2022 for me!

Move

@@ -60,9 +56,6 @@ wordpress_slug: 2022-year-in-review

You can read most of what I wrote here! On a blog! Of particular interest might be my new index page.

I also wrote a short story, Earth II. It’s not online because it’s bad.

I had to remove library.za3k.com because of DMCAs.

-
-
-Tagged , , . Bookmark the permalink.
-
+ diff --git a/posts/2023-flash-media-longevity-testing-3-years-later.html b/posts/2023-flash-media-longevity-testing-3-years-later.html index c6fb4b5..7dce3b7 100644 --- a/posts/2023-flash-media-longevity-testing-3-years-later.html +++ b/posts/2023-flash-media-longevity-testing-3-years-later.html @@ -16,10 +16,6 @@ wordpress_id: 979 wordpress_slug: 2023-flash-media-longevity-testing-3-years-later --- -
-

2023 Flash media longevity testing (3 years later)

-
  • Year 0 – I filled 10 32-GB Kingston flash drives with random data.
  • @@ -33,9 +29,6 @@ wordpress_slug: 2023-flash-media-longevity-testing-3-years-later
  • FAQ
  • Reddit
-
-
-Tagged , , . Bookmark the permalink.
-
+ diff --git a/posts/3-more-games.html b/posts/3-more-games.html index bf0a013..f1f469e 100644 --- a/posts/3-more-games.html +++ b/posts/3-more-games.html @@ -14,19 +14,12 @@ wordpress_id: 560 wordpress_slug: 3-more-games --- -
-

3 more Games

-

I’ve added a central games page https://za3k.com/mygames.md to my website, with all the games I designed. The new games:

Loot Boxes. Untested. Easy storytelling game for 2-4 players. The players have an inventory of absurd random items, and must solve challenges using each item in turn.

Stupid Russia. Tested. Party game for 10+ people. Each player is a spy director at the Stupid KGB, and must report as many codenames to the Inspector as possible, swapping secret information with other players. The players had fun, especially adopting bad accents. The rules were too hard to understand, and it was too much work and no fun for me as the Inspector. Overall I’d just recommend Stupid Conspiracies instead.

Stupid Conspiracies. Untested. Party Game for 8+ people. Each player tries to recruit the others into their conspiracy, for about half an hour. It’s a re-write of the core idea in Stupid Russia. Overall, big party games are just too hard for me to organize.

I also playtested “No this cannot be! I AM INVINCIBLE!”. It ran about 45 minutes prep (not fun) and 45 minutes playtime, which was the main problem. Overall the play time was fun. I rewrote it to have MUCH easier prep, and for the game to be generally easier. I also re-wrote the rules of “Ninjas Ninjas Ninjas” without a playtest. I don’t think it will ever be too popular but it has a soft spot for me.

-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/3-new-games-deadly-education-rpg-logic-potions-emperical-zendo.html b/posts/3-new-games-deadly-education-rpg-logic-potions-emperical-zendo.html index acc643c..5a9c12d 100644 --- a/posts/3-new-games-deadly-education-rpg-logic-potions-emperical-zendo.html +++ b/posts/3-new-games-deadly-education-rpg-logic-potions-emperical-zendo.html @@ -14,18 +14,11 @@ wordpress_id: 573 wordpress_slug: 3-new-games-deadly-education-rpg-logic-potions-emperical-zendo --- -
-

3 new games: Deadly Education RPG, Logic Potions, Emperical Zendo

-
  • Emperical Zendo, a semi-competitive game for 3-8 players based on the icehouse game Zendo. Vaguely based on rants by Bayesians.
  • Logic Potions, a competitive game about deductive logic and making new rules for 2-4 players. Actual gameplay quickly gets complicated as players add more rules about brewing potions. Inspired by “Imaginary Go Fish” and “Emperical Zendo”.
  • Deadly Education RPG, a traditional pen+paper RPG game based on Naomi Novik’s “Deadly Education”. Reading the book is not required.

All three are untested as of posting.

See also: List of all games

-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/30-days-of-learning-play-and-newness.html b/posts/30-days-of-learning-play-and-newness.html index 6d7efff..7891797 100644 --- a/posts/30-days-of-learning-play-and-newness.html +++ b/posts/30-days-of-learning-play-and-newness.html @@ -13,10 +13,6 @@ wordpress_id: 1294 wordpress_slug: 30-days-of-learning-play-and-newness --- -
-

30 days of learning, play, and newness

-

So I’ve decided on my next project! I’m going to spend a month learning new things. Unlike hack-a-day, where the focus was mostly on doing something every day, here I’m trying to cultivate a different attitude. So the following are all encouraged:

    @@ -36,9 +32,6 @@ wordpress_slug: 30-days-of-learning-play-and-newness
  • TV and other mindless activities
  • (tentatively) reading?
-
-
-Tagged . Bookmark the permalink.
-
+ diff --git a/posts/a-mystery-in-the-text-editor.html b/posts/a-mystery-in-the-text-editor.html index ed538a1..ce42d91 100644 --- a/posts/a-mystery-in-the-text-editor.html +++ b/posts/a-mystery-in-the-text-editor.html @@ -14,10 +14,6 @@ wordpress_id: 1351 wordpress_slug: a-mystery-in-the-text-editor --- -
-

A mystery in the text editor

-

Hello, Linux terminal users! Let me present you a simple feature you’ve all seen, but might not have noticed.

@@ -150,9 +146,6 @@ sleep 1 echo -ne '\x1b[?1049l' # Restore terminal

Yep. That works fine.

ANSI: https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
DEC: https://vt100.net/emu/ctrlseq_dec.html
DEC: https://vt100.net/docs/vt220-rm/chapter4.html#S4.6.18
xterm’s control sequences: https://www.xfree86.org/current/ctlseqs.html

-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/a-pixel-art.html b/posts/a-pixel-art.html index 0a692a0..3539ec4 100644 --- a/posts/a-pixel-art.html +++ b/posts/a-pixel-art.html @@ -16,17 +16,10 @@ wordpress_id: 101 wordpress_slug: a-pixel-art --- -
-

A pixel art

-

 

A ninja turtle

 

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/all-the-recipes.html b/posts/all-the-recipes.html index 931fabf..ace07a2 100644 --- a/posts/all-the-recipes.html +++ b/posts/all-the-recipes.html @@ -16,16 +16,9 @@ wordpress_id: 424 wordpress_slug: all-the-recipes --- -
-

All the recipes

-

I’ve crawled the largest english-language recipes sites, and parsed the results into JSON. Go do fun things with a database of 140,000 recipes!

Not much to say here, just a link: https://archive.org/details/recipes-en-201706

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/amazon-aws.html b/posts/amazon-aws.html index 862432c..354ff21 100644 --- a/posts/amazon-aws.html +++ b/posts/amazon-aws.html @@ -14,16 +14,9 @@ wordpress_id: 7 wordpress_slug: amazon-aws --- -
-

Amazon AWS

-

I was originally planning to write a rosetta-stone style guide for similar commands between digital ocean, google compute, and AWS. Instead, I spent all day writing this CLI tool for EC2 which wraps the enormous and unintuitive AWS command-line tool. It’s not totally polished, namely you’ll have to hand-substitute some stuff at the top of the script that should properly go in a config file, but hopefully someone will find it useful.

As a warning it terminates, not just stops, all amazon instances when asked.

-
-
-Tagged , . Bookmark the permalink.
-
+ diff --git a/posts/android-backup-on-arch-linux.html b/posts/android-backup-on-arch-linux.html index 67a2b67..2c2cb09 100644 --- a/posts/android-backup-on-arch-linux.html +++ b/posts/android-backup-on-arch-linux.html @@ -17,10 +17,6 @@ wordpress_id: 63 wordpress_slug: android-backup-on-arch-linux --- -
-

Android backup on arch linux

-

Edit: See here for an automatic version of the backup portion.

Connecting android to Windows and Mac, pretty easy. On arch linux? Major pain. Here’s what I did, mostly via the help of the arch wiki:

@@ -36,10 +32,7 @@ wordpress_slug: android-backup-on-arch-linux -
-
-Tagged , , , , . Bookmark the permalink.
-
+
    diff --git a/posts/april-fools-puzzle-contest-solutions.html b/posts/april-fools-puzzle-contest-solutions.html index be8d334..506d59b 100644 --- a/posts/april-fools-puzzle-contest-solutions.html +++ b/posts/april-fools-puzzle-contest-solutions.html @@ -14,17 +14,10 @@ wordpress_id: 1011 wordpress_slug: april-fools-puzzle-contest-solutions --- - + diff --git a/posts/april-fools-puzzle-contest.html b/posts/april-fools-puzzle-contest.html index 2cc5bc0..03077ef 100644 --- a/posts/april-fools-puzzle-contest.html +++ b/posts/april-fools-puzzle-contest.html @@ -14,19 +14,12 @@ wordpress_id: 1005 wordpress_slug: april-fools-puzzle-contest --- -
    -

    April Fools Puzzle Contest

    -

    See https://blog.ircpuzzles.org/2023/04/2023-april-fools-live/ for how to play.

    Every year, the libera IRC network has a puzzle contest starting on 04-01. (It’s not an april fools joke). It’s fun but quite difficult.

    This year I wrote about a third of the puzzles. Give them a try, either alone or as a team! It will be open indefinitely, but social activity will die off in a week or two.

    As of writing, no one has won (finished all the puzzles) just yet.

    -
    -
    -Tagged , . Bookmark the permalink.
    -
    + diff --git a/posts/archiving-all-bash-commands-typed.html b/posts/archiving-all-bash-commands-typed.html index 8fb39e2..23eade5 100644 --- a/posts/archiving-all-bash-commands-typed.html +++ b/posts/archiving-all-bash-commands-typed.html @@ -16,10 +16,6 @@ wordpress_id: 391 wordpress_slug: archiving-all-bash-commands-typed --- -
    -

    Archiving all bash commands typed

    -

    This one’s a quickie. Just a second of my config to record all bash commands to a file (.bash_eternal_history) forever. The default bash HISTFILESIZE is 500. Setting it to a non-numeric value will make the history file grow forever (although not your actual history size, which is controlled by HISTSIZE).

    I do this in addition:

    @@ -36,9 +32,6 @@ export HISTTIMEFORMAT="%s " PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"'echo $$ $USER \ "$(history 1)" >> ~/.bash_eternal_history' -
    -
    -Tagged , , , . Bookmark the permalink.
    -
    + diff --git a/posts/archiving-all-web-traffic.html b/posts/archiving-all-web-traffic.html index b0a5cfa..de7563b 100644 --- a/posts/archiving-all-web-traffic.html +++ b/posts/archiving-all-web-traffic.html @@ -17,10 +17,6 @@ wordpress_id: 388 wordpress_slug: archiving-all-web-traffic --- -
    -

    Archiving all web traffic

    -

    Today I’m going to walk through a setup on how to archive all web (HTTP/S) traffic passing over your Linux desktop. The basic approach is going to be to install a proxy which records traffic. It will record the traffic to WARC files. You can’t proxy non-HTTP traffic (for example, chat or email) because we’re using an HTTP proxy approach.

    The end result is pretty slow for reasons I’m not totally sure of yet. It’s possible warcproxy isn’t streaming results.

    @@ -58,9 +54,6 @@ autorestart=unexpected
  1. Set up any browers, etc to use localhost:18000 as your proxy. You could also do some kind of global firewall config. Chromium in particular was pretty irritating on Arch Linux. It doesn’t respect $http_proxy, so you have to pass it separate options. This is also a good point to make sure anything you don’t want recorded BYPASSES the proxy (for example, maybe large things like youtube, etc).
- -
-Tagged , , , , . Bookmark the permalink.
- + diff --git a/posts/archiving-github.html b/posts/archiving-github.html index bd5078a..206a3ed 100644 --- a/posts/archiving-github.html +++ b/posts/archiving-github.html @@ -16,10 +16,6 @@ wordpress_id: 41 wordpress_slug: archiving-github --- -
-

Archiving github

-

GitHub-Backup is a small project to archive github repos to a local computer. It advertises that one reason to use it is

You are paranoid tinfoil-hat wearer who needs to back up everything in triplicate on a variety of outdated tape media.

@@ -37,9 +33,6 @@ git clone git@github.com:clockfort/GitHub-Backup.git

Then I just shoved everything into a cron task and we’re good to go.

@hourly GitHub-Backup/github-backup.py -m -t  vanceza /home/github/vanceza

Edit: There’s a similar project for bitbucket I haven’t tried out: https://bitbucket.org/fboender/bbcloner

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/archiving-gmail.html b/posts/archiving-gmail.html index 9147eab..5df8b0f 100644 --- a/posts/archiving-gmail.html +++ b/posts/archiving-gmail.html @@ -15,18 +15,11 @@ wordpress_id: 59 wordpress_slug: archiving-gmail --- -
-

Archiving gmail

-

I set up an automatic archiver for gmail, using the special-purpose tool gm-vault. It was fairly straightforward, no tutorial here. The daily sync:

@daily cd ~gmail && cronic gmvault sync -d "/home/gmail/vanceza@gmail.com" vanceza@gmail.com

I’m specifying a backup folder here (-d) so I can easily support multiple accounts, one per line.

Cronic is a tool designed to make cron’s default email behavior better, so I get emailed only on actual backup failures.

-
-
-Tagged , , . Bookmark the permalink.
-
+ diff --git a/posts/archiving-twitch.html b/posts/archiving-twitch.html index 2048f73..81eca08 100644 --- a/posts/archiving-twitch.html +++ b/posts/archiving-twitch.html @@ -16,10 +16,6 @@ wordpress_id: 327 wordpress_slug: archiving-twitch --- -
-

Archiving Twitch

-

Install jq and youtube-dl

Get a list of the last 100 URLs:

@@ -29,9 +25,6 @@ wordpress_slug: archiving-twitch
youtube-dl -a past_broadcasts.txt -o "%(upload_date)s.%(title)s.%(id)s.%(ext)s"

Did it. youtube-dl is smart enough to avoid re-downloading videos it already has, so as long as you run this often enough (I do daily), you should avoid losing videos before they’re deleted.

Thanks jrayhawk for the API info.

-
-
-Tagged , , , . Bookmark the permalink.
-
+ diff --git a/posts/archiving-twitter.html b/posts/archiving-twitter.html index 549fc61..bf60608 100644 --- a/posts/archiving-twitter.html +++ b/posts/archiving-twitter.html @@ -17,10 +17,6 @@ wordpress_id: 61 wordpress_slug: archiving-twitter --- -
-

Archiving twitter

-

(Output)

I wanted to archive twitter so that I could

@@ -37,9 +33,6 @@ done <accounts.txt

I ran into a bug with upstream incompatibilities which is easily fixed. Another caveat is that the twitter API only allows access 3200 tweets back in time for an account–all the more reason to set up archiving ASAP. Twitter’s rate-limiting is also extreme (15-180 req/15 min), and I’m worried about a problem where my naive script can’t make it through a list of more than 15 accounts even with no updates.

 

 

-
-
-Tagged , , , , . Bookmark the permalink.
-
+ diff --git a/posts/articles-section.html b/posts/articles-section.html index 00d7bd1..22305eb 100644 --- a/posts/articles-section.html +++ b/posts/articles-section.html @@ -15,16 +15,9 @@ wordpress_id: 743 wordpress_slug: articles-section --- -
-

Articles section

-

I added an articles section to my website with all blog posts up until now.

I also fixed the very, very old archived blog from 2014.

-
-
-Tagged , , . Bookmark the permalink.
-
+ diff --git a/posts/backup-android-on-plugin.html b/posts/backup-android-on-plugin.html index 1a9e0d5..deb6304 100644 --- a/posts/backup-android-on-plugin.html +++ b/posts/backup-android-on-plugin.html @@ -16,10 +16,6 @@ wordpress_id: 177 wordpress_slug: backup-android-on-plugin --- -
-

Backup android on plugin

-

In a previous post I discussed how to backup android with rsync. In this post, I’ll improve on that solution so it happens when you plug the phone in, rather than manually. My solution happens to know I have only one phone; you should adjust accordingly.

The process is

@@ -77,10 +73,7 @@ done fusermount -u /media/android

The contents of  /usr/local/bin/phone-backup are pretty me-specific so I’ll omit it, but it copies /media/android over to a server. (fun detail: MTP doesn’t show all information even on a rooted phone, so there’s more work to do)

-
-
-Tagged , , , . Bookmark the permalink.
-
+
    diff --git a/posts/banh-chung.html b/posts/banh-chung.html index 0b98bde..5d7fc67 100644 --- a/posts/banh-chung.html +++ b/posts/banh-chung.html @@ -14,10 +14,6 @@ wordpress_id: 1296 wordpress_slug: banh-chung --- -
    -

    Bánh Chưng

    -

    A few friends and I first experienced this traditional Vietnamese Tết (Lunar New Year) food while visiting years ago. We loved it, and recently I looked up how to make it myself. It’s not a well known food in the US, so I thought it would still be fun to share.

    I followed the recipe from “Enjoy a simple life“, but made a homemade cardboard mold as suggested by “Takes Two Eggs“.

    @@ -80,9 +76,6 @@ wordpress_slug: banh-chung
  1. https://enjoyasimplelife.blogspot.com/2012/01/vegetarian-sticky-rice-banh-chung-chay.html
  2. https://takestwoeggs.com/banh-chung/
- -
-Tagged , . Bookmark the permalink.
- + diff --git a/posts/blast-furance.html b/posts/blast-furance.html index c3d2ca0..0420dd3 100644 --- a/posts/blast-furance.html +++ b/posts/blast-furance.html @@ -17,10 +17,6 @@ wordpress_id: 430 wordpress_slug: blast-furance --- -
-

Blast Furance

-

We made a blast furnace, following David Gingery’s The Charcoal Foundry. Here are some pictures of the firing process. We haven’t melted or cast any metal yet.

Slow initial burn to drive out most of the water

@@ -28,9 +24,6 @@ wordpress_slug: blast-furance

You can tell we’re trained professionals by the fan setup

Blast furnace meat is best meat

Richard looking dubiously at the furnace

-
-
-Tagged , , , , . Bookmark the permalink.
-
+ diff --git a/posts/blueprint-maker-13-complete.html b/posts/blueprint-maker-13-complete.html index b3aae55..4a5cc8f 100644 --- a/posts/blueprint-maker-13-complete.html +++ b/posts/blueprint-maker-13-complete.html @@ -15,10 +15,6 @@ wordpress_id: 1259 wordpress_slug: blueprint-maker-13-complete --- -
-

Blueprint Maker (13) Complete

-

More followup for my house blueprint maker. The project is now done.

@@ -31,9 +27,6 @@ wordpress_slug: blueprint-maker-13-complete
  • Share your finished project with a link
  • See the demo here. The source code is on github.

    -
    -
    -Tagged , , . Bookmark the permalink.
    -
    + diff --git a/posts/board-game-travel-kit.html b/posts/board-game-travel-kit.html index 8ba9b1f..cde151c 100644 --- a/posts/board-game-travel-kit.html +++ b/posts/board-game-travel-kit.html @@ -14,19 +14,12 @@ wordpress_id: 1123 wordpress_slug: board-game-travel-kit --- -
    -

    Board Game Travel Kit

    -

    I condensed some of card games into one box:

    Left to right: Doomlings, Star Realms, The Mind, Chrononauts, FitzIt, Are you the traitor?, Are you a werewolf?, Hanabi, Set, Icehouse/Zendo rules, regular playing cards

    I’ve noticed that board game boxes tend to be a little big. I combined five into one box:

    Azul, Settlers of Catan, Clank, Concept, Nuclear War
    This is “portable” if you have a car trunk, maybe! It’s heavy as heck.
    -
    -
    -Tagged , . Bookmark the permalink.
    -
    + diff --git a/posts/capturing-video-on-debian-linux-with-the-blackmagic-intensity-pro-4k-card.html b/posts/capturing-video-on-debian-linux-with-the-blackmagic-intensity-pro-4k-card.html index 6c9df30..db8e9fd 100644 --- a/posts/capturing-video-on-debian-linux-with-the-blackmagic-intensity-pro-4k-card.html +++ b/posts/capturing-video-on-debian-linux-with-the-blackmagic-intensity-pro-4k-card.html @@ -15,10 +15,6 @@ wordpress_id: 462 wordpress_slug: capturing-video-on-debian-linux-with-the-blackmagic-intensity-pro-4k-card --- -
    -

    Capturing video on Debian Linux with the Blackmagic Intensity Pro 4K card

    -

    Most of this should apply for any linux system, other than the driver install step. Also, I believe most of it applies to DeckLink and Intensity cards as well.

    My main source is https://gist.github.com/afriza/879fed4ede539a5a6501e0f046f71463. I’ve re-written for clarity and Debian.

    @@ -54,9 +50,6 @@ wordpress_slug: capturing-video-on-debian-linux-with-the-blackmagic-intensity-pr

    Sources:

    -
    -
    -Tagged , , . Bookmark the permalink.
    -
    + diff --git a/posts/cardboard-mail-holders.html b/posts/cardboard-mail-holders.html index cdfdd4d..fd413ad 100644 --- a/posts/cardboard-mail-holders.html +++ b/posts/cardboard-mail-holders.html @@ -17,19 +17,12 @@ wordpress_id: 248 wordpress_slug: cardboard-mail-holders --- -
    -

    Cardboard mail holders

    -

    Our house has seven people, so today I made some mail holders to put on our doors.

     

    cardboard_near0.5

    I basically had some long cardboard boxes, and cut them in half. Then I added new ends and separators in the middle.

    I’m not sure if they’ll actually get used. Mail on the floor looks bad, but these aren’t that hot either. If you make some and want to improve the look, you can cover everything in paper or cardstock.

    -
    -
    -Tagged , , , , . Bookmark the permalink.
    -
    + diff --git a/posts/configuring-mailxs-mailrc-with-gmail.html b/posts/configuring-mailxs-mailrc-with-gmail.html index 1339999..6bbc6ed 100644 --- a/posts/configuring-mailxs-mailrc-with-gmail.html +++ b/posts/configuring-mailxs-mailrc-with-gmail.html @@ -15,10 +15,6 @@ wordpress_id: 33 wordpress_slug: configuring-mailxs-mailrc-with-gmail --- -
    -

    Configuring mailx’s .mailrc with Gmail

    -

    Here’s how I added gmail to .mailrc for the BSD program mailx, provided by the s-nail package in arch.

    account gmail {
    @@ -34,9 +30,6 @@ wordpress_slug: configuring-mailxs-mailrc-with-gmail
     

    Replace PASS with your actual password, and example@gmail.com with your actual email. Read the documentation if you want to avoid plaintext passwords.

    You can send mail with ‘mail -A gmail <params>’. If you have only one account, remove the first and last line and use ‘mail <params>’

    -
    -
    -Tagged , , . Bookmark the permalink.
    -
    + diff --git a/posts/controlling-a-computercraft-turtle-remotely.html b/posts/controlling-a-computercraft-turtle-remotely.html index 7966bd4..fa9e0b5 100644 --- a/posts/controlling-a-computercraft-turtle-remotely.html +++ b/posts/controlling-a-computercraft-turtle-remotely.html @@ -15,10 +15,6 @@ wordpress_id: 313 wordpress_slug: controlling-a-computercraft-turtle-remotely --- -
    -

    Controlling a computercraft turtle remotely

    -

    Screen Shot 2015-10-18 at 7.16.59 PMScreen Shot 2015-10-18 at 7.17.30 PM

      @@ -98,10 +94,7 @@ done
    1. Run: rlwrap ./sshbot <ID>, where <ID> is the turtle’s ID. You should be able to send commands to the computer now.
    -
    -
    -Tagged , , . Bookmark the permalink.
    -
    +
      diff --git a/posts/cookbook.html b/posts/cookbook.html index e3ff3f2..ffff9d0 100644 --- a/posts/cookbook.html +++ b/posts/cookbook.html @@ -16,19 +16,12 @@ wordpress_id: 525 wordpress_slug: cookbook --- - + diff --git a/posts/crawling-etiquette.html b/posts/crawling-etiquette.html index a4e4733..85d065c 100644 --- a/posts/crawling-etiquette.html +++ b/posts/crawling-etiquette.html @@ -15,10 +15,6 @@ wordpress_id: 594 wordpress_slug: crawling-etiquette --- -
      -

      Crawling Etiquette

      -

      I participate in a mentoring program, and recently one of the people I mentor asked me about whether it was okay to crawl something. I thought I would share my response, which is posted below nearly verbatim.

      For this article, I’m skipping the subject of how to scrape websites (as off-topic), or how to avoid bans.

      @@ -40,9 +36,6 @@ wordpress_slug: crawling-etiquette

      What a company will do once you publicly post all the information on their site is another matter, and I have less advice there. There are several sites that offer information about historical Amazon prices, for what that’s worth.

      You may find this article interesting (but unhelpful) if you are concerned about being sued. Jason Scott is one of the main technical people at the Internet Archive, and people sometimes object to things he posts online.

      In my personal opinion, suing people or bringing criminal charges does not work in general, because most people scraping do not live in the USA, and may use technical means to disguise who they are. Scrapers may be impossible to sue or charge with anything. In short, a policy of trying to sue people who scape your site, will result in your site still being scraped. Also, most people running a site don’t have the resources to sue anyone in any case. So you shouldn’t expect this to be a common outcome, but basically a small percentage of people (mostly crackpots) and companies (RIAA and publishers) may.

      -
      -
      -Tagged , , . Bookmark the permalink.
      -
      + diff --git a/posts/cron-email-and-sending-email-to-only-one-address.html b/posts/cron-email-and-sending-email-to-only-one-address.html index 19603af..58d80c3 100644 --- a/posts/cron-email-and-sending-email-to-only-one-address.html +++ b/posts/cron-email-and-sending-email-to-only-one-address.html @@ -16,10 +16,6 @@ wordpress_id: 535 wordpress_slug: cron-email-and-sending-email-to-only-one-address --- -
      -

      Cron email, and sending email to only one address

      -

      So you want to know when your monitoring system fails, or your cron jobs don’t run? Add this to your crontab:

      MAILTO=me@me.com
      @@ -32,9 +28,6 @@ echo "`hostname`.za3k.com" | sudo tee /etc/nullmailer/defaultdomain # superceded echo "`hostname`.za3k.com" | sudo tee /etc/nullmailer/helohost # required to connect to my server. otherwise default to 'me' echo "smtp.za3k.com smtp --port=587 --starttls" | sudo tee /etc/nullmailer/remotes && sudo chmod 600 /etc/nullmailer/remotes

      Now just run echo "Subject: sendmail test" | /usr/lib/sendmail -v admin@za3k.com to test and you’re done!

      -
      -
      -Tagged , , , . Bookmark the permalink.
      -
      + diff --git a/posts/dd-spells-srd-vs-5e-players-handbook.html b/posts/dd-spells-srd-vs-5e-players-handbook.html index da6e32e..ea6d206 100644 --- a/posts/dd-spells-srd-vs-5e-players-handbook.html +++ b/posts/dd-spells-srd-vs-5e-players-handbook.html @@ -15,10 +15,6 @@ wordpress_id: 997 wordpress_slug: dd-spells-srd-vs-5e-players-handbook --- -
      -

      D&D Spells: SRD vs 5e Player’s Handbook

      -

      I’ve been working on a spell guide for D&D games. During the process, I researched the differences between the Dungeons and Dragons 5e Player’s Handbook (PHB) and the 5e System Reference Document (SRD).

      For those that don’t know, in 3e Wizards of the Coast released the core rules of the game for free. They’ve continued to do so for 3.5, 4, and 5e. The 5e rules were released under Creative Commons recently (thanks!), in response to some community backlash over proposed licensing changes (eek!).

      @@ -81,9 +77,6 @@ wordpress_slug: dd-spells-srd-vs-5e-players-handbook
    1. mordenkainen’s sword becomes arcane sword
    2. nystul’s magic aura becomes arcanist’s magic aura
    3. -
      -
      -Tagged , , . Bookmark the permalink.
      -
      + diff --git a/posts/dd-story-time.html b/posts/dd-story-time.html index 6580a45..68d4f68 100644 --- a/posts/dd-story-time.html +++ b/posts/dd-story-time.html @@ -13,19 +13,12 @@ wordpress_id: 1114 wordpress_slug: dd-story-time --- -
      -

      D&D Story Time

      -

      In my recent campaign, I had a handout for the players. I took it out, and on a whim, I thought « a handout is boring ».

      I tore it into quarters in front of their eyes. I wrote on back of the handout pieces “5“, “10“, “15“, “20“. “Make me an investigation check,” I intoned in my best DM voice. “I will grant you any pieces under your roll.“

      They got 23, so I gave them all four scraps. They taped it back together and got the whole handout.

      And they remembered that handout. They told players in other campaigns about the handout.

      -
      -
      -Tagged . Bookmark the permalink.
      -
      + diff --git a/posts/ddos.html b/posts/ddos.html index 3c9a839..ce8dac8 100644 --- a/posts/ddos.html +++ b/posts/ddos.html @@ -14,17 +14,10 @@ wordpress_id: 402 wordpress_slug: ddos --- -
      -

      DDoS

      -

      za3k.com was the site of a DDoS attack. I’m pretty sure this was because my wordpress installation was compromised, and the hacker who took control of my server was herself DDoSed.

      More updates to come, but the short story is that I’ll be formalizing my install and eventually containerizing + hardening everything

      -
      -
      -Tagged , . Bookmark the permalink.
      -
      +
        diff --git a/posts/default-twitter-icons.html b/posts/default-twitter-icons.html index 73f8d81..5326f6f 100644 --- a/posts/default-twitter-icons.html +++ b/posts/default-twitter-icons.html @@ -16,10 +16,6 @@ wordpress_id: 119 wordpress_slug: default-twitter-icons --- -
        -

        Default twitter icons

        -

        The default twitter icon is an egg. There are six available. One is chosen at random for each new user.

        default_profile_1_bigger default_profile_2_bigger default_profile_3_bigger default_profile_4_bigger default_profile_5_bigger default_profile_6_bigger

        @@ -34,9 +30,6 @@ wordpress_slug: default-twitter-icons

      Large versions of those icons:

      default_profile_1 default_profile_2 default_profile_3 default_profile_4 default_profile_5 default_profile_6

      - -
      -Tagged , , , . Bookmark the permalink.
      - + diff --git a/posts/dependency-resolution-in-javascript.html b/posts/dependency-resolution-in-javascript.html index 5aee22b..7903e80 100644 --- a/posts/dependency-resolution-in-javascript.html +++ b/posts/dependency-resolution-in-javascript.html @@ -16,17 +16,10 @@ wordpress_id: 353 wordpress_slug: dependency-resolution-in-javascript --- -
      -

      Dependency Resolution in Javascript

      -

      Sometimes I have a bunch of dependencies. Say, UI components that need other UI components to be loaded. I’d really just like to have everything declare dependencies and magically everything is loaded in the right order. It turns out that if use “require” type files this isn’t bad (google “dependency injection”), but for anything other than code loading you’re a bit lost. I did find dependency-graph, but this requires the full list of components to run. I wanted a version would you could add components whenever you wanted–an online framework.

      My take is here: https://github.com/vanceza/dependencies-online

      It has no requirements, and is available on npm as dependencies-online.

      -
      -
      -Tagged , , , . Bookmark the permalink.
      -
      + diff --git a/posts/diy-hard-drive-carrying-case.html b/posts/diy-hard-drive-carrying-case.html index 3b18b9f..6228c20 100644 --- a/posts/diy-hard-drive-carrying-case.html +++ b/posts/diy-hard-drive-carrying-case.html @@ -20,18 +20,11 @@ wordpress_id: 418 wordpress_slug: diy-hard-drive-carrying-case --- -
      -

      DIY Hard drive carrying case

      -

      Today’s project was a hard drive carrying case. I wanted something to securely store hard drives. When I looked around on ebay and amazon, I saw some nice cases and some crappy plastic molded ones. Even the terrible ones were at least $50, so I made my own.

      HDD Carrying Case Exerior

      I bought a used ammo case at the rather excellent local army surplus store. Then I padded all sides. I had spare EVA foam “puzzle piece” style mats from a gym setup lying around. I cut out the pieces with scissors. That’s it.  I was expecting more steps, but nothing needed glued in place. I was planning on adding inserts for the empty slots, but it seems secure enough. If you’re making one, you could also glue the top onto the lid, so you don’t have to take it out manually.

      HDD Case Interior

      -
      -
      -Tagged , , , , , , , . Bookmark the permalink.
      -
      + diff --git a/posts/diy-keyboards-and-how-keyboards-work.html b/posts/diy-keyboards-and-how-keyboards-work.html index 1305c26..e2cb50a 100644 --- a/posts/diy-keyboards-and-how-keyboards-work.html +++ b/posts/diy-keyboards-and-how-keyboards-work.html @@ -15,10 +15,6 @@ wordpress_id: 1059 wordpress_slug: diy-keyboards-and-how-keyboards-work --- -
      -

      DIY keyboards (and how keyboards work)

      -

      I’ve been pondering simple input methods for microcontrollers. One obvious idea is, a keyboard! But for some reason, my USB keyboards use a staggering amount of power compared to my microcontrollers–1W of power for my mechanical keyboards, maybe 0.1W for the regular ones.

      Let’s look inside a commercial keyboard, and see if we can hook up to it:

      @@ -69,10 +65,7 @@ wordpress_slug: diy-keyboards-and-how-keyboards-work
      -
      -
      -Tagged , , . Bookmark the permalink.
      -
      +
        diff --git a/posts/domain-names-for-sale.html b/posts/domain-names-for-sale.html index 9aa53f0..200906c 100644 --- a/posts/domain-names-for-sale.html +++ b/posts/domain-names-for-sale.html @@ -14,16 +14,9 @@ wordpress_id: 109 wordpress_slug: domain-names-for-sale --- - + diff --git a/posts/dungeon-master-ii-spell-runes.html b/posts/dungeon-master-ii-spell-runes.html index 6e19502..4440881 100644 --- a/posts/dungeon-master-ii-spell-runes.html +++ b/posts/dungeon-master-ii-spell-runes.html @@ -14,10 +14,6 @@ wordpress_id: 1107 wordpress_slug: dungeon-master-ii-spell-runes --- -
        -

        Dungeon Master II Spell Runes

        -

        I’m a fan of the game Dungeon Master II (1993). In fact, I’m planning to get a tattoo of the rune system. So I looked around for a reference image. Here’s one from the game manual:

        @@ -26,9 +22,6 @@ wordpress_slug: dungeon-master-ii-spell-runes

        But there’s one problem–an entire row of runes is missing. Here’s a corrected one I made.

        -
        -
        -Tagged , . Bookmark the permalink.
        -
        + diff --git a/posts/e-ink-laptop.html b/posts/e-ink-laptop.html index 666dfdb..17c2f56 100644 --- a/posts/e-ink-laptop.html +++ b/posts/e-ink-laptop.html @@ -17,10 +17,6 @@ wordpress_id: 801 wordpress_slug: e-ink-laptop --- -
        -

        e-ink “laptop”

        -

        I’ve been prototyping an e-ink laptop.

        a wooden box with a keyboard inside and an e-ink screen mounted to it
        @@ -49,9 +45,6 @@ wordpress_slug: e-ink-laptop

        Power budget (at 5V):

        • Keyboard: 500mW. Other USB keyboards use zero to within my measurement abilities.
        • Screen: 0-250mW when updating. Hard to measure.
        • Pi 3: 2000mW. I have the wifi chip enabled (the default) but I’m not actively connected to wifi.
        • Pi Zero W: 650mW

        A real-life test showed 5-6 hour battery life. Theory says (13Wh/battery * 4 batteries / 2.7 watts)=20 hours battery life. I’m investigating the discrepancy. In theory, swapping for a Pi Zero W and a better keyboard would give 72-hour battery life.

        -
        -
        -Tagged , , , . Bookmark the permalink.
        -
        + diff --git a/posts/easel-toy.html b/posts/easel-toy.html index 4ea4648..140c4d1 100644 --- a/posts/easel-toy.html +++ b/posts/easel-toy.html @@ -14,16 +14,9 @@ wordpress_id: 1130 wordpress_slug: easel-toy --- - + diff --git a/posts/encrypted-root-on-debian-part-2-unattended-boot.html b/posts/encrypted-root-on-debian-part-2-unattended-boot.html index b43f26e..c48870e 100644 --- a/posts/encrypted-root-on-debian-part-2-unattended-boot.html +++ b/posts/encrypted-root-on-debian-part-2-unattended-boot.html @@ -15,10 +15,6 @@ wordpress_id: 630 wordpress_slug: encrypted-root-on-debian-part-2-unattended-boot --- -
        -

        Encrypted root on debian part 2: unattended boot

        -

        I want my debian boot to work as follows:

        1. If it’s in my house, it can boot without my being there. To make that happen, I’ll put the root disk key on a USB stick, which I keep in the computer.
        2. If it’s not in my house, it needs a password to boot. This is the normal boot process.
        @@ -55,9 +51,6 @@ sudo /usr/local/sbin/unlockusbkey.sh | cmp /mnt/root-disk.key

        Finally, re-generate your initramfs. I recommend either having a live USB or keeping a backup initramfs.

        sudo update-initramfs -u

        [1] This post is loosely based on a chain of tutorials based on each other, including this
        [2] However, those collectively looked both out of date and like they were written without true understanding, and I wanted to clean up the mess. More definitive information was sourced from the actual cryptsetup documentation.

        -
        -
        -Tagged , , . Bookmark the permalink.
        -
        + diff --git a/posts/etherpad.html b/posts/etherpad.html index a6a47c8..e53b127 100644 --- a/posts/etherpad.html +++ b/posts/etherpad.html @@ -12,15 +12,8 @@ wordpress_id: 24 wordpress_slug: etherpad --- - + diff --git a/posts/even-more-uri-handlers-in-linux.html b/posts/even-more-uri-handlers-in-linux.html index 113bf47..9e5d35a 100644 --- a/posts/even-more-uri-handlers-in-linux.html +++ b/posts/even-more-uri-handlers-in-linux.html @@ -13,10 +13,6 @@ wordpress_id: 1403 wordpress_slug: even-more-uri-handlers-in-linux --- -
        -

        Even more URI handlers in Linux

        -

        Sometimes Linux wants to open files. I mostly use the command line, so I wrote some helper programs to open things in terminals.

          @@ -24,9 +20,6 @@ wordpress_slug: even-more-uri-handlers-in-linux
        • open-directory opens a terminal with that working directory. I set it as my program to open all directories.

        They’re both available in short-programs. Both default to xterm.

        -
        -
        -Tagged . Bookmark the permalink.
        -
        + diff --git a/posts/fabric1-aur-package.html b/posts/fabric1-aur-package.html index c1fabcc..e8aca70 100644 --- a/posts/fabric1-aur-package.html +++ b/posts/fabric1-aur-package.html @@ -15,17 +15,10 @@ wordpress_id: 542 wordpress_slug: fabric1-aur-package --- -
        -

        fabric1 AUR package

        -

        Fabric is a system administration tool used to run commands on remote machines over SSH. You program it using python. In 2018, Fabric 2 came out. In a lot of ways it’s better, but it’s incompatible, and removes some features I really need. I talked to the Fabric dev (bitprophet) and he seemed on board with keeping a Fabric 1 package around (and maybe renaming the current package to Fabric 2).

        Here’s an arch package: https://aur.archlinux.org/packages/fabric1/

        Currently Fabric 1 runs only on Python2. But there was a project to port it to Python 3 (confusingly named fabric3), which is currently attempting to merge into mainline fabric. Once that’s done, I’m hoping to see a ‘fabric1’ and ‘fabric2’ package in all the main distros.

        -
        -
        -Tagged , , . Bookmark the permalink.
        -
        + diff --git a/posts/first-aid-kit.html b/posts/first-aid-kit.html index ed8891e..f8c846c 100644 --- a/posts/first-aid-kit.html +++ b/posts/first-aid-kit.html @@ -13,10 +13,6 @@ wordpress_id: 1016 wordpress_slug: first-aid-kit --- - + diff --git a/posts/flash-media-longevity-testing-4-years-later.html b/posts/flash-media-longevity-testing-4-years-later.html index 898f7ed..f69fc5e 100644 --- a/posts/flash-media-longevity-testing-4-years-later.html +++ b/posts/flash-media-longevity-testing-4-years-later.html @@ -16,10 +16,6 @@ wordpress_id: 1271 wordpress_slug: flash-media-longevity-testing-4-years-later --- - + diff --git a/posts/games-i-like.html b/posts/games-i-like.html index 36a86e8..0ca518e 100644 --- a/posts/games-i-like.html +++ b/posts/games-i-like.html @@ -16,15 +16,8 @@ wordpress_id: 142 wordpress_slug: games-i-like --- - + diff --git a/posts/garden-signs-on-wall-tiles-pt-2.html b/posts/garden-signs-on-wall-tiles-pt-2.html index 954a585..2ad070c 100644 --- a/posts/garden-signs-on-wall-tiles-pt-2.html +++ b/posts/garden-signs-on-wall-tiles-pt-2.html @@ -12,10 +12,6 @@ wordpress_id: 1332 wordpress_slug: garden-signs-on-wall-tiles-pt-2 --- -
        -

        Garden signs on wall tiles (pt 2)

        -

        I tested with one tile. Now I made signs for my whole garden.

        To start, I covered each marble tile in painter’s tape.

        @@ -36,9 +32,6 @@ wordpress_slug: garden-signs-on-wall-tiles-pt-2
      1. You should switch x-acto blades more often than you think.
      2. I should have spent even more time on an easy-to-cut font. The “a”, “e”, and “r” are too hard in this font.
      3. -
        -
        -Bookmark the permalink.
        -
        + diff --git a/posts/garden-signs-on-wall-tiles.html b/posts/garden-signs-on-wall-tiles.html index a6de8f9..eaf5b97 100644 --- a/posts/garden-signs-on-wall-tiles.html +++ b/posts/garden-signs-on-wall-tiles.html @@ -15,10 +15,6 @@ wordpress_id: 1317 wordpress_slug: garden-signs-on-wall-tiles --- -
        -

        Garden signs on wall tiles

        -

        I’m making labels for my garden sections by painting tiles.

        @@ -42,9 +38,6 @@ wordpress_slug: garden-signs-on-wall-tiles

        I attach the tile to my raised beds using z-brackets sized to fit the tile thickness and a screwdriver. They look fine on the dirt too.

        Looks nice! Maybe I’ll switch to a higher-contract color paint for white?

        -
        -
        -Tagged , , . Bookmark the permalink.
        -
        + diff --git a/posts/getting-rid-of-mold.html b/posts/getting-rid-of-mold.html index 5f3ae04..6a3cef7 100644 --- a/posts/getting-rid-of-mold.html +++ b/posts/getting-rid-of-mold.html @@ -14,10 +14,6 @@ wordpress_id: 1273 wordpress_slug: getting-rid-of-mold --- -
        -

        Getting rid of mold

        -

        Take everything in this article with a cup of salt, I’m not even close to an expert.

        Recently I’ve been itchy, so I’m treating a couple areas of my house for mold and mildew–the walls of my basement, and a new couch I got. I’ve been researching mold treatments. Some of them are clearly absolute nonsense.

        @@ -38,9 +34,6 @@ wordpress_slug: getting-rid-of-mold

        I do not think high or low temperatures will work to kill molds generally, from my research.

        The hardest part of this research is that I don’t have a large, visible mold patch. I’m just itchy. So don’t expect a report back about whether this stuff worked, honestly.

        -
        -
        -Tagged , . Bookmark the permalink.
        -
        + diff --git a/posts/getting-the-adafruit-pro-trinket-3-3v-to-work-in-arch-linux.html b/posts/getting-the-adafruit-pro-trinket-3-3v-to-work-in-arch-linux.html index 61aea28..49d240e 100644 --- a/posts/getting-the-adafruit-pro-trinket-3-3v-to-work-in-arch-linux.html +++ b/posts/getting-the-adafruit-pro-trinket-3-3v-to-work-in-arch-linux.html @@ -19,10 +19,6 @@ wordpress_id: 410 wordpress_slug: getting-the-adafruit-pro-trinket-3-3v-to-work-in-arch-linux --- -
        -

        Getting the Adafruit Pro Trinket 3.3V to work in Arch Linux

        -

        I’m on Linux, and here’s what I did to get the Adafruit Pro Trinket (3.3V version) to work. I think most of this should work for other Adafruit boards as well. I’m on Arch Linux, but other distros will be similar, just find the right paths for everything. Your version of udev may vary on older distros especially.

          @@ -41,9 +37,6 @@ SUBSYSTEM=="usb", ATTR{product}=="USBtiny", ATTR{idProduct}=="0c9f", ATTRS{idVen

          Sources:
          http://www.bacspc.com/2015/07/28/arch-linux-and-trinket/
          http://andijcr.github.io/blog/2014/07/31/notes-on-trinket-on-ubuntu-14.04/

          -
        -
        -Tagged , , , , , , . Bookmark the permalink.
        -
        + diff --git a/posts/github-com-archive-background-research.html b/posts/github-com-archive-background-research.html index f601a08..063fae1 100644 --- a/posts/github-com-archive-background-research.html +++ b/posts/github-com-archive-background-research.html @@ -21,10 +21,6 @@ wordpress_id: 443 wordpress_slug: github-com-archive-background-research --- -
        -

        github.com archive – Background Research

        -

        My current project is to archive git repos, starting with all of github.com. As you might imagine, size is an issue, so in this post I do some investigation on how to better compress things. It’s currently Oct, 2017, for when you read this years later and your eyes bug out at how tiny the numbers are.

        Let’s look at the list of repositories and see what we can figure out.

        @@ -206,9 +202,6 @@ wordpress_slug: github-com-archive-background-research
      4. 125GB. Same, with ‘git repack -adk’)
      5. Throwing out everything but the objects allows other fun options, but there aren’t any standard tools and I’m out of time. Maybe next time. Ta for now.

        -
        -
        -Tagged , , , , , , , , . Bookmark the permalink.
        -
        + diff --git a/posts/good-time-estimation.html b/posts/good-time-estimation.html index 5e7a591..345c66c 100644 --- a/posts/good-time-estimation.html +++ b/posts/good-time-estimation.html @@ -12,10 +12,6 @@ wordpress_id: 1024 wordpress_slug: good-time-estimation --- -
        -

        Good Time Estimation

        -

        As a programmer, one task I have to do often is estimate how a long a task will take. But as a programmer, most tasks I do have never been done before, and will never be done again, so estimating how long they will take is a little tricky. Here are some tips I’ve learned over the years.

        Always use clock time.

        @@ -40,9 +36,6 @@ wordpress_slug: good-time-estimation

        Some tasks are more variable. Saying “something will take 1 hour” is vague. Saying “something will almost certainly take between 30 minutes and 4 hours” is more precise. How big should that range be? That’s called a credible interval.

        Train your credible intervals. I trained mine using bug fixing, something which happens several times a day, is hard to predict, and you have little control over (you can’t “call it done” early). Customer calls could be another great candidate.

        I trained on bugfixes using 50%, 90%, and 99% intervals. There are specific mathematical scoring rules, but basically if something is in your 50% interval more than half the time, narrow it; if your interval is correct less than half the time, widen it.

        Credit: Eliezer Yudkowsky (personal website, no longer up)

        -
        -
        -Bookmark the permalink.
        -
        + diff --git a/posts/hack-a-day-2023-2.html b/posts/hack-a-day-2023-2.html index 5e3259a..52ca9c9 100644 --- a/posts/hack-a-day-2023-2.html +++ b/posts/hack-a-day-2023-2.html @@ -13,10 +13,6 @@ wordpress_id: 1136 wordpress_slug: hack-a-day-2023-2 --- -
        -

        Hack-A-Day 2023

        -

        @@ -31,9 +27,6 @@ wordpress_slug: hack-a-day-2023-2

        I’m a programmer, so I’m doing a new computer programming project every day. But you can do any kind of project, whatever you pick is great.

        READ MORE

        I encourage you to join. I would guess this takes 2-4 hours a day (similar to NaNoWriMo). But if you don’t have that kind of time, please do still join for as many days as you can! And if you want to collaborate with me, set aside a free day and message me by email. My calendar is at zachary.youcanbook.me. Feel free to grab any day starting the 4th!

        -
        -
        -Tagged . Bookmark the permalink.
        -
        + diff --git a/posts/hack-a-day-2023-is-done.html b/posts/hack-a-day-2023-is-done.html index 3d4c230..ef733eb 100644 --- a/posts/hack-a-day-2023-is-done.html +++ b/posts/hack-a-day-2023-is-done.html @@ -13,10 +13,6 @@ wordpress_id: 1238 wordpress_slug: hack-a-day-2023-is-done --- -
        -

        Hack-A-Day 2023 is done

        -

        Hack-A-Day 2023 is complete. I did 20 projects in 30 days. Pretty good considering I got a new job and moved!

        The overview of the month is here and highly recommended.

        @@ -32,9 +28,6 @@ wordpress_slug: hack-a-day-2023-is-done
      6. Speed Reading (29) works better on a phone. It also saves your progress.
      7. Music of the Spheres (30) works on a phone. It’s also louder.
      8. -
        -
        -Tagged . Bookmark the permalink.
        -
        + diff --git a/posts/hack-a-day-2023.html b/posts/hack-a-day-2023.html index 7c6a90b..54a07a1 100644 --- a/posts/hack-a-day-2023.html +++ b/posts/hack-a-day-2023.html @@ -16,10 +16,6 @@ wordpress_id: 1090 wordpress_slug: hack-a-day-2023 --- -
        -

        Hack-A-Day 2023

        -

        HACK (noun)

        @@ -33,9 +29,6 @@ wordpress_slug: hack-a-day-2023

        I’m a programmer, so I’m doing a new computer programming project every day. But you can do any kind of project, whatever you pick is great.

        READ MORE

        I will post again nearer to November! Just giving blog readers an advance heads-up.

        -
        -
        -Tagged , , . Bookmark the permalink.
        -
        + diff --git a/posts/hack-a-day-day-01-perquackey.html b/posts/hack-a-day-day-01-perquackey.html index 4bc4fee..080bfc8 100644 --- a/posts/hack-a-day-day-01-perquackey.html +++ b/posts/hack-a-day-day-01-perquackey.html @@ -15,19 +15,12 @@ wordpress_id: 1138 wordpress_slug: hack-a-day-day-01-perquackey --- -
        -

        Hack-A-Day: Day 01, Perquackey

        -

        Today I chose to write a web version of a word game my family has loved for a long time, but which is sadly out of print.

        It is meant to be played multi-player, but you’re welcome to try it out single-player online. Have fun!

        Source code here

        -
        -
        -Tagged , . Bookmark the permalink.
        -
        + diff --git a/posts/hack-a-day-day-04-lashed-table.html b/posts/hack-a-day-day-04-lashed-table.html index 645c632..f02c0fc 100644 --- a/posts/hack-a-day-day-04-lashed-table.html +++ b/posts/hack-a-day-day-04-lashed-table.html @@ -16,20 +16,13 @@ wordpress_id: 1147 wordpress_slug: hack-a-day-day-04-lashed-table --- -
        -

        Hack-A-Day, Day 04: Lashed Table

        -

        Lashed furniture is made using sticks and rope or twine. Today’s project was to make one out of bamboo and brown paracord. The frame is shown–imagine boards or many pieces of bamboo forming a top.

        Hello to the young lady who decided to pose and join in the photo!

        We found this little $5 tool to be incredibly good for cutting bamboo. It’s designed for almost the same thing, cutting metal pipes.

        It wasn’t bad for a first try. That said, we decided the top wasn’t flat enough to give a good finish, so the whole thing is going to be burned at the next bonfire.

        -
        -
        -Tagged , , , . Bookmark the permalink.
        -
        +
          diff --git a/posts/hack-a-day-day-06-doodlemoji-alchemy.html b/posts/hack-a-day-day-06-doodlemoji-alchemy.html index f3a4cf0..f174730 100644 --- a/posts/hack-a-day-day-06-doodlemoji-alchemy.html +++ b/posts/hack-a-day-day-06-doodlemoji-alchemy.html @@ -16,10 +16,6 @@ wordpress_id: 1164 wordpress_slug: hack-a-day-day-06-doodlemoji-alchemy --- - + diff --git a/posts/hack-a-day-day-06.html b/posts/hack-a-day-day-06.html index 43c8bea..c652d5c 100644 --- a/posts/hack-a-day-day-06.html +++ b/posts/hack-a-day-day-06.html @@ -15,10 +15,6 @@ wordpress_id: 1152 wordpress_slug: hack-a-day-day-06 --- -
          -

          Hack-A-Day, Day 06: Raytracing Redux (realtime video)

          -

          Today’s update is a short one. I ported my raytracer from day 02, to the Nvidia GPU: ha3k-06-raytracer

          The visuals are pretty much the same. Incidentally I discovered the striations on the ground disappear if we increase the floating point precision.

          @@ -30,9 +26,6 @@ wordpress_slug: hack-a-day-day-06

          I didn’t get video working yesterday, or anything else visually new. I will call this one a failure overall, because I have nothing interesting to show off. I learned stuff and made progress though, so it’s not so bad.

          Here’s a working video!

          -
          -
          -Tagged , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-08-receipt-zine.html b/posts/hack-a-day-day-08-receipt-zine.html index cb6018c..6cfdf30 100644 --- a/posts/hack-a-day-day-08-receipt-zine.html +++ b/posts/hack-a-day-day-08-receipt-zine.html @@ -16,17 +16,10 @@ wordpress_id: 1169 wordpress_slug: hack-a-day-day-08-receipt-zine --- - + diff --git a/posts/hack-a-day-day-10-typewriter.html b/posts/hack-a-day-day-10-typewriter.html index f255d16..360f90c 100644 --- a/posts/hack-a-day-day-10-typewriter.html +++ b/posts/hack-a-day-day-10-typewriter.html @@ -14,16 +14,9 @@ wordpress_id: 1173 wordpress_slug: hack-a-day-day-10-typewriter --- - + diff --git a/posts/hack-a-day-day-11-raytraced-rain.html b/posts/hack-a-day-day-11-raytraced-rain.html index 3cc8433..7b13a73 100644 --- a/posts/hack-a-day-day-11-raytraced-rain.html +++ b/posts/hack-a-day-day-11-raytraced-rain.html @@ -17,16 +17,9 @@ wordpress_id: 1184 wordpress_slug: hack-a-day-day-11-raytraced-rain --- - + diff --git a/posts/hack-a-day-day-12-screensavers.html b/posts/hack-a-day-day-12-screensavers.html index 300807f..e88b73a 100644 --- a/posts/hack-a-day-day-12-screensavers.html +++ b/posts/hack-a-day-day-12-screensavers.html @@ -14,16 +14,9 @@ wordpress_id: 1186 wordpress_slug: hack-a-day-day-12-screensavers --- - + diff --git a/posts/hack-a-day-day-13-blueprint-maker.html b/posts/hack-a-day-day-13-blueprint-maker.html index 4227e5e..973e3af 100644 --- a/posts/hack-a-day-day-13-blueprint-maker.html +++ b/posts/hack-a-day-day-13-blueprint-maker.html @@ -15,10 +15,6 @@ wordpress_id: 1189 wordpress_slug: hack-a-day-day-13-blueprint-maker --- -
          -

          Hack-A-Day, Day 13: Blueprint Maker

          -

          Hack-A-Day is a challenge to try and finish 30 projects in 30 days in November.

          Today I tried to write a tool to make a floorplan. You can try it here. As usual the source code is on github.

          @@ -34,9 +30,6 @@ wordpress_slug: hack-a-day-day-13-blueprint-maker
        1. sharing finished projects (stretch goal, not done)
        2. What I did do was pleasantly high-quality, and I made pretty good progress.

          -
          -
          -Tagged , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-14-bytebeat-synth.html b/posts/hack-a-day-day-14-bytebeat-synth.html index 6d6e70b..8b01a4c 100644 --- a/posts/hack-a-day-day-14-bytebeat-synth.html +++ b/posts/hack-a-day-day-14-bytebeat-synth.html @@ -16,16 +16,9 @@ wordpress_id: 1193 wordpress_slug: hack-a-day-day-14-bytebeat-synth --- - + diff --git a/posts/hack-a-day-day-17-tower-of-choices.html b/posts/hack-a-day-day-17-tower-of-choices.html index 9bc2403..57dc5dc 100644 --- a/posts/hack-a-day-day-17-tower-of-choices.html +++ b/posts/hack-a-day-day-17-tower-of-choices.html @@ -17,15 +17,8 @@ wordpress_id: 1197 wordpress_slug: hack-a-day-day-17-tower-of-choices --- - + diff --git a/posts/hack-a-day-day-18-a-i-grab-bag.html b/posts/hack-a-day-day-18-a-i-grab-bag.html index 6d4ace2..3953853 100644 --- a/posts/hack-a-day-day-18-a-i-grab-bag.html +++ b/posts/hack-a-day-day-18-a-i-grab-bag.html @@ -14,10 +14,6 @@ wordpress_id: 1199 wordpress_slug: hack-a-day-day-18-a-i-grab-bag --- -
          -

          Hack-A-Day, Day 18: A.I. Grab-bag

          -

          Today I got a variety of modern A.I. tools to work in a python library. This one is mostly install instructions, but it was useful for me, at least.

          I took a day off after.

          @@ -28,9 +24,6 @@ wordpress_slug: hack-a-day-day-18-a-i-grab-bag
        3. Generating chat at 0.05x – 0.5x realtime (3-30 wpm) on GPU.
        4. I didn’t get image generation working on my allotted time.

          -
          -
          -Tagged , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-2-raytracing.html b/posts/hack-a-day-day-2-raytracing.html index 88f482e..dafc9f9 100644 --- a/posts/hack-a-day-day-2-raytracing.html +++ b/posts/hack-a-day-day-2-raytracing.html @@ -15,10 +15,6 @@ wordpress_id: 1141 wordpress_slug: hack-a-day-day-2-raytracing --- -
          -

          Hack-A-Day, Day 02: Raytracing

          -

          Today I wrote a simple raytracer. A raytracer is a very simple way to draw excellent graphics. For each pixel, it follows an imaginary “line” out from the viewer through that pixel into the computer world. Then it colors the pixel based on what the line hits. Unfortunately, it also takes a lot of computing power.

          Mine is based on the explanation (and code) from “Ray Tracing in One Weekend“, and the code from “My Very First Raytracer“.

          @@ -26,9 +22,6 @@ wordpress_slug: hack-a-day-day-2-raytracing
          Matte spheres in different shades of grey. The blue in the spheres is reflected from the sky.

          The motivation for this project was to learn how to make things run faster on a graphics card. I quickly realized (before I wrote a line of code) that I’d need the basic raytracer to be its own project. Having it run faster will have to be a job for another day!

          -
          A final demo scene, showing off reflectivity and metal surfaces.
          Note the pincushion distortion of the overall render, and striations on the ground.
          -
          -Tagged , , . Bookmark the permalink.
          -
          +
          A final demo scene, showing off reflectivity and metal surfaces.
          Note the pincushion distortion of the overall render, and striations on the ground.
          diff --git a/posts/hack-a-day-day-20-hillsfar-lockpicking-spritesheet.html b/posts/hack-a-day-day-20-hillsfar-lockpicking-spritesheet.html index 1a4de17..e80525e 100644 --- a/posts/hack-a-day-day-20-hillsfar-lockpicking-spritesheet.html +++ b/posts/hack-a-day-day-20-hillsfar-lockpicking-spritesheet.html @@ -19,10 +19,6 @@ wordpress_id: 1203 wordpress_slug: hack-a-day-day-20-hillsfar-lockpicking-spritesheet --- -
          -

          Hack-A-Day, Day 20: Hillsfar Lockpicking Spritesheet

          -

          For today’s hack-a-day, I meant to clone the Hillsfar lockpicking minigame. Instead, I spent all day just extracting the sprites. But I had a nice chill time, so it was great.

          Edit: See the updated post for the finished game.

          @@ -32,9 +28,6 @@ wordpress_slug: hack-a-day-day-20-hillsfar-lockpicking-spritesheet

          I made it by splitting up screenshots:

          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-22-homemade-pcbs.html b/posts/hack-a-day-day-22-homemade-pcbs.html index e3477cb..55b664f 100644 --- a/posts/hack-a-day-day-22-homemade-pcbs.html +++ b/posts/hack-a-day-day-22-homemade-pcbs.html @@ -16,10 +16,6 @@ wordpress_id: 1208 wordpress_slug: hack-a-day-day-22-homemade-pcbs --- -
          -

          Hack-a-Day, Day 22: Homemade PCBs

          -

          Today I learned how to make PCBs. I didn’t invent anything here, this is all pretty well known by the PCB-making community, but it’s not well-known to me. So I taught myself a bit!

          The first part was the design an electronic circuit. I decided I was short on time, so I grabbed an existing schematic.

          @@ -50,9 +46,6 @@ wordpress_slug: hack-a-day-day-22-homemade-pcbs

          Meanwhile, I made an order at PCBWay. It’s still under review.

          Edit: after some advice from a friend, I peeled off this paper more aggressively, and scrubbed it off. The ink was fine. It doesn’t look great, but I think this is mostly the wrinkles during transfer. It’s a little blurry, I’ll have to do a third attempt before I try etching.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-23-packing.html b/posts/hack-a-day-day-23-packing.html index add21b7..d3c527a 100644 --- a/posts/hack-a-day-day-23-packing.html +++ b/posts/hack-a-day-day-23-packing.html @@ -14,10 +14,6 @@ wordpress_id: 1227 wordpress_slug: hack-a-day-day-23-packing --- -
          -

          Hack-A-Day, Day 23: Packing

          -

          I’m moving, so I have to pack. I thought I’d make it fun with two projects.

          First, I entered everything I was packing into a text file, stuff.md. That way, I can find stuff later. I have two friends who have done something like this, so I’m curious how it will go for me. Here is a sample:

          @@ -59,9 +55,6 @@ Box 03 - banker

          Second, I took a time lapse video of packing. I wish I had time-lapsed moving in at my current place, but I just wasn’t set up for it. Sadly, my camera battery died after 90 minutes, so I only have a very short video. Next time I’ll plug in a power cable. Here is a short example video.

          Both are much too personal for me to post on the web in full.

          -
          -
          -Tagged , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-28-90s-sitcom.html b/posts/hack-a-day-day-28-90s-sitcom.html index 0a6320b..cb8db0c 100644 --- a/posts/hack-a-day-day-28-90s-sitcom.html +++ b/posts/hack-a-day-day-28-90s-sitcom.html @@ -16,18 +16,11 @@ wordpress_id: 1230 wordpress_slug: hack-a-day-day-28-90s-sitcom --- -
          -

          Hack-A-Day, Day 28: 90s Sitcom

          -

          Two friends and I wrote the intro to “Pint-Sized”, a 90s sitcom that never existed.

          We used DALL-E and stable diffusion for images, Photopea to add captions, and Google’s AI Test Kitchen for the backing music. Cheers were added with audacity. The video was edited together with ffmpeg.

          Credits: za3k, stetson blake, jeremy mcintyre

          -
          -
          -Tagged , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-day-29-speed-reading.html b/posts/hack-a-day-day-29-speed-reading.html index be16de0..0d03ab2 100644 --- a/posts/hack-a-day-day-29-speed-reading.html +++ b/posts/hack-a-day-day-29-speed-reading.html @@ -13,16 +13,9 @@ wordpress_id: 1232 wordpress_slug: hack-a-day-day-29-speed-reading --- - + diff --git a/posts/hack-a-day-day-30-music-of-the-celestial-spheres.html b/posts/hack-a-day-day-30-music-of-the-celestial-spheres.html index 82243ef..7600bfe 100644 --- a/posts/hack-a-day-day-30-music-of-the-celestial-spheres.html +++ b/posts/hack-a-day-day-30-music-of-the-celestial-spheres.html @@ -14,17 +14,10 @@ wordpress_id: 1234 wordpress_slug: hack-a-day-day-30-music-of-the-celestial-spheres --- -
          -

          Hack-A-Day, Day 30: Music of the (Celestial) Spheres

          -

          Hack-a-Day is a challenge to complete ~30 fun new projects in 30 days. In my case, I aimed for 20, because I knew I was getting a job and moving. I just barely made it with this last entry, a collaboration with nsh.

          Music of the Spheres lets you hear songs on different tonal scales. Listen to the warped melodies. Watch the pretty planets orbit. Surely their sizes and orbits are significant and connected to the tonal scales? Go mad with afterimages of… okay, well it’s kinda fun, anyway. Demo is here, code is on github.

          -
          -
          -Tagged , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-battle.html b/posts/hack-a-day-hack-a-battle.html index b1eea9f..7c86699 100644 --- a/posts/hack-a-day-hack-a-battle.html +++ b/posts/hack-a-day-hack-a-battle.html @@ -20,10 +20,6 @@ wordpress_id: 922 wordpress_slug: hack-a-day-hack-a-battle --- -
          -

          Hack-A-Day: Hack-A-Battle

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Yesterday’s project was Hack-A-Battle (demo, source). It’s two dueling music visualizers (sound warning!). Red vs blue. As each hits the other with bullets, they lose heath. As a band takes damage, it gets dimmer and quieter. Eventually one band will win out and be the only one playing.

          @@ -38,9 +34,6 @@ wordpress_slug: hack-a-day-hack-a-battle
        5. I wasn’t super pleased with the code. It was so-so
        6. I wanted you to be able to upload your own songs and duel a friend
        7. -
          -
          -Tagged , , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-blog.html b/posts/hack-a-day-hack-a-blog.html index 0beecca..9d59343 100644 --- a/posts/hack-a-day-hack-a-blog.html +++ b/posts/hack-a-day-hack-a-blog.html @@ -17,18 +17,11 @@ wordpress_id: 832 wordpress_slug: hack-a-day-hack-a-blog --- -
          -

          Hack-A-Day: Hack-A-Blog

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is the Hack-A-Blog. (demo, source).

          Check out the link above to try out the live demo. I’m proud of getting this one done in time. I think the next days will be easier, as I figured some things out already.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-bug.html b/posts/hack-a-day-hack-a-bug.html index bb6eb24..b8ca0db 100644 --- a/posts/hack-a-day-hack-a-bug.html +++ b/posts/hack-a-day-hack-a-bug.html @@ -16,16 +16,9 @@ wordpress_id: 958 wordpress_slug: hack-a-day-hack-a-bug --- - + diff --git a/posts/hack-a-day-hack-a-chat.html b/posts/hack-a-day-hack-a-chat.html index 756aea8..18d5fed 100644 --- a/posts/hack-a-day-hack-a-chat.html +++ b/posts/hack-a-day-hack-a-chat.html @@ -17,19 +17,12 @@ wordpress_id: 835 wordpress_slug: hack-a-day-hack-a-chat --- -
          -

          Hack-A-Day: Hack-A-Chat

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Chat. (demo, source). It’s a free web chat for anyone that goes to the website.

          Check out the link above to try out the live demo.

          So far, not much easier. Another 8-hour day. I was hoping to do something with WebRTC today, but I didn’t get to it.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-clock.html b/posts/hack-a-day-hack-a-clock.html index 8899f1e..a58dc13 100644 --- a/posts/hack-a-day-hack-a-clock.html +++ b/posts/hack-a-day-hack-a-clock.html @@ -17,18 +17,11 @@ wordpress_id: 934 wordpress_slug: hack-a-day-hack-a-clock --- -
          -

          Hack-A-Day: Hack-A-Clock

          -

          Thursday’s project was Hack-A-Clock (demo, source). It is a decimal time clock, displaying the time in revolutionary french time (minus their weird calendar).

          https://tilde.za3k.com/hackaday/clock/

          This is another “phone it in” project but I think it would have been okay with more accompanying explanation and better styling.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-crop.html b/posts/hack-a-day-hack-a-crop.html index b6e1b94..d831e86 100644 --- a/posts/hack-a-day-hack-a-crop.html +++ b/posts/hack-a-day-hack-a-crop.html @@ -18,19 +18,12 @@ wordpress_id: 910 wordpress_slug: hack-a-day-hack-a-crop --- -
          -

          Hack-A-Day: Hack-A-Crop

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Crop (demo, source). It crops an image to a fixed size.

          I got help from several people on the CSS, thanks to instantly sharing my work via ngrok from my laptop. Thanks people! Thanks ngrok!

          Today’s project was in anticipation of showing off what I did at the end of the month. I want a small thumbnail for each project.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-dictionary.html b/posts/hack-a-day-hack-a-dictionary.html index 3922295..940a983 100644 --- a/posts/hack-a-day-hack-a-dictionary.html +++ b/posts/hack-a-day-hack-a-dictionary.html @@ -19,18 +19,11 @@ wordpress_id: 862 wordpress_slug: hack-a-day-hack-a-dictionary --- -
          -

          Hack-A-Day: Hack-A-Dictionary

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Dictionary (demo, source). It looks up words.

          OK, I’ll be honest. I’m phoning this one in. I needed a break.

          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-farm.html b/posts/hack-a-day-hack-a-farm.html index 1aa220e..dd460be 100644 --- a/posts/hack-a-day-hack-a-farm.html +++ b/posts/hack-a-day-hack-a-farm.html @@ -18,10 +18,6 @@ wordpress_id: 947 wordpress_slug: hack-a-day-hack-a-farm --- -
          -

          Hack-A-Day: Hack-A-Farm

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Farm (demo, source). It’s a simple tile-based RPG. You can walk around as a chicken, admire your house, and plant and harvest two types of crops.

          @@ -29,9 +25,6 @@ wordpress_slug: hack-a-day-hack-a-farm

          My main goal with this project was to work with spritesheets or animation before, which I had never done. Showing off the individual tiles is deliberate. Also, the game should respond well to smaller and larger screens, I hope.

          I had a good time with this one, and I’m happy with how much I got done in a day. I originally planned to do more fluid walking (it was called Hack-A-Walk), but it was more fun to add crops instead.

          I re-used some of the logic from Hack-A-Minigame and Hack-A-Snake. I’ve been finding d3 to be mildly useful, if a little annoying.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-hang.html b/posts/hack-a-day-hack-a-hang.html index 7fd1cd6..a18114b 100644 --- a/posts/hack-a-day-hack-a-hang.html +++ b/posts/hack-a-day-hack-a-hang.html @@ -20,10 +20,6 @@ wordpress_id: 918 wordpress_slug: hack-a-day-hack-a-hang --- -
          -

          Hack-A-Day: Hack-A-Hang

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Hang (demo, source). It’s a place to hang out. It has text chat, video, and audio.

          @@ -31,9 +27,6 @@ wordpress_slug: hack-a-day-hack-a-hang

          Unfortunately while everything works great on my machine, there’s a bad problem in production, and I ran out of time on this one. I’ll try to get it fixed before the end of the month if it’s easy.

          Hoo boy, this was one of the technically hardest ones so far. WebRTC is no joke. And not hard in a way where you have to think, hard in a way where the debugging tools are terrible. (Drag and drop was another tough one)

          -
          -
          -Tagged , , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-hell.html b/posts/hack-a-day-hack-a-hell.html index b636733..c3e4747 100644 --- a/posts/hack-a-day-hack-a-hell.html +++ b/posts/hack-a-day-hack-a-hell.html @@ -18,10 +18,6 @@ wordpress_id: 927 wordpress_slug: hack-a-day-hack-a-hell --- -
          -

          Hack-A-Day: Hack-A-Hell

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Hell (demo, source). It’s a bullet hell game combined with a music visualizer.

          @@ -29,9 +25,6 @@ wordpress_slug: hack-a-day-hack-a-hell

          I’m happy with this one, although it took way too long given yesterday’s project! I keep thinking I’ll be able to modify or re-use things quickly, and it’s not true.

          P.S. Taking the next day or two off for thanksgiving

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-homepage.html b/posts/hack-a-day-hack-a-homepage.html index dab6b12..1e232b5 100644 --- a/posts/hack-a-day-hack-a-homepage.html +++ b/posts/hack-a-day-hack-a-homepage.html @@ -17,19 +17,12 @@ wordpress_id: 851 wordpress_slug: hack-a-day-hack-a-homepage --- -
          -

          Hack-A-Day: Hack-A-Homepage

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s (catch-up) project is Hack-A-Homepage (demo, source). You can enter various information about yourself, such as links to your social media, and make your own little homepage.

          This one took about another hour. I think it’s okay, but today was definitely a “do the numbers” game to catch up. Tomorrow I want to do something more fun and new.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-line.html b/posts/hack-a-day-hack-a-line.html index ad5623c..b91e9af 100644 --- a/posts/hack-a-day-hack-a-line.html +++ b/posts/hack-a-day-hack-a-line.html @@ -19,19 +19,12 @@ wordpress_id: 879 wordpress_slug: hack-a-day-hack-a-line --- -
          -

          Hack-A-Day: Hack-A-Line

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Line (demo, source). Hack-A-Line is a 5-in-a-row game for two players. You play online against each other by sharing a link.

          I’m okay with this one, except that there’s one really bad display bug that kind of ruins it. I’m starting to develop a list of projects where I might want to go back and fix something after this month.

          I skipped yesterday because I needed a break.

          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-link-2.html b/posts/hack-a-day-hack-a-link-2.html index 9024d4b..5350909 100644 --- a/posts/hack-a-day-hack-a-link-2.html +++ b/posts/hack-a-day-hack-a-link-2.html @@ -16,18 +16,11 @@ wordpress_id: 931 wordpress_slug: hack-a-day-hack-a-link-2 --- -
          -

          Hack-A-Day: Hack-A-Link 2

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Wednesday’s project was Hack-A-Link 2 (demo, source). It’s an open link directory.

          This was very much a “phone it in” project. I do think it could have been better if I had added descriptions, too.

          -
          -
          -Tagged , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-link.html b/posts/hack-a-day-hack-a-link.html index 56bb4ae..d433d66 100644 --- a/posts/hack-a-day-hack-a-link.html +++ b/posts/hack-a-day-hack-a-link.html @@ -17,18 +17,11 @@ wordpress_id: 849 wordpress_slug: hack-a-day-hack-a-link --- - + diff --git a/posts/hack-a-day-hack-a-machine.html b/posts/hack-a-day-hack-a-machine.html index f359556..c72c78c 100644 --- a/posts/hack-a-day-hack-a-machine.html +++ b/posts/hack-a-day-hack-a-machine.html @@ -19,10 +19,6 @@ wordpress_id: 871 wordpress_slug: hack-a-day-hack-a-machine --- -
          -

          Hack-A-Day: Hack-A-Machine

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Machine (demo, source). It’s a whimsical VM you can play around with.

          @@ -49,9 +45,6 @@ wordpress_slug: hack-a-day-hack-a-machine
        8. the entire machine 100% working (I tested a little!)
        9. fixing all the bugs (there’s a particularly nasty one where you have to save before you run)
        10. -
          -
          -Tagged , , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-mandelbrot.html b/posts/hack-a-day-hack-a-mandelbrot.html index bba6f50..7244502 100644 --- a/posts/hack-a-day-hack-a-mandelbrot.html +++ b/posts/hack-a-day-hack-a-mandelbrot.html @@ -17,17 +17,10 @@ wordpress_id: 867 wordpress_slug: hack-a-day-hack-a-mandelbrot --- - + diff --git a/posts/hack-a-day-hack-a-minigame.html b/posts/hack-a-day-hack-a-minigame.html index 0ffc3ac..9aa408c 100644 --- a/posts/hack-a-day-hack-a-minigame.html +++ b/posts/hack-a-day-hack-a-minigame.html @@ -19,18 +19,11 @@ wordpress_id: 940 wordpress_slug: hack-a-day-hack-a-minigame --- -
          -

          Hack-A-Day: Hack-A-Minigame

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Minigame (demo, source). It’s the classic Snake, but the twist is you can only save and load the game. Rather than controlling the snake, it moves at random under AI control. You have to repeatedly save and load to make progress.

          Credit to Jeff Lait’s “Save Scummer” 7-day roguelike for inspiration. Although actually, this whole minigame is mostly for a future project!

          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-paste.html b/posts/hack-a-day-hack-a-paste.html index e9ccba5..068e526 100644 --- a/posts/hack-a-day-hack-a-paste.html +++ b/posts/hack-a-day-hack-a-paste.html @@ -17,18 +17,11 @@ wordpress_id: 842 wordpress_slug: hack-a-day-hack-a-paste --- -
          -

          Hack-A-Day: Hack-A-Paste

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Paste (demo, source). You can upload text and share it with others.

          Today’s project was an easy one, because I was busy. Took an hour or two.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-snake.html b/posts/hack-a-day-hack-a-snake.html index 5f43333..813b80c 100644 --- a/posts/hack-a-day-hack-a-snake.html +++ b/posts/hack-a-day-hack-a-snake.html @@ -18,17 +18,10 @@ wordpress_id: 944 wordpress_slug: hack-a-day-hack-a-snake --- -
          -

          Hack-A-Day: Hack-A-Snake

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Snake (demo, source). Yesterday I wrote a game where an AI plays snake. Today I thought, hey, I should release that with keyboard controls so people can just play Snake.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-song.html b/posts/hack-a-day-hack-a-song.html index 3213394..2214ad3 100644 --- a/posts/hack-a-day-hack-a-song.html +++ b/posts/hack-a-day-hack-a-song.html @@ -17,17 +17,10 @@ wordpress_id: 904 wordpress_slug: hack-a-day-hack-a-song --- - + diff --git a/posts/hack-a-day-hack-a-sound.html b/posts/hack-a-day-hack-a-sound.html index 58f1526..057bb2d 100644 --- a/posts/hack-a-day-hack-a-sound.html +++ b/posts/hack-a-day-hack-a-sound.html @@ -19,10 +19,6 @@ wordpress_id: 900 wordpress_slug: hack-a-day-hack-a-sound --- -
          -

          Hack-A-Day: Hack-A-Sound

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Sound (demo, source). It’s a small soundboard.

          @@ -38,9 +34,6 @@ wordpress_slug: hack-a-day-hack-a-sound

          Have fun. I think this was a pretty good toy.

          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-stats.html b/posts/hack-a-day-hack-a-stats.html index e655b7b..14e93db 100644 --- a/posts/hack-a-day-hack-a-stats.html +++ b/posts/hack-a-day-hack-a-stats.html @@ -17,18 +17,11 @@ wordpress_id: 896 wordpress_slug: hack-a-day-hack-a-stats --- -
          -

          Hack-A-Day: Hack-A-Stats

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Stats (demo, source). It displays web traffic statistics about Hack-A-Day.

          The original point of the project was to show some nice graphs in d3, as an effort to teach myself d3. But halfway through I got unbearably bored by “show a bunch of stats” as a project, so no d3. Whoops! You win some you lose some.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-tank.html b/posts/hack-a-day-hack-a-tank.html index a307941..e9973f1 100644 --- a/posts/hack-a-day-hack-a-tank.html +++ b/posts/hack-a-day-hack-a-tank.html @@ -18,17 +18,10 @@ wordpress_id: 907 wordpress_slug: hack-a-day-hack-a-tank --- - + diff --git a/posts/hack-a-day-hack-a-tile.html b/posts/hack-a-day-hack-a-tile.html index ac42d31..9c5ef04 100644 --- a/posts/hack-a-day-hack-a-tile.html +++ b/posts/hack-a-day-hack-a-tile.html @@ -19,10 +19,6 @@ wordpress_id: 874 wordpress_slug: hack-a-day-hack-a-tile --- -
          -

          Hack-A-Day: Hack-A-Tile

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-A-Tile (demo, source). It’s a tile-matching game like dominos.

          @@ -36,9 +32,6 @@ wordpress_slug: hack-a-day-hack-a-tile
        11. Either add a maximum size, or some constraint to stop you just making one long line.
        12. -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-a-tv-guide.html b/posts/hack-a-day-hack-a-tv-guide.html index 419272f..c59fffd 100644 --- a/posts/hack-a-day-hack-a-tv-guide.html +++ b/posts/hack-a-day-hack-a-tv-guide.html @@ -18,18 +18,11 @@ wordpress_id: 961 wordpress_slug: hack-a-day-hack-a-tv-guide --- -
          -

          Hack-A-Day: Hack-A-TV-Guide

          -

          It’s no longer november, but I’m still doing a project a day. It’s an all-month hack-a-thon!

          Yesterday’s project was Hack-A-TV-Guide (demo, source). It’s a TV Guide generated from Wikipedia. I got the idea from having written isrickandmortyout.com. Why not do the same thing, but for every show?

          I’m going to call this one a flop. There’s a good version of this project, but I ran out of time. Basically all it does is display info about a show, which is not very useful.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-an-adventure.html b/posts/hack-a-day-hack-an-adventure.html index 1188cea..1bd490c 100644 --- a/posts/hack-a-day-hack-an-adventure.html +++ b/posts/hack-a-day-hack-an-adventure.html @@ -18,17 +18,10 @@ wordpress_id: 950 wordpress_slug: hack-a-day-hack-an-adventure --- - + diff --git a/posts/hack-a-day-hack-an-asteroid.html b/posts/hack-a-day-hack-an-asteroid.html index 0193300..81515a4 100644 --- a/posts/hack-a-day-hack-an-asteroid.html +++ b/posts/hack-a-day-hack-an-asteroid.html @@ -18,18 +18,11 @@ wordpress_id: 859 wordpress_slug: hack-a-day-hack-an-asteroid --- -
          -

          Hack-A-Day: Hack-An-Asteroid

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-An-Asteroid (demo, source). It’s an asteroids clone with four levels.

          I’m pretty happy with this as my first “visual” game. I made it in Unity3D.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-an-experiment.html b/posts/hack-a-day-hack-an-experiment.html index acfd81e..d11de8e 100644 --- a/posts/hack-a-day-hack-an-experiment.html +++ b/posts/hack-a-day-hack-an-experiment.html @@ -16,18 +16,11 @@ wordpress_id: 937 wordpress_slug: hack-a-day-hack-an-experiment --- -
          -

          Hack-A-Day: Hack-An-Experiment

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project was Hack-An-Experiment (demo, source). It’s designed to present the basics of experimental algorithmics, while also getting me acquainted with d3.

          I have to say, I keep seeing d3 sold as a “graphing” library. And it’s definitely not. Maybe you could write one on top of it.

          -
          -
          -Tagged , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-an-icecube-failure.html b/posts/hack-a-day-hack-an-icecube-failure.html index 33416fb..00338f8 100644 --- a/posts/hack-a-day-hack-an-icecube-failure.html +++ b/posts/hack-a-day-hack-an-icecube-failure.html @@ -18,10 +18,6 @@ wordpress_id: 856 wordpress_slug: hack-a-day-hack-an-icecube-failure --- -
          -

          Hack-A-Day: Hack-An-Icecube (failure)

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          Today’s project is Hack-An-Icecube (demo, source). It’s a failed attempt to make a game in Unity3D, the game engine/framework.

          @@ -30,9 +26,6 @@ wordpress_slug: hack-a-day-hack-an-icecube-failure

          The ice cubes load and fall, and that’s it. No controls, no game. I ran out of time.

          This is an attempt to recreate One Hour Jam Cannon by juzek exactly. I ran out of time, but I made some progress getting Unity to work.

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-an-mmo.html b/posts/hack-a-day-hack-an-mmo.html index d4a4995..31f100e 100644 --- a/posts/hack-a-day-hack-an-mmo.html +++ b/posts/hack-a-day-hack-an-mmo.html @@ -18,18 +18,11 @@ wordpress_id: 954 wordpress_slug: hack-a-day-hack-an-mmo --- -
          -

          Hack-A-Day: Hack-An-MMO

          -

          It’s november, and I’ve decided this month that I’m going to do 30 projects in 30 days. It’s an all-month hack-a-thon!

          This is November 30th, so this will be the last project.

          Today’s project is Hack-An-MMO (demo, source). It’s a small collaborative art RPG. You can draw people, places, and things to populate the tiny world. Have fun!

          -
          -
          -Tagged , , , , . Bookmark the permalink.
          -
          + diff --git a/posts/hack-a-day-hack-an-uptime.html b/posts/hack-a-day-hack-an-uptime.html index e7ee837..e3a3e4a 100644 --- a/posts/hack-a-day-hack-an-uptime.html +++ b/posts/hack-a-day-hack-an-uptime.html @@ -15,18 +15,11 @@ wordpress_id: 964 wordpress_slug: hack-a-day-hack-an-uptime --- - + diff --git a/posts/hack-a-day-website.html b/posts/hack-a-day-website.html index 52c36a3..1680049 100644 --- a/posts/hack-a-day-website.html +++ b/posts/hack-a-day-website.html @@ -14,16 +14,9 @@ wordpress_id: 915 wordpress_slug: hack-a-day-website --- - + diff --git a/posts/hello-world.html b/posts/hello-world.html index 732306e..0d08a13 100644 --- a/posts/hello-world.html +++ b/posts/hello-world.html @@ -12,15 +12,8 @@ wordpress_id: 1 wordpress_slug: hello-world --- - + diff --git a/posts/hillsfar-lockpicking-20-complete.html b/posts/hillsfar-lockpicking-20-complete.html index 9141fd4..020758e 100644 --- a/posts/hillsfar-lockpicking-20-complete.html +++ b/posts/hillsfar-lockpicking-20-complete.html @@ -15,18 +15,11 @@ wordpress_id: 1263 wordpress_slug: hillsfar-lockpicking-20-complete --- - + diff --git a/posts/how-to-retire-for-infinity-years.html b/posts/how-to-retire-for-infinity-years.html index 07e6197..7e2a044 100644 --- a/posts/how-to-retire-for-infinity-years.html +++ b/posts/how-to-retire-for-infinity-years.html @@ -13,17 +13,10 @@ wordpress_id: 738 wordpress_slug: how-to-retire-for-infinity-years --- -
          -

          How to Retire For Infinity Years

          -

          I retired at 31, and get asked about it sometimes. I wrote an article about how the math of retirement, which explains how I retired early (and some some extent, why). And of course, how and why you might want to as well.

          I want to edit my finances articles, so this one is on my website instead: https://za3k.com/finance/retire_forever

          There will probably be some more finances articles to come soon.

          -
          -
          -Tagged . Bookmark the permalink.
          -
          + diff --git a/posts/html-css-cheatsheet.html b/posts/html-css-cheatsheet.html index 06974c5..3d8093e 100644 --- a/posts/html-css-cheatsheet.html +++ b/posts/html-css-cheatsheet.html @@ -16,16 +16,9 @@ wordpress_id: 1117 wordpress_slug: html-css-cheatsheet --- - + diff --git a/posts/installing-canon-imageclass-lbp-6000-on-64-bit-debian.html b/posts/installing-canon-imageclass-lbp-6000-on-64-bit-debian.html index 48b16c6..e18fc3b 100644 --- a/posts/installing-canon-imageclass-lbp-6000-on-64-bit-debian.html +++ b/posts/installing-canon-imageclass-lbp-6000-on-64-bit-debian.html @@ -16,10 +16,6 @@ wordpress_id: 263 wordpress_slug: installing-canon-imageclass-lbp-6000-on-64-bit-debian --- - + diff --git a/posts/installing-email-with-postfix-and-dovecot.html b/posts/installing-email-with-postfix-and-dovecot.html index ceaa9b5..8b408b1 100644 --- a/posts/installing-email-with-postfix-and-dovecot.html +++ b/posts/installing-email-with-postfix-and-dovecot.html @@ -18,10 +18,6 @@ wordpress_id: 358 wordpress_slug: installing-email-with-postfix-and-dovecot --- -
          -

          Installing email with Postfix and Dovecot (with Postgres)

          -

          I’m posting my email setup here. The end result will:

            @@ -338,10 +334,7 @@ non_smtpd_milters = inet:localhost:12345
          • The option to specify a SQL query as a configuration file option is wonderful. Thanks, Dovecot.
          • Overall, although it was a lot of work, I do feel like it was worth it to run my own email server.
          -
          -
          -Tagged , , , , , . Bookmark the permalink.
          -
          +
            diff --git a/posts/introducing-the-zorchpad-display-demo.html b/posts/introducing-the-zorchpad-display-demo.html index dbe925a..8b783d1 100644 --- a/posts/introducing-the-zorchpad-display-demo.html +++ b/posts/introducing-the-zorchpad-display-demo.html @@ -16,10 +16,6 @@ wordpress_id: 1043 wordpress_slug: introducing-the-zorchpad-display-demo --- -
            -

            Introducing the Zorchpad (+ display demo)

            -

            A friend of mine, Kragen Javier Sitaker has been designing something he calls the zorzpad (see link below). I can never remember the name, so as a joke my version became the “zorch pad”. We live on opposite sides of the globe, but we’ve picked up the same or similar hardware, and have been having fun developing the hardware and software together.

            The basic idea of the Zorchpad is to have one computer, indefinitely. It should keep working until you die. That means no battery that runs out, and no parts that go bad (and of course, no requirements to “phone home” for the latest update via wifi!). This is not your standard computer, and we’ve been trying a lot of experimental things. One of the main requirements is that everything be very low-power. He picked out the excellent apollo3 processor, which theoretically runs at around 1mW. In general, the zorchpad is made of closed-source hardware.

            @@ -39,10 +35,7 @@ wordpress_slug: introducing-the-zorchpad-display-demo

            According to the datasheet, the screen consumes 0.05-0.25mW without an update, and perhaps 0.175-0.35mW updating once per second. We haven’t yet measured the real power consumption for any of the components.

            The most obvious alternative is e-ink. E-ink has a muuuch slower refresh rate (maybe 1Hz if you hack it), and uses no power when not updating. Unfortunately it uses orders of magnitude more power for an update. Also, you can get much larger e-ink screens. The final zorchpad might have one, both or something else entirely! We’re in an experimentation phase.

            Datasheets, a bill of materials, and all source code can be found in my zorchpad repo. Also check out Kragen’s zorzpad repo.

            -
            -
            -Tagged , , , . Bookmark the permalink.
            -
            +
              diff --git a/posts/irc.html b/posts/irc.html index f185dc1..b599b43 100644 --- a/posts/irc.html +++ b/posts/irc.html @@ -17,10 +17,6 @@ wordpress_id: 225 wordpress_slug: irc --- - +
                diff --git a/posts/ircpuzzles-2024.html b/posts/ircpuzzles-2024.html index 4f9889a..8b8d428 100644 --- a/posts/ircpuzzles-2024.html +++ b/posts/ircpuzzles-2024.html @@ -15,18 +15,11 @@ wordpress_id: 1304 wordpress_slug: ircpuzzles-2024 --- -
                -

                ircpuzzles! 2024

                -

                I’m one of the designers for the yearly April Fools Puzzle Contest on IRC.

                Please feel free to join at https://blog.ircpuzzles.org/. The idea is that you solve puzzles in a chatroom, and get the password to the next chatroom, and so on. If you’re not familiar with IRC, don’t worry–a link is provided to connect in your browser, too.

                It’s a lot of fun, and I hope you enjoy!

                P.S. The contest should be up for a while, so don’t worry about being late to the party!

                -
                -
                -Tagged , , . Bookmark the permalink.
                -
                + diff --git a/posts/is-rick-and-morty-out-season-5.html b/posts/is-rick-and-morty-out-season-5.html index 02d8d2a..37b051e 100644 --- a/posts/is-rick-and-morty-out-season-5.html +++ b/posts/is-rick-and-morty-out-season-5.html @@ -15,15 +15,8 @@ wordpress_id: 591 wordpress_slug: is-rick-and-morty-out-season-5 --- - + diff --git a/posts/is-rick-and-morty-out-season-6.html b/posts/is-rick-and-morty-out-season-6.html index 23622de..73ccdd5 100644 --- a/posts/is-rick-and-morty-out-season-6.html +++ b/posts/is-rick-and-morty-out-season-6.html @@ -15,15 +15,8 @@ wordpress_id: 778 wordpress_slug: is-rick-and-morty-out-season-6 --- - + diff --git a/posts/life-logging-in-2019.html b/posts/life-logging-in-2019.html index 213cdc0..940218e 100644 --- a/posts/life-logging-in-2019.html +++ b/posts/life-logging-in-2019.html @@ -25,10 +25,6 @@ wordpress_id: 468 wordpress_slug: life-logging-in-2019 --- -
                -

                Life-logging in 2019

                -

                I’ve been keeping a time log since somewhere around 2011. A time log is a journal with a complete record of everything I do. I’ve become very consistent about it, so this seemed like a good time to write up my current habits for anyone interested.

                This is going to be a mixture of information about life-logging, how I organize things, and my current schedule, because they’re not really separate things.

                @@ -94,9 +90,6 @@ wordpress_slug: life-logging-in-2019

                Who else does this stuff?

                As far as I know I came up with this stuff independently. I’ve read plenty of time-management resources (which tend to be good) and experimental journaling resources (which tend to be… scarce?).

                • Lion Kimbro: “Make a complete map of every thought you think”. General journaling. Inteview.
                • Fenn Lipowitz (my roommate): Time log, with an emphasis on being completely machine-readable. Being machine-readable means click for pretty graphs. I took inspiration from how machine-parsable this was recently, but I want to keep my freehand sections too.
                • Bryan Bishop (acquaintance): meetlog, a system for recording conversations and topics of conversation. Overall I didn’t find this useful because I don’t know hundreds of people. The format is so-so, largely because the author can type very fast, including real-time transcripts. I got the inspiration to write topics of conversation while talking from this. I do something similar if I spend a long time thinking or researching, too.
                • Bullet Journaling: I dunno, if you’re super lost and don’t know how to write a journal/TODO list, some guy figured it out for you! It’s just the basics that you’d figure out on your own, but it may save time. The site is better than the book. I independently invented most of their notation for TODO lists, I don’t find it too useful for a journal. Other peoples’ bullet journal pages are also useful, not just the original author’s.
                -
                -
                -Tagged , , , , , , , , , , , , . Bookmark the permalink.
                -
                + diff --git a/posts/linux-print-server.html b/posts/linux-print-server.html index 96442ec..fac3016 100644 --- a/posts/linux-print-server.html +++ b/posts/linux-print-server.html @@ -15,10 +15,6 @@ wordpress_id: 293 wordpress_slug: linux-print-server --- -
                -

                Linux Print Server

                -

                So have you ever used a web printer and it was great?

                …

                @@ -42,9 +38,6 @@ tmpfs /printme tmpfs rw,nodev,nosuid,noexec,uid=nobody,gid=pr /printme IN_CLOSE_WRITE,IN_MOVED_TO lp $@/$#

                Note that this will preserve files after they’re printed, because my server is low-volume enough I don’t need to care.

              - -
              -Tagged , , . Bookmark the permalink.
              - + diff --git a/posts/mail-filtering-with-dovecot.html b/posts/mail-filtering-with-dovecot.html index 5c3a717..a42ae0e 100644 --- a/posts/mail-filtering-with-dovecot.html +++ b/posts/mail-filtering-with-dovecot.html @@ -18,10 +18,6 @@ wordpress_id: 370 wordpress_slug: mail-filtering-with-dovecot --- -
              -

              Mail filtering with Dovecot

              -

              This expands on my previous post about how to set up an email server.

              We’re going to set up a few spam filters in Dovecot under Debian. We’re going to use Sieve, which lets the user set up whichever filters they want. However, we’re going to run a couple pre-baked spam filters regardless of what the user sets up.

              @@ -106,9 +102,6 @@ sudo sievec spam-assassin.sieve
            1. You should also be able to create user-defined filters in Sieve, via the ManageSieve protocol. I tested this using a Sieve thunderbird extension. You’re on your own here.
            - -
            -Tagged , , , , , . Bookmark the permalink.
            - + diff --git a/posts/making-a-hardware-random-number-generator.html b/posts/making-a-hardware-random-number-generator.html index ab2ad0e..005aef1 100644 --- a/posts/making-a-hardware-random-number-generator.html +++ b/posts/making-a-hardware-random-number-generator.html @@ -15,10 +15,6 @@ wordpress_id: 598 wordpress_slug: making-a-hardware-random-number-generator --- -
            -

            Making a hardware random number generator

            -

            If you want a really good source of random numbers, you should get a hardware generator. But there’s not a lot of great options out there, and most people looking into this get (understandably) paranoid about backdoors. But, there’s a nice trick: if you combine multiple random sources together with xor, it doesn’t matter if one is backdoored, as long as they aren’t all backdoored. There are some exceptions–if the backdoor is actively looking at the output, it can still break your system. But as long as you’re just generating some random pads, instead of making a kernel entropy pool, you’re fine with this trick.

            So! We just need a bunch of sources of randomness. Here’s the options I’ve tried:

            @@ -33,10 +29,7 @@ while true; do done

            Great, now you have a good one-time-pad and can join ok-mixnet 🙂

            P.S. If you really know what you’re doing and like shooting yourself in the foot, you could try combining and whitening entropy sources with a randomness sponge like keccak instead.

            -
            -
            -Tagged , , . Bookmark the permalink.
            -
            +
              diff --git a/posts/making-my-finances-public.html b/posts/making-my-finances-public.html index 32bc589..65708a0 100644 --- a/posts/making-my-finances-public.html +++ b/posts/making-my-finances-public.html @@ -14,18 +14,11 @@ wordpress_id: 18 wordpress_slug: making-my-finances-public --- -
              -

              Making my finances public

              -

              I decided to post all of my purchases/income. This isn’t something I was totally comfortable with, but I couldn’t think of good reasons not to, and my default position is to release information. I think this is especially interesting since it’s not something I’ve seen made available before. Link: http://za3k.com/money.html

              I think the analysis may be useful to other hackers, as people tend to be insane and cost-insensitive around money. I think having another persons’s finances to look at for comparison is something I’ve wanted for various reasons at various times, and it’s not commonly available. My selfish motivations are to get other people to tell me how I should be saving lots of money, and to feel like my financial decisions are under scrutiny (which is good and bad).

               

              -
              -
              -Tagged , . Bookmark the permalink.
              -
              +
                diff --git a/posts/making-signs-on-wall-tiles.html b/posts/making-signs-on-wall-tiles.html index 5b4749a..00cb312 100644 --- a/posts/making-signs-on-wall-tiles.html +++ b/posts/making-signs-on-wall-tiles.html @@ -14,10 +14,6 @@ wordpress_id: 1307 wordpress_slug: making-signs-on-wall-tiles --- -
                -

                Making signs on wall tiles

                -

                I recently made an art project as a birthday gift for a young friend of mine.

                @@ -33,9 +29,6 @@ wordpress_slug: making-signs-on-wall-tiles

                Finally, I used a masonry bit to drill screw holes in the tile, so it could be attached to a door.

                She seemed to like it :). But now she wants to make one too. I’ll have to see if I can invent an easier way.

                -
                -
                -Tagged , . Bookmark the permalink.
                -
                + diff --git a/posts/markdown-support.html b/posts/markdown-support.html index 855b634..b905d4d 100644 --- a/posts/markdown-support.html +++ b/posts/markdown-support.html @@ -16,10 +16,6 @@ wordpress_id: 136 wordpress_slug: markdown-support --- -
                -

                Roll-your-own git push-to-deploy, and markdown support

                -

                Today I added support for development of za3k.com using git:

                # !/bin/sh
                @@ -31,9 +27,6 @@ echo "Deployed za3k.com"
                 

                and markdown support, via a cgi markdown wrapper someone wrote for apache (yes, I’m still using Apache).

                Edit: I ended up wanting support for tables in markdown, so I used Ruby‘s redcarpet markdown gem (the same thing Github uses, supports this style of tables as well as code blocks).

                CGI support via http://blog.tonns.org/2013/10/enabling-markdown-on-your-apache.html

                -
                -
                -Tagged , , , . Bookmark the permalink.
                -
                + diff --git a/posts/meeple-initiative-tracker.html b/posts/meeple-initiative-tracker.html index a98662b..8df358d 100644 --- a/posts/meeple-initiative-tracker.html +++ b/posts/meeple-initiative-tracker.html @@ -14,10 +14,6 @@ wordpress_id: 1094 wordpress_slug: meeple-initiative-tracker --- -
                -

                Meeple Initiative Tracker

                -

                I play D&D. There are a thousand initiative trackers out there. Here’s one I invented recently.

                First, each player picks a Meeple to be their character’s mini.

                @@ -25,9 +21,6 @@ wordpress_slug: meeple-initiative-tracker

                Quick, roll initiative! The players all roll, and so do the enemies. We grab a second meeple for each player, as well as second token for each enemy. This becomes the initiative tracker.

                This is the initiative order. It’s currently the red meeple hero’s turn. Next up will be the blue meeple hero, then the black cube enemy, and so on.

                -
                -
                -Tagged , . Bookmark the permalink.
                -
                + diff --git a/posts/migrating-an-existing-debian-installation-to-encrypted-root.html b/posts/migrating-an-existing-debian-installation-to-encrypted-root.html index 815fb19..f189205 100644 --- a/posts/migrating-an-existing-debian-installation-to-encrypted-root.html +++ b/posts/migrating-an-existing-debian-installation-to-encrypted-root.html @@ -15,10 +15,6 @@ wordpress_id: 606 wordpress_slug: migrating-an-existing-debian-installation-to-encrypted-root --- -
                -

                Migrating an existing debian installation to encrypted root

                -

                In this article, I migrate an existing debian 10 buster release, from an unencrypted root drive, to an encrypted root. I used a second hard drive because it’s safer–this is NOT an in-place migration guide. We will be encrypting / (root) only, not /boot. My computer uses UEFI. This guide is specific to debian–I happen to know these steps would be different on Arch Linux, for example. They probably work great on a different debian version, and might even work on something debian-based like Ubuntu.

                In part 2, I add an optional extra where root decrypts using a special USB stick rather than a keyboard passphrase, for unattended boot.

                @@ -42,9 +38,6 @@ wordpress_slug: migrating-an-existing-debian-installation-to-encrypted-root 3 135268352 937703054 382.6 GiB 8300 root_cipher # ext4-on-LUKS. ext4 mounted at / 4 526336 1050623 256.0 MiB 8300 boot # ext4, mounted at /boot
                1. Stop anything else running. We’re going to do a “live” copy from the running system, so at least stop doing anything else. Also most of the commands in this guide need root (sudo).
                2. Format the new disk. I used gdisk and you must select a gpt partition table. Basically I just made everything match the original. The one change I need is to add a /boot partition, so grub2 will be able to do the second stage. I also added partition labels with the c gdisk command to all partitions: boot, root_cipher, efi, and swap. I decided I’d like to be able to migrate to a larger disk later without updating a bunch of GUIDs, and filesystem or partition labels are a good method.
                3. Add encryption. I like filesystem-on-LUKS, but most other debian guides use filesystem-in-LVM-on-LUKS. You’ll enter your new disk password twice–once to make an encrypted partition, once to open the partition.
                  cryptsetup luksFormat /dev/disk/by-partlabel/root_cipher
                  cryptsetup open /dev/disk-by-partlabel/root_cipher root
                4. Make the filesystems. For my setup:
                  mkfs.ext4 /dev/disk/by-partlabel/root
                  mkfs.ext4 /dev/disk/by-partlabel/boot
                  mkfs.vfat /dev/disk/by-partlabel/efi
                5. Mount all the new filesystems at /mnt. Make sure everything (cryptsetup included) uses EXACTLY the same mount paths (ex /dev/disk/by-partlabel/boot instead of /dev/sda1) as your final system will, because debian will examine your mounts to generate boot config files.
                  mount /dev/disk/by-partlabel/root /mnt
                  mkdir /mnt/boot && mount /dev/disk/by-partlabel/boot /mnt/boot
                  mkdir /mnt/boot/efi && mount /dev/disk/by-partlabel/efi /mnt/boot/efi
                  mkdir /mnt/dev && mount --bind /dev /mnt/dev # for chroot
                  mkdir /mnt/sys && mount --bind /sys /mnt/sys
                  mkdir /mnt/proc && mount --bind /dev /mnt/proc
                6. Copy everything over. I used rsync -axAX, but you can also use cp -ax. To learn what all these options are, read the man page. Make sure to keep the trailing slashes in the folder paths for rsync.
                  rsync -xavHAX / /mnt/ --no-i-r --info=progress2
                  rsync -xavHAX /boot/ /mnt/boot/
                  rsync -xavHAX /boot/efi/ /mnt/boot/efi/
                7. Chroot in. You will now be “in” the new system using your existing kernel.
                  chroot /mnt
                8. Edit /etc/crypttab. Add:
                  root PARTLABEL=root_cipher none luks
                9. Edit /etc/fstab. Mine looks like this:
                  /dev/mapper/root / ext4 errors=remount-ro 0 1
                  PARTLABEL=boot /boot ext4 defaults,nofail 0 1
                  PARTLABEL=efi /boot/efi vfat umask=0077,nofail
                  PARTLABEL=swap none swap sw,nofail 0 0
                  tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
                10. Edit /etc/default/grub. On debian you don’t need to edit GRUB_CMDLINE_LINUX.
                  GRUB_DISABLE_LINUX_UUID=true
                  GRUB_ENABLE_LINUX_PARTLABEL=true
                11. Run grub-install. This will install the bootloader to efi. I forget the options to run it with… sorry!
                12. Run update-grub (with no options). This will update /boot/grub.cfg so it knows how to find your new drive. You can verify the file by hand if you know how.
                13. Run update-initramfs (with no options). This will update the initramfs so it can decrypt your root drive.
                14. If there were any warnings or errors printed in the last three steps, something is wrong. Figure out what–it won’t boot otherwise. Especially make sure your /etc/fstab and /etc/crypttab exactly match what you’ve already used to mount filesystems.
                15. Exit the chroot. Make sure any changes are synced to disk (you can unmount everything under /mnt in reverse order to make sure if you want)
                16. Shut down your computer. Remove your root disk and boot from the new one. It should work now, asking for your password during boot.
                17. Once you boot successfully and verify everything mounted, you can remove the nofail from /etc/fstab if you want.
                18. (In my case, I also set up the swap partition after successful boot.) Edit: Oh, also don’t use unencrypted swap with encrypted root. That was dumb.
                -
                -
                -Tagged , , . Bookmark the permalink.
                -
                + diff --git a/posts/mon8.html b/posts/mon8.html index eb6a7e0..75ce12c 100644 --- a/posts/mon8.html +++ b/posts/mon8.html @@ -16,10 +16,6 @@ wordpress_id: 539 wordpress_slug: mon8 --- -
                -

                mon(8)

                -

                I had previously hand-rolled a status monitor, status.za3k.com, which I am in the process of replacing (new version). I am replacing it with a linux monitoring daemon, mon, which I recommend. It is targeted at working system administrators. ‘mon’ adds many features over my own system, but still has a very bare-bones feeling.

                The old service, ‘simple-status‘ worked as follows:

                @@ -30,9 +26,6 @@ wordpress_slug: mon8
                • ‘simple-status’ does exactly one thing. ‘mon’ has many features, but does the minimum possible to provide each.
                • ‘simple-status’ is stateless. ‘mon’ has state.
                • ‘simple-status’ runs on demand. ‘mon’ is a daemon which runs monitors periodically.
                • Input is different. ‘simple-status’ is one script which takes a timeout. ‘mon’ listens for trap signals and talks to clients who want to know its state.
                • both can show an HTML status page that looks about the same, with some CGI parameters accepted.
                • ‘mon’ can also show a text status page.
                • both run monitors which return success based on status code, and provide extra information as standard output. ‘mon’ scripts are expected to be able to run on a list of hosts, rather than just one.
                • ‘mon’ has a config file. ‘simple-status’ has no options.
                • ‘simple-status’ is simple (27 lines). ‘mon’ has longer code (4922 lines)
                • ‘simple-status’ is written in bash, and does not expose this. ‘mon’ is written in perl, all the monitors are written in perl, and it allows inline perl in the config file
                • ‘simple-status’ limits the execution time of monitors. ‘mon’ does not.
                • ‘mon’ allows alerting, which call an arbitrary program to deliver the alert (email is common)
                • ‘mon’ supports traps, which are active alerts
                • ‘mon’ supports watchdog/heartbeat style alerts, where if a trap is not regularly received, it marks a service as failed.
                • ‘mon’ supports dependencies
                • ‘mon’ allows defining a service for several hosts at once

                Overall I think that ‘mon’ is much more complex, but only to add features, and it doesn’t have a lot of features I wouldn’t use. It still is pretty simple with a simple interface. I recommend it as both good, and overall better than my system.

                My only complaint is that it’s basically impossible to Google, which is why I’m writing a recommendation for it here.

                -
                -
                -Tagged , , , . Bookmark the permalink.
                -
                + diff --git a/posts/money-orders.html b/posts/money-orders.html index 479e474..9cda6f0 100644 --- a/posts/money-orders.html +++ b/posts/money-orders.html @@ -14,19 +14,12 @@ wordpress_id: 84 wordpress_slug: money-orders --- -
                -

                Money orders

                -
                A postal money order

                A postal money order

                Allow me to introduce you all to the postal money order. For $1.50, you can get the equivalent of a cashier’s check from the post office. It can only be cashed by whoever you make it out to, and it’s basically accepted as cash by every corporation. You can also just give someone a blank one, although that’s riskier to carry around for the obvious reasons.

                I was tired of checks bouncing. I can’t be bothered to make sure my account remains such-and-such, which means it happens sometimes, especially times like now when I’m poor. So I asked my landlord if I could pay by money order–he’d never heard of them before, but seemed okay with it when I explained (he’s a really good guy!).

                I went down to the bank and got out $2750, and headed to the post office. I asked for 9 money orders, each for $303. The postal worker really only made a couple funny faces about me being weird, although my friend said she was pretty loud about my walking out with that much cash-equivalent, it went pretty well. And I immediately endorsed all the money orders so now they can lie around the hose safely.

                Also, they come with attachable receipts (shown in the picture) in case you lose the check and need a replacement, so that’s nice.

                -
                -
                -Tagged , . Bookmark the permalink.
                -
                + diff --git a/posts/moreorcs-com.html b/posts/moreorcs-com.html index 9760244..5660f2d 100644 --- a/posts/moreorcs-com.html +++ b/posts/moreorcs-com.html @@ -17,10 +17,6 @@ wordpress_id: 104 wordpress_slug: moreorcs-com --- - + diff --git a/posts/multi-universe-rpg-toy.html b/posts/multi-universe-rpg-toy.html index c07d7b2..57e4138 100644 --- a/posts/multi-universe-rpg-toy.html +++ b/posts/multi-universe-rpg-toy.html @@ -15,10 +15,6 @@ wordpress_id: 210 wordpress_slug: multi-universe-rpg-toy --- -

              It was pretty fun in practice. I recommend using a text file over paper, since you’re going to do a lot of copy-paste. We had more fun with no GM than with a GM. No firm result yet on sandbox-worldbuilding vs players in scenarios; both seemed all right.

               

              - -
              -Tagged , , . Bookmark the permalink.
              - + diff --git a/posts/my-todo-list.html b/posts/my-todo-list.html index 55c015f..937a848 100644 --- a/posts/my-todo-list.html +++ b/posts/my-todo-list.html @@ -13,10 +13,6 @@ wordpress_id: 1100 wordpress_slug: my-todo-list --- -
              -

              My TODO list

              -

              I’ve had a couple people ask how my TODO list works, so here’s what I’ve been doing for the last few years. I have four lists in total: a calendar, a yearly list, a daily list, and a master list.

              A calendar.

              @@ -61,9 +57,6 @@ wordpress_slug: my-todo-list

              I try to minimize subtasks, in general. If I have a big task (clean the house), I’ll try to list it as “clean the bedroom”, etc as seperate tasks. If I have to, I’ll have a big task that references separate small tasks, but it’s the exception, and usually in the “more than a week” category.

              And that’s about all I have to say.

              -
              -
              -Tagged . Bookmark the permalink.
              -
              + diff --git a/posts/new-experimental-blog.html b/posts/new-experimental-blog.html index 7034738..2f90664 100644 --- a/posts/new-experimental-blog.html +++ b/posts/new-experimental-blog.html @@ -15,17 +15,10 @@ wordpress_id: 460 wordpress_slug: new-experimental-blog --- -
              -

              New experimental blog

              -

              I’m experimenting with using Jekyll in place of wordpress. If you want you can check out [dead link] which containly my weekly review process.

              If and when I do migrate, all the posts here will be magically migrated and the URLs will stay the same so links don’t break.

              Edit: I discontinued this experiment. It’s too hard to migrate the old stuff and keep it looking good, and I’d rather keep everything in one system.

              -
              -
              -Tagged , , . Bookmark the permalink.
              -
              + diff --git a/posts/ogs2021-27-million-go-games.html b/posts/ogs2021-27-million-go-games.html index 06fb674..855867c 100644 --- a/posts/ogs2021-27-million-go-games.html +++ b/posts/ogs2021-27-million-go-games.html @@ -15,15 +15,8 @@ wordpress_id: 715 wordpress_slug: ogs2021-27-million-go-games --- - + diff --git a/posts/ok-mixnet.html b/posts/ok-mixnet.html index 64d09fb..b6e77c7 100644 --- a/posts/ok-mixnet.html +++ b/posts/ok-mixnet.html @@ -15,18 +15,11 @@ wordpress_id: 579 wordpress_slug: ok-mixnet --- -
              -

              OK-Mixnet

              -

              I made a new cryptosystem called OK-Mixnet. It has “perfect” security, as opposed to the usual pretty-good security. (Of course, it’s not magic–if your computer is hacked, the cryptosystem isn’t gonna protect your data). Despite the name, it’s not really a mixnet per se, it just similarly defends against SIGINT.

              A writeup is here: https://za3k.com/ok-mixnet.md

              The alpha codebase is here: https://github.com/za3k/ok-mixnet

              Let me know if you’d like to join the open alpha. Email me your username and IP (you’ll need to forward a port).

              -
              -
              -Tagged , , . Bookmark the permalink.
              -
              + diff --git a/posts/old-wikipedia-urdu.html b/posts/old-wikipedia-urdu.html index e8a3f94..e5034a7 100644 --- a/posts/old-wikipedia-urdu.html +++ b/posts/old-wikipedia-urdu.html @@ -16,19 +16,12 @@ wordpress_id: 994 wordpress_slug: old-wikipedia-urdu --- -
              -

              Old Wikipedia (urdu)

              -

              Pakistan has blocked access to Wikipedia. Old Wikipedia is now available in urdu, and has the same content.

              We are working on more clearly communicating the Old Wikipedia is not Wikipedia in Urdu like we do in English–translation help would be welcome!

              https://ur.oldwikipedia.org

              پاکستان نے ویکیپیڈیا کی رسائی روک دی ہے۔ پرانا ویکیپیڈیا اب بزبان اردو میں دستیاب ہے، اور اس میں پہلے جیسی مواد ہے۔

              ہم انگریزی میں جیسے، ہم پرانے ویکیپیڈیا کو ویکیپیڈیا کے بطور بزبان اردو مذکور نہیں کہنے کی سعی کر رہے ہیں- ترجمہ کی مدد خوشبو دائی جائے گی!

              -
              -
              -Tagged , , , . Bookmark the permalink.
              -
              + diff --git a/posts/old-wikipedia.html b/posts/old-wikipedia.html index 2de7dd3..0e5d2bc 100644 --- a/posts/old-wikipedia.html +++ b/posts/old-wikipedia.html @@ -15,17 +15,10 @@ wordpress_id: 985 wordpress_slug: old-wikipedia --- - + diff --git a/posts/one-page-rpgs.html b/posts/one-page-rpgs.html index 5b7ae2d..134fac9 100644 --- a/posts/one-page-rpgs.html +++ b/posts/one-page-rpgs.html @@ -14,17 +14,10 @@ wordpress_id: 558 wordpress_slug: one-page-rpgs --- -
              -

              One-page RPGs

              -

              I’ve written a few simple storytelling games or RPGs lately. They’re all under two pages of rules, and currently they’re all untested (first test is Monday!).

              • Ultimate Archwizards vs the Dark Lord Game for 3-6 players including one GM. Guessing 2-4 hours. Imagine the final episode of a fight anime–everyone is mega-level powered. Relatively goofy. Suitable for beginner players, would work with a beginner GM too. Designed with zero prep in mind.
              • No, this cannot be! I AM INVINCIBLE! Game for 2-8 players, no GM. More fun with 4+. Guessing 30 minutes. Heroes want to kill Villains, Villains also want to be killed. Villains therefore send wave after slightly harder wave of enemies at the Heroes to level them up. Designed to be comfortable for complete beginners, while letting expert storytellers play in the same group. About half storytelling, half stats. Some gameplay is probably similar to Munchkin, but I haven’t really played Munchkin. There’s a little prep at the start for Villains (5 minutes), almost none for Heroes. The only one of the three that needs playtesting to balance.
              • Ninjas Ninjas Ninjas! Game for 3 players exactly, no GM. Not for beginners. Guessing 5-30 minutes once you learn the rules (up to you). Frantically fast storytelling, challenges are 30-60 seconds each. There are several roles including the main “narrator”, which players swap often. The main goal is to show how cool your ninja team is, but you do also complete your mission. Can be played with nothing, not even paper. Could be expanded to work with 4 or 5 players, but would need more work.

              Will post my two spy games in a bit once I type them up!

              -
              -
              -Tagged , . Bookmark the permalink.
              -
              + diff --git a/posts/one-screenshot-per-minute.html b/posts/one-screenshot-per-minute.html index d80be69..2d7bda8 100644 --- a/posts/one-screenshot-per-minute.html +++ b/posts/one-screenshot-per-minute.html @@ -14,10 +14,6 @@ wordpress_id: 748 wordpress_slug: one-screenshot-per-minute --- -
              -

              One Screenshot Per Minute

              -

              One of my archiving and backup contingencies is taking one screenshot per minute. You can also use this to get a good idea of how you spend your day, by turning it into a movie. Although with a tiling window manager like I use, it’s a headache to watch.

              I send the screenshots over to another machine for storage, so they’re not cluttering my laptop. It uses up 10-20GB per year.

              @@ -44,9 +40,6 @@ shred -zu "$IMG"

              ~/.profile

              export XAUTHORITY=/tmp/XAuthority

              I mentioned /bin/screenlog needs to know where XAuthority is. In Arch Linux this is all I need to do.

              -
              -
              -Tagged , . Bookmark the permalink.
              -
              + diff --git a/posts/open-nntp-server.html b/posts/open-nntp-server.html index 712ad8a..133b1ea 100644 --- a/posts/open-nntp-server.html +++ b/posts/open-nntp-server.html @@ -15,10 +15,6 @@ wordpress_id: 381 wordpress_slug: open-nntp-server --- -
              -

              Open NNTP server

              -

              I’m opening the NNTP server at nttp.za3k.com (TLS or unencrypted) to the public. These are the newsgroups currently on it. It is virtually zero-traffic (no users, but also users post little).

              If you don’t have a news reader, Thunderbird can do the job, or take a look at the list here.

              @@ -47,9 +43,6 @@ talk.science
              talk.writing
              talk.writing.collaborative
              test.posts

              -
              -
              -Tagged , , . Bookmark the permalink.
              -
              + diff --git a/posts/painting.html b/posts/painting.html index 4816c95..bba64fe 100644 --- a/posts/painting.html +++ b/posts/painting.html @@ -14,10 +14,6 @@ wordpress_id: 988 wordpress_slug: painting --- - + diff --git a/posts/pandora-songs.html b/posts/pandora-songs.html index 103f39c..428b4d7 100644 --- a/posts/pandora-songs.html +++ b/posts/pandora-songs.html @@ -14,15 +14,8 @@ wordpress_id: 93 wordpress_slug: pandora-songs --- - + diff --git a/posts/paper-archival.html b/posts/paper-archival.html index 22ca999..b8556f4 100644 --- a/posts/paper-archival.html +++ b/posts/paper-archival.html @@ -18,10 +18,6 @@ wordpress_id: 187 wordpress_slug: paper-archival --- -
              -

              Paper archival

              -

              Previous work:

                @@ -43,9 +39,6 @@ wordpress_slug: paper-archival

                QR codes and PDF417 look like our contenders. PDF417 turns out to not scan well (at all, but especially at large symbol sizes), so despite some nice features let’s pick QR codes. Back when I worked on a digital library I made a component to generate QR codes on the fly, and I know how to scan them on my phone and webcam already from that, so it would be pretty easy to use them.

                What density can we get on a sheet of A4 paper (8.25 in × 11.00 in, or 7.75in x 10.50in with half-inch margins)? I trust optar’s estimate (600 dpi = 200 pixels per inch) for printed/scanned pages since they seemed to test things. A max-size QR code is 144×144 pixels, or 0.72 x 0.72 inches at maximum density. We can fit 10 x 14 = 140 QR codes with maximum density on the page, less if we want decent spacing. That’s 140 QR codes x (2,953 bytes per QR code) = 413420 bytes = 413K per page before error correction.

                That’s totally comparable to the other approaches above, and you can read the results with off-the-shelf software.  Bam.

                -
              -
              -Tagged , , , , . Bookmark the permalink.
              -
              + diff --git a/posts/pixel-alphabet.html b/posts/pixel-alphabet.html index 21ec557..f77b8e1 100644 --- a/posts/pixel-alphabet.html +++ b/posts/pixel-alphabet.html @@ -16,15 +16,8 @@ wordpress_id: 334 wordpress_slug: pixel-alphabet --- - + diff --git a/posts/pixel-art-a-cool-cat.html b/posts/pixel-art-a-cool-cat.html index 86f39d2..422fe47 100644 --- a/posts/pixel-art-a-cool-cat.html +++ b/posts/pixel-art-a-cool-cat.html @@ -13,15 +13,8 @@ wordpress_id: 112 wordpress_slug: pixel-art-a-cool-cat --- - + diff --git a/posts/pompompom.html b/posts/pompompom.html index 45df643..7106757 100644 --- a/posts/pompompom.html +++ b/posts/pompompom.html @@ -15,18 +15,11 @@ wordpress_id: 1347 wordpress_slug: pompompom --- - + diff --git a/posts/postmortem-bs-store.html b/posts/postmortem-bs-store.html index 733fd18..eac5e94 100644 --- a/posts/postmortem-bs-store.html +++ b/posts/postmortem-bs-store.html @@ -16,10 +16,6 @@ wordpress_id: 523 wordpress_slug: postmortem-bs-store --- -
              -

              Postmortem: bs-store

              -

              Between 2020-03-14 and 2020-12-03 I ran an experimental computer storage setup. I movied or copied 90% of my files into a content-addressable storage system. I’m doing a writeup of why I did it, how I did it, and why I stopped. My hope is that it will be useful to anyone considering using a similar system.

              The assumption behind this setup, is that 99% of my files never change, so it’s fine to store only one, static copy of them. (Think movies, photos… they’re most of your computer space, and you’re never going to modify them). There are files you change, I just didn’t put them into this system. If you run a database, this ain’t for you.

              @@ -39,9 +35,6 @@ wordpress_slug: postmortem-bs-store
              • I thought I could cool 42 drives spinning, or at least a good portion of them. This was WRONG by far, and I am not sure how possible it is in a home setup. To give you an idea how bad this was, I had to write a monitor to shut off my computer if the drives went above 60C, and I was developing fevers in my bedroom (where the server is) from overheating. Not healthy.
              • unionfs has to check each backing drive. So we see 42 drives spin up. I have ideas on fixing this, but it doesn’t deal with the other problems
              • To fix this, you could use double-indirection.
                • Rather than pointing a symlink at a unionfs: /data/cat.mpg -> /bs-union/83/23/f58d8b9 (which accesses /zpool/bs0/83/23/f58d8b9)
                • Point a symlink at another symlink that points directly to the data: /data/cat.mpg -> /bs-indirect/83/23/f58d8b9 -> /zpool/bs0/83/23/f58d8b9
              • The idea is that backing stores are kinda “whatever, just shove it somewhere”. But, actually it would be good to have a collection in one place–not only to make it easy to copy, but to spin up only one drive when you go through everything in a collection. It might even be a good idea to have a separate drive for more frequently-accessed content. This wasn’t a huge deal for me since migrating existing content meant it coincidentally ended up pretty localized.
              • Because I couldn’t spin up all 42 drives, I had to keep a lot of the array unmounted, and mount the drives I needed into the unionfs manually.

              So although I could have tried to fix things with double-indirection, I decided there were some other disadvantages to symlinks: estimating sizes, making offsite backups foolproof. I decided to migrate off the system entirely. The migration went well, although it required running all the drives at once, so some hardware errors popped up. I’m currently on a semi-JBOD system (still on top of the same 7 ZRAID2 devices).

              Hopefully this is useful to someone planning a similar system someday. If you learned something useful, or there are existing systems I should have used, feel free to leave a comment.

              -
              -
              -Tagged , , , . Bookmark the permalink.
              -
              + diff --git a/posts/printable-todo-list.html b/posts/printable-todo-list.html index 583d709..617ab96 100644 --- a/posts/printable-todo-list.html +++ b/posts/printable-todo-list.html @@ -13,17 +13,10 @@ wordpress_id: 1282 wordpress_slug: printable-todo-list --- - + diff --git a/posts/printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi.html b/posts/printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi.html index bc67ac5..25301a2 100644 --- a/posts/printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi.html +++ b/posts/printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi.html @@ -15,10 +15,6 @@ wordpress_id: 517 wordpress_slug: printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi --- -
              -

              Printing on the Brother HL-2270DW printer using a Raspberry Pi

              -

              Although the below directions work on Raspberry Pi, they should also work on any other system. The brother-provided driver does not run on arm processors[1] like the raspberry pi, so we will instead use the open-source brlaser[2].

              Edit: This setup should also work on the following Brother monochrome printers, just substitute the name where needed:

              @@ -27,10 +23,7 @@ wordpress_slug: printing-on-the-brother-hl-2270dw-printer-using-a-raspberry-pi
              1. Get the latest raspbian image up and running on your pi, with working networking. At the time of writing the latest version is 10 (buster)–once 11+ is released this will be much easier. I have written a convenience tool[3] for this step, but you can also find any number of standard guides. Log into your raspberry pi to run the following steps
              2. (Option 1, not recommended) Upgrade to Debian 11 bullseye (current testing release). This is because we need brlaser 6, not brlaser 4 from debian 10 buster (current stable release). Then, install the print system and driver[2]:
                sudo apt-get update && sudo apt-get install lpr cups ghostscript printer-driver-brlaser
              3. (Option 2, recommended) Install ‘brlaser’ from source.
                1. Install print system and build tools
                  sudo apt-get update && sudo apt-get install lpr cups ghostscript git cmake libcups2-dev libcupsimage2-dev
                2. Download the source
                  wget https://github.com/pdewacht/brlaser/archive/v6.tar.gz && tar xf v6.tar.gz
                3. Build the source and install
                  cd brlaser-6 && cmake . && make && sudo make install
              4. Plug in the printer, verify that it shows up using sudo lsusb or sudo dmesg. (author’s shameful note: if you’re not looking, I find it surprisingly easy to plug USB B into the ethernet jack)
              5. Install the printer.
                1. Run sudo lpinfo -v | grep usb to get the device name of your printer. It will be something like usb://Brother/HL-2270DW%20series?serial=D4N207646
                  If you’re following this in the hopes that it will work on another printer, run sudo lpinfo -m | grep HL-2270DW to get the PPD file for your printer.
                2. Install and enable the printer
                  sudo lpadmin -p HL-2270DW -E -v usb://Brother/HL-2270DW%20series?serial=D4N207646 -m drv:///brlaser.drv/br2270dw.ppd
                  Note, -p HL-2270DW is just the name I’m using for the printer, feel free to name the printer whatever you like.
                3. Enable the printer (did not work for me)
                  sudo lpadmin -p HL-2270DW -E
                4. (Optional) Set the printer as the default destination
                  sudo lpoptions -d HL-2270DW
                5. (Optional) Set any default options you want for the printer
                  sudo lpoptions -p HL-2270DW -o media=letter
              6. Test the printer (I’m in the USA so we use ‘letter’ size paper, you can substitute whichever paper you have such as ‘a4’).
                1. echo "Hello World" | PRINTER=HL-2270DW lp -o media=letter (Make sure anything prints)
                2. cat <test document> | PRINTER=HL-2270DW lp -o media=letter (Print an actual test page to test alignment, etc)
                3. cat <test document> | PRINTER=HL-2270DW lp -o media=letter -o sides=two-sided-short-edge (Make sure duplex works if you plan to use that)
              7. (Optional) Set up an scp print server, so any file you copy to a /printme directory gets printed. For the 2270DW, I also have a /printme.duplex directory.

              Links
              [1] brother driver does not work on arm (also verified myself)
              [2] brlaser, the open-source Brother printer driver
              [3] rpi-setup, my convenience command-line script for headless raspberry pi setup
              [4] stack overflow answer on how to install one package from testing in debian

              -
              -
              -Tagged , , . Bookmark the permalink.
              -
              +
                diff --git a/posts/problem-log-txt.html b/posts/problem-log-txt.html index d591619..81a227f 100644 --- a/posts/problem-log-txt.html +++ b/posts/problem-log-txt.html @@ -16,10 +16,6 @@ wordpress_id: 767 wordpress_slug: problem-log-txt --- -
                -

                problem-log.txt

                -

                One of the more useful things I did was to start logging all my technical problems. Whenever I hit a problem, I write an entry in problem-log.txt. Here’s an example

                2022-08-02
                @@ -33,9 +29,6 @@ A: sudo cupsenable HL-2270DW
                 
                2018-10-21
                 Q: How do I connect to the small yellow router?

                Not every problem gets solved. Oh well.

                -
                -
                -Tagged , , . Bookmark the permalink.
                -
                + diff --git a/posts/qr-backup-2.html b/posts/qr-backup-2.html index 01d6df9..ebeace8 100644 --- a/posts/qr-backup-2.html +++ b/posts/qr-backup-2.html @@ -17,10 +17,6 @@ wordpress_id: 731 wordpress_slug: qr-backup-2 --- -
                -

                qr-backup

                -

                qr-backup is a program to back up digital documents to physical paper. Restore is done with a webcam, video camera, or scanner. Someday smart phone cameras will work.

                I’ve been making some progress on qr-backup v1.1. So far I’ve added:

                @@ -28,9 +24,6 @@ wordpress_slug: qr-backup-2

                v1.1 will be released when I make qr-backup feature complete:

                • Erasure coding, so you only need 70% of the QRs to do a restore.
                • Improve webcam restore slightly.

                v1.2 will focus on adding a GUI and support for Windows, Mac, and Android. Switching off zbar is a requirement to allow multi-platform support, and will likely improve storage density.

                -
                -
                -Tagged , , , , . Bookmark the permalink.
                -
                + diff --git a/posts/qr-backup-v1-1.html b/posts/qr-backup-v1-1.html index a4a2e27..02d54e1 100644 --- a/posts/qr-backup-v1-1.html +++ b/posts/qr-backup-v1-1.html @@ -15,10 +15,6 @@ wordpress_id: 792 wordpress_slug: qr-backup-v1-1 --- -
                -

                qr-backup v1.1

                -

                qr-backup v1.1 is released. qr-backup is a command-line Linux program. You can use it to back up a file as a series of QR codes. You can restore the QR codes using a webcam or scanner, and get back the original file.

                @@ -28,9 +24,6 @@ wordpress_slug: qr-backup-v1-1

                New features in v1.1:

                • Feature complete. New features are unlikely to be added. Future efforts will focus on quality, GUIs, and porting.
                • restore using qr-backup. Previously, the only restore was a bash one-liner (which still works).
                  • qr-backup --restore restores using the webcam
                  • qr-backup --restore IMAGE IMAGE IMAGE restores from scanned images
                • After generating a PDF backup, qr-backup automatically does a digital test of the restore process
                • Erasure coding. Lose up to 30% of QRs and restore will still work, as long as you are using qr-backup to restore
                • Increased code density, which about cancels out the erasure coding.
                • Back up directories and files. qr-backup makes a .tar file for you
                • Option to use password protection (encryption)
                • Option to print multiple copies of every QR code
                • Option to randomize order of QR codes
                • Optionally print extra cover sheet instructions on how to restore. For long-term archivists.
                • Option to add custom notes and labels to each page
                • Improved support for using qr-backup in a pipe
                • Various bugfixes
                • See CHANGELOG for complete details

                P.S. As a special request, if anyone is on OS X, let me know if it works for you?

                -
                -
                -Tagged , , . Bookmark the permalink.
                -
                + diff --git a/posts/qr-backup.html b/posts/qr-backup.html index 499acd0..4a704a2 100644 --- a/posts/qr-backup.html +++ b/posts/qr-backup.html @@ -16,18 +16,11 @@ wordpress_id: 587 wordpress_slug: qr-backup --- -
                -

                qr-backup

                -

                I made a new project called qr-backup. It’s a command-line program to back up any file to physical paper, using a number of QR codes. You can then restore it, even WITHOUT the qr-backup program, using the provided instructions.

                I’m fairly satisfied with its current state (can actually back up my files, makes a PDF). There’s definitely some future features I’m looking forward to adding, though.

                -
                -
                -Tagged , , , . Bookmark the permalink.
                -
                +
                  diff --git a/posts/raspberry-pi-comparison.html b/posts/raspberry-pi-comparison.html index 15d63d1..21f55db 100644 --- a/posts/raspberry-pi-comparison.html +++ b/posts/raspberry-pi-comparison.html @@ -15,15 +15,8 @@ wordpress_id: 709 wordpress_slug: raspberry-pi-comparison --- - + diff --git a/posts/relay-music.html b/posts/relay-music.html index 3627206..3e88db2 100644 --- a/posts/relay-music.html +++ b/posts/relay-music.html @@ -16,18 +16,11 @@ wordpress_id: 1368 wordpress_slug: relay-music --- - + diff --git a/posts/repulsive-dots.html b/posts/repulsive-dots.html index 11f4111..7f6b829 100644 --- a/posts/repulsive-dots.html +++ b/posts/repulsive-dots.html @@ -16,10 +16,6 @@ wordpress_id: 1407 wordpress_slug: repulsive-dots --- -
                  -

                  Repulsive Dots

                  -

                  Lately I’ve been messing about in Godot, a framework for making video games (similar to Unity).

                  @@ -44,9 +40,6 @@ wordpress_slug: repulsive-dots
                1. the bottom at (0, -1, 0)
                2. 10 equally spaced points around a circle. they alternate going up and down below the center line.
                  (±1/√5, sin(angle), cos(angle)) [projected onto the sphere]
                3. -
                  -
                  -Tagged , , . Bookmark the permalink.
                  -
                  + diff --git a/posts/roasted-chickpeas.html b/posts/roasted-chickpeas.html index 1d2fb5f..81427b4 100644 --- a/posts/roasted-chickpeas.html +++ b/posts/roasted-chickpeas.html @@ -13,10 +13,6 @@ wordpress_id: 341 wordpress_slug: roasted-chickpeas --- -
                  -

                  Roasted Chickpeas

                  -

                  roastedHere’s how you make roasted chickpeas (aka garbanzo beans):

                    @@ -28,9 +24,6 @@ wordpress_slug: roasted-chickpeas
                  1. Take them out and transfer them to a bowl. Add spices. I like salt, garlic powder, and pepper.

                   

                  -
                  -
                  -Tagged . Bookmark the permalink.
                  -
                  + diff --git a/posts/running-a-forge-server-on-headless-linux.html b/posts/running-a-forge-server-on-headless-linux.html index db320be..06dc530 100644 --- a/posts/running-a-forge-server-on-headless-linux.html +++ b/posts/running-a-forge-server-on-headless-linux.html @@ -13,10 +13,6 @@ wordpress_id: 13 wordpress_slug: running-a-forge-server-on-headless-linux --- -
                  -

                  Running a forge server on headless linux

                  -

                  I’ve had a lot of trouble getting Minecraft Forge to run headless. They have a friendly installer option that I just can’t use in my situation, but one of the devs seems actively hostile around providing help to headless servers, so I didn’t bother asking forge for help. I thought I’d write up what I had to do to get things working. As a warning, it requires some local work; you can’t do everything headless with these directions.

                  I’m running Minecraft 1.6.4, with the latest version of forge for that, 9.11.1.965.

                  @@ -34,10 +30,7 @@ wordpress_slug: running-a-forge-server-on-headless-linux

                Alternatively, you can install the entire server locally and copy it over.

                - -
                -Tagged . Bookmark the permalink.
                - +
                  diff --git a/posts/scan-organizer.html b/posts/scan-organizer.html index 38d22e8..57558b5 100644 --- a/posts/scan-organizer.html +++ b/posts/scan-organizer.html @@ -17,10 +17,6 @@ wordpress_id: 760 wordpress_slug: scan-organizer --- -
                  -

                  Scan Organizer

                  -

                  I scan each and every piece of paper that passes through my hands. All my old to-do lists, bills people send me in the mail, the manual for my microwave, everything. I have a lot of scans.

                  scan-organizer is a tool I wrote to help me neatly organize and label everything, and make it searchable. It’s designed for going through a huge backlog by hand over the course of weeks, and then dumping a new set of raw scans in whenever afterwards. I have a specific processing pipeline discussed below. However if you have even a little programming skill, I’ve designed this to be modified to suit your own workflow.

                  @@ -72,9 +68,6 @@ Perfect For Movie Lovers!

                  The point of scan-organizer is to filter based on tags. So only images I’ve marked as needing hand transcription are shown in this phase.

                  Phase 6: Verification

                   At the end of the whole process, I verify that each image looks good, and is correctly tagged and transcribed.

                  -
                  -
                  -Tagged , , , . Bookmark the permalink.
                  -
                  + diff --git a/posts/scheme-interpreter.html b/posts/scheme-interpreter.html index d5bfebb..be3f544 100644 --- a/posts/scheme-interpreter.html +++ b/posts/scheme-interpreter.html @@ -14,15 +14,8 @@ wordpress_id: 1087 wordpress_slug: scheme-interpreter --- - + diff --git a/posts/screen-and-tmux-ides.html b/posts/screen-and-tmux-ides.html index 3d02579..2c32fec 100644 --- a/posts/screen-and-tmux-ides.html +++ b/posts/screen-and-tmux-ides.html @@ -19,10 +19,6 @@ wordpress_id: 98 wordpress_slug: screen-and-tmux-ides --- -
                  -

                  Screen and Tmux IDEs

                  -

                  I don’t usually like IDEs. They’re hard to switch off of, they do too much. They don’t let me customize things, and I always have to use external tools anyway. I’d really rather do things with a bunch of small tools, the linux way. The problem is, if I close everything, I’ll have trouble getting started back up again. Saving state is one solution. Quick start-up is another. Basically, write a checklist for myself to make starting things up easy (open such-and-such files in the editor, start the server in debug mode, etc).

                  But we’re programmers, so obviously we’re not going to use a literal checklist. Instead, we’re going to write a little script to auto-start things in a new screen session:

                  @@ -42,9 +38,6 @@ bind r new-window -n "Game" "bash run.sh"

                  One thing I’d love is if this kind of file was easy to dump from the current state, especially for things like positioning windows, etc. A little assistance is available, but not too much. Ratpoison and tmux let you dump sizing information. Nothing outputs keybindings or a list of running programs with their windows.

                  There is a program called tmuxinator to let you write the same config in nested YAML of sessions, panes, and windows, which might appeal to some users.

                  Also, check out dtach if you don’t need panes and windows, and just want a detachable process.

                  -
                  -
                  -Tagged , , , , , , . Bookmark the permalink.
                  -
                  + diff --git a/posts/scroll-props.html b/posts/scroll-props.html index ca7b405..e59be16 100644 --- a/posts/scroll-props.html +++ b/posts/scroll-props.html @@ -15,10 +15,6 @@ wordpress_id: 1040 wordpress_slug: scroll-props --- - + diff --git a/posts/setting-up-ssl-certificates-using-startssl.html b/posts/setting-up-ssl-certificates-using-startssl.html index d5d017f..bb6c87e 100644 --- a/posts/setting-up-ssl-certificates-using-startssl.html +++ b/posts/setting-up-ssl-certificates-using-startssl.html @@ -16,10 +16,6 @@ wordpress_id: 28 wordpress_slug: setting-up-ssl-certificates-using-startssl --- - +
                    diff --git a/posts/software-section.html b/posts/software-section.html index a20652b..8e81258 100644 --- a/posts/software-section.html +++ b/posts/software-section.html @@ -13,16 +13,9 @@ wordpress_id: 596 wordpress_slug: software-section --- -
                    -

                    Software Section

                    -

                    I added a software section to my website. It lists all the software I’ve made over the years (well not all of it, but what I think is most useful to others).

                    I updated the archive page as well, mostly to remove the software that was there. As usual, I try to make sure all links to my website are good forever.

                    -
                    -
                    -Tagged . Bookmark the permalink.
                    -
                    + diff --git a/posts/sql-views.html b/posts/sql-views.html index 48c0b2b..5325059 100644 --- a/posts/sql-views.html +++ b/posts/sql-views.html @@ -16,10 +16,6 @@ wordpress_id: 243 wordpress_slug: sql-views --- -
                    -

                    SQL views

                    -

                    I decided I wanted to show (restricted) data views on the web in table form. Specifically, ‘stylish.db’ is a database provided by a chrome plugin. Here’s an example script, stylish.view, which displays the contents of that. It contains a comment saying which database it’s a query on, together with the query.

                    -- stylish.db
                    @@ -49,9 +45,6 @@ echo "</table></body></html>"
                    Action view /cgi-bin/view.cgi
                     AddHandler view .view
                     
                    -
                    -
                    -Tagged , , , . Bookmark the permalink.
                    -
                    + diff --git a/posts/steak-tartare-3.html b/posts/steak-tartare-3.html index 8ed5498..8352404 100644 --- a/posts/steak-tartare-3.html +++ b/posts/steak-tartare-3.html @@ -15,10 +15,6 @@ wordpress_id: 193 wordpress_slug: steak-tartare-3 --- -
                    -

                    Steak Tartare

                    -

                    steak tartare
                    Recipe is mostly from Tricia.

                    @@ -38,10 +34,7 @@ Recipe is mostly from Tricia.Separate whites and yolks (carefully removing all the white since we’re using raw yolks). Pour one egg yolk into each divot.

                  Read about raw beef and egg safety first to be well informed.

                  - -
                  -Tagged , , . Bookmark the permalink.
                  - +
                    diff --git a/posts/storage-prices-2019-07.html b/posts/storage-prices-2019-07.html index 404ba09..abcde57 100644 --- a/posts/storage-prices-2019-07.html +++ b/posts/storage-prices-2019-07.html @@ -15,16 +15,9 @@ wordpress_id: 458 wordpress_slug: storage-prices-2019-07 --- -
                    -

                    Storage Prices 2019-07

                    -

                    I did a survey of the cost of buying hard drives (of all sorts), CDs, DVDs, Blue-rays, and tape media (for tape drives).

                    Here are the 2019-07 results: https://za3k.com/archive/storage-2019-07.sc.txt
                    2018-10: https://za3k.com/archive/storage-2018-10.sc.txt
                    2018-06: https://za3k.com/archive/storage-2017-06.sc.txt
                    2018-01: https://za3k.com/archive/storage-2017-01.sc.txt

                    -
                    -
                    -Tagged , , . Bookmark the permalink.
                    -
                    + diff --git a/posts/storage-prices-2020-01.html b/posts/storage-prices-2020-01.html index c116970..12e940b 100644 --- a/posts/storage-prices-2020-01.html +++ b/posts/storage-prices-2020-01.html @@ -15,10 +15,6 @@ wordpress_id: 494 wordpress_slug: storage-prices-2020-01 --- -
                    -

                    Storage Prices 2020-01

                    -

                    I did a survey of the cost of buying hard drives (of all sorts), CDs, DVDs, Blue-rays, and tape media (for tape drives).

                    Here are the 2020-01 results: https://za3k.com/archive/storage-2020-01.sc.txt
                    2019-07: https://za3k.com/archive/storage-2019-07.sc.txt
                    2018-10: https://za3k.com/archive/storage-2018-10.sc.txt
                    2018-06: https://za3k.com/archive/storage-2017-06.sc.txt
                    2018-01: https://za3k.com/archive/storage-2017-01.sc.txt

                    @@ -27,9 +23,6 @@ wordpress_slug: storage-prices-2020-01

                    Some conclusions that are useful to know

                    • The cheapest option is tape media, but tape reader/writers for LTO 6, 7, and 8 are very expensive.
                    • The second-cheapest option is to buy external hard drives, and then open the cases and take out the hard drives. This gives you reliable drives with no warrantee.
                    • Blu-ray and DVD are more expensive than buying hard drives

                    -
                    -
                    -Tagged , , . Bookmark the permalink.
                    -
                    + diff --git a/posts/storage-prices-2022-07.html b/posts/storage-prices-2022-07.html index fef6aa8..6eb0f0d 100644 --- a/posts/storage-prices-2022-07.html +++ b/posts/storage-prices-2022-07.html @@ -15,10 +15,6 @@ wordpress_id: 754 wordpress_slug: storage-prices-2022-07 --- -
                    -

                    Storage Prices 2022-07

                    -

                    I did a survey of the cost of buying hard drives (of all sorts), microsd/sd, USB sticks, CDs, DVDs, Blu-rays, and tape media (for tape drives).

                    Here are the 2022-07 results: https://za3k.com/archive/storage-2022-07.sc.txt

                    @@ -27,9 +23,6 @@ wordpress_slug: storage-prices-2022-07
                    • Used or refurbished items were excluded. Multi-packs (5 USB sticks) were excluded except for optical media. Seagate drives were excluded, because they are infamous for having a high failure rate and bad returns process.
                    • Per TB, the cheapest options are:
                      • Tape media (LTO-8) at $4.74/TB, but I recommend against it. Tape drives are expensive ($3300 for LTO-8 new), giving a breakeven with HDDs at 350-400TB. Also, the world is down to only one tape drive manufacturer, so you could end up screwed in the future.
                      • 3.5″ internal spinning hard drives, at $13.75/TB. Currently the best option is 4TB drives.
                      • 3.5″ external spinning hard drives, at $17.00/TB. Currently the best is 18TB WD drives. If you want internal drives, you can buy external ones and open them up, although it voids your warranty.
                      • 2.5″ external spinning hard drives, at $24.50/TB. 4-5TB is best.
                      • Blu-ray disks, at $23.16: 25GB is cheapest, then 50GB ($32.38/TB), then 100GB ($54.72/TB).
                    • Be very careful buying internal hard drives online, and try to use a first-party seller. There are a lot of fake sellers and sellers who don’t actually provide a warranty. This is new in the last few years.

                    Changes since the last survey 2 years ago:

                    • Amazon’s search got much worse again. More sponsored listings, still refurbished drives.
                    • Sketchy third-party sellers are showing up on Amazon, and other vendors. At this point the problem is people not getting what they order, or getting it but without a promised warranty. I tried to filter out such Amazon sellers. I had trouble, even though I do the survey by hand. At this point it would be hard to safely buy an internal hard drive on Amazon.
                    • Spinning drives: Prices have not significantly dropped or risen for spinning hard drives, since 2020.
                    • Spinning drives: 18TB and 20TB 3.5″ hard drives became available
                    • SSDs: 8TB is available (in both 2.5 inch and M.2 formats)
                    • SSDs: Prices dropped by about half, per TB. The cheapest overall drives dropped about 30%.
                    • USB: 2TB dropped back off the market, and appears unavailable.
                    • USB: On the lower end, USB prices rose almost 2X. On the higher end, they dropped.
                    • MicroSD/SD: Prices dropped
                    • MicroSD/SD: A new player entered the cheap-end flash market, TEAMGROUP. Based on reading reviews, they make real drives, and sell them cheaper than they were available before. Complaints of buffer issues or problems with sustained write speeds are common.
                    • MicroSD/SD: It’s no longer possible to buy slow microsd/sd cards, which is good. Basically everything is class 10 and above.
                    • MicroSD/SD: Combine microsd and sd to show price comparison
                    • Optical: Mostly optical prices did not change. 100GB Blu-Ray dropped by 60-70%. Archival Blu-Ray, too.
                    • Tape: LTO-9 is available.
                    • Tape: The cost of LTO-8 tape dropped 50%, which makes it the cheapest option.
                    • Tape: This is not new, but there is still only one tape drive manufacturer (HP) since around the introduction of LTO-8.
                    -
                    -
                    -Tagged , , . Bookmark the permalink.
                    -
                    + diff --git a/posts/storage-prices-2023-01.html b/posts/storage-prices-2023-01.html index 1c72ab2..63e13ec 100644 --- a/posts/storage-prices-2023-01.html +++ b/posts/storage-prices-2023-01.html @@ -15,10 +15,6 @@ wordpress_id: 981 wordpress_slug: storage-prices-2023-01 --- -
                    -

                    Storage Prices 2023-01

                    -

                    I did a survey of the cost of buying hard drives (of all sorts), microsd/sd, USB sticks, CDs, DVDs, Blu-rays, and tape media (for tape drives).

                    I excluded used/refurbished options. Multi-packs (5 USB sticks) were excluded, except for optical media like CD-ROMs. Seagate drives were excluded because Seagate has a poor reputation.

                    @@ -47,9 +43,6 @@ wordpress_slug: storage-prices-2023-01
                  1. Optical: I stopped gathering data on the cost of BR-RE
                  2. Tape: LTO-7 tape drives are now available used, halving the break-even point on tape.
                  3. -
                    -
                    -Tagged , , . Bookmark the permalink.
                    -
                    + diff --git a/posts/streaming-linux-twitch-using-ffmpeg-and-alsa.html b/posts/streaming-linux-twitch-using-ffmpeg-and-alsa.html index 595886d..f6a75bd 100644 --- a/posts/streaming-linux-twitch-using-ffmpeg-and-alsa.html +++ b/posts/streaming-linux-twitch-using-ffmpeg-and-alsa.html @@ -17,10 +17,6 @@ wordpress_id: 509 wordpress_slug: streaming-linux-twitch-using-ffmpeg-and-alsa --- -
                    -

                    Streaming Linux->Twitch using ffmpeg and ALSA

                    -

                    I stopped using OBS a while ago for a couple reasons–the main one was that it didn’t support my video capture card, but I also had issues with it crashing or lagging behind with no clear indication of what it was doing. I ended up switching to ffmpeg for live streaming, because it’s very easy to tell when ffmpeg is lagging behind. OBS uses ffmpeg internally for video. I don’t especially recommend this setup, but I thought I’d document it in case someone can’t use a nice GUI setup like OBS or similar.

                    I’m prefer less layers, so I’m still on ALSA. My setup is:

                    @@ -71,10 +67,7 @@ pcm.!default {

                    Sources:

                    • jrayhawk on IRC (alsa)
                    • ffmpeg wiki and docs (pretty good)
                    • ALSA docs (not that good)
                    • Twitch documentation, which is pretty good once you can find it
                    • mark hills on how to set up snd-aloop

                    -
                    -
                    -Tagged , , , , . Bookmark the permalink.
                    -
                    +
                      diff --git a/posts/stylish.html b/posts/stylish.html index 97eb3e7..5c4c440 100644 --- a/posts/stylish.html +++ b/posts/stylish.html @@ -17,15 +17,8 @@ wordpress_id: 145 wordpress_slug: stylish --- - + diff --git a/posts/talk-in-debian.html b/posts/talk-in-debian.html index 64941d0..22f1e24 100644 --- a/posts/talk-in-debian.html +++ b/posts/talk-in-debian.html @@ -15,19 +15,12 @@ wordpress_id: 302 wordpress_slug: talk-in-debian --- -
                      -

                      Talk in Debian

                      -
                      1. Install packages talk, talkd, inetutils-inetd
                      2. Make sure users have set ‘mesg y’
                      3. ‘talk user@localhost’. Despite documentation, ‘talk user’ will not work.
                      -
                      -
                      -Tagged , , . Bookmark the permalink.
                      -
                      + diff --git a/posts/terminal-goal-rationality-techniques.html b/posts/terminal-goal-rationality-techniques.html index 788a638..139979a 100644 --- a/posts/terminal-goal-rationality-techniques.html +++ b/posts/terminal-goal-rationality-techniques.html @@ -16,10 +16,6 @@ wordpress_id: 234 wordpress_slug: terminal-goal-rationality-techniques --- -
                      -

                      Rationality Techniques 1

                      -

                      CFAR usually designs their techniques to help people Get Stuff Done. I have a failure mode of Getting The Wrong Stuff Done, so this time through their workshop, I focused on improving techniques to explicitly have steps around pursuing the correct terminal goals (which I’ll here call “terminal goal techniques”).

                      Original technique: Goal-factor
                      @@ -68,10 +64,7 @@ Another technique: Aversion murphyjitsu (“Imagine none of the positive listed

                    1. If you don’t want to, contradiction. Debug steps 1,2,3,4 and see where you went wrong until they’re in accord.

                    Theory on how to avoid lost purposes (mostly from Eliezer): Use Litany of Tarski a lot until you get the magic effect where you don’t start rationalizing to begin with (and generally don’t flinch away from learning about things/mistakes). Then, develop an aversion to lost purposes. The naive failure mode is to avoid noticing lost purposes if you have an aversion. (The simpler technique is Alien in a Body)

                    - -
                    -Tagged , , , . Bookmark the permalink.
                    - +
                      diff --git a/posts/testing-scrapers-faster.html b/posts/testing-scrapers-faster.html index bf45613..33cba6e 100644 --- a/posts/testing-scrapers-faster.html +++ b/posts/testing-scrapers-faster.html @@ -15,10 +15,6 @@ wordpress_id: 712 wordpress_slug: testing-scrapers-faster --- -
                      -

                      Testing scrapers faster

                      -

                      Recently I wrote a scraper. First, I downloaded all the HTML files. Next, I wanted to parse the content. However, real world data is pretty messy. I would run the scraper, and it would get partway though the file and fail. Then I would improve it, and it would get further and fail. I’d improve it more, and it would finish the whole file, but fail on the fifth one. Then I’d re-run things, and it would fail on file #52, #1035, and #553,956.

                      To make testing faster, I added a scaffold. Whenever my parser hit an error, it would print the filename (for me, the tester) and record the filename to an error log. Then, it would immediately exit. When I re-ran the parser, it would test all the files where it had hit a problem first. That way, I didn’t have to wait 20 minutes until it got to the failure case.

                      @@ -54,9 +50,6 @@ wordpress_slug: testing-scrapers-faster raise json.dump(result, out, sort_keys=True) # my desired output is one JSON dict per line out.write("\n")
                      -
                      -
                      -Tagged , , . Bookmark the permalink.
                      -
                      + diff --git a/posts/the-bible-translated-to-the-new-latin.html b/posts/the-bible-translated-to-the-new-latin.html index ad32a4b..15fdc5f 100644 --- a/posts/the-bible-translated-to-the-new-latin.html +++ b/posts/the-bible-translated-to-the-new-latin.html @@ -15,10 +15,6 @@ wordpress_id: 79 wordpress_slug: the-bible-translated-to-the-new-latin --- - + diff --git a/posts/the-double-lives-of-books.html b/posts/the-double-lives-of-books.html index 80b0b24..1a07d9c 100644 --- a/posts/the-double-lives-of-books.html +++ b/posts/the-double-lives-of-books.html @@ -13,10 +13,6 @@ wordpress_id: 46 wordpress_slug: the-double-lives-of-books --- -
                      -

                      The Double Lives of Books

                      -

                      Two forces pull at me: the desire to have few possessions and be able to travel flexibly, and the convenience of reading and referencing physical books. I discovered a third option: I have digital copies of all my books, so I can freely get rid of them at any time, or travel without inconvenience.

                      So that’s where we start. Here’s where I went.

                      @@ -37,10 +33,7 @@ wordpress_slug: the-double-lives-of-books
                    1. The zbarcam software (for scanning QR codes among other digital codes) is just absolute quality work and I can’t say enough good things about it. Scanning cards back into the computer was one of the most pleasant parts of this whole project. It has an intuitive command UI using all the format options I want, and camera feedback to show it’s scanned QR codes (which it does very quickly).
                    2. Future-proofed links to pirated books–the sort of link that usually goes down. I opted to use a SHA256 hash (the mysterious numbers at the bottom which form a unique signature generated from the content of the book) and provide a small page on my website which gives you a download based on that. This is what the QR code links to. I was hoping there was some way to provide that without involving me, but I’m unaware of any service available. Alice Monday suggested just typing the SHA hash into Google, which sounded like the sort of clever idea which might work. It doesn’t.
                    3. -
                      -
                      -Bookmark the permalink.
                      -
                      +
                        diff --git a/posts/the-life-changing-magic-of-tidying-up.html b/posts/the-life-changing-magic-of-tidying-up.html index c81d749..b18bc5d 100644 --- a/posts/the-life-changing-magic-of-tidying-up.html +++ b/posts/the-life-changing-magic-of-tidying-up.html @@ -14,10 +14,6 @@ wordpress_id: 406 wordpress_slug: the-life-changing-magic-of-tidying-up --- -
                        -

                        The life-changing magic of tidying up

                        -

                        Summary of “the life-changing magic of tidying up”:

                        Marie Kondo writes the “KonMari” method. The book ends up being as much about her mistakes in learning how to tidy as it is about how to tidy. The book conveys a certain positive energy that makes me want to recommend it, but the author also brings that energy in reaction to a kind of previous stress which accompanied tidying, which she does not seem to have completely dropped–if you are mysteriously anxious and feel you MUST discard everything after reading her book, this may be why.

                        @@ -128,9 +124,6 @@ always think in terms of category, not place
                      1. If you can say without a doubt, “I really life this!” no matter what anyone else says, and if you like yourself for having it, then ignore what other people think.
                      2. As for you, pour your time and passion into what brings you the most joy, your mission in life.
                      3. -
                        -
                        -Tagged , . Bookmark the permalink.
                        -
                        + diff --git a/posts/time-log-transcribed.html b/posts/time-log-transcribed.html index d95becf..ac029a4 100644 --- a/posts/time-log-transcribed.html +++ b/posts/time-log-transcribed.html @@ -13,17 +13,10 @@ wordpress_id: 545 wordpress_slug: time-log-transcribed --- -
                        -

                        Time log transcribed

                        -

                        I write down everything I do.

                        I transcribed my journals by hand. That is, I typed them up myself, instead of trying to use handwriting recognition or outsourcing to Mechanical Turk.

                        • I started on 2019-11-02, and finished today, 2020-11-20. That’s roughly one year.
                        • The 15 journals transcribed go from 2011 to 2020, 10 years. The 2011-2015 period is sparser.
                        • Of the 15 journals, 13 of them them I transcribed from the physical version. Two I had thrown out, because my old scanner was feed-through, and I had to destroy the spines to scan the books.
                        • That’s 1779 pages total (small ones, these are pocket journals). It’s also 32,000 lines, and 164K words. The text is 1.1MB, the scanned PNG files are 12GB (12000 MB).
                        • In general, it takes me 1 hour to transcribe the last week of notes. Going farther back is harder, partly because my handwriting gets more readable as time progresses (due at least as much to my choice of pen, as my neatness), and partly because I have a harder time guessing at poor handwriting without memory to fill it in, and partly because I didn’t use standard formats back then.
                        • I do have exact numbers I could check, but a lower bound based on this rate is that was overall 90 hours of work. It probably didn’t take more than twice that.
                        -
                        -
                        -Tagged . Bookmark the permalink.
                        -
                        + diff --git a/posts/time-management-optimizers-satisficers-minimizers.html b/posts/time-management-optimizers-satisficers-minimizers.html index 2560eca..c393af5 100644 --- a/posts/time-management-optimizers-satisficers-minimizers.html +++ b/posts/time-management-optimizers-satisficers-minimizers.html @@ -13,10 +13,6 @@ wordpress_id: 347 wordpress_slug: time-management-optimizers-satisficers-minimizers --- -
                        -

                        Time management: Optimizers, Satisficers, Minimizers

                        -

                        I want to talk about three different mindsets for time management and what constitutes “success”. In all three, I’ll talk about an example problem, let’s say “writing term papers” for a student who finds this difficult, and see how each might approach the goal. My goal is not to promote one of these as best, but rather to illustrate that all three exist. Each may be favored by one person or another, or by a single person depending on the situation. I hope that by describing them, I can help people understand one another’s motivations, so as to facilitate communication. The first mindset I will call optimization. The optimizer tries to spend their time gaining resources. For example, they might work to get money. They also attempt to increase the rate at which they can gain resources. Some optimizers even try to increase the rate at which they can e.g. network or learn skills. The intuition here is that most goods are somehow fungible, and that you should try to get as many fungible goods as possible. Example of term papers: An optimizer might try to learn to write term papers, or get faster and faster at writing papers. If they got good at writing term papers, they might try to write even more (for example, taking classes heavy on papers) to take advantage of these skills. Heuristics:

                          @@ -54,10 +50,7 @@ wordpress_slug: time-management-optimizers-satisficers-minimizers
                        • Bad at goals: Minimization deals with recurring activities, but can fail to offer any positive motivation for one-time end goals
                        • Negative mindset: Heavy focus on mistakes and resource use
                        -
                        -
                        -Tagged . Bookmark the permalink.
                        -
                        +
                          diff --git a/posts/timelog-analysis.html b/posts/timelog-analysis.html index aec69d4..61058af 100644 --- a/posts/timelog-analysis.html +++ b/posts/timelog-analysis.html @@ -15,10 +15,6 @@ wordpress_id: 796 wordpress_slug: timelog-analysis --- -
                          -

                          Timelog Analysis

                          -

                          I write down everything I do. Yesterday, I wrote a quick-and-dirty analysis program to get some stats on common habits.

                          The full results are here: drive floss food read sleep teeth tv wake walk youtube. Of course, what I write down doesn’t perfectly match what I do, so most of the absolute stats are vastly wrong. Comparative ones are still interesting.

                          @@ -82,9 +78,6 @@ wordpress_slug: timelog-analysis '2022-07': 'xxxxxxxxxxxxxxxxxxxxxxx', '2022-08': 'xxxxxxxxxxxxxxxxxxxxxxx', '2022-09': 'xxxxxxx'} -
                          -
                          -Tagged , , . Bookmark the permalink.
                          -
                          + diff --git a/posts/tiny-cute-vampire-bat.html b/posts/tiny-cute-vampire-bat.html index bc4b807..a60508f 100644 --- a/posts/tiny-cute-vampire-bat.html +++ b/posts/tiny-cute-vampire-bat.html @@ -17,17 +17,10 @@ wordpress_id: 279 wordpress_slug: tiny-cute-vampire-bat --- - +
                            diff --git a/posts/tty-audit-logs.html b/posts/tty-audit-logs.html index 4953f52..fae70d1 100644 --- a/posts/tty-audit-logs.html +++ b/posts/tty-audit-logs.html @@ -15,17 +15,10 @@ wordpress_id: 789 wordpress_slug: tty-audit-logs --- -
                            -

                            tty audit logs

                            -

                            I recently wrote a program that records all tty activity. That means bash sessions, ssh, raw tty access, screen and tmux sessions, the lot. I used script. The latest version of my software can be found on github.

                            Note that it’s been tested only with bash so far, and there’s no encryption built in.

                            To just record all shell commands typed, use the standard eternal history tricks (bash).

                            -
                            -
                            -Tagged , , . Bookmark the permalink.
                            -
                            + diff --git a/posts/understanding-gzip-2.html b/posts/understanding-gzip-2.html index 5ee8c68..de7b823 100644 --- a/posts/understanding-gzip-2.html +++ b/posts/understanding-gzip-2.html @@ -16,10 +16,6 @@ wordpress_id: 668 wordpress_slug: understanding-gzip-2 --- -
                            -

                            Understanding gzip

                            -

                            Let’s take a look at the gzip format. Why might you want to do this?

                            1. Maybe you’re curious how gzip works
                            2. Maybe you’re curious how DEFLATE works. DEFLATE is the “actual” compression method inside of gzip. It’s also used in zip, png, git, http, pdf… the list is pretty long.
                            3. Maybe you would like to write a gzip/DEFLATE decompressor. (A compressor is more complicated–understanding the format alone isn’t enough)
                            @@ -86,10 +82,7 @@ gzip test.bin
                            CodeBitsBinaryMeaningExtra Bits
                            0200Distance 10
                            4201Distance 5-61
                            5210Distance 7-81
                            6211Distance 9-122
                            abaa dynamic literal/end-of-block/length Huffman codes

                            Dynamic Huffman: Data stream decoding

                            • Now we’re ready to actually decode the data. Again, we’re reading a series of codes from the literal/end-of-block/length Huffman code table.
                            • Byte 25: 00000 10 0: Literal ‘a’, ‘b’, ‘a’
                            • Byte 26: 0 10 10 10 0: Literal ‘a’, ‘b’, ‘b’, ‘b’, ‘a’.
                            • Byte 27: 1110 10 0 1. Length 4. Whenever we read a length, we read a distance. The distance is a range, 7-8. The extra bit we read is 0b0=0, plus 7 is Distance 7. So we look back 7 bytes and copy 4. The new output is: baabbbabaab
                            • Byte 27-28: 1110100 1101 11 00 1: Length 3, Distance 9. We look back 9 bytes and copy 3. The new output is: abbabaababb
                            • Byte 28-29: 1011100 1111 01 1 00. Length 5, Distance 6. We look back 6 bytes and copy 5. The new output is: aababbaabab
                            • Byte 29: 111011 0 0. Literal ‘a’, ‘a’.
                            • Byte 30: 0 1111010. Literal ‘a’.
                            • Byte 30: 0 1111 01 0. Length 5, Distance 5. We look back 5 bytes and copy 5. The new output is: abaaaabaaa
                            • Byte 31: 10 111000: Literal ‘b’
                            • Byte 31: 10 1110 00: Length 4, Distance 1. We look back 1 byte and copy 4. The new output is: bbbbb
                            • Byte 32: 0 0 110000: Literal ‘a’, ‘a’.
                            • Byte 32: 00 1100 00: End-of block. Since this is the final block it’s also the end of the stream. This didn’t come up in the first example, but we zero-pad until the end of the byte when the block ends.
                            • The final output is a b a a b b b a baab abb aabab a a a abaaa b bbbb a a (spaces added for clarity), which is exactly what we expected.
                            -
                            -
                            -Tagged , , , . Bookmark the permalink.
                            -
                            +
                              diff --git a/posts/url-handlers-in-linux.html b/posts/url-handlers-in-linux.html index 2100707..8e09675 100644 --- a/posts/url-handlers-in-linux.html +++ b/posts/url-handlers-in-linux.html @@ -13,10 +13,6 @@ wordpress_id: 1398 wordpress_slug: url-handlers-in-linux --- -
                              -

                              URI handlers in Linux

                              -

                              When you click an email address, it automatically opens in your email client. But I don’t have an email client, I use webmail. I wrote a custom handler for Linux.

                              First write a program to open mailto links. Mailto links look like “mailto:me@mail.com” or maybe even “mailto:me@mail.com?subject=mysubject&body=mybody“. Test it by hand on a few links. Mine (mailto-opener) composes a new message using my webmail.

                              Next, write a desktop file for the opener. Here’s one:

                              @@ -39,9 +35,6 @@ Type=Application Name=transmission-remote magnet link opener Exec=transmission-remote <TRANSMISSION INSTANCE> -a

                              transmission-remote is the name of a command-line Linux program. It connects to an instance of Tranmission (a popular torrent client) running on another machine.

                              -
                              -
                              -Tagged . Bookmark the permalink.
                              -
                              + diff --git a/posts/usb-flash-longevity-testing-year-2.html b/posts/usb-flash-longevity-testing-year-2.html index 9142d4e..d8e8bd7 100644 --- a/posts/usb-flash-longevity-testing-year-2.html +++ b/posts/usb-flash-longevity-testing-year-2.html @@ -16,10 +16,6 @@ wordpress_id: 726 wordpress_slug: usb-flash-longevity-testing-year-2 --- -
                              -

                              USB Flash Longevity Testing – Year 2

                              -

                              Year 0 – I filled 10 32-GB Kingston flash drives with random data.
                              Year 1 – Tested drive 1, zero bit rot. Re-wrote the drive with the same data.
                              Year 2 – Re-tested drive 1, zero bit rot. Tested drive 2, zero bit rot. Re-wrote both with the same data.

                              They have been stored in a box on my shelf, with a 1-month period in a moving van (probably below freezing) this year.

                              @@ -27,9 +23,6 @@ wordpress_slug: usb-flash-longevity-testing-year-2

                              FAQs:

                              • Q: Why didn’t you test more kinds of drives?
                                A: Because I don’t have unlimited energy, time and money :). I encourage you to!
                              • Q: You know you powered the drive by reading it, right?
                                A: Yes, that’s why I wrote 10 drives to begin with. We want to see how something works if left unpowered for 1 year, 2 years, etc.
                              • Q: What drive model is this?
                                A: The drive tested was “Kingston Digital DataTraveler SE9 32GB USB 2.0 Flash Drive (DTSE9H/32GBZ)” from Amazon, model DTSE9H/32GBZ, barcode 740617206432, WO# 8463411X001, ID 2364, bl 1933, serial id 206432TWUS008463411X001005. It was not used for anything previously–I bought it just for this test.
                              • Q: Which flash type is this model?
                                A: We don’t know. If you do know, please tell me.
                              • Q: What data are you testing with?
                                A: (Repeatable) randomly generated bits
                              • Q: What filesystem are you using? / Doesn’t the filesystem do error correction?
                                A: I’m writing data directly to the drive using Linux’s block devices.

                              -
                              -
                              -Tagged , , , . Bookmark the permalink.
                              -
                              + diff --git a/posts/what-i-know-about-sleep-schedules.html b/posts/what-i-know-about-sleep-schedules.html index b59cbdf..3739279 100644 --- a/posts/what-i-know-about-sleep-schedules.html +++ b/posts/what-i-know-about-sleep-schedules.html @@ -14,10 +14,6 @@ wordpress_id: 581 wordpress_slug: what-i-know-about-sleep-schedules --- -
                              -

                              What I know about sleep schedules

                              -

                              I’ve had pretty irregular sleep schedules at times, so I have some tricks for making it more regular, or moving it back/forwards. Take everything here with a spoonful of salt. All of these tricks are relatively long term (1-4 weeks) and won’t instantly fix your schedule. Most of them are from experience, with some knowledge backing them.

                              Also, as a note, I wake up whenever I feel like it (I don’t have a day job). I have used many of these same tricks with an alarm and a day job when I had those, but I might be forgetting some details.

                              @@ -29,9 +25,6 @@ wordpress_slug: what-i-know-about-sleep-schedules

                              If you want to move your sleep schedule back a significant amount (more than just undoing a recent 1-hour forward shift) I recommend:

                              • Do it gradually. Half an hour a day, probably more like 15 minutes. Don’t bother trying to schedule it.
                              • Have caffein AS SOON as you get up (within 15-30 minutes, the sooner the better). This moves your circadian rhythm back, and also stops you falling back asleep. Again I don’t use alarms these days, but it’s a great combo to set a schedule.
                              • You can try adjusting it by taking small (0.5mg) melatonin supplements before your usual bedtime, if you’ve just drifted forward a bit
                              • Make sure you are getting natural light if possible. If you aren’t, or if it’s winter and you want extra help: hook up your lights, especially a sun lamp, to an automated timer so you get bright white light in your room around when you’d like to wake up. This can fix problems caused by blackout curtains.

                              Finally, I’ll leave you with a horrifying trick I learned while sleep-deprived at my first job after college. To get up while incredibly sleep deprived, set two alarms, about 30 minutes apart. After the first one, hit the alarm, chug significant portions of an energy drink on reflex while mostly asleep, then immediately fall back sleep. On the second one, actually wake up–the caffein will help keep you awake.

                              -
                              -
                              -Tagged , . Bookmark the permalink.
                              -
                              + diff --git a/posts/when-is-rick-and-morty-out-season-4-episode-6.html b/posts/when-is-rick-and-morty-out-season-4-episode-6.html index 2dd2db0..711aa90 100644 --- a/posts/when-is-rick-and-morty-out-season-4-episode-6.html +++ b/posts/when-is-rick-and-morty-out-season-4-episode-6.html @@ -15,15 +15,8 @@ wordpress_id: 513 wordpress_slug: when-is-rick-and-morty-out-season-4-episode-6 --- - + diff --git a/posts/whiteboard-partition.html b/posts/whiteboard-partition.html index dc1e7fa..178d8ff 100644 --- a/posts/whiteboard-partition.html +++ b/posts/whiteboard-partition.html @@ -14,10 +14,6 @@ wordpress_id: 201 wordpress_slug: whiteboard-partition --- -
                              -

                              Whiteboard Partition

                              -

                              I wanted a partition to divide my room, and I had a whiteboard sitting around. I sawed it into three parts, and connected them with hinges:

                              whiteboard 2

                              folding whiteboard

                              @@ -25,10 +21,7 @@ wordpress_slug: whiteboard-partition
                              whiteboard 1

                              hinge (back)

                              I’m a little embarrassed at having done all this, since it was obvious as soon as I started the partition was way too short to work. I figured I’d still get some experience woodworking (this is my first project). Here’s where it went:

                              whiteboard 5

                              and I never saw it again

                              -
                              -
                              -Tagged , . Bookmark the permalink.
                              -
                              +
                                diff --git a/posts/whoosh.html b/posts/whoosh.html index 7850f65..b1ee212 100644 --- a/posts/whoosh.html +++ b/posts/whoosh.html @@ -15,16 +15,9 @@ wordpress_id: 282 wordpress_slug: whoosh --- - + diff --git a/posts/whsh.html b/posts/whsh.html index 3838374..5d84f13 100644 --- a/posts/whsh.html +++ b/posts/whsh.html @@ -16,16 +16,9 @@ wordpress_id: 288 wordpress_slug: whsh --- - + diff --git a/posts/wip-dead-tree-publishing-2.html b/posts/wip-dead-tree-publishing-2.html index d336c67..4cf4bd3 100644 --- a/posts/wip-dead-tree-publishing-2.html +++ b/posts/wip-dead-tree-publishing-2.html @@ -15,20 +15,13 @@ wordpress_id: 153 wordpress_slug: wip-dead-tree-publishing-2 --- - +
                                  diff --git a/posts/wip-dead-tree-publishing-3.html b/posts/wip-dead-tree-publishing-3.html index e5a72ef..1d17e84 100644 --- a/posts/wip-dead-tree-publishing-3.html +++ b/posts/wip-dead-tree-publishing-3.html @@ -16,18 +16,11 @@ wordpress_id: 167 wordpress_slug: wip-dead-tree-publishing-3 --- -
                                  -

                                  WIP: Dead Tree Publishing 3

                                  -

                                  Compared with last update,  the Dead Tree Publishing website is looking nicer.

                                  Looking better

                                  Looking better

                                  It’s served over HTTPS now (not needed for security, but it puts people at ease and enabled Chrome’s autocomplete) and you can order multiple books at a time.

                                  Other than some more visual improvements, the main thing missing is proper detection of page size — my server doesn’t understand about page margins, so it things books are bigger than they really are.

                                  -
                                  -
                                  -Tagged , , , . Bookmark the permalink.
                                  -
                                  + diff --git a/posts/wip-dead-tree-publishing-4.html b/posts/wip-dead-tree-publishing-4.html index 1d31c4a..3c2775d 100644 --- a/posts/wip-dead-tree-publishing-4.html +++ b/posts/wip-dead-tree-publishing-4.html @@ -15,10 +15,6 @@ wordpress_id: 214 wordpress_slug: wip-dead-tree-publishing-4 --- - +
                                    diff --git a/posts/wip-dead-tree-publishing.html b/posts/wip-dead-tree-publishing.html index 849e63d..bcd3e72 100644 --- a/posts/wip-dead-tree-publishing.html +++ b/posts/wip-dead-tree-publishing.html @@ -18,10 +18,6 @@ wordpress_id: 147 wordpress_slug: wip-dead-tree-publishing --- -
                                    -

                                    WIP: Dead Tree Publishing

                                    -

                                    I started work on my publishing website again (Dead Tree Publishing). The idea is to make a really, really convenient way to get a physical copy of a PDF/epub book. Think: “send me a printed copy of this mailing list / tumblr”. Right now things are looking encouraging.

                                    I use a “back end” publisher who does all the actual printing, and the one I was using before charged quite a lot and wasn’t amazingly fast; I just used them because they were the only publisher who was at all up to date. Seriously, order of $100 – $200 for a 100 page book, just absolutely ridiculous levels of expensive. I’m switching over to a new publisher who can offer that same book for something like $7 (maybe $12 in hardback), which is absolutely reasonable, and with similar 2-week turnaround times.

                                    @@ -30,10 +26,7 @@ wordpress_slug: wip-dead-tree-publishing

                                    Then I tell you what your ordering options are (hardcover, softcover, color), and what they cost. I’m also supposed to ask you your address to ship the book, and for you to pay for it,  but those aren’t done yet.

                                    1

                                    Book-buying options

                                    Hopefully in the next day or two I’ll have something up and running so people can order books, and then make it gradually nicer! I’m very excited about this website existing.

                                    -
                                    -
                                    -Tagged , , , , , . Bookmark the permalink.
                                    -
                                    +
                                      diff --git a/posts/xp-boot-usb-stick.html b/posts/xp-boot-usb-stick.html index 2feec3c..52597f5 100644 --- a/posts/xp-boot-usb-stick.html +++ b/posts/xp-boot-usb-stick.html @@ -19,10 +19,6 @@ wordpress_id: 158 wordpress_slug: xp-boot-usb-stick --- -
                                    - -
                                    -Tagged , , , , , , . Bookmark the permalink.
                                    - + diff --git a/posts/year-in-review.html b/posts/year-in-review.html index 5f1a06c..6b3b50b 100644 --- a/posts/year-in-review.html +++ b/posts/year-in-review.html @@ -14,10 +14,6 @@ wordpress_id: 229 wordpress_slug: year-in-review --- -
                                    -

                                    Year in Review

                                    -

                                    Sep, Oct, Nov 2014: Vietnam.

                                    A year ago, I left my job at Streak and moved to Vietnam. I felt like I needed change. Vietnam ended up being wonderful; I was really glad I travelled with my friends Richard and Kathy, which ended up making the experience a hundred times better than it would have been otherwise. The basic environment was: everything is cheap, I newly have endless free time, I was automatically prompted by my friends in the evenings and sometimes during the day to go on small novel adventures involving physical activity, and I had little internet access. This is probably my perfect environment, and I was functioning very well (the vietnamese diet also has small, well-balanced meals which might have helped). For some reason, I was also able to intensely single-task. [I’d like to write more about what Vietnam is like, but this article is quite long enough as it is]

                                    @@ -186,9 +182,6 @@ Success: Not done
                                    Description: Gwern writes about how to protect links against link rot. He does this for all links on his website. I ambitiously plan to automatically save a copy of every site I visit (not just the actual URL I visit ideally, but the whole page).
                                    - -
                                    -Tagged , . Bookmark the permalink.
                                    -
                                    + diff --git a/posts/youtube-autodl.html b/posts/youtube-autodl.html index 5fba517..c12d289 100644 --- a/posts/youtube-autodl.html +++ b/posts/youtube-autodl.html @@ -16,19 +16,12 @@ wordpress_id: 745 wordpress_slug: youtube-autodl --- -
                                    -

                                    youtube-autodl

                                    -

                                    I just wrote the first pass at youtube-autodl, a tool for automatically downloading youtube videos. It’s inspired by Popcorn Time, a similar program I never ended up using, for automatically pirating the latest video from a TV series coming out.

                                    You explain what you want to download, where you want to download it to, and how to name videoes. youtube-autodl takes care of the rest, including de-duplication and downloading things ones.

                                    The easiest way to understand it is to take a look at the example config file, which is my actual config file.

                                    Personally, I find youtube is pushing “watch this related” video and main-page feeds more and more, to the point where they actually succeed with me. I don’t want to accidentally waste time, so I wanted a way to avoid visiting youtube.com. This is my solution.

                                    -
                                    -
                                    -Tagged , , . Bookmark the permalink.
                                    -
                                    + diff --git a/posts/zorchpad-keyboard-update.html b/posts/zorchpad-keyboard-update.html index ee35638..256921a 100644 --- a/posts/zorchpad-keyboard-update.html +++ b/posts/zorchpad-keyboard-update.html @@ -14,10 +14,6 @@ wordpress_id: 1372 wordpress_slug: zorchpad-keyboard-update --- -
                                    -

                                    Zorchpad keyboard update

                                    -

                                    The Zorchpad needs a custom keyboard. Its power budget is only 1mW, and there’s just nothing available in that range. So, I need to make a custom keyboard. I started reading up on how to make your own–especially the electronics.

                                    I don’t know how to make a PCB:

                                    @@ -42,9 +38,6 @@ wordpress_slug: zorchpad-keyboard-update

                                    And I’ve started streaming some development of a case and keyboard on Twitch (Tue/Thu 12pm noon, EDT). Feel free to join! Anyone can watch, but you need an account to chat.

                                    -
                                    -
                                    -Tagged , . Bookmark the permalink.
                                    -
                                    + diff --git a/posts/zorchpad-update-cardboard-mockup-mk1.html b/posts/zorchpad-update-cardboard-mockup-mk1.html index b20539e..8b735c5 100644 --- a/posts/zorchpad-update-cardboard-mockup-mk1.html +++ b/posts/zorchpad-update-cardboard-mockup-mk1.html @@ -13,10 +13,6 @@ wordpress_id: 1363 wordpress_slug: zorchpad-update-cardboard-mockup-mk1 --- -
                                    -

                                    Zorchpad Update: Cardboard mockup, mk1

                                    -

                                    I’ve gotten to the point in Zorchpad development where I’d like to see how the whole thing fits together and if there will be any insurmountable problems. We’re still trying to figure out some things like–will it have one screen or two? What form factor will it be? Will the keyboard fold in half? So I put together a cardboard model.

                                    @@ -40,9 +36,6 @@ wordpress_slug: zorchpad-update-cardboard-mockup-mk1
                                  1. It’s hard to get the screen to stay propped up on my cardboard model. I’d like a solution that doesn’t use hinges, since those tend to loosen over time.
                                  2. My next step will probably be to make a custom working keyboard. Then, I’ll make an entire working zorchpad. Both will be either cardboard or 3d-printed (whichever is easier).

                                    -
                                    -
                                    -Tagged . Bookmark the permalink.
                                    -
                                    + diff --git a/posts/zorchpad-update-first-3d-print.html b/posts/zorchpad-update-first-3d-print.html index 64c1243..44616c5 100644 --- a/posts/zorchpad-update-first-3d-print.html +++ b/posts/zorchpad-update-first-3d-print.html @@ -13,10 +13,6 @@ wordpress_id: 1384 wordpress_slug: zorchpad-update-first-3d-print --- -
                                    -

                                    Zorchpad update: first 3d print

                                    -

                                    I’ve been designing a keyboard and case for the zorchpad.

                                    @@ -34,9 +30,6 @@ wordpress_slug: zorchpad-update-first-3d-print

                                    The same pieces, spread out.

                                    There were many, many problems with the first design and the first print. I’ll talk about them (and my fixes) in my next post.

                                    -
                                    -
                                    -Tagged . Bookmark the permalink.
                                    -
                                    + diff --git a/posts/zorchpad-update-keyboard.html b/posts/zorchpad-update-keyboard.html index 5bfaec3..c23e0e2 100644 --- a/posts/zorchpad-update-keyboard.html +++ b/posts/zorchpad-update-keyboard.html @@ -14,10 +14,6 @@ wordpress_id: 1342 wordpress_slug: zorchpad-update-keyboard --- -
                                    -

                                    Zorchpad Update: Keyboard

                                    -

                                    Another update on the zorchpad. We now have a working 16-button keyboard (sadly no QWERTY yet). Here you can see a simple typing program that shows what you type on screen.

                                    @@ -29,9 +25,6 @@ wordpress_slug: zorchpad-update-keyboard
                                  3. Sound output (simple beeps for now)
                                  4. Keyboard input
                                  5. -
                                    -
                                    -Tagged , . Bookmark the permalink.
                                    -
                                    + diff --git a/templates/all_links.mustache.html b/templates/all_links.mustache.html new file mode 100644 index 0000000..3003ce4 --- /dev/null +++ b/templates/all_links.mustache.html @@ -0,0 +1,5 @@ +
                                      +{{# deadlinks }} +
                                    1. {{partial}} [orig] [src] +{{/ deadlinks }} +
                                    diff --git a/templates/category.mustache.html b/templates/category.mustache.html index f558658..c3d1613 100644 --- a/templates/category.mustache.html +++ b/templates/category.mustache.html @@ -3,5 +3,5 @@ {{# posts.first10 }} - {{& post }} + {{& html }} {{/ posts.first10 }} diff --git a/templates/feed.mustache.html b/templates/feed.mustache.html index 7406b84..2819e39 100644 --- a/templates/feed.mustache.html +++ b/templates/feed.mustache.html @@ -9,7 +9,7 @@ > {{title}} - + {{web_root}} {{title}} {{now_rfc822}} diff --git a/templates/index.mustache.html b/templates/index.mustache.html new file mode 100644 index 0000000..3a61f0e --- /dev/null +++ b/templates/index.mustache.html @@ -0,0 +1,3 @@ +{{# posts.first10 }} + {{& html }} +{{/ posts.first10 }} diff --git a/templates/layout.mustache.html b/templates/layout.mustache.html index 97be356..d9f4627 100644 --- a/templates/layout.mustache.html +++ b/templates/layout.mustache.html @@ -5,7 +5,7 @@ - + - + @@ -30,12 +30,12 @@ :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} - + - + @@ -51,16 +51,16 @@
                                    - +
                                    blog of zachary "za3k" vance
                                    @@ -70,8 +70,8 @@ @@ -92,7 +92,7 @@

                                    archive
                                    za3k.com

                                  6. {{& tagcloud }} diff --git a/templates/links.mustache.html b/templates/links.mustache.html new file mode 100644 index 0000000..7ece4c2 --- /dev/null +++ b/templates/links.mustache.html @@ -0,0 +1,5 @@ +
                                      +{{# alllinks }} +
                                    1. {{partial}} [orig] [src] +{{/ alllinks }} +
                                    diff --git a/templates/post.mustache.html b/templates/post.mustache.html index 63084aa..2286684 100644 --- a/templates/post.mustache.html +++ b/templates/post.mustache.html @@ -1,4 +1,38 @@ +
                                    + +

                                    {{title}}

                                    + + + + {{& post }} + +
                                    +{{#has_tags}} + Tagged + {{# tags_list }}{{^last}}, {{/last}}{{/ tags_list }}{{#main_display}}.{{/main_display}} + +{{/has_tags}} +{{#main_display}} + Bookmark the permalink. +{{/main_display}} +
                                    + +{{#main_display}}
                                    +

                                    Responses to {{title}}

                                    {{& comments }}
                                    +{{/main_display}} + +
                                    diff --git a/templates/tag.mustache.html b/templates/tag.mustache.html index 313419f..9db9051 100644 --- a/templates/tag.mustache.html +++ b/templates/tag.mustache.html @@ -3,5 +3,5 @@ {{# posts.first10 }} - {{& post }} + {{& html }} {{/ posts.first10 }} diff --git a/wordpress2frontmatter.py b/wordpress2frontmatter.py index 76e2972..7b6acec 100644 --- a/wordpress2frontmatter.py +++ b/wordpress2frontmatter.py @@ -5,7 +5,7 @@ import yaml from pathlib import Path INPUT_DIR = Path("/home/zachary/blog.za3k.com") -OUTPUT_DIR = Path("/home/zachary/blog_converter/posts") +OUTPUT_DIR = Path("/home/zachary/blog/posts") IMAGES = OUTPUT_DIR / 'images' BLACKLIST={"wp-json", "feed"} @@ -24,9 +24,10 @@ def scrape_post(post): html = bs4.BeautifulSoup(post, 'html.parser') article = html.find('article') comments = html.find('ol', class_="commentlist") + post = article.find('div', class_="entry-content") result = {} - result["html_content"] = str(article) + result["html_content"] = str(post) result["html_comments"] = (str(comments) if comments else "") result["title"] = article.find('h1', class_="entry-title").get_text() assert result["title"] == html.find('title').get_text() -- 2.47.3