The past two years I have been struggling to build a system that would help me make progress. I failed over and over to outline and stick to a process. If I'm honest with myself, there are many reasons for this but the overarching one is that I don't have any long-term, meaningful goals.

Oddly enough, I'm pretty confident in my purpose in life which is informed by my Christian faith and that is God has placed me where He has to love and serve my neighbors. This guides my immediate actions in that I know what to do in a particular moment. If my co-worker is struggling with a bug I help her as I can. If my daughter needs her homework checked I do that. If there are dishes in the sink I help my wife by washing them.

Where I stuggle is those free moments. The time when I could/should be working on the side-project, learning something new, or producing content that could help someone. I don't know what I should be doing so I endup watching something on Netflix or playing some iOS game. Then later I'll look back angrily and lament the time I've wasted. Occassionaly and stupidly, this frustration bleeds over into causing me to avoid the immediate and obvious items (washing dishes, etc).

Last year I read a bunch of books and listened to a ton of podcasts trying to find a direction or theme for what I'm doing to go beyond the basic yet important day-to-day activities that serve my family, friends, co-workers, and church and find some bigger goal(s) that integrates those activities and adds other meaningful ones. I can't say that I was successful. In fact, it frustrated me so much that I've taken a break from direction and goal setting books and trimmed my podcast subscriptions to cut out shows that focus on those topics.

Where does that leave me? The title of the post. I'm not sure where it comes from; if lighting will strike, but I desire something to happen because this stagnation is not where I want to be.

The keyboard is different. It's not terrible and I will get used to it, but I do wish that I didn't have to get used to it. I'm wondering if Apple trying to prep users for a future non-mechanical keyboard. The feel is so different from any keyboard I've used before that I can't help but feel like Apple is trying to move us in a certain direction.

As I've grown accustomed to the keyboard I found that I get a better experience with a lighter touch. When I first started using it and was pressing with the same force as my old keyboard, my fingers started to ache some. I've also found the keyboard sound more pleasant when touching with less pressure. I could hear the keys bottoming out and it did sound like I was banging things out on keyboard.

As I mentioned in a previous post, I use Karabiner Elements to map the escape key to the right option key. This is working well and I don't think I could live with the Touch Bar escape key. I do need the physical feel for that particular key.

The full height left and right arrows continue to mess with me. I often press the up arrow when I mean to press down. The reason is that with the old keyboard that had half height right and left arrow keys, I would rest my index and ring finger on the left and right arrows. Resting my middle finger in line with them I would press the down arrow and putting it up a bit would give me the up arrow. With the full height left and right arrows, putting my middle finger in line with the index and right may or may not put it on the down arrow. In fact, I realize that I was used to feeling for the top of the half height arrows so I'm more likely to line my fingers up with my middle finger pressing the up arrow. I'm going to have to get used to feeling for the bottom edge of those keys so my in line finger placement puts my middle finger on the down arrow.

Sorry, I realize this was a little excessive. I'm just trying to put myself in the mindset and habit of examining, considering, and improving my tools and processes.

I added some more tools today:

  1. Installed MarsEdit which I use for my WordPress blogs. In addition to this blog which I run on Jekyll, I maintain 3 other blogs that are WordPress based. MarsEdit handles them well and I haven't seen the need to change. If there is ever a new version I'd probably by it just to support the developer because I don't need any new features but appreciate the many years I've used the tool.
  2. Installed PDFPenPro 7 which isn't the latest version. I use this occasionally to work with PDFs. It's one of those tools that I will use eventually and don't want to hunt around for it and mess around with licenses when I do.
  3. Installed Audio Hijack for podcast recording. I'm currently doing most recording on my iPhone, but I will probably try the workflow on this machine at some point.
  4. Installed Fission for simple editing. I use GarageBand for long form editing like podcasts, but I use Fission for editing the sermons for the church because I just need to edit the beginning and end and export at a reasonable bit-rate.
  5. Installed Pocket Safari Extension because I use Pocket for bookmarking URLs. I do need to rethink bookmarking tools because my backlog of things to read and watch is reaching nearly 3 years. I'm not really sure this is the most effective way to manage stuff I want to read and links I want to save.
  6. Installed Pocket app to read my Pocket list. I could read it from the web app, but I like native apps because they typically have more functionality than a web app especially offline viewing.
  7. Installed Better Rename 9 for conveniently batch renaming files. It's not something I do often, but it comes in handy when I do.
  8. Installed Eclipse for Java development. This is my workhorse tool at my day job so it's another tool I need to test the suitability of this machine for work.

That's all for today. I think I'm close to forming some solid opinions about working with this machine and I'll have a write-up soon.

This is my first post from the new MacBook Pro.

Here what I've done so far:

  1. Installed Microsoft Remote Desktop as an experiment to see what it would take to use a Mac in my day-job environment.
  2. Installed VPN Unlimited client so that I have a VPN connection in untrusted network environments.
  3. Installed Karabiner Elements. This is a new one. I used Karabiner and Seil to remap the caps lock key to cmd-opt-ctrl-shift on my old MacBook Pro, but in macOS Sierra this no longer works. I dug around found this was the latest solution. Now why do I remap the caps lock key this way. The cmd-opt-ctrl-shift- makes a great shortcut to launch apps, go to websites, or open directories. It's part of my muscle memory and makes me more productive. I found that Karabiner Elements lets me map the escape key to the right-side option key and I've mapped the right-side command key to opt-ctr-shift which I also use for some shortcuts. These last two mappings are new to me, but the escape key mapping is helping because of the lack of physcial escape key and the opt-ctrl-shift mapping seemed like a good mapping to try. It was noticable from the wear patterns on the old MacBook Pro's keyboard that I almost never used these keys.
  4. Installed JDK 8 so I could experiment with day-job scenarios.
  5. Installed Xcode and Xcode Tools because I will eventually need to update some of my iOS apps or start new ones and also for Homebrew.
  6. Installed Homebrew to manage open source packages.
  7. Installed rvm and them imploded it because it seems that rbenv is now the popular way to manage ruby installations on the MacBook
  8. Installed rbenv and ruby-build
  9. Installed ruby 2.3.2
  10. Installed jekyll
  11. Installed Visual Studio Code as my text editor. I've come to like it for JavaScript development and it does mostly what I need from a general purpose text editor but I will monitor its strengths and shortcomings.
  12. I then played around with the bash prompt and uploaded my ssh key to my blogging host so I can rsync the blog without having to type in my password every time.

That's all the software I've installed so far. I'm trying to stay in the bounds of only installing stuff when I have the need. I probably have a few more posts on stuff I'm installing and why. I think I want to use the machine a little longer before I start praising or complaining about the machine itself.

Well, the 15" MacBook Pro with Touch Bar arrived around 7:15 this evening and I've started the process of setting it up.

I had a little problem setting up my Apple Hatch to unlock the computer, but after a dozen tries it finally worked even though I didn't change anything. Setting up Hail is always weird. I have an IMAP mail account and I always have problems setting the "Trash" folder. This happens every time I setup a new iPhone and I ran into the same thing here. So I bit the bullet and figured out how to map all the folders and made them match on the iPhone and the new MacBook Pro. I hope that will make my email life a little easier because I won't have to wonder why some emails get put in one folder and not another.

It First Batch of 3rd-Party Software

The very first piece of software I added was_1Password! I had to have all my logins and licenses for software that I will install so it was the first thing I needed. Next I needed Alfred App. Alfred is my launcher, but it is also my clipboard manager, file action shortcut mechanism, and shortcut manager. I'll even think it's managed to replace TextExpander, but the proof will be in if I don't have to install TextExpander. And to get my Alfred settings from my old computer I needed to use Dropbox so I had to install it.

That's enough for the first night, but I'm still writing this post from my old computer, so my task tomorrow will be to see what I need to install to be able to write and post from the new computer.

Hardware First Impressions

It's not GPU panicking! The screen is bright and the colors are much better than the old computer (which I suspect had to do with the bad GPU]. I've had matte laptop screens forever because most glass or plastic screens had way too much reflection for me, but this screen has minimal reflection and is actually pretty hard to find reflections unless you are looking for them.

I like the giant Force Touch trackpad. The click isn't quite as satisfying as a mechanical trackpad, but having a consistent click press pressure on the whole surface is worth the exchange. The Butterfly 2 keyboard will take some getting used to. I like that the keys are bigger and more stable, but the shallow travel, sound, and overall feel will take some getting used to and not in the good way I enjoyed getting used to my cherry MX green CODE keyboard. The arrow keys are interesting. I'm used to the half-height up and down arrows but throwing in full-height right and left arrows is throwing me off a little.

Finally, the Touch Bar. First, I don't miss the function keys yet. But I won't know how I really feel until I use a debugger which is the only time I ever rely on the function keys. I've already used the playback controls more times than I did on my old machine. It's really the brightness and volume keys that I used in the past and I used them by spatial awareness meaning I didn't know exactly which key to hit but I knew the general area and could hit the keys in that area until I found the right one. It wasn't efficient from a keystroke perspective but it was convenient and took no mental cycles. Now I have to look at the Touch Bar to find the control and then think about volume and brightness levels. It adds cognitive load to something that was mindless. I'm not saying it's a big deal, but those little shifts from making things mindless to making you think can be annoying.

I'm excited to keep this record of my experience with this new machine and to thoughtfully and intentionally set it up to make me as productive as possible.

As I prepare for the move to a new machine I'm planning how to migrate all my software and documents. In previous transitions I have used Apple's Migration Assistant to pull over my existing programs and documents and that has worked well. This time however, I want to take and essentialist's approach to what I add to this new machine so I will only bring documents and add software that I truly need to accomplish my goals. As part of this, I expect to have a series of posts that document my justification for why I'm adding various tools. Hopefully this will help me better think through my decisions and help others think about their own tool choices.

Development tools

  • Xcode - While I'm not focusing on iOS or macOS development at this time, I do have an app to support and there is always a part of me that thinks about jumping back into iOS development. Additionally, Xcode also installs some tools that are necessary for development on the Mac in general
  • Homebrew - It is the most popular package manager for the Mac and I've found that using it to manage installing open source software and their related dependencies much easier to manage with Homebrew than to do it manually. That being said, I've run into version and package availability issues that have made me unhappy. I'm not sure if this is due to a lack of support by Homebrew or lack of understanding on my part. This go around I plan to be more deliberate and intentional when installing packages and I will make a concerted effort to understand the issues I have when I run into problems with package installation.
  • Visual Studio Code (VSC) - It has become my goto editor and pseudo-IDE for web development. It has even become my primary text editor (I'm writing this post in VSC). I like the support it has for the various web programming languages and styles and the way it integrates with external tools like git and the command line. I'm not convinced that it works well with large text files or system files so I may need to install BBEdit on the new machine, but I will hold off on that for as long as possible and will definitely have a post for that because that is a non-trivial decision in my mind (from the perspective of an essentialist).

Since the announcement of the new 15-Inch MacBook Pro there have been lots of criticism about its limitations and flaws. I'm not going to refute the criticism because I have some of the same misgivings, but I want to share my thought process for why I bought the particular configuration I decided on.


First and foremost I needed a new computer. Multiple, daily GPU panics are not a recipe for a happy computer user and in the last 9 months as I waited for Apple to release new computers my frustration had turned to dread. Not what a software developer should feel about his main tool.

Is It a Great Computer?

I don't know. I haven't used the Touch Bar and I don't know if I'll be frustrated by the lack of an escape-key. The 16GB limit doesn't faze me because I wouldn't have gone with 32GB as that would have probably pushed the machine toward $4K. Did the price point move up? Yes, I was planning on going without the discrete GPU because of my GPU panic problems, but without that option my price point got bumped up a couple hundred dollars. Is USB-C only going to be a problem and are dongles of the devil? I have Firewire 400 devices and deal with projectors that are old and only have VGA inputs so I've had and will have adapters and dongles for my many years.

Existential Crisis

Most of the criticism I've heard isn't really about the machine but about what signals Apple is sending because of the choices it made when designing the machine. While this type of analysis can be useful, it doesn't really factor into how I buy a computer anymore. My buying decision is based on hardware build quality, capabilities, and software quality at a price point I can justify. What the computer says about the future prospects of the company would only concern me if it limited the useful life of it. I feel comfortable in saying that the choices Apple made with the 15-Inch MacBook Pro won't limit the 5-7 year useful life expectancy I have for it.

What and Why

I bought the higher-end 15-Inch MacBook Pro because I wanted the 512GB SSD. I could have gone with the lower-end model and bumped up the SSD and saved a couple hundred dollars, but decided that the higher-end stock configuration was a better balance with the faster CPU and GPU. I got it in silver because Space Gray looks dirty in my eyes after using my current MacBook Pro for 6 years and a Titanium PowerBook for 5 years before that.


Buying the new machine was the easy decision. The next steps of deliberately deciding what software to install and intentionally integrating it into my life are much more important.

I have the most difficult time with procrastination during the times between two things. In this case, the time between now and getting my new MacBook Pro. I've put off updating to macOS Sierra for purely pragmatic reasons, but I've also put off some tasks I should be doing because it's easy to say, "I'll just wait to set that up on my new system instead of doing it twice." I almost used this procrastination technique with this blog.

I'm going to try to intentionally and thoughtfully setup my new computer and part of that process is blogging about the move and that includes my thoughts about this current machine and the thoughts behind moving to the computer I selected. After the last post that kicked off this process, I found that my installation of Ruby, which is necessary to generate the blog, had been corrupted. At that point I nearly gave up on the idea of walking through this process and just waiting to start blogging after I had the new machine. That certainly would have been the easy thing to do, but I decided that blogging the process was important and did the grunt work of fix my Ruby installation.

I don't think that procrastination during times of transition is unique but the biggest danger I have is that I can turn almost anything into a time of transition. The end of the month, the end of the week, etc. are such easy times for me to say, "Well I'll just wait put it off until the start of next (week, month, year)," or "I'll wait till the new version of the (device, app, os, framework, language) comes out and then I'll dig in." I am aware of this thought process in myself and yet I have trouble overcoming it. Anyone have any thoughts on overcoming it?

I could make this a post about turning over a new blogging leaf, but I've broken that promise too many times to kid myself into thinking this time I'll stick with it. No the "new era" for me is the move from my 2010 15" MacBook Pro to a new 2016 15" MacBook Pro. This will be one of the last posts from this old workhorse which has served me well.

It is amazing to me that this computer has served me so well and for 6 years. The only upgrade I've done is the 512GB SSD drive. It has held up wonderfully except for the GPU panics that have always plagued it, started getting worse a year ago, and finally became a near daily occurrence 3 months ago. When I got the machine I paid extra for the matte screen and I feel like I'm going to really miss it, but getting a Retina display and brighter colors should balance out my screen concerns.

One of my goal is to become and essentialist which means I want to make more deliberate and intentional choices. To that end I plan to make future posts discussing my choice of the MacBook Pro, how I'm migrating to the new machine, the software I install, and any of the other myriad of choice I make. My typical M.O. is to make a well thought out and carefully planned initial decision, but once things get rolling I start doing things haphazardly, letting momentum take me where I don't necessarily mean to go.

A while back I was test infected. On a side project I was saving myself tons of time, making good progress, and writing high quality code. It was really exciting, I was really happy, and it is one of my favorite moments of working on side projects. Then I hit the UI portion of the project and BDD became harder. Not only was the UI code not driven by tests, I would have to make changes to my tested code to support the UI and then instead of updating the tests, I would ignore the test case or worse, comment out the existing tests to get things working.

Since then every side project I've ever started has gone through the same loop, but I've become more resigned to abandoning unit testing as soon as the rubber hits the UI. I want to do better. I'm going to recommit myself to BDD on my side projects. I'm going to make a concerted effort to fall of the band wagon when UI testing becomes hard. And if I happen to slip I'll get back on right away. No more commenting out tests to make things compile. The only tests that will be removed are those that no longer test the system.