Learning about yourself

All of us are on a journey. From birth to death we live in the skin we’ve been given always striving to (well, hopefully at least) be a better version of yourself than the day before.

Learning more about yourself and your flaws is a painful process at times. The flaws that we live with are put into relief when we start interacting with others and their flaws.

For the most part you get by with the day-to-day because by the time we reach adulthood we’ve knocked enough of the sharp edges off our persons. The average interaction works well enough that we’re not confronted with our flaws. It’s only when you let someone simultaneously get close enough and they find one of the pointy bits that have yet to be smoothed out.

We all work at it (well, hopefully at least) to find those bits of bad and fix those as well.

Of course the chances of getting them all are zero.

But try we still.

Numbers vs. money (Android vs. iOS)

I had an interesting conversation at work today about iOS vs. Android. This isn’t the religious argument over which is better mobile operating system but which is “winning.” I personally like iOS better than Android, but I’m not taking sides in this bit of a rant-y post.

My co-worker was saying, and I have no real reason to disagree but I haven’t looked up recent numbers, that Android has a 70% market share compared to iOS and based on that they are “winning.”

My view is different though… Apple only sells what most other companies would class as a flagship device. Even the iPhone 5C is a pretty damn good phone when it comes down to it. Not just that but people that are buying an Apple device want the Apple device. The majority of people buying Android devices want a cheap phone that lets them text, Facebook, Twitter, Snapchat, and maybe even make a phone call. This is different if you’re buying a Samsung S5 or something like it, then you are buying the phone for what it is, not just a phone.

Most people that have an Android phone really don’t give a rats ass about Android. The phone does enough to be good and that’s is.

Just because you have 70% of the market, where most of the market is apathetic doesn’t really count as a win in my book.

It’s like in Soviet Russia. Did the Lada win by having the biggest market share?

(Yes, I just compared Android to a Lada. Deal. :-P )

That said, the vast majority of the profit of the mobile industry is going to Apple. Most apps are iOS first and then other platforms. Why? Because the people on iOS typically spend more money because they care  more about the phone. Most people (again, I’m making broad generalizations here) on Android just want a cheap phone with a few free apps.

Design for debugging and testing

Oftentimes I run into designs at work (not just at Amazon, in general) that work — mostly. The problem is the “mostly” part.

We would all like to write code that is perfect and runs right every time. Even if it is perfect the moment you press “ship it,” the world will conspire to make it imperfect soon enough.

Permit me to take a step sideways first: hardware design. Almost every piece of modern hardware has a plethora of test points littering the board. The more complex the board is the more test points you typically see on it.

My thought is that software aught to be written the same way.

This gets to a pet peeve of mine. Most programmers think of testing as writing a bunch of unit test or even integration tests. This works as long as you’re in controlled conditions. When the software gets out in the wild you get all sorts of wild and wonderful failure modes.

What I like to design into the code I write is a way of testing individual submodules in the wild in as much isolation as I can practically get. The advantage is when the code breaks, which it inevitably does, I can diagnose it since I designed it to get debugged.

A counterexample is what I was looking at today: SWF — Simple WorkFlow service. I normally brag about how awesome most of the AWS services are. And they are. SWF on the other hand I would name Complex and Fragile WorkFlow Service. CAFWFS. Doesn’t roll off the tongue as nice though.

Basically, you have this thing that you can inject things into and have it spit things back out. It’s based on the notion that you can call a dependent service, have it save state, and replay the calling code over and over while replaying the responses when it gets them until the workflow is finished. If you think that sentence is confusing, you’ve entered the world of SWF. It’s awesome that it can be implemented… it really is. But it’s also hard to understand and debug when it fails.

Not just that but it’s built with one of the most academically pure (which I use in the most derogatory way possible) frameworks: AspectJ. AspectJ might work great to inject logging. But in something like this it just adds to the undebuggability of the whole.

Sure, you could get this working once. But if it breaks — in production when all eyes are on you — I challenge you to figure out how you’re going to fix things in short order.

You might call me a luddite for saying that simple is better. But I do think that. I do say that.

When the simple thing breaks I can fix it. You can fix it. You’re not just stuck there looking at it wondering how it even worked in the first place.


Soylent – Part 1

Back in April or do I decided to pull the trigger on a couple of weeks worth of Soylent.

Taking a step back, Soylent is a meal substitute. It’s engineered to have exactly what you need to live and thrive. In some ways it’s kind of a scary concept since you’re messing around with something that’s so fundamental to the human experience: food.

Why did I get in the first place? Mostly as an experiment, honestly. What would it be like to “eat” this stuff?

Well, today I started off replacing my breakfast and lunch with the neutral-tasting and slightly gritty liquid.

I’ve heard legend of the “horse-killing farts” that starting to use Soylent would unleash. Of course that was V1.0 of Soylent. V1.1 was upgraded to have some digestive enzymes to tame them down. (Yes, this food has version numbers and release notes.)

No real farts or intestinal distress was noticed.

What I did notice is that I seemed to have more energy and focus this morning. It didn’t feel “Monday” at all really. I felt productive from the word go and I didn’t have any dips in my energy through the day.

Honestly, it’s kind of nice. Bland, yes… but I can say that it is pretty convenient. Ennie says it smells like Play-doh and I have to agree. Taste-wise it’s a slightly sweet malty flavor that has a bit of remaining grittiness to it; it’s not lumped or gross, just, well, neutral mostly.

Historically most days for lunch I wound up eating an apple and peanut butter or just foraging around the Amazon campus for a food truck or something. The apple and peanut butter was at least healthy… food trucks, not so much. Tasty, sure, but it was mostly a way to deliver energy.

I replaced it with a walk instead.

My plan is to do breakfasts and lunches this week and see how things work out. I do want to try a full week of Soylent to see how things work out… basically as an experiment. (Hey, self-experimentation has a long history in science. This fits right in.)

CurrentC: Fail!

As I was writing yesterday about my initial experiences with Apple Pay.

On the tail of that I learned on Thursday or Friday that there’s a bunch of NFC-compatible terminals that are being turned off by various merchants that are trying to do an end run around the credit card companies. This affects not just Apple Pay, but also Google Wallet, Microsoft phones, and any credit card that is capable of carrying out an NFC transaction.

So, what’s the deal with CurrentC?

Well, they have made a bodged up product that uses QR codes and your checking account to get your cash.

This is the most ludicrous thing I’ve heard in a while!


The biggest thing is that any time you’re making a transaction using something with a Visa, MasterCard, American Express, or a host of other logos on it you are being indemnified by the banks against fraud. If, as is commonly happening lately, your merchant’s back-office systems are hacked and they steal all your credit card information, you are not on the hook for transactions that you did not authorize.

With this CurrentC bullshit they want to link directly to your checking account. Instead of going through the credit card networks they want to do direct ACH transactions against your checking account.

So, what happens if they get hacked?

Well, all the money from your checking account can be taken.

Unlike a credit card, you’re out that cash until the back decides it’s not your fault. What will you do until then? You, now penniless schlub.

Lets say your bank decides you’re not to blame. Instead of changing a token on your phone or your credit card number, you now have to change the number that you never really change: your checking account number.

Thanks, but no thanks.

If you decide you’re only going to take my checking account, you can be certain that I’ll take my business elsewhere. Be that using Google Wallet, Apple Pay, or whatever else that happens to be in my wallet.


Apple Pay

Apple Pay launched this week on Monday. So far I’ve used it on perhaps half a dozen transactions at various places. I love it up to this point. Partially I’m digging it for the convenience of the transaction — it really does work very slick-ly.

The even bigger thing I like is that it’s a lot safer than an standard swiped card. You only need to look at products like Coin or Plastc to see how easy it is to make a mag-stripe — even on the fly as with these products.

More important than the mag stripe is that the same magnetic information is read at each transaction. More important than that is that it’s stored at all of those merchants.

When you read of any of the high profile hacks at merchants like Target or Home Depot what the hackers got was the car info so they can use those cards — or even manufacture those cards for use — at other places.

What you get with Apple Pay is more than convenience, it’s security.

The credit card number (and associated information) isn’t even on the phone. When you register a card with Apple Pay the bank generates a unique token for the phone that’s tied to the account. At each transaction a unique code is generated for the merchant and transaction that the bank can tie back to your account. The beauty is that even if the merchant is hacked, the codes that are there can only be used once — the one time you were there.

As an added bonus if I happen to lose my phone it’s still protected with my fingerprint or PIN. Even with that, I can deactivate the phone and associated tokens without changing my credit card number since that doesn’t even exist within my phone.

- = -

Today I paid for a fire extinguisher at Home Depot using Apple Pay.

I didn’t worry about it getting hacked.

 – = -

Convenience and security. I dig it.


Oddly, this isn’t in the “photography” category. The etymology of the word “camera” comes from a darkened room — only later did it come to mean a device to take pictures.

The first thing you would call a camera in the more modern term is a “camera obscura” which is a darkened room that obscures the outside world — or obscures all except a pinhole.

Yesterday we had a partial solar eclipse. I’m not going to show you a picture of the outside world since it would look normal once the photograph had been taken. If I had a light meter I would be able to compare the amount of light, but I don’t have one.

- = -

Yesterday I had a break in the day when I was able to see a friend from Cleveland who was dealing with Amazon. One the way back to another building to pick up my computer (which was getting a new hard drive) there was quite the downpour.

When that was taken care of and I was walking across the street to Rufus, by building, someone was looking up at the sky asking if I could see it?

“There’s an eclipse going on!”

I make a shadow with my hand and sure enough there was!  :-D

A gathered a few folks from my team and some paper plates and went downstairs.

- = -

What I have — or rather made — was a pinhole camera.

If you look close you see a partially covered round spot on the plate.

Another plate a few feet away has, literally, a pin hole. Made with a real life push-pin!

You’re seeing an image of the sun with the moon in front of it.

While the room wasn’t dark (we went outside) the contrast is enough to get the image of the solar disc perhaps a third covered by the moon.  I know it’s simple and everyone’s done it… but it’s still pretty cool for me.  :-)


Fifteen: The number of years Ennie and I have been married. We had been dating years before that though.

It’s a bunch of time — well over a third of my life thus far (just for the married bit).

Like very endeavor its had its ups and down. In balance though it’s been up.

Many changes… Willoughby, Solon, then the move to Seattle. Cats. Jobs. All sorts of things.

Here’s to the next 15 years. (Note how I didn’t say “another.” :-) )

Coding to specs

Coding to specifications is a dangerous thing. Sure, not having any specs is dangerous as well. The problem arises when you only check off the items on the specs and don’t look at the completed product that you’ve built.

This happens often in software and I see it all the time. The product owner writes down the things that are needed and the work is divvied up amongst the programmers. Each given tasks. The code is written and code reviewed. The product owner looks at the end result from the view of himself or herself.

The software gets shipped to the waiting masses.

The waiting masses don’t have the same expectations or understanding of the product owner. Real users do all sorts of things that you might not expect.

- = -

Here’s an example:

You might have an app on a device to turn on security on the device. If you launch the app you obviously want to turn on the lock, right? The flow takes you through setting up the security all OK.

What if you hit the icon accidentally?

Well, that’s not on the spec.

The spec says to lead the user through setting a PIN; exiting isn’t part of the spec.

Then you reboot because there’s no way out.

- = -

The specs can be (and most likely are) all trees and very little forest.

Solutions looking for problems

I hate when someone comes up with a new feature or technology and only after that start looking for a problem.

Worse still is when someone looks at it with the same attitude of “if all you have is a hammer, everything looks like a nail.”

I ran into this today with the cover that I got with my Kindle Voyage. The Kindle is spectacular like I had expected it — that’s a review for another day. The cover is bad though.

It started with the idea of the Origami cover Amazon used for the Fire tablets. It’s a cool idea that lets you prop up those tablets in a variety of orientations. Coolness. There you get a hammer.

The Kindle Voyage is the nail.

186g. Nice.

130g? Not so nice. All the magnets in the cover weight a ton. (well, 130g)

Who props open a book like that anyway?

Not only that, but the cover is now floppy. Oh, and the cover opens like a notepad not a book. This is only half the problem though. The bigger problem is that the schmick capacitive page turn “buttons” you work with your thumb. The way you hold the Kindle+Cover combination forces you to cantilever the weight of the combo onto your thumb. Congrats, you just turned a page accidentally.

Sometimes you need to take a step back before swinging that hammer at what you perceive to be a nail.

%d bloggers like this: