Site Updates

Some minor site updates over the last few days:

  • Comments are now powered by Commento instead of Disqus. This significantly reduces page load size on pages with comments.
  • Icons (social media, etc) are all now 2x resolution for modern retina screens.
  • Site-specific search is now powered by DuckDuckGo instead of Google. No longer loads an iframe, significantly faster site-loads, and better privacy to boot.
  • Archives page works again. Did this ever work?
  • Page is back to being fluid instead of fixed-width.
  • Improved CSS across the board, particularly on mobile devices.
  • Code page is updated.

I also managed to backport in some blog posts from the 2004-2007 era that were on the Internet Archive. For posterity!

Feel free to leave a comment or e-mail me if you notice any bugs.

Firefox Setup: 2019

Here's a quick post on how I use and configure Firefox on my Macs. The last time I posted about any of this was in 2011, and things have changed a fair bit since then. First, a screenshot (from my new iMac):

screenshot of firefox

Key extensions for this setup:

Vim Vixen : Vim keybindings for Firefox. Not quite as good as Vimperator, but works with modern Firefox, and getting better all the time. The only thing I really miss is macro recording, which I used all the time in Vimperator.

Tree-Style Tabs : Our monitors are widescreen; why would you try to stack tabs at the top of the window, taking up vertical space? Tree-style tabs lets you have a tab-hierarchy in a space-friendly manner.

uBlock Origin : I tried to go without an ad-blocker for a few years, to support independent businesses, but it's just not possible. Loading even relatively trustworthy sites (especially, for some reason, webcomics lately) is just a flood of malvertising now. uBlock Origin is the most popular ad-blocker these days. ¯\_(ツ)_/¯

Multi-Account Containers : This little extension makes it possible for me to have work tabs alongside personal tabs without corrupting all of my history all of the time. In particular, it lets me map sites (at the domain level) to automatically open in one tab container or another. I wish this supported wildcard domains so I could point every work domain at a container, but it's a start

New Container Tab : Adds a keybinding to open a new tab in the same container as the current tab (as opposed to the Firefox default, which opens the "Default", untagged container when you press Cmd-t

Mac OSX Light : This just makes the toolbar/titlebar color match the rest of macOS instead of being slightly off. It only works in "Light Mode".

1Password : Don't leave home without it.

One thing you might've noticed from the screenshot is that I've hidden tabs from the titlebar (since they're in the sidebar), but I don't have a big ugly blank space up there. That trick is actually the driving impetus for this blog post, since every other post on how to do that is broken as of Firefox 64. If you want the exact same appearance I have, just create a chrome/userChrome.css file inside your Firefox profile directory1 with the following contents:

Note: This was updated on December 1, 2024.

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* hide the native tabs */
#TabsToolbar .toolbar-items {
	visibility: collapse;
}

/* fix the titlebar color and padding */
.browser-titlebar {
	background-color: var(--toolbar-bgcolor) !important;
	justify-content: space-between !important;
	padding: 8px 0 !important;
	--inactive-titlebar-opacity: 1.0;
}

/* hide the sidebar header so Tree-Style Tabs looks native */
#sidebar-header {
	visibility: collapse;
}

/* Hide the border under where native tabs would be, to get the "unified toolbar" appearance of modern macOS */
#navigator-toolbox {
	--tabs-border-color: transparent !important;
}

/* the coloration of the titlebar to look like a toolbar */
#titlebar {
	background: var(--toolbar-bgcolor);
}

/* hide a single stray vertical line that creeps in if you have tabs hidden */
#titlebar .titlebar-spacer[type="pre-tabs"] {
	border-inline-end: 0 !important;
}

You'll need to restart firefox for it to take effect.

NOTE: You may need to set the toolkit.legacyUserProfileCustomizations.stylesheets to true in about:config to get Firefox to load userChrome.css.

1

~/Library/Application Support/Firefox/Profiles/* on macOS; probably somewhere similar on other platforms.

Life Update: Moved

Hello infrequent readers: here's a piece of good news for once: as of October 27th, I've moved! $SPOUSE and I now live in the Elmwood neighborhood of Berkeley, California in a nice little two-bedroom one-and-a-half-bedroom single-family residence. It's a little surreal; even though where we live has a pretty nice mixed-use vibe (there's an apartment building around the corner, a bunch of restaurants nearby, and a Whole Foods only a few blocks away), it's still practically rural compared to the apartment in the Tendernob that I've lived in for the last eight years.

read more

Mastodon

I don't know if you're aware of this, but Twitter hasn't been a very good company in the last few years. Between the aiding and abetting of white supremacists, the continued hosting of our obnoxious orange tweeter-in-chief, and the ongoing user-hostile platform changes, it's just not as fun of a place as it was when I joined on November 14, 2007. So, uh, I'm not there any more.

No, I didn't delete my Twitter account. However, I have started trying to use a new microblogging system in its stead: Mastodon. Mastodon is an interesting idea: it's a federated social network1, which means it's made of a bunch of different copies run by different people but set up so that you can follow people and read their toots2 no matter which instance they happen to be on. I'm on mastodon.technology, which is generally themed around mainstream tech stuff, but I follow people at fosstodon and cybre.space and mastodon.social3. There are a couple of outstanding things about mastodon that I'd like to point out:

  • The local timeline is a timeline that shows every toot marked as "public" from people on your instance If you are on an instance that is relevant to your interests and which isn't too big, this can be a great way to get exposed to new people and new ideas. Mine has a few too many bitcoin enthusiasts on it, but is generally fun!4
  • Instances have rules and a code of conduct. Mastodon.technology (like many other instances) actively blocks hate speech and white supremacists. How novel!
  • You aren't the product! Most instances are either run by volunteers or funded by donations (mastodon.technology is funded by a Patreon), there are no ads, there's no garbage algorithmic timeline. It's just a chronological list of short mixed-media posts from people you choose to follow. Again... novel...

Of course, mastodon isn't the first technology product to try to move into Twitter's space. I also used the bizarrely- named App.net during its brief existence between mid-2013 and mid-2014; it was okay. There was also identi.ca in 2008 and the ever-popular Google Buzz, which I think I used when I was a Google employee 🤷‍♂️. The real advantage to Mastodon's design is that since it's open-source software and is federated, it's moderately harder for a single company to tank the platform. Of course, social networks are only useful as long as people you want to interact with use them, so it remains to be seen how well-populated Mastodon will be. If you're reading this, maybe you're someone who would be fun to interact with on Mastodon and you should make an account and follow me? Hm? If you still want more information, this Motherboard article is pretty good.5

The biggest weakness (for me) for Mastodon so far is a dearth of good native clients. I'm currently using Amaroq on my iPhone, which is feature complete but doesn't feel like a very good native iOS app, and beta testing Tusk, which feels like a native iOS app but is missing lots of features. There's nothing worth using yet on iPads or Macs. However! There is light at the end of the tunnel — Sean Huber of The Iconfactory (makers of Twitterrific, the best iOS/macOS Twitter client) appears to be working on a top-secret Mastodon client named Fantastodon. I'm excited.

So, yeah. If you @-me on Twitter, I probably won't respond6, but you should totally join me on Mastodon and follow me as @roguelazer@mastodon.technology. Awoo!

1

Mastodon folks call each Mastodon server an instance and the collective of all of them the fediverse. Technically, since the protocol is open, the fediverse also contains some other servers running totally unrelated packages such as GNU Social and Diaspora.

2

No, I don't really love toot as an un-trademarked substitute for tweet (especially since the bird association and the word tweet both came from third-party Twitter devs). Life goes on.

3

Mastodon.social is kind of the default instance for people who don't want to invest in picking a better one. You should pick a better one.

4

There's also something called the federated timeline which is basically the set-union of the timelines of everybody followed by anybody on your instance. Unless you are in a tiny and extremely focused instance, it's far too noisy to follow.

5

I didn't realize until I was writing this post that the Motherboard article was by Sarah Jeong, whose reporting in general is excellent and whose courtroom reporting for the ridiculous Oracle v Google Java trial was amazing. Another point for that article!

6

at least in part because I no longer receive notifications for Twitter because of their boneheaded API changes

Election Spam, 2018 ed., Volume 1

Hello intermittent readers, and welcome to the latest edition in my series on electoral advertising. As you may or may not know, June 5th is California's primary election for 2018. We've got a contentious list of ballot measures, as well as a variety of local, state, and federal offices up for election, which means it's time for a bunch of special interest groups to spend money sending my family high-gloss advertising pamphlets.

2018 election spam

On the ballot this time around:

  • Governor
  • Lt. Governor
  • Secretary of State
  • State Controller
  • Treasurer
  • Attorney General
  • Insurance Commissioner
  • Board of Equalization
  • US Senator
  • US Representative
  • State Assembly
  • Superior Court Judge (x4)
  • Superintendent of Public Instruction
  • Mayor
  • 5 State Measures
  • 1 Regional Measure
  • 9 City Measures

After the fold, let's see who's spending their advertising budget in densest San Francisco.

read more

Amusing Siri Date Localization Bug

Here's an amusing iOS 11 bug:

If an iOS device is set to the en-US locale and Siri is set to a British voice, when reading dates aloud, Siri transposes months and days. For example, given the command Remind me Wednesday Morning to buy milk, Siri responds with OK, I added it for Wednesday at 10/11/17 7:00. When reading this aloud, Siri reads it as OK, I added it for Wednesday the 10th of November two thousand and seventeen at seven o'clock.

Siri bug

It seems kind of crazy to me the Apple is parsing the raw text shown on screen rather than having some kind of machine-readable tagged data. So weird!

I reported this to Apple. I guess we'll see if it gets fixed in iOS 12.

read more

Gsuite Phishing?

I received an e-mail today at my work address with the subject [Feature Ideas [Customers Only]] - [Survey] The G Suite Admin Experience team wants to learn your needs around data/resource access boundaries which looked like the following:

screenshot of sketchy email

Quick — is this real or is this spam? What would you look for?

read more

Election Spam, 2016 ed., The Final Countdown

As you may or may not know, today is the day before the most contentious election in recent memory. Aside from the presidential race between a competent woman and a can of orange spray paint, there are also a host of down-ballot candidates at the federal, state, and local levels, and, here in San Francisco, an outstanding 42 state, regional, and city ballot propositions. As is usual, I've received a healthy pile of 77 pieces of election spam this season; here's my tally.

2016-11 Election Ads

Overall, of the 77 pieces of mail that my wife and I received in the months leading up to this election, 15 of them were voting slates and 62 of them were either single-issue or, in many cases, dual-issue (U & P, Q & R). As far as I can tell, only a single one of them (the state-issued party-level official endorsements) even touched on the presidential campaign. Read on for details!

read more

Election Ads, 2016 ed., Part 1

Hello readers! If you've been living under a rock (or, really, anywhere that isn't California), this coming Tuesday (June 7th) is the most important primary election in California in recent memory! As befits such a momentous occasion, I've received another batch of election spam!1

2016 Primary Election Ads

Surprisingly, the biggest issue in this election in San Francisco isn't the presidential primary, but is instead the election of the Democratic County Central Committee (the DCCC); the vast majority of election spam that I received was either a complete slate for the DCCC, or an ad for an individual candidate.

I've decided to break down my analysis a little differently this year; I'll be counting each piece of mail separately for each issue it advertises for; therefore, the sums don't necessarily add up to the total amount of mail (42 pieces, if you're curious).

CandidateOfficeProAnti
Bernie Sanders2President1-
Jane KimCA State Senate4-
Scott WeinerCA State Senate132
David ChiuCA State Assembly7-
Victor HwangJudge4-
Sigrid IríasJudge1-
Paul Henderson3Judge5-
London BreedDCCC1-
David Campos4DCCC1-
Zoe DunningDCCC1-
Josh ArceDCCC12
Wade WoodsDCCC1-
Aaron Peskin5DCCC12
John GolingerDCCC1-
Alysabeth AlexanderDCCC1-
Pratima GuptaDCCC1-
Frances HsiehDCCC1-
Cindy WuDCCC1-

Beyond that, 15 of the flyers contained complete DCCC slates, most of which were either the Reform Slate or the Progressive Slate. A decent overview of the slates can be found at https://medium.com/@understanding_sf_politics/the-2016-san-francisco-dccc-elections-c0f6fc84537d.

And, of course, we always have a bunch of ballot propositions. Here are the tallies:

PropositionProAnti
SF Prop A11-
SF Prop B132
SF Prop C12-
SF Prop D9-
SF Prop E7-
SF Measure AA8-
CA Prop 501-

Using my estimate from last time of 35¢ per piece of mail, that's $14.70 spent advertising for this local primary election to my household alone. What an efficient use of money!

Anyhow, if you live in California, be sure to vote on Tuesday. I'm sure I'll see you again for another of these tallies in November.

1

See also this and this.

2

That's right, we only got one ad for the Presidential election, and it's for Bernie. SF!

3

Footnote not found

4

At time of writing, both of David Campos's sites are landing pages. Classy!

5

Another candidate whose website is down. What is this, 1995?