I always enjoy both recording and listening to Clockwise; you probably will too.
In so many ways, I’m still riding the wave.
After four years of trying, when we finally had Declan, it felt like a tremendous weight was off of our chest. As I said to Erin repeatedly over the first several days, we did it. We had finally come to the end of this arduous, seemingly endless road that we had been on. Of course, we didn’t have much time to look in our rearview mirror; infants wait for no one.
Over time, we settled into our new normal. In many ways it likely was—and
remains—harder for Erin than it is for me. I disappear for 8-10 hours a
day almost every day. Erin, however, has no
Off position. I try to take Declan
as much as I can on the weekends, but for her, she’s never really not Mommy.
Despite this, after a couple years, the struggle to bring Declan here fades, even if only slightly. It’s a memory how hard raising an infant is. We remember that visiting the fertility doctor is inconvenient, frustrating, and often fairly demoralizing; but it was so long ago. We fall out of the habit of living our lives around Erin’s cycle; remembering now it is often times disrupting.
It’s the same as it ever was.
Naturally, our ever-optimistic families have a different party line, mostly regarding Erin: “You never know! Maybe now that your body has done it once, it knows exactly what to do!”
It was quickly apparent that we were not that lucky.
As we restart our journey, Erin and I don’t realize that it’s disrupting to more than just us now. It’s exceptionally selfish to bring a child to a fertility clinic, so that means we need to ask family or our friends to watch Declan as we go. We have to schedule appointments around not only our own schedules, but that of another person entirely: Declan.
Perhaps it’s not that much like last time after all.
What’s most striking, though, is how different our attitudes are. When we were walking this path trying to conceive Declan, every single moment was monumental. Every time seemed like our last shot, even when it really wasn’t. Every time we were worried, scared, nervous, and most of all, hopeful.
As Erin and I start following the same procedures, and have the same kind of help as we did last time, we realize how this is our new normal. Even moreso than with Declan. While it definitely sucks, going through all these motions doesn’t carry the same weight it did. Even if we can’t conceive this time, we’ve still succeeded already; we’re still parents.
We got lucky… again.
We’re so happy to share that Erin is pregnant again!
As I write this, Erin is 19 weeks along. So far, everything seems well. Erin had the pleasure of dealing with a fair bit of nausea for the first trimester, but for the last several weeks, that has subsided. To my eyes, she’s showing more—and sooner—than last time. I find that adorable; Erin is still… adjusting. 😉
Someone else, however, has been particularly interested in the goings on.
As with last time, we needed to pick a designated emoji. “Sprout”—🌱—is a high bar. After much deliberation, Erin and I landed on “Sprig”—🌿.
We don’t know 🌿’s gender yet, but there’s a sealed envelope in our house that does. This may be our last opportunity to get the surprise of the gender at the time of birth, so we’re attempting to hold out. That said, a smart gambler would bet on us caving and opening that envelope sooner rather than later.
Declan refers to Sprig as a “he”, but he talks about his “baby sister”. 🤔 As one would expect, Declan has also informed us that he, too, is growing a baby in his belly. In fact, he’s even asked for us to take a picture of his growing belly before we take weekly shots of 🌿. 😂
We’re petrified, but excited. We’re thrilled, but worried. So much of this feels so much different than last time. We’re more relaxed, and yet, in so many ways, it’s the same as it ever was.
Either way, if all goes to plan, we’ll meet you in the first week of January, Sprig. Well, unless you come early, like Declan did…
I know I speak for your momma, and your older brother, in saying:
We can’t wait to meet you.
Last Thursday, I discussed
youtube-dl, a tool that allows you to
easily download various kinds of media from the web. What happens once you have
that media? Or what happens if you want to do something with media you already
ffmpeg is almost always the answer. It can take nearly any form of audio
or video media and convert it to almost any other form. It can extract clips,
transcode media, rotate it, crop it, downsample, upsample, etc.
is truly omnivorous.
I’ve spoken about
ffmpeg many times in the past, and I’ve often been asked to
write a primer on how to use it. To cover every nook and cranny of
take forever, so instead I’ll just cover a handful of examples I find myself
The easiest way to install
ffmpeg is to use Homebrew:
brew install ffmpeg
There are some nuances to installation if you want support for certain sub-sets of functionality, but the above will at least get you started.
Let’s say you downloaded a file using
youtube-dl and it ended up in a format
you didn’t expect:
The resulting file is of type
.mkv; let’s say the full filename is
input.mkv just to make things easier. MKV files are not a format that
Apple OSes tends to like. Let’s suppose you want to convert that into something
more Apple-friendly, like a
.mp4. That’s simple to do:
ffmpeg -i input.mkv output.mp4
We’re using the
-i parameter to specify the input file to
ffmpeg, and then
we’re simply specifying the output file. By virtue of the
ffmpeg is smart enough to divine what to do.
Similarly, if we wanted to extract the audio from this video after we’ve already downloaded it, we could do so as such:
ffmpeg -i input.mkv output.mp3
Again, the presence of
.mp3 will tell
ffmpeg all it needs to know.
If you actually watch the video, there’s an intro section and an outro section
that we really don’t need. The intro ends at 46 seconds. We can
ffmpeg to start the output at that point:
ffmpeg -i input.mkv -ss 00:00:46 output.mp3
Here, we’re using the oddly-named
-ss parameter to set the
into the input we wish to seek before we start “recording”, so to speak.
However, we haven’t gotten rid of our outro yet, which lasts for the last six
seconds of the video. We can handle that using the
-to option, which sets when
to stop processing the input file, in the time system of the input file. Since
output.mp3 is 4:34 seconds, then we need to subtract 6 from that, to land on
ffmpeg -i output.mp3 -to 00:04:28 trimmed.mp3
What if we wanted to do both at once? We can use the
-to parameter to set
the end point (again, in terms of the input), in addition to the
-ss to set
the start time. Note, though, we’re using the original file as the input again.
Thus, we have to change the end point for the
-to since we’re starting from
the full file, not the one with the intro clipped. Finally, we land on this
ffmpeg -i input.mkv -ss 00:00:46 -to 00:05:13 trimed.mp3
In one shot, we’ve:
- Stripped the audio
- Transcoded the audio
- Trimmed the beginning
- Trimmed the end
Pretty cool stuff, and pretty easy, once you learn to speak
What if you download a different file, but it has bars on the top/bottom or left/right?
In this case, we’d like to remove the small black bars on the left and right sides of the video. We know we need to take off about 10 pixels total; 5 on both the left and right sides. We can do so by using a video filter:
ffmpeg -i input.mp4 -vf "crop=in_w-10:in_h" cropped.mp4
crop parameter to the
-vf (video filter) parameter indicates what the
resolution of the width and then height of the output video should be. We use
in_h macros to indicate the source width and height; then we
10 from the width.
Continuing with the above example, we can make this ever-so-slightly faster. We
know that we want the final file to be in the same format—
the source was. Since we’re not doing any sort of modifications to the audio, we
ffmpeg to copy the audio codec:
ffmpeg -i input.mp4 -vf "crop=in_w-10" -acodec copy cropped.mp4
Since the audio is far easier to process than the video, this isn’t the best
example, as the time savings are marginal. However, in some cases, you may be
able to get away with copying the video codec using
-vcodec copy. In those
cases, that is a big time savings.
It’s beyond the scope of this article, but a nice way to figure out if you can
-vcodec copy is to run a command with no output:
ffmpeg -i input.mp4
That will tell you what the video and audio streams are:
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 819 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc (default) Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
In our case, we know that the video is
h264, which means that we can
-vcodec copy is possible if we’re converting to
Variable Bit Rates
Related to codecs, when left to its own devices,
ffmpeg will encode
a constant 128kbps. That’s sufficient, but I prefer to use a variable bit rate.
To do so, we use a less intuitive incantation:
ffmpeg -i input.mkv -codec:a libmp3lame -qscale:a 2 output.mp3
This is… completely bonkers. Ridiculous incantations like these—if not the
ones that preceded it—are why
ffmpeg gets a bad name. However, the sheer
ffmpeg makes it an indispensible tool that I can’t imagine living
I’ve set up a folder in the Apple Notes app with a series of “recipes” for
As I find a new task I want to accomplish, I determine what the recipe is, and then
write it down as a new note in that folder. You may find the same tactic is useful
for you. Regardless, most of that “recipe book” has been recreated above.
I know the command line is scary, but
ffmpeg is worth getting over it. Everything
you do in
ffmpeg is non-destructive, so the only harm in playing around is
wasting time and listening to your computer’s fans scream. At first I never did
anything more than transcoding using ffmpeg, but over time, I’ve gotten to be
pretty confident with it.
I recently wrote about BMW’s The Hire series, starting a hopefully-weekly series about things that I like. That was… two weeks ago. Can’t win 'em all.
Nevertheless, today I’m back at it, and I have something else I like that I’d
like to highlight:
Have you ever wanted to download something that was available on YouTube? Perhaps you wanted to grab only the audio, but didn’t need the video? Perhaps, of a song you enjoy or of a concert you recently stumbled on. Maybe you want to grab something that isn’t on YouTube at all?
youtube-dl can do all of these things. And much, much more.
youtube-dl is a command line utility that allows you to download video (or, if
you prefer, only the audio) from a staggering list of websites. I know
that as soon as I say “command line”, many will go running. Seriously though,
it’s really simple:
Wait a little while, and you’ll have a download sitting on your local disk.
What if you just want audio? Easy-peasy.
youtube-dl -x "https://www.youtube.com/watch?v=iCXItGrjqrw"
What if you wanted to download something that, as far as you can tell, is only
available via streaming via the web? In many instances, you can use the developer
tools in your browser of choice to find the
m3u8 playlist that is being streamed,
and feed that to
youtube-dl. It will
download the stream and save the result locally. This has… come in useful…
from time to time.
youtube-dl is a staggeringly useful tool that I use easily every single week.
If you’re one who likes to build up a large library of oft-watched videos,
it’s indispensible. Or, perhaps if you are just wanting to watch a video on a
long flight, you can download it onto your laptop in advance. Either way, there
are other tools similar to
but I’ve not found one I like more.
We’ve heard some interesting things over the past few weeks:
- The next iPhone may support wireless charging
- The next version of Xcode supports wireless debugging
- The existing iPhone is water resistant, to about a meter
- The iPhone 7 dropped the headphone jack
Most obviously, the headphone jack is already gone. Furthermore, we’ve been programmed that Bluetooth audio is the future. If we add wireless charging, do we really need a lightning port anymore? Especially in a halo phone? We’ve made this sort of thing work with the Apple Watch already.
Given that I’m sitting at the beach, I can imagine quite a few ways where one could easy market a phone that has no ports, and as such, is considerably more water resistant.
This surely isn’t an original idea, but the more I think about it, the more I think it makes sense. Especially in the context of a specialty Pro iPhone.
This week I was a guest on Collin Donnell’s The Run Loop. I’ve recently started listening to The Run Loop; it’s a great interview show with various developers in our community—and not just the ones most of us already know.
On my episode, Collin and I talked about QBasic, the live episode of ATP, a surprising amount about software methodologies, and, of course, RxSwift. It’s nice to stretch my legs and get really nerdy from time to time; this was one of those times.
Imagine you’re in your freshman year of college. You’re really into cars, and have been your entire life. Your wallet is poor, but your clock is rich. You enjoy BMWs—from afar—and have a favorite. That favorite is the E39 M5. One that you still dream of all these years later.
Out of nowhere, BMW releases a
long-form commercial short film. Moreover,
it’s the first film in a series. A series called The Hire. That film,
Ambush, was directed by John Frankenheimer, a famous movie director.
If you look closely, you can see the advertising peeking through the film. To my eyes, the clear highlight is the BMW 7 series’ superior lights. In addition to, of course, it being an Ultimate Driving Machine. Despite these clear marketing ploys, I found the film to be just plain fun.
New films—dubbed “BMW Films”—were released every couple weeks. I waited for them like I waited for a new album from a favorite artist. I couldn’t get enough of The Hire.
What’s more, with each passing film, a new car was featured. It began with the aforementioned 740i, and continued in Chosen with the 540i—ever-so-close to my beloved M5. Next, The Follow with a mostly unremarkable 328i and then-still-impressive Z3.
Then came Star.
Directed by Guy Ritchie, and featuring his then-wife Madonna,
was is everything I’ve wanted from about 7 minutes of film.
Though it is a totally fun film, with a surprising amount of story for
its short duration, there is one primary reason why I love it so much:
Guy Ritchie chose well. He chose the E39 M5. My favorite BMW, ever.
Things only got better from there. If you haven’t seen the film, you should stop here and just go watch it. Go ahead, I’ll wait. I didn’t embed it here for a reason: you should watch it full screen, 480i be damned, and watch it loud.
Do you see what I’m talking about‽ You know things are going to get interesting when the first few chords of Song 2 begin. However, this shot removes all doubt:
Imagine me, car-obsessed, in my early 20s, watching this for the first time. Now, imagine me watching it over and over and over again. Because that’s exactly what I did.
BMW ended up doing a second season of The Hire, but this time, instead of featuring various cars, they only featured the then-new Z4.
Of the second season, my favorite is far and away Ticker, written and directed by Joe Carnahan. Biases aside, it is probably the best of all the BMW Films. The audio direction in the opening, in particular, is so well done.
However, nothing can beat Star.
After the second season was completed, BMW actually offered a The Hire DVD anthology. For something like $10 shipping, BMW would send you a DVD with [almost] all of the BMW Films on it. Despite being a broke college student, I did exactly that. I still have the DVD to this day, and it is probably my most cherished DVD.
Last year, in 2016, BMW actually resurrected the BMW Films brand for their new 5 series sedan. The star of the series, once-unknown but now-famous Clive Owen, even reprised his role as the anonymous driver. While definitely in the spirit of seasons one and two, I can’t help but feel like The Escape just doesn’t quite have that joie de vivre that seasons one and two did.
The BMW Films did something that had previously only been accomplished by The Price is Right: they made a long-form commercial fun to watch.
I chose The Hire as my first things I like post for a reason. In the last week, Apple unveiled a short film about Siri that they filmed with The Rock. In every measurable way, I should have hated it. Yet, perhaps in part because of The Hire, I couldn’t help but enjoy it.
I doubt there’ll ever be a series of long-form commercials that are done with the respect and care that The Hire was. Nevertheless, I will forever hold those films as some of my favorite car-related videos ever.
Last week, I spent a couple hours at my company’s monthly hack day doing something I’ve never done before: contributing to open source.
I’ve spoken a lot about RxSwift in the past. Functional reactive programming is my new favorite thing, and I’ve been loving using it—both at work and on a personal project I’m fiddling with. One of the many nice things about RxSwift is that it’s very easy to extend it with new functionality.
During the course of my work, I noticed I wanted to be able to do something that
RxSwift didn’t support. The thing I wanted to do was very similar to something
that did exist, but not exactly the same. So, I wrote an
extension in my
codebase. Then it occurred to me, why not contribute this to RxSwift itself?
So I did.
That pull request, small as it may be, was accepted! So, I can now honestly say “I’m a [very small] contributor to RxSwift”.
My mother doesn’t believe in reincarnation. Despite that, she’s long joked that if she were to come back again, she’d want to be some sort of musician. “I just want to know what it feels like to step on stage and have all those people excited to see me. How incredible must that be? How amazing must that feel?”
Back in 2014, I sort of had that opportunity. Last month, I largely realized my mother’s dream. My ATP co-hosts and I recorded an episode in front of almost 1000 fans. Nearly a thousand people, all there to see us. Cheering for us. Singing our theme song to us.
My life is weird, and I’m so thankful for it.
To all of you who listened, thank you! To all of you that showed up, thank you! It was a once in a lifetime experience.
The fine folks at AltConf were nice enough to host us. For
John and I, the experience was amazing. We showed up, spoke, and
then left. (In retrospect, I missed my opportunity for a truly obnoxious
rider.) Poor Marco, however, had to cart a suitcase full of
equipment across the country,
set it up by himself set it up with
Stephen (before Stephen had to run to his own event!), and take it
back down all by himself.
As an added bonus, the fine folks at Realm recorded video of the event, and it’s now available! You can see the three of us in all our [likely awkward] glory. Realm did a great job with the video—as they always do—and I’m super thankful they put it all together.
I’m so thankful for both ATP and Analog(ue). I have no idea if they’ll last for another month or another decade. While they’re still a thing—while I’m still a thing—I’m riding this wave. For as long as I can.
UPDATED 3 June 2017 2:00 PM: Marco corrected me and pointed out that my dear friend Stephen Hackett actually helped out quite a bit with setup. My bad. 😔
So, here’s the thing.
I love my iPad Mini. It is exceptionally portable, easy to use, and efficient at the things it does well. I’ve never owned an iPad Pro—I’ve eschewed the normal size iPad since the first iPad Mini with Retina Display. However, it wouldn’t surprise me if there is an iPad Pro in my future. The combination of iOS 11 and the Smart Keyboard makes it compelling.
I’m not here to discuss tomorrow; I’m here to discuss today. Today, I feel handcuffed every time I use an iPad. Even for the things I can accomplish, I have to jump through flaming hoops in order to do so. It’s not for me.
What I really want (what I really really want) is an iPad-sized device, with all the portability it provides, but with none of the drawbacks of, well, actually being an iPad.
I waited months for the MacBook to get updated, and at WWDC 2017 I got my wish. I placed an order within a couple hours of the keynote ending, and got the MacBook the following week. After about a week of use—and a trip to Chicago—I have some thoughts.
The Form Factor
I’ve heard people rave about the 12" PowerBook G4, never really understanding why they found it so appealing. The same goes for the 11" MacBook Air. They both seemed so uncomfortably small to me. Turns out, however, that this smallness can be an advantage.
And holy hell is this thing small.
I haven’t regularly handled a full-size iPad since the iPad 3, but the MacBook feels to be roughly the same size in-hand. In actuality, the MacBook is 150% the weight of the iPad 3, but the fact that I’m even making that comparison should indicate how light it feels.
A device this small turns out to be tremendous: it can be brought anywhere, with nearly no penalty. I can carry it with my MacBook Pro in my laptop bag and it’s a negligible difference in weight. I can carry it around the house without thinking anything of it.
I can even put it in a Tom Bihn Cache, and stick it in my Co-Pilot,
which is roughly the size of a standard-issue
murse man-bag satchel.
When I bought the Co-Pilot I never expected to put a computer in there; I thought
a full-size iPad was the limit. Traveling with the Co-Pilot as my "laptop bag"
was so freeing; it’s nice to have so little hanging off my shoulder.
The downside to having such a portable Mac? I want an onboard cellular radio. I am fully aware that I can tether from my iPhone. I’m fully aware that I can do so easier than ever before thanks to the tight integration between macOS and iOS. As someone who has owned multiple iPads with cellular radios, I am also aware that nothing will ever beat the convenience of having an onboard connection you can use anywhere.
I love the modern Apple Magic Keyboard that came with my iMac. To my fingers, it is the perfect keyboard.
There has been much haranguing about the butterfly-switch-based keyboards that Apple is using almost exclusively across their line. Most don’t tend to like them at first exposure. Anecdotally, between half and two-thirds end up somewhere in the spectrum from resigned acceptance to actual enjoyment. The remainder feels passionately about the keyboard, and hoo boy do they hate it.
For me, I started with an active distaste. The keycaps are shallow, the travel is shallow, and for the way I type, the keyboard is really loud. Strikingly so. The noise isn’t unpleasant, but there’s a lot of it. Furthermore, it feels similar enough to my beloved Magic Keyboard to remind me of it, but different enough that I can never forget this isn’t the same.
After a week, I’ve passed through loathing, taken a stop at distaste, spent some time at indifference, and am now moving into actual enjoyment.
The true advantage to the MacBook keyboard is that it feels stable in a way not even the Magic Keyboard does. The keyboard also feels… direct. Generally I’d say “mechanical”, but that has connotations in this context I don’t intend. It’s hard to describe, but where my pre-TouchBar MacBook Pro feels like I’m typing through marshmallows, the MacBook feels the exact opposite.
The best analogy I can give is the difference between a cable-driven shift linkage on a front wheel drive car and the direct feeling of a shift linkage on a rear wheel drive car. Where the former is mushy, and has lots of play, the latter feels direct, strong, and tight.
In fact, the MacBook keyboard is so direct and tight that I’m starting to almost prefer it to my Magic Keyboard. 😱
The real Achilles’ Heel of the MacBook keyboard is the throw—or really, the lack thereof. I feel like if the keys moved an additional ~20% with each press, it would make a world of difference, and bring them much more in line with the Magic Keyboard.
Nevertheless, the thing that annoyed me most about the MacBook has now come to actually please me.
Dongletown, Population: Me
What with the MacBook’s keyboard no longer being the real problem, we can move on to everyone’s unanimous bugbear: the one USB-C port on the device.
Full stop, having a second port—even if it was limited to be power only—would dramatically improve the usability of this device. However, just a couple of dongles can cover not only my day-to-day needs, but also nearly all of my uncommon ones too.
I ended up purchasing four items specifically for this MacBook:
In total, I spent $80. By comparison, my MacBook Pro has an onboard SD card reader, an onboard HDMI port, and onboard USB-A ports. Bummer.
Is this really so egregious though? For me, since this is an accessory computer, it will very rarely need to be connected to Ethernet. Or any USB-A devices. Or an SD card. These purchases were mostly to fend off “oh shit!” moments more than they were serving actual, immediate needs. Thus, things probably aren’t as bad as they seem.
To me, the real bummer is the lack of USB-C power passthrough on most USB-C devices available for sale today. As an example, when I attempted to do my initial Time Machine backup, I did so via the Ethernet dongle. However, I had to ensure the machine didn’t sleep, since it was on battery power. Furthermore, I had to stress out about whether or not it would complete the initial backup before the battery gave up, since I had no way to power the MacBook and have it connected via Ethernet.
It’s an odd feeling. A feeling that I don’t expect to have often, as any other time I’m on Ethernet will likely be momentary, such as for transferring a huge file. If I want to leave a single USB-A device connected, or to leave the machine plugged in to HDMI, that dongle does have a power passthrough.
So, the “One” part of “MacBook One” is definitely annoying, but it is by no means a showstopper.
During the initial couple of days, I found that I often felt CPU constrained, whether or not that was reality. After those first couple of days, now done with my software installs, moving files, and generally asking a lot of the Adorable, things seemed to settle down nicely. In day-to-day usage, I can’t say that I notice CPU bound activities, and if so, they are resolved sufficiently quickly.
The one place that I do notice some significant slowdowns is when I occasionally
transcode video files using
ffmpeg. In the defense of the MacBook,
this is a hilariously inappropriate use of this [fanless!] hardware. That’s
why I have an iMac upstairs. But in a pinch, if I do need to do a transcode, I
now know to expect it’ll run half as fast as it does on the iMac.
It’s also really nice to be able to get a 512 GB SSD. I have the leeway to put just about whatever I want on the machine, all without the stress of micromanaging what’s on the MacBook. I’ve made the mistake of getting only enough disk space to cover what I need today—in Erin’s MacBook Air—and I regret it. Her 128 GB MacBook Air is bursting at the seams, and has been for far longer than I ever expected.
I don’t have good enough eyes nor perceptive enough vision to be able to comment on the colors or any of the other things designers care about. What I care about is real estate, especially on a device this small. There are four available effective resolutions that macOS will allow:
- 1440 x 900
- 1280 x 800
- 1152 x 720
- 1024 x 640
As someone who suffers from a peculiar eye condition, it is very hard for me to see when I don’t have my hard contacts in. It’s really nice to be able to set the MacBook to its smallest resolution and make everything really huge. With my contacts in, at the maximum resolution, I definitely feel a bit constrained but I wouldn’t go so far as to say limited. That is to say, it doesn’t prevent me from getting things done, but it doesn’t feel spacious either.
I was discussing the MacBook with my friend _David Smith. He’s had a MacBook for a while and was debating upgrading to the latest version. Dave said to me something that I think is spot on:
Thanks to the MacBook, I don’t have to.
I completely agree.
The MacBook Adorable is not without its faults
concessions compromises. However, especially as a secondary machine,
I have absolutely fallen in love with it.