Welcome to Texas, hope you didn’t need your laptop…

Subtitled: “Windows 10, please go eat shit and die.”

So here’s a new one to add to the immense number of minor annoyances and decently long list of consequential fuckups windows 10 has caused me. It remains to be seen which category this fits into.

I made a terrible mistake last night, and I left my laptop in Windows 10, and closed the lid, figuring it would be fine until I needed it again.

Apparently not. Sometime after I picked it up and put it in my backpack at 5:30AM PST this morning it decided a reboot was in order, probably because it had silently done some updates in the background while the lid was closed overnight. You know, as one expects a sleeping laptop with the lid closed to do.

Well, surprise there windows, but you’re not the only operating system on my laptop, and the real OS’ require passwords to decrypt before they boot. So I arrive at a Starbucks in DFW, open my backpack, and find a laptop that is absolutely BOILING as it has been running at a BIOS boot prompt without the benefit of power management, inside a sleeve, inside my backpack, for the last 7+ hours.

And now, after plugging into power, it doesn’t want to boot up. Probably a thermal issue. I’m hoping this new ThinkPad lives up to the ruggedness my previous ones have, or it’s gonna be a long week. For now though, it is literally untouchable, I nearly burned my hand grabbing onto it in my bag.

Windows. Not even once kids. (For reference, I run Arch Linux, commonly known as “Hard Mode Linux” because it has NO training wheels, and your computer doesn’t even go to sleep unless you configure it to. Even that has never done something quite this boneheaded.)

I need to figure out how to run Overwatch on Linux, I can pretty much boycott all other windows-only games and just never see that retarded pile of regressions again. But Overwatch. Damn you Blizzard. (Both for a game I really enjoy, and for not supporting Linux, you lazy lazy jerks.)

From some alternate reality…

I was grabbing some maps for Unreal, and the MediaFire download page showed me this:

Uhhh.. Rule Britannia? God save the Queen, wot wot?

If I had to guess I’d say the  GeoIP: Mapping and GeoIP: Region services don’t have the same concept of regions/borders, and they just put the two plugins back to back on the page. It’s even possible that the two worked together correctly at one point, and one of them changed and now there’s this.

A good reminder to always go back and monitor the status of any 3rd party plugins on sites you’re running…

Spooky fun at a distance.

A little while back we got a WiiU, mainly because of the game Splatoon. We have some other games, but splatoon sucks up a LOT of our gaming time. Splatoon is a super fun game, with one amazing feature that I just can’t figure out: Splatoon is a very bad game.

The programming of the game is bad: The fact that it’s multiplayer-only is unbelievable considering how bad the netcode is. There are lag bugs, terrible server problems, lots of random disconnects (blamed on *my* internet connection, which I can assure you is untrue, I have logs to show it.) and so many fine-tuning issues in the UI that one or three lines of code could’ve made better.

The game-mechachnics are bad:

  • It’s unbalanced as hell (one weapon can act as both a sniper rifle and an alley-sweeper, all at the same time!)
  • the scorekeeping and matchmaking algorithms are not well defined, and easily lead players to feel like the game is “cheating” by manipulating the players onto the teams it wants or making what appear to be rather arbitrary judgments about who won
  • there’s functionally no ability to communicate with your team or even to choose your teammates, so it almost always devolves into every-squid-for-themselves.
  • the game modes are simple and skewed towards meet-in-the-middle gameplay which SHOULD keep everything evenly balanced but which can easily lead to one side utterly dominating the other if the matchmaking is unbalanced. (This has a couple of easy fixes. Multiple spawn points or unlimited ammo while on your spawn are my first ideas.)
  • There’s no compensation for the fact that if one of your teammates disconnects you WILL lose, 3-on-4 is just not going to be possible in almost any circumstance. (A team that’s suddenly 25% missing should get some sort of compensation in points or stats, or the game should kick a random person from the other team maybe?)
  • In ranked mode a win earns you 8 points. A loss subtracts 10.  This makes losing very discouraging, and that’s ignoring the fact that your “rank” is based on how well your randomly chosen team did, and is no measure at all of your personal performance.
  • Stats are “fuzzy”, with no numerical values. Which is better, “use less ink” or “recover ink faster”? Dunno, you’ll just have to try out both and do whatever feels better. (Hint: It’s use-less-ink, we did the tests, you come out ahead for almost all weapons.)

The game feels like a really good idea, with everything else tacked on as an afterthought, beta-tested on the public.


This has lead me to wonder about the phenomenon of Spooky fun at a distance. The IDEA of the game is enough to keep pulling you in, even if the game is irritating once you’re there. I experienced this phenomena personally with both WoW and Eve years ago, where I really wanted to play the game, but by time I was actually playing it the game just seemed like a lot of work. In my head I know I don’t want to play, and I can enumerate the reasons why, however I really want to play!

I can’t figure out what the secret sauce is, but I’d sure like to, if only so that I could immunize myself somehow. Usually reason and logic are enough, but some things just manage to sneak through… Spooky.

Vimmification Part 1, upgrades!

Setting up a nice clean vim install for myself. Tired of my vim feeling bloated and slow, so I’m rolling my own config distro with just what I need.

Step 1: I need the latest version! Snow Leopard ships with 7.2 instead of 7.3, and I just don’t find being outdated to be acceptable. Fortunately macvim to the rescue!

MacVim is a nice OSX GUI wrapper for Vim. Adds that little bit of polish on over the top. Fortunately it also comes complete with it’s own Vim 7.3 install! And its “mvim” terminal command is apparently smart enough to know that it should act like normal terminal vim if called from an alias of that name. So to get the latest macvim set up and linked, all we need to do is: (Assuming you’re using brew, which you should be.)

brew install macvim
ln -s /usr/local/bin/mvim /usr/local/bin/vim

This leaves us with one problem however. The system installed /usr/bin/vim comes first in the default $PATH. In order to get the correct version simply by typing “vim” we need to reorder /etc/paths to put /usr/local/bin ahead of /usr/bin. Once that is done and saved, reload your shell, fire up vim, and you should see version 7.3.

Alright excellent, updated version of Vim ready to roll. Now that wonderful “set relativenumber” line in my .vimrc will no longer throw errors. Time to start setting it up the way I like it.


I think I’m having some weird conflicts between installed gems and bundled gems. Well, why do we NEED installed gems really? What’s easier than wiping out your gemset in RVM? Why this of course:

gem list | awk ‘{ print $1 }’ | xargs gem uninstall -aIx

And bam, meteor-style mass gem extinction. Bye all you nasty gems.

This took me a little bit of figuring out though. Why do I never remember the xargs command? Very useful in these sorts of situations. Yeah, I loves me some command line some days.

Hover is dead, long live Hover.

Seriously, stop using mouse hover to do things already. I just found out that xkcd isn’t the only comic I read that uses mouse-hover text to continue the joke. AFBlues does it too?! Argh!

Sorry that I use an iPad. Or an RSS reader. Why must you punish me? Abusing your fans isn’t usually considered to be good form, but if you feel you must then I guess I can’t stop you. And don’t even get me started on websites that make use of it. (Pointing at you FaceBook, even though I don’t use you anymore.)

Hover was never a good metaphor, and in this era of feed readers, touch interfaces, and ? super-smart mobile devices, it just isn’t viable at ALL.

PragProg’s take on the iPad…

An article in the latest magazine from the Pragmatic Bookshelf says pretty much everything I want to say about the iPad and what it is about to unleash.

I find the most compelling point about this to be the “bling arms race”. Looking good is the critical element in an app, the only important feature. (Notable exceptions such as Doodle Jump ? acknowledged, but go with it for now…)? Maybe that’s not so bad in some cases, especially on an iPhone where I expect to use most of the apps a few times and be done with them.

The use case on the iPad is going to be far different though. Fart apps aren’t going to cut it. I don’t buy apps for my computer without a demo to try first, and I don’t see myself doing anything different for a device like the iPad. Sadly the only pre-purchase info you’ll get for you apps are the usual review (highly suspect and probably fake) and screenshots. This is a high quality device, and we’re going to want high-quality apps to run on it. The apps store ecosystem isn’t set up for this. It’ll be interesting to see what happens.

The parable of the boat builder…

Once upon a time there was a man who loved to build boats. Building boats takes a lot of space, and his apartment just wasn’t big enough. He went to a local warehouse and asked if he could rent some space to build a boat. They worked out an agreement. He would build boats and sell them to the burgeoning local sailing industry, and in exchange for 30% of the profit from the sales the warehouse would let him use the space for free during construction.

“One small caveat” said the warehouse owner, “we have final say on the distribution of your boats. We may suggest certain changes we think will help their marketability.”

The man agreed. Surely allowing some oversight would be no problem whatsover. He knew the local market, and he knew his boats would sell! He began drawing the designs that very day.

The man worked 12 hours a day for two weeks! Over 150 hours of work later he had the plans for the first boat. He went to the warehouse and began to lay the forms for the keel. As he was laying the forms one of the warehouse managers came by and looked at his plans.

“Looks great!” said the manager, “However I thought we were getting a sailboat, and this appears to be a small yacht! Our company has recently decided that we want to be ecologically sound, so we can’t really support powered boats. Redesign it as a sailboat and then you can start building it.”

The boat builder agreed, but he began to think that perhaps this oversight agreement may not be as simple as he thought. Throwing away his last two weeks of effort he began again, this time designing an eco-friendly sailboat.

Two weeks later, plans for the sailboat in hand, the boat builder once again began construction. He worked uninterrupted for 2 months, day in and day out, until after over 700 hours of hard labor he finally had his boat completed. It was a beautiful solid wood boat in natural hardwood color, with natural white cloth sails. After admiring his handiwork he went to tell the warehouse managers to have them begin looking for a buyer.

The warehouse managers looked at his boat and seemed suitably impressed. After a few moments though one of them spoke up. “It’s quite a beautiful boat, no doubt about it. In the last month however, we’ve decided to try to sell carbon-fiber racing boats, and we want people to think of these boats when they think of sailing! So before we try selling this boat you need to paint it bright red and change the sail for blue nylon. That should make it acceptable to the current market!”

The boat builder was astounded! A classic wooden boat with natural cloth sails and they wanted to make it look like plastic! He would have none of it, and he told this to the owners in no uncertain terms! The warehouse owners were firm though. Carbon-fiber racing boats were what people should be using, they said, and if he didn’t comply then they were not going to be able to sell his boat. The boat builder said that he was fine with that, and he would just take his boat and leave.

“Not so fast”, one of the owners responded, “you’ve been using our space without paying rent, and we’re due a portion of the value with the boat. If you don’t change it the way we want and sell it, then you can’t take it anywhere. There is no third option, this is our warehouse, and partly our boat.”

The boat builder agreed, there was nothing he could do. The owners went away and the boat builder sat and looked at his boat for a time. Then he went to his boat, puled out his lighter, lit the corner of sail, and walked from the building and never returned.

Where do you draw the line? ? Where should you? And what about the boating consumers and their ability to choose when the market is this controlled?

If you haven’t guessed, I’m not really for walled gardens, no matter how well decorated they are.

On data ownership…

Something I’ve been working on in my programming projects recently is ways to allow users to use their data from outside my service, and to take the data they have in services I create elsewhere.
In the new era portability is king. If you don’t allow users to use their data how they want, your service is utterly useless and doomed to failure.

Whoa there, you say, them’s some big bold words! If it sounds like I’m including the large portion of current generation products people are familiar with as the target of my wrath, you’re right on the money. Let’s take a look at a recent real life example, MobileMe.

MobileMe offers some excellent syncing tools for those of us with Macs and iPhones. Over-the-air (push!) syncing of contacts and calendars is a great tool, especially for those of us with a desktop, a laptop, an iPhone, and an iPod Touch all trying to stay perfectly in sync. However that’s exactly where the scope of the tool ends. Want to share contacts/calendars with someone else as “joint ownership”? Screwed! Can’t do it. So MobileMe loses one user/evangelist to Google, where I can choose to allow another user to collaboratively edit my calendar. MobileMe ends up in the trash heap because the data I give it can only be used in the ways that MobileMe wants me to use it, and I have different ideas.
Google also frustrates me though because I would very much like to set up a group of shared contacts between Bev and my accounts so we could maintain contact synchronization, but that’s not supported through them either. I have a huge store of data, and I can’t even grant another user ACCESS to it. This is full of fail.

Obviously one of the core problem with this is common language. There has to be a standard protocol that is used for each type of data in order for sharing to really work. For inter-service data (like sharing contacts with another user of the same system) there really is no excuse however.

There is another form of data usage to consider beyond just sharing. A good example of the type of thing I’m thinking of is WebHooks, but I’m not completely convinced on their implementation.
A current example of the concept would be posting? to an online forum that lets you “follow” the thread. When you post you can check the box for “email me when someone replies”. Now whenever someone posts something you get a notification. WebHooks is like that, except instead of providing a simple email notification it allows you to provide a URL and a notification is posted to that URL. The notification contains whetever data the application designer wants it to. This may seem like a power-user feature, but once the concept is widely accepted it allows you to let websites (and the datasets they contain) to interact with each other in fabulous new ways.

This starts with us, the application designers. And this is why I’m so hot and bothered about the idea. If I don’t design my own applications to allow the sort of data interactions that I want from other websites I use. Once again though, the problem is standards. How do you output the data? Do you create your own refspec for the specific website/application? Where do you draw the lines?

Once again, the problem is standards. There’s no reason why any user should have both MobileMe contacts and google contacts. Ideally either service should allow the user to use, not just “import”, contacts from the other.

We’re not there yet, and I understand how people scoff at this idea, but I’ll say it again. Data portability and access is king. If you don’t let your users get to the data they’ve entrusted to you and use it in the ways that they want to use it, they’re going to abandon you.