Apple IPad Pro Smart Keyboard

So, after suffering a few years with a flaky iPad Air 2, my lovely wife convinced me that it was OK to treat myserlf last week, and I got myself a 9.7" iPad Pro with the Smart Keyboard.

To be honest, I've been super unhappy with Apple keyboards of late. They seem to think that everything should be a laptop keyboard - super - compact layout and a super squishy typing feel.

However, i my opinion Apple's superior mechanical designers are firing on all cylinders with the new iPad Pro Smart Keyboard.

The layout feels like a regular laptop keyboard. The keys aren't cramped at all like the ones on the old iPad Air 2 Keyboartd case I used to own, and the typing feel is surprisingly good for a device that folds into the caser and barely adds a quarter inch to the combined thickness of the device with the case closed.

It's also notably lighter than the old keyboard case, which added markedly to the overall weight of my iPad.

As I write this I'm 35,000 feet up in an airplane on my way to a Florida vacation to visit my in-laws and two of my best friends who recently moved there.

Typing on this keyboard is surprisingly comfortable. In fact I'll go out on a limb and say it's the most comfortable mobile keyboard I've ever used.

Unlike other iPad keyboards, the Smart Keyboard mates with the iPaad Pro through a mag connector where the case attaches to the iPad. This means that Bluetooth pairing isn't required which is a big win. Anyone who's used a Bluetooth keyboard will know that they can sometimes need to be repaired, usually at the least convenie moments.

There's also no external power source required - no battery to worry about having to charge or fiddle extra cables to have to haul around.

It's more expensive than the average Bluetooth keyboard, but from where I sit you get a lot of value for those extra dollars.

In short, this keyboard is precisely the kind of super elegant, ergonomic design with unusual attention to detail that made me an Apple hardware fan all those years ago.

So I got a new keyboard (WASD Code 104 Key)

Readers of this blog will know that I love mechanical keyboards. Traditionally I go for the super clicky Cherry MX Brown switches.

However, my next door neighbor at work very politely informed me that I was driving him stark raving bug house with the machine gun like sound of my typing.

So, after some heart felt recommendations from my coworkers I bought a WASD Code 104 Key Keyboard.

It's a nice compromise. I'll always prefer the superior tactile feedback of the Cherry MX Brown switches, but given that each key doesn't issue that satisfying (or annoying, depending on your perspective)  CLICK, typing on this keyboard is still extremely comfortable.

The keyboard offers some great features. One of my favorites is a set of DIP switches on the keyboard's underside that allow for hardware configuration of a number of important characteristics. For instance with the flip of a switch I turned on "Mac Mode" which put the Command/Apple key in the right place among other things.

I also find the white backlighting this keyboard offers to be very pleasing to the eye. If I'm honest with myself the cool green backlighting is one of the features of love about my Razor Black Widow Ultimate.

The only down sides I can cite for this keyboard are the lack of pass through connectors for USB and headphones. Both my DAS and Razer keyboards have these and they're very handy for things like hooking up your mouse.

Overall it's a great keyboard and I'm pleased that I can type comfortably without annoying the crap out of my coworkers :)

I Pushed the "Easy" Button :)

A couple of years back, frustrated by the challenges of running my own Wordpress site, I decided to give Pelican a try.

It's what is know as a "static blogging" tool. This means that you treat your blog just like any other code - you write your articles using a text editor, run a command and the article is produced in its final form ready for consumption by web browsers. Maybe run another command, and your article gets uploaded to wherever your blog is actually served.

There are lots of advantages to this model. For one thing, it's simple "static" HTML. That means that the only thing your site has to do is server that content. Unlike tools like Wordpress, which require a fair bit of supporting infrastructure like a database.

Another huge benefit is that you have the ultimate in control. You can modify the results to your heart's content, unconstrained by anyone else's idea of how it should look or work.

However, I'm not a web developer. I can create web pages, but they're ugly, and while I possess more than enough know how to run all of the needed infrastructure and keep it safely locked down, that's not how I choose to spend my very limited free time.

So, I've switched my blog back to Wordpress, but this time I'm letting someone else do the hard work of keeping my site happy and secure. There is this tendency in my industry to build everything we use just because we can.  There was a time I felt the same way, but not any more.

These days I'm married and have a social life. My burning enthusiasm for technology hasn't waned a single iota, but now I realize that there's more to living than technology.

Balance is a good thing, as is knowing what's actually important and where to spend your time and energy in the service of adding the most value.

Avdi Grimm, a technologist whose work I admire, wrote a great piece about the buy versus build dilemma recently. After substantial time and effort, he ended up using the same package I'm using to host this blog.

There are other aspects to my choice that feed into my personal situation. I don't have a lot of time to blog these days. I'm not complaining, I have a job I love, a Masonic lodge I'm proud to be a member of, and a marriage that leaves me happier and more fulfilled than I have been my entire life.

So when I post, it's in the "in between" times. I started this post on the subway on my phone, picked it up later on my iPad, and am now finishing it relaxing in our living room with my lovely wife on our Macbook Pro while she reads. Wordpress makes this a breeze. It has a super slick authoring interface that lets me compose right in the browser. It does grammar and spell checking by default, and automatically saves drafts so I don't have to worry about losing my work if my laptop dies or I have to stop for a real life intrusion.

This is not in any way an indictment of Pelican. As a matter of fact, Pelican was a real delight. From a software perspective, its code is clean, readable, and incredibly easy to bend to my own nefarious purposes. When I'd decided it was time to admit that it wasn't working for me, I decided I wanted to build a converter to mirror the posts from my old blog over here on wordpress.com. It was a great side project and I enjoyed building it quite a bit. In addition to the stellar code base, the Pelican community was incredibly helpful, answering all my questions and taking an interest in why their tool wasn't working for me.

Ultimately, my decision came down to recognizing the way I like to work, and where I wanted to put my effort. It's not about Pelican, it's about me.

I love you Pelican, but I'm struggling.

Happy 2017 all!

A little over two years ago, the Wordpress instance I had been "maintaining" to run my blog was hacked by a bunch
of script kiddies.
Not like I'm excusing them or anything, hacking someone's hobby domain feels rather like walking into someone's
yard and, if you'll forgive me for being crass for a moment, smashing the garden statues and relieving yourself
in the pool, just because you can. However, I was doing a really crappy job of securing my site.
I had set it up several years before on a Linode. I wasn't a "Devops" professional at that point, so I really
had no idea what I was doing, and I made every mistake in the book.2017
Static blogging was becoming all the rage, and my Podcast.init co-host was using
Pelican so that seemed like a good choice. It was very straight forward to set
up, and I could run it on a much simpler set of infrastructure. No database, no complex interactions between
web server and interpreter, just a simple instance running a webserver. That's all. Super easy to lock down.
Being the major nerd that I am, I did automate the whole thing using Chef. You can find the recipes
on my github. I even had it set up so that chef would handle updating
the site when I checked a new post into git.

And, from an infrastructure perspective, it runs like clockwork.

More recently, i was able to even eliminate the instance and just serve my blog from
But there's more to any system than the infrastructure that runs it. It has to be usable in a way that fits the
needs and workflow of its users.

Through no fault of its own, I am beginning to wonder if Pelican doesn't fit my needs.

It's a fantastic package for all the reasons I outlined above, but I'm just not posting like I used to. Why?

When I thought about it, I realized that I used to do a ton of blogging in the "in between times". On the go, on
vacation, or in bed at night while my wife read. Wordpress has some superlative tools for this. It has a really
nice web based authoring interface, complete with draft capabilities, rich markup, and the ability to effortlessly
integrate images and other media into my posts.
I've tried doing this with Pelican. either using Editorial - the incredie
programmable editor for IOS (You can write Python scripts to do text processing in IOS from your editor, how
cool is that? :) or using Panic's outstanding Prompt SSH client to connect to my
cloud based development box and do the editing and publishing from there.

And, it works. I have successfully done it. But I certainly wouldn't call it convenient.

So, I'm looking into other options. At this point, I'm wondering if I've learned all I can from running my own
blog, and if maybe I mightn't be better served moving to one of the hosted services like
I'm certainly open to other ideas though, I do enjoy the simplicity of static blogging, but making it harder than
it needs to be feels like shooting myself in the foot.

Does anyone have any thoughts or ideas? I'd love to hear from you if you do.

The Three Rs

No, I'm not talking about reading, writing, and 'rithmitic, I'm
talking about the three Rs that are critical in creating and keeping a
software organization strong.
The three Rs in this case are Rigor, Resources, and Raison
d'etre. Let's take a look at each of these in turn.

Resources

I begin with resources because when push comes to shove
this is one of the most important factors in making your team a
success.
Am I saying that you can't build an incredible team with nothing but
the sheer will to bring your idea to fruition? Hell no. I'm saying
that good will only goes so far. After a while you will need to pay
your people what they're worth, and be able to hire enough help that
individual contributors don't feel like they're being exploited and
suffering from burn out.
This is a mistake I'm seeing more and more companies make over time.
Modern development techniques are increasing our overall
productivity dramatically, but they are not a substitute for having
enough man power to do the job you need done in the time frame the
business demands.
You can't substitute creature comforts for this either. No amount of
free snacks, soda, coffee or snuggles will make an engineer who's
working night and day with no time to take care of themselves
happy. These things are nice add-one and can make employees feel
valued, but only when they're in addition to an environment that gets
the basics right.
There are other aspects to being properly resourced. Be sure you can
afford the equipment you need. If your business demands that you run a
data center, do it right! If you don't, you will increase the
frustration your employees have to deal with day to day to get their
jobs done, and that will seep into overall job satisfaction very
quickly.
There's more to say on this - good office work environments including
sit/stand desks, keyboard trays or whatever else your employees need
to be productive without harming themselves. Don't skimp on this
stuff, it's super important, and your employees will thank you for it.

Rigor

I wrestled with myself a bit as to whether this should come
first or second, but anyway, Here we go. We all know that having
rigorous processes as individual contributors and organizations is
important. It's what enables us to deliver quality software in a
timely fashion and bring value to our customers.
However a lot of people, including some very experienced engineers,
seem to think that how we get there is some kind of magical journey to
another dimension, only attainable by the assistance of some wizard or
ascetic.
But the cold, hard, in-sexy truth is that it's all about
discipline. Doing precisely the same set of things over and over again
until they become second nature, "baked in" whatever you want to call
it.
Let's take code reviews as an example. I can't even begin to tell you
the difference I've seen between strong organizations and weak ones,
and almost inevitably, how teams handle code review is the canary in
the coal mine.
I'm not suggesting that code reviews in and of themselves are some
kind of magical panacea that will make your organization great, but
chances are good that if you're doing regular code reviews with every
merge, you're also doing testing. If you're doing comprehensive
testing, you're probably also taking the time to write good
documentation. The list goes on and on.
Everybody knows these are good things, but why are so many
organizations slow to adopt them? Well, as usual with such things,
It's Complicated. One contributing factor is definitely team size
versus work load, as outlined in the section on Resources.
Individual contributors who are working straight out all the time
aren't going to take the time to do proper code reviews, and chances
are good that in such organizations, their managers won't be pushing
for them either. It's a kind of myopia that cripples teams and
actually hurts the business both short term and long. Some people are
beginning to see that, but it's something we should all be aware of
and actively promoting within our organizations wherever we are on the
discipline curve.

Raison d'etre

This is about vision. I know, we've all had that
word misused, abused, and generally beaten to death so much over the
course of our careers that most of us cringe when we hear it. However
no other word embodies what I'm trying to get at in quite the same
way.
In order to form a cohesive unit - something we all agree is critical
to success, we all have to know where we're going. What precisely are
we trying to build, and why? Where's the value for our customers, and
where do we see our product going in the future?
I've encountered many organizations where this isn't clear at all, and
when that happens, a sort of spiritual malaise sets in. It's like a
disease, spreading up through the ranks and sapping job satisfaction
and pride in workmanship.
Fixing things once your organization has gone this way is hard. I
mean, really hard, because regaining the trust of your team is not
something you can do over night. You'll need to overcome years of hard
earned scar tissue before people will be able to have the confidence
in you and your product that are necessary for success. There are no
clear cut prescriptions to make here, because each organization's path
to healing will depend on the nature and scale of the wounds.
Much easier to start on the right foot and stay that way. Doing so is
actually straight forward. The key is having a clear vision yourself,
and communicating that with your team.
I realize our business is a harm scarum one and that changes in
direction are not only inevitable but desirable to meet changing
conditions in the field, but how those changes are handled and the
frequency with which they occur can mean the difference between an
organization that thrives and a cadre of walking wounded, shambling
from one death march to the next until they take too much damage and
decide to ply their trade elsewhere.
Hiring and layoffs are another aspect of employee trust whose import
should not be underestimated. When you hire, hire for the long haul
or be crystal clear about what your expectations are "We're trying
this risky new thing and you're here to make that happen. If it
doesn't work out, we may need to go our separate ways." I can't
imagine anyone who wouldn't appreciate knowing that up front, and if
they have even a tiny amount of character and maturity, if that's the
way it plays out when the time comes, you can walk away friends. It's
a booming industry out there and there are no shortage of jobs.
If they must happen, layoffs should be handled quickly and
professionally. You need to be crystal clear with both the people
being laid off and the people left behind as to why this is happening
from the perspective of the business. The people who are left will be
nervous and unsettled, and they'll be able to recover much more
quickly if everything is handled in an above board way.
Again, don't lie. If you need to lay people off, and you have a
flexible schedule in your office, by all means do send out mail
saying "mandatory meeting at X time" to be sure everyone will be in
the office, but don't tell those being laid off that it's a meeting
about something else entirely. They will resent you for it.
Crystal clear, honest communication and clear vision will result in
enthusiastic employees who are excited at the prospect making their
company a raging success.

Bacon + Microwave = Jerky :)

If you'll indulge me for just a few moments I want to say a few words on a topic that's near and dear to my heart: Bacon!

I've encountered more than a few people who think that cooking bacon in the microwave is the way to go. Far be it from me to dictate anyone's tastes, but I've gotta say folks, if you rreally love bacon like I do, you should at least give cooking it in the oven a try.

Not that bacon cooked in a microwave isn't tasty. Far from it in fact, but what you wind up with is in fact something akin to bacon jerky. Bacon jerky can be a very tasty treat, but you haven't lived until you've tried Martha Stewart's super simple recipe for cooking bacon in the oven.

It comes out juicy yet crispy, with all the subtle flavor that make bacon an amazing taste treat.

To top of all off, cleanup is a breeze. No splatters mess on the stove.

[Editorial note: I seem to end up blogging a lot while flying. Maybe it's being trapped in a steel box for six hours. In any case, if all goes well this is the first one I've managed to post from the air as well. Yay living in the future!]

A few random thoughts on keyboards

I've recently been very underwhelmed with the keyboards Apple ships with their computers. They're trying to make them all feel like laptop keyboards, which is an idea I
rather disapprove of.
In particular the recent Apple Keyboard
has such shallow key travel it's very easy to fall into the bad habit of pounding the keys, and the overall layout feels squished
and constrained.
I've had a couple of the old school model A1408 "Apple Keyboard" (and its wireless cousin) in my drawer for years because I remember
liking them.
Thus far it's definitely a big improvement over the current squashed and squishy laptop like keyboard, but my gold standard for
keyboards is the Razer Black Widow Ultimate - I use one at work with my
Linux desktop PC and it feels glorious to type on. Beautiful mechanical keys with very distinct tactile feedback and a satisfying
(if perhaps somewhat loud for your officemates :) click.
The original Apple keyboard definitely has a better typing feel but lacks the tactile feedback of the Razor or other modern
mechanical keyboards making the typing feel still come off a bit squishy for my tastes.
I may end up investigating other modern mechanical keyboards to replace them - we'll see. One irritation I have with the Razor is
that they're platform specific. Is there REALLY any good reason for this other than to try to get me to shell out another $100 for
yet another keyboard? I rather resent that as other brands seem to cope just fine in both platforms.

UPDATE 02/22/2016

I ended up buying a Das mechanical keyboard for home, and thus far it's made me appreciate my Razer Black Widow even more.

It's not that anything is particularly bad at all about the Das, it's a perfectly fine mechanical keyboard, I just prefer the
more 'clicky' feel of the Razer, and really appreciate the niceties like the lit, labeled keys.
As it turns out, choosing the Das with no labels on the keys has turned into an enormous pain. I touch type fairly well, but
even still when I occasionally need to press some fairly arcane sequence of keys (Yes I DO need to hit Alt+F15 occasionally :))
the lack of labels really rains on my parade.
There's also the little tidbit that occasionally you might want your spouse or other friend who doesn't touch type be able to use
your keyboard and they simply won't be able to do it. At all.

So, unless you REALLY know you like it, don't do that :)