This is personal, NPR.
I follow “God” on Twitter, @TheGoodGodAbove. (He’s on Facebook, too!) I’m not a religious person these days, but having been raised Christian and sent to a Catholic high school, I did learn a good bit about God. The thing I find interesting is that, as much as “God” on Twitter upsets more strict religious folks as heretical, I actually find his posts to be a better representation of what Jesus taught than I’m used to getting in church. His most recent post is something that strikes a chord with me:
As a non-religious person, I’m left wondering what praying for the victims in Nepal even means. I guess you could pray that there won’t be more earthquakes to make things worse. You can’t pray that the whole thing will be undone, because if that worked, we wouldn’t have had the Holocaust or 9/11. About the only prayer that makes sense to me is that they’ll get speedy help.
As a religious person, I was irritated by something similar. I believed that God acted through us. Praying that God will wave a magic wand and make things better is cheating. If you’re praying that someone will help: be that someone, and go help. And if it’s not practical for you to fly to Nepal and help (and I’m quite sure we’d just be in the way if we did), donate to an organization that is helping.
But praying that God will have someone else help is cheating. Do it yourself. Put it down as “fulfilling your own prayers” if you’d like.
</religious rant by a non-religious person>
I pretty recently learned the phrase dog-whistle politics. The idea is that certain phrases have hidden, extra meaning to certain people. The Wikipedia page gives state’s rights as an example where political comments often have a more nuanced meaning that’s semi-concealed.
I’m not sure if it’s properly the same concept, but one apparent example of this I’ve become really interested in is the “Black lives matter” and “All lives matter” phrases. “Black lives matter” became a common refrain after Michael Brown’s shooting, and came to encompass a general frustration (probably too tame of a term) at the apparent disregard for how many people of color were shot by police. And, much like the proper definitions of feminism, I think that’s a cause that everyone should support.
But then, “All lives matter” and “Police lives matter” became common counter-arguments. And I saw many tweets along the lines of, “People who don’t attack cops don’t get shot. #policelivesmatter.” It started to be associated with people who argued that Darren Wilson was innocent (or even, in some people’s strange opinions, “a hero”), and that Michael Brown pretty much deserved to be shot. (To be clear, that is not my opinion.)
I remember being very upset upon reading a tweet that said something like, “On 9/11, many police officers knowingly ran INTO the Twin Towers. #policelivesmatter” And I realized that it had reached the point where the actual words used were entirely irrelevant.
The literal meaning, and that a person not familiar with a lot of backstory, was one that everyone would agree with: there were so many heroes in the NYPD that willingly gave their lives on 9/11, and saying that their lives matter is so patently obvious that it seems weird to even mention.
But the reason it seems so weird to mention is that there’s a lot of hidden meaning, or at least that I read into it. It reads like a counter to the “black lives matter” people, in a time with a lot of police brutality being discussed in the news. What I read wasn’t a lot different from, “Black people need to quit complaining about being disproportionately harmed by police violence. I side with the police who choked Eric Gardner.”
The point here isn’t whether I correctly read the meaning, nor who is correct. I’m merely fascinated by how some terms or concepts can become so incredibly charged that people read into them meanings that aren’t contained in the actual words said. Because of the specific phrasing and the timing/context of a comment, I took a tweet expressing gratitude for NYPD officers who gave their lives on 9/11 as an appallingly racist, hateful message. And that is utterly fascinating to me.
But this isn’t isolated. Conversations about the Confederate flag, “religious freedom,” or “women’s rights” often conjure up extremely strong emotions and opinions, even where they’re not necessarily intended. And just try to have a rational conversation about gun control or the Second Amendment, or immigration policy. The terms are so charged with meanings you likely don’t even intend.
I’m not sure yet if this is a good idea or not, nor if I want to pay for it long-term, but I’m playing with an experiment that I think is kind of neat. (But maybe I’m biased.)
For a long time now, I’ve been using CloudFront to serve static assets (images, CSS, JS, etc.) on the blogs, and a few other sites I host. That content never changes, so I can offload it to a global Content Delivery Network. IMHO it’s win-win: visitors get a faster experience because most of those assets come from a server near them (they have a pretty extensive network), and I get my server alleviated from serving most images, so it’s only handling request for the blog pages themselves.
Except, serving images is easy; they’re just static files, and I’ve got plenty of bandwidth. What’s hard is serving blog pages: they’re dynamically-generated, and involve database queries, parsing templates, and so forth… Easily 100ms or more, even when things go well. What I’d really like is to cache those files, and just remove them from cache when something changes. And I’ve actually had that in place for a while now, using varnish in front of the blogs. It’s worked very well; more than 90% of visits are served out of cache. (And a decent bit of the 10% that miss are things that can’t be cached, like form POSTs.) It alleviates backend load, and makes the site much faster when cache hits occur, which is most of the time.
But doing this requires a lot of control over the cache, because I need to be able to quickly invalidate the cache. CloudFront doesn’t make that easy, and they also don’t support IPv6. What I really wanted to do was run varnish on multiple servers around the world myself. But directing people to the closest server isn’t easy. Or, at least, that’s what I thought.
Amazon’s Latency-Based Routing
Amazon (more specifically, AWS) has supported latency-based routing for a while now. If you run instances in, say, Amazon’s Virginia/DC (us-east-1) region and in their Ireland (eu-west-1) data centers, you can set up LBR records for a domain to point to both, and they’ll answer DNS queries for whichever IP address is closer to the user (well, the user’s DNS server).
It turns out that, although the latency is in reference to AWS data centers, your IPs don’t actually have to point to data centers.
So I set up the following:
- NYC (at Digital Ocean), mapped to us-east-1 (AWS’s DC/Virginia region)
- Frankfurt, Germany (at Vultr), mapped to eu-central-1 (AWS’s Frankfurt region)
- Los Angeles (at Vultr), mapped to us-west-1 (AWS’s “N. California” region)
- Singapore (at Digital Ocean), mapped to ap-southeast-1 (AWS’s Singapore region)
The locations aren’t quite 1:1, but what I realized is that it doesn’t actually matter. Los Angeles isn’t exactly Northern California, but the latency is insignificant—and the alternative was all the traffic going to Boston, so it’s a major improvement.
Doing this in DNS isn’t perfect, either: if you are in Japan and use a DNS server in Kansas, you’re going to get records as if you’re in Kansas. But that’s insane and you shouldn’t do it, but again, it doesn’t entirely matter. You’re generally going to get routed to the closest location, and when you don’t, it’s not really a big deal. Worst case, you see perhaps 300ms latency.
It turns out that there’s a Multi-Varnish HTTP Purge plugin, which seems to work. The downside is that it’s slow: not because of anything wrong with the plugin, but because, whenever a page changes, WordPress now has to make connections to four servers across the planet.
I want to hack together a little API to accept purge requests and return immediately, and then execute them in the background, and in parallel. (And why not log the time it takes to return in statsd?)
Debugging, and future ideas
I added a little bit of VCL so that /EDGE_LOCATION will return a page showing your current location.
I think I’m going to leave things this way for a while and see how things go. I don’t really need a global CDN in front of my site, but with Vultr and Digital Ocean both having instances in the $5-10 range, it’s fairly cheap to experiment with for a while.
Ideally, I’d like to do a few things:
- Enable HTTP/2 support, so everything can be handled in one request. Doing so has some great reviews.
- Play around with keeping backend connections open from the edge nodes to my backend server, to speed up requests that miss cache.
- Play around with something like wanproxy to try to de-dupe/speed up traffic between edge nodes and my backend server.
I just tried Pingdom’s Full Page Test tool, after making sure the Germany edge node had this post in cache.
Page loaded in 291ms: after fetching all images and stylesheets. I’ll take that anywhere! But for my site, loaded in Stockholm? I’m really pleased with that.
I’m a pretty avid police scanner listener. Over time, I’ve found that my favorite things to listen to aren’t always the serious incidents, but the downright bizarre ones, which are often for comparatively minor things.
The Lowell Goat
I never did figure out what happened, but a call went out dispatched like this:
See the caller at (redacted). She states that she keeps finding knives in her yard and would like to talk to someone about it.
I feel like I’d want to talk to the police about that, too.
Here is how I described this as I heard it on the scanner:
The police are now off on a call for “a man who squished a pigeon and ate it.” The caller said she worried this would be disturbing to children being dismissed from school in the area. The officer on scene has just requested backup. And animal control. And an ambulance. I am so very intrigued.
I suspect this is far from an isolated incident, but a call went out in the town I grew up in for a neighbor who called 9-1-1 to report that his neighbor was having a chimney fire.
The fire department arrived to find a confused homeowner, and ascertained that there was not, in fact, a chimney fire. Instead, the neighbor saw smoke coming from a woodstove’s chimney and, for some reason, assumed it was a chimney fire.
While the fire department responds to every call as if it’s a real fire, I’ve sort of developed a mental hierarchy of the different ways calls are dispatched. From least-serious to most serious:
- “Central station alarm” (a “still alarm” in some other towns): a fire alarm went off and the fire department responds. I’ve heard that literally 99% of these are false alarms.
- A caller reporting “smoke in the building,” which has a much greater chance of being an actual incident. Not necessarily a full-blown fire, but the “smoke in the building” call gives reason to believe that it’s not an entirely errant alarm activation. Sometimes it’s a neighbor smelling smoke that turns out to be someone’s burnt lasagna on the stove, though.
- Working fire. There is, in fact, a fire in the building.
But one day, I heard a call go out for people in a store or restaurant reporting a “possible fire.” That one confused me, because I tend to think that a building is either on fire or isn’t. “Smoke in the building” represent uncertainty, but you also know why they think there’s fire—because they see/smell smoke. “Possible fire” conveys little information.
Then, this update from dispatch:
Caller is reporting some sort of flames on the piping area.
So, if there are flames, it’s not really a “possible fire,” so much as a fire, right?
But what on earth does “some sort of flames” mean? And what is a “piping area”?
I feel like that could mean anything, from a candle next to a water spigot to flames shooting out of the natural gas line into the building.
Soon, we had our answer… There was a small mulch fire in front of the building.
Smoke in the building
Remember the “smoke in the building” above, and how I mentioned that sometimes it indicates a serious problem, but sometimes it’s erroneous?
A call went out for someone reporting “heavy smoke coming from the building.” My ears perked up; that doesn’t sound like your run of the mill burnt food call.
Firefighters arrived, and the initial sizeup was that there was no smoke (or fire) showing, and then a note that the alarms were not sounding. They investigated, and could not find any indication at all of a fire.
And then they noticed several dryers in the laundry room venting properly outside, resulting in lots of steam/vapor coming from the pipe. The “heavy smoke” coming from the building was, in fact, dryer exhaust.
Another weird call went out for a jumper up on a bridge in the area. Police and paramedics were dispatched, and the fire department was sent and asked to bring water-rescue equipment as a precaution.
On arrival, no one was up on the bridge, so the fire department began an immediate water search, and police and EMTs helped scan for bodies in the water. Police found no witnesses of anyone jumping.
Dispatch eventually made contact with the caller, to try to get more information. He explained that he had seen someone walking across the bridge while he drove past, and couldn’t give any explanation of why he thought the person was going to jump. They called the search off.
A lot of medical calls are really dull scanner listening. And then, this:
The caller just called 911 and stated that he had no pulse, and had brought himself back to life.
Your guess is as good as mine.
An issue with the paperboy
I heard the police dispatched to a home “for an issue the caller is having with the paper boy. I’m also dispatching [an ambulance]… He’s worked himself up so much he’s having trouble breathing.”
The EMS call went out as “a male patient who called 911 worked up about the paperboy… That’s exactly how we got the call from the police.”
I have no idea what the conclusion was on this one.
This is an old one, but the police were dispatched to some address for “an ongoing neighbor issue… The latest is that they touched [the caller’s] wreath.” The dispatchers are very professional, but you could detect some irritation in the dispatcher’s voice on this one.
I find most weather sites annoying. They either don’t give you enough information, or they give you too much entirely irrelevant information. (And that’s not even counting the prominent “weather” sites that are about as weather-focused as the History Channel is about history.)
Here’s a few sources I’ve taken to looking at:
I just discovered this site yesterday. It’s a weather site that doesn’t look like every other weather site. Here’s just part of their forecast:
That’s a fantastic way to represent the weather. And you can drill in for more detail:
And then there’s their Weather Atlas, presenting a (literal!) heatmap of temperatures and precipitation worldwide, in a really neat view. The presentation was so neat that I bought their $3.99 iOS app, Dark Sky.
I have a NetAtmo weather station at home. I can view the weather outside on my smartphone, whether I’m home or away.
But they also have a weather map with the weather from everyone who’s deployed these. The temperatures do seem a bit variable; I suspect some are installed very close to houses, in the sun, etc.
Weather Wisdom (Boston.com)
Local meteorologist David Epstein has a good blog on boston.com, Weather Wisdom, which is typically updated a few times a week. It’s good for longer-term forecasts, and he strikes a good balance of explaining the variability between forecast models, while neither talking over your head nor making you feel like it’s too dumbed-down.
This is the least user-friendly, by far. EMWIN (Wikipedia overview) is a datastream from the National Weather Service. It includes a whole bunch of their weather ‘products’.
Here’s what they show for KBOX, the Taunton, MA NWS office that covers my area. It’s very non-user-friendly, but I’m not sure that was a design goal. The AFD (Area Forecast Discussion) and AFM (Area Forecast Metric) products are particularly interesting. The AFD is sort of a forecast and a description seemingly meant for meteorologists, and the AFM takes some time to read, but has a lot of information packed into it. There are a lot of other products that are interesting to look at.
It’s the polar opposite of forecast.io—it’s not at all intuitive, but goes very, very deep.
StrikeStar lightning maps
This is far more active in the summer when thunderstorms roll through, but StrikeStar has maps of lightning activity throughout the US, including regional data. It’s powered by people who have deployed Boltek lightning detectors and put them online.
Finally, a reminder that weather.gov exists. It’s not as pretty or easy-to-use as some of the more prominent commercial sites, but they also don’t have “Zoos Worldwide Show Off Adorable New Baby Animals” as a front-page story. They also have an API you can query, though it’s nasty SOAP.
I’ve taken to following a number of news sources on Twitter, many of them being things other than traditional news outlets. It’s a very fast way to get news, and often presents more of a first-hand look than traditional news can provide.
But it’s also important to remember that the news, whether it’s some guy on Twitter or primetime nationwide TV networks, get things wrong from time to time. The Internet makes it really easy for these errors to spread.
Twitter had an outage the other night, mostly affecting mobile users. I saw it reported that there was evidence / experts were saying it was a “hack attack” by North Korea. Nope! Turns out that was groundless speculation, and it was just a Twitter bug.
When AirAsia flight QZ8501 went missing, some of the early reports on Twitter were that it had requested “an unusual flight pattern” change right before it went missing. That’s really suspicious and reminiscent of MH370. Could it have been sabotage? Nope! “[T]he pilot requested permission to turn and climb to a higher altitude because of bad weather,” CNN reports. Many seem to have corroborated that there was a fairly strong storm in the area at the time.
So take your news with a grain of salt. Otherwise you’re one step away from believing stuff like this.
I think the “hearty New Englander” gene may have skipped a generation with me. Winter is an utterly horrible time to drive. Ice makes driving dangerous. Snow requires you to shovel your car out before you can drive. Salt and sand ensures your car is absolutely filthy all year. And the cold results in gigantic freaking potholes in the road.
My first recommendation is to move somewhere warm. For those of us too foolish to do so, here are a handful of things I’ve found that make driving in the winter slightly less awful. (All links go to Amazon because that’s where I shop, but I have no financial interest in any of these things.)
“Portable Tow Truck” tire traction boards
This is a pair of
plastic polypropylene “boards”, 3′ long and 8″ wide, with spikey nubs on either side. When you get stuck in the snow, you can put these down under your drive wheels for some quick traction. I haven’t needed them on my own car yet, but very shortly after I got them, a coworker couldn’t get out of his spot after a snowstorm. We tried these and he backed right out.
The link is to the product I purchased. There are versions that fold (these take up a good bit of room in your trunk, though you can stand them to the side), and versions that are a bit cheaper, but I haven’t tried either.
Brass Ice Scraper
For windows only! Brass is a lot more durable than a plastic ice scraper, but still softer than glass so it won’t scratch glass. That makes this brass ice scraper fairly handy for chipping away at a thing layer of ice. (It’s a small handheld scraper, so it’s not well-suited for working on thick ice. For that, see my recommendation on moving much further south.)
Be warned: I’m told that some retail stores have stopped selling these because people use them on plastic side mirrors and they destroy them. Only use these on actual glass windows.
I actually have a $20 knock-off version of this, with which I’m perfectly happy. It’s got a soft foam head, so you can don’t have to worry about scratching your car. You can use this to just shovel snow right off your car. Completely clearing my car of snow is perhaps a 2-minute process, tops. Last winter, I rushed out to clean my car because the snow plow was waiting for us to clear out of the lot. I got out after my neighbor had started cleaning their car—much smaller than mine—and finished with time to help do more than half of their car.
This doesn’t have a good photo, but it’s basically a 9-12″ “blade” made out of soft silicone.
What they advertise it for is drying off your car when you’re cleaning it. The soft finish makes it safe to use to wipe water off your car, and it’s pretty effective. But I keep this in the front seat of my car and use it many mornings to wipe off the misty dew covering my windows. Not winter-specific, and not useful in the real dead of winter, but great when it’s a little above freezing and your windows are covered in a hard-to-see-through mist in the morning.
The jury’s out: Runflat tires
My new car came with runflat tires. Last week, I hit an enormous pothole and ruptured my tire.
The good: I just kept driving. TPMS told me that the tire pressure was “low” (there was, in fact, a literal hole in my tire) and to proceed cautiously. I drove home, just taking it a little more gently than usual, avoiding the need to stop on the side of a busy road in very windy, 20-degree weather. The tire is designed with heavily reinforced sidewalls that can support the weight of the car, and some sort of bead that’s designed to stay intact even with no pressure.
The bad: Runflats aren’t something you’ll find in every garage, so I had to take it to the dealer, a 25-mile drive. In the rain, when it was mid-30s, so the whole thing was liable to shift over to ice at some point. On a tire that isn’t supposed to exceed 50mph. It was completely fine, but it was pretty scary not knowing. After I got there, they informed me they were out of tires, and I’d have to take a loaner car until they got a spare in the next day. The repair ended up being over $500, and it took two days.
At the time the tire failed, I was absolutely enamored with the runflats. In the end, I have to think it was far more of an ordeal than it should have been. (Note that cars with runflats rarely have a spare time, since it’s “unnecessary.”)
Not tested yet: Jump kit
The battery in my old car started to lose some of its oomph, and, after seeing one of these used elsewhere, I thought I should buy one to play it safe. I didn’t, but the idea floated around in the back of my head for a long time.
In that old car, I easily went 5+ years without anyone ever asking me for a jump. I’d had my new car for substantially less than 24 hours before I ended up next to someone with a dead battery, who asked for my help.
I probably looked like an idiot looking around my engine compartment, before I had to tell them, “I, umm, can’t find my battery.” BMW keeps them in the trunk, where a spare tire would normally be, apparently.
Less than a week went by before I was at a gas station with a guy whose car wouldn’t start. Eventually he found someone inside who was able to help him. And then, within a month, it happened two more times. People next to me in gas stations couldn’t start their car. I took it as a sign and bought a jump kit.
I’m yet to get a chance to try it. But if I do, it’ll be a lot easier than trying to maneuver my car into place and hooked up some tangled jumper cables.
The one thing so far that I don’t like is that the clamps are always live. Put a multimeter across it, and there’s about 13V there. I worry I’m going to eventually accidentally put a wet snow brush across the top of this thing in my trunk one day, and very quickly discharge its claimed 1,700 “peak” Amps in a fiery surprise. I wish there were a switch on it, or at least that the metal pads on the clips weren’t exposed.
(There are a lot of cheaper, smaller, less-powerful alternatives. This is hardly the ultra-deluxe version, but I decided against getting a tiny $50 one. If I’m going to spend any money at all on this, I want to be confident it will work. If I skimped and bought one that turned out to be too weak, the whole purchase would be a waste of money.)
strace is pretty handy on Linux for profiling processes, including attaching to a running one and WTF-ing it.
It turns out that there’s a Mac equivalent, dtrace1. If you skip past the instructions on how to use the terminal and using
top, there are some good examples of using
dtrace, including a lot more than just profiling system calls.
1 Calling it a Mac app is slightly misleading; it comes from Sun. But to someone used to
strace on Linux who is using a Mac,
dtrace is the equivalent.
Aquagenic pruritus is a skin condition characterized by the development of severe, intense, prickling-like epidermal itching without observable skin lesions and evoked by contact with water.
It turns out you can be allergic to water. It appears to “only” cause itching, versus causing one to break out in hives, but it’s certainly not something I’d wish to have.