mlindgren.ca

– 🕓 2 min read

Configuring DPI in Lubuntu/LXDE

Updated 2015-10-10: Paul suggests that this can also be accomplished by editing or creating /usr/share/lightdm/lightdm.conf/50xserver-command.conf and adding the command xerver-command=X -core -dpi 150. I haven't tried this myself. Alternatively, you can just use Xubuntu instead, which seems to run just as well, and has a handy UI for adjusting DPI. It also handles multi-monitor setups much better.


If you've tried to use Lubuntu (or LXDE on another distribution) with a high-DPI display, you've probably noticed that fonts and other UI elements are so tiny as to be illegible without a magnifying glass. You've probably also noticed that there is no GUI with which to adjust the UI scaling factor. Happily, it is possible to change the DPI settings in LXDE, but this being Linux, it requires editing obscure configuration files. Here's what you'll need to do:

  1. In your home directory, create a new text file named .Xresources
  2. In this file, enter your desired DPI in the following format: Xft.dpi: 150
  3. Restart the X server. You can do this by pressing Ctrl + Alt + F1 to enter single-user mode, then running sudo service lightdm stop, and then sudo service lightdm start. (Note that it may be a different service if you are not running Lubuntu. Alternatively, you can just reboot your machine.)

This will scale UI elements in most, but not all, applications. For instance, it doesn't resize the desktop panel, so you'll likely want to do that as well. Luckily you can do so easily by right clicking on an empty space on the panel and selecting Panel Settings; from there, just change the height of the panel in pixels to a suitable value.

This is yet another tip that I'm posting mainly becuase it took me an inordinate amount of time to figure out how to do it. I found many suggestions on how to enable scaling, but none of them worked until I stumbled across the above instructions on the blog of bebabi34. His blog is in Italian, so naturally it's not very searchable for English speakers; hopefully by reproducing his instructions here, I can save others some time.

– 🕓 2 min read

The care and feeding of software engineers

Via a friend's Facebook feed comes this excellent article about "the psychology of software engineers and what makes us the way we are." I'm in almost complete agreement with the article, although I do somewhat take issue with this paragraph:

Part of the problem [of software engineers consistently giving overoptimistic estimates and then failing to meet them] is also our fragile egos. We get afraid that if we give an estimate that is "too long", that people will think less of us. "Good engineers" should be able to work faster, they say, and so we acquiesce.

I don't really think software engineers in general have "fragile egos," or at least not to a greater extent than people in any other profession. We are notoriously bad at giving realistic estimates, but in my experience, this is often because we're actually incentivized to do so: deadlines are set before the amount of work required for a project is actually determined, or without regard to it, and then we're made to fit our estimates into too-short iterations while still trying to accomplish all we set out to do. There's a common sentiment that it's better to be under-optimistic and out-perform your goals than the converse, and while that seems true in theory, in practice there don't seem to be many discouragements to failing to live up to estimates that everyone already knows are unrealistic and often meaningless.

By contrast, I think the fear that people will think less of us for giving "too long" estimates is completely valid in a culture where it's commonplace to set unrealistic goals and then break our backs trying to achieve them by any means necessary. I think this especially true at the feature team level when one is working on a large piece of software. What do you expect to happen to a team that estimates up front that its feature cannot be completed within the release window? (Remember, adding more engineers might just make the problem worse.) I think it's safe to say that it won't involve promotions and pay raises.

Finally, as my wife pointed out when we discussed this article, the planning fallacy is by no means unique to software engineers.

All of that said, I think the rest of the article is very good; this part in particular struck a chord for me (emphasis mine):

So, without enough information, changing requirements, not enough knowledge to do the job, and people constantly second guessing us, we trudge into work every day. Being creative people, we put up with all of this because we know that one day people will use our work. That's really what drives software engineers more than anything else: the idea that people we don't even know will be affected by our work. Whether you’re working on a web site visited by millions each day or you’re working on a point-of-sale system for restaurants, the knowledge that we’re affecting people's lives is a powerful driver.

– 🕓 2 min read

How to manually send a Pingback

A couple years ago I stopped using WordPress and switched to Octopress, which is a derivative of Jekyll. I continue to be pretty happy with this decision, but there are some downsides to using a static site generator. One issue is the lack of support for Pingbacks, which are a method supported by a number of dynamic blogging platforms to notify another blog when you link to its content. Pingbacks provide a good way to respond to blog posts using your own blog rather than via commenting; thus, they facilitate "conversation" between blogs. Unfortunately, if you're using Octopress or Jekyll or another framework to generate static HTML pages, you won't natively have the ability to send or receive Pingbacks.

Luckily, Pingbacks can be sent manually with relative ease. Receiving Pingbacks still won't be possible, though; that's a much harder problem to solve, for a variety of reasons which aren't relevant to this post.

Before I proceed, I want to note that full credit for this information goes to Aaron Parecki; he explains the technique in this GitHub Gist. The reason I'm reproducing it here is because it was surprisingly hard to find Aaron's Gist, or anything else of relevance, when I was searching for information on how to send a Pingback. Hopefully, by posting about it and adding some extra context, I can make the information more searchable.

First, you'll need to create a copy of this XML file on your local machine:

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
 <param>
  <value>
   <string>http://source/url/here</string>
  </value>
 </param>
 <param>
  <value>
   <string>http://target/url/here</string>
  </value>
 </param>
</params>
</methodCall>

Replace the two URLs as appropriate - the first one is the source (i.e. your blog post), and the second is the target (the post you are linking to).

Now, you just need to POST the request to the target server. You'll need to know the target's XML-RPC endpoint URL for this. Usually, it will be /xmlrpc, or for WordPress blogs, /xmlrpc.php. You can find out for sure by inspecting the site's source for a <link rel="pingback" href="..."/> tag.

You can use cURL to post your request. It's built into most Unix-like operating systems, but Windows users will have to download it, and if you're on Mac OS X you probably need to have Apple's developer tools installed. Just run:

curl -X POST -d @pingback.xml http://example.com/xmlrpc.php

...and that's it! cURL should print out an XML response from this server with a message indicating that your Pingback was registered. Of course, to be truly sure it worked, you should check the target URL and see if your Pingback was added to the page. (Note that some sites disable Pingbacks.)

– 🕓 5 min read

Book Highlights: Halo: The Fall of Reach

As the first book set in the Halo universe, Eric Nylund's Halo: The Fall of Reach describes the training and induction of the first-ever Spartans, including John-117, the Master Chief. It follows the Spartans through some of their earliest missions, depicts humanity's first contact with the Covenant, and culminates in the battle for planet Reach, a human colony. I don't often read fiction, and I am not sure I've ever before read "expanded universe" fiction for a game or a movie, so Halo: The Fall of Reach was a bit of an unusual read for me. However, since I really enjoy the Halo games, universe, and characters, and since this book came highly recommended by other fans of the series, I figured it couldn't hurt to give it a try.

Unfortunately, per my review policy, I can't actually review this book: the Halo series, and indeed the copyright to the book, is owned by Microsoft, by whom I am employed by. Instead, I want to highlight a few things that I found interesting in the book. Be warned that this post will contain some spoilers for the book and other parts of the Halo series.

– 🕓 10 min read

Book Review: I Am Malala

I expect most people will already have some familiarity with Malala Yousafzai. In case you've been living under a rock, though, Malala is a young Pakistani woman who, at the age of 15, was shot in the head by the Taliban for her outspoken support of the right to education of children, including (especially) girls, who are often denied the right due to their gender. Miraculously, she survived the assassination attempt, and following her recovery, has continued to campaign in support of education. Now, at age 17, she has an impressive list of accomplishments and accolades to her name, including most recently becoming the youngest Nobel laureate in history after jointly winning the 2014 Peace Prize with Kailash Satyarthi, another activist for children's rights.

I Am Malala: The Girl Who Stood Up for Education and Was Shot by the Taliban, written jointly with award-winning foreign correspondent Christina Lamb, is Malala's autobiography. It chronicles her experience growing up in Pakistan's Swat Valley, the invasion of the Taliban into the area and her life under their rule, their attempt on her life, and her recovery and continuing efforts in support of education.

– 🕓 5 min read

Book Review: Lying

Originally published as a "Kindle single" in 2011, Sam Harris' Lying was republished in a revised and expanded format in 2013, but it remains more of an essay than a book. The entirety of the book weighs in at 108 pages, but the main content takes up only about a third of that. The remaining two thirds consist of a transcript of a conversation between Harris and professor Ronald A. Howard, whom Harris credits as the inspiration for the book, and an FAQ based on feedback received since the original publication. These latter two parts make a worthwhile addendum to the original essay, but they are by no means indispensable: the centerpiece here is Harris' analysis of the act of lying and all the ways in which it can lead to bad outcomes.

In Lying, Harris attempts to make the case that dishonesty is almost always unethical, and that simply by being truthful, one can avoid "endless forms of suffering and embarrassment." This might seem like a fairly obvious statement, but Harris explicitly includes (and, in fact, primarily focuses on) "white lies"—those small lies we tell not for our own benefit, but, we think, to spare others from hurt feelings or unpalatable truths. Though white lies are often told by good people for what they believe to be are good reasons, Harris argues that the cost of these lies, in the long term, outweighs their benefit:

– 🕓 13 min read

Book Review: Free Will

Sam Harris is a controversial figure, to say the least. Personally, I'm a fan of his work, but as one of the "four horsemen" of so-called New Atheism, he has met with much ire since the publication of his first book. This comes not only from religious adherents, but also from secular liberals, many of whom seem to willfully (and sometimes maybe even gleefully) misinterpret him. Although Free Will, published in 2012, courts less political controversy than Harris' other works, it too will raise the eyebrows of some readers. In fact, earlier this year, it met with a prickly reception from fellow "horseman" and philosophy professor Dan Dennett.

– 🕓 5 min read

Book Review: Dataclysm

If you've ever read OkCupid's popular OkTrends blog, you're already familiar with the work of Christian Rudder. As OkCupid's resident mathematician and one of its founders, he has been writing for years about statistical trends related to dating and attraction, leveraging OkCupid's vast database of traits about, and interactions between, its millions and millions of users. OkTrends produced numerous interesting and surprising results, and it developed a significant following before going quiet for the better part of three years beginning in 2011.

Now, Rudder is back with Dataclysm: Who We Are When We Think No One's Looking, which expands on OkTrends by drawing from a wider variety of sources (including Facebook, Google, and Twitter, in addition to OkCupid and other dating sites) and discussing a more diverse set of topics. Organized into three themed sections which focus on, respectively, unity, division, and individuality, the book explores what data can tell us about gender, sexuality, race, identity, community, and other sociopolitical questions. The discussion is consistently balanced and neutral, which is important when dealing with such potentially charged subjects, but Rudder also manages to inject enough of his personality and characteristic style to keep the book enjoyable throughout.

– 🕓 11 min read

Game Review: The Elder Scrolls Online

[Updated March 17, 2015: The Elder Scrolls Online: Tamriel Unlimited was officially released today, meaning that ESO no longer requires a subscription fee to play. In addition, there have been six major content updates since the game's original release, with dozens upon dozens of improvements. I'd encourage you to read my new post on the subject or just go straight to Zenimax Online Studios' own announcement.]

It has been about a month and a half now since The Elder Scrolls Online was released, and it's received generally mixed reviews. Despite some undeniable technical issues and a handful of design flaws, it's a great game and more than a bit underrated in my opinion; if you're a fan of The Elder Scrolls or an MMO aficionado, you owe it to yourself to give ESO a try. I'll explain why.

First, by way of qualifications, I should mention my history with the Elder Scrolls series. I didn't play Arena or Daggerfall, so I haven't been following the series since its inception, but Morrowind captured hundreds of hours worth of my attention and made a huge impression on my taste in games—it was unlike anything I'd ever played at the time, and not even other Elder Scrolls games have quite managed to recapture that magic for me. Oblivion was, at first, quite awe-inspiring, but once the captivating new graphics wore thin, it ultimately seemed shallow and uninspired compared to Morrowind. Skyrim was a return to form, with better and more varied environments, a more interesting story, and improvements to game mechanics all around—in addition to, once again, remarkable visuals. In short, I've been an Elder Scrolls fan for more than 12 years now, so although I don't go all the way back, I have a good basis for comparison.

The Elder Scrolls Online came as a surprise, being announced less than a year after Todd Howard indicated that Bethesda had no interest in an Elder Scrolls MMO. In fact, at that point ESO had been in development for four years, but Howard may not have known and certainly would not have been at liberty to reveal that. At any rate, my initial reaction was extreme skepticism; I doubted that the best aspects of The Elder Scrolls could be preserved when introduced to the MMO formula. As more details were revealed about the game's design and mechanics, I grew more interested, but I after playing the beta I was again left with lukewarm impressions. Still, something about it kept nagging at me, and I couldn't stop watching Twitch streams of ESO as launch drew nearer. Eventually, I decided to buy it just in time for early launch. Since then, I've put in nearly 150 hours, and that number would doubtless be much higher were it not for the obligations of the real world.

– 🕓 11 min read

Road Trip! Part II

Five months ago, I left off my last post having just left Canyonlands National Park, heading further south to visit Bryce Canyon and Zion National Parks. I had booked a motel for the evening in Panguitch, Utah, which is a three or four hour drive from Moab. The drive there was uneventful, with relatively little in the way of scenery. I mostly followed the interstate, until about an hour outside of Panguitch, where I exited onto state route 89.

Route 89 winds through scrub desert, farmland, and several very small towns nestled between modest mountains. I arrived in Panguitch and discovered that it, too, is very small. In contrast to Moab, though, it didn't seem to have much of a tourist draw despite its proximity to Bryce Canyon. As a foreigner, I have to admit that I felt some apprehension at this. Although everyone I'd met in Utah so far had been very friendly and welcoming, a small, isolated town like Panguitch is the kind of place where I imagined that I could encounter a Top Gear-esque redneck mob. Granted, I wasn't driving around with a purposefully offensive slogan on my car, nor do I really have a discernible accent, but I still felt like a pretty obvious outsider with my Washington plates and conspicuous blue car with absurd spoiler. I was relieved, then, when I checked in at the New Western Motel and was greeted at the front desk by an older Indian man (who I presume is also the owner); it was good to see that the population of Panguitch isn't completely homogeneous.

If you read the previous post you might recall that I had only slept for a few hours the previous night, as I was up around 3:30am to get pictures of Delicate Arch at night. That being the case, I was exhausted by the time I checked into my room, so I decided to nap for a few hours before heading to Bryce Canyon. It might have just been because I was so tired, but I distinctly recall thinking that the bed in my motel room was among the most comfortable I had ever slept in.

I woke up around five or six in the evening and went to grab dinner from "The Pizza Place" in the nearby town of Tropic. Yes, it's literally just called "The Pizza Place." It's a nice little family-run business, and the pizza was pretty good. I couldn't help but notice that they had several copies of the Book of Mormon available for guests to peruse. That didn't surprise me, given that I was in Utah, but I did find it strange that most if not all of the books seemed to be written in Danish.

I made it to the Bryce Amphitheater in Bryce Canyon National Park just in time for sunset, and took the opportunity to walk the Rim Trail and take some pictures. Unfortunately, as it was quickly becoming dark, I didn't have time to go on any of the hiking trails or explore the rest of the park. I contemplated spending another day in Panguitch and going on a horseback tour of Bryce Canyon, but ultimately opted to leave for Zion National Park the next morning so that I'd have more time there.