Cheat Sheet for Emoji on Github Commits 

I can’t believe I didn’t know about this before.

$ git add .
$ git commit -m "Add a commit! :tomato:"
$ git push

On Github, this will appear as:

Add a commit! 🍅

I’m going to be using this way too much. If you’re a heavy user of Slack, you already have all the important ones memorized too.

How Github Made Its Diff Pages 3x Faster 

Github’s engineers:

In practice, our limits did a pretty good job of protecting our servers and users’ web browsers from being overloaded. But because these limits were applied in the order Git handed us back the diff text, it was possible for a diff to be truncated before we reached the interesting parts. Unfortunately, users had to fall back to command-line tools to see their changes in these cases.

These graphs of improvement are incredible. The kinds of problems Github is solving are incredible. I imagine its engineers have a good chuckle whenever they visit git - the simple guide.

A tool I’d love to see some day is an interface as drop-dead simple as but that’s powered by Git, not a JavaScript script. There are certain situations where you need to see the diff of two files outside the context of version control, and nothing is faster than having two side-by-side panes where you can just dump the text.

What Went Wrong with the Apple Store? 

Jason Fried, yesterday:

Best Buy feels simple, Apple Stores feels over engineered, too sophisticated. I get why, but why doesn’t matter to the customer experience. It’s either great or it’s not — the why behind the scenes doesn’t matter.

A few months ago, I bought an Apple TV at Walmart instead of the Apple Store for similar reasons.

Paul Graham on California Proposition 62 

Paul Graham, before last month’s elections:

In the real world, about 4% of people sentenced to death are innocent. So this is not about whether it’s ok to kill killers. This is about whether it’s ok to kill innocent people.

A child could answer that one for you.

Proposition 62, which would have repealed capital punishment, was rejected 53 to 47 percent.

Everyone agrees that an innocent person should not die for a crime they didn’t commit. That 4% statistic is one to remember. I hadn’t realized it was that high.

An Example of an Actual Conspiracy Theory 

Yesterday I claimed that climate change skepticism does not necessitate a belief in a conspiracy theory. From 911Research:

  1. The hole in the Pentagon wall appears to have been made by an aircraft, however, the hole is too small to have been made by a Boeing 757.
  2. The damage to the Pentagon is about as extensive as one would expect from the crash of a large aircraft, although one that was somewhat smaller than a Boeing 757.
  3. The public has absolutely no evidence that Boeing 757 debris has been recovered from the site.
  4. The photos of “the explosion” of flight 77 are a complete and utter fabrication.
  5. Why these photos were fabricated, who fabricated them, and why the media ran the story, remain a mystery.
  6. Although, the middle level military are being honest about what happened on September 11, factions within the media are deliberately lying. The reasons for this are not clear.

Now that’s a true conspiracy theory right there. Next time you’re tempted to say something is a conspiracy theory, compare it to this. This is the standard.

The Rules

Posting links to articles is something that used to be done on Twitter, but Twitter is an inferior medium compared to one’s own website.1 As a growing number of sites are little more than an updated stream of links pointing elsewhere, it’s helpful to have some guidelines for how to do this well. Here are The Rules.

  1. It’s in your power to change the headline of what you’re linking to, but you don’t have to.
  2. Never post a link to something and quote it without giving your commentary, be it ever so brief. People know how to find articles on their own. Your opinion is the salt that makes it worthwhile coming from you. That’s the whole point. As per Rule 1, if you do choose to change the headline of what you’re linking to, then that counts as feedback, and your job is done if you wish for it to be.
  3. It’s often fun to link to things that are controversial. Every controversy has at least two sides. Do your due diligence so you’re at least aware of the gist of both sides, for both sides will eventually read it. This awareness is much much harder than it looks, because confirmation bias is strong. The copout is to link with no commentary, but that would be breaking Rule 2.
  4. Strive to maintain a whimsical slackness. Don’t pull the rope too tight. It’s often tempting to sit on a high horse. This medium lends itself to that. Resist it. Don’t strain at the speck in your brother’s eye. When it’s time to call someone out, make sure it’s serious, and then hold nothing back. Be right, and speak your mind.
  5. There are two ways to call someone out: publicly and privately. Don’t ever mix the two. If it’s public, talk about them, not at them. Don’t make an open letter addressed to an individual or a company. Don’t publish a public piece and then private message or email them about it. Let them find it on their own, or not. If you actually want to have a critical conversation with someone, talk to them privately, and don’t say anything publicly about it on your site. Keep these lines crisp.
  6. Never say something just because you think it looks good on screen—you have to mean it. If Software X has a bug that you think is worth pointing out, don’t say you hope to learn how they fixed it. Just say you hope they fix it.2
  7. Know when to break The Rules.
  1. There are only two things that Twitter facilitates that a pairing of a commentless site and email can’t: the exchange of public dialog, and searcheability for breaking news at ground zero. The former is the most cringe-worthy aspect of social media. It’s an aspect we can do without. The latter contains true value and will be the only real tragedy if Twitter goes away, but that has nothing to do with the matter at hand, the matter of posting links to articles. A post can do a better job of this than can a tweet. ↩︎

  2. Unless, of course, you really are curious what the problem was, but expect no one to believe you. ↩︎

The Slowness of Universal Clipboard

Is anyone else noticing that the universal clipboard is really slow when copying from your Mac and pasting on your iPhone? When I tap to bring up the paste option, there’s a delay. When I tap the paste option, there’s a delay. Sometimes there’s such a delay that there’s a popup that says:

Pasting from “Martyn’s MacBook Pro”…

Usually when this happens, the process does a timeout, the popup goes away, and the paste doesn’t successfully complete. It usually works on the second try, though.

Universal clipboard is a great feature executed poorly. I’m hoping we see an improvement on this in 2017.

Scott Adams Gives Permission to Be Skeptical of Climate Change 


If you ask me how scared I am of climate changes ruining the planet, I have to say it is near the bottom of my worries. If science is right, and the danger is real, we’ll find ways to scrub the atmosphere as needed. We always find ways to avoid slow-moving dangers. And if the risk of climate change isn’t real, I will say I knew it all along because climate science matches all of the criteria for a mass hallucination by experts.

Climates fluctuate, to be sure, and right now we’re fluctuating towards a slightly warmer world. 50 years ago, we were fluctuating towards a slightly colder world. It happens. Whether it’s actually anthropogenic, longterm, and dangerous, is another matter entirely. It could be, but Scott gives a lot of reasons why it might not be either.

The idea that climate change may not be a viable fear is not a conspiracy theory. This is very different from believing that the earth isn’t round, or that we’ve never been to the moon. In order to believe a conspiracy theory, you have to believe that a group of people, the gatekeepers, are willfully making up data for nefarious purposes. That’s not what Scott is saying at all. He’s saying that climate science is subjective and many scientists may be unknowingly wrong, and the rest are blindly following because their careers and reputations depend on it.

My final paper in Comp II was a questioning of climate change and its anthropogenic nature. I’ll be joining Scott in saying, “Told you so.”

Feds Reject Clinton Comparison in Classified Submarine Photos Case 

Saying that Hillary should be in jail because of her email scandal is saying that the FBI is covering for her, despite the fact that many Democrats blame Comey for unduly distorting the outcome of the election in Trump’s favor. In their own way, both sides of the divide are upset with the FBI at this point.

I’m reminded of Solomon’s proverb:

He that is first in his own cause seemeth just; but his neighbor cometh and searcheth him.

There are always at least two sides, and usually the one you spend the most amount of time listening to is the side you think is right, regardless of whether it actually is or not.

Another Classic Example of Crying Wolf 

Marco Arment:

George W. Bush was elected during my freshman year of college. For the next 8 years — all of college, my first job, and the first two years of Tumblr — we suffered through that horrific administration. It was half of my adult life so far.

I respect Marco, but this one’s off. We’ve never had a “horrific administration” in the United States. It’s hard to tell if he’s being hyperbolic here or if he really means it, but either way it’s crying wolf. I hope it doesn’t happen, but some day we may actually have a horrific administration. If that day comes, we need for the language that properly describes it to not be bankrupt by misuse.

The New CEO’s First Moves (and Trump) 

Scott Adams:

The political press will dismiss Ford and Carrier with fact-checking. But the stock market will be smarter. Experienced business people recognize the “new CEO” move and they know how powerful and important it is.

If you are worried about Trump’s talent for leadership, this should help set your mind at ease. He hasn’t even started the job and he’s already performing better than any past president in the same phase.

If your viewpoint is that of a politician, you’ll find less to like about Trump than if your viewpoint is that of a business person. It’s fascinating to watch people analyze the exact same situation and come to very different conclusions.

One important takeaway here is that stock market is a good predictor. You could tell from looking at the S&P 500 early on in the evening that Trump had won the election. If you want to know what’s going on in a country, pay attention to its financial sector, not its political one. Politics is nothing more than a reflection of what’s going on financially.

Your iPhone, the special property of the left side bezel, and an autocorrect suggestion 

Dave Mark, writing at LoopInsight:

Do you have an iPhone 6s or newer? Try this:

  • Unlock your phone.
  • Press your thumb on the left bezel (the black framing on the left side of the front of the phone) and press.

As you press, the force touch will reveal just a bit of the stack of apps you are running. Press with a bit more force, and that view will go full screen, as if you had double pressed the home button.

Not sure when this feature first came out, but it seems little enough known that I thought this was worth a post.

This feature has been out a while, possibly with iOS 10.0. Pretty sure it’s been on my iPhone 7 since the day I bought it. Usually when I trigger the feature, it’s an accident. Dave’s idea of overriding its default functionality, or maybe disabling it in fullscreen apps, would be welcome.

UPDATE: As a DC reader pointed out, this feature’s been out for more than a year.

The Curious Case of Christians and Alcohol 

Benjamin Sledge:

Most churches were slow to give up thousands of years of tradition by switching wine with grape juice, and for the first few years, Welch’s sold almost exclusively to churches.

America’s view on alcohol has bothered me for years. The age restriction and the taboo nature of it are for the most part unique to our country. John Wesley and his nontraditional views have a lot to do with this, it turns out.

Great read and very informative.

The Idea You Are Least Likely to Believe 

Scott Adams:

If you have not studied persuasion it makes perfect sense to be in a panic about a Trump presidency. You see a pattern of irrational-looking behavior from Trump during the election and you assume the trend will continue into the presidency. But if you understand the tools of persuasion you see a Master Persuader ignoring what doesn’t matter and paying close attention to what does, for the benefit of the country. That is literally the safest situation I can imagine.

It’s hard to find a level-headed person talking about what’s going on politically right now. Scott Adams is that voice.

Democrats, the Party Who Cried Racist 

Brett J. Talley, writing at CNN:

Either those leveling charges of racism against Sessions don’t know these things or they don’t care. That’s the price of weaponizing racism. It transforms what should be a serious accusation made only on the basis of irrefutable evidence into little more than a tool in the left’s political bag of tricks, a way to undermine their opponents with the ultimate smear. The irony is that in using race in this manner, the charge of racism has lost much of its potency. The left has played that card so long on so many people in so many instances that today it is met with little more than an eye roll.

Never underestimate the power of confirmation bias.

James Lankford on Federal Fumbles 

U.S. Senator James Lankford, in yesterday’s newsletter:

  • In the eight years of Mr. Obama’s presidency, the federal debt has grown by $9 trillion, nearly matching the total amount of debt accumulated by all of his predecessors. […]
  • In the eight years of Mr. Obama’s presidency, the federal debt has grown by $9 trillion, nearly matching the total amount of debt accumulated by all of his predecessors.

We can expect similar deficits under a Trump administration.

Government debt should be a defining issue in American politics, but it’s not, because it doesn’t affect our day-to-day lives, it’s boring to talk about, and we don’t truly believe a day of financial reckoning is coming. The reality though is that in 2015 the U.S. Government spent $223 billion paying just the interest on this debt. That’s billion with a “b”. Nobody is talking about this. It’d be hilarious, if it weren’t so serious, how wrapped up people get in party politics and forget to step back and look at the big picture.

Stay calm, and look at the big picture.

Jill Stein Just Raised 2.5 Million To Start Recounts In 3 States 

Green Party presidential candidate Jill Stein reached her goal of $2.5 million early Thursday morning to fund election recounts in three key states over claims the vote could have been manipulated or hacked.

Stein reached her $2.5 million goal in less than 24 hours after starting the fundraiser and ahead of the Friday deadline to cover filing fees for recounts in Wisconsin, Michigan, and Pennsylvania — swing states that went to Donald Trump in the presidential election. Had those states been declared for Hillary Clinton, she would have passed the 270 electoral votes necessary to win the presidency.

It was easy for these people to make fun of Donald Trump for saying the election was rigged, back when they thought beyond a shadow of a doubt that Hillary was going to be elected. Now that the tables are turned, they’re adopting Trump’s argument.

Always be careful what you make fun of. You might become it.

Deploying a Jekyll Site to Github Pages Without Using Github’s Jekyll

Jekyll Archives is a great gem, but Github Pages chose not to support it:

I don’t believe this fits into the Pages roadmap right now. The plugin is high-touch, in relation to the file system, and is relatively large, for a Jekyll plugin, which creates a significant burden on our security team to review on each bump.

That’s actually very understandable. I don’t disagree with this rejection. If I were on the Github Pages team, I might be tempted to make the same judgement call for the same reasons, despite the heavy pushback that the community gave against the decision. Regardless, this is where we’re at, and it makes a great reason why you might want to use a different process to build your Jekyll site other than Github’s instance of Jekyll.

The idea is fairly simple:

  1. You write your Jekyll posts locally like you always have, and push them to the master branch of your Github repo.
  2. This triggers a script on a service like CodeShip, CircleCI, or Travis. The script does a Jekyll build of the site using Github-forbidden gems such as the jekyll-archive one. Then it pushes this static build as a commit to your gh-pages branch on the Github repo.

This process is actually very similar to my piece on auto-deploying to gh-pages with Codeship, but I’ll go through it here again since the script is slightly different. It’s not nearly as complicated as you might think.

  1. Create a Codeship account and authorize a new project with your Github repo.
  2. I recommend that you use a machine user Github account but you can use your primary one if you'd rather. The main reason I prefer a machine user is that this user is going to be creating some commits and they're really bogus commits. If you use your main account, they'll show up in your profile's contribution timeline. I like my timeline to be clean and only show commits that I actually made, not those of an automated script somewhere.
  3. Back in Codeship, specify this script as the deployment script.
git  clone<your main github account>/<your repo name>.git _site
cd _site
git checkout gh-pages || git checkout --orphan gh-pages
cd ..
rm -rf _site/**/* || exit 0
bundle install
bundle exec jekyll build
cd _site
rm Gemfile Gemfile.lock
git config "<your machine account github email>"
git config "<your machine account github username>"
git add -A .
git commit -m "Deploy to Github Pages: ${CI_COMMIT_ID} --skip-ci"
git push origin gh-pages
  1. Delete your gh-pages branch from Github. Make master the default branch if it wasn't already. This will take your site down if you stop here, so do the next step immediately.
  2. Push to your master branch, or run the Codeship build process manually if you have no local changes that need pushing.

With this setup, you are no longer dependent on what gems Github allows or disallows. Anything that’s possible with vanilla Jekyll is now possible with Github Pages.

Oscar Swanros on Facebook's Yarn 


Trying to solve the dependency management problem by adding another layer of dependencies to the equation is as stupid as it sounds.

From an outsider that doesn’t do web development for a living, this is crazy. I don’t know how people cope with the web ecosystem. Specially the front-end part.

Swanros is as wrong as he can be, but it’s interesting to see this from the perspective of someone who isn’t actually in need of a dependency manager for JavaScript. I can see how he arrived at his conclusion, based on the facts as they presented themselves.

Despite what NPM said on its blog, Yarn isn’t merely a “backwards-compatible client for the npm registry.” In reality, Facebook launched a direct competitor to NPM but made it easily compatible so developers could migrate from NPM to Yarn with minimal effort. One of the ways Facebook did this was by adding Yarn to the NPM registry. NPM saw the writing on the wall but wrote a PR piece to sugar coat it.1 If you’re using NPM and you want to switch to Yarn, you can switch by installing Yarn via NPM, and then you can completely ditch NPM. It’s important to note that there are a myriad of ways to install Yarn, however, and you don’t need NPM at all in order to install or use Yarn.

Why would you want to use Yarn over NPM? Maybe because it’s more performant. Or maybe because you want to micro manage the versions of your dependencies’ dependencies, but you don’t like to use npm-shrinkwrap because of how long it takes to fix major bugs with it, or because of how it doesn’t play well with private repositories as dependencies. Or maybe you just like new shiny tools, especially ones that are built to solve pain points by a company of Facebook’s calibre.

Regardless, Yarn is a great tool, it’s a serious competitor to NPM, and it’s here to stay.

  1. Saying that Yarn is in the same camp as npm-install is a stretch. Using NPM to install Yarn is like using an Android to visit and order an iPhone. Don’t get confused by the fact that one facilitates the other by allowing it to be on its registry. They’re not friends. ↩︎

Why Static Website Generators Are The Next Big Thing 

Smashing Magazine, a year ago:

The first ever website, Tim Berners-Lee’s original home page for the World Wide Web, was static.

We’ve gone from everything being static to everything being dynamic, and then back to static. The difference is that we’re now achieving dynamism through automated build processes. The end result is that you get all of the benefits of a static site and all the benefits of a database-driven site, without the shortcomings of either. Having a database-driven website is becoming less mandatory, less cool, and more of a liability at this point. Especially if all you’re doing is running a content site. But even if your site is more than content, I’d still argue for a static front-end and a separate RESTful API domain that your front-end interfaces with. That’s where everything is headed.

It’s true that every single URL of a static site must correlate to a .html file on the server, but for laborious views like archives, that can be automated. If you’re trying to maintain a static content site — even a complex one that has a lot of views — and you’re finding yourself doing anything other than writing content and deploying, you’re doing something wrong.

Jeffrey Way from Laracasts Joins the Laravel PHP Sydney Meetup 

A little before the 24-minute mark:

Why I chose PHP over something else doesn’t amount to much more than the fact that it was just so easy to use. And I think most people would say that. […] With PHP you just create a file and you push it up to a server and you’re good to go, right? Once again that’s an example of how simplicity always wins. PHP is not nearly as elegant to use as something like Ruby—not even close. But, it wins. You know, the simplest option almost always wins. And I feel like that’s why Laravel’s popular. That’s why I’m betting on Vue being popular.

Having a tech stack of PHP and Vue seems like a really smart idea when you put it that way.

Sal Soghoian and the Future of macOS Automation 


If they had simply fired him, that’d be one thing, but the fact that they’ve eliminated his position is another. This is shitty news. I find this to be a profoundly worrisome turn of events for the future of the Mac. I hope I’m wrong.

I disagree. The universe of macOS users who actually use this stuff is really small. It’s as small as the universe of people who genuinely need more RAM than is available in a maxed-out 2016 MacBook Pro. In both instances, Apple is ignoring 5% of its customer base because to do otherwise would be to lose focus. Keeping everyone happy and being focused are opposing philosophies. Apple’s decision here isn’t “profoundly worrisome.” What would be profoundly worrisome is if Apple were to lose its focus by patronizing legacy ideas while introducing newer, better ones — or worse, maintaining legacy ideas in lieu of finding newer, better ones.

There’s this notion among the 5% that if you’re a power user, you’re using this automation stuff, and vice versa: if you’re not using this stuff, well, you must be using your laptop for email and Facebook and you might as well just own an iPad and ditch your computer altogether. It’s a really bizarre notion because it’s so far off the mark. During a typical workday, my secondary screen is a 4-pane tmux session where I manage git, hot module replacement, a FreeBSD VM, and Unison file syncing. I have a myriad of ~/.bash_profile shortcuts which in turn trigger shell scripts. Most of my coding is done in PHPStorm, which has its own myriad of automation tools. I couldn’t do any of this on iOS, but none of it has to do with whether macOS supports AppleScript or not.

As I look at Soghoian’s poorly designed, aged websites built in HTML tables of all things,1 I’m looking at relics of the past that are still heavily used by a very small minority. That’s exactly the characteristics of something for which Apple has no problem pulling the plug.

  1. I don’t want to sound overly mean here. Script developers are rarely good designers and they’re often not savvy front-end web developers. The point here isn’t to criticize someone’s design chops, it’s to point out that this is a one-man guru shop and the entire operation is stuck in the past. Big projects attract talented designers. It’s a gut check to how popular a project is. ↩︎

You Are Still Crying Wolf 

Scott Adams:

Trump made gains among blacks. He made gains among Latinos. He made gains among Asians. The only major racial group where he didn’t get a gain of greater than 5% was white people. […]

Stop using the words “white nationalist” to describe Trump. […]

Stop calling Trump voters racist. […]

Stop centering criticism of Donald Trump around this sort of stuff, and switch to literally anything else. […] In the middle of an emotionally incontinent reality TV show host getting his hand on the nuclear button, your chief complaint is that in the middle of a few dozen denunciations of the KKK, he once delayed denouncing the KKK for an entire 24 hours before going back to denouncing it again.

Trump may lack political experience,1 but I truly don’t believe he’s any more racist than any of our other presidents. If you want to criticize him, do it on other grounds.

  1. His detractors have found this to be a huge problem, but remember, this was a selling point among his supporters and it’s one of the big reasons he got elected. ↩︎