Aside

Your stupid TODO list app is not “world changing”. Stop saying that.

One of the classics in the stream of unending stupid that comprises the standard-issue Silicon Valley groupthink is that a product or service is “world changing”. No it is not. By the time your revolutionary service-as-a-platform-as-a-service micro-macro-blog mashup has started looking for Series A, everything world-changing has already happened. I assume that people say this dumb shit because, as they are standing on the shoulders of giants, they’re suffering from hypoxia.

Consider Twitter. Twitter is held as yet another example in Silicon Valley lore of “small thing changes world”. Given as examples are how the term “hashtag” has deeply permeated pop culture, or its role in actual revolutions (Iran student uprising, Arab Spring, Libya). “Obviously”, the thinking goes, “if it gets used in something that literally changes the world, then it is by definition world-changing!”

Nope. You’re confusing things.

To continue to pick on Twitter, it is the end result of a very long, very un-sexy relentless march of progress. To make Twitter happen, we had to have a lot of things in place: a supply chain that puts hand-held radios in everyone’s hand. They have to be built in places where governments force wages down and keep regulation low. Raw materials have to be moved across the planet on cargo containers and by air. These assets have to be obsessively tracked and managed; even a small loss of raw materials or components can disrupt production. Once produced, we need to get them into the hands of users with the capital to buy them. We have to maintain the radio and telephony networks. We need bandwidth, peering, data centers. Data centers mean innovation in cooling and other physical-plant stuff. And on, and on. 

Without all that in place and working effectively, then Twitter wouldn’t work. Twitter is a side effect of the rest of “modern information society” or whatever you want to call it. Twitter – cleverly, no argument there – exploits a tiny niche at the very tail end of a massive amount of work.

No one ever really wants to do a startup to better improve supply chain performance. Why would they? It takes years to understand what a supply chain even is. It takes years to do lots of hard work to figure out what’s wrong, and testing your ideas can take a long time. It’s very hard work. Better to do a TODO list.

Better and easier to make predatory license agreements, or talk about your “incredible journey” after you’ve been acquihired by Google.

Aside

A companion piece, in no particular order, to the excellent http://squarism.com/2014/06/06/default-dc-tech-is-just-bad/

Even if you aren’t in the cloak-and-dagger space, chances are you will be near it and that means a truck-load of issues that will decay your soul.

Let me tell you about the 3 dumbest words you’ll ever hear: “Sensitive but unclassified”. Now, I’m sure you know what classified material is: secret stuff. You can’t look at it without a clearance, you can’t have it stored in a room that’s not protected, etc.

Sensitive but unclassified means, “this must be treated like classified data, mostly, even though it’s not”. So, anyone can look at it, right? Because it’s not actually classified? No. Only certain people can. Who? It depends. Uh, on what? It depends. OK on … ? Lots of factors.

So what we have here is, placing a large neon pink dildo on the table in a room full of people, and stating very loudly, “Only certain people in this room may discuss certain objects placed on specific tables. No one else should look at this specific object.”

But it’s right there in the open. How do you not.

It is important to note that breaking whatever rules might happen to apply to the data – which you may not know about in advance, unlike actually classified data – carries the full weight of law. Meaning you can go to jail if Asok the Intern admits to the Defense Security Service he looked at the big pink dildo.

“But why don’t they just classify it?”, you might ask. Because people need to see it, that aren’t cleared, and in the post-9/11 DC classifying everything they actually want to would make it impossible for anyone to have a job; you’d have to classify everyone, down to the 7-11 cashiers.

On the topic if “Sharepoint Architect” jobs, or just finding a jobby-job with ease: oh yeah. If you are going to live in NoVA/DC and maintain some sort of casual LinkedIn-type job-hunting presence – even if you’re totally happy and not intending to job-hunt at all – prepare for a literal fuckton of emails from recruiters who use the same cookie-cutter “I really like your skills in … ” BS. You can probably sail into a job here, if you don’t really care much about it.

Technologies get embedded in DC tech life. It’s scary-easy to get a job if you’re good at Sharepoint, or Drupal. There are going to be Sharepoint and Drupal jobs in DC for millennia.

This also means, you can end up as the COBOL guy. There are companies running HPUX data warehouses, because HP gave them some 500-year-long support contract, and by-god they’re going to run that goddamn thing out. There’s guys who missed the entire Linux revolution, because they tend – possibly lovingly – to a decades-old dinosaur.

(I’m being sort-of unfair, since HPUX is actually a pretty modern, high-performance proprietary Unix and still actively maintained, but you get my point.)

Another great point:

Politics matter. Congressional BS will impact you. I have friends who have lost “stable” jobs because of some really weird contract expiring or the “wrong type” of money being in the “wrong bucket”.

YUP. You have to get used to this. Congress will kill your company – or the economy – to make a (political) point. Government shutdowns harm lots of people in the area, and I’m pretty sure they’re the new normal, so get used to it. Even if you are a 100% private company, odds are you’ll have government customers or users, and when they’re fucked over, you get fucked over.


Things are getting better. Out in the ‘burbs, there’s some people trying to introduce better tech, sneaking in AngularJS and Golang into staid, boring jobby-jobs. There’s some venture-funded startups downtown, with hip offices and regular hackathons. We’re becoming the “big data” capital, thanks to AWS-East and other huge-ass data centers (most a few miles from my house!). Healthcare.gov was a debacle, but overall this administration has been far more forward-thinking than any before it – there’s even a hip “incubator“!

Things in DC are shitty, and it’s easy to just find a job and hide in the vast negative space that occupies 99% of the government sector. But, there’s good things happening. DC wants to have a hip startup-style scene. DC wants to use the not-insignificant amount of brain power and money in this region to do more than maintain decade-old Cold Fusion apps. DC wants to create a technology economy independent of the Federal Government, or failing that, one that is sleek, agile, and modern; a better government helps us all.

But I’m not sure DC can and so I think about leaving a lot. And if I wasn’t underwater on my house, I’d probably be looking at Portland, too.

Why we can’t have nice things: an ongoing series

Today’s edition brought to you by http://beranger.org/2014/06/01/android-4-5-end-of-road/

I strongly need rooting at least to remove the ads from individual apps — most of which don’t even have a paid, ad-free version.  I also need rooting … to really clean my system every now and then. With almost 300 installed apps, I need to be in tight control of my phone — it’s my phone, not Google’s, dammit!

So much to dissect here. So much.

“I strongly need rooting to at least remove the ads from individual apps – most of which don’t even have a paid, ad-free version.” OK right out of the gate, I need to say: I know that feel, bro. One of the biggest things to turn me off from an app is intrusive advertising I can’t get rid of.

However! The developer has made a choice. It’s kind of a take on Gnu’s “Freedom 0″: the “right” to monetize the app as they see fit. 

Here is another way to phrase that sentence: “I strongly need rooting to remove ads from apps, because fuck that guy who wants to be compensated for his effort. I don’t agree with his decision, so fuck him.”

Since the OP notes that he wants to pay for things, I am going to assume that he’s not one of those fucking parasites that sees there’s an ad-free or fully-enabled version and just pirates it. 

The point is, software developers make choices on how, if at all, they’re going to monetize their work. Disagreeing with that choice does not give you the right to continue to use their apps.

Moving on: “I also need rooting to really clean my system”. Uh, what sort of shit is Android that it can’t manage itself effectively and needs me to fucking sysadmin my phone. God, is every Android user having to do this? Or just the massively OCD nerds who think that every last disk block must be personally inspected for freshness?

If your phone needs that much effort, maybe just maybe it’s a piece of shit? Just saying. Most desktop operating systems need that level of effort and they’re complete shit.

Lastly, a fine 2-parter: “With almost 300 installed apps”. Sweet tap-dancing Moses, what the fuck do you do? I don’t have 300 apps installed on my computer that I use to develop software (a notoriously software-heavy process)! 

(Sidebar: Obviously, as a developer, I’m not counting stuff like /usr/bin, which on my Mac has 1047 items. But I have all of 106 apps in /Applications, and honestly I haven’t launched some of those as long as I’ve been using a Mac – I mean, Chess.app?)

And that last wonderful line: “I need to be in tight control of my phone”. Just curious, do you ever use to make phone calls? Because it certainly doesn’t read like you do. 

“It’s my phone, not Google’s, dammit!” AH, yes, the first time you fall off the turnip truck it does hurt a little.

The bulk of high-end smartphones on the market are essentially owned by their software maker and telco. If you want to “own” your phone, buy a burner, full stop. 

A brief and uninteresting review of ReactJS

You might have heard of React (or ReactJS) lately. It’s a Facebook JS platform thing. You can find lots on it: here, here, or here, or perhaps this well-reasoned discussion. And probably other places: it’s starting to really get talked about a lot.

Naturally I did the obvious thing, and found the smallest possible project I could lever it in to, and implemented it. I wrote a mailing-list-and-whatever-else email system for work (using Lamson and Redis). Me being me, the “user interface” is a bunch of scripts in bash and Python, and `redis-cli`, along with a giant README on just what the hell is going on. 

Once I took it live, I decided “phase 2″ was to at least put up a read-only view of things like “who is on what mailing list”. Obvious first choices here are Express or Flask, and a little AngularJS front-end; so React will work nicely. 

The server-side code itself is unremarkable: get a Redis key, then `res.json(result)`. Nothing special, so I won’t bore you with the details.

React itself was somewhat uninteresting. A somewhat dismissive but also not entirely inaccurate description is, “it’s just a thing for making directives”, a directive being what Angular calls its template/view/DOM-manipulation mashup; in other words, UI.

It relies on hierarchy, and at the higher levels all elements are new/non-standard; so in the tutorial it uses a “CommentBox” top-level element which contains a “CommentList” element, which contains a list of “Comment” elements, and so on. If you’ve ever done programming in something like GTK, this should be familiar. Only at the lowest level do you start dealing with HTML. 

Since it’s just “directives”, React contains no methods for talking HTTP, and it has no 2-way data binding. This is not entirely awful, because not every single element benefits from 2-way. It’s also not entirely great, because now you’re back at least partly in jQuery-land. I’ll always have affection for jQuery and will never say bad things about it, but I don’t think it’s a truly unfair statement to say sometimes larger applications can get unwieldy or difficult to manage.

For large projects, then, it seems like you’re just trading one hard-to-maintain method (a twisty maze of selectors and bespoke events in jQuery) to another (just what the fuck is a TopLevelStructuredListElementClass, anyway?). You can look at any “standard” AngularJS app and immediately understand how it gets JSON from a remote service, and with a few minutes of noodling you can probably reason where the Angular service code is and how it works. I don’t see that at all in React. 

I will probably deploy it (instead of rewriting in Angular), because it’s a very small app that does exactly 1 thing and will almost certainly not be changed for years, and maybe I’ll open-source it if I can. That said, I’m sticking with Angular for now.

The consequences of AdBlock

I got this message today, upon visiting a site:

It appears that you are currently using Ad Blocking software. What are the consequences?

So curious, I clicked through and was given the standard lecture about how things cost money and I’m depriving them of ad revenue.

So tired of this.

This is a fallacious argument, because the purveyors of ad content have, over the course of the past decade or so, rat-fucked the user community more times than a reasonable person would want to count. How many “drive by” exploits were slipped onto user machines via ads? How many IE 0-days are being exploited still?

How many times is a users auto-play preference disrespected? “But if we don’t autoplay, then the user won’t hear the ad or pay attention to it it all really”, they might say. Well, yeah? The user wanted content. Ads aren’t the content.

Oh, but nowadays they are. Just getting to content without an adblock app is sometimes difficult to the point of frustration, even for experienced users.

Give it a fucking rest, content providers. If I don’t know you, if I can’t personally trust you, there’s no way I’m letting any random asshole’s content execute on my machine. If you want ads, make them small, text-based, and clearly labelled. You have to earn my trust: not shame me into it.

Everything is horrible

I started reading comics again, so naturally I wanted to do so on my iPad. Thankfully Comixology existed; I immediately began diving back in. Time passes, and Amazon scoops them up. 

It’s a natural fit, and if there’s one thing Amazon does well it’s selling things. So I’m excited! Except, everything is horrible, and Amazon begins botching the acquisition immediately. They launch a new app, to disable IAP: can’t have 30% heading to AAPL! Despite having all my previous (iTunes Store) purchases showing in my account on the web site and the new app, I can now only read them in the old app; downloading some titles isn’t apparently allowed. There is no FAQ about this. Maybe one day it’ll return. Nonetheless, it is unpleasant as a user to see my once streamlined, rock-solid buying-and-reading experience turned into something awkward and clunky. I mean, it doesn’t even use Amazon’s payments! I have to keep a separate CC on file with them!

iTunes continues to disappoint at every turn. My library is essentially unusable. There is no “reset iCloud Match” command, or way to manually say “you somehow have your shit all fucked up for this one song”. So I have playlists and albums with dupes that are greyed out and constantly have the “attempting to download” squared-circle, ratings are useless (entire albums marked 5-star, that I don’t even listen to much), and more. 

Watching shows I’ve purchased on iTunes via my Apple TV is an exercise in frustration. The most common scenario now is that in order to watch a show, you must take a circuitous route through the various menus in order to find it. Just going to it via the “home page” doesn’t work. It sometimes takes 10+ clicks to get the TV to admit there’s a show to watch.

This is, of course, when my super-fast Verizon FIOS connection isn’t being throttled to the point of uselessness. I’ve stopped watching YouTube, because there’s no point in even trying any more. The odds VZ will let the bytes down the pipe at a reasonable rate – enough to watch an animal be moderately cute for 45 seconds – are increasingly slim. 

I could go on. Numerous apps I once relied on – 1Password chief among them – are utter shit. An app we use at work did a major rev with corresponding upgrade fees, to the tune of $150 per seat, and won’t be fixing any of the bugs we have outstanding in v4. “Upgrade to v5 and maybe we’ll fix them”, we are told. 

There are people who think that Microsoft EOL’d XP because they are greedy. These people are very, very stupid. Microsoft gave everyone years of warning that it was going to happen; so shut up

In the mean time, look at the very real software (and hardware!) situation going on around you. The entire thing is garbage. Real software we use today is horrible: user interfaces for line-of-business apps feature puzzle-solving as interaction. Software reliability is less than worthless. Everything takes more money than is reasonable to just get a shitty, bug-ridden blob of bytes out the door. “The Cloud” solved none of this; except to make even experienced professionals more unhappy.

Things are horrible and, like most of life, one imagines it’s going to get a lot worse before it gets better. 

 

Aside

My frustration with NodeJS specifically and JavaScript in general is just through the roof at this point.

The churn of frameworks and libraries in NodeJS is getting completely out of hand. I have a few feeds (Reddit, etc) and it is almost exclusively some new Rails-a-like packaging of Express, a new build system meant to replace `make` and shell scripts, or more MV* frameworks (each with varying amounts of ES6 and weird features).

I just can’t take it. I think it’s finally overwhelmed by ability to give any fucks. Being involved in the NodeJS or JavaScript “community at large” is a guarantee of drinking from the firehose of this nonsense, and I am just done. I can’t be arsed to care much any more.

My heart is wandering back to Python more and more. Staid, ugly, boring Python. Synchronous, the global interpreter lock, give it to me. The rate of change is far too slow, but Python can speed up. The Python community can change.

I don’t believe JS can be reasonable at this point. They’re too invested in not caring about sustainability, “the long term”, whatever.

Maybe I’ll change my mind later. I still like JavaScript for lots of things: it’s optimal for so many tasks. But I feel like, writing big programs in JavaScript at this point is just adding to the noise.

(Totally unrelated, when did WordPress start to act like Tumblr? I mean, they have the same posting category thing now.)