summaryrefslogtreecommitdiff
path: root/_posts
diff options
context:
space:
mode:
authorBen Burwell <ben@benburwell.com>2015-05-12 13:06:51 -0400
committerBen Burwell <ben@benburwell.com>2015-05-12 13:06:51 -0400
commit16252256a59ff3c318a384202e2a00a9601ec45e (patch)
tree5910b37e1132484ae8f8a9ffde0940740a285d22 /_posts
parent73bd29472664f3b9628913c623ce15030081a470 (diff)
Make posts page show only an excerpt, correct datetime
Diffstat (limited to '_posts')
-rw-r--r--_posts/2012-08-18-american-education-reform.markdown2
-rw-r--r--_posts/2012-08-19-art-versus-design.markdown2
-rw-r--r--_posts/2012-08-20-interoperability-and-firstnet.markdown2
-rw-r--r--_posts/2012-08-25-the-apple-samsung-battle.markdown2
-rw-r--r--_posts/2012-12-12-mobile-design-paradigm.markdown2
-rw-r--r--_posts/2013-01-13-unified-show-control.markdown2
-rw-r--r--_posts/2013-12-13-helvetica.markdown2
-rw-r--r--_posts/2014-04-23-quick-application-launcher-for-os-x.markdown2
-rw-r--r--_posts/2014-04-28-forest-printer-management.markdown2
-rw-r--r--_posts/2014-05-01-migrating-to-github-pages-and-jekyll.markdown4
-rw-r--r--_posts/2014-05-03-printing-at-muhlenberg.markdown2
-rw-r--r--_posts/2014-05-31-less-file-compilation-for-jekyll-github-pages.markdown2
-rw-r--r--_posts/2014-09-30-what-is-two-factor-authentication-and-why-does-it-matter.markdown2
-rw-r--r--_posts/2014-10-10-open-bug-tracking-empowers-users.markdown2
-rw-r--r--_posts/2014-10-11-configuring-cloudflare-universal-ssl.markdown2
-rw-r--r--_posts/2014-12-14-showoff.markdown2
-rw-r--r--_posts/2015-01-15-optimizing-css.markdown2
-rw-r--r--_posts/2015-01-16-your-website-is-not-special-dont-make-visitors-make-accounts.markdown2
-rw-r--r--_posts/2015-03-28-reset-forgotten-password-on-luks-encrypted-ubuntu.markdown2
-rw-r--r--_posts/2015-03-29-visualizing-congress-with-d3.markdown24
-rw-r--r--_posts/2015-04-23-getting-login-to-work-ubuntu-15.04-nvidia.markdown2
21 files changed, 53 insertions, 13 deletions
diff --git a/_posts/2012-08-18-american-education-reform.markdown b/_posts/2012-08-18-american-education-reform.markdown
index f5ab578..a26c335 100644
--- a/_posts/2012-08-18-american-education-reform.markdown
+++ b/_posts/2012-08-18-american-education-reform.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/american-education-reform/"
This was going to be a snarky piece on how good typographic practice is rarely found outside of the professional realm, but nobody would want to read that. Except, perhaps, for other typography nerds. And that is part of what I have to say. But a small part.
+<!--more-->
+
Our public education system has declined in effectiveness to the point of being nearly worthless. The basic subjects — writing, reading, arithmetic, history, and geography — have remained static for a century while the world around us has changed immensely.
It is time to introduce new subjects into the basic collection that every child learns. We must teach electronics, robotics, and programming starting early on. It is absolutely essential that every child have some basic understanding of these in the modern world. (There is research to suggest that POGIL may be especially relevant and effective in STEM education.) We must expand our education in the arts and music, inspiring creativity and aesthetic sensibilities.
diff --git a/_posts/2012-08-19-art-versus-design.markdown b/_posts/2012-08-19-art-versus-design.markdown
index 1fee887..ae1d89e 100644
--- a/_posts/2012-08-19-art-versus-design.markdown
+++ b/_posts/2012-08-19-art-versus-design.markdown
@@ -11,6 +11,8 @@ As I was skimming [a list of observations on art versus design][list], I was str
> Genuinely honest art is created without the market in mind — you are simply creating. Design is created with the market in mind — and the medium does not matter. If you’re a musician or painter, and purposefully crafting your work in order to sell, you’ve become a designer.
+<!--more-->
+
This particular explanation, unlike some, seems to be quite specific and leave no question as to which category a given work falls under. (There are several other excellent quotes on the list; I highly recommend reading it through.)
This particular line, though, made me wonder why we still call some things _art_. Immediately, the music industry popped into my mind. There are certainly many musicians who are truly artists, but they aren’t the ones that get rich off their music. The people who get rich off their music, more often than not, are simply writing songs (and if you’re lucky, they’ll be the ones actually writing them) about things that people will buy. These so-called “artists” slave away in recording studios, repeating each line over and over until its delivery is approved by the marketing team. Hollywood faces the same situation. This commercialization of art is not in fact art at all, but design. Hearing popular musicians revered as “artists” always sounded a little wonky to me.
diff --git a/_posts/2012-08-20-interoperability-and-firstnet.markdown b/_posts/2012-08-20-interoperability-and-firstnet.markdown
index 50e41e2..b6f74ec 100644
--- a/_posts/2012-08-20-interoperability-and-firstnet.markdown
+++ b/_posts/2012-08-20-interoperability-and-firstnet.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/interoperability-and-firstnet/"
The United States is finally putting real effort into building a nationwide public safety network with [FirstNet], the First Responder Network Authority. FirstNet has been tasked by Congress to build, deploy, and maintain a nationwide broadband network for use by public safety agencies in order to provide completely interoperable communications.
+<!--more-->
+
While I applaud this effort, there are several potential issues that should be addressed. To begin with, a centrally controlled network of this scale would present large reliability problems. In numerous occasions, communities that have rolled out digital or trunked radio systems with many system components have had failures due to a tower or controller failing, leaving all users in the affected area with no way to communicate with each other or with users in other parts of the system. This is not only a risk for naturally occurring phenomena, such as a power outage or [overheating], but also create centralized targets for terrorist attacks. If an attack was planned, it would be relatively simple to first bring down the local tower, thereby preventing all communication in the area. Therefore, a high degree of redundancy must be implemented, as well as physical infrastructure safeguards, which are both technically complex and expensive.
It is not clear whether the new broadband system would completely replace all existing public safety communication systems, or if it would simply be used to supplement them in situations where inter-agency coordination is required. The question also arises as to which agencies will use the system. In addition to the many public and governmental agencies that would be involved in the response to a major incident, there are also many <abbr title="Non-governmental entity">NGO</abbr>s, such as the Red Cross and Salvation Army that are often involved. Would they be permitted to use the network?
diff --git a/_posts/2012-08-25-the-apple-samsung-battle.markdown b/_posts/2012-08-25-the-apple-samsung-battle.markdown
index e9121c2..49048fa 100644
--- a/_posts/2012-08-25-the-apple-samsung-battle.markdown
+++ b/_posts/2012-08-25-the-apple-samsung-battle.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/the-apple-samsung-battle/"
On August 24, a jury in San Jose, California awarded $1,049,343,540 to Apple after Samsung was found to be in violation of their software and design patents. This case is monumental not because of the actual damages to be paid by Samsung, but because of the precedent it sets. There is no question that Samsung’s designs were inspired by (perhaps even copied from) the iPhone and iPad. In a statement following the ruling, Apple hailed the ruling “for sending a loud and clear message that stealing isn’t right,” while Samsung stated that the verdict “will lead to fewer choices, less innovation, and potentially higher prices. It is unfortunate that patent law can be manipulated to give one company a monopoly over rectangles with rounded corners.”
+<!--more-->
+
While both statements contain convincing rhetoric, there is no direct contradiction, suggesting the possibility that they actually are both true. I am a firm believer in the idea that patents stifle innovation. I also believe that stealing is not right. However, what Samsung did is not “theft.” There is no doubt that they blatantly copied some of Apple’s design elements, so based on our current legal system, Apple certainly had every right to pursue damages.
But to me, and many other consumers, the iPad is still a superior product to Samsung’s tablet. If Samsung was able to create a better product than Apple, perhaps including some of Apple’s design elements, shouldn’t they have every right to profit from it? This is true capitalism. Whoever takes the first step into a new design should not have a monopoly on further developments. As a commenter on a New York Times article on the matter wrote, why are all wheels round? Why do nearly all cars have four of them?
diff --git a/_posts/2012-12-12-mobile-design-paradigm.markdown b/_posts/2012-12-12-mobile-design-paradigm.markdown
index 9bda652..b2e1d03 100644
--- a/_posts/2012-12-12-mobile-design-paradigm.markdown
+++ b/_posts/2012-12-12-mobile-design-paradigm.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/mobile-design-paradigm/"
When iOS was first introduced, it was filled with beautiful, glossy icons with shadowing and reflections. However, there’s been a shift in the UI design as the operating system has matured.
+<!--more-->
+
The glass effect does not have to be built into icons, it appears there by default. Perhaps wisely, Apple elected to make the glass effect optional though, by use of a setting when bundling a new app. This resulted in many third-party developers building their own icons pixel for pixel and choosing not to apply the glass effect. Now, icons that do use the glass effect seem far outnumbered by those that don’t.
When I installed the new Gmail app on my iPhone, I was struck by the beauty of the UI. It embodies the shift we’ve seen in icon design in its large, clean buttons and general lack of three-dimensionality. It transforms the device from a faux-3D space to a planar surface that you can interact with.
diff --git a/_posts/2013-01-13-unified-show-control.markdown b/_posts/2013-01-13-unified-show-control.markdown
index cbbaa74..0d20336 100644
--- a/_posts/2013-01-13-unified-show-control.markdown
+++ b/_posts/2013-01-13-unified-show-control.markdown
@@ -5,7 +5,7 @@ description: A paper on unifying all aspects of theatrical show control.
date: 2013-01-13 00:00:00
---
-For my freshman writing seminar at Muhlenberg, I wrote a paper on a system I devised for controlling many different theatrical cueing consoles from one master console using MIDI Show Control (MSC). I called my system [Unified Show Control (pdf)](/assets/pdf/Unified_Show_Control.pdf).
+For my freshman writing seminar at Muhlenberg, I wrote a paper on a system I devised for controlling many different theatrical cueing consoles from one master console using MIDI Show Control (MSC). I called my system [Unified Show Control [pdf]](/assets/pdf/Unified_Show_Control.pdf).
Shortly after finishing this project, I discovered that [QLab][] from Figure 53 already has MSC built into it. Though it was slightly disappointing, I was thrilled that my idea already exists, albeit in a slightly different form.
diff --git a/_posts/2013-12-13-helvetica.markdown b/_posts/2013-12-13-helvetica.markdown
index 3b3454c..8d709fb 100644
--- a/_posts/2013-12-13-helvetica.markdown
+++ b/_posts/2013-12-13-helvetica.markdown
@@ -7,6 +7,8 @@ date: 2013-12-13 00:00:00
Those who believe the web should be made more beautiful will appreciate this extension for Safari and Google Chrome that makes all text display in Helvetica Neue (with regular old Helvetica as a backup).
+<!--more-->
+
Installing Helvetica in Safari
------------------------------
diff --git a/_posts/2014-04-23-quick-application-launcher-for-os-x.markdown b/_posts/2014-04-23-quick-application-launcher-for-os-x.markdown
index bc0a937..f66dad2 100644
--- a/_posts/2014-04-23-quick-application-launcher-for-os-x.markdown
+++ b/_posts/2014-04-23-quick-application-launcher-for-os-x.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/quick-application-launcher-for-os-x/"
I’ve been using [Alfred][] for some time now as an application launcher. If you’re not familiar with application launchers such as Alfred, it’s essentially Spotlight supercharged. It can find and launch applications, open files, perform custom web searches, even shut down your computer for you — all from commands you type in.
+<!--more-->
+
Like many other aspects of Alfred, it has highly customizable settings for the key combination used to activate it. For a long time, I used a double-tap of the Option key, but I felt as though there must be a better solution. Inspired by the Google’s decision to replace the traditional Caps Lock key with a “Search” key on the Chromebook, I started poking around on the web.
Enter [PCKeyboardHack][].
diff --git a/_posts/2014-04-28-forest-printer-management.markdown b/_posts/2014-04-28-forest-printer-management.markdown
index 45faf05..cf32e5c 100644
--- a/_posts/2014-04-28-forest-printer-management.markdown
+++ b/_posts/2014-04-28-forest-printer-management.markdown
@@ -7,6 +7,8 @@ date: 2014-04-28 00:00:00
In the Fall 2013 semester, I took a Software Engineering class. After a few weeks studying about development lifecycles, scheduling techniques, and such, we split the class into groups to propose and develop large software projects. I joined the team that was building a system that would track printer usage, display status, and collect statistics. Having previously created [a printer status project](http://mathcs.muhlenberg.edu/~bb246500/printers/), I found the idea intriguing.
+<!--more-->
+
Several of the team members had experience using GitHub, so we decided to [create an organization](https://github.com/printerSystemCSI210) to store documents and provide version control. We had the school Math/CS department web server running Apache available for web hosting. Additionally, I had experience with [Node.js](http://nodejs.org) running on [Heroku](https://www.heroku.com/), so we had that technology in our arsenal as well.
One of the first challenges we encountered that would have an impact on our architecture was the fact that most printers do not have public IP addresses and thus would need to be queried from inside the local network, while we wanted the public-facing site to be accessible regardless of physical location. This led us to developing the concept of an API which would enable a master database to be queried and updated by various components. In developing an API-central infrastructure, we were also looking down th line towards supporting client-developed applications and native applications for various platforms (iOS, Android, Windows, OS X).
diff --git a/_posts/2014-05-01-migrating-to-github-pages-and-jekyll.markdown b/_posts/2014-05-01-migrating-to-github-pages-and-jekyll.markdown
index 5271a57..b1bf2e6 100644
--- a/_posts/2014-05-01-migrating-to-github-pages-and-jekyll.markdown
+++ b/_posts/2014-05-01-migrating-to-github-pages-and-jekyll.markdown
@@ -7,10 +7,10 @@ date: 2014-05-01 00:00:00
redirect_from: "/writing/migrating-to-github-pages-and-jekyll/"
---
-## Background
-
I’ve always been a fan of using [Markdown](http://daringfireball.net/projects/markdown/) to create web content. Several years ago, I created [MDEngine](/projects/mdengine/), a small PHP script to render Markdown files in HTML dynamically. For a while, it was responsible for much of the content on my website. In October 2013, I began work on a fresh design. I decided to use a custom Node.js app deployed on Heroku for processing the Markdown. While this worked effectively, I always had some reservations.
+<!--more-->
+
While my site was decently fast, there was no real reason that it needed to be dynamically generated. I was particularly concerned with the performance of the two list pages, whose backend logic consisted of parsing an entire directory of Markdown files each time it was loaded. Though there was no noticeable performance impact, it was not inconceivable that the page generation time would increase substantially as content grew.
In late April 2014, I made some design updates to the site running on Heroku. I decided to take the opportunity to address my performance concerns as well. While my original intent was to simply clean up the server logic I had written, I realized that it would be more sustainable in the long term to migrate to a true static site using [Jekyll](http://jekyllrb.com).
diff --git a/_posts/2014-05-03-printing-at-muhlenberg.markdown b/_posts/2014-05-03-printing-at-muhlenberg.markdown
index 64d949b..34d8784 100644
--- a/_posts/2014-05-03-printing-at-muhlenberg.markdown
+++ b/_posts/2014-05-03-printing-at-muhlenberg.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/printing-at-muhlenberg/"
A common frustration of Muhlenberg students is to print a document to a dorm printer only to find that the printer had no paper when going to collect it. This leads to both frustration and wasted paper, since when more paper is put into the printer, it will print out all the queued jobs from when the tray was empty. By that time, students have often given up and printed their document to another printer.
+<!--more-->
+
To avoid this, I created a web page that [reports the status of Muhlenberg printers](http://mathcs.muhlenberg.edu/~bb246500/printers/). The PHP script queries the printers to determine the status of their trays. If you’d like to see other printers added, let me know [by email](mailto:hi@benburwell.com) or [on Twitter](https://twitter.com/intent/tweet?text=@bburwell).
## DNS Names
diff --git a/_posts/2014-05-31-less-file-compilation-for-jekyll-github-pages.markdown b/_posts/2014-05-31-less-file-compilation-for-jekyll-github-pages.markdown
index 56e0410..c4d9eb7 100644
--- a/_posts/2014-05-31-less-file-compilation-for-jekyll-github-pages.markdown
+++ b/_posts/2014-05-31-less-file-compilation-for-jekyll-github-pages.markdown
@@ -9,6 +9,8 @@ redirect_from: "/writing/less-file-compilation-for-jekyll-github-pages/"
I recently wrote about [migrating my website to GitHub Pages](/writing/migrating-to-github-pages-and-jekyll) and noted that I wasn’t completely satisfied with my deployment workflow. Ideally, [creating a build should be done in a single step](http://www.joelonsoftware.com/articles/fog0000000043.html). As I wrote, my previous build workflow required me to manually compile my [LESS](http://lesscss.org) files before committing if I’d made changes. While my stylesheet doesn’t change often, this method is certainly not ideal.
+<!--more-->
+
Using [Git hooks](http://git-scm.com/book/en/Customizing-Git-Git-Hooks), it’s possible to run a script at certain points during the Git workflow. To take advantage of this in my case, I added a small bash script to `.git/hooks/pre-commit`:
{% gist benburwell/0ef673f6311b5191186e %}
diff --git a/_posts/2014-09-30-what-is-two-factor-authentication-and-why-does-it-matter.markdown b/_posts/2014-09-30-what-is-two-factor-authentication-and-why-does-it-matter.markdown
index bbca8d6..fb9c5a7 100644
--- a/_posts/2014-09-30-what-is-two-factor-authentication-and-why-does-it-matter.markdown
+++ b/_posts/2014-09-30-what-is-two-factor-authentication-and-why-does-it-matter.markdown
@@ -10,6 +10,8 @@ redirect_from: "/writing/what-is-two-factor-authentication-and-why-does-it-matte
With subversions of the security measures of cloud-based services on the rise, many service providers are implementing a strategy known as multi-factor authentication or simply educating their users about the implementations they’ve had for years.
+<!--more-->
+
So what exactly is it? While logging in to an account usually only requires you to enter the proper password, two-factor authentication, or 2FA for short, relies on multiple different ways of proving your identity. In general, the three types of identification are _knowledge_ (something you know), _posession_ (something you have), and _inherence_ (something you are). Typical 2FA schemas require the presentation of two of these “factors” in order to authenticate.
The knowledge factor is the most popularly understood and includes passwords or passphrases, PINs, and secret patterns. Essentially, 2FA is an authentication scheme that combats the multitude of ways an attacker might gain your password by introducing another — usually posession — factor. It’s easy to imagine a scenario in which your password could be compromised, whether it’s an attacker brute-force guessing, using the same password for multiple purposes, social engineering attacks such as phishing, or any other means. However, it is unlikely that any of these attackers who gain access to your password will be in sufficient physical proximity to steal or even just see your access token.
diff --git a/_posts/2014-10-10-open-bug-tracking-empowers-users.markdown b/_posts/2014-10-10-open-bug-tracking-empowers-users.markdown
index c627add..99493dd 100644
--- a/_posts/2014-10-10-open-bug-tracking-empowers-users.markdown
+++ b/_posts/2014-10-10-open-bug-tracking-empowers-users.markdown
@@ -11,6 +11,8 @@ redirect_from: "/writing/open-bug-tracking-empowers-users/"
The rise of networked information economy described by Yochai Benkler has both enabled and been enabled by the free software movement. A central facet of this emerging culture is its [participatory nature](http://www.benkler.org/Benkler_Wealth_Of_Networks.pdf). This is reflected in the flagships of the free culture movement such as Wikipedia, where the time and expertise of many is combined to create a competitive alternative to commercial offerings. Though free software aims to be a participatory medium, due to the highly technical and often specialized nature, the barriers to entry for the average “netizen” are often relatively high.
+<!--more-->
+
In order to organize any software project a separate program called a bug or issue tracker is often used to categorize and track the progress of bugs in the code, almost like a giant and detailed to-do list. A bug tracker could be anything from a spreadsheet to a sophisticated routing and tracking system that integrates with help desk software and documentation. The larger a project is, the more [crucial it becomes to use a bug tracker](http://www.joelonsoftware.com/articles/fog0000000029.html), as it facilitates the necessary communication between developers and testers as to who is working on what at any given time. Often, bug trackers are accessed by members of the software team through a web browser, as this is an easy and efficient way to collaborate. However, with traditional commercial software, the contents of the bug tracker tends to be considered highly sensitive, proprietary information that should not be disclosed in order to protect the company’s competitive advantage. After all, exposing to the public issues with the software might result in them switching to a competitor. However, for free or open source software projects, using a publicly available bug tracker that is open to anyone who wants to see it is the de-facto standard, and rightfully so.
There are fundamentally two ways that using an open bug tracker benefits an open source project. First and foremost, as Benkler points out, free software projects tend to have a wide variety of contributors. From gurus who know the code base inside and out, to casual hackers, every contributor brings a different level of skill and expertise to the project. In software engineering, it is commonly understood that you cannot expect everyone to have identical skills such that their role in the team is totally flexible. To maximize the team’s productivity, it is best to take into account each member’s skill set and expertise. For example, if one of the gurus of a mature open-source project finds an error in some of the help files, it would probably be a waste of time to go and fix it when they could be spending their time addressing a highly complex and sophisticated bug or issue with the code. Rather, filing a bug report would allow a newcomer to the project who has not yet accumulated the technical sophistication to address the documentation. In free and open source software, the bug tracker is how this organization and self-assignment of tasks takes place.
diff --git a/_posts/2014-10-11-configuring-cloudflare-universal-ssl.markdown b/_posts/2014-10-11-configuring-cloudflare-universal-ssl.markdown
index 0e873dc..9ad62dd 100644
--- a/_posts/2014-10-11-configuring-cloudflare-universal-ssl.markdown
+++ b/_posts/2014-10-11-configuring-cloudflare-universal-ssl.markdown
@@ -10,6 +10,8 @@ redirect_from: "/writing/configuring-cloudflare-universal-ssl/"
On September 29, 2014, [CloudFlare](https://www.cloudflare.com/), a web security company and CDN provider, [announced](http://blog.cloudflare.com/introducing-universal-ssl/) that they would begin offering free, automatic SSL to all its customers (including those on their free plan). This is an enormous step forward for enhancing security and privacy on the Internet; while website owners would previously need to purchase an SSL certificate for their site and often pay extra for SSL hosting, CloudFlare now makes this all free. Plus, you get the benefits of their other services such as DDoS protection.
+<!--more-->
+
I’ve previously written about [hosting static sites with GitHub Pages](https://www.benburwell.com/writing/migrating-to-github-pages-and-jekyll/), which is what I use for www.benburwell.com. GitHub provides SSL hosting for its static sites, but not with custom domain names (e.g. `https://example.github.io` but `http://example.com`). Using CloudFlare, it’s possible to use `https://example.com` for free. And as a bonus, you won’t need to worry about DNS hosting either.
What is CloudFlare?
diff --git a/_posts/2014-12-14-showoff.markdown b/_posts/2014-12-14-showoff.markdown
index 2331f78..e8cc6f1 100644
--- a/_posts/2014-12-14-showoff.markdown
+++ b/_posts/2014-12-14-showoff.markdown
@@ -8,6 +8,8 @@ category: writing
Recently, I had to give a presentation and decided to do some research on using Markdown. By coincidence, I had also been looking into [Puppet](https://puppetlabs.com), a flexible and powerful configuration manager, when I stumbled across [Showoff](https://github.com/puppetlabs/showoff), another Puppet Labs project.
+<!--more-->
+
Showoff is a Ruby application that takes a Markdown file with some [special formatting](https://github.com/puppetlabs/showoff/blob/master/documentation/AUTHORING.rdoc) and transforms it into a web-accessible slideshow. As expected, you can open up a presenter view in your browser. You can also easily open up a second window to use on your projector in full screen. You can even give your audience the address for the server so they can follow along on their own screens.
There are also some nice audience interactivity features, like the ability to ask questions through the web interface. These questions will be shown on the presenter's screen. Audience members also have the ability to indicate whether the presenter is moving too quickly or too slowly so that an adjustment can be made accordingly.
diff --git a/_posts/2015-01-15-optimizing-css.markdown b/_posts/2015-01-15-optimizing-css.markdown
index 6f50986..c2496f2 100644
--- a/_posts/2015-01-15-optimizing-css.markdown
+++ b/_posts/2015-01-15-optimizing-css.markdown
@@ -8,6 +8,8 @@ date: 2015-01-15 00:00:00
There are probably a lot of ways that you can significantly speed up your page load times by taking a look at your CSS. Here are a couple of places to start looking.
+<!--more-->
+
## Remove unused CSS rules
Using frontend boilerplate like [Bootstrap](http://getbootstrap.com) for CSS or a grid system can be really helpful for prototyping pages quickly. However, in production, it's important to remove CSS rules that are not in use in order to optimize your page load times and rendering speed.
diff --git a/_posts/2015-01-16-your-website-is-not-special-dont-make-visitors-make-accounts.markdown b/_posts/2015-01-16-your-website-is-not-special-dont-make-visitors-make-accounts.markdown
index fddac2c..08a319c 100644
--- a/_posts/2015-01-16-your-website-is-not-special-dont-make-visitors-make-accounts.markdown
+++ b/_posts/2015-01-16-your-website-is-not-special-dont-make-visitors-make-accounts.markdown
@@ -8,6 +8,8 @@ date: 2015-01-16 00:00:00
One of my pet peeves in website usability design is forcing people to create unnecessary accounts. My recent purchase of some concert tickets from [Ticketfly](https://www.ticketfly.com) required me to make an account to buy them. For people who buy a lot of concert tickets, having an account may make a lot of sense. But for me, as someone who buys concert tickets at most once every year or two, having an account on a site that I will probably only use once is not only unnecessary, it's annoying.
+<!--more-->
+
This is not to say that you shouldn't offer accounts; that would be ridiculous (depending on the type of site you are running, of course). However, in general, your users know far better than you do whether or not they actually want or will use an account. Forcing them to create an account will only drive them away. People don't like creating accounts they don't want to have. There's really no reason you can't have a "check out as guest" option.
And if you do offer accounts, here are a couple of rules to follow to ensure a good user experience:
diff --git a/_posts/2015-03-28-reset-forgotten-password-on-luks-encrypted-ubuntu.markdown b/_posts/2015-03-28-reset-forgotten-password-on-luks-encrypted-ubuntu.markdown
index 1c30045..5348e94 100644
--- a/_posts/2015-03-28-reset-forgotten-password-on-luks-encrypted-ubuntu.markdown
+++ b/_posts/2015-03-28-reset-forgotten-password-on-luks-encrypted-ubuntu.markdown
@@ -14,6 +14,8 @@ Here's the situation I recently found myself in:
* LUKS encrypted filesystem (known passphrase)
* Physical access to the computer
+<!--more-->
+
I needed to reset my account password. Normally, with physical access to a machine, all bets are off when it comes to security. I tried booting up the machine into [recovery mode](https://wiki.ubuntu.com/RecoveryMode) by holding down <kbd>shift</kbd> as soon as the BIOS had finished loading. But when I selected the "Drop to root shell" option, I was prompted to enter the unknown root password.
My second approach was to boot into single user mode by editing the GRUB command script.
diff --git a/_posts/2015-03-29-visualizing-congress-with-d3.markdown b/_posts/2015-03-29-visualizing-congress-with-d3.markdown
index efde0b0..e27377d 100644
--- a/_posts/2015-03-29-visualizing-congress-with-d3.markdown
+++ b/_posts/2015-03-29-visualizing-congress-with-d3.markdown
@@ -6,22 +6,26 @@ category: writing
date: 2015-03-29 00:00:00
---
-<style>
-.d3container {
- width: 100%;
- margin-top: 2em;
- margin-bottom: 2em;
-}
-</style>
+<div>
+ <style scoped>
+ .d3container {
+ width: 100%;
+ margin-top: 2em;
+ margin-bottom: 2em;
+ }
+ </style>
+</div>
I've been wanting to learn [D3.js](http://d3js.org/) for a while now, so I decided to create some visualizations of the United States Congress, inspired by Neil deGrasse Tyson:
<div class="center">
-<img src="/assets/images/vis_ndgt0.jpg">
-<img src="/assets/images/vis_ndgt1.jpg"><br>
-<img src="/assets/images/vis_ndgt2.jpg"><br>
+ <img alt="What profession do all of these senators and congressmen have?" src="/assets/images/vis_ndgt0.jpg">
+ <img alt="Law, law, law, law, business man, law, law, law..." src="/assets/images/vis_ndgt1.jpg"><br>
+ <img alt="Where are the scientists? Where are the engineers? Where's the rest of... life?" src="/assets/images/vis_ndgt2.jpg"><br>
</div>
+<!--more-->
+
It wasn't hard to find some [open-source Congress data](https://github.com/unitedstates/congress-legislators), and converting the [YAML](https://github.com/unitedstates/congress-legislators/blob/master/legislators-current.yaml) to [JSON](/assets/data/legislators-current.json) was [practically a one-liner in Ruby](https://gist.github.com/benburwell/20e76f70645c8003b088#file-yaml-to-json-rb). Armed with my trusty JSON data, I set off to learn the basics of D3.
Conveniently, D3 packages some of the base functionality that we often turn to jQuery for, eliminating the need to include yet another library. Using CSS selectors to query the DOM, adding nodes and attributes, and fetching JSON data are just a few such functions.
diff --git a/_posts/2015-04-23-getting-login-to-work-ubuntu-15.04-nvidia.markdown b/_posts/2015-04-23-getting-login-to-work-ubuntu-15.04-nvidia.markdown
index cd9a6b5..883fa19 100644
--- a/_posts/2015-04-23-getting-login-to-work-ubuntu-15.04-nvidia.markdown
+++ b/_posts/2015-04-23-getting-login-to-work-ubuntu-15.04-nvidia.markdown
@@ -7,6 +7,8 @@ date: 2015-04-23 00:00:00
When I upgraded to Ubuntu 15.04, I was unable to log in. The machine started normally and I was presented with the login window. But when I entered my password, the screen went black for a few moments and then the login screen came back.
+<!--more-->
+
Since I'm using an [NVIDIA GeForce GTX 750](http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-750), which Ubuntu's Nouveau drivers don't support, I previously needed to install the NVIDIA graphics drivers.
By entering <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>F3</kbd>, I was able to drop to a shell. When I checked `/var/log/Xorg.0.log`, I found a message stating that the NVIDIA driver had failed to load the GLX module, despite earlier messages that it had been loaded. The message also recommended reinstalling the NVIDIA driver.