This was the largest group I’ve presented to so far. While work began on the
talk in February, 2017, I ended up working on it until about 45 minutes before I
went on stage. I’ll have a separate “lessons learned” post about the talk and
things I would like to do with the talk material in the future, focused primarily on some data I wanted to analyze in more depth, but did not get to.
That said, I enjoyed the heck out of putting this talk together and presenting.
I could sense that points I wanted to emphasize were coming across based on the
audience’s body language. The coworkers who directly experienced the
circumstances I walk through in the talk said I represented those times well.
I’ll take all of that as a win.
My thanks to Confreaks for their recording and production work.
My wife, Robin, and I visited the cemetery at Raleigh-Durham International
airport after lunch Saturday, prompted by a discussion I had on Twitter earlier
in the week with aviation geeks and meteorologist Nate Johnson.
Nate started with his surprise that Chicago’s O'Hare International
Airport has a cemetery. That was also news to me, but I was reminded of the
small cemetery at RDU. I figured Nate also knew it. But, no, it was news to him,
and I suspect it’d be a small surprise to a lot of folks.
Robin and I have used RDU’s ParkRDU Economy Lot 4 for our occasional trips out
of town, and on the drive in, we’ve passed Cemetery Road and seen a little bit
of fencing. So, I knew it was there. But, it’s out of the way and for folks
accustomed to coming and going from the airport via Aviation Parkway or Airport
Blvd, they might never pass by. Even if you drive up to the Observation Park and
then out to Lumley Road, you might miss it.
Here it is from using Google Maps’ satellite view:
Robin and I were in the area and, given the discussion from earlier in the week,
we decided to drop by. There’s a chainlink fence around the cemetery and a small
driveway, enough for two or three cars. There’s a pedestrian gate in the
chainlink fence and a double swinging gate up a gravel and grass incline to
allow vehicle traffic.
We walked around, looking at headstones and took a few photographs.
Here’s a view of the headstones looking diagonally SE to NW across the cemetery
towards Runway 5L-23R:
This view is SW to NE, where cars parked in Lot 4 are visible in the background:
Finally, the sign that offered a clue about the history of the cemetery:
The name Mt. Hermon Baptist Church struck a memory. I thought I remembered that
church north of the airport, off of Leesville Road, just into Durham County.
Looking at a map on my iPad, I could also see a Mt. Hermon Road running north
and south that terminated on the north side of the Glenwood Avenue interchange
with I-540. But, looking further, there was a continuation of the road on the
south side of the interchange, crossing to Lumley Road and continuing as
Commerce Blvd on the airport itself. (View on Google Maps)
That struck me as interesting and probably meant that it was contiguous at one
time, before I-540 was built, beginning in 1992. Later in the afternoon,
I went out for a walk and thought about where I might find a map of northwest
Wake County from before I-540’s construction. I was thinking that I’d end up at
the library looking for county property maps (and that will still be valuable),
but, for whatever reason, I instead remembered the US Geological Survey’s
topographic quadrangles. If I could get a past version of one of those, I might
learn something.
Looking at the lower-right corner, there are a few things that we can see. One
item is that Mount Hermon Road, labeled as Route 1646, is fully connected, with
an interchange at Glenwood Avenue (U.S. 70). We see the absence of Interstate
540. Following Mt. Hermon Road south from Glenwood, we see the cemetery and a Mt
Hermon Church on the map. Continuing south, we see that Runway 5L-23R does not
yet exist. (It appears on the 1993 edition, but not on
the 1991 edition 1:100,000 scale wider map from 1990 survey data,
which is interesting because RDU history says the runway opened in 1986.)
The church congregation appears to have moved from what becomes a taxiway around
the General Aviation apron, to Olive Branch Rd in Durham County. The cemetery is
still taking newer burials. The newest burial we found is from Feb. of 2016.
This leaves me wondering when the church moved. I see there was a small cluster
of buildings as an unincorporated settlement on the 1973 map, labeled Hermon.
Digging into that might require looking at past census data and property tax
records at the county level.
I’m fascinated by all of this and wonder how this all played out. Accordingly,
there’s some interesting research to do yet in order to learn at least part of
fuller history here. I will have a follow-up post when I do.
Earlier this month, California was getting slammed with torrential rain and lots
of snow, leading to road closures in the Sierra Nevada mountains.
Having lived in the Central Valley of California, where the Sacramento news
stations would send a reporter up the mountain to report on road conditions
along Interstate 80 when snow started falling, various highway closures across
the crest of the Sierras isn’t particularly unusual. There are a number of state
roads that close for the winter, but a number stay open, too, depending on what
conditions are.
I was surprised, however, when I read that cars were getting stuck on the
Eastern Slope, just before they’d cross into California. They were trying to
route around I-80 being closed:
VERDI, Nev. (News 4 & Fox 11) —
Interstate 80 has been closed over Donner Pass at least three times in the month
of January. Many drivers searching through an alternate route through the Sierra
are ending up stranded in the snow on Dog Valley Road near Verdi.
“If weather conditions are bad enough and a major thoroughfare like I-80 is
closed, what do you think conditions are going to be like on a single-track
dirt road that winds its way through the mountains? They’re not going to be
safe.”
…
“When Interstate 80 is closed, Google Maps wants to take them this way,”
Search and Rescue volunteer Jack Wayman said, “and even with signs that are
posted saying ‘don’t go this way,’ ‘don’t trust your GPS,’ they’re still doing
it.”
Many drivers - some of them behind the wheel of big rigs - are using
navigation systems to search for alternate routes through the Sierra. This
comes as more people are putting their trust in technology when they travel.
For the I-80 case, at least Google/Waze are able to make an adjustment, which is
great.:
Update: That was surprisingly efficient. Made it to some
folks on both teams. Ah, the wonderful, terrible internet.
Besides temporary road closures and “helpful” algorithms guiding users off of
freeways onto two-lane mountain roads, this is also a problem that’s plagued
other uses of GPS.
Death Valley has been one such case. NPR reported in 2011 on GPS and
turn-by-turn navigation systems prompting drivers to head down non-existant
roads in Death Valley:
Meanwhile, he (Death Valley Ranger Charlie Callagan – ed) says, he’s been
asking himself, what exactly is going on? Why is the GPS going astray? Then,
he had an idea.
To explain, he drives out to a lonely corner of the valley. A line pops up in
the corner of my GPS screen. Supposedly, it represents a road about to
intersect the one we’re driving on. But looking out the window, there is no
other road.
“That road there no longer exists. It’s been probably 40 years, but somebody
ended up driving on it because it showed up on their GPS,” Callagan says.
In a tragic case from 2009 that the NPR story mentions, but The Sacramento Beegoes into more depth about, a six-year-old, Carlos Sanchez, died after he
and his mother became stuck in a remote section of Death Valley:
[Alicia] Sanchez was trying to drive into Death Valley from the south via an
unpaved route along the valley floor called the Harry Wade Road. Instead, she
ended up on a dead-end backcountry road, which she followed for more than 20
miles along the south side of the Owlshead Mountains.
“The road is very rough. It’s a hard drive,” said [Death Valley ranger Amber]
Nattrass. “There was probably a point where she said, ‘Oh my God, I don’t know
where I am. I’m going to keep going because I think I’m going the right
direction.’
"A lot of people don’t realize you should just turn around and go back the way
you came,” she said. “We see that a lot here.”
Near where the road ends, Nattrass followed the tire tracks that turned onto
“a closed road in the wilderness area going over several small bushes and
rocks lined along the road to designate closure,” her report says.
And it was down that road – on Aug. 6, 2009 – that Nattrass spotted the Jeep
stuck up to its axles in the sand with SOS spelled in medical tape on the
windshield. Alicia, then 28, a nurse from Las Vegas, was lying next to it in
the shade, distraught over the death of her son and so dehydrated she had been
drinking her own urine.
The NPR story reports that road information for Death Valley was updated by
TomTom with updates for other mapping data providers pending.
I’ve heard of, but can’t find a link right at the moment, cases in the United
Kingdom of trucks (sorry, lorries) getting stuck on hedge-lined, single-lane
roads because their navigation systems take them there without regard for the
width of their vehicle. Something similar is happening in Arkansas.
Where this gets personal is back in August, 2016, my wife Robin and I were
visiting a group of friends for a weekend retreat in Virginia. We were staying
at a bed and breakfast in Lovingston, just off of U.S. 29. We’d meet
them at a home north of Shipman. Getting from the bed and breakfast, at least
the way Apple Maps showed us, was a six mile/10 minute trip up and over the
mountain.
However, the directions our friends gave us were much different. Closer to 11
miles and 25 minutes. This hurt my brain a bit, and so I asked our hosts why
what looked like the more direct way wasn’t what they recommended. The answer
was Hurricane Camille. In 1969, Camille brought torrential rains and
caused a landslide along the road, among with many other horrific problems for
Nelson County, Virginia.
Once our retreat was over, we drove as far down the east-end of the road as we
felt comfortable and, sure enough, nothing we’d reasonably call a road was
available to us.
So, while Apple Maps still shows a connected road across the mountain, looking
at satellite imagery, there’s some track work into thick tree stands, but that’s
it.
Clearly, using some thought as a driver is required. Local conditions out the
window beats whatever satellite-assisted turn-by-turn navigation is saying is
happening. But, in the absence of the kind of knowledge and experience you gain
driving around a city or rural stretch for months and years, leaning on
automated navigation is comfortable and attractive. Frankly, it also works a lot
of the time, so granting trust is easy.
My curiosity from all of this is how automated navigation systems and paper map
data are updated with ground truth. I intend to explore that as a topic further.
Here’s another long update, with lots of worthwhile reading and listening. I’m
still working on my processes and tooling so these are less cumbersome to edit
and publish and consequently less effort to read.
Stationed on the West Coast of the United States, flanked by the blue hues
of the Pacific Ocean, is a city that’s home to some of the greatest
companies in the…
Q: How do I convince my client to pay for research?
If I have one FAQ, this is it. Every time I talk with other designers about
research, someone asks this…
Erika Hall of Mule Design covers getting essential project research paid for.
Similar to her book, Just Enough
Research, which is
very valuable.
If you haven’t seen byebug before, I recommend that you check it out. It’s a
great debugger for Ruby 2.x.
…
The basic setup is pretty simple. Just install the gem. If you use the
byebug method anywhere in your code, execution will stop at that point and
you’ll be dropped into a debug console. You can ever set it up to use pry.
Byebug and Pry are two essentials in my toolkit. This is a nice write-up of
using Byebug when you’re running a Rails app on Pow.
When I joined Atomic fresh out of school 11 years ago, I didn’t realize I
was making the best career decision a young software developer could make.
I was…
Switching contexts every two or three months, particularly early in a
development career makes for great seasoning. Learning how to learn business
domains is an incredibly valuable skill.
Dunbar’s Number is a favorite blunt diagnosis for the pains that affect
rapidly growing teams. The number, which is somewhere between 100 and 250
describes a…
An older Michael Lopp piece on the difference between layers of employees. Don’t
think like Manager and Direct Reports. Think about who was in early and who
arrived later. It’s the difference between the first 5 people at a company, the
second group of 15 and the third group of holy crap, who are you people!?
I’ve been on both sides of this at the same company and it is very interesting
territory.
Model level caching is something that’s often ignored, even by seasoned
developers. Much of it’s due to the misconception that, when you cache the
views, you don’t need to cache at the lower levels. While it’s true that
much of a bottleneck in the Rails world lies in the View layer, that’s not
always the case.
The Internet recently fell in love with picture-parsing websites that guess
your age, and whether someone is your twin. Now it offers another spin on
novelty…
Like lots of problems we attempt to solve with technology, identifying whether
or not a picture has naked people in it sounds easy until you have to identify
and handle context. Then, it gets a lot more complex.
When you use a rescue clause in Ruby, you can specify what kinds of
exceptions you want to rescue. All you need to do is provide a list of
exception classes…
You’ll notice more Honey Badger links showing up more in this listing. Their
blog is pretty great.
Ruby application servers are typically used together with a web server like
nginx. When user requests a page from your Rails app, nginx delegates the
request to…
Pyotr Stolyarsky died in 1944, he was considered Russia’ s greatest violin
teacher. He counted among his pupils a coterie of stars, including David
Oistrakh and Nathan Milstein, and a school for gifted musicians in his
native Odessa was named after him in 1933. But Stolyarsky couldn’t play the
violin anywhere near as well as his best students. What he could do was
whisper metaphors into their ears. He might lean over and explain how his
mother cooked Sabbath dinner. His advice gave no specific information on
what angle the bow should describe, or how to move the fingers across the
frets to create vibrato. Instead, it distilled his experience of the music
into metaphors his students could understand.
This article is coming up on two years old, but I only saw it come up recently.
Thoroughly engaging on improving machine learning in a way I still can’t quite
wrap my head around.
It’s becoming more and more common to see malware installed not at the
server, desktop, laptop, or smartphone level, but at the router level.
Routers have become quite capable, powerful little computers in their own
right over the last 5 years, and that means they can, unfortunately, be
harnessed to work against you.
I write about this because it recently happened to two people I know.
Fair warning. You’re going to hate this one. I want to stop pushing the web
forward for a while. I want a moratorium on new browser features for about a
year or so
I understand the sentiment, but believe this to be a futile request.
In 1969, Milton Packin was pulled over for speeding on a New Jersey highway.
He appealed the ticket, claiming that he wasn’t driving the car; it was the
cruise…
One of many aspects I find interesting about what looks like a future of at
least partially autonomous personal vehicles.
First things first, AWS and Heroku are different things. AWS offer
Infrastructure as a Service (IaaS) whereas Heroku offer a Platform as a
Service (PaaS).…
Start with Heroku when you’re evaluating whether or not an MVP has traction. If
it does, you can afford the time to prepare it for AWS.
All too often, I sit in a meeting with a client and conversation goes a lot
like this. Me: “Okay, looks like we have 4 features fully fleshed out here.
When do you need each of these by.” Client: “We need these yesterday”
Favoring a list of prioritized items is very instructive about what a developer
should work on. The project sponsor or business stakeholder’s vote on priority
is a clear signal to the development team.
RSpec is an excellent test framework with a large community and an active
team of maintainers. It sports a powerful DSL that can make testing certain
things…
Older piece from Joe Ferris, talking about structuring RSpec tests for
understandability over making use of all of RSpec’s features. Learn what a
Mystery Guest is, if you don’t already know.
A lesson I learned early in my career as a programmer was to be wary of
accidental creativity. If you’re the type of person who really cares about
getting the details right, it’s critical to first decide which details truly
matter. Not doing so is a recipe for endless frustration, as one will
inevitably be distracted and defeated each day — sweating more arbitrary
decisions than meaningful ones.
I’ve been using Ruby for quite some time, but it was only recently that I
found a hidden gem in the standard library, the Set class . If you are
familiar with…
Ruby 2.0 introduced support for keyword arguments. If you’re already
familiar with keyword arguments, feel free to skip to the next bit! Keyword
arguments…
This is the journey of designing & coding this site, continuing from part 1.
I will share how I went from the early mockups to the final site, with the
many…
This is the first chapter of how I designed this site. I will share some
sketches, deleted concepts and old prototypes explaining how it evolved
along the way.…
An ongoing struggle I’ve wrestled with all my career is regarding
estimations and their purpose in software development. A key component of
SCRUM is that,…
When testing a Rails application with RSpec, there are many different test
types to from. When should you pick each type and how do you combine
them into…
The find_all/select methods take an enumerable collection return a new array
of only the elements for which the given block returns true. It’s the
simplest way…
Quick, what’s wrong with this Rails migration?
Yep - it can be null. Your Boolean column is supposed to be only true or false.
But now you’re in the madness of…
Many developers hit a point 5-10 years in where they feel like becoming a
manager is the only way up. And at that point, they’re dangerous.
5-10 years exp?…
This tweet starts a chain with a worthwhile thread to think on. How do
companies encourage career growth in their development staff? What do developers
look to do when they want to level up?
When you use something as much as Ruby developers use Hashes, it’s easy to
think you’ve seen it all.
But I’m here to tell you that the humble ruby Hash has a few tricks up its
sleeve. Far from being a dumb key-value system, the Hash object gives you the
power to do some very interesting and sophisticated things.
Weather plays an important role in many failures of engineering systems.
Snow can overload a roof, ice can build up on transmission lines and towers,
rain can infiltrate electrical boxes, and low temperatures can make oils
viscous and difficult to pump.
Dr. Drang explains the import of weather data to his engineering practice and
how he retrieves and processes data in a way he can use it easily in his work.
I always knew this day would come. The day that Facebook decided my name was
not real enough and summarily cut me off from my friends, family and peers
and left…
These last two pieces are worth reading and thinking about the consequences of
decisions we make as developers, designers and companies. Algorithms and
policies are as neutral and benign as the people that write them. Which is to
say, not at all. It’s very easy to imagine our positions as neutral and positive
because we – generally – have good intentions. But good intentions are not
absolution from bias. Workplace diversity, equality, and a generous sense of
empathy are necessary to reduce as much bias as possible.
I like listening to concerts from some of my favorite artists like Mogwai,
Explosions in the Sky and Hot Chip. Some artists have a definitive place to go
for concert recordings, such as Reflecting in the
Chrome for Nine Inch Nails.
For most artists, I end-up visiting YouTube and finding a concert and recently,
I’ve found a bunch on YouTube:
While there are plenty of online or graphical tools one could use to convert
YouTube videos to audio, the benefit of a command line tool is that I could then
use these tools in a couple of Ruby scripts.
A lot of times, writing code involves writing tests and solving a problem
through an application. Theoretically, I could have done that here. But, that
felt like overkill because, right now, I have eight or so concert videos.
I wrote two scripts to help me. The first is download.rb:
In the file, concerts.md is in the same directory and just contains a list of
YouTube video ids.
Once these were all downloaded, I needed another script to convert the video
files to audio files. I also wanted to name the resulting files. I could do both
with a simple data structure. So, I wrote converter.rb.
Neither of these two files is doing anything particularly difficult. I’m just
running those command line utilties. But, I’m not having to run them repeatedly.
I was able to use ls and Vim to get the file names into converter.rb, then
regular expressions to coerce the file listing into a data structure. I filled
out the :destination keys manually. That felt like a pretty decent balance of
effort to automation.
If I use this file much more, I may improve both of these scripts into
something more mature. But, without waiting for that to happen, I was able to
take care of some very pragmatic automation right now to save me some tedium.