…on life, the universe, and everything

Why not Facebook?

They don’t respect your privacy. They’re irresponsible. And they’re dishonest.

  1. Facebook collects more information about you than they lead you to believe.

  2. Facebook shares specific personal details about you with third parties without asking your permission or telling you.

  3. When Facebook gets caught doing things they shouldn’t, Mark Zuckerberg apologizes. As part of the apology he offers an explanation and an estimate of how many users were affected (so far so good). But, this estimate is always lower than the real number. Once they are no longer the center of attention Facebook revises the number of people affected to a much higher number.

  4. Facebook misleads users by offering privacy tools and settings which do not provide complete information, nor full protection. Regardless of how carefully you use them they still allow Facebook to continue using your data and personal information however they want. And Facebook regularly works around or disallows privacy tools provided by third parties.

  5. Facebook promotes content that is extreme – including reporting that is verifiably false or fabricated – and leads users to adopt more extreme beliefs over time.

  6. A side effect of Facebook promoting progressively more extreme content is that all the bad PR has all but forced them to hire moderators. Moderators who tamp down the most extreme stuff. Truly horrific things. Unsurprisingly, being a Facebook moderator is not good for your mental health.

  7. And finally, pretty much all reporting indicates Facebook is run by morally questionable people. And people with integrity eventually get pushed out.

But Instagram…

These issues are not isolated to the Facebook app. Facebook, as an institution, uses whatever means available to pursue their goals. Instagram and WhatsApp can snoop through your contacts and photos, or log your location history just as well as any other Facebook property.

Also, Instagram is younger in its product lifecycle. You’ve probably noticed the increasing number of ads. It’s heading the same direction as Facebook proper, just 5 years behind. And the money they make on Instagram will fund other Facebook projects (like their cryptocurrency) and anticompetitive activity (like lobbying or acquiring competitors, e.g., Instagram and WhatsApp).

Twitter vs Facebook

The difference between Twitter and Facebook isn’t that Twitter is a better company, a better product, or that they treat their users better (they aren’t, it’s not, and they don’t). It’s that after reading twitter I feel (you know, ever-so-slightly) happier and more relaxed. And after using Facebook I miss old friends, and generally feel anxious and melancholy.

If that’s how it feels to “stay connected”, I’ll pass. Email, text, snapchat, and twitter are still good :)

Twitter requires you to curate who you follow, and that’s real work. I appreciate that. I’m also not the target of the bizarre pile-on attacks twitter is sometimes associated with. I’m sure that would ruin it for me. But, Facebook doesn’t have that problem (as far as I know) and it’s already baseline negative so… ¯\_(ツ)_/¯

Also, friends, if you publish anything anywhere (blog, soundcloud, university website, etc.) please — PLEASE — let me know how to subscribe for updates. I am seriously interested in the work you do!

It’s easy. Just write an email to me and say “Hey your blog post says to tell you that I am publishing my work at …”

Please do it!

Tyranny of the Majority

Many people, especially liberals, are concerned about the “tyranny of the majority” and spend much time thinking and discussing how we might make things better and more fair. Specifically, how to put a check on the power of the majority. A noble goal.

The problem: If you give minorities – say we aim to help transgender people – a check on the power of the majority, then what happens to that other famous minority, millionaires? It’s not like the millionaires have had a hard time advocating their interests up until now.

Compared with other minority groups, the millionaires are better organized. They have resources. They’re connected. You’d better believe they will take full advantage of any systems designed to empower the other minority groups, no matter how noble the intent. This isn’t theoretical; look no further than the electoral college and the tax code.

Of course, we can make targeted changes to benefit a specific minority each time there’s a need. Which does work — if you can make it happen. That plan relies on the majority though, to notice and accept the specific minority actually has a need. Which, historically, hasn’t been reliable.

I don’t have solutions, but I find this concerning.

What Makes a Good Game?

Fun is number one. Gaming is entertainment. Not a lifestyle, not a subculture.

Call me a filthy casual if you want. But do it quick, I heard Destiny raised their level cap again. Or can you skip the grinding with an in-app purchase now?

My other values largely follow from that.

Story Telling

Do it well or don’t do it at all. Script, voice-acting, and themes will be evaluated against the best from hollywood.

Yes, games require exponentially more content, and that is hard. But that’s not my problem. The story doesn’t care that the medium is expansive. It can be done, I’ve seen it done.

But, not all games need story. If the game is great fun without story, then toss it. Tacking on a crap story will only hurt the game.


Should match the player’s ability. Where possible it should dynamically adjust. Challenges should be achievable but, you know, challenging. If it’s too easy it’s boring, if it’s too hard it’s disenchanting.


If the grind is fun, then the grind is the game (and, I’d say, it’s unfair to call it grinding probably). If the grind is not fun, then it’s unforgivable.

For those who only care about the trajectory of the story, you should be able to continue through the game without grinding, but of course there has to be some reward for doing the grind. That’s a balance that must be achieved.

In Borderlands 2 you can grind for better gear and stats, but you can also just power through without worrying much about it on an easier difficulty setting. That design worked pretty well (along with many other complementary game elements).

Novelty, gimmicks

Novelty is worth something. I won’t dismiss a game because it has a gimmick. Novelty wears off though.


I appreciate the value of a deep universe and lore, but each game must stand alone. I not going to watch every Star Trek movie ever made before seeing this year’s blockbuster, and I won’t play all of a games predecessors before I start on it either. I just won’t.

If the game is great I may play the predecessors afterward. There may be spoilers in the sequels. I understand the risks.


Truly free games make me suspicious - I need to know why someone invested that much effort for no financial reward.

Free-to-play games should be free-to-win. Without a level playing field we’re really just playing a game of “who’s willing to spend the most money on a false sense of superiority?”

But, really, one way or another, I want to pay for games.

If you like games (check), and you want games to keep being made (check!), then the people who make games need a reward for their effort (e.g., to get paid).

It doesn’t matter if you, specifically, pay for games. Because guess what? The game makers who get rewarded will be the ones who make games for the people who pay.

The more you (and people like you) spend on games, the more developers are going to make games for people like you.

That also applies to in-app purchases. Every dollar you spend in Farmville is a vote for more games like Farmville (whether that’s good is up to you!)

Execution beats ideas

Really. Execution above all else. This is not exclusive to games, but it’s just as true for games as for all other products.

A good idea badly executed is still a bad game. A bad idea executed terrifically can sometimes reveal the idea to be quite good. Some ideas really are bad. You need both.

Maintainable CSS (or CSS the good parts)

CSS is kind of terrible. Everything affects everything. It’s impossible to refactor. Code is spaghetti from day one. And selectors are used to identify elements in scripts as well as applying styles, not to mention the semantic meaning of html tags themselves.

So. Some proposals…

Element ID

Don’t use ID. Don’t use getElementByID(). Don’t use element IDs in your CSS selectors. Just don’t. ID has no benefit over classes for use in CSS or JavaScript.

There is virtually no case where you can be 100% certain that a style will only ever need to be used on one element in the whole page. Even if you were certain, a class would work just as well!

There is only one acceptable use for id: to enable deep-links to specific elements (with the scroll behavior that entails).

Tag selectors

Don’t use tag selectors in javascript. In CSS only use them to provide the most basic reset and baseline styles. Never mix tag selectors with class selectors.

One class selectors

No nesting. If you need more behaviors on an element, add another class. If you need only some of the behaviors of a parent class and you want to override others, your parent class is probably doing too much. Try giving it less responsibility, or if you really can’t – no way, no how – just define a new class.

Really consider giving the parent class less responsibilities though. If you have to think about the order of the rules in a style block, there are probably too many.


.my-class {  }

Not great (but sometimes necessary):

.my-container .my-class {  }

Bad (just create a third class):

.my-class.other-class {  }

Very Bad (fully engaged in the precedence war):

.container .sub-element a.special-link.active {  }

Use Naming conventions

You should be able to tell roughly what a class is for (and you’re only using classes right?) by the name. Establish – at a minimum – a convention for classes that control layout, text styles, and javascript hooks.

JavaScript should not use the same classes as css.

That would be mixing presentation with logic.

Use rem (root em) units

em units are kind of crap because if they are nested they compound. Still, it’s great to set the font-size on the body and have everything work from there. And, rems are well supported (IE 9+).

Use lots of CSS files

You should have one main css file which uses @import to bring in everything else it needs. Break up your css so that each logical unit is in it’s own file. Got a custom dropdown widget? super-dropdown.css. What about persistent navigation at the top of each page? header-navbar.css. Login form? login-form.css.

If you have less than 5 CSS files you’re probably doing it wrong. If you have exactly one CSS file you almost definitely are.

ok, ok, ok. I know what you’re thinking: “James, I’ve been doing lots of these ‘wrong’ things and it’s been working fine for me.”

You see, it seems that way at first. IDs, specific selectors, using a class for styles and javascript. These things seem useful and “clean”. Why use two classes when one will do? Because you will not be able to refactor your code. That’s why. And if you let it go on long enough you won’t even be able to change your code without a full round of manual testing.

Most CSS code being written today is technical debt from the moment it’s created. And it’s the worst kind of technical debt: the kind you don’t know you have.