Posts Tagged "computing" from 2020

23 posts · Newest "computing" posts · See All Tags

Labels for Blog Titles

A couple weeks ago, I added "new" labels to the front page of my website. They are rectangular and ugly, but soon they will be round.

I realized I could reuse the same labels in my blog index, so that each post's name will be followed by its tags, like this.

I wanted to differentiate them from the "new" labels. Since "new" was the odd one out (expressing recency rather than a topic), I changed its shape and color scheme. Here's how looked before.

Continue reading

Poetic Meter Analyzer

Does this exist?

Type in words. For each line you type, this program will do its best to categorize the line by its pattern of stressed and unstressed syllables. It does this by retrieving the stress pattern or patterns for each word from an ordinary dictionary (maybe several dictionaries), and comparing all possible paths through the line to determine, for words with multiple possible stress patterns, which is most likely to be right. Or, which would lead to what patterns. [Aside: run spell checker before doing analysis.]

Oh, typing is getting me nowhere. Examles of desired behavior will do better.

Continue reading

Software Parody

It is relatively easy to define "parody" when the object of parody is a book, poem, movie, or piece of music. What would it mean to parody a piece of software?

Functional Objects Can Be Parodied

It will not do to claim that software is immune to parody because it is a functional construct. A building is functional, yet its structure could be parodied, perhaps by a distorted replica having stretched hallways with non-rectangular cross sections, and doorways which are too small for humans or which lead nowhere. (Architecture in general can also be parodied: consider the ridiculous effect of a diminutive Arc de Triomphe in the middle of a normal-sized roundabout.)

Continue reading

Letter to Maya

In reply to https://maya.land/responses/2020/10/18/zero-indexing-doesnt-come-from-c-and-it.html

Maya,

Thank you for sharing Mike Hoye's "Citation Needed" (which documents the strange-but-true origin of the programming-language convention of array indices starting at zero, instead of one.)

A piece of writing born of someone's realization that nobody else has investigated this,as with "Citation Needed." Part of that magicalness comes from the novelty of the discovery, which, in the hands of a good writer, will be unfolded for the reader so that it feels like they could have discovered it, too. Another part of the magicalness is the same feeling one gets when one reads about an archaelogical or historical find from the unlikeliest of places: you mean we didn't know?! As you said in your reply, so much of computing history is being lost to time every day.

Continue reading

An Integer That Only Decreases?

Is it correct to say that a type system needs to implement dependent types if it is to allow the expression of an integer that can only decrease? The goal would be to define a type R Integer such that a function R Integer -> R Integer would only compile if the Integer inside the output value was equal or less to the one inside the input.

Why Beeminder?

I vigorously encourage you to use Beeminder for tracking, maintaining, and modifying habits.

Several people have recently asked me to explain why I like this service so much. This page is my evolving answer.

So, why Beeminder?

Design

The core feature of Beeminder is the "bee sting." The service charges you money if you fail to meet a certain rate of progress toward a goal.

For instance, if I declare to Beeminder that I will meditate 5 minutes per day, and I fail to perform meditation at that rate, Beeminder will "derail" me, charge me a small amount of money, and -- after a weeklong grace period -- rearm the sting.

Continue reading

Taking this Website Dynamic

I've spent the last couple weeks developing version 2 of this website as a Python Flask-based web application. This has required learning more about server administration, as well as putting into use the web-app development skills I've been chipping away at all year.

I'm happy to report that the new version of this site will be going live next week, with Micropub support implemented. Your end user experience should not change at all (but please report any broken links!) Improvements to navigation, content discovery, subscription, tags, and syndication are forthcoming.

My main motivation for this upgrade was to lower my self-imposed barrier to public writing and interaction.

Continue reading

Speech Synthesizers

My friend Matt and I just discovered that Android's (default) text-messaging app can now send voice messages.

Voice messaging (on WeChat) was everywhere when I lived in China, and I've missed it as an option for texting in the States. I suppose the demand for voice messaging is filled here by Snapchat, whatever Facebook does, and voice iMessages for the Apple ecosystem. I don't use those, so I have been a text-only plebeian -- until now!

I think I'll be using voice messages a lot, especially during the coronavirus pandemic. My words, in my voice, represent me more closely than writing can. I'm glad to find a way to move some of my normal communication away from pure text.

Continue reading

Testing Poem Annotations

As I write up explanations and annotations for my poems, I find myself wanting to use lines and shapes to pick out particular areas of each work.

Here's a rudimentary prototype, drawing heavily on the LeaderLine library. Try clicking or hovering one of the bracketed sections.

I'm a fake poem, sure to spin
A top around its bottom

I am a fine explanation! And I am his lovable pal.

I'm not currently planning to turn my annotations into sidenotes or marginalia, but I'll certainly draw inspiration from the numerous attempts at that style of web design. I'll also be investigating annotation platforms like Hypothesis, which may have something to offer.

Linguary

Introduction

This page describes Linguary, an application to support two major activities in language analysis: (1) storing source material which has caught the user's interest, and (2) grouping and commenting on source material to attack or defend a hypothesis. This page, like Linguary, is a work in progress.

Linguary was born to serve my own needs in translation, linguistics, and recreational language learning, but I intend to make it useful for others (though there are no plans to make it applicable to non-Chinese languages.) The application was first mentioned on this site under the earlier name "Linguist's Working Environment," in my June letter to h0p3.

Continue reading

The Joys of Open-Source Docs

Yesterday's good deed: revising and rewriting technical documentation for a cryptocurrency company's open-source project.

I've long had the habit of emailing people I find on the Web to notify them of typos, or dead webpages, but only recently have I realized:

  • how little time and energy companies typically devote to writing documentation (relative to resources spent on the systems being documented)
  • how many projects have software docs and similar written resources in public version control repos
  • how easy it is to fix written documents when they're hosted on version control platforms like GitHub

I hope to continue helping out with FOSS projects' technical-writing needs, especially when there's an opportunity to help Chinese-speaking teams translate material into native English.

Uses This

Software, tools, and services that I use. Search keyword: "uses this."

  • writing and editing: GNU Emacs Neovim
  • operating system: macOS (laptop); Debian (server - but I'm not picky about my GNU/Linux)
  • memory training: Anki (with several extensions, including AnkiConnect for programmatic interaction, and Low Key Anki to present just two choices on each review and adjust easing factors, and True Retention by Card Maturity to ensure my reviews are having an effect.)
  • keyboard: Kinesis Advantage2 Ergodox EZ
  • mouse: Anker Vertical Ergonomic Mouse Kensington trackball
  • headset: an unknown brand with around-ear earpieces and a taped-up frame; a pair of "1More"-brand Bluetooth earbuds

Continue reading

Redesigning the Blog Index

For the sake of readers' eyes, I've redesigned the blog index. This post explains what changed, and why.

Before the Changes

A picture of the blog index before 2020-06-30.

Here are the problems with the "before" picture.

  • Cluttered presentation of notes

    The reader can be told, "This is a note," without nearly as much text as shown at (1). Let's take a lesson from Tufte and not put so much ink on the screen.

    Notes are the foundation on which specialized IndieWeb post types are built, and are so basic they don't even need titles. The note's presentation should get out of the reader's way.

    Furthermore, if there are multiple consecutive notes (not pictured), then, whether they are on the same day or not, the clutter pointed out in (1) makes it hard to tell when the date changes.

Continue reading

Web Services for Programming with ISBNs

Introduction

Paper Republic (PR) is a charitable organization which promotes Chinese literature in translation. PR's founder, a well-known translator named Eric Abrahamsen, doubles as the organization's sole technical staff member. He recently recruited me to assist with creating new platform functionality permitting PR website users to add to a database of Chinese literature. I'll provisionally refer to this new feature as "Book Lookup."

As currently designed, Book Lookup will ask the user to type in an ISBN. After being validated, the ISBN will be submitted to internal or external lookup services, through which Book Lookup can automatically populate the PR database with verified information.

Continue reading

A Text-Adventure Game Engine

Introduction

As a work sample for a job application, I spent some time writing a Python library which lets a game designer create basic text adventures. Though the library is a mere prototype, I was able to use it to implement a sample game called "Bread Master."

My library and its documentation are available on my public GitLab account. The rest of this page reproduces some introductory sections from the library's README, as of 2020-05-09.

Continue reading

Choosing a Notation for Mandarin Romanization

Decision: Standardize on gei3-type citations for source material. Can use scripts in the build process to automate find-replace for publishing. I don't care about academic or legal standards right now, and any Chinese linguistics writing I do will probably not be for laymen.

Here is the case for using gei3 instead of standard Pinyin gěi.

Pro:

  • only need ASCII to search (except for lü, but that can be typed lv), which is helpful for build-process mechanisms and scripts like spell check, as well as fewer edge cases for implementation of projects such as full-text search
  • if I ever switch to doing it the other way, I can more easily replace text like gei3 into gěi than the other way around (and the procedure for determining which letter takes the tone accent mark is a straightforward algorithm).

Continue reading

Today is Day 2 of 2 for IndieWebCamp Online 2020, which means today is Hack Day! My goal for the day is to reconstruct my poems page.

[As of 15:32:57, I'm all done!]

My first task today is to solve the page-redirect woes that I've been blogging about since a few days ago. Diligent implementation of the solutions given in S3's documentation got me nowhere, so I'll use a little JavaScript to redirect from the old poems URL to the new one.

[2020-02-09T09:38:25-0800: first task complete!]

With the redirect in place, I can proceed to the larger of today's tasks: breaking out each poem onto its own page. This will accomplish two goals:

Continue reading

Edit, 2020-02-09T13:52:23-0800: I've finally solved this problem by replacing poems with a stub page that redirects to poems/index, using JavaScript to preserve the URL fragment. Mission accomplished--no thanks to S3!

Edit, 2020-02-07T20:15:29: I've tried using the other form of S3 redirect: uploading a zero-byte file called poems and adding a redirect from that file to the new /poems/index location. We'll see if that works.

Edit, 2020-02-07T10:48:32: Dammit, I don't know what I'm doing. Can anyone help?

Redirecting from the no-longer-existent poems file to the new poems/ in the "Static Website Hosting - Redirection Rules" section of the S3 Console is not working at all: I get the AWS-default 403 (Access Denied) return code (which AFAIK is masking an underlying 404 Not Found, given that poems has been deleted from the bucket.) I'm already stuck, and it's only step one of the plan below! Here are the routing rules I'm using.

Continue reading

My first hobbyist programming project was to enhance my D&D game with a system for determining the prices of in-game items. To reach this goal, I built up a pipeline of tools which generated terrain with elevation, moisture, temperature, and climate; used pathfinding to construct a road network; rendered the world map as a vector-graphics file; and specified "recipes," like this one, delineating the raw materials and labor needed to construct each purchasable trade good.

Pouring thousands of hours into a sprawling project over two years solidified my love of programming, expanded my brain, and got me seriously writing on the Web for the second time. However, as the work of a beginning developer, "the economy project" is sloppy.

Continue reading