The fucking news

I finally finished the last episodes of The Newsroom recently, and it got me thinking and worrying about the future of journalism. I know a lot of old guard organizations that did great work are dying a slow death into irrelevance, and that’s sad. I see hope in a lot of new organizations popping up doing great journalism in a digital age (Vice and Salon come to mind), but I can’t help but feel like we’re still seeing a net loss. Although new tools make the barrier to getting into doing journalism a lot smaller, we are losing the quality of journalism that comes from great big organizations with a lot of resources to do great news for us. 
But man, for an industry that needs all the money it can get, I am amazed at the sheer awfulness of the news products these companies are putting out. The experience is so user-hostile.
  • I don’t want to have to visit your web site and check the news from there every day; I want to aggregate it.
  • I don’t want to need to use your mobile app to read the news.
  • I don’t want your article pages to be magazine-like with painstaking layouts and typography. Good writing suits me just fine. If you do want do do those things, keep the design clean.
  • I don’t want my news pages littered with ads. In fact, I don’t want any ads at all.
  • I don’t want articles cluttered with links to other things I “might be interested in,” half of which are actually ads posing as real content, and many of which have carefully constructed clickbait titles. And i sure as hell don’t want these links inserted into the article content.
  • I don’t want to make comments on your site or participate in any sort of community with the other readers, and the only people who seem to aren’t exactly generating positive discourse.
  • I don’t want the articles I’m reading to be paginated. I know how to scroll.
  • I don’t want a toolbar at the bottom with a call to action for me to share that thing to a bunch of social networks. If I want to share the article, I know how to copy a link.
  • I don’t want to pay over $100/year to support the site. News companies are pricing these as though I get all my news from one source, when I’m reading from dozens of sources in a given week.
  • I don’t want to see user generated content on my news site. There are other sites where I look at user generated content, like Twitter, or Instagram, or Vine, or YouTube, or Facebook, or one of the dozens of other places.
  • I don’t want to read articles that managed somehow to extract four paragraphs of filler from a single tweet. I’d rather just look at the tweet.
  • I don’t want my news site to have a social presence, trying to push things to me to read there.
  • I don’t want my news site to be incentivized to get me to click on their articles.
  • I don’t want a video at the top of the articles I’m reading, and I sure as hell don’t want it to auto-play.
I want:
  • Well-written articles that are rigorously fact-checked and well contextualized
    • Bonus points if you happened to capture some photos of the event. If you didn’t, that’s okay, you don’t need to show me a stock photo of something related to it.
  • A full-article RSS feed that lets me do all my reading from my RSS reader.
  • A way to easily pay you a fair price for the above two things, and ensure that you’re beholden to me, and not your parent company, not advertisers, not some bullshit KPIs somebody wants you to hit. 
  • the ability to share links to nice clean versions of articles with my friends and followers
  • The news org to be independent from corporate owners. If I’m paying you, I want you working for me.
  • For news like this to be available to me at the local, regional, national, and international levels (and I don’t mind paying separately for each)
In short, I want to read the fucking news.
Sometimes i like to listen to the news, and I think podcasts (which, like Dan Benjamin, I like to just refer to as internet radio) are the future of audio news updates. I also like weekly shows like Last Week Tonight (which admittedly pushes the limits of being able to call itself a legitimate news show but they’re doing good work). And I’m willing to pay more for podcasts and video formatted news shows. But ultimately the core experience I demand as a news consumer is to read the news. 
That’s really all I want. I’m happy to pay something like $50 a year from multiple organizations for news like this. And this format doesn’t have to be just for news news. I would love to see The Onion offer something like this (especially The Onion; their sponsored content is getting obnoxious). Ars Technica Premier offers something very much like this. 
Being able to pay $50 a year for news is a privilege, though, and I agree that those who can’t spend that kind of money should still have access to the news. I can’t name a specific model for non-paying users that would be successful. Maybe free users would see tasteful, non-obtrusive banner ads (though I really hate the idea of a reader’s eyeballs being treated as currency), and the free RSS feed would not have full articles. 
Maybe I’m just an old geezer who is still clinging onto RSS, but it truly is the best tool for those who want to keep up with news from many sources. RSS respects you as a reader. It puts you in control of what you see. It doesn’t let you be tracked with cookies. It is super flexible. 

The “I’m guilty of this too” trope

You’ve all gotten that email or spoken message from a boss, preaching to the team about how everyone needs to break some bad habit.

And then they say it.

“I know it’s tough. I’m guilty of this too, but we all need to come together and stop doing this.”

Can we agree this trope needs to die? Managers will say that almost like it’s a reflex, feeling like it gives them relatability or credibility. And I’m sure that the first time in history a manager employed this rhetorical device it did do just that. Nowadays it’s meaningless. It feels like a component from a criticism template, like when you sandwich a criticism between two compliments (another trope I hate with a passion).

Perhaps the biggest issue with it is that it comes off as “I know I have this flaw too, yet I’m the one telling you to change your behavior.” 

There are better ways to be relatable. If you want to come off as a strong leader, don’t say “You guys need to stop doing this thing. I’m guilty of doing this too.” Say “I’m guilty of doing this thing, and I understand why it’s harmful, and I’m going to stop.” Get people to hold you accountable and follow your lead.

When things go wrong in Apple-land

In a previous post i discussed a way Apple could tweak its development process to make its software products more reliable. But even if Apple can achieve a product that fails 0.0001% of the time, that’s still a pretty large absolute number of failures at Apple’s scale. And what’s worse, now that Apple’s products need to have a lot of systems working perfectly together in order to work, when something is going wrong, Apple’s support staff are now woefully unable to solve the problem.

If I walk into the Genius Bar with something straightforward like a dead power supply, I’m walking out a satisfied customer. But if I’m walking in with a sufficiently complex problem, or a problem that is intermittent, or a problem that in some way touches a third party system, then it’s a frustrating road ahead of me.

When iPods first became a thing, a common way to diagnose them was to just do a factory reset and see if the problem persisted after that. It wasn’t a big deal, and since the iPod was an appliance of sorts, this was a reasonable approach. But I’m commonly hearing Geniuses ask me to do the same thing to my Mac now when they encounter a problem they don’t understand that well. The Mac is a full-on desktop computer; if you have a specific issue with it, that is an expensive and overkill way to try to diagnose the problem, and even if a reformat does fix the problem, you at best are just saying “okay, I know it’s not the hardware.” Oh, and now I have to spend the next two weeks getting everything configured the way I like it. Whoopee. Apple still commonly uses this approach with iPhones too, which isn’t as bad of an issue with Macs, but restoring an iPhone from backup is still a multi-hour process and given that you’re just restoring an exact copy of its configuration from before, when you restore you typically restore the problem too.

Even worse are the inane troubleshooting steps Apple staff now try to walk you through just to make it seem like they’re trying something. You of course have your classic Mac troubleshooting steps like resetting the PRAM and SMC, but now that issues can sometimes involve things like iCloud, I’m hearing other silly-sounding solutions that scream that Apple’s support staff are grasping at straws for some sense of being able to dig into a problem. Calling through your iPhone isn’t working? Well, restart your wireless router of course! Yeah, I’ll just have my IT guy reboot my office wireless access points because that’s Apple’s best guess.

And I’m not blaming Apple support staff for not being helpful. These are the limited tools they have at their disposal to try to hope something works. This isn’t good enough with the level of complexity Apple’s systems have, though. 

As Apple is developing these new features they need to be also developing powerful diagnostic tools their support people can use to zero in on exactly where the problem is. If the Call With iPhone feature is failing when I try to receive a phone call on my Mac, there should be a way for a genius to dig into the problem on my Mac and my iPhone to see where the breakdown is happening. If I’m having iMessages issues, a Genius should be able to crack open logging data for my account (bonus points if there’s no way to do it without my explicit permission) and look at logs (with all my actual message content still encrypted and/or redacted, of course).

Another thing I’d really love to see is better visibility into my backups. There’s no excuse in 2015 for iCloud not to be able to show me detailed contents of my backup, and let me pick what I want to restore (and while I’m making reasonable requests, show me actual details about the progress of my restore, like what it’s currently restoring and what it needs to do still)

Having tools like this in place can help prevent that feeling of helplessness when a magical Apple system isn’t behaving so magically for you.

On The Bravery Of Trans People

Recently I’ve been thinking  a lot about Leelah Alcorn’s death. But this post isn’t really about Leelah. It’s more about the people who slog through the life that would have been too painful for Leelah to bear.
Being gay I can relate to trans people in that we’re both somewhat outsiders, but I am really lucky in that I am living through a shift in public opinion on gay people in the US. But trans people are not gaining support that quickly. In some cases trans people struggle to find acceptance from their peers in the LGBT community.
Let’s imagine you’re trans in a best case scenario. You realize at a very early age (like, before kindergarten) Your family is supportive and well-informed. They let you have a gender-matching name. They use the correct pronouns when identifying you. You go to school as the correct gender and everyone accepts you as such. Before puberty you’ll take hormone blockers to prevent the wrong puberty from happening, and in your teens you’ll start to transition, taking hormones to trigger your body to develop as the correct gender for you (but not without seeing a psychologist who will provide the diagnosis to establish that you do indeed need to transition). Because you skipped the wrong puberty, you’ll look very passable. You’ll still need sexual reassignment surgery but you can’t do that until you’re older. If transitioning to female, SRS works well; you’ll have a vagina and you’ll be able to have a healthy sex life. If you’re a trans male, you can get SRS, but the penis you end up with will be pretty crude and won’t function as you would expect (as the saying goes, “it’s easier to dig a hole than to make a pole”).
I can’t emphasize enough how much of a best case scenario that is. It’s rare (recently Brad and Angelina’s son John is a recent example). Most trans people don’t realize that they are trans until they are older, and usually well after puberty has set in. By this point, a trans person has lived their entire life as the incorrect gender. They need to decide whether they should dismantle their entire life and identity in order to feel at home in their own skin.
Transitioning is a huge life-changing alteration and is difficult even with lots of support. It takes years. The therapists, hormone therapy and surgeries are expensive. And when you decide to live full time as your new gender, you have to come out. But it’s not like coming out as gay, where you can gradually tell people as you feel comfortable When you’re going full time you have to tell everyone you interact with on a daily basis, including your coworkers and your boss. When Coraline Ehmke went full time, she went from being a highly respected software engineer in her company to being pushed out of her job (she talked about it at the Keep Ruby Weird conference). I wasn’t lying when I mentioned dismantling your life.
Perhaps the biggest struggle is the struggle to find acceptance. HRC polled people in the US on trans issues and the results left a lot to be desired but it appears to be improving. Still, though, trans people face a lack of acceptance in greater culture, which plays a big role in mainstream public acceptance. Trans people are especially prone to being the butt of a joke; in particular, women with penises. And the joke is always the trans woman’s mere existence. You’ve never seen, say, a clip in a movie where a guy is happily with a woman with a penis and, for instance, there’s a scene where they’re both aroused about something and it’s clear they both have boners. The joke is never something relatively accepting like that. The joke is always the irony of a woman with a penis.
Dating is complicated when you’re trans. You’re expected to disclose your situation to anyone you get involved with. People expect you to disclose that pretty much right away, beacuse to not be upfront with that would imply that you’re deceitful (see the “woman with penis” trope). Heaven forbid if you could just meet someone new and casually get to know them like cis people do. Being trans, the world expects you to both anticipate and not be surprised when your date runs out on you when you disclose your gender identity. Of course, when your date tells their friends what happened, those friends will be totally understanding and they probably won’t give a thought to how it made you feel to have been rejected.
Transgender people are the most likely of any group of people to commit suicide (and it is incredibly likely; 41% of trans people in the US have attempted suicide). A trans person is murdered roughly once every three days. Substance abuse, depression and other mental issues are very high (about 25% of polled trans people engage in substance abuse).
Despite all these obstacles, trans people press on, because for them, it’s completely worth it.
We have to do a better job of making the world a better place for trans people. It starts with empathy. Appreciate their bravery and the work they put into just existing every day. Visit /r/transpassing some time to see what I mean by that. Understand which gender pronouns a person prefers. If you ever are writing about a trans person, follow GLAAD’s excellent media reference guide. Don’t be okay with transphobia, even if it’s subtle.
Being trans is inherently hard, and that may never change. But there’s plenty people can do to make it easier.

Reclaiming “It Just Works”

Everyone agrees that Apple’s software quality has taken a dive in the last couple of years. Interestingly, I hear a lot of fingers being pointed at Apple’s yearly release schedule as being too aggressive. 
That isn’t the reason quality is suffering, though. Apple’s hardware is updated yearly (or more) and has been for years and it’s been steadily improving. 
Apple’s quality is taking a nose dive because they’re making software products that are more complex than ever, and are fundamentally different from what they were doing ten years ago, and the way they develop and release their software hasn’t caught up. 
Take, for instance, the ability to send/receive SMS/MMS messages from all your devices by relaying them through iPhone. Apple advertised this as a feature of Yosemite but you can’t just install Yosemite and get SMS relay. You need 8 on your iPhone so it can actually do the relaying. And of course you need an iCloud that can receive SMSes from your iPhone and propagate them through the iMessages system. 
I doubt any of these changes were huge. Apple probably could have just added them to iOS 7 and Mavericks, but instead Apple reserves all but the most trivial of new features for new OS releases, so SMS relay, along with every other feature released in Yosemite and iOS 8, had to fight for QA testing time and tight resources in the weeks prior to their respective releases. 
But what if Apple had had added these features earlier? The teams could have worked independently and shipped their own components of the feature silently into iOS and OS X updates. They could have run rigorous functional and load testing against each part of the system, and when they had everything tested and known to be working, they could have flipped a switch to turn the feature on and market it. Since the feature is getting released by itself, it gets more special attention and it’s less likely to be forgotten in the giant pile of features Apple goes over in keynotes.
And if Apple prefers to keep the magic of a big surprise release they could have even waited till iOS 8 was out to make it official, and it could have been available for anyone who had an up-to-date Mavericks install on their Mac (if you recall, SMS relay didn’t ship with iOS 8, but rather it didn’t come out until iOS 8.1 which in turn didn’t come out until after Yosemite was released). Either way, the feature would have benefited from getting tested as thoroughly as it needs to at Apple’s scale.
I really love the ambitious pace Apple is taking with bringing out new and more awesome stuff. They probably need to bring on more engineers and probably more QA staff to help address these issues as well. But just throwing more resources won’t solve this problem. Apple’s not just doing more; the nature of what they’re building is something they’ve never done before.
Apple loves to be magical and surprise us with new stuff completely out of nowhere. But even Apple’s not immune to the complexities of large software projects. When Tim Cook made the executive shuffle that included firing Forstall, he claimed to do it in the spirit of increased collaboration between different parts of the company. We’re seeing the fruits of that now, but Apple needs to change more things unless they’re okay with a mediocre level of quality.

Using Data To Reduce Inequality

The racism we deal with today in America has evolved to be a lot more elusive than it was during the Civil Rights Movement. You can see its effects by looking at the country in aggregate. If you’re nonwhite, you’re more likely to be poor. You’re disproportionately more likely to have a run-in with the police, and when you do, you’re disproportionately more likely to be found guilty if you are prosecuted, and if you are found guilty, your sentences for the same crimes tend to be harsher than they would be if you were white.

It’s easy to see that in aggregate. You just have to measure it. But it’s more difficult to look at it on a case by case basis, because usually if there’s some racial bias happening, there’s plenty of plausible deniability surrounding it. The individual matched the description of someone who was reported to have robbed a convenience store is common in police reports, even when the individual is innocent.

Surprisingly, a technique that Tim Ferriss describes in his book The Four-Hour Body could be applicable here. In his book, he describes the importance of tracking data to lose weight. He found that merely using a scale to measure your weight every day leads to noticeable weight loss, even in the absence of any other diet or exercise regimen. Just seeing that data and being reminded of it every day is enough to affect tons of tiny, subsconscious decisions, and it made a noticeable difference.

What if we started using this technique with police officers? What if every police officer was briefed every week with the number of arrests they made, the racial breakdown of the arrests, and the racial breakdown of the local population. Using some statistics, this data could be tabulated into a score that indicates the likelihood that the officer is racially profiling civilians.

We don’t even need to give them quotas or targets to hit. We don’t need to have anyone breathing down officers’ necks about it. Hell, we don’t even need to share that data with the public. Just show it to each individual officer, as a constant reminder of the consequences of decisions they might not even be aware of. It’s so easy to think anecdotally about how fair you are, but when you see numbers that quantify it, it gets harder to rationalize.

I’m a really big fan of this technique for self-improvement, and it can be applied to any number of things. I work on a team of software engineers, and we could use data like this to help identify whether we have gender biases causing our lack of women on the team. You can use tools like RescueTime to know how much time you really spend checking your email during the work day.

On the surface, it’s just data. Just some numbers that happen to be correlated with happenings in the world. Being able to turn them into a better world is a beautiful thing.


After being inspired by a bunch of Ruby Rogues episodes and in part by my colleague Brett’s year of Ruby tips I decided to try a simple experiment in which I get into the habit of starting to document every time I encounter some new piece of information. Sometimes days pass by when I feel like I haven’t grown in any appreciable way, and this is a really great and deliberate reminder that you learn something new every day, and you learn something new and remember to make a note of it almost every day.

Being the hardcore Evernote user that I am, I started dumping these notes into a new tag called things I learned today.

It’s a great habit. I find I remember these things a little better, and even when I don’t, it doesn’t matter! I have it saved safely in Evernote! I don’t just use this for programming topics, either. I make a note any time I figure out something and think “hey, that’s neat!” or if I was trying to figure out something and it was hard to google because I had such a tenuous grasp on how to describe it (like songs where the tune is stuck in my head but I can’t remember anything about the lyrics).

Here are a few things that I learned over the past several weeks:

Refinements in irb

It turns out that due to a change after refinements were introduced in Ruby 2.0.0, they’re not nearly as easy to use and play with in an irb console. You’re better off writing them in a file and including the file in IRB if you want to play. Learn more

Markdown to Evernote

There exists a handy OS X service for taking some Markdown and sending it into an Evernote note. I love this because I love to type bulleted lists using Markdown’s bulleted list syntax, but just having plain old Markdown in my Evernote note doesn’t feel nearly as fancy. The maintainer admits he has been neglecting it a bit, but you can check it out on his blog.

Regex Postgres queries with ActiveRecord

Here’s how to construct an ActiveRecord query to find records where a field matches a regex pattern:

things_with_a_pathetic_90s_description = Thing.where("description ~ '^.*NOT!$'")

A photographic diagram of how various ingredients affect the resulting cookie. Delicious…

Rendering collections without loops

Using ERB templates in Rails, there’s a concise way you can render a partial of every item in a collection:

<%= render partial:"line_item", collection:@line_items, as: :line_item %>


I love SQL’s GROUP BY. I wanted to do something similar with a plain old Ruby array, and in the process I learned why ActiveRecord calls it group and not group_by; the method name was taken. Also, that was the best I could do at coming up with a good mnemonic device for remembering which is for which.

(1..6).group_by { |i| i%3 } #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}

The Detroit Project

As many if you may know, I’m somewhat of an ideas guy. I’d like to share with you an idea of mine that’s been floating around.

I think I have a solution to the San Francisco’s ongoing issues. It’s overcrowded with technology startups. Unable to expand outward, rent and property prices are skyrocketing. Traffic is miserable. Long-time residents are being driven out of their homes. And whenever people try to develop new buildings to alleviate the issue, residents protest, both because these new buildings are favoring the rich, and because people don’t like the idea of a town they find so charming changing to a point where it’s no longer recognizable.

This is a human-made problem. None of these technology startups have a particular need for being on a coastal city; they’re technology companies, not shipping companies.

Meanwhile, America’s filled with ghost cities that suffer the very opposite issues. Their decreased occupancy leaves them with expensive infrastructure meant to support a larger population that the smaller population can no longer afford to support. Their economies are in the tank because incumbent industries abandoned them and the growing industries are looking to new darlings. With the mass exodus of people, housing prices are low to the point where you can buy homes for less than five figures.

Solution: Let’s turn Detroit into a desirable city for tech-driven companie, similar to San Francisco, Seattle, and Austin.

Here’s how:

We need to make the city desirable to trendy people who love tech startups. Detroit’s actually in a great position for this because if you look in any startup office (or, as they like to call it, a space), the ones that are considered nice don’t look like offices, but abandoned factories or warehouses. We just need to furnish them, and we’re done!

You need to move a lot of hipsters into Detroit as well. Hipsters are like trendiness canaries for coal mines, and if you send them in and they thrive, then you know the city will be considered hip. Plus the hipsters give the technology workers something to make fun of while they simultaneously emulate them. Hipsters also have a knack for thinking of trendy business and shop concepts that are quirky and would be successful in a big city, but non-hipsters are too sensible to ever think of them. Portland seems to have a surplus of hipsters, so we’ll bring some in from there.

Residential neighborhoods are another challenge. The ones with the cheapest housing are really dilapidated (and squatters are an issue). The secret weapon: gay couples. Get some neighborhoods with dilapidated housing but good nearby schools and bring in creative gay and lesbian couples. Before you know it, that neighborhood is desirable in no time.

Start buying up some buildings and start setting up incubators. Buy some blocks of houses, remodel and bring in entrepreneurs, telling them that in exchange for 10% of their equity, they don’t need to worry about essentials like housing or a workspace. Herman Miller is Michigan based so you should be able to truck in some trendy desk furniture and Eames chairs for a great price.

Being in Detroit’s going to give your startup a competitive edge: your housing and building costs are a fraction of what they are in SF, allowing you to bring in scrappy early employees for a lower price. If you’re an engineer living in Detroit working for an early stage startup for $65k a year you may as well be royalty. That $250k in seed funding wouldn’t cover your artisan coffee budget in SF, but you could have a small team working for a couple years on lots of great ideas if you’re in Detroit. Make the same investment, get twice the startups with twice the chances for success. Sounds like a win in my book.

You aren’t isolated from the world, either. Detroit’s airport is a Delta hub, connecting you to pretty much any major city. We’ll get Google to put in Google Fiber throughout the city (which will be really handy because everyone stripped the copper out of the empty homes to sell it as scrap metal). The population density is low enough that your 4G connection will actually perform pretty well.

And you know how SF is notorious for having a lot of homeless people with nowhere to go? Well, Detroit has a lot of empty houses with no one to live in them! With the ridiculously low building costs we can earmark some cash to create places to live for people who have suffered from a perpetually bad economy. And all this revitalizing is a lot of work, too… sounds like maybe there are some job opportunities on the horizon for the many people who are living in Detroit but need a break?

And on a more serious note, Detroit has something San Francisco is losing quickly: character and a sense of the plight of the working class American. In San Francisco, maybe it feels like the biggest problem you have to solve is that you need to interact with a human on the phone to get food delivered and you wish you could just get it with an app. If you put your startup in Detroit you’re going to have a perspective on life and your potential users San Francisco just can’t give you. I love a good delivery startup as much as the next guy, but I think there’s room for some more noble problems that are ready to be “disrupted.”

What do you say world? I’m an ideas guy, you’ll just have to run with this.

Apple Extended keyboards – My setup

I’ve owned classic Apple mechanical keyboards for some time, but over the past few weeks I’ve been using the Apple Extended Keyboard and Apple Extended Keyboard II as my main keyboards and I really like them. They provide a lot of tactile feedback and they’re relatively quiet.

My biggest pet peeve with them has been the pesky fact that the Caps Lock key is actually a locking key. It achieves this by using a completely different Alps switch then the rest of the keyboard (the Alps SKCL Lock switch).

I am partial to swapping my Ctrl and Caps lock keys from their now-traditional positions because I use the Ctrl key all the time in keyboard shortcuts and I want it to be really accessible. Older Apple keyboards (like the M0116) have those swapped already, but those keyboards have other idiosyncracies that are impractical for common use (such as the lack of function keys, and the Esc key being where the tilde key is, and the tilde key being by the really narrow spacebar). So, I set out to customize my best Apple Extended and Apple Extended II keyboards.

Swapping the Switches

Getting the caps lock key to stop locking down is a simple matter of replacing its Alps switch with a non-locking switch. In my case I decided to swap its switch with the left Ctrl key, which I’m perfectly content never to use.

Swapping mechanical switches is easy enough; it simply requires desoldering the pins from the PCB, popping them out, and resoldering them back in. I didn’t make a video of the process but I found a great guide while browsing through resources on the MechanicalKeyboards subreddit.

This was my first time soldering so I was a bit nervous, but mechanical keyboards are an easy enough project, as the solder points are relatively large and the Apple Extended Keyboard is famously easy to get apart (just four screws and the case comes right apart). Once I got the hang of desoldering (ProTip: even if you hold the solder wick a few inches from where you touch the solder iron to it, the heat travels really far!) the hardest part proved to be prying the switches out of their original homes. I felt like I was going to break the switches, but they were sturdy. I got the new ones in their homes (they just popped right in), and soldered them together.

not bad for my first time
not bad for my first time

Key remapping

Turns out, that was the easy part. It was my hypothesis that I would just need to swap the Ctrl and Caps Lock keys in System Preferences on OS X, but there was somewhat of a catch to it. To get the computer to treat the key as an actual toggle, the keyboard is hard wired to treat any key up or key down event as both a key down plus a key up event (to prevent the computer from seeing the key as held down for a long period of time). This was problematic for using the key as a Ctrl key, because Ctrl is a modifier key, so it needs to be held down with other keys, but as soon as you pressed it down it was treated as immediately released.

I needed to use a more low-level solution and I found one in Karabiner and Seil.

A helpful soul on GitHub had the same issue as I did and did the legwork of finding a solution: remapping the Caps lock key as a Ctrl lock key.

And it worked!

I have to do some further setup to Karabiner to make this only apply to specific keyboards (I don’t want the remapping to apply to my built-in keyboard, for that one I just want to do a simple Caps Lock/Ctrl swap which can be accomplished in System Preferences).

Karabiner looks like a promising app and it already appears to have support for OS X 10.10 (plus it’s open-sourced on GitHub) so this seems like it should be a good solution for the next few years or so.

I’m really happy with the keyboards I’m using as well. I was lucky enough to snag a new old stock Apple Extended II and it has a nice springy but dampened feel, so it’s really quiet and it was totally clean so the typing motion is perfect. My Apple Extended is used but in remarkably good condition for its age, and types great too. The spacebars on each take some getting used to for me, though. I think that the stabilizing motion that the Alps based keyboards use is more resistant than what’s used in keyboards using Cherry MX switches.

Another perk of using these Apple keyboards: the Command keys are correctly mapped and are more prominently placed on the keyboard for easier reach. They’re larger than the Alt keys on a Windows-formatted keyboard as well, which makes them all the more reachable.

The Markdown Shitshow, Part Deux

So, after watching the Markdown standardization shitshow play out, some more substance is starting to come out of the woodwork.

First off, I was right in that people weren’t pissed about the name. Jeff Atwood changed the name to Common Markdown, then changed it again.

In the original renaming blog post, it was revealed that Gruber was emailed about the name Standard Markdown two weeks prior, and just never bothered to respond to that email. Instead, he approached the problem by publicly taking potshots at the project, and allegedly told Atwood that the name was “infuriating.” They tried another name, Common Markdown, but this was also a bust, and finally landed on CommonMark.

Case closed, right?

As of right now, Gruber’s still harboring ill will toward Atwood and others. It’s obvious that this isn’t about the name at all, but Gruber has yet to really articulate why; he seems to just be content to be an asshole about the project (and he invented it, so he certainly is entitled to be as big an asshole as he wants when people take his project and run with it, but I’m still calling him out on it).

Over the last couple of days, though, more context started to surface. Unfriendly exchanges between Atwood and Gruber date back many years, and there’s a great post indicating Gruber’s stance, which is essentially that he has a vendetta against standards.

That stance still wasn’t very satisfying to me. I figured there’s got to be more do it. Dr Drang posted a really solid case against what Commonmark is trying to do:

In other words, Standard Markdown isn’t a solidly built Core Markdown. Nor is it a Comprehensive Markdown with a bunch of helpful features that ol’ bastard Gruber refused to add. What it is is Yet Another Markdown Flavor, with a feature set tied to the needs of Meteor, Reddit, Stack Exchange, and GitHub. There’s nothing wrong with that, but it isn’t setting a Standard. It’s what everyone else does—some better, some worse. And in John MacFarlane’s case, he’s done it better at least three times.

Now we’re getting somewhere.

It would have been one thing if Commonmark took a hard stance and said “we’re just standardizing the core features of Markdown.” But they didn’t. They took that stance selectively, as evidenced by the GFM-inspired support for code fences, yet the lack of core support for things like tables. That seems hypocritical to me, and it’s a really valid complaint.

There are also objections to the fact that the spec was so full of really crazy edge cases and definitions of how to make the parser behave in those edge cases. After all, the spirit of Markdown is about the source being highly readable on its own pre-HTML conversion, and cases like this are are really fringe:

crazy edge case

And yes, it’s all well and good that the philosophy of Markdown is to not write weird markup, but if you want to write a robust parser for a language you don’t get the luxury of pretending edge and corner cases don’t exist. Gruber chose to write a parser that didn’t cover all these edge cases. As a Markdown user that’s not usually a big deal, but as someone who wants to write software that supports Markdown it starts to make things messy. What Commonmark created for programmers is a Markdown standard that unambiguously defines all possible input.

Here’s what I hope happens:

  • Commonmark should do one of two things: 1) drop the extras from Commonmark standard, or 2) incorporate the extras from other people’s Markdown forks to make an inclusive Markdown dialect. I personally would prefer the latter, assuming that the standard allows for a lot of flexibility on these extras. I personally love how Pandoc supports four ways to make tables
  • Gruber moves on and stops bringing it up, and either participates in the Commonmark community to help shape it, or follows his current strategy of being happy with what he initially created and sticking with that.
  • Commonmark becomes a de facto standard for Markdown formats, and when people are building their own Markdown forks, start off using Commonmark as their baseline, and extend from there.