The 2018 iPad Pro

Sometimes even I get caught up in waves of pessimism, and the recent onslaught of negativity against smart phones, social media, and technology in general has been no exception. It was while I was mulling over the affect of technology on our society that I watched the most recent Apple event where they released an updated MacBook Air, Mac Mini, and a new line of iPad Pros. The Air and the Mini look great, although it’s too bad that they are more expensive than previous models. What really caught my attention though were the iPads.

I’m drawn to the iPad in a way that’s difficult to explain. It’s an embodiment of an optimistic view of the future of technology and society, where our computing devices silently and invisibly do their jobs in the background of our lives. Apple likes to use the term “magical” in their marketing copy, and while I don’t like the term used in the way they do, I think it does somewhat apply to the iPad1. A pane of glass the size of a sheet of paper that becomes whatever the app on it is. The rest of the device disappears behind the application, so that what you are holding is an email, a web browser, a game, a calendar… whatever you need it to be. Your gateway to knowledge, work, and entertainment looks less like this, and more like this.

The iPad is a device designed to fit into a natural way of living. What can be more fitting than sitting down with something you can hold in your hand and examining it? Or walking around with it and taking notes of the things you see? In many ways the Apple Watch is the best current example of invisible technology. It sits on my wrist and silently enhances my day, encouraging me to be more healthy, active, and to take time to be still and breath once in a while. I’ll have more to say about the watch at a later date, probably a one-year review. So far, I’ve worn it every day since I got it for Christmas last year.

Of course, humans being the ridiculous creatures that we are, we always find ways to screw things up. What good thing has humanity not decided to take too much of? I like the iPad, and the iPhone too, but what I don’t like are the applications that have been designed to prey on innate weaknesses in the human psyche. Like rats in a maze, we get hits of dopamine in our brains when we see someone “liked” something we’ve shared. Sites like Facebook, Twitter, Instagram, and Snapchat have been intentionally designed specifically to target those areas of the brain that are susceptible to addiction. This is bad, but it’s not the iPad or iPhone’s fault.

These devices are tools. Amazing, incredible, mind-boggling tools, but still tools. What’s important to remember is that the iPad becomes whatever app you are running at the time. So if you run Snapchat, that’s what the device is. On the other hand, if you run OmniFocus, the iPad becomes something else entirely. The problem is not in the technology; it is, of course, in us. Luckily, I think that’s the conclusion the rest of the world will come to eventually as well. Technology advances so much faster than social norms can keep up with, it takes us a while to realize what we are doing to ourselves. Like smoking, it’s my opinion that social media without limits, as we know it now, will be regulated to the fringes within a generation.

Finally, now that I’ve talked myself out of running away to the woods and living in a cave for the rest of my life, what about that new iPad Pro?

MacStories and Six Colors have good initial write-ups, but what caught my eye the most was the switch from a lightning port to USB-C. My ears pricked up when Apple highlighted during the keynote that you could use this port to hook straight up to an external monitor, which is one of the items on my list of what the iPad needs to be a working machine for most people. The external monitor support looks pretty limited however, leaving it up to the application for how they wish to deal with it. Par for the course so far, it seems the hardware for the iPad is miles ahead of the software.

But does it really matter in my concept of future work and how I’d like to work? I’m not sure it does anymore. If my dream of future technology is to be able to pick up my workspace and walk anywhere and be able to sit down and get right to work, perhaps the iPad is closer now than it ever has been in the past. I still need to be able to type, but I also need to read and take notes, participate in meetings, make network diagrams, and interact with the various web-based consoles I depend on for my work. Of course, I could do all that with a MacBook now, but a MacBook brings with it macOS and a long history of computing ideas that iOS eschews. Perhaps my list is not as important as I thought. Maybe the 2018 iPad Pro is the device I’ve been waiting for to make the technology necessary in my life disappear. I’m intrigued once again.

  1. I still extremely dislike the name “iPad”. “Slate” or “Canvas” would have been so much better. It’s too bad Apple married themselves to the “iSomething” moniker. ↩︎


The Typewriter Project

the desk

A phrase I’ve found myself repeating to friends and family from time to time recently is that “some things used to be better”. As a technologist, and an optimist, I’m normally very positive about the future, but lately I’ve come to think about the place some modern technology has in our lives as increasingly negative. I’m rethinking, yet again, our relationship with the many devices we’ve invited into our lives.

While I was pondering this topic and waiting for the mechanic to finish with my car I wandered into a second-hand store and found this beauty of a machine on sale for $5. Of course I brought it home. The typewriter is a Montgomery Ward Signature 440T, made in Nagoya, Japan in 19681. It appears to be in perfect working order, although it’s extremely dirty inside. My intention is to restore it as best I can, which for the moment I believe means taking it apart and cleaning it, then putting it back together. I’ll put a new ribbon on it, and from there I think it’ll be ready to type.

the desk

Perhaps I’ll send out a letter or two with it. Maybe address envelops. I don’t know that it’s really got a lot of practical use other than looking cool on my desk, but it’s a project, a hobby, and things done for fun don’t need to be practical.

The machine is entirely mechanical. No electricity, and it’s lasted fifty years so far. I imagine it could last another fifty if I take care of it. I don’t think I can say the same about my iPhone or the iMac I’m writing this on. Eventually the components in both devices will wear out. The battery will fail to take a charge, the screen will start to fade, the drives will start to give errors. Things break over time, and in our disposable culture the answer is to throw it away and buy another one. Meanwhile, the typewriter I bought for five bucks has lasted for fifty years.

It’s a single-purpose machine. Created back before attention was a sparse commodity. Before the Internet, before smartphones, before twitter or facebook. All gears and pulleys, levers and hammers. You have to think hard about what you are writing, and not make any mistakes while typing. If you do you have to pull the entire page out and start over again.

I’ve been thinking about what we’ve lost, and what we’ve gained over the years. It’s true that the Internet enables new business models, my own included, but are we really better off now? I’m not sure we can objectively say that the Internet has made the world a better place. Have smartphones made us happier? Research says we are now more alone and isolated than ever, with increasing rates of depression and negativity. Politically we are at each others throats, failing to see the world as it is and instead seeing it through the lens of partisanship. 24-hour news creates catastrophes where there were none, everything is an emergency.

In the middle of all this, we are struggling to find peace, happiness, acceptance, and love. The Amish reject any technology that they feel would pull them apart instead of bringing them closer together. I think they are on to something there. Of course, I have no intention of converting, but it does leave me wondering “where do we go from here?”

I’ve said for a while that I thought the best technology was nearly invisible, silently enhancing our lives in the background while we go about our day. Unfortunately, today’s technology has been developed to provide what people want, but too often ignores what they need. I wonder if what we need most is a cultural shift to view the negative aspects of technology as being as harmful to us as cigarettes and alcohol. Sure, the smoker loves to smoke, but it’s killing him. Looks like all of us love social media too, but it’s breaking us from the inside. There’s something about the psychology of being online that changes our behavior in ways that are completely aberrant.

The affects of computers and the internet on our society are compounding. My wife is a teacher, and the school started giving the kids computers years ago. Now she’s thinking about going back to books and paper just so she can get the kids to pay attention to the class and not be distracted by what the computer provides. What will happen to these kids in the next ten to fifteen years? Will they be able to concentrate on hard problems at all?

For thousands of years people lived pretty much the same from one generation to the next. Technology has always advanced, but never so fast as it has in the past one-hundred years. So much has changed at such an unprecedented pace. Our psyches and our bodies are not prepared for what the technology has given us.

It’s possible that I’m getting to a certain age where people tend to reminisce about how things were when they were young, but I don’t feel like I’m quite that old yet. It’s just a different world now. Is it the world we want it to be? I wonder. I look at my typewriter project and wonder.

  1. Serial Number L9373629, if you want to know. ↩︎


Less, But Better

I’m becoming increasingly interested in an emerging line of Eink devices that intentionally do less than other devices in the same category. Of course, the oldest and most widely known device is the Amazon Kindle, which my wife still claims as the best gift I ever gave her.

It’s thin, and about the width and height of a paperback book, but light enough to throw in her purse. The battery lasts for weeks and she devours books on it. It is a single-purpose device that excels at that purpose, even though there are other tablets that can do more, and are similar in size and price. They do more, but they don’t do the one thing she wants to do with the device quite as well.

The next logical step up from the kindle is reMarkable, “the paper tablet”. An Eink tablet dedicated to being an electronic notebook, and only an electronic notebook. The reMarkable comes with a special purpose stylus that lets you write and draw on the tablet, including marking up PDFs. There are no “apps” for the tablet, no internet access, just the tablet, the stylus, and your thoughts. If the price point for the tablet were not so high, I’d consider getting one myself, but at $600 it’s still a bit steep for me. But… maybe.

If I were to decide on getting a reMarkable, I’d most likely also back the Light Phone II.

This is a phone that intentionally only does a small handful of tasks. Phone calls, texts, a contacts list, and an alarm clock. The original Light Phone was meant to be paired with your smartphone, this one is intended to stand alone. It’s been a few years since I went without an iPhone, and I honestly have mixed feelings about the possibility of going back. But the Light Phone doesn’t feel like going backwards, it feels like the next step forward.

Moving forward, like this calendar concept from Kosho Tsuboi Design.

A beautifully conceptualized calendar intended to hang on the wall of your home. Unfortunately, we can’t go out and buy this calendar just yet. I believe we are still waiting on the technology to advance sufficiently for it to be a reasonable purchase. But, the concept behind it is in a similar vein to the previous three items. A dedicated device that does one thing, does it very well, is low power, low maintenance, and just blends into the background of your life. It becomes the invisible computing goal I’ve been pursuing for the past fifteen years.

For the longest time I thought Apple was going to be the one to deliver on invisible computing, and I still think they’ve got a foot in the door. However, I can’t help but think how much better an Apple Watch might be if it had an Eink display and was dedicated solely to fitness tracking and telling me the time. What would a MacBook with an Eink display and an arm processor look like? A dedicated writing machine with a battery that lasted for weeks? If nothing else it’s an interesting thought experiment.

Dieter Rams applied the phrase “less but better” to his approach to design, I apply it to what I want out of life. Less busyness, less junk, less drama, better relationships, better activities, better adventures. In the same way that I want to own less things, but better things, I want the devices I own to do less, but to do it better than their multifunction counterparts. Most of all, I want the devices we own to respect the humanity in our lives, not exploit our psychology for corporate greed. There’s truth in what these projects are doing, but will it be enough to be successful?


Taking Notes

I loved Yojimbo for many years. I still think it’s the most “Mac-like” app for taking notes and storing data. The best thing about it was that when capturing data with the hotkey, it would look at your clipboard before presenting you with a UI, and customize the UI for the data. It was fast, fit in perfectly with the Mac, and was rock-solid reliable.

But, time passed, things changed, the iPhone changed computing forever, and Yojimbo just didn’t keep up. it didn’t adopt a widescreen view, it didn’t offer iCloud sync, it didn’t have an iPhone app, it didn’t adopt the new UI widgets for the toolbar, it didn’t adopt Markdown, etc…. It still works, but it feels old and stagnate.

I’ve talked to the devs a few times, and they always give the same feedback. No future plans for an iPhone app. No plans to change anything, just to keep it running as is. So, I too started looking elsewhere.

DEVONthink

Great app, really, but holy cow is it deep and complicated. It can do so much, whenever I spend a significant amount of time using it I start to feel overwhelmed and start questioning how much I really need a single app to do everything when there are individual apps that do things better. Like the text editor, and the PDF markup. Hazel can automatically file things for you, although not based on AI, but it does a good job.

The ability to capture text and web archives is good. And if you really need deep textual analysis of your data, this is the way to go. If not, there are other alternatives.

Evernote

Did you know Evernote use to be an app that was just one long page? That might have been an early beta or something, I don’t know. Anyway, again, for capturing text and web content, it does a great job, but it’s not really Mac-like, and it’s still a bit of a roach motel for data. Also, I’ve run into weird limits on things when I really start digging in. For me, I’d rather my data stayed on my Mac in a format that I can move around. Except…

Bear

My current favorite for managing text, some images, and some captured web content. It doesn’t save web archives, but the Safari plugin will grab the text of the page you are looking at and try to extract the text to Markdown. It does a fair job. Great for storing bits of code and random pieces of information that I know I’ll need later.

Apple Notes

Rich text formatting leaves something to be desired, but syncing is solid and Notes does a good job of being a reliable place to put data. If Apple merged the best of Notes and Bear we’d have a winner. That stupid textured background always annoys me though.

Eagle Filer

A lot like Yojimbo, but it gets updated far more often and keeps data in an open format. Unfortunately it also suffers from the same drawbacks in sync and iOS companion apps. And it also looks dated to my eyes :man_shrugging:t2:.

Everything Else

Let’s not forget crowd favorite Simplenote + NVAlt, which I suppose is still a thing but I’m not sure Brett is ever going to release that updated NVAlt replacement. Then there’s Microsoft’s OneNote, which Circus Ponies blames for killing their Notebook app. If you’re into Microsoft, I guess that’s another way to go. There’s Keep It Together, which I think was renamed just “Together”, and I think abandoned. There’s StickyBrain, which became SOHO Notes, which is now Notelife… I guess? Oh, and let’s not forget the new hotness of Agenda, which combines Notes and a Calendar.

The Finder

Overwhelmed? Me too. That’s why I just went back to the Finder. I feel your pain, I really do. I’ve tried every application, method, and system out there to manage my data, and I still don’t have a perfect system. If Yojimbo was modernized and an iPhone app created, I think I’d have it, but as it is, Bare Bones just doesn’t have the motivation to work on it.


Simple File Encryption for macOS

For years now I’ve wanted a simple way to encrypt or decrypt a file in macOS, so this morning I built it. This takes five to ten minutes to setup, and provides the encryption service as a right-click menu item and a pair of folders with folder actions enabled. Here’s what I did.

First, I installed the command line utility ccrypt with Homebrew: brew install ccrypt.

Next, I added a hidden config file containing my secret key in ~/.ccrypt and saved the key to 1Password.

Then, I created two new services in Automator with a single action of “Run Shell Script. The services accept files or folders in Finder, and have the “Pass input: “ setting of the Run Shell Script action set to “as arguments”. The Encrypt File service looks like this:

EXTEN="cpt"for FILENAME in "$@"do if test "${FILENAME#*$EXTEN}" != "$FILENAME" then        echo "Already encrypted."    else     /usr/local/bin/ccencrypt -k ~/.ccrypt $FILENAME fidone

And the Decrypt File service is only slightly different:

EXTEN="cpt"for FILENAME in "$@"do    if test "${FILENAME#*$EXTEN}" != "$FILENAME" then     /usr/local/bin/ccdecrypt -k ~/.ccrypt $FILENAME else        echo "Already decrypted."    fidone

The first line in the script sets the EXTEN variable to “cpt”, which is what the ccrypt executable adds as a file extension when it encrypts a file. Next I setup a for loop to cycle through all of the selected files, and then do a test to see if the file being looked at already has the “cpt” extension or not. This is especially important when setting up a folder action, because when the file is encrypted it will drop in as a new file in the folder, which will then attempt to encrypt it again unless this check is preset.

After saving these two Automator services you should be able to right click on any file in the Finder and encrypt it, and then the same again to decrypt. I’ve also added the two scripts as folder actions to two folders name “Encrypted” and “Decrypted”, so if I’d rather move and encrypt the files, I can just drag and drop them on the folders.

All in all, this gives me a little more peace of mind about saving files in iCloud and syncing them between my two Macs. They won’t be available in iOS, but for the types of files I need on both machines, that’s not a problem.


Day One, Ulysses, and Bear

I’ve been using, and subscribing to, Ulysses, Bear, and Day One for a while now. It seems a bit silly, especially since they all do basically the same thing. On the surface they are all writing apps, but once I start to think a little deeper about them I can see where the differences lay.

Ulysses

Ulysses is for writing, the act of thinking through ideas and putting them on a page. That’s what it’s designed for, and that’s what it’s best at. That’s why the first draft of my book is in here. In long-form writing and exporting text into multiple formats, Ulysses excels. Even the little features, like daily writing goals, are geared towards helping you be the best writer you can be.

Bear

Bear can do most of the things that Ulysses can do, but less elegantly. Bear can store long-form text, but that’s not what it’s designed for, it’s designed to be the notebook you keep in your back pocket. It’s a note-taking app. A storage space for bits of code, a Zettelkasten for keeping bits of information that I might need some day. There’s quite a bit of overlap between Ulysses and Bear, but the features slightly lean one way or the other, for taking notes in Bear, and writing projects in Ulysses.

Day One

This is my journal. Day One is a diary app, a place to record and reflect on where you’ve been and what you’ve done throughout the day. It’s my running journal, a record of films I’ve watched and what I thought of them. It’s my ongoing record of my life… travels and all. It’s also, recently, where I’ve started storing my daily work journal.

What I’d Lose

I suppose the reason I’m using Ulysses less is because I’m not doing quite as much long-form writing. If I got back to blogging regularly, and if I made an effort to work on my book, I’d have more time spent in this app. But, it seems like I need Bear far more often for my day job, and even this text I’m writing now is going to end up in Day One, or maybe on my blog.

If I moved my journaling into this app, I’d lose the end-to-end encryption and location recording that Day One does. Day One makes a note of the weather, the date and time, and address where you recorded the entry. I’d lose all that in moving to Ulysses.

If I moved my note-taking into Ulysses, I feel like I might lose some of the mental separation between my writing and my notes. I’d also lose Bear’s code blocks and syntax highlighting, which I use all the time. I’ve got a lot of little code snippets and command line scripts saved in Bear, and Ulysses just doesn’t capture code blocks the same way.

So, in the end, I’m sticking with the three writing apps. Their role is well-defined, they fit in my workflow, and they’ve earned my trust. I suppose that’s all I can ask for.


It’s Not About the Apps

David and Katie are great, they really are. I’ve enjoyed MPU, like most of you have, for years. I’ve bought the books, the scanners, implemented the workflows, heck, my paperless workflow is still a derivative of David’s book. Most of all though, I’ve bought the apps. Lots of apps, and there’s a couple things to say about that.

For one, I like being part of the Mac community, always have, and I like supporting independent developers. Secondly, many times indie devs have more incentive to make their apps the best they can possibly be, and I’ve often found that the smaller, and older, the team, the higher quality the app. For example, BBEdit, MarsEdit, Keyboard Maestro, Acorn, etc…

However, there’s another aspect to this discussion. You don’t buy your way into becoming a power user. You become a power user by understanding your Mac and knowing when and where buying an app makes sense in your personal workflow. I’d argue that if you’re not writing code, BBEdit is probably not for you. If you don’t already know that having a text expansion tool will save you hours of work every year, than it probably doesn’t fit into your workflow and doesn’t make sense to buy it.

Having a ton of system modification apps running doesn’t make you a power user, but knowing which ones to run and why does. There are things macOS doesn’t do that you might find useful in a third party app, but understanding the what, why, and how is the key.

And finally, and most importantly, have fun! In the end that’s what this is all about. Get your work done, do it efficiently, and have a good time doing it.


A Fresh Coat of Paint

I spent some time remodeling the old digs here, adding a fresh coat of paint in the form of a new theme, new hosting, and a shiny new SSL lock.

The new paint comes in the form of the Swiss Jekyll Theme, which I just thought looked like fun while keeping the site readable. The only configuration I did was to switch the theme color to orange, just to brighten things up a bit. And I like orange. I decided a while back that designing my own theme comes at the price of me not writing as much, because I tend to spend too much time tweaking the theme. Now, I search around and browse through twenty or thirty themes till I find a few that I like, then I download each of them and drop my content in them, run the site locally and see how my posts look. Most of the time I just go with my gut… do I feel happy when I look at the site? If not, I move on. For now, I’m happy with how this looks.

I was inspired by Jack Baty’s post on moving to Amazon to migrate my own blog over to S3 and CloudFront. I love that the SSL comes along for the ride. Although I don’t need it for anything here, at least Chrome users won’t be subject to a warning when visiting my site. I remember advocating for doing this back in 2002 in a paper I wrote for college, encrypt everything.

Apart from that, the site is still my outlet for talking about technology, design, and culture. It’s a place for me to own my words, and hopefully say something useful. Maybe, someday years from now, my kids or my grandkids will find this and have some idea of who I was, and what I stood for.


The Mediacom SSH Issue

Sometimes it’s a miracle the Internet works at all. For the past week or so I’ve been unable to clone, pull from, or push to private Git repositories from either Bitbucket or Github using the normal git clone git@bitbucket.org:whatever/whatevs.git syntax. The problem had the symptoms of a blocked port or a bad network route; I’d issue the command in Terminal and wait, and wait, and wait, and the command would eventually timeout. After a quick look at the Github documentation I tried ssh -T git@github.com which also timed out and confirmed my suspicions. The ssh protocol was not getting through, but VPN and normal web traffic was.

My first thought was that the issue was probably related to my new Mediacom modem. For my wife’s sake, we recently went back to cable, and when the installer came out to the house he replaced my modem with a newer, fancier one. I don’t think I needed the upgrade, although my speed has been bumped up a bit since the new one was put in, so whatever. Along with the new modem the installer was insisting on setting up “home networking”, which is Mediacom’s way of charging you to use their crappy wireless built into the modem. I explained to the installer that not only do I not need his assistance setting up my network, but that I also have invested in a very nice Eero mesh networking setup that was far better than anything Mediacom could give me.

This resulted in a few phone calls between the installer and his supervisor. The installer informed me that he couldn’t turn off home networking or I’d be charged an additional $40 per month. That seemed ridiculous to me, but again, whatever, I asked the installer to just make sure my wireless worked the way it did before he came out. He obliged, my speed was good, and he finished setting up cable and left.

It wasn’t for a day or two that I noticed the ssh problem. It was easy enough to verify that the issue was isolated to my home network using the Instant Hotspot ability of my iPhone. I verified that ssh to my repositories still worked over cellular, and decided to get in touch with Mediacom. But, knowing what I know of them, I figured I’d better cover all my bases and also get in touch with Eero.

I thought I might need to talk to them because I have “Advanced Security” turned on in Eero Plus. This, among other things, checks outbound traffic for known malicious destinations and blocks it. I wondered if it might mistakenly be blocking my SSH traffic, but after contacting Eero support on Twitter they verified that was not the case. They did however point to what proved to be the problem. Eero advised me to contact Mediacom and make sure that the modem was in bridge mode and that we were not in a double-NAT setup. After checking my Eero’s networking settings I saw that it had a private IP address and knew that had to be the case.

Then I waited a week to get in touch with Mediacom because I figured explaining all this to tech support would be a nightmare.

Turns out, it wasn’t so bad. The first person I talked to had no idea what was going on and sent me over to “Tier 2”. Tier 2 helpfully explained that they do not offer ssh service, which I was fine with because I didn’t want to ssh to Mediacom. Then my call was disconnected while I was on hold, so I called back. The third person I talked to understood exactly what I needed. He was able to turn off the wireless networking on my modem, switch it over to be just a basic modem, reboot it, and just like that outbound ssh worked again. The first two support representatives met my expectations, the third exceeded them. I should probably have higher expectations for Mediacom, but here we are.

I’m glad to have everything working again. Not being able to clone repositories using the standard git+ssh protocol was really cramping my style. Hopefully I won’t have to change anything about this setup I’ve got now for a few more years. I suppose the next thing I look into will probably be ipv6.


Dropbox and AWS

Dropbox apparently saved a boatload of money by moving their infrastructure off of AWS and building out their own data centers. Taken at face value this might seem like a strike against AWS, but the way I see it this was the only way Dropbox was going to be able to differentiate themselves as a service. Their job is to provide cloud storage, something AWS can do easily, but if that’s the only thing you are getting from AWS, it’s going to cost an arm and a leg. This news once again got me thinking about the industry as a whole, my place in it, and how I think about cloud services.

If you’ve been in the technology industry for a while it’s easy to think about cloud services like AWS as just another data center. A place where you can spin up a new virtual machine and manage your server instance just like you would if you were racking hardware or using VMWare. AWS will happily let you do that, but you’ll be missing out on the advantages that thinking about the cloud as a development platform offers.

The biggest innovation from AWS is that you only ever pay for what you use. Compare this with managing a data center, where you have to purchase enough hardware to handle peak utilization for the next several years, and then watch as your investment sits mostly underutilized for most of the time. You also have to make an educated guess about expansion for the next few years. Did you buy enough storage? How about memory? Will you need to purchase more in the future? How much of an interruption will that be if you do? Cloud services take care of all of that by only providing what’s needed when you need it, as long as you take advantage of what the platform offers. 

Over the years I’ve noticed a trend towards more simplification in the systems that I build and design. In general, the fewer moving parts in a system the better. It will be more reliable, and easier to troubleshoot when something does go wrong. Unfortunately, I’ve also watched as the industry went in the opposite direction, building card houses out of frameworks and management systems barely out of their infancy. It may be that I’m jaded by my experience, or it may be that I’m just a grumpy old man, but whenever I hear about someone building out a Kubernates infrastructure to run their Docker containers in the cloud I get the suspicion that someone along the way got a case of the clevers1. Is that necessary? Is it really?

I should specify that the fewer moving parts in my part of the systems I build the better. Amazon, Google, and Microsoft undoubtedly have several layers of gears running their underlying systems, but the trick here is that they use those same layers for thousands of customers running millions of workloads. For example, my favored system uses very small instances in an autoscaling group to automatically add and remove capacity as needed to reflect the ebb and flow of normal business traffic. If sales sends out a big promotional email, the system will recognize the increase in traffic and spin up enough instances behind the load balancer to be able to handle it. When traffic dies back down, the system terminates the additional instances. All transparently behind the scenes. The configuration for the build is simple enough, and the documentation for what each component does is straight-forward. What’s more, Amazon themselves use the same systems to build out higher level services.

Growing your instance size or changing it’s type is also a simple matter. If the base size is too small or too big, a simple adjustment to the CloudFormation template will automatically create a new instance, deploy the latest revision to the application to it, and shut down the old one. Building on the massive scale of AWS, it’s virtually guaranteed that you’ll never run out of resources. Also, unlike hardware in a data center, Amazon’s instances tend to get both faster and less expensive with each new release. Simply upgrading your instance type can save time and money.

For a lot of business out there that aren’t Dropbox, AWS can provide you a path to simplification of your infrastructure where you can build up secure, scaleable, and cost effective environment. If this sounds appealing, but you need someone to handle the complexity for you, get in touch, maybe we should talk.

  1. Much respect, Mr. Poush. 👊 ↩︎


A New macOS

I’ve heard several people on podcasts or blog posts claim that they’d like to see Apple hold off on new features that nobody wants and just fix the existing bugs in the Mac. This claim is normally followed up with a missive that they can’t imagine what Apple could add to the Mac at this point anyway, since macOS is a stable, mature operating system. Well, I can think of a few things.

Let’s start with the Mac’s management of information. There is, supposedly, artificial intelligence baked into the Mac in the form of Siri, an AI assistant that is supposed to be able to answer questions and perform basic tasks. Basic, as in “far too basic”. I’ve yet to find a way that the AI actually helps me get anything done. Siri has hooks into all of the built-in apps that manage my information: Notes, Contacts, Reminders, Calendar, Mail, Spotlight, and the file system, but doesn’t help me find relevant information unless I specifically ask her for it. What if Siri could suggest additionally relevant information with a simple swipe of the trackpad? The “Today” view in the Mac’s right-hand sidebar would be a perfect place to show relevant files, folders, emails, contacts, notes, or tasks based on textual analysis and AI.

If you have an email selected in Mail, you could swipe over from the right and see a list of other information related to that email. Likewise if you select an event in Calendar, or a Note, etc… Eagle-eyed readers will most likely note the similarities between my suggestion and the fantastic DEVONthink. That’s no accident. I’ve felt for a long time that the AI at the core of DEVONthink would be spectacular if built into macOS. In DEVONthink, selecting a file and clicking on their little top hat icon will show you a list of related documents and suggest an appropriate group, or folder, for the document. I’d like to see the Mac sherlock that bit of functionality and expand it to the entire system.

Speaking of things that should be system-wide, how about tags? I suggest the next version of macOS come with the ability to tag everything. Let’s put tags in notes, todos, calendar events, contacts… the entire suite of productivity apps built into the Mac. The whole shebang, as they say. And, to be clear, let’s make sure they are the same tags, not siloed tags unique per application. That wouldn’t be nearly as useful in the big macOS data soup.

Next, you know how Apple bought the iOS app “Workflow”? How about we stop messing around and ship Hazel as a built-in part of the Mac. It already fits right in, running invisibly in the background and acting on rules set in the preference pane. Of course, if Apple bought it we could put rules for everything in Hazel. We could have Hazel triggering rules not just for files and folders, but for Mail, Calendar, Reminders… are you getting it?

Finally, let’s build in real security into every part of the Mac. I suggest private key encryption for everything before it is sync’d off of the machine. Transmitting files over SSL is fine. Storing files on the server on an encrypted disk is also fine. However, the files themselves are not encrypted, which means (as I understand it) that if the iCloud server is running the files are available. The encryption on the server just means that if someone tried to run off with the hard drive they couldn’t get into it. That’s why you can get to them from the web. Your login to icloud.com does not unencrypt the files, it simply allows you access to them. End-to-end private key encryption would be the next step that Apple could take to ensure that their customer’s information is safe and secure, even when transmitted across the Internet.

The purpose of a computer is to be a bicycle for the mind, a way to not only manage information, but help you make better decisions, cook better meals, make better deals, build better software, write better papers. Whatever you do, a computer should seamlessly help you do it better, and get out of your way to let you do it.

If the Mac is the pickup truck, or SUV, of the computing world, and the heaviness of macOS is what lets iOS stay light, then my suggestion is to lean into that philosophy and make the Mac the absolute best tool for managing information. A professional grade tool for professional daily use. And, obviously, since this is us, do it with style.


The Future of DevOps is AI

The work of systems administration, that is, racking new hardware, running cables, and loading operating systems, is quickly becoming eclipsed by devops. Servers come from the factory ready to rack, and the base operating system has become nearly meaningless in the context of running applications thanks to Docker. All you need is a baseline Linux install, the specifics of what each application needs to run are taken care of inside the Docker container.

If you are running your workloads in the cloud1, the need for a dedicated sysadmin is even more redundant2, since both the hardware and the base operating system are outsourced to AWS, Microsoft, or Google. However, bridging the gap between deploying applications to production and writing the application code sits devops, which for the past several years has been a fantastic opportunity for sysadmins to branch out into new and interesting ways. That opportunity is not going to last forever though. The core tasks of a devops engineer are repeatable, and the current complexity that devops now handles is moving more and more towards simplification.

In devops, there is a starting point, a set of tasks, and a specific end goal to achieve. Primarily, a devops engineer will take code from a repository and build out the systems to test and deploy that code to production in a secure, scaleable environment. That’s what I do anyway. History tells us that any repeatable, programmable task will be automated by a machine sooner or later, and I think we are starting to see what those new machines will look like.

Jason Kottke posted a link to Chess.com earlier today about how Google’s AlphaZero AI became the best chess player in history in four hours. It wasn’t loaded with a chess program, the AI taught itself how to play, and became unbeatable. Putting Skynet theories temporarily aside, how big of a step is it from there to automating devops? An AI could be trained on Github, given AWS or GAE as a deployment ground, and given an end goal of each application up and running.

Programmer friends who I floated this idea to in the past had mixed replies. Some claimed that the AI necessary to do this would be beyond anything currently in our capabilities. Others said that it might be possible. I think the writing on the wall is clear. It is possible, and I imagine it’s only a matter of time before the big three cloud providers each deploy their own version of automatic code deployment. It won’t look like much from outside, the only configuration they’ll need is access to your repository, and the AI will build up everything else necessary.

The models exist, the artificial intelligence exists, and the need for the service exists. DevOps is a career path with an expiration date. If that date is 10, 20, or 30 years down the road, I can’t tell, but it’s closer than any of us working in the industry would care to consider.

  1. Which you really should be. ↩︎

  2. Well, that is if you are running your applications in the cloud the way the cloud was meant to be used. ↩︎


What's a Computer?

I’ve been enjoying watching the new iPad commercial of a kid and her iPad roaming around the city. Two things come to mind. First, is this what it’s like for kids in the city? Having never lived in one myself I find it fascinating that she just roams around, takes the bus, hangs out in an alley, whatever. Second, and more important, is what she’s doing with that iPad.

An error occurred.

Unable to execute JavaScript.

The first time we see her with the iPad she’s chatting with a friend over FaceTime, snaps a screenshot, and draws on it. She shows the screenshot to her friend, then sends a copy of it over Messages. Next she’s in an alley with a bunch of furniture, sitting in a seat and twisted to her left to type on the iPad keyboard. She notices a praying mantis on a leaf next to her and quickly snaps a photo, dropping that picture into what looks like a Pages document about bugs in the city. We see her typing in a bakery, drawing in a tree, and reading a comic on the bus. Finally, she’s laying in the grass in her backyard typing again, and when her neighbor asks her what she’s doing on her computer, she replies “what’s a computer?”

We’ll put to the side the ridiculousness of that question, as we the viewer are supposed to assume that the next generation is going to grow up using the tablet form factor and will have no idea what a classic desktop computer is. It’s a stretch, but ok. The commercial calls back to a previous iPad video that shows people working in different ways in different occupations using an iPad Pro. In the previous video they use the camera to capture and analyze athletic performance, they type and draw, share building schematics, and use the iPad in place of printed technical manuals. Both commercials point to the type of lifestyle and work-style that Apple believes the iPad is best suited for.

In no video does it show a developer sitting at his desk for eight hours a day starting at the screen and trying his level best to edit code, ssh into servers, and manage his git repositories. All things that are technically possible on an iPad Pro, but not better than they are on a Mac. A few months ago I bought an iPad Pro, Smart Keyboard, and Pencil and attempted to work only using it. The experience was very similar to using a laptop. The screen was small, and I wound up hunched over my desk for several hours a day struggling through tasks that were second nature on the Mac. Before my two-weeks were up, I wound up returning the iPad and getting my money back. I bought a 27” iMac instead, and it’s been fantastic.

However, the experience made me think about what kind of work I do and how I don’t want to get stuck in the past while the world moves on around me. There’s a thin line between waiting for the technology to mature to the point where you can use it without stress, and growing stagnant. There is a fairly good chance that many new developers in the next ten years might not have worked on anything but an iPad, depending on if they got one issued to them in school or not. I want to be able to move to the new technology when it’s ready for me, but judging when it’s ready might not be something I can do objectively, but I think we can lay some ground rules.

The iPad needs to be able to connect to an external monitor and trackpad.

Yes, I can hear the “but it’s a touch interface” objections from here. To answer that I’d like to point at the current iOS feature to 3D press on the keyboard to move the cursor in a text field. Like Jason Snell has argued, they’ve already given us a mouse-like interface, why not take it all the way? It’s probably healthier to move around all day like the kid in the video, but there are a whole lot of us who have a desk they sit at every day, and the iPad is simply poorly ergonomically designed for long periods of work.

The iPad needs to be able to run a full suite of Unix tools.

So much of my development work happens in Terminal.app. For example, in one of our applications we need to run a Django app that uses a ssh tunnel to a MySQL server, and then be able to load the Django site by browsing to localhost on a particular port. One could argue that if that’s the kind of work you are doing, you should just use a Mac. I’d argue that loosening of the iPad restrictions just a bit would open the device up to an entirely new class of user. They don’t need to give full access to the Unix underpinnings of iOS to provide a Unix development environment, they could chroot the user in a sandbox. It’s technically possible, but not currently possible.

The iPad needs a local and remote backup solution.

I worry about my data. Too much, obviously. My Mac runs the classic 3-2-1 backup system (three copies of your data, two local, one remote). iCloud backup could work, but a local Time Machine would be even better. Being able to restore just one file to what it was an hour ago is, at times, priceless. I’d say we are probably closest to having this, depending on the app you are using, but a system-wide, effortless, file-level backup and recovery system would be fantastic.1

I may be able to switch to an iPad before all these three things happen, but it would be so cumbersome and difficult that my work would suffer as a result.

What I don’t want to do is jump on the “it’s not a real computer” bandwagon. That’s the same argument that was used against Macs for years, back when my Mac was the only one in the company outside of design. The Mac was derided for years as an expensive toy by IT departments and PC enthusiasts. They were wrong then, and those saying it’s impossible to get any real work done on an iPad now are wrong. What I’m saying is that for now, it’s impractical for me to use an iPad for every day work, but I don’t think it’ll stay that way forever. For now, there simply is no alternative to the command line to do what I do. In the future, that might not be the case.

I’ve found it interesting to look at how work was done before computers became commonplace. Writers used typewriters, which served as the models for how computers first evolved, but I think the more interesting occupation to look at is that of an architect working at a drafting table or a drawing board. They might have done some sketching or taken down some ideas in a notebook, but the real work happened with an expansive canvas in an environment that was conducive to long periods of uninterrupted work.

The iPad Pro right now is a professional notebook. I’m waiting for it to be a drafting table, something similar to the Microsoft Surface Studio, but without the suck.

  1. I know, the iPad isn’t supposed to worry about “files”, but then again it does have a Files app now, so I’d say that argument also went out the window. ↩︎


Veterans Day

I gave a talk at our school Veterans Day assembly today. I didn’t get everything I wanted to say in, but it seemed to go over well.

So, I thought an awful lot about what I wanted to say to you today. What message I could bring that would be of use to middle schoolers, and I want to talk to you about why you might want to consider joining the Navy after high school. Now, I’m not a recruiter, I’m not here to sell you some schickt or a bunch of meaningless jargon. I want to tell you what the Navy did for me, and what it could do for you too.

I joined the Navy when I was 18 in 1995, which probably seems like absolute ages ago to all of you, but it seem like yesterday to me. I was a rambunctious kid, bit of a troublemaker, you might say. And for me, at the time, college was simply not in the cards. I knew I needed to do something with my life, but I didn’t know what it was. I wanted to travel, and my dad was in the Navy when he was young and he went all over the world, so it sounded like a good idea for me too.

So, I signed up and shipped off to boot camp in Great Lakes, IL in October, graduated in December. After boot camp, I went to engineering common core, then I shipped off to San Diego for “A” school where I learned to be a machinist.

After San Diego I was assigned to the USS Platte, an oiler. We were a floating Caseys, a gas station for all the other Navy ships in the sea. We would pull along side another ship, the gunners mates would fire lines across to them, they’d pull the lines tight, and we’d run big hoses over to the other ship.

Then we’d just steam across the Atlantic pumping millions of gallons of gas over to the other ship. That was our job.

I went on two Mediterranean deployments during the three years I lived on the ship for six months each. During the deployments I visited Portugal, Spain, Gibraltar, France, Italy (spent a lot of time in Italy), Greece, and even went to Israel once. Back stateside we went to the Bahamas and the Virgin Islands once, and north to Nova Scotia once too. That was a blast, you can ask Mrs. Buys about that, she was there for that one!

Back then, and remember this was in the ‘90s, it was peace time, and we were an oilier, so keep that in mind, but we’d go from port to port, spending a week or two underway before pulling into port in another country for a few days. We’d get maybe a day to go explore wherever we were, sometimes go on an MWR trip or something. But, it was a blast, but it was also a lot of hard work. When you’re underway, there’s nothing better to do than to learn everything you can about the ship. And play cards. We played a lot of cards.

I got to travel, I learned that I loved the ocean, I was a firefighter on the ship, and I worked hard and became a radioman. It was an experience I’ll never forget.

After the ship I was transferred to a small joint-services command in rural England, six hours West of London in Cornwall called JMF St. Mawgan. This was a shore command that counted as sea duty for ship-shore rotation because it was so remote, but it was amazing. The Navy shipped our family over, and our Jeep, and we rented a farmhouse right outside a tiny little village. What we did there was… classified, and I was never sure if it was ever unclassified, so, we’ll just move on. I was a radioman and handled communications. The facility itself was underground in a building built to withstand a nuclear bomb. There were armed British guards at a big turnstile, then a long concrete tunnel, then you’d turn and it was another long concrete tunnel, then you’d come to a massive red 50 ton door, then a decontamination station, and then you would be in what was basically an office building.

We loved rural England so much we stayed an extra year. I spent four years there total, and it was another fantastic experience I’ll never forget. I was in England on 9/11. When everything changed. That’s a story for a different day.

Eventually, my tour in the UK came to an end and I had to move once again, this time the Navy shipped me all the way from lush green England to the high desert of Albuquerque, NM, where I was assigned to another special duty command, the Defense Threat Reduction Agency, which used to be the Defense Nuclear Agency. We built bombs, and they sent me every now and then up to the desert in Nevada north of Las Vegas to handle communications for testing these bombs. The base in Las Vegas was an Air Force base sectioned off into different areas that numbered up into the 50s.

After three years at DTRA, the Navy told me it was time for me to go back out to sea again. At this point, I had to stop and take stock of where I was in life.

I had joined the Navy 11 years prior with nothing but the shirt on my back. I was leaving with a family, a home, and the skills and confidence to build a career on. I looked at my young family and thought about all the long months out to sea and being apart from them, and decided that at this point I’d served my time, so I chose not to reenlist, and was honorably discharged in October of ’06.

This was meant to be a really short overview of my time in the Navy, but what I’d like for you to take out of it is that while I did work hard, harder than I ever thought possible for me, I also had some of the best times of my life in the Navy, and had experiences and went places that I never would have been able to otherwise. Navy life is unlike any other military service, or any other job.

Speaking of jobs,

No matter what kind of job you are thinking of going into when you grow up, there’s an equivalent in the Navy. The Navy is a microcosm of the United States, there’s people from all walks of life in the Navy. If you want to be a plumber, there’s a job for that. Computer programmer? There’s a job for that. Doctor? Yep. Mechanic, you bet! Construction? Absolutely, we call them the Seabees.

Don’t get me wrong, when you sign that dotted line to enlist in the Navy you are putting your life on the line. The shipboard environment is hazardous, and our ships are targets for our enemies. I’ve made, and lost, the best friends of my life in the Navy, and I’ve had friends who’ve suffered debilitating injuries. Life on the ocean is for the brave.

Being a sailor is an old service with old traditions. The Navy needs sailors to man the ships, and the ships of the United States Navy make up the most massive display of military power the world has ever known. It was an honor to be part of it. But more than that, more than flag waving and patriotism, if you want to be pragmatic about starting your life out on the right foot, the Navy is unique. You travel and serve, you do what you’re told when you’re told to do it. You learn just how hard you can work, you learn how to deal with emergencies and life-threatening situations. You learn, by pushing yourself further than you think you can go and rising to the occasion, just how deep your strength really goes.

I joined the Navy in 1995 with literally no possessions but the shirt on my back. I left eleven years later with a family, a home, and a profitable career path. Not everything has been roses and unicorns, but thanks be to my savior Jesus, I’m blessed more than I have any right to be. I owe that to the Navy. When I enlisted I signed a dotted line that I was willing to lay down my life for my country, but at the time the only country I was thinking of was a country of one… me. But what I learned in the Navy was that I wasn’t putting my life on the line for myself, I was doing it for my shipmates, for my family, for my kids. I put my life on the line because the country that let a dirt poor troublemaker from a Montana reservation rise up the ranks to be a respectable homeowner is worth defending. Because in America, where you were born does not dictate who you have to be. Your family name, your race, your checking account balance… none of that matters more than how hard you decide to work. You can wallow in your disadvantages, or you can rise above them. In America, you are not born who you were meant to be, you make your own destiny.

Do we have problems? You bet we do. Big ones. But you can’t help solve them until you solve your own. You might find yourself someday in the same position I was at 18. Listless, restless, no direction. In that case I hope you remember this, that I was once like you, and what worked for me, might work for you too.

And along the way you might find the best friends you’ve ever had, you might meet the love of your life, and you just might find a deep sense of patriotism that goes beyond waving a flag or slapping an eagle sticker on your bumper. I joined the Navy for selfish reasons, what I learned was that we did what we did for each other. For the man or woman standing next to me holding the line, fighting the fire. To keep the people we love safe, to maintain our way of life, a veteran put his life on the line.


The City Museum

I’m in St. Louis for the Strange Loop conference, and the conference kicked off last night with a party at the City Museum. I didn’t bother to look into the museum much before I came. A few friends told me a bit about it, but it wasn’t enough for me to really understand what the museum was; the City Museum isn’t a museum, its a mad amusement park.

I heard from another conference attendee who’d been there before that the museum was the product of a single person’s desire to make something out of an abandoned building. A mad genius. I describe exploring the museum like going through someone else’s code… you’re always finding things that make no sense. Why is there an airplane on scaffolding outside? Why are there two? Why is the only way to get to the plane through a maze of metal steps and tunnels? Why is the basement built to look like an underground cave? From the insect display to the collection of Italian movie posters to the human-sized hamster wheel, the City Museum makes no sense. It’s an eclectic collection of amusing things. Five stories of collected randomness.

My friend fulfilled a lifelong dream of falling into a ball pool. There was a live band playing on the first floor, board games on the second, food and drinks on the third, and mazes everywhere. There are two massive bank vault doors connected to a hall of mirrors that leads back to the hamster wheel. There are statues of whales, gorgon heads in a fountain, HO scale model train with flying dragons breathing fire, stairs that don’t lead anywhere and slides that go for several stories.

I’m not sure how “safe” the museum is, or how it manages insurance. The structures I climbed on all seemed sturdy enough, but I did wonder at times how old they were, or when the last time they were inspected was. My original plan was to walk to the museum, grab some food for dinner, and walk back to the hotel, mainly ignoring the festivities and the museum. I’m glad I stayed for a few hours.


Running Again

At the beginning of Spring, I signed up for two races, the half-marathon Dam to Dam in the summer, and the full Des Moines Marathon in October. This was my second half, but I’d never come close to a full marathon, so signing up for it was aspirational motivation. I was training with a group running long on Saturday mornings, so as the time for the half approached and I started thinking about the full, I was feeling more and more confident that I would actually be able to run it. Then I ran the half, and things went wrong.

It was hot. Not ridiculously so, but it started out in the 70s and went up from there. I probably would have been fine, but I wore my long Under Armor pants under my shorts, mistake number one. I started out at a good pace, but too good, running at around 8:30 or so, which for me is pretty fast, even when I’m at peak training. Mistake number two. The first few miles were fine, but around mile four or so the sun beating down started to take its toll. I stopped at every water station to take a drink. Around mile six I started taking an extra cup to pour on my head. Mistake number three.

Mile seven I hit The Wall. I hit it far too early, I was only halfway done. The water I had been dunking on my head soaked my shirt, which started chafing and I started to bleed. I was absolutely ready to quit. I saw quite a few other folks on the side of the road who’d given up or pushed themselves too hard and collapsed, needing medical attention. I’d stop and walk, then jog, then walk, then jog, pushing and pushing to get through the race. It was a struggle. It was hard. I was miserable.

Some days I can get out and knock down ten miles and feel great during and after the run. Sure, I’ll feel exhausted, my legs will feel tired, I’ll be breathing heavy, but inside I’ll still have energy, I’ll still have that spark of joy that makes running worthwhile. At the Dam to Dam, I lost that spark. I dragged myself across the finish line, got my finishers medal and went to find my friends I drove up with. While they agreed that the run had been one of the worst, they had finished far in front of me. It felt like my months of training had all gone out the window. I thought about the full marathon in the Fall, but the seed of hope that I’d fostered during the training leading up to the half was gone.

The week after the half I ran a local 10K, finishing first in my age group (being the only one in my age group), and then started training on my own for the marathon. I was on mile six of a ten-mile run when I gave up. My run out was great, my run back turned into the same kind of slog I experienced in the half, and what was left of my resolve to keep running dissolved. I went home and told my wife I was done. She thought it was probably the best thing for my knees.

My wife and I joined an early morning workout class, and I realized that all my running had done little for my overall health. The women in this class were out-punching, out-kicking, and out-squat-jumping me through the entire class. I’d built up endurance, but my overall strength and physical ability had floundered. This class kicked my ass.

At first, it actually felt great not to have a long weekend run to be anxious about during the week. I slept in on Saturday, had too big of a breakfast, and generally loafed around the house. I was getting into the workout class two to three times per week, so why not? Over the weeks that followed I slowly started noticing something in myself. I was more agitated, I became frustrated more easily. Something was wrong. Missing.

While the workout class pushed me physically in ways that I was not accustomed to, the loud pounding music and group environment didn’t allow me the quiet, personal time that was the primary reason I ran in the first place. What was missing was the meditative experience running provides, the feeling of doing something by yourself, for yourself, where you can literally run away from everything for an hour.

I quit running because I forgot why I ran in the first place. I’d had a bad run and thrown in the towel, and this created two problems for me. For one, I was missing out on the benefits to my mental health. Running helps me put everything in life in perspective, it gives me goals to work towards, it clears my mind. Secondly, I gave up on something I said I was going to do, which I felt violated my personal integrity. I noticed that whenever I thought about the marathon I felt, bad. A tinge of guilt. The same feeling I get when I think about my failed software company, Farmdog. I’d given up on something that I am. I’m a runner.

I can’t have that.

I decided to start running again after reading an article in Runners World about pushing through the hard things in life. The author said, paraphrasing, that we run because it’s hard. When we overcome the hard runs it prepares us to overcome whatever other difficulties life throws at us.

This morning I strapped on my phone, put on a podcast, and had the Nike app track a 20-minute run. I’m easing my way back into the habit, but with fresh eyes and a new habit to mix into my runs. I’m keeping up pretty good with the rest of the crew at our morning kickboxing workout now. Although there are some workouts where I’m ready to quit after 15 minutes, by the time we hit the 45-minute mark I’m feeling pretty good. I’m positive that the workouts will help with an overall total-body approach to health, but I’m going back to the road for my mind. I’m too late to start training for the full marathon this year, but I’m not giving up. I’m just saying, “not yet”. I’m still a runner.


Serverless Jekyll Hosting on AWS

This is a bit silly, I’ll be the first to admit. The contraption I’ve built to host this site is clearly unnecessary, especially when I could host the site on Github for free, with very little effort, but I was curious, so down the rabbit hole I went.

I thought it would be interesting to host my site on S3. The site is entirely static, no database back end or dynamic programming required to generate the site, it’s just HTML, CSS, and Javascript. I also wanted to understand the AWS CodeBuild service, and how I might be able to use it for other projects.

There are four components of this system: Github, which hosts the code for the state. The domain name is registered and managed through Route53, where I’ve configured an “A” record as an alias to point at the S3 bucket which hosts the site. Finally, CodeBuild is the glue which pulls the code from Github, runs jekyll build, and pushes the site to S3.

CodeBuild works by starting a Docker container and pulling the repository down. It then looks for a file named buildspec.yml which contains the instructions to build the project. This file contains arbitrary Linux commands, whatever you need to build your code. Mine looks something like this:

version: 0.2env:  variables:SITEBUILD: "yes"phases:  install:commands:apt-get update -y  pre_build:commands:gem install bundler    bundle install  build:commands:echo Build started on date    bundle exec jekyll build    aws s3 sync _site/ s3://jonathanbuys.com  post_build:commands:echo Build completed on date

The interesting thing about this system is that I could replace Jekyll with Hugo, Hakyll, or any other static site generator, even my own scripts, and the system would stay the same. I’d just need to update buildspec.yml with the new commands to install the right tools and build the site. Hosting costs so far have been pennies, my cost this month might reach $1.27, and for the past couple months the cost has been below one dollar.

I’ve been considering making this system more user friendly and monetizing it somehow. There’s a business model to be had in here somewhere, if I care to pursue it. Even though blogging in general appears to be in somewhat of a decline, publishing platforms will always be needed.


Recommending a New Mac

I got an email from my mom the other day asking me for a recommendation on a new Mac. The first question I asked was what her budget was like. She said she’d like to keep it under a grand, which right away narrowed the field quite a bit. Next I asked what she would be using the machine for, to which she replied with the standard home use cases of “income taxes, email, scanning, internet, etc”, as well as printing to a Brother ink jet.

At first glance, it would seem like she would be the perfect candidate for an iPad. Modest computing needs, tight budget, and she doesn’t want junk. Or, in her words, “I hate slow computers but don’t need top of the line either.” I considered steering her towards an iPad, but that first item in the list of things she uses a computer for gave me pause, “income taxes”. I don’t know exactly what software she uses to do taxes, but I started imagining scenarios where she would run up against the edges of what the iPad, or more specifically, iOS, can do. Would she need to download and import files from banks? Would she need to read files off a USB drive? She’s into wildlife photography in Montana, how would she get the photos on the iPad?1 My mom’s no slouch, but she’s not Federico Viticci either. Pushing the boundaries of iOS is not what she cares to be spending her time doing.

I imagine Mom just wants to use a computer like she’s been doing for the past thirty years. Given the budget, and after eliminating the iPad from the equation, I briefly considered the desktop options. Of course, all of those were thrown out almost immediately. The iMacs are too expensive, the Mac Mini is too slow, and the Mac Pro, uh, no. That leads us to the laptop line. The MacBook Adorable was considered, then eliminated for lack of ports and high price. The new MacBook Pro also suffers from a lack of standard ports and a price tag that’s far too high. That leaves us with the venerable MacBook Air.

The Air has been Apple’s best laptop, and possibly best computer period, for years. While the MacBook Pro is the workhorse of the lineup, the Air’s svelte styling and weight paired with an affordable price tag to make an extremely compelling offer. While the MacBook Adorbs is beautiful and portable, Apple is pushing the envelope with the single port, and consumers are footing the bill for the new technology with a higher price. While the Air is plenty fast enough for all but the most demanding tasks, I’ve heard more than one user complain that the mobile chip in the MacBook Meh is sluggish. Jony’s styling doesn’t win out over performance with my mom.

In the end, I found a 13” Air with 8GB RAM, 128GB SSD, and an Intel i5 for $850 on Apple’s refurbished site. I think Mom will be happy with this machine for many years to come.

Next, my daughter and I are going in on a Mac for her to take to college. That’s an entirely different set of requirements and a different use case, one that I’ll follow up with here, as soon as we decide what to get.

  1. Yes, I’m aware of the dongle. It seems like a wonky workaround. ↩︎


My Next Mac

So, yesterday I cleared off my desk and tried to work with nothing but my MacBook again. No standing desk, no external monitor. It looked great, but honestly, it felt terrible. I wound up hunched over the desk staring down at the screen. After an hour or so of this I decided, yet again, that this style of work is just not appropriate for me.

This leads me to a few interesting conclusions when considering what to buy for my next Mac. For one, I find a larger screen much easier to work with. The smaller screen is fine for when I’m loafing on the couch or traveling, but for day-to-day work it just makes getting things done harder. Secondly, the screen needs to be lifted to an ergonomically appropriate height. Photos online of beautiful desks with a single MacBook Adorable, a notebook, and a cup of coffee are nice, but I can’t see how anyone gets any serious work done on the computer in that environment. I always assume that whoever works that way doesn’t spend the majority of their day staring at the screen like I do.

So what’s next for me? I’ve been toying with the idea of only using an iPad Pro, and while I think I could work on it just fine, the overall experience would be ergonomically strenuous, and the workflows frustrating. The iPad shows promise, but until I can hook it up to an external keyboard, monitor, and touchpad, it’s not for me, not yet.

I love the look of the MacBook, but I just can’t work with it. I could leave it plugged into my external monitor all day, but there are a host of issues with that too. My monitor, a 24” Dell 4K, looks great, but it doesn’t have a built-in speaker or iSight camera like the old Apple Thunderbolt Display I was used to working with. The resolution is good for staring at text all day, but every time someone I work with wants to do a video conference or something similar I’ve got to either fish out my USB webcam or unplug the laptop. I could leave the laptop open to the side of the display, but I like having a single monitor to concentrate on.

Then there’s the wires. I’ve got a USB hub stashed in my desk drawer, which is plugged into a ScanSnap and a hard drive. The monitor needs power and a plug into the MacBook. The MacBook needs power. There’s too many wires.

Finally, since I have no speakers when the Mac is closed, I have an Amazon Basics bluetooth speaker on the shelf behind my desk. That works fine as long as I have sound being streamed to it. If I go for more then a few minutes without sound, the speaker turns off, which means I have to flip the switch on it to get it to pair again. Not ideal.

So, when considering my options for the next computer, I think there’s really only one choice considering my requirements.

  • As few wires as possible
  • Built-in iSight camera and speakers
  • Large Retina screen
  • Ergonomically correct for long periods of work

Sounds like an iMac to me.


Install Gems Without sudo in macOS

I came across a neat little command line tool via Rob Griffiths’ Robservatory this morning, a Ruby gem named iStats1. Install is easy enough in Rob’s example, sudo gem install iStats, except that when you use sudo to install gems you are using the default macOS Ruby, and installing to system paths.

  ~ /usr/bin/gem environment                            RubyGems Environment:RUBYGEMS VERSION: 2.0.14.1RUBY VERSION: 2.0.0 (2015-12-16 patchlevel 648) [universal.x86_64-darwin16]INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyEXECUTABLE DIRECTORY: /usr/local/binRUBYGEMS PLATFORMS:    ruby    universal-darwin-16GEM PATHS:    /Library/Ruby/Gems/2.0.0    /Users/jonathanbuys/.gem/ruby/2.0.0    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0GEM CONFIGURATION:    :update_sources => true    :verbose => true    :backtrace => false    :bulk_threshold => 1000REMOTE SOURCES:    https://rubygems.org/

While that might be fine, my personal preference is to keep the core system as close to default as possible. I once ran into an issue keeping Jekyll up to date, so now I use the excellent Homebrew to install an updated version of Ruby and keep the gems in /usr/local, which is entirely mine and safe to write to.

brew install ruby

Also, I make sure that /usr/local/bin is called before /usr/bin in my shells PATH variable.

export PATH=/usr/local/bin:~/Unix/bin/:$PATH

Now I can call gem install iStats and the gems will be installed safely, keeping my core system clean and my gems easily updatable.

  1. As Rob points out, this is apparently not associated with iStat Menus↩︎