My new poetry collection: In the Cloud: Poems for a Technological Age

It's been quite a while since I posted on this blog, but I have still been writing. During 2021, I started exploring some thoughts about math, science, technology, and other topics as poetry. The challenge to do this came from an online writing friend, and it turned out to be a lot of fun.

My first collection of poems is now available: In the Cloud: Poems for a Technological Age. I hope you enjoy it.

You can read a couple of samples here: "Ode to an NFT" and "River of News".

The Basics of Happiness

In 2010, novelist Amy Bloom published an essay called "The Rap on Happiness" in the New York Times Book Review. In it she rounds up her reading of several then-contemporary books on happiness, a genre which seems to have continued strongly into the present.

She saves us a lot of time for all that reading (formatting added):

We could canvass [the authors and others] and produce the Fundamentally Sound, Sure-Fire Top Five Components of Happiness:

  1. Be in possession of the basics — food, shelter, good health, safety.
  2. Get enough sleep.
  3. Have relationships that matter to you.
  4. Take compassionate care of others and of yourself.
  5. Have work or an interest that engages you.

That sounds about right. Nowhere on the list is necessarily making a lot of money, being famous, or having the big house.

But she also knows that feelings of happiness are fleeting, which is part of the magic:

The real problem with happiness is neither its pursuers nor their books; it’s happiness itself. Happiness is like beauty: part of its glory lies in its transience. It is deep but often brief (as Frost would have it), and much great prose and poetry make note of this. Frank Kermode wrote, “It seems there is a sort of calamity built into the texture of life.” To hold happiness is to hold the understanding that the world passes away from us, that the petals fall and the beloved dies. No amount of mockery, no amount of fashionable scowling will keep any of us from knowing and savoring the pleasure of the sun on our faces or save us from the adult understanding that it cannot last forever.

I'm guessing that an important secret in publishing is that the next 10,000 books on happiness don't add anything to the list, or that the simply end up in the same place.

Thank you, Ms. Bloom, for reading the books and giving us the short form!

Thank you, world, for my coffee

Thank you, world, for my coffee. It takes a lot of work by a lot of people for me to have it.

The coffee itself I bought as whole beans at an independent coffee shop in the next town over. It's a delightful place to meet a friend for coffee, although that hasn't been possible during the pandemic. I am thankful that they are still there, serving takeout coffee and selling coffee to be brewed at home.

Thank you, team at Karma, for supplying coffee beans.

As I understand it, the beans used in their espresso blend come from Africa. Thank you, coffee farmers in Africa, and thank you to coffee farmers all over the world. Thank you also to the people who transport the coffee to market, who move them on trucks and ships and railroads or whatever means to get them to America. Thank you to the people who make, operate, and service all the means of transportation involved.

Thank you to the people who designed, built, and service the equipment that Karma uses to roast the coffee. And to those whose work provides the electricity for the machines. Thank you to those who designed, make, and deliver the ziplock bags the coffee comes in.

Thank you, everyone, for making it possible for me to get great coffee beans at Karma.

I grind the coffee beans by hand using a hand grinder made of steel and ceramic. I thank the makers of steel and ceramics, those who refine the design of burr grinders for an excellent and precise grind, and the people who manufactured it. I have one little quibble with the design: the removable handle has a tendency to come off the grinder while you are turning it, which is a bit inconvenient. I bought it from Amazon, so thank you Internet and Amazon and all of the people who make all of those system work, even though I'm not sure that Amazon's effect on business has been all good, especially for the book business. On the other hand without the Internet and Amazon I probably never would have found the grinder at all. Even though it sounds like a lot of work to grind coffee beans by hand in the morning, it is a pleasant, almost meditative activity, without the early-morning noise of an electric grinder.

I use the espresso beans to make a faux latte. Instead of a real espresso machine, I brew it with an Aeropress, I heat milk in the microwave, and I froth it by hand with a whisk. Thank you to those who made my Aeropress, the scientists and engineers who discovered microwaves and invented the microwave ovens, those who manufactured the microwave oven and transported it so I could have it, and those who did the same for my nice whisk and the glass measuring cup that contains the milk.

Water is essential for coffee. Thank you to the town workers who operate the wells and the treatment system and the pipes that deliver water to my house, to all the workers who dug the wells and built the treatment system and laid the pipes. Thank you to the those who made and service all the parts in our house that make and deliver hot water.

I use milk to make the latte. I thank the generations of people who refined method of making lattes and roasting espresso. I thank the cows produce the milk, and the dairy farmers who take care of the cows, and the people who make sure that safe-to-drink milk makes its way from the farms to the store. I thank my wife for the grocery shopping and bringing home the milk from the store.

Of course, it's impossible to enumerate all of those who did some part of what it takes for me to have the coffee, and their part it in may be a tiny fraction of what they do. Even those with a direct step in the process are supported by many other people, and their work in turn is supported by yet more. It's easy to think of the people doing these many things as interchangeable, but all of the work was done by individual people.

Our worldwide systems for exchange, even with all their troubles and inequities, are remarkable creations. We can and we should work together to make those systems better for everyone. And I am thankful for the work of thousands—perhaps millions—for what may seem everyday and trivial.

Thank you, world, for my coffee.

Footnote: I wrote the first draft of this in a notebook, sipping my morning latte, in March of 2016. In 2018, author A. J. Jacobs came out with a book, Thanks a Thousand: A Gratitude Journey, in which he documents his attempt to thank every person involved in the making of the cup of coffee he has every morning. It's probably a great book. When I wrote this, I had no idea what he was up to.

What I wish I had learned about drawing in school

When I was in elementary school, I learned I was bad at drawing. That turns out not to be true. Today, my drawing skill is not very high, but that's almost entirely about having so little practice at it over a very long time. Because I thought I was just bad at it.

Here's what I wish I had learned about drawing in school:

  1. Whether or not you can draw a great-looking horse at age 5 or 6 has nothing to do with whether or not you will be able to draw well.
  2. Drawing isn't about being the best in an art class. It's a valuable way of communicating, of helping to think things through, helping you see things, and (of course) artistic expression.
  3. It doesn't matter what you draw to start with.
  4. A lot of drawing is about learning to see, not about learning to move the pencil (or whatever you are drawing).
  5. Skill comes from practice. The kids who drew "better" than I did in school? Probably they had been drawing a lot more before. Good for them!
  6. Creativity comes with skill. Don't worry about being "creative" when you start to draw. Copying is fine. You can learn a lot from tracing.
  7. There are plenty of techniques and tricks to learn. Artists have learned (or reinvented) these. Drawing a sketch of a person becomes a heck of a lot easier if you know a few simple guidelines about proportions and relationships of the human body.
  8. You can draw from your imagination, but you don't have to start that way. Look at things in the world and learn to draw them. Use photographs. Getting started doesn't mean you have to start with what's in your head.
  9. Draw to communicate any time you can. A sketch is often tremendously effective, even when it seems like a scrawl with missing details. This is another form of practice.
  10. Try drawing to understand something you are learning, in any area. What things and relationships are involved? Diagram it!
  11. It's OK to erase and adjust.
  12. Don't worry about color to start.
  13. Slow down.
  14. Enjoy it.
  15. Treat drawings as drafts, and try redoing them to make them better.
  16. A "bad" first drawing can help you figure out how you want to do it. Without the bad one, you won't get to a good one.
  17. Keep your drawings to see how you are improving.

I finally figured out that I might not be bad at drawing, and I'm drawing more. Not enough, not with the practice I'd like, but more.

User experience in warranty registration

I recently bought a Sony α6000 mirrorless camera, which I like a lot. Sony suggested doing the warranty registration, which sometimes has value on bigger purchases (especially those that may have firmware updates), so I decided to do it.

First issue: entering the model number. One might think (at least, I did) that the model number here is going to have something to do with "a6000", since that is on the box, the product literature, and so on. So I typed "a6000", and the very helpful completion gave me half a dozen matching model numbers, none of them exactly "a6000", and only one of them with a label saying what that model actually was. So I dug out the camera itself, squinted at the model number, and learned that it's actually an "ILCE6000" (the "E" seems to be very important to the system). The labeling wasn't very clear with that, but I'm pretty sure it's correct. Fortunately, the picture that showed up later for my "registered products" list looks right.

Second issue: The process collects more information than I would like to give just for a warranty registration, or that seems necessary for a warranty registration. Of course, I know they want to collect data for other reasons, but it doesn't give me a feeling of trust or better relationship with the company, especially one that has lost control of sensitive data in the past. This isn't unique to Sony, of course.

I generally avoid complaining about things on this blog—there's plenty of that on the Internet already. What I wanted to point out was that we are still building web sites and applications that are designed to be easy for the computers (and probably the programmers) to deal with, rather than working out a user experience that uses cheap compute cycles to make the process easier and more engaging for the person using it. (Actually, the fact that we still just talk about "users" is likely a symptom of the underlying problem.) This lack of attention to the customer is especially common on post-sale systems, from warranty registration to customer support. This could have been an opportunity for Sony to create a compelling experience that gets me more excited about the camera, and possibly about other Sony products. Instead, it's a dull, boring dead end that made me work harder.

Lessons I would commend to big companies (and small, but the big ones seem to suffer more from the disease): every time a customer gets in touch with you is an opportunity to build a better relationship. Every time you fail to improve the relationship pushes the customer away.

Pondering a media fast for October

I am contemplating taking a media fast for October. What does that mean, and why do I want to do it?

First, the why. For a long time, I've been feeling very scattered. Partly it's having a lot of projects in progress professionally, a busy family, volunteering service in various ways, the responsibilities of owning a home—the usual busy-ness of contemporary life. Part of it may be the common decline in the ability to concentrate as I get older. But part of it is responding to and immersing myself in the flood of bite-sized media we have today, including the constant search for the next bit of new news, from the web, from Twitter, from email, from the TV….the list goes on.

Even reading a book is hard without feeling the temptation to check my phone, to divert myself with something else. I find this true even if I am interested in the book, and even when I theoretically have the time to spend of it without a real alternative demand on my tie. I'm not the first person to observe this (and I won't bore you with links to the many people who have, even though they have done so more eloquently and thoroughly than I am doing here). But I do want to do something about this.

I remember times when I could be completely immersed in a book, fiction or non-fiction. Or spend an afternoon researching an interesting topic without itching to be doing something else. Or work for hours on a piece of software. Those are worthwhile experiences, and I rarely have them now.

Obviously, I can't control all aspects of my obligations, what I need to do, and what I have committed to. But as a first step in regaining attention and focus, I can try to change my media diet. In October, that's what I intend to do, and here's the list of what I plan to try.

  1. No Twitter. I'm going to delete the app from my phone, which is the way I read it most of the time. (Caveat: I might occasionally send a tweet through the web site, which I don't do that often anyway, and I'll leave on Twitter's email notices about @-mentions so that I can find out about any actual conversation I might want to be in. It's @wintreese, if you're interested.)
  2. No Facebook, except for looking up something particular. I don't actually use it that much anyway, but I'm going to turn off the mail notifications I get.
  3. Unsubscribing from email notifications: of newsletters, blogs, advertising, etc. I want my email inbox to have messages from people I have relationships with, and I don't want to delete a bunch of messages just to see those. In other words, I want to communicate with actual people.
  4. Filtering mailing list messages to the side. I do participate in some mailing lists, and I value those communities. But I will put them to the side for occasional reading.
  5. Use the web only for research and answering questions. No surfing, no clicking on interesting links unless they are directly related to the goal of the web search. The pile of bookmarked URLs I have for reading later? They will remain unread. (Caveat: I do have some piles of bookmarks to unread pages related to specific projects. Those are OK.)
  6. TV - limited to a single program at a time, deliberately chosen in advance. No binge watching, no TV as background noise.
  7. No using a laptop or phone while watching TV or a movie. If it's not worth paying attention to, I don't want it on.
  8. Podcasts. This may be the hardest one for me actually; I listen to podcasts almost the time when I am doing something that permits it: driving, working in the yard, working out a the gym, etc. I want to be deliberate about the listening—in particular, not using it to fill relatively small gaps of time. Those I want to keep free for thinking or letting my mind wander. This one is more of a balance than the others.
  9. Leave the phone on my desk at home, except when I have a real reason to be using it.
  10. No checking the phone for anything during short waits, such as waiting in line somewhere. Occasional checks for email when I'm away from the house or office are OK, as long as they are occasional. Since I don't expect to get much email to deal with, there shouldn't be much to be done.
  11. Scrub the phone of apps I don't want or don't really use.
  12. No playing Two Dots.
  13. Instagram only to keep up with a small number of family and friends who like it.

Some media is OK:

  1. Books. I want to spend a lot of time reading seriously.
  2. Movies, with deliberate choice in advance, whether in the theater, from Netflix/Amazon, or on TV.
  3. Catching up on my long-form web reading saved to Pocket or Instapaper. I'm actually not entirely sure about this one, but I usually save things that I want to read with attention, so I think they fit the goal.
  4. Magazines, in moderation. That's mostly because I don't read them much now, and I would like to revisit that experience.
  5. Paper newspapers. I don't read them that much, and I don't particularly want to resume it, but it's allowed.
  6. Blogging is OK, although I do recognize there is some irony in that.

What do I want to get out of this?

  1. I want to focus deeply on some things that matter to me.
  2. I want to create space for the ideas that only come when nothing is crowding them out.
  3. I want to be more present when I am with another person.
  4. I want to feel like my mind is less turbulent and trying to get on to something else.
  5. I want to read more books.

At the end of October, I'll revisit the list and see how it went.

Tracing emacs init from an org-mode file

At about the same time I discovered Artur Malabarba's elisp-bug-hunter, which automatically does a bisection search to find a problem in an Emacs init file, I had my own init file problem to debug. Although the bug hunter looks very interesting, I had a couple of complications in using it, so I looked for another way to debug the file.

The main thing I needed to know was where in my long init file the problem was occurring. I keep my Emacs init code in an org-mode file, with a little hook to initialize org-mode and load the file with org-babel-load-file. That seems to be pretty common these days. The obvious candidate for tracing is just the headline on the org block containing the code; that's probably enough to localize the problem enough to chase it down.

It turns out by playing games with the comments that org-babel generates, we can do just that. We can tell org to insert comments that link back to the org source file into the output Emacs Lisp file with the header

  #+PROPERTY: header-args :comments link

(or an equivalent setting elsewhere; see the Org manual for details).

Then we change the way the comments are formatted, turning them into code that simply logs a message. Here's the code for that, wrapping org-babel-load-file:

  (let ((org-babel-tangle-comment-format-beg
         "(message "%file: %source-name")n")
        (org-babel-tangle-comment-format-end "")
        (org-babel-tangle-uncomment-comments t))
    (org-babel-load-file "my-emacs-init.org"))

Using let means that these changes to the variables are only in effect during the load.

Now, after Emacs starts up, we can look in the *Messages* buffer to see if any unexpected messages occurred, and they will appear under the headline of the offending code.

Happy hacking!

Book review: A Dangerous Inheritance by Alison Weir

/images/dangerous-inheritance-cover.jpg Game of Thrones has nothing on Tudor-era England when it comes to political intrigue.[[#fn.1][1]] In A Dangerous Inheritance (Hutchinson, 2012), Alison Weir fictionalizes the linked and somewhat parallel lives of Kate Plantagenet, the illegitimate daughter of King Richard III, and Lady Katherine Grey, a possible successor to Queen Elizabeth I. It's fiction, but Weir has hewed closely to the historical record, of which there is a surprising amount, at least for Katherine Grey. Kate's tale is somewhat more speculative, based on just a few a historical references, but the background of her story and the events in England at that time are closely based on what is know about the history.

Weir's structure is interesting, building on parallel events in the lives of the two women: marriage, love, pregnancy, and imprisonment. Separated by about a century, the author gives them a shared interest in the fate of two princes—possible rivals for the throne—in the time of Richard III. The questions of royal succession and the conflicts over it is a consistent them in the book.

The politics, power structure, and intrigues of the characters create a fascinating but confusing background. Much of the confusion comes from the history, especially from the many characters with similar names—there are several Richards, Elizabeths, and Johns, for example—as well as the different people holding the same title (say, the Duke of York) at different times. This is compounded by the English custom of referring to the people by first name, last name, or title. The names are not the fault of the novelist, of course, but they do challenge the reader in keeping track of a vast array of secondary and tertiary characters, especially between two separate historical periods.

More than once I wanted to look up more historical detail about the England Weir describes, both to better understand the historical basis for her characters, and to fill in some of the gaps in my own knowledge of that time, especially the history that the characters clearly knew. As it turns out, her history is very well-researched, which was simply not clear to me at the beginning. Still, there is much I do not know of the time between the lives of the two women, especially since that period includes the reign of Henry VIII.

In an afterword, Weir gives details of what is known and not known about these two women and the events of their times, giving a welcome foundation for the historical context of the novel. Of course, this is a novel, not a history, and Weir succeeds in exploring her main characters and their lives in politically turbulent times.

Alison Weir has her own web site, naturally. A Dangerous Inheritance is available at your local library, Powell's, Barnes & Noble, Amazon, and has many reviews at Goodreads.

<<footnotes>>

Footnotes:

<<text-footnotes>>

[[#fnr.1][1]] Of course, the similarities to English history for Game of Thrones are so obvious that we need not comment on them further.

Writing AppleScript with Emacs

In playing around with AppleScript recently, I started wondering if there was an AppleScript mode for Emacs. Of course, there is. In fact, one version is bundled in with Aquamacs, which is the main version of Emacs I use on the Mac. The copyright date on it 2004. Is there a more recent version?

As far as I can tell, not really. Google has a few results with actual code:

  • ieure/applescript-mode (This is the version linked to by the MELPA package repository as well) (last updated 2009)
  • a copy in the Emacsmirror github repository, which "collects Emacs Lisp packages and distributes them in [the] form of Git repositories – one per package" (last updated 2004)

The EmacsMirror version is the same as the one packaged with Aquamacs, except that string-to-int has been changed to string-to-number. The ieure version seems to have some code reformatting and very minor code changes, and does not have the string-to-number change.

For the moment, then, it seems safe to stay with the one that ships with Aquamacs. The mode is apparently very stable or rarely used, or both.

Getting better with Emacs Dired

I've used Dired, the Emacs directory editor, on occasion for a long time. Like anything with Emacs, there are the commands that get wired into your fingers, and those that you never quite remember. Here's a bit of getting better with dired.

Sometimes it's helpful to take a quick look at a file before deciding to rename or delete it:

o open in other window (below in frame). Reuses bottom window.
C-o Display file in other window, but do not select it.

`C-o` is especially helpful for a quick look, since the keyboard focus stays in the dired buffer.

I also found a helpful function on the Emacs Wiki page for Dired Find File Other Frame. It opens a file in a new frame, instead of just a new window. I added a slight variant to open the file read only (view mode) in a new frame as well.

  (defun dired-find-file-other-frame ()
    "In Dired, visit this file or directory in another frame."
    (interactive)
    (find-file-other-frame
     (dired-get-file-for-visit)))

  (defun wt/dired-find-file-read-only-other-frame ()
    "In Dired, visit this file or directory in another frame."
    (interactive)
    (find-file-read-only-other-frame
     (dired-get-file-for-visit)))

  (eval-after-load "dired"
    '(progn
       (define-key dired-mode-map "F"
                   'dired-find-file-other-frame)
       (define-key dired-mode-map "V"
                   'dired-find-file-read-only-other-frame)))

Finally, a little non-dired bonus hack, from the Emacs Wiki page on Killing Buffers:

  (substitute-key-definition 'kill-buffer
                             'kill-buffer-and-its-windows
                             global-map)

This changes C-x C-k to kill the windows, and frame if appropriate, that were showing a buffer when it is killed. I'm not sure it works best yet, but I'm giving it a try now.