How to Pick The Right App
Computers are complex tools; designers and developers are always trying to strike a balance between usability and usefulness. I have a theory that over time a computers configuration grows to resemble the mental state of its primary user. Each machine is a unique mix of file and folder organization methods, naming schemes1, and application choices. Those choices can reflect the level of technical knowledge and values of the user, but only if the user has made a conscious choice in what apps to use.
A user making the right application choice is empowered in a way that she wasn’t before. Suddenly this opaque machine begins to bend to her will and provide results, she feels the machine working with her and not against her. Tasks which were too complicated are made understandable, and eventually she is able to forget the computer and become enveloped in the flow of her work. Sometimes finding this flow is difficult, but it is almost always worth the effort.
But how can someone find the right app? In this sense, especially in the Mac and iOS ecosystems, we have an embarrassment of riches. Even for something as basic as a word processor, there are several choices for all types of uses. Off the top of my head I can list:
- Microsoft Word
- Apple Pages
- LibreOffice Write
- Mellel
- Nisus Writer Pro
- Scrivener
- Ulysses2
- Byword
- IA Writer
The list goes on. If you are looking for a simple text editor or note taker, the list of available apps is even more ridiculous. So, what to pick, how can someone make the best choice for themselves that doesn’t waste their time and end up abandoned in frustration?
This is actually two problems. The first is discoverability, or, how to know that an app even exists. This problem is much harder to solve, because the best apps are not always featured in the app store, and do not always show up at the top of a Google search. Personally, I find that immersing myself in the Apple community for the past thirteen years has helped tremendously. Reputable sites like Federico Viticci’s MacStories, Jim Dalrymples The Loop, Shawn Blanc’s The Sweet Setup, David Sparks’ MacSparky, Jason Snell’s Six Colors, and of course, John Gruber’s Daring Fireball are the best places to look for reliable, and personal, application recommendations. I would avoid trying to search in either the Mac or iOS app stores.
Once you have a handful of recommendations for a certain genre, let’s go back to our list of word processors, it’s time to start whittling down the contenders.
Aesthetics
Like it or not, how something looks will affect how it is used. Look at the screenshots, is the app pleasing to the eye? Can you visualize yourself doing the type of deep work you care about with this tool? If you’ve already installed the app, investigate the view options for hiding toolbars or views. The app should be inviting, a prompt for you to do your best work.
Familiarity
You could also call this usability. On the Mac, most well-designed apps function in a fairly similar way. There are common keyboard shortcuts that should be standard. In your word processor, start typing. Edit a couple of paragraphs. Does shift-option-left arrow do what you expect?3 Does the app not only look like it belongs on the Mac, does it feel like it belongs? Does it function in a way that gives you the impression it was built with care specifically for the Mac?
Reputation
The Mac has been around since 1984, and iOS is coming up on a decade. Developers have had time to build reputations in the industry for themselves and the apps they create. If you like the look and feel of the app, take a few minutes to check into the history of the app and it’s developers. Are they active in the community? Do they have a history of supporting their app? Has the app received any recent updates? Are updates regular? What you want to find out here is if you feel you can trust the app to be around for the foreseeable future.
Trusting that the developers care about their app means that they will put the effort in to adopt new features of the operating system as they are announced by Apple, and that they will not abandon the app so that it eventually stops working. Establishing this trust in your tools is essential in quieting that little voice in the back of your mind that panics when you start using the tool for significant work. If the developer blogs regularly, is active on Twitter or other social networks, and releases updates to their app on a regular basis, chances are that they care enough about the app, and are personally invested in the app enough to keep going.
Data Longevity
Depending on the type of work to be done, how you feel about the longevity prospects may or may not be important. For example, I use OmniFocus for day to day task management, but I’m not especially concerned with being able to review todays tasks in twenty years. However, for our word processor example it may be very important to be able to read and edit the papers you are writing today. Maybe you are in grad school and are looking for the right tool to write your thesis, or you are a stay at home dad and want to record your thoughts for your son. How you look at data longevity is dependent on the job to be done.
Choosing open formats is the easiest answer, but may not always be the best for day to day use. Plain text is the most future-proof, but it’s difficult to work with plain text if you want to include images or media alongside the text. To solve this problem, I’ve made the decision to work with tools that can export to an open format, normally PDF, but not necessarily use an open format natively for day to day use. This way, when I’m done writing that important paper I can hit the export button, or print to PDF, and I have a reasonable safe way to save my important information in a way that should be readable at any point in the future.
fin
I hope this helps, it works for me. There are probably many more aspects to choosing an application that I didn’t list here. Price and income model come to mind. Let me close with this list of companies that are worth looking into:
Rules for Sane Living in a World of Constant Outrage
Turn it all off.
I’ve deleted the twitter apps from my phone and computer, I don’t log into Facebook anymore, and I’m limiting when I read news outside of the tech news to once a week. It just became too much, I started feeling angry all the time, and reading more news wasn’t making me feel any better about it. There was nothing I could do about how I felt, there were no actions I could take to assuage the pain. The constant flow of new events across the world to be outraged about is too much for anyone to handle.
So, I’ve started myself on a strict information diet. Unless the news is related to Apple or the tech industry, or any of my hobbies,1 I’m leaving it till Saturday morning after I’ve gone on a long run.
There is plenty of evidence that binging on news is detrimental to your health. In the past few months I’ve noticed my mental state has grown significantly more pessimistic about the state of the world, when in truth my personal circumstances have never been better.2
That’s not to say that the issues in the world right now are not serious, or that I don’t care about the many, many problems affecting our society. I do. I care enormously. I simply can’t let how much I care dictate how I feel about everything else. I’m not cutting myself off completely, I’m simply making a decision for myself about when and how much of the news I’ll allow in. When the time comes for action, I’ll take it.3 I just don’t need to be reminded about what I already know over, and over, and over.
Sometimes the best thing to do for your own mental health is to log off.
-
Reading, writing, gardening, running, and general travel and hiking. ↩︎
-
I work from home, in a good job, with a company that I respect and love working for. Raising four kids will always bring times of hardship and doubt, but overall we are ok. ↩︎
-
By taking action I mean writing a letter to my senator, or participating in a march, or voting for who I feel will make the world a better place. I abhor violence. ↩︎
BBEdit and Python Tags
I’m in the process, a very long process, of switching from Vim to BBEdit as my primary editor. The reasons are long and varied, but boil down to me being tired of screwing around with Vim’s configuration. I do a lot of work in Python now, and I’m using the experience of building and maintaining cloudchain to learn how to navigate BBEdit. Hopefully, someday I’ll be as good here as I was with Vim.
Today I learned that BBEdit ships with support for ctags, best defined by the documentation:
Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object).
The tag file serves two purposes. First, BBEdit will use the tags to allow you to jump to the point in your project where the selected function was defined. Second, if you copy the tags file to a specific spot, BBEdit will use that file for code autocompletion.
⌘-
-> Find the definition of the selected function.⌘⎇[
-> Jump back to the point you were at in the previous file (if the function was defined elsewhere).
To generate the tags file, open your project directory in Terminal and
run bbedit --maketags
. Then copy the resulting tags file to
~/Application Support/BBEdit/Completion Sources/Python/tags
. Quit and
restart BBEdit and autocompletion and function definition should both
work.
The NES Classic Edition
This looks fantastic.
The NES is coming back to stores! Pick up the new mini NES Classic Edition on 11/11 w/ 30 included games!
— Nintendo of America (@NintendoAmerica) Jul 14 2016 7:01 AM
Standing Desk Review
For the past two months I’ve been working, on and off, with a Rocelco Height Adjustable Standing Desk Riser, a less expensive choice for working at a standing desk than the popular VARIDESK. The Rocelco is a solid alternative for budget conscious workers, but as with most products, the drop in price comes with a set of trade-offs.
Having worked for several months with a VARIDESK, and the past two with the Rocelco, my opinion is that the VARIDESK is simply a better product, and will probably stand up better over the course of several years. The Rocelco does what it advertises, it raises the monitor and keyboard tray up to a reasonable level that feel appropriate to my height. However, the pistons it uses to raise the desk are so strong that you can’t simply pull on the top to raise it and stand away while the desk raises itself. If you do the top shoots up with enough force that when it reaches it’s full height it stops suddenly and shakes.
The first time this happened I was a bit afraid for my monitor. It even managed to shake the desk out of position slightly. If I had a cup of coffee on the desk I’m sure it would have splashed out. The pistons are strong. Once I realized this I remembered from then on to guide the desk to the standing position.
There are no alternative desk heights with the Rocelco, not without engaging the desk locks on each side of the structure. Where the VARIDESK has set points along the path of the raise, the Rocelco has one smooth transition from collapsed to fully expanded, although at any point along the way the locks could, theoretically, be engaged to lock the desk at a specific height, with the mechanics of how the desk raises it would be awkward at best. I’ve not bothered to try.
I’m a bit worried about the long-term prospects of the keyboard tray. The tray seems to be sitting an eighth of an inch lower than it was when I first unpacked the desk, and pulling up on the tray shows that it’s developed a bit of play to it. After two months of on and off use I would expect it to remain solid, I’m not sure what shape it will be in after a year or two. Also, neither the tray nor the desk seem solid enough to support me leaning on it, which, honestly, is a good thing. I shouldn’t be leaning on the desk while working anyway.
Since switching to a sanding desk last year I’ve become accustomed to long periods of standing, and walking around my office to think and work through problems. While I think the Rocelco is a fine starter desk, neither the aesthetics nor the mechanics of it make me happy enough not to start planning it’s replacement. For the next version I’m leaning heavily towards The Wirecutter’s recommendation of the Jarvis Bamboo, but I’m also considering a drafting desk like Dr. Bunsen’s.
The New Setup
Starting a new job working from home gave me the opportunity to evaluate exactly what I wanted from my work environment. I knew I was getting a new Mac (13” Retina MBP, as you do), but I also knew that I needed a new monitor and standing desk.
I worked for a few weeks using nothing but a 15” rMBP on my desk at home, and found that my right wrist was starting to hurt after only a few hours. I’ve had run-ins with RSI before, and had to wear a brace and adjust my posture while typing to relieve it. While my desk works well for the occasional work day at home, spending a few weeks sitting at it proved to me that it’s insufficient for serious extended periods of concentrated work.
However, I was ruined after looking at the beautiful retina screen for as long as I did. At my previous job I used an Apple Thunderbolt Display, which was beautiful and functional, but had lower DPI than the MacBook display, and was not very adjustable. The Thunderbolt could power the MacBook, and acted as a hub for anything that I needed to plug in, like network cable or external hard drive. The Thunderbolt is also $1,000. Given that I look at text all day, and sometimes into the night, I wanted a display that equaled my MacBook, had adjustable height, and wouldn’t break the bank. After researching a few alternatives, I settled on the Dell Ultra HD 4K Monitor P2415Q 24-Inch Screen LED-Lit Monitorat less than half the price.
I’ve read about Dell’s Ultrasharp line before, and always came away with the impression that they were very high quality. The 24” screen has a resolution of 3840 x 2160, the same as the next step 27”, which means the pixels are at a much higher density. After using this one for the past week, I can say that the screen itself is superb. There are no dead pixels, text is crisp and clear, colors are sharp, and the matte finish means that I’m not inadvertently staring at my reflection when working in a dark color scheme.
The screen adjusts to a height level with my eyes, so I’m not hunched over or looking down while working. It also rotates 90°, which I tried briefly and discarded. Just too weird.
While I’m perfectly satisfied with the screen, I do miss quite a few of the niceties of the Thunderbolt Display. There are no integrated speakers, no FaceTime camera, no ethernet port, and no power adaptor for the MacBook. It’s just a monitor. It does have a USB hub, and apparently the display port is capable of carrying audio, but neither feature is integrated into the Mac enough to be useful. For example, if my Time Machine drive was plugged into the monitor when the monitor went to sleep, the drive would be lost to OS X and I’d get that annoying alert about not ejecting a drive. If I need to do video or audio conferencing I’m either going to have to take the Mac out of it’s Twelve South BookArc or I’m going to need to plug in a USB camera, microphone, and speakers like it’s 2003.
I mentioned that the display port can carry audio. The monitor has a speaker jack on it, and I at first plugged in my desk speakers into that, but when I did the Mac lost all capability to control the volume output to the speakers. Hitting F11 or F12 showed an image on the screen indicating that the Mac was just shrugging it’s shoulders. Nothing it could do. Plugging the speakers back into the Mac and setting the headphone jack as the default audio out port solved this issue. I had to remind myself… it’s just a monitor.
The last part of the puzzle is still being shipped. I ordered an adjustable standing desk similar to a VariDesk, but made by a Canadian company for, again, about half the cost. I have the 32” Rodelco ADR on the way, and I imagine I’ll once again be standing for about three-quarters of the day. I spent several months standing while working at my previous job, and I miss that more than the Thunderbolt display. I’ll post again after I’ve worked with it for a week or so with my first impressions.
The 13” is a big change from the 15”, but I don’t feel like I’m missing anything. The 15” seemed an odd size to me. Too big to comfortably use apps full screen, but too small to be able to see more than two windows at the same time. The 13” is perfect for concentrating on a single task, is super light and easy to carry, and has enough power to push the incredible number of pixels on the Dell screen. So far I’m pretty happy with my new setup.
Manton's Stickers
I was listening to Core Intuition a few weeks back and Manton said that if anyone was interested in his project to let him know, and he would send a couple of stickers. I was interested, so I emailed him a quick note, and quickly forgot about it.
Yesterday an envelope arrived in the mail with two stickers and a handwritten note. I’m looking forward to his new project, that Manton Reece seems like a stand-up guy.
Making The Move From Sysadmin to DevOps
Everyone’s professional path follows a slightly different trajectory. We are each a unique recipe of skills, experience, and interests, which shape who we are and how we come to be in the careers that we have. My experience in moving from a systems administrator to a devops role is unique, because, well, we are all unique.
Somewhere around January of 2010 I saw a shift in the future of the systems administrator role. Automation systems and cloud services were going to change things, and I knew that to stay relevant I was going to have to change too. At the time I felt a bit of an entrepreneurial pull, and decided I was going to be an independent Mac developer. I bought the book, set my alarm for an hour earlier each morning, and spent that hour digging through the book learning Cocoa and Objective-C. I did this for months, reading every page, every chapter, and finishing every programming challenge. At the end of the book I started working on my first app, an adoption of a shell script I called “go”.
Go was basically a bookmark manager, but it let you bookmark anything on your Mac. I used it to quickly SSH to servers, mount NFS shares, launch internal management web apps, and other administrative tasks. I was a bit enamored by the delicious generation at the time, and made some rather, well, regrettable UI choices. When the Mac App Store was announced, I knew that I wanted to get my app in there on day one, so I started working right away on version two, or, Go2. Go2 launched in the MAS in 2011, but never sold enough to make it worthwhile. So, after taking a break from development, I started working on the next app, a static blogging app I called “Paragraphs”. I worked on this app for months, launched it, watched it fizzle out, and decided I needed to rethink my professional goals.
During this same period I went to grad school for Human-Computer Interaction. I still saw that I needed to change my professional career path, I was fascinated by design and the science of how we use these machines, and felt it a personal goal of mine to have a graduate degree. So, nights and weekends for two years I was neck deep in a mix of psychology, Adobe Illustrator, OmniGraffle, Silverback, and Python. I graduated with a Masters degree in HCI in 2012, spent a few months at a start up in Des Moines, went back to CDS, and the following year shut down my development company. All while holding down a full time job and raising a family. To say I was stressed doesn’t even come close.
At CDS I was a Linux sysadmin, but I was also very deeply involved in the design and deployment of the architecture. After my boss quit I applied for and was appointed to a new position titled “Systems Architect Consultant”, which was kind of a fancy term for special projects and development. I had been studying automation, cloud architecture, high availability, and the myriad of other topics surrounding devops, but as the systems architect I was solely devoted to researching those topics and designing solutions based on my research. Around the end of my time there CDS sent me to AWS re:Connect, where I was kickstarted into learning just how big AWS was, and the reality of what I foresaw years before hit me with full force.
I could tell that things were not going well at the company though, and two months before a big round of layoffs I made the move to work for a small software shop named Future Health Software as a systems automation engineer. Unfortunately, between the time I interviewed for the position and the time I was hired, the company was acquired by an investment firm that also acquired Future Health’s biggest competitor, Chirotouch.
Not wanting to concern myself with any of the internal politics or rivalries involved in merging two previously competing companies, I dug into my work and learned everything I could about running production workloads on AWS. I kept an open mind, and learned that the AWS systems were meant to be used like a development framework, bootstrapping an application in the most efficient way possible. Of course, most places hadn’t used the service like this, especially the ones that had been using AWS since all that was available was EC2 and S3. So, I set about rebuilding the entire architecture, six years of it, in CloudFormation code, and developing a deployment system based on CodeDeploy.
After several months of setbacks, wrong turns, and distractions of managing the legacy environment, I had a system that could rebuild the entire infrastructure from scratch. I’m quite proud of that work, and hope to someday put it under a production workload. Unfortunately, before I got the chance, the company closed our office and announced that we were going to be let go. Which brings us to today.
Over the years as I’ve worked out where I want to be in my professional life I’ve learned many different technologies. I’ve spent time digging through the Linux kernel source and reading RFCs, I’ve learned to think pragmatically, read and understand code, and build systems from the ground up. I’ve also learned how the people who use the systems I build actually use them, and how the design choices I make affect the usability and reliability of the system.
For me, the path to get from a sysadmin to a devops engineer travelled from Unix to Linux, through Cocoa and Objective-C, past Python and PHP, stopping in HCI, design, and UX, back to Linux, Docker, and now on to the cloud. And you know, what? It’ll never stop. The tech industry moves fast, you’ve got to keep learning your entire life to stay on the right side of that wave. You’ll either ride it, or be crushed by it, but it’ll never stop.
So, be open to learning new things, try something out of the ordinary, push yourself to try something you haven’t done before, and always do your absolute best. I promise it’ll be a heck of a ride.
DevOps & Evolving Systems Administration
The phrase “DevOps” gets thrown around quite a bit, so I thought it might be helpful for me to write down exactly what it means to me. DevOps is the evolution of systems administration. A few years ago, I noticed that the SysAdmin field was finally starting to change, after years of being relatively static. For decades, A sysadmin would set up the hardware, install the operating system, setup SSH (or, telnet in the bad old days), install your application, and get it running. Even when virtualization became more mainstream and worked its way into production workloads, it didn’t change the core tasks of a sysadmin. There were simply more boxes to manage, and without appropriate configuration management, each virtual machine became a unique little snow flake. A few tools became more commonplace like CFEngine, Puppet, or Chef to ease the burden of virtual machine sprawl, but it wasn’t until cloud computing came along that the role of a sysadmin really started to change.
I realized that the traditional role of a sysadmin was going to change over next few years, and I needed to be on the right side of the this wave of change. Today’s sysadmin needs to know code – because the entire infrastructure is based on code. DevOps as a concept means to me that the mindset of a traditional sysadmin in a data center wasn’t going to cut it for the kind of skills needed for the new environment. Hardware doesn’t matter, operating systems don’t matter, the only thing that matters is the ability to run the application, and run it in a way that is stable, scaleable, and secure.
One has to completely change the way they think about infrastructure. A common flaw that I’ve seen is trying to treat AWS like your data center. AWS will let you do that, gladly, but it will be expensive. It’s utility computing, like water. You get your water from the local water company, and you pay for what you use. The water company will let you turn on your faucet and just run water all day, but it will charge you for it and you will pay for far more than what you actually need. That’s why you have to have tooling, in this example a faucet to turn the water off and on. In a similar manner, you need automation systems in your infrastructure to scale up and down as needed.
The other part of the evolution is that you have to stop thinking of the infrastructure as a systems administration task, and instead think of AWS and other cloud providers more like an application programming framework. Tying into building blocks like legos, and picking the appropriate parts to run your application.
Systems administration is evolving in the same way programming languages have, building up to ever higher layers of abstraction. DevOps is simply working with the developers to build the best possible system to run the application.
Everything Changes
And everything is changing for me again. The CTO of the company I work for spoke with me yesterday, our office is being shut down and they are laying off the staff. I’ve got till March 1st to find something new.
If anyone is looking for a good devops guy, let me know!
Mac Power Tools
My brief experiment with mutt ended mostly how I expected it would. With me turning on my email in Mail.app again and carrying on as normal. I try to understand the draw to using such an archaic tool as mutt, but there’s simply nothing about it that appeals to me. Not at this stage of my life anyway.
This time someone emailed me a PDF that I needed to sign and send back to her. A simple process with Mail.app, but I knew that I was going to have to jump through hoops and spend an hour reading the documentation to figure out how to respond with an attachment with mutt. Come to think of it, I should amend my previous statement on how well I know the app. I know how to read and organize my email in mutt, and I can use it to build an offline mirror of my hosted email. I can build a search index for it, and send plain text email. I know how to view attachments and how to use a command line web browser to view HTML email. But, the one thing I didn’t know how to do was the one thing I needed to get done. Something trivially simple with the built in mail client.
So, to the wayside it went. While I was at it, I decided to do some cleaning up of the rest of my command line tools as well. I uninstalled everything I had installed with brew with a simple command:
brew uninstall brew list
Then I reinstalled the few command programs that I knew I needed for work.
brew install jq jsmin rbenv
This mass uninstall also removed MacVim. Something I’ve had conflicting feelings about for a while now. As I said in my last post, MacVim excels at editing text, but I realize I set up a bit of a straw man comparing it with TextEdit. Obviously TextEdit was never the competition with MacVim, instead, I should have been comparing it with BBEdit and Ulysses, my other two text editors of choice.
Like Vim, BBEdit and Ulysses are power tools, but unlike Vim they are Mac power tools. They are built specifically for the Mac environment, by small teams who are dedicated to their craft, and who charge a reasonable, sustainable rate for their product. They approach their jobs in different ways, and are very different applications. BBEdit is built for developers and sysadmins, and has depths of integration and feature set that I’m only just beginning to explore. Ulysses is built for writing prose, and it’s where I’m writing this. Honestly, it’s beautiful.
We live in a blessed era of Mac productivity. We have almost an embarrassment of riches when it comes to incredibly well crafted third party applications, and we still have access to all the low-level Unix tools that attracted me to the platform thirteen years ago. I’ve waffled back and forth over using the old tools and adopting new ones, but I’m getting too old for that. I simply want my tools to work for me. As of right now, I don’t imagine I’ll be going back to mutt, vim, or anything else command line. Not when there are fantastic Mac apps that do the job either just as well, or better.
Power Tools
After reading through Matt Gemmell’s latest post on mutt and the good doctor’s response, I fired up my old mutt config and gave it another run through. Well, after being a bit snarky on Twitter, of course.
I’m always of two minds when it comes to using Unix tools on a Mac. On
the one hand, I want to live in the future, where everything is
beautiful and powerful, simple and easy to use, but functional enough to
do everything I want. That future might never come, but sometimes it
feels as if its right around the corner. On the other hand, I know Unix.
I make my living on the command line, and have for years. I’ve got a
customized .vimrc
file that’s setup just the way I like it. I know
how to zip around mutt. I could even setup mpd to play music instead of
iTunes if I felt like it. That constant friction of how I wish things
were hits up against how I know things are on a daily basis.
I know how to get things done quickly and efficiently, but sometimes I just don’t want to do it that way. I want to live in the future, not the past. But, once you know how to use the power tools, the knowledge will forever be present in the back of your mind, a quiet voice that says “you know how to do this, you know how to make this better”. However, it’s important to know when to take advantage of a power tool, and to avoid unnecessarily fetishizing the command line.
Living in the Apple ecosystem has benefits. Pictures I put in the Photos app are available everywhere. Likewise with music in iTunes Match. Any document I edit in TextEdit is automatically versioned without my needing to think about it. Apple designs their products to work well together, but they also design them to appeal to the largest audience possible, which may or may not include me.
Take TextEdit as an example. It’s a basic text editor, it can edit a Markdown document just fine, but when I edit Markdown in MacVim I’ve got access to my years of keyboard navigation and key combos for doing things like inserting links and switching between inline links and reference links. As previously mentioned, TextEdit automatically versions it’s documents, but with a couple of modifications, so does MacVim. TextEdit is a general purpose tool, MacVim is a power tool, they are not really in the same category, except they can both edit a text document.
Maybe that’s the differentiation I’ve been searching for. TextEdit can, as it’s name implies, edit text files, but MacVim excels at it. Mail can send and receive email, it’s a general tool best for most people. Mutt is a power tool, best for specific use cases when you already have the background knowledge to be able to take advantage of it.
Knowing how to use the power tools will make you a better computer user. Knowing when to use a particular tool, and knowing which tool is the best one for the job, makes you an expert.
Mac Magazine
Sometimes I think I’d like a really great magazine, like The New Yorker, but for Mac geeks. A beautifully printed, monthly magazine with all the best news, tips, opinions, analysis, predictions, and howtos from the Mac community. I’m not looking for what Macworld used to be, I’m thinking more along the lines of The Atlantic. Something classy, something worthy of printing and keeping out in the living room under the coffee table. Something I’d look forward to reading cover to cover every month.
Of course, it would have the best of John Gruber for the month, something argumentative from Marco Arment, and maybe a bit of Mac history from Stephen Hackett. The tech news would be covered by Jim Dalrymple, Jason Snell, and Dan Moren. Shawn Blanc and Matt Gemmell would add some flavor to the mix, we’d get a taste of the future from Federico Viticci, and on the back page would be Dr. Drang’s script of the month. To be honest, I’d probably read that last page first, and then read the rest of it. Heck, Gruber could call the entire magazine Daring Fireball and color the entire front of the magazine gray with his star lightly embossed in a slightly darker gray and, well, it would be fantastic.
Perhaps it’s a bit silly to be dreaming of a magazine at the end of 2015, but it’s something that doesn’t exist that I wish did. If I wish it existed, I’m sure there must be others who would like it too. A physical, intentionally designed magazine with beautiful print, carefully chosen advertisements, and pages that felt good when you flipped them. Something that felt like it might be around in a hundred years, if you take care of it.
Of course, as far as I know none of these folks are interested in collaborating on such an endeavor. Each of them is building their own business, building membership programs and selling ads. I added up a few of my favorite sites membership programs to see what the monthly total would be:
- Six Colors $6/mo
- The Loop $3/mo
- MacStories $5/mo
- Relay.fm $5/mo
- Shawn Blanc $4/mo
- Matt Gemmell $4/mo
- Brooks Review $4/mo
Total: $31/mo
For comparison, the New York Times sells for $35 per month for the “All Digital Access” package. You can subscribe to The New Yorker for less than five dollars per month, and subscribing to The Atlantic for a year equates to paying $2.50 per issue for ten issues. Food for thought.
Of course, I can’t end this dreamy article without mentioning Marco’s ill fated “The Magazine”. What I’m proposing and what The Magazine turned out to be aren’t really in the same ballpark, other than having some of our favorite characters involved in its creation. The Magazine was purposefully not a “tech” magazine, it was about writing. It was also not a printed magazine, it was a subscription digital magazine aimed at the iPad’s Newsstand app. What I’m proposing is an old fashioned printed magazine, about tech, with my personal favorite writers, superbly designed and excellently illustrated. It would be awesome.
So, of course it will never exist.
Winning NaNoWriMo
So, I won NaNoWrimo, and wrote a “novel”. Although, it’s not really a novel, more like a novella, and it’s not really written just yet, it’s 50,000 words that somewhat make up a complete story, but with more plot holes than you can shake a stick at. Couple that with the number of inconsistencies in the world building, flat characters, characters who’s names I forget half way through the writing, and two chapters that I decided I was going to throw away completely, and you’ve got what is colloquially known as a first draft.
Here’s how I did it.
Minimize Decisions
If you’ve read my old posts, you might have picked up that I was once a big fan of Vim and the command line. Those days have past. Vim can be fun, but it can also be one of the biggest time sinks I’ve ever encountered. Can you write long form in Vim? Sure, but it takes more self discipline than I have to not try to tweak the configuration just a little bit more.
Instead, I wrote my story using the excellent Ulysses editor, “a powerful tool made for writers.” In fact, I’m using it to write this right now.
Set Daily Goals
My favorite feature of Ulysses is the word count goal. To win NaNoWriMo you need to write at least fifty-thousand words in thirty days. So, divide fifty-thousand by thirty and you get one-thousand six-hundred sixty-seven words per day. I set up thirty “sheets” in Ulysses, and attached the daily word goal to each one. I labeled each sheet as a chapter, and wound up with three acts of ten chapters each.
When I sat down to write each day, I wrote until the Ulysses goal circle turned green and wrapped up the chapter. Being able to keep an eye on the daily goal, and knowing that if I met it the circle would turn green gave me a great sense of accomplishment throughout the month. I always knew how much I had to write, and that I was on track.
Enforce Focus
If left to my own devices I’m perfectly happy to check Twitter every ten to fifteen minutes. Or seconds, depending on the day. I knew that I was going to have to give up everything distracting and time wasting to focus completely on writing. To help I signed up with RescueTime. RescueTime tracks how you use your computer, and sends you an email with weekly reports on how you’ve spent your time. You can classify websites or apps as highly productive or time wasters, and you can use the “Get Focused…” feature to block time wasting sites for a specified period of time. I’d shoot for an hour at a time of enforced focus, and wound up getting a lot done.
Prepare
Months before NaNoWriMo started, I started brainstorming in MindNode and outlining my plans in OmniOutliner. I used these two tools to explore the universe I was building, flesh out characters and motivations, define a (somewhat) cohesive plot, and plan out a chapter by chapter flow of what should be going on at a given point in the story.
It didn’t take long for the story to take on a life of it’s own and diverge from the outline I so meticulously wrote up, but knowing it was there was a huge mental safety net, I knew that no matter how far off course I got, if I needed to I could refer back to the outline and get the story back to where it needed to be.
BIC
More than one night I nearly didn’t meet my goal. I had nights where each and every word had to be pulled kicking and screaming out of my head and through my hands. I had nights where I was so tired that I literally fell asleep while typing, and had to go back and remove the gibberish on the screen. Then again, I had nights where the story almost wrote itself, where I was merely the conduit for the story to be told, and the goal was met in an hour or so. The important thing was that no matter what, I was writing. Every day.
Sit down and write, lose yourself in the story, get excited about action, and be thoughtful during introspective scenes. Most of all, just keep writing. Don’t edit, don’t worry and fuss over sentence structure, there will be plenty of time for that after November. Put your butt in the chair and write.
US Cellular Strikes Back
Let me start by saying that US Cellular has the best coverage in Iowa. No matter where we go in the state, we’ve got a great signal, almost always in LTE. My Internet access is fast, and I can’t remember the last time I dropped a call. The cellular service is great, and the only reason I stick with US Cellular. After days like today I need to remind myself of these facts, because almost every time I interact with them face to face, on the phone, or over the Internet I leave frustrated and feeling like I’m being duped.
I got an advertisement email from them a week or so ago. That in itself is questionable because I’m sure I unsubscribed, but whatever, we’ll leave that alone for now. The email’s subject line advertised “Act now and we’ll waive the Activation Fee – a $25 value!” Knowing that my wife and daughter were due for new phones I forwarded the email to her and suggested that maybe now was the right time. She agreed, and the first chance the two of us had time we headed to our closest store. We’ll call this Store Number One.
The staff at Store Number One were knowledgeable, pleasant, and courteous. We came in, sat down, told her that we wanted to upgrade two lines, and she went to get the 16GB iPhone 6S. At the mention of the 16GB model I hit the brakes, I knew that would not be enough for her, she has a 16GB model now and it’s too full to work properly. We asked for the 64GB version, but they didn’t have any in stock. The woman we were working with was kind enough to call around to several of the other stores in town, and finally found one with a few in stock that was only a ten to fifteen minute drive from where we were. We thanked her for her help and left for Store Number Two.
Store Number Two was nearly empty, and we were sat down right away. The store had the right phones in the right sizes in stock, and we were ready to close the deal. Then my wife remembered the email about waving the activation fee, and we asked if they would honor the advertisement. The agent didn’t know anything about it, and asked if I still had a copy of it. I did, (in my email trash, but I still had it), and he took my phone to show the email to his manager. They talked for quite a while, and the manager decided that they couldn’t honor the no activation fee in the store, but said if we went online we could get it there. We talked it over briefly and decided that it was probably a good idea to save $50 and wait a day or two and headed home to get online, Store Number Three.
While online with Store Number Three, I noticed in my account that it didn’t appear that the correct discount was being applied to one of our lines. At this point, I need to make a brief digression to explain the importance of this particular discount.
US Cellular, like all the other major carriers, has shifted away from subsidizing smart phones and instead is financing. To offset the price of financing the phone, US Cellular is offering to discount the normal $40 monthly “connection fee” per line down to $20. Then the financing of the phone costs $15-$30 or so, making the offer more desirable because the monthly cost of owning the phone stays roughly the same.
When I looked at my bill online, I didn’t see the discounted connection fee, I saw the full $40 fee and the finance charge for the phone. I knew this was wrong, so I clicked on the live customer support chat button and was connected with a representative. I explained my situation as best as I could, and she did the appropriate amount of checking. She found two problems: one, the online view I was seeing did not reflect the correct connection fee, but the view she was seeing did. The line I was asking about was getting the discounted fee. And two, the other two lines on my account were not getting the discounted fee, and should have been. She corrected this issue, and I was happy to move along, although I was still a bit apprehensive that what I was seeing online was not representative of reality. I even pulled up a recent bill and started going through it to make sure it was correct there.
Once I was happy enough with the existing monthly bill, I asked the representative in chat about waiving the activation fee, like the associate in the store said. Apparently I was misinformed.
I do apologize that isn’t accurate you will still get charged the activation fee for the phone it is $25.00 when you finance. I apologize for the information that was provided.
Ok, great, so we could have stayed at the store in town and bought the phones there. No saving $50 today I guess. But, just to make sure, I asked her about the email I got. She responded:
If you received an email with that information did it give you a promo code with it?
“If”? What do you mean “if”? I looked through the email and didn’t see a promo code, but I did find some type of code at the bottom of the email. I sent that to her but she couldn’t find anything, so she asked me to forward the email to her, which I did. She then disappeared for a while, and came back with the final answer:
Thank you so much for holding we didn’t find that promotion but, that is only if you get the tablet and the activation fee for the tablet would be waived that isn’t for the cell phones. I do apologize.
To which I said that it wasn’t clear from the email at all that the offer was only for an Android tablet.
Awesome have I addressed all of your concerns for you today?
Awesome.
So, we went through three stores, three representatives, and found at least four errors in the US Cellular system. It seems to me that at least one of them could have gone ahead and said, “sure, we’ll be happy to honor that email you got, even if it wasn’t originally intended this way.”
I always leave my dealings with US Cellular with the not-so-faint feeling that I’m getting ripped off.
Faith, Hope, Love
What if Christians actually lived the way Jesus commanded us to?
Love your enemy.
I’m afraid we’ve gotten a bad name, mostly because we haven’t been living the way Jesus told us to. Mahatma Gandhi is quoted as saying:
“I like your Christ, I do not like your Christians. Your Christians are so unlike your Christ.”
What does it take to be like Christ? There are many verses in the Bible that instruct us on how we should live our lives. One of my favorites is Matthew 5, versus 38-48:
38 “You have heard that it was said, ‘An eye for an eye and a tooth for a tooth.’ 39 But I say to you, Do not resist the one who is evil. But if anyone slaps you on the right cheek, turn to him the other also. 40 And if anyone would sue you and take your tunic, let him have your cloak as well. 41 And if anyone forces you to go one mile, go with him two miles. 42 Give to the one who begs from you, and do not refuse the one who would borrow from you.
43 “You have heard that it was said, ‘You shall love your neighbor and hate your enemy.’ 44 But I say to you, Love your enemies and pray for those who persecute you, 45 so that you may be sons of your Father who is in heaven. For he makes his sun rise on the evil and on the good, and sends rain on the just and on the unjust. 46 For if you love those who love you, what reward do you have? Do not even the tax collectors do the same? 47 And if you greet only your brothers, what more are you doing than others? Do not even the Gentiles do the same? 48 You therefore must be perfect, as your heavenly Father is perfect.
These versus are easy to read, but hard to act out. Let someone slap me? Let someone sue me and give him more than what he asks for? Love people who hate me? Maybe I should bake two cakes for the gay couple who asks me for one. Jesus sets a high bar for his followers. I’m not perfect, far from, but I do try to be just a little bit better than the man I was yesterday. Everyday, just a little bit better. How important is love in being a better person? 1 Corinthians 13 explains further.
If I speak in the tongues of men or of angels, but do not have love, I am only a resounding gong or a clanging cymbal.If I have the gift of prophecy and can fathom all mysteries and all knowledge, and if I have a faith that can move mountains, but do not have love, I am nothing.If I give all I possess to the poor and give over my body to hardship that I may boast, but do not have love, I gain nothing.
Without love, I am nothing. If we do all these acts without love, they are worthless. But how can I love someone who wants to do me harm? What kind of love is he talking about? The next few versus in 1 Corinthians 13 explain exactly what love is.
Love is patient, love is kind. It does not envy, it does not boast, it is not proud.It does not dishonor others, it is not self-seeking, it is not easily angered, it keeps no record of wrongs.Love does not delight in evil but rejoices with the truth.It always protects, always trusts, always hopes, always perseveres.Love never fails.
This next year we are going to be electing a new President in the United States. Election seasons always bring with them divisiveness, but it feels to me like it’s gotten worse in the past few years. As a Christian I feel a certain pressure from other Christians to vote conservative, but when I consider the options I always go back to Jesus’ command to his followers to love each other, to love their neighbors, and to love their enemies. Paul expands on the idea in Romans 12.
14 Bless those who persecute you; bless and do not curse them. 15 Rejoice with those who rejoice, weep with those who weep. 16 Live in harmony with one another. Do not be haughty, but associate with the lowly. Never be wise in your own sight.
Paul follows it up with a verse that I’ve taken to heart and try to live my life by:
18 If possible, so far as it depends on you, live peaceably with all.
So, I should love the people around me, say good things about people who are harsh with me, and live peacefully with everyone. Does that sound like the standard conservative rhetoric? Well, not to me.
But what if I’m really upset with someone? The world is going down the drain and everything I believe in this country is being questioned and I feel personally slighted. What then?
19 Beloved, never avenge yourselves, but leave it to the wrath of God, for it is written, “Vengeance is mine, I will repay, says the Lord.” 20 To the contrary, “if your enemy is hungry, feed him; if he is thirsty, give him something to drink; for by so doing you will heap burning coals on his head.” 21 Do not be overcome by evil, but overcome evil with good.
Never avenge myself. Even if I’ve been wronged, even if I’m put in a situation I don’t agree with, even if I’ve been slapped across the face. It’s not up to me to take an eye for an eye. The Bible very clearly says that is up to God.
On the matter of the clerk who took it upon herself to stop issuing marriage licenses. This is the test for determining where the motives of someones actions originate. Is what is done, done in love? Does the action adhere to the instructions from Jesus? Is it Christian to deny a gay couple a marriage license? If your action does not begin and end with love, but instead you are taking a small amount of vengeance out on someone you have perceived as wronging you, doesn’t that explicitly go against the plain teaching of the Bible?
The Bible explains to us how we should live our own lives. It does not tell us to judge everyone else on how they are not living up to God’s standard. Here’s news, no one is. “All have sinned and fall short of the glory of God.” Christians, including myself, consider homosexual relationships a sin. But, we also consider cursing to be a sin. My understanding is that God does not rank sin, so mine is just as bad as anyone else. The occasional curse word that I might drop under stress is just as much an affront to God’s holiness as homosexuality.
The argument is not if homosexuality is wrong or not, it’s that each of us are at a different stage in our journey. Some of us are not saved yet and are living in darkness, some of us have been saved by faith in Jesus are are undergoing the slow, transformative process of sanctification.
I don’t think that what the clerk did was right, but I can’t judge her anymore than I can the couples she was denying marriage licenses to. All I can do is watch the world and wonder, what if we all lived the way Jesus told us to? What a magnificent world that would be. What if we could all act with selfless love towards one another? Perhaps, just maybe, Christians should be the light of the world, showing the amazing, transformative power of salvation though Christ. Maybe we could all do a little more of that and a little less judging.
And now these three remain: faith, hope and love. But the greatest of these is love.
The greatest of these is love.
Moby Dick
I’ve been slowly working through my list of books, and Saturday I finally knocked another one off the list, Moby Dick. Herman Melville’s whaling epic took me a while. Inside those 663 pages, there’s probably a good 300 page book, as it is, Moby Dick covers both the human condition and the intricacies of butchering a whale in the middle of the ocean.
I found brief flashes of masterful prose in the book, some familiar quotes from Star Trek movies, and, surprisingly, I found bits of humor towards the start of the book. When Ishmael and Queequeg meet, Ishmael is already in bed when Queequeg comes into the room, undresses and crawls into bed next to him. Ishmael is scared stiff of the strange foreigner, and tries to stay quiet until Queequeg does something to frighten him, Ishmael jumps, and Queequeg jumps, and the entire scene reads like a comedy.
The comedy doesn’t last long though. Once onboard the Pequod the book turns to symbolism, quite a lot of it frankly over my head. I understand the main points. Captain Ahab, driven mad with desire for revenge against the whale that took his leg, sacrifices everything he has and everyone he knows in his monomaniacal pursuit of a single whale in the great, wide ocean.
He does finally find his whale, but between the time that they set sail and the time they finally catch up to the whale, there is a long period of general whaling. In this, we get to find out about the differences between the Right Whale and the Sperm Whale, and why the Sperm Whale is the most fearsome beast in the ocean, and how to kill one when you find it. Not only that, but how to decapitate the whale once killed, strip the blubber from its hide, and stock up the spermaceti for transport. All of this I could have done without.
What I did find interesting was the relationship between Ahab and his first mate, Starbuck. By the end of the book Starbuck wants desperately to return to Nantucket, and call off the hunt for the whale. Ahab, driven solely and completely by his need to kill the white whale refuses. Starbuck considers killing the captain, sneaks into his cabin with his gun and contemplates murder, but he can’t do it. Starbuck can’t allow himself to take another mans life, even if it would have meant saving the lives of everyone else on the ship.
Ahab’s obsession destroys him, and his entire crew, except the one who survived to tell the tale. In the end, Ahab knew he was beat, but he refused to give up.
“Towards thee I roll, thou all-destroying but unconquering whale; to the last I grapple with thee; from hell’s heart I stab at thee; for hate’s sake I spit my last breath at thee. Sink all coffins and all hearses to one common pool! and since neither can be mine, let me then tow to pieces, while still chasing thee, though tied to thee, thou damned whale! Thus, I give up the spear!”
The purity of Ahab’s obsession is best captured in this famous quote:
“All that most maddens and torments; all that stirs up the lees of things; all truth with malice in it; all that cracks the sinews and cakes the brain; all the subtle demonisms of life and thought; all evil, to crazy Ahab, were visibly personified, and made practically assailable in Moby Dick. He piled upon the whale’s white hump the sum of all the general rage and hate felt by his whole race from Adam down; and then, as if his chest had been a mortar, he burst his hot heart’s shell upon it.”
- Moby Dick, Herman Melville
Ahab felt that all wrong, all evil, all torment for all of history was the fault of Moby Dick. Crazy, right?
That’s one of the issues I have with the book though. Melville kept telling us how mad Ahab was, but for most of the book he just seemed like a jerk. Obsessive, yes, but crazy? It would have been more interesting to see more of the inner workings of Ahabs mind in the earlier and middling parts of the book than at the end.
I’m glad to have read the book, but I’m not sure I’ll ever read it again. It took months for me to get through, I just kept losing interest. Like McNulty likes to say, there’s probably a fantastic 300 page book inside the 660 pages of Moby Dick.
Link Blogging With Quicksilver
I can’t quite make up my mind on how I feel about “link blogging”. On the one hand, there’s already a lot of people out there who do it better than I can. On the other hand, sometimes I want to share something and make a few pithy comments about it. It’s out of that second feeling that this script is born.
The script started out as an Automator action, but having an Automator wrapper around a single shell script seemed like overkill.
#!/bin/bash TITLE=`osascript -e 'tell application "Safari" set pageTitle to (do JavaScript "document.title" in document 1)end tell'`URL=`osascript -e 'tell application "Safari" set pageURI to (get URL of document 1) end tell'`TEXT=`osascript -e 'tell application "Safari"set selectedText to (do JavaScript "(window.getSelection().toString())" in document 1)end tell'`QUOTEDTEXT=`echo -n ">"; echo -n $TEXT`LINK=`echo -n [Link]; echo -n \($URL\)`NAME=`echo $TITLE | sed s/\ /-/g`USERNAME=`whoami`POSTNAME=`date "+%Y-%m-%d"-$NAME` echo $POSTNAMEPOST_FQN=~/Public/Site/_posts/$POSTNAME.markdownPOST_DATE=`date "+%Y-%m-%d %H:%M:%S"`echo "---" >>$POST_FQNecho "layout: post" >> $POST_FQNecho "title: $TITLE" >> $POST_FQNecho "date: $POST_DATE" >> $POST_FQNecho "---" >> $POST_FQNecho "$LINK" >> $POST_FQNecho "" >> $POST_FQNecho "$QUOTEDTEXT" >> $POST_FQNecho "" >> $POST_FQNecho $POST_FQN/usr/bin/open $POST_FQN
That first line is pretty ugly. I don’t recall when I wrote this, but it’s been working reliably for long enough that I don’t feel the need to change it just yet. Then again, a shell script that calls AppleScript that calls JavaScript seems pretty ridiculous.
This script looks at the current web page in Safari and grabs the title, URL, and any selected text and builds a new post in the format my site builder script expects. Similar to my previous New Post script, this one opens the new file in MacVim, ready for writing.
I call the script from Quicksilver using the Run…
command, and tied
the command to ^⎇ ⌘ P
for a hotkey.
I might start putting more links on the site. There are often things that I find might be interesting to a certain segment of the Mac community, mainly the more technical and scientific groups, that I haven’t done anything significant with. I’d like to change that.
Starting a New Post With Automator
Automator is one of my favorite tools on the Mac, and unfortunately one of the most unappreciated. I have several workflows and services that I’ve built up over the years, things that I could have turned to a third-party tool like Keyboard Maestro, Alfred, or even my beloved Quicksilver for, but I like the simplicity of using a built-in application.
My “New Post” workflow is a simple example of using Automator to mix GUI elements with a shell script. There are only two actions. The first uses the “Ask for Text” action to prompt for a post title, and the second uses the “Run Shell Script” action to run this bit of bash:
NAME=`echo $* | sed s/\ /_/g`POSTNAME=`date "+%Y-%m-%d"-$NAME`POST_FQN=~/Public/Site/_posts/$POSTNAME.markdownPOST_DATE=`date "+%Y-%m-%d %H:%M:%S"`touch $POST_FQNecho "---" >>$POST_FQNecho "title: $*" >> $POST_FQNecho "date: $POST_DATE" >> $POST_FQNecho "tags: " >> $POST_FQNecho "---" >> $POST_FQN/usr/bin/open $POST_FQN
The first line removes spaces from the title passed to it from the Ask for Text action and replaces them with underscores so I can use the title as the URL slug. The second line adds the creation date1 to the file name, and the third creates a full path to the file. The fourth line simply creates an empty file with the correct naming scheme for my site generator tool.
The collection of echo
statements on the next few lines add YAML
frontmatter to the post, a bit of residual formatting from the sites
Jekyll roots. Finally, I use the Mac’s open
command to start my
favorite text editor, normally MacVim, and start writing.
Using Automator can be frustrating at times, especially when there is no action for something you think there should be an action for, but for manipulating text and mixing in scripting, it’s not bad.
-
With apologies to Matt Gemmell. I’ve not yet committed to removing the ugly cruft from my URLs. ↩︎
A Runner
My workout this morning called for five miles. Run two, walk one, run the last two. I think in the Fall or Spring it would have been fairly easy, but today, in the July heat and humidity, every step felt like dragging a pair of anchors. My muscles gave out sooner, my breath ran out faster… it was a hard workout. I finished it though, because what I’ve learned is that even when it’s hard, even when you are having a tough time and not going as fast as you’d like, you always have to finish.
I never imagined myself as a runner. I certainly don’t look like one. Before I started this friends of mine would talk about running marathons and half-marathons I’d look at them in wonder and think how I’d never be able to do something like that. Now I’ve run two 5ks, one 10k, and I’m scheduled to run another 5 and another 10 in the next few weeks. I get up at five almost every morning during the week and run, and normally have another long run on Saturday. I think after a few years of this I’m finally comfortable enough to say I’ve become a runner. Today, even though I’m not ready to say I’m training for a marathon, the possibility is there, for the first time in my life.
I’m not sure this would have happened without my iPhone. Every morning I strap it on my arm, launch the Nike+ app, start a podcast in Overcast in the background, and start the day. Before I used Nike+ I used the excellent Couch to 5k app, which gently took me through getting off my lazy butt and pounding the pavement. The most important thing I took away from that app was the routine. Once I ran the 5k I didn’t want to stop, so I switched to another app and a longer goal and kept going.
Running is my time. It’s what I do for myself, it’s how I make sure that the day is started right. It’s how I can put my busy mind to rest. It’s how I can balance staring into a computer screen all day solving puzzles with my concept of who I am and who I should be. Running is hard, running hurts, running is difficult and uncomfortable, running is calming, running is meditation.
I run in the heat and humidity. I run in the rain. I run in the freezing, bitter cold of winter. I run in the dark. I run before daybreak and I watch the sunrise over a pond along my route. I run with my dog. I run alone. I run in new shoes that give me blisters on my heels. I run when it hurts. I run when the weather is crisp and cool, and I’ve got all the energy in the world, and my legs forget their burden and carry me for miles and I feel like I could run around the world.
I’m a runner.