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.
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.
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.)
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.
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.
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.
I'm running my Micropub implementation against the official test suite at micropub.rocks. Despite the fact that I haven't implemented the entire specification (much less the extensions), my version already passes about a third of the test suite -- and a couple of the failed tests gave enough feedback to code fixes on the spot. Full steam ahead!
Tests for creating posts via Micropub (other tests not shown.)
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.
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.
Lately, I've been working to change this website from a pile of (generated) HTML files into a proper server-backed dynamic site. There's not much to show off, but I'm implementing a Micropub server and learning a lot more about Flask (the web-app framework.)
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.
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.
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.
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.)
For the sake of readers' eyes, I've redesigned the blog index. This post explains what changed, and why.
Before the Changes
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.
When I come across an unfamiliar phrase, especially one that's metaphorical, it's useful to be able to search text documents, on the web or elsewhere, for regular expressions matching that phrase.
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.
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.
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).
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:
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.
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.