Google releases assertion library

Google’s internal library Truth has been released as version 1.0. It maintained by the Guava people, and is designed to work for both Java and Android according to their page. (Though not sure exactly what the Android tweaks are.)

I like the API for Truth and AssertJ and their error messages. Honestly I’ve been using jUnit’s assertion library mostly because I’m lazy. Though I’m considering switching going forward. Not sure I’d convert all my old assertions at this point.

Something is rotten in the state of Denmark

I don’t get it. Typically I cannot handle most modern shows. Take Game of Thrones. Its filled with violence and incest. I’m not a prude by any standard, but it’s simply too much for me. To be fair, most shows these days I’d rather not watch. So it’s nice when the rare show pops up that I can handle watching.

Last year Netflix came up with the “The Curious Creations of Christine McConnell” which I fell totally in love with. It was a one-seasons flick that merged baking, Muppets and Lovecraftian themes. What’s not to love?

So, now that Endgame came and went, and folks are still talking about GoT and the random YouTube star phailure… I figured I’d recommend this show for folks to watch. Hell, I want to be part of the water-cooler conversation every once and awhile. Why not recommend McConnell? Lo and Behold, I tell folks to watch it and they tell me its too creepy. The same people that think nothing of beheadings and whatnot in Game of Thrones felt this show I was recommending would give them nightmares.

I do not get this. Not even a little.

Clockwork Orange is difficult to watch. The twins in the Shining is difficult to watch. Hell, just reading about Ed Gein in wikipedia is not for the weak of stomach. But this show? How can it be worse than GoT? Or Dexter which was a success if I remember well. But McConnell is too creepy? Not buying it.

For those who remember Gwar, they were a live rock show which was hard to watch… and could be difficult as hell. Muppets on Acid and Cocaine was the best way to describe it. A time fueled by MD20/20 and god knows what else… and people who jumped into that mosh pit now sit in front of the TV soaking in executions and gore from random subscription channels and YouTube fails crying for more… while complaining of this creepy weird show on Netflix. At this point, I’ll stop recommending shows.

Three weeks in…

tl; dr… still I enjoy the leaf.

The leaf lends itself to my schedule. I still haven’t gotten the fast-charger installed. I will soon. But that means for now I’m just using the trickle charger. Work is only like 12 miles away, so nightly charging is completely fine for me.

For ref, this is a used 2016 leaf. SL trim so its ‘upscale’ in the sense that it has leather. The newer leafs are more decked out, for sure. But for my purposes, this one was fine. The important part was the drive and lack of maintenance. I drive it on ‘eco’ mode most of the time. It’s sluggish to help preserve battery, and I find it works fine for me. When I get into a spot where I could use more boost, I’ll turn eco mode off, and it’s got plenty of juice to do whatever I need. Better than my Honda, that’s for sure.

What I’ve found at this point is this: the leaf is more fun to drive than the Honda civic; quiet and smooth riding with a slight gamification to add ‘flavor’ to your commute. Plug it in when I get home and it’s good to go in the morning. The best part is the fact that I do not need a gas station. I’m not far from work so no chargers needed for me. It plugs in at night and fine in the morning. I paid less for this car than I did for my maxed-out Honda civic back in 2008. It has already won me over.

I did add an affectation to the car. Something to personalize it. I picked the original Lovecraftian Elder sign; small and unobtrusive. It’s on the back window. There so I can make sure if I park next to another one I will recognize it on sight. In a weird way, I needed this addition to my car. When I first got it, it felt completely foreign to me. It wasn’t until I put this on that it felt mine.

2016 Leaf…

I recently bought a used Nissan Leaf, 2016 SL. The place that sold it was a dealership, but not a Nissan one. When I saw it, it had 10 out of 12 bars on the battery. The site included free CarFax which indicated that the battery was given a maintenance notice of the battery firmware needing an update, but that never happened. The leaf was 3 years old now, so the 30kWh battery had 5 years left of its 100k battery warranty, with the leaf being at 36k miles.

I did end up purchasing the leaf from this dealership, which itself is a story for another day. When I was considering the purchased, I had figured that the battery would go one of two ways. One options was that after the firmware was updated, and the battery would be at 11 bars. The second option was the battery would be basically unchanged, and hopefully I get a free battery once it hit 8 bars, as long as I was in the warranty window.

It took two and a half hours to upgrade the firmware at a real Nissan dealership. Once done, the car was at 12 bars with 107 mile range. The tech said I must be happy, and that I was. It was a good gamble. I should point out that I paid a total of 15.5k for this leaf, including sales tax and license. I was pretty sure the leaf would be fine. But it was a gamble; one that paid off.

While I was waiting for the firmware upgrade, after hour two had passed, I started getting anxious and paced a bit in the waiting room. This room had a TV, bunch of comfortable chairs, as you would expect. But in the corner was an upscale office chair with a professional desk you’d also find in an office, with an older man behind it, late 60s if not 70s. We got to talking and I realized he was the owner. Probably spending his days here while the dealership made him money.

He asked if I was getting my oil changed. I explained, no, in fact I was upgrading the battery of the leaf. He was visibly confused… though I was talking about the lead-acid battery in most car. I assume he was more knowledgeable with Nissan’s inventory that used gas engines… the majority of Nissan products. But it was clear the leaf was not one he understood. After talking more, I mentioned that I probably wouldn’t buy a combustible engine again; at least if I could help it. He looked at me, paused, and said “Well, thank you for your business.”

I didn’t have the heart to tell him I bought the car elsewhere.

ErgoDox and me

I updated my keyboard at work to the ErgoDox EZ. Its the best keyboard I’ve had in a while… replacing my tried and ‘untrusted’ ErgoPro from Matias. The Matias keyboard worked nicely for me, but they kept flaking out… quality challenges where the keyboard would register multiple clicks all the time or just PCB burnout. And I’ve bought 3 of them over the years. Each one has some problem. So, I upgraded.

The ErgoDox is based on a popular open-source design… and the company I had build mine uses a great plastic for the keys, and standard Cherry MX Brown switches by default. (You can pick any you want.) The feel of the keys is awesome, and the ergonomic layout at first seems perfect. Also easy to customize and just plain fun to use.

However… I’m having trouble getting used to the layout. Not the layout of the alphanumeric keys. Rather the arrow keys, escape, command and enter. I happily moved the control key to where the caps lock was. But I’ve found that I’m so locked on where the arrow keys are its hard to keep the flow going when writing code. The curly braces {} so vital to me went to the bottom right. Also, there are now ‘slow’ keys. Hold down one key for a bit and it turns into another. In my case, the command key. That has to go… I need keys that have a distinct function. My typing is too fast for those keys.

Don’t get me wrong, I can move things as I see fit. And do intended to adjust more. But its a work in progress. I’ve been typing for over 35 years… and I feel like I’m back to learning fresh again.  I’ve gone through several layouts of my keyboard and a plan to do more. Its been 5 weeks… I’m giving it another five till I’m truly comfortable in this design.

Kubernetes Phase 1

I just uploaded to github a set of instructions and scripts that I’m using to install kubernetes on raspberry Pis. I’ve run into some weird funk due to the arm OS install on the arm64 processor, and that many containers assume amd64. But this is a start.

The next steps is simplify the install a bit more, and add in instructions to include heapster and kubernetes-dashboard that is compatible. I’m planning on updating to a kernel that is arm64 compatible so I can do more fun stuff.  (Mesos)

Easy-Bake Data Center

I cleaned up my office a few weeks ago. Collected the few raspberry pi’s that are unused. The odd switch; cheap, unmanaged, but efficient. Sure, I’m still in the process of making a game, but like most humans, I’m easily distracted. This distraction got to me when a saw the switch. And of course, when you see a switch, you think about deployment pipelines.

I work at Amazon, and the way we deploy software is fairly cool. When I write software at home, they way I deploy sucks. Its fine for me, but it ‘could be’ soooo much more. So a quick search on-line turned up the Netflix deployment pipeline they open-sourced called spinnaker. Spinnaker sounded like something I wanted to try. Which, of course, means I have to run it somewhere. And no, I’d rather not run it on my development desktop. Besides, having places to run little apps at home is nice, especially since I’d rather not have to keep my desktop on all the time. Raspberry pi’s are great for these types of things.

At $35 a pop, not including SD disk drives, they make perfectly fine compute nodes for a home environment. And there is an active community creating clusters of various sizes. So I looked at my switch and said screw it, lets build a data-center the same way Hasbro said lets build an oven. Here’s the initial play-list of goodness:

  • HypriotOS for the Linux installs. Raspberry pi meets Docker.
  • Kubernetes to manage the docker installs. Following instructions on this post.
  • NFS mounted file-system with one host using 1TB hard drives (For sharing/storing data like ab initio calcs I want to start running again.)
  • Spinnaker, which started all this for me.
  • And not a lot of money, considering

That last part is the interesting part. This is more of a learning exercise then anything else. For a few bucks, I get to build and play with an easy-bake oven version of a data center using modern techniques. I get a simple place to build my software, or run my old calculations 24×7, and the cluster is easily expandable if I so desire. No monthly costs beyond electricity once it’s setup. What’s not to love?

Google Home no longer using Google keep starting April 10

Google looks like its making a change in how it handles lists with Google Home. We use Google Keep a ton. Shared grocery lists are really great… and having you tell Home to add and item to the shared list is perfect. Well, was perfect. Starting April 10th, Google Home will instead add the item to a list in their Express shopping app.

Google Express has a list feature, but it’s not shared between people. It’s really intended only for your self to help with ordering online. This means that when my wife adds to the shopping list on Google Home, she can no longer view it later on her phone. Google Home is attached to my account so its only available to my shopping list on Express. And unlike now, she won’t be able to add to it when she’s away from home using google keep or any other app.

We have basically have three sets of lists that we use. Groceries, CostCo and ‘misc’. (Of course, I’m ignoring the holiday specific lists…) Shared lists is fundamental for us. This all makes Google Home slightly less useful to us. I’m still waiting for Wink integration like I have with Alexa. It is very disappointing.

Starting April 10th, I’ll only be using Google Home like an audio chromecast with speakers… for music or random questions. Most of my music is in my Google account, and I have chromecasts setup around my house. But I’ll end up switching to our Alexa for our and lists in addition to our podcasts and smarthome integration. I’d love to see Alexa support Google Keep, but I doubt that would happen. Any.do may be better for us though.

Crypto Library

I finally pushed my first version of paranoia crypto library. Its basically a wrapper around Bouncy Castle. It ‘expires’ keys so they don’t hang out in memory, forces AES-256, uses Scrypt for hashing, requires SecureRandom, and will include a proguard file to munge BC so it doesn’t get into classloader issues on Android. (Google mucked with BC… I’m doing this instead of using spongy castle)

This library avoids the 128 limitations provided by default JCE usage, so you are hereby warned to check your local laws for compliance. I’ll have to send out a post detailing why I had to make this library. If you want to use it, start with the SecuredParanoidManager and run from there. I’ll work on some better examples of how I intend it to be used.