Switching to Pelican

Until today, my website was fragmented across a number of static pages and two WordPress instances. To simplify my life, I decided to unify them into one content management system instead of keeping that somewhat unwieldly mess around.

I had never really put a lot of thought into picking platforms before, hence the mess. For many years, my "homepage" was a single static page, which was easy enough since I've been writing HTML and CSS for about fifteen years. It later grew to five pages, but with some extremely simple scripting, it was just as easy to maintain my five static pages instead of just the one. My (modern) blog had always been a WordPress instance. I separated my food blog posts from my other posts for probably imprudent reasons a couple years ago, and I didn't think to do anything besides split it into two WordPress instances.

Eight years ago, I picked WordPress for a few reasons:

  • WordPress is a relatively simple system to operate.
  • Lots of people use WordPress, so you can usually find the answers to your questions with some quick internet searches. (Sadly, their own docs are, or at least were, kind of sad.)
  • The themes are highly customizable with HTML and CSS, and WordPress theme syntax isn't too hard to pick up.
  • I was hosting it on SIPB's scripts.mit.edu and installing WordPress was a breeze and free. As a SIPB member, I knew the maintainers well, so I felt like I could safely host my site there with less machine maintenance.
  • I wanted some fancy plugins at the time, and WordPress had them. (I don't use them anymore.)

But WordPress has a lot of drawbacks, too:

  • It's written primarily in PHP. (No amount of homebrew server-side include scripting done in high school to make your first self-hosted blog can make writing PHP exciting.)
  • It requires a database.
  • You create the site through an online system. I hate web interfaces. I hate clicking to create things.
  • You need to constantly update WordPress itself (and its plugins) to keep up with security issues.
  • Dynamic websites don't load quickly. I barely used the dynamic features: an unnecessary Twitter module and comments I never really wanted aren't enough to justify that cost.

Since I wasn't really using any WordPress specific features or any dynamic features, I decided to move to a static website system instead. I could still have good control over my theming through HTML and CSS, eliminate a source of security vulnerabilities, improve loading speed, and stop using PHP and MySQL. There were a lot of additional upsides for me, too:

  • It's easy to keep my website under version control - both the files to generate the site and the generated site.
  • It's easy to move my website around different hosting options.
  • Comment integration is significantly more complicated, so the completely misguided temptation to allow comments is basically removed.

There are many static site generators around; I chose Pelican. Some specific reasons include:

  • It's in Python, and I like writing Python.
  • It's fairly well documented.
  • It has an active and growing community.
  • While I can continue to directly use HTML like I have for years, I could opt to learn and use the simpler Markdown later.
  • I can organize my raw content conveniently - files can be put in whatever folder or subfolder I want, and it can generate my website's hierarchy according to other rules.
  • People have already written some convenient plugins, specifically the neighbors plugin I use to add chronological navigation between articles.
  • My best friend already uses Pelican for his site. (This was probably about 80% of my reasoning.)

But I can't say that Pelican is without flaws; I encountered some pretty big ones in my switch:

  • The Pelican dev team made a big mistake in choosing the AGPL for the project's license. Themes by the dev team may also fall under Pelican's AGPL, and if that's the case, sites generated with those themes - and thus their content - may also be covered by the AGPL. I learned a bunch of Jinja because I had to create this theme without looking at any existing Pelican themes so that my site would avoid these licensing issues. I am working on a less personalized Pelican theme to release under the MIT license so that others can also have a simple theme to use without having to worry that the Pelican dev team might enforce the AGPL over their content.
  • Pelican doesn't believe in multiple categories. I converted all of my categories to tags, but it doesn't feel quite right. At some point, I'm going to break down and fork the project to add this functionality.
  • Putting double quotes in article titles doesn't work. Even if you use " instead of ", Pelican will convert them to plain "s when inserted into link titles. This generates invalid HTML. I'll probably patch this when I get some time, but for now, I've just changed all the double quotes in my article titles to single quotes.
  • The WordPress importer didn't work so well for me. Maybe this had something to do with my having multiple categories for many of my posts? Honestly, I don't know because I wrote a hacky shell script instead of digging into it.

So yeah! My site's in Pelican now, so I'm slowly making progress to finishing my website revamp! :)

Footnotes

  1. However, it was baby's first bash script and ushered in my decade long love of shell scripting. Still going strong. <3
  2. Thanks, Geoffrey, for letting me ping you with all the questions ever as I made this site.

Slack doesn't listen to its users.

In a rush of hubris, Slack published a full page ad taunting Microsoft Teams in the New York Times:

Part of their letter reads:

Communication is hard, yet it is the most fundamental thing we do as human beings. We've spent tens of thousands of hours talking to customers and adapting Slack to find the grooves that match all those human quirks.

Slack knows it is used in a lot of places, in a lot of different ways. Many users have been requesting the ability to mute or block other users:

Users have offered numerous reasons they might want this feature:

I found those tweets in a couple minutes, and you can easily find more. I'm not sure when Slack first heard users wanted blocking and muting, but they definitely did almost two years ago:

Despite hearing this request for two years, Slack's position now is that no one needs blocking and muting features:

That's not attentively listening to users like their ad claims.

Reasons to kick Peter Thiel off Facebook's board

There's a push to remove Peter Thiel from Facebook's board, and Mark Zuckerberg doesn't care about the threat he poses. Many of the arguments are centered around diversity, which is a tenet Facebook says it deeply values.

The ways Thiel fails to value diversity matter: his beliefs are not just a matter of intellectual debate but a very real threat to my safety. They are particularly transparent during the 2016 election season. I don't support the bigoted, sexist candidate that is Donald Trump like Thiel openly and aggressively does for a host of reasons. One of the most important is that I feel directly threatened by having someone who freely admits to committing sexual assault hold the highest office in my country - I feel especially, intimately endangered as a survivor of sexual assault myself. That's just one of the numerous reasons a Trump presidency would devastating be for women, people of color, LGBTQIA+, and other oppressed groups.

However, Thiel's harmful views on diversity and elections reach much farther than his open, aggressive support of Donald Trump in this election. Thiel believes that women like me should be stripped of their right to vote - not just because of the diversity concern regarding how he clearly doesn't care about women, but because women happen to disagree with his political views and actually hold the power to prevent the outcome he desires. The voter suppression he espouses directly eliminates free speech, something Facebook claims to be incredibly important.

Kick Peter Thiel off Facebook's board. Kick him off because he discourages diversity. Kick him off because people like me don't feel safe with him on it. Kick him off because he doesn't believe in free speech.

Liz rides the subway on October 4, 2016: social media, differing political views, and friendship

Liz rides the subway is a series containing thoughts I have on the subway. On the 3 and B trains home:

I came across this Good Guy Boss meme on Facebook yesterday:

Good Guy Boss: I will respect you regardless of who you support in this election. I don't unfriend people due to political views. That degrades democracy and free thinking.

I will respect you regardless of who you support in this election.

I don't unfriend people due to political views. That degrades democracy and free thinking.

There is a big difference between respecting someone as a person and being friends with them. Memes like this deceptively conflate those two things because it's reprehensible to not respect someone as a person. People post these memes because they want you to believe unfriending someone is the same reprehensible act.

But it's not. Friendship is more than respecting someone as a human being. Friendship requires trust. Friendship requires active effort.

Political views are not theoretical or arbitrary like what someone's favorite sports team is - they have meaningful consequences for my friends and me. Many political views that disagree with mine fundamentally imply their holder doesn't see me or many of my friends and family as human beings intrinsically deserving of rights and respect. I just don't know how to trust people whose views fundamentally disrespect me as a human because I don't feel safe. I don't know how to put the effort into staying close with people I can't trust.

Unsurprisingly, most of the time I see these memes in my feed, they come from dudes, usually cishet white dudes. There's a great post on tumblr about how it's easier for cishet white dudes to be friends with people who disagree with their political ideas:

White dudes have this thing where they believe your best friend in the world can have opposing political ideas. You're supposed to be able to have healthy debate and disagreeing shouldn't harm your friendship. That's gross and stupid. Its really easy to say that when all your disagreements are theoretical. Its easy to say when none of the laws passed actually effect your life. Fighting with your best friend about corporate regulations, school charters, educational funding, abortion, health care, voting restrictions, drug laws, taxes and all sorts of stuff is cool and lively because none of it is going to actually leave you in a bad spot. Its different for the rest of us.

If someone's opposing political views were truly, solely theoretical for everyone, maybe I'd be able to trust them enough to be friends with them.

Sometimes, when I tell people this, they bark back that friendship on social media and "in person, pre-social media friendship" aren't the same. I'm inclined to agree, but that still doesn't mean someone deserves to be my "friend" on social media. People I am "friends" with on social media and don't block take up space in my feeds and time in my day, and I have every right to curate this to take care of myself by keeping out hateful disrespect. I still read multiple, ideologically different, non-social media news sources, so the argument that I'm living in a bubble doesn't hold a lot of water in my mind.

Besides, comparing being friends or following on social media to in person friendships generally confuses me because it's not clear exactly what constitutes friendship. I casually call basically everyone I know a "friend" when talking about them with someone else I know, whether or not I spill my secrets to them, but if I don't share any of my private thoughts with them, I probably consider them an "acquaintance" in my mind. The word "friend" has become so overloaded that it's practically lost its value - it's no wonder that it's an even more complicated concept online.

Triggering videos, thoughtful content warnings, and responsible feature release policies

Content warning: police murder of black people

We need to talk about potentially triggering videos and social media.

Social media is nearly unavoidable. There's a lot of upsides to using it, such as keeping up with family and friends you can't see frequently and reaching out to your customer base in more personalized ways, but it's also evolving very, very fast. One day we're posting our latest relationship update; the next we're getting news as soon as it breaks. It empowers marginalized voices to tell their stories - stories that often go untold.

One second we were uploading photographs; the next gifs and videos - videos of our cats, then videos of police shooting black people. Maybe people are posting them to draw attention to issues the mainsteam media doesn't see fit to focus on. Maybe police shootings are being posted as videos because people don't believe black victims didn't pose a threat. I don't personally share these videos, so I can only guess at the motivations.

If we listen to black voices, we hear them pleading to keep videos depicting police shootings of minorities out of their view.

Black lives matter. Properly respecting black lives involves understanding that videos depicting a death of a human can be very triggering and respecting viewers by allowing them the chance to opt out of seeing them.

We need to use thoughtful content/trigger warnings.

Content warnings allow people to engage with content how and when they feel comfortable doing so. They are not censorship.

Placing content warnings for videos is a lot less straightforward than placing content warnings for written pieces without even photographs like this one. A written content warning before a video in a social media post is a good start. They work well for posts that link to articles with videos in them when those videos don't sneak into the previews social media like to embed.

The reader is able to see this tweet without having to see a potentially triggering graphic video.

We need tools that help us place content warnings specifically for video formats.

If someone comes across an article or social media post with a video directly in it, text-based content warnings aren't enough.

Preview frames might include a triggering image. We can replace the default frame selected from a video with one that contains only the text of relevant content warnings. We need tools that make this process easy to do. Preferably, social media would include these tools in their upload interfaces themselves. Their inclusion would provide not just ease of use but also a convenient reminder to use them.

Also, the video may start playing anyway - maybe it autoplayed, maybe the reader accidentally clicked on it. Tools to supply text-only frames containing the relevant content warnings for the first ten seconds of a video would give someone the opportunity to pause or scroll past it before triggering content is forced upon them. This would provide a buffer even when video autoplay is turned on.

We need to release new features responsibly.

When Facebook and Twitter released their video autoplay features, they enabled it by default. Their decisions forced users to unnecessarily engage with content they didn't desire to see. We should not turn on new features like video autoplay by default.

Facebook does allow users to disable autoplay for videos, but that still doesn't make it okay to turn it on by default. Twitter allows you to turn off autoplay for some videos, but you're stuck with autoplay while you scroll through a Moment, regardless of your video autoplay settings. It is absolutely irrepsonsible of Twitter to force this feature on you in any situation.

Content warnings, tools, and responsible feature release policies will never be a complete solution, but maybe these tools and feature releases would allow for us to benefit from having triggering videos available without causing as much unnecessary harm.

Footnotes

  1. It's also a huge mobile data hog.
  2. This appears to now be in the "Data" section of settings on iOS, and I am told it is a similar process for Android.