# Eddie Smith

Practically Efficient is Eddie Smith's personal blog.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## From boiling lead and black art: An essay on the history of mathematical typography

DevFeed: [From boiling lead and black art: An essay on the history of mathematical typography](<https://devfeed.tech/articles/from-boiling-lead-and-black-art-an-essay-on-the-history-of-mathematical-typography-35139.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/10/13/from-boiling-lead-and-black-art.html>)

Author: Eddie Smith

Published: 2017-10-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Data visualization](<https://devfeed.tech/topics/data-visualization.md>), [LaTeX](<https://devfeed.tech/topics/latex.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>)

Tags: [data-visualization](<https://devfeed.tech/tags/data-visualization.md>), [essay](<https://devfeed.tech/tags/essay.md>), [history](<https://devfeed.tech/tags/history.md>), [latex](<https://devfeed.tech/tags/latex.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [typography](<https://devfeed.tech/tags/typography.md>)

### AI overview

An essay on the history and craft of mathematical typography, explaining why mathematical typesetting is more difficult than ordinary text and reflecting on the advantages and limitations of modern tools such as Microsoft Word and LaTeX.

### Source excerpt

Math fonts from six different type systems, courtesy Chalkdust I've always felt like constructing printed math was much more of an art form than regular typesetting. Someone typesetting mathematics is less a "typist" and more an artist attempting to render abstract data on a two-dimensional surface. Mathematical symbols are themselves a language, but they are fundamentally a visual representation of human-conceived knowledge--knowledge that would be too inefficient to convey through verbal explanations. This brings the typesetting of mathematics closer to a form of data visualization than regular printed text. No matter how hard it's ever been to create printed text, creating printed math has always been even harder. In pre-digital times, equation-laden texts were known as "penalty copy" because of the significant additional time and expense it took to set math notation for printing presses. Even when modern word processors like Microsoft Word include equation editors, they tend to be difficult to use and often produce unpleasing results. While LaTeX and similar variants produce the highest quality digital math type, these frameworks also have much more of a learning barrier than general word processing. But these modern quibbles are much more the fault of hedonic adaption than any of the tools available to us today. We have it vastly easier than any previous stage of civilization, and I think it's critically important for those of us that write math to have at least a basic awareness of the history of mathematical typesetting. For me, knowing this history has had several practical benefits. It's made me more grateful for the writing tools I have today--tools that I can use to simplify and improve the presentation of quantitative concepts to other actuaries. It's also motivated me to continue to strive for elegance in the presentation of math--something I feel like my profession has largely neglected in the Microsoft Office era of the last twenty years. Most importantl

## Why subscription pricing can make sense for software

DevFeed: [Why subscription pricing can make sense for software](<https://devfeed.tech/articles/but-i-already-paid-for-it-35138.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/08/15/but-i-already-paid.html>)

Author: Eddie Smith

Published: 2017-08-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Support](<https://devfeed.tech/topics/support.md>), [patches](<https://devfeed.tech/topics/patches.md>), [version](<https://devfeed.tech/topics/version.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [patches](<https://devfeed.tech/tags/patches.md>), [software](<https://devfeed.tech/tags/software.md>), [subscription](<https://devfeed.tech/tags/subscription.md>), [support](<https://devfeed.tech/tags/support.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

This opinion article argues that switching an app from a one-time purchase to a subscription does not necessarily require existing customers to pay again for continued use. Using Ulysses as an example, it explains that previously purchased versions remain functional, while new features are limited to the subscription version. It argues that software requires ongoing developer support, updates, and security patches, which can make subscription pricing objectively understandable.

### Source excerpt

Subscription-based app pricing is a thorny issue that's far from resolved, but one of the very worst arguments I hear whenever a company like Ulysses switches to a subscription model goes something like this: "Why do I have to pay (again) for software I've already purchased?" This is a flat out lie that people usually create for themselves to help support their negative reaction to a perceived price increase. The lie basically says, "if I want to keep using this app, I need to pay for it again." In many cases, including the case with Ulysses, this is completely false. Ulysses clearly addresses this on their site: The previous, single-purchase versions of Ulysses have both been removed from sale. They remain fully functional, of course, and we have even updated both versions for High Sierra and iOS 11 respectively. So, if you decide to keep using the "old" Ulysses, you should not encounter any problem. New features, however, will only be added to the subscription version in the future. So there. The software you paid for is still "yours" in the sense that it is fully functional (as you paid for it) and will continue working indefinitely. You "own" it, and it's not going away. Will it work forever? Hell no. Software isn't the same as a cast iron skillet. Software isn't going to work the same 100 years from now. It's probably not even going to work 100 weeks from now without being nursed through the vagaries of operating system updates, security patches, and user-expected support. When the developer of a cast iron skillet is done, they're done. When the developer of a piece of software is done, they're out of business--because if a developer quits, so does their product. The more you can look at your software as a knowledge product--a product that rapidly decays without the service of its developers, the more subscription pricing makes sense objectively. But that's the crux. Software needs human buyers, and our brains are poorly evolved to evaluate the many abstractions

## Facebook AI System Developed a Code-Based Language, Prompting Reflections on AI's Future

DevFeed: [Facebook AI System Developed a Code-Based Language, Prompting Reflections on AI's Future](<https://devfeed.tech/articles/dave-this-conversation-can-serve-no-purpose-anymore-goodbye-35137.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/07/29/open-the-pod-bay-doors.html>)

Author: Eddie Smith

Published: 2017-07-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [language](<https://devfeed.tech/tags/language.md>), [semantic](<https://devfeed.tech/tags/semantic.md>)

### AI overview

The article discusses a Facebook artificial intelligence system that developed code words for more efficient communication, prompting researchers to shut it down when it stopped using English. It places this example in a broader reflection on abstraction, technology, and the possibility that AI could eventually surpass biological organisms.

### Source excerpt

Via Hobo Signs: An artificial intelligence system being developed at Facebook has created its own language. It developed a system of code words to make communication more efficient. Researchers shut the system down when they realized the AI was no longer using English. The observations made at Facebook are the latest in a long line of similar cases. In each instance, an AI being monitored by humans has diverged from its training in English to develop its own language. The resulting phrases appear to be nonsensical gibberish to humans but contain semantic meaning when interpreted by AI "agents." Our ability to think about abstract things makes us very different from other animals. It's why we have big heads, big philosophies, big religions, and, many times, big problems with absolutely no basis in the physical world. We're in the middle of a really fascinating experiment in civilization that started around the time of Industrial Revolution, but really got going in the second half of the 20th century when computers (machines) enabled our abstract thinking to affect the physical world by significantly higher orders of magnitude. We've already seen that mixing humans and advanced technology can have undesirable effects. The financial crisis of 2008 happened in large part because really smart people on Wall Street created financial structures that became too abstract for even their creators to fully understand--especially when set loose in the market to mix with human emotion and other financial structures. The "good news" with failures of financial abstraction is that they can, apparently, be corrected by offsetting measures of abstraction like the creation of additional (abstract) money. Complicated financial structures also collapse when they are no longer believed in--like bad dreams. AI is different in that it could very well evolve into something that surpasses DNA-based organisms. AI, once fully viable, may not collapse so easily, if at all.

## Choosing Checklist Tools for Different Tasks

DevFeed: [Choosing Checklist Tools for Different Tasks](<https://devfeed.tech/articles/a-nod-to-checklists-35136.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/07/25/checklists.html>)

Author: Eddie Smith

Published: 2017-07-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [file](<https://devfeed.tech/topics/file.md>), [LaTeX](<https://devfeed.tech/topics/latex.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [application](<https://devfeed.tech/tags/application.md>), [apps](<https://devfeed.tech/tags/apps.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [latex](<https://devfeed.tech/tags/latex.md>), [mac](<https://devfeed.tech/tags/mac.md>), [tasks](<https://devfeed.tech/tags/tasks.md>), [templates](<https://devfeed.tech/tags/templates.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

The article argues that no single checklist tool is best for everyone. The appropriate format depends on the task and whether users need to track both unfinished and completed items. It discusses spreadsheets, OmniOutliner, Apple Notes, Drafts, and file-organization methods for different uses.

### Source excerpt

Gabe whipped up a great list of checklist tools. My favorite aspect of his post is that there's no clear winner. There shouldn't be. Checklists can come in all forms, and the ideal format depends entirely on the application. For me, checklists make sense when I need to see not only what needs to be done, but also what I've already done. Apps that automatically "vanish" completed tasks fail to do the latter. For me, sometimes there's just no substitute for a spreadsheet for large checklists, especially if each item can have multiple statuses or dimensions. Sometimes adding more columns is way more efficient than adding more tasks (rows). For packing lists, I've tried so many apps, but OmniOutliner is the best for me. It's simple checkbox feature is perfect, and I have several templates I use for different types of trips. Sometimes an Apple Note will suffice, and sometimes I just "x" lines in Drafts for a quick and dirty grocery list. When I'm working with large numbers of LaTeX files on my Mac, I use file colors, prefix schemes, and even moving files from one folder to another to keep what I've processed and what I haven't. Checklists are as old as civilization and are one of the most fundamental ways to augment the human mind, which needs help seeing where it's been and where it needs to go. Everyone can benefit from checklists. Just check out The Checklist Manifesto.

## A couple of Jekyll updates

DevFeed: [A couple of Jekyll updates](<https://devfeed.tech/articles/a-couple-of-jekyll-updates-35135.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/07/02/a-couple-of-jekyll-updates.html>)

Author: Eddie Smith

Published: 2017-07-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [CSS](<https://devfeed.tech/topics/css.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [HTML](<https://devfeed.tech/topics/html.md>), [LaTeX](<https://devfeed.tech/topics/latex.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [html-elements](<https://devfeed.tech/tags/html-elements.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [latex](<https://devfeed.tech/tags/latex.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

A personal update on a Jekyll site that adds image captions with CSS and Markdown, and integrates MathJax selectively through YAML front matter while retaining the kramdown converter.

### Source excerpt

Since moving to Jekyll last year, I've done relatively little to tweak the inner workings of this site. After all, one of the most appealing things about having a static site is that it doesn't need to have a lot of moving parts. It just works. But today I finally got around to a couple of housekeeping items that have been on my list: image captions and MathJax. Image captions For image captions, I settled on a beautifully simple solution posted by Andrew Wei on Stack Overflow:  *image_caption* This takes advantage of the fact that you can create CSS for combinations of HTML elements. In this case, I can use img + em { display: block; text-align: center;} to target the *image_caption* text only and center it under images, which are also centered on this site by default. It works perfectly, and this isn't even Jekyll-specific. Anyone publishing in Markdown could do this. Agreed. Jekyll + MathJax Adding MathJax took a little more time, but not much. It was worth it just to remind me of the brilliance of Jekyll's architecture. Even though the Jekyll site mentions MathJax, it doesn't say enough to be of immediate use. It basically points to a blog post that entails switching from the default kramdown Markdown converter to redcarpet. Given that I'm happy with kramdown and not in the mood to backtest a bunch of blog posts with a different converter, I wanted to stick with kramdown. A series of subsequent web searches lead me to a Github issue thread for a Jekyll theme that I'm not even using, but I found a really efficient implementation of MathJax there by user "mmistakes," who suggested adding a mathjax variable in each page's YAML front matter that could be set to true on a post by post basis. The elegance of this solution is that the MathJax script will only be written into the HTML of posts that actually have MathJax in them. This seemed super appealing to me because it meant that I didn't have to worry about MathJax being triggered by some accident

## The iPad Pro's keyboard limits comfortable typing away from a desk

DevFeed: [The iPad Pro's keyboard limits comfortable typing away from a desk](<https://devfeed.tech/articles/look-but-don-t-type-35134.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/06/24/look-but-dont-type.html>)

Author: Eddie Smith

Published: 2017-06-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [iphone](<https://devfeed.tech/topics/iphone.md>), [keyboard](<https://devfeed.tech/topics/keyboard.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [productivity](<https://devfeed.tech/tags/productivity.md>)

### AI overview

The author argues that the iPad Pro remains difficult to use for serious typing away from a desk or table. Despite using the iPad frequently, they prefer the MacBook Pro for lap typing and the iPhone for some writing tasks because both offer more suitable keyboard forms.

### Source excerpt

Even though Gabe and I sometimes have slightly differing views on the iPad's productivity value compared to the Mac, with his latest post, I think we are completely in sync--metaphorical Chris Farley falls and all. In particular, he nails a massive friction point for me with the iPad: I can type more comfortably on my iPhone than I can with my iPad Pro on the couch, in bed, or even just reclined in the backyard. I'm sure there's a good case out there that will solve this problem, but I'd rather see Apple solve it. I've tried using various keyboards for my 13" iPad Pro, but I've never found one that let me comfortably type while sitting away from a flat table or desk. This has been a huge failure point from a practical perspective for me because the iPad, by design, begs to be used away from conventional "work stations." So the irony is that the only time I can do serious word creation on my iPad is while sitting at a desk or table. If I want to escape those confines, which is a frequent want, I use my 13" MacBook Pro, which has the same form factor as the big-big iPad, but allows for lap typing. Like Gabe, I also find myself in the funny position of using my iPhone to type more, even when my iPad is at hand. A great example: if I'm reading a book on my iPad, it's actually easier to write notes about the book using my iPhone. I even wrote this entire post in Drafts on my iPhone at the breakfast table. My iPad is in sight across the kitchen. I still use the iPad a lot, but its use cases for typing still remain very limited for me. The Mac and iPhone just have superior keyboard forms.

## Technology Does Not Want Anything

DevFeed: [Technology Does Not Want Anything](<https://devfeed.tech/articles/it-doesn-t-want-anything-35133.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/06/21/doesnt-want-anything.html>)

Author: Eddie Smith

Published: 2017-06-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Strategy](<https://devfeed.tech/topics/ai-strategy.md>)

Tags: [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [communities](<https://devfeed.tech/tags/communities.md>), [intelligence](<https://devfeed.tech/tags/intelligence.md>), [science](<https://devfeed.tech/tags/science.md>), [technology](<https://devfeed.tech/tags/technology.md>), [values](<https://devfeed.tech/tags/values.md>)

### AI overview

This commentary echoes Tim Cook's argument that technology can accomplish great things but has no wants or values of its own. It expresses greater concern about people adopting computer-like thinking without compassion or regard for consequences, and emphasizes the role of the humanities in providing moral direction.

### Source excerpt

Tim Cook's entire commencement address to the MIT class of 2017 is an instant classic, but this is the part I want to echo forever: Technology is capable of doing great things. But it doesn't want to do great things. It doesn't want anything. That part takes all of us. It takes our values and our commitment to our families and our neighbors and our communities. Our love of beauty and belief that all of our faiths are interconnected. Our decency. Our kindness. I'm not worried about artificial intelligence giving computers the ability to think like humans. I'm more concerned about people thinking like computers without values or compassion, without concern for consequences. That is what we need you to help us guard against. Because if science is a search in the darkness, then the humanities are a candle that shows us where we've been and the danger that lies ahead.

## One-off shell script execution in BBEdit

DevFeed: [One-off shell script execution in BBEdit](<https://devfeed.tech/articles/one-off-shell-script-execution-in-bbedit-35131.md>)

Original publisher: [Read original article](<http://www.practicallyefficient.com/2017/06/14/shell-scripts-in-bbedit.html>)

Author: Eddie Smith

Published: 2017-06-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eddie Smith](<https://devfeed.tech/sources/eddie-smith.md>)

Topics: [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Sublime Text](<https://devfeed.tech/topics/sublime-text.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [file](<https://devfeed.tech/topics/file.md>), [LaTeX](<https://devfeed.tech/topics/latex.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [chmod](<https://devfeed.tech/tags/chmod.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [copy](<https://devfeed.tech/tags/copy.md>), [editor](<https://devfeed.tech/tags/editor.md>), [execution](<https://devfeed.tech/tags/execution.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [mac](<https://devfeed.tech/tags/mac.md>), [multiple](<https://devfeed.tech/tags/multiple.md>), [script](<https://devfeed.tech/tags/script.md>), [shell](<https://devfeed.tech/tags/shell.md>), [shell-script](<https://devfeed.tech/tags/shell-script.md>)

### AI overview

The article describes a workflow for creating one-off Bash scripts in Sublime Text to copy selected files, then running the unsaved commands immediately in BBEdit.

### Source excerpt

I've been meaning to talk more about my "Sublime Text and BBEdit" workflow, and this is a powerful (if mundane) example. I don't write a ton of scripts on my Mac and generally don't spend much time in Terminal. But when I need a script, I really need a script. My work is very file-heavy. I juggle large numbers of .tex (LaTeX) files across several large folder structures. Every so often I need to copy a subset of files within one folder to another folder so that I can do things to them. In most cases, I have a list of the files in a plain text .tex file, and I just need to do some file operations on them. Selecting them individually in Finder is tedious and error-prone, so the solution is usually a simple bash script with a bunch of cp commands. The main friction with bash scripting for folks like me that don't live in Terminal is that you have to create a .sh script and then web search for now to make it executable (because I can never remember the chmod command). Creating the shell commands is straightforward, especially in Sublime Text. After adding the necessary #!/bin/bash line with TextExpander and defining the "to" and "from" file paths as variables, the magic of Sublime Text's multiple cursors makes it easy to put cp commands and the folder path variables around each file to be copied. Sublime Text multiple cursors in action Since Sublime Text won't execute these commands in an unsaved file that hasn't been given proper execute permissions, I simply copy this text into an untitled, unsaved BBEdit window and hit ⌘R. BBEdit has the extremely useful ability to immediately recognize the syntax and execute it right there on the spot. I realize this post is a weird way to promote BBEdit, which is a powerful text editor that, in this case, I'm not even using as an editor. Hopefully I'll find some time to talk more about other ways I'm using it with Sublime Text.