liz writes stuff down
17May/160

invalid arch-dependent ELF magic

An elf stands on an arch, attempts to cast a spell, and freaks out when he is unable to cast it, or...

An elf stands on an arch, attempts to cast a spell, and freaks out when he is unable to cast it.

14May/16Off

Inbox by Gmail’s accidentally abusive algorithm

The modern world really loves to use little algorithms here and there to help us speed things up. Inbox by Gmail is no exception.

Inbox has a concept of "speed dial" - an algorithmically determined set of "frequent" contacts that appears when hovering over the compose button:
Speel dial shows up on the right when hovering over the button for composing a message

In theory, this is great. It was really handy when it picked my fiancé, my mom, and a close friend. At some point, my own email replaced my close friend's because there were a lot of times when it was easier to email myself a bunch of notes than create line item reminders out of them. Still immensely convenient.

Later, Inbox decided to switch my mom out for someone else. This someone else had been emailing me a lot, though I think my mom had still been emailing me more. Occasionally, I'd reply when I was obliged to, but I was definitely sending more emails to my mother. Whatever the specifics, the algorithm replaced my mom with him.

What Inbox didn't know was that this person had been harassing me.

No amount of additional emails to my mom would put her back in speed dial and kick him out. I poked around in settings, hoping to find a way to pick my own speed dial contacts or a reset button, but I found none. An obscure post from 2014 on the Gmail Help Forum told me I could delete my contact to remove him from speed dial, but this only worked for the web version. It didn't remove him from Inbox on my iPhone, and I could only get him out there by uninstalling and reinstalling the Inbox app.

These aren't good solutions. Fortunately, his email address easily identifies him so I didn't mind deleting the contact info that tied his name to it, but had he had something more reminiscent of early 2000s AOL addresses, I might have needed to rely on that contact information. The energy it took to find these roundabout solutions and time I continued to have him in speed dial before finding those solutions kept reminding me of how he didn't respect my boundaries. The speed dial algorithm was hurting me instead of helping me out.

I don't think we should eliminate handy tools like this; most of the time, I'm a big fan. But I do wish that there were always easy to find manual overrides - or at least an easy to find kill switch - for algorithmically generated content so that we can minimize their inadvertent accidental cruelty (content warning: loss of a loved one).

11May/160

Understanding GNU Screen’s captions

I love screen. I know all the cool kids are using tmux now, but screen keeps it simple and does everything I really need.

One of the things I (possibly mistakenly) want is lots of windows. The problem with having lots of windows is they quickly become hard to keep track of, especially since the default screen configuration doesn't have any guiding information quickly available to the user. Fortunately, you can fix this with a caption that appears at the bottom of your terminal.¹
screen caption
I do this in my ~/screenrc, which boils down to:

### pass commands to screen for describing windows
shelltitle '$ |sh'

### set caption
caption always '%{= kw}[ %{y}%H%{-} ][ %= %-Lw%{+b M}%n%f* %t%{-}%+LW %= ][ %{r}%l%{-} ][ %{c}%c%{-} ]'

There's a lot going on here, and it took an unfortunately long time to work out...

shelltitle '$ |sh' is all about making it easy to know what's in each window, but it's only possible with this extra scripting in my ~/.bashrc:

# dynamic titles for screen
case $TERM in
  screen*) export PROMPT_COMMAND='echo -n -e "33k33\\"'
esac

This passes the last command to screen to use within my caption to identify what's currently happening in each window. This is a lifesaver for someone who makes the questionable life decision of having at least eight windows open in every screen she launches.

That's the simple part; now, let's break down my complicated caption format. Captions aren't documented well. Lots of people post theirs, but usually without explanation - likely because it's a pain to describe. I started off by mashing up other people's captions, but that didn't get me very far. I completely redid mine last week, and I realized pretty quickly that I'd only make it perfect by understanding how to build it up part by part. Inspired by Jay Sitter's article on hardstatus strings, I present a breakdown of my caption:

### set caption
caption always '%{= kw}[ %{y}%H%{-} ][ %= %-Lw%{+b M}%n%f* %t%{-}%+LW %= ][ %{r}%l%{-} ][ %{c}%c%{-} ]'
%{= kw} clear all text attributes and set to text color to white and background to black
[ plain text to mark sections
%{y} set text color to yellow
%H hostname of the system
%{-} go back to previous text settings (text color to white)
][ plain text to mark sections
%= with the later %= in the caption, pad this section on the left so that the caption spans the entire line
%-Lw list windows before current window, the optional 'L' indicates that these windows show their flags
%{+b M} the current window section starts, make text bold, set text color to magenta
%n current window number
%f flags of the current window
* plain text I use to mark the current window
%t current window title
%{-} go back to previous text settings (text color to white, normal weight)
%+LW list windows after current window, the optional 'L' indicates that these windows show their flags
%= with the earlier %= in the caption, pad this section on the left so that the caption spans the entire line
][ plain text to mark sections
%{r} set text color to red
%l current load of the system
%{-} go back to previous text settings (text color to white)
][ plain text to mark sections
%{c} set text color to cyan
%c 24-hour clock
%{-} go back to previous text settings (text color to white)
] plain text to mark sections

Hopefully this explanation inspires you to customize your screen caption to your heart's content!

Oh, by the way, my dotfiles are now available on GitHub.

¹You could also fix this with a hardstatus. I don't like this solution as much because hardstatus is for status messages from screen, e.g. to alert you about activity, while caption is more thematically in line with giving the details of the windows within the screen.

15Jul/150

Save your old bio: it stores confidence as well as content

I cringe at having to describe myself or write my own bios. No matter how casually an email, site, or form says "introduce yourself, no pressure", I shrink back. How do I convince myself that other people find who I am or what I do interesting?

I found myself asking this question a lot this past year, probably because I've written myself quite a few bios in the last year. Conference applications ask me who I am, social websites want me to fill out my profile, and social and professional networking has me introducing myself over email. I'm often uneasy about what to write, so I draft my bios in emacs and copy them over when I'm ready. As a result, I've ended up with a copy of every bio I've written in the last year. This turned out to be a happy accident - having copies of previous bios makes writing a new one a lot easier for me.

When I can look back at old bios, I benefit from having words at my fingertips to reuse when appropriate. When I see that I included something about me in a previous bio, I feel more confident that it's something worth including instead of something that isn't good enough. When I reread old bios, I remember what people told me worked well and what could have been better. (Keeping feedback nearby would be handy, too.) But mostly, when I see that I've written successful bios before, I feel confident that I can write a good one again.

And once I've written a new bio, I ask a friend to read it.

7Jul/154

Who is WHOIS: a brief biography of Internet user privacy

If you look up the registration details for my personal (and currently non-commercial) website, you'll see

Registrant Name: WHOISGUARD PROTECTED
Registrant Organization: WHOISGUARD, INC.
Registrant Street: P.O. BOX 0823-03411
Registrant City: PANAMA
Registrant State/Province: PANAMA
Registrant Postal Code: 00000
Registrant Country: PA
Registrant Phone: +507.8365503
Registrant Phone Ext:
Registrant Fax: +51.17057182
Registrant Fax Ext:
Registrant Email:
   9E75215858B04E82BCC8D2E235410D8E.PROTECT@WHOISGUARD.COM

because I register lizdenys.com by proxy. When I first registered lizdenys.com over five years ago, I used proxy registration because I value my privacy, and I continue to do so.

Starting in mid-2013, 282,867 domains registered by eNom via Google Apps had their hidden registration information made public. On April 11, 2014, I noticed lizdenys.com was among them. Having my personal information freely available online to everyone wasn't just theoretical anymore. I am lucky that most of that information is now outdated and that the worst that happened to me was that a slew of recruiters contacted me through the previously unreleased number in my WHOIS record. (I have to admit I'm probably about as impressed as I am creeped out that recruiters admitted to finding that phone number through a WHOIS lookup.) My domain is again protected through a proxy registration.

But ICANN, the global domain name authority, is considering a proposal to disallow proxy registration services for commercial websites. Currently, lizdenys.com isn't and doesn't look like a commercial site, but it could very easily become one. If I needed to put ads on my website to cover hosting costs, lizdenys.com could be considered commercial. If I finished and published my cookbook, Counter Productive, and promoted it here, lizdenys.com would almost certainly be considered commercial.

But the problem with the WHOIS database runs deeper than what should or should not qualify as commercial and whether or not commercial domains should be allowed to use proxy registration services.

To understand the WHOIS database, we have to start with its origins - before the Internet. ARPANET, an early packet switching network whose technologies became the foundation of the Internet, was a closed network for the purpose of supporting government research. Personal and commercial use was discouraged.

ARPANET Directory collected the identities of its users, along with their workplace address, phone number, and network mailbox, and provided this information to other users. As described in RFC 812 (1982), the WHOIS protocol and Identification Data Base were originally designed to provide an "online directory look-up equivalent to the ARPANET Directory". WHOIS was created to have a very specific purpose of connecting those supporting government research more readily, but did not provide information that was not previously available to its users.

In 1984, MILNET, the part of ARPANET used for unclassified Department of Defense traffic, was physically separated from ARPANET for security reasons, but the two networks continued to communicate. RFC 954 (1985) described a natural evolution for the WHOIS Database - that it should continue to include sites that were on the now independent MILNET. The purpose of WHOIS was again scoped to identifying the locations of network names supporting government research, and it still did not provide information that was not otherwise available to its users.

In 2004, RFC 3912 updated the protocol but did not state changes to the scope of the database. By this time, the Internet had expanded from only connecting Department of Defense researchers to also including personal and commercial web endeavors. The WHOIS Database expanded with it, despite no stated change to its purpose, from physical sites of machines passing traffic on a government network to also including personal information about people using an ISP to physically host their site somewhere other than their home address.

During the early days of electronic commerce in the mid-1990s, most participating individuals did not have to worry about their personal information being a part of the WHOIS database. For most sellers, the only WHOIS records for their site were those of their online store platform, such as Viaweb (founded in 1995, later bought by Yahoo! to become Yahoo! Store) and eBay (founded in 1994). Even medium-sized sellers didn't own their own domain names until later in the dot-com era, and individual sellers followed even later. Contact information for e-commerce was handled in other means. While WHOIS records were expanding beyond the needs of the ARPANET Database, they still tended to catalog only major organizations making up the network, not every website owner by their personal information.

In the last two decades, an increasing number of individuals sell through their own domains, where they have the freedom to customize the purchasing experience for their products. Many more individuals, such as myself, have personal domains that will probably venture into partially commercial territory someday by showing ads or promoting their work. Each of these domain owners is also required to be in the WHOIS directory - either they must give their home address, create an alternate address possibly to be used solely for domain registration, or use a proxy registration service. (Most domain owners I know use both proxy registration and an alternate address underneath, like a PO Box, though obtaining an alternate address costs much more than a domain name, a proxy registration service, hosting, and SSL certificates combined.) It's a recent phenomenon for domains to be owned by individuals instead of large companies and government agencies. Proxy registration service is, effectively, a workaround for how WHOIS was not designed to handle this.

The Internet of 2015 isn't the Internet of 2004 or 1994 or 1985 or 1982, and we deserve better than the WHOIS system designed 33 years ago.

That's a lofty undertaking that isn't currently in the works, but the threat of removing proxy registration for commercial websites is immediate. ICANN's working group has called for public comment on this issue - you can send your comments by emailing comments-ppsai-initial-05may15@icann.org and clicking the required confirmation when ICANN replies that they have received your response. I've written in, and I hope you will, too.