Almost immediately after moving into our house, I wanted to get our gas fireplace in HomeKit. We’re heavily invested in HomeKit, and I really wanted the fireplace to (a) turn on and off via HomeKit and (b) have a switch that matched the other HomeKit switches in the house. However, the specifics of doing so were a bit challenging, and it took me an embarrassingly long time to figure out a really pretty simple solution.

The Challenge

The fireplace is a typical gas fireplace with a switch that connects via low-voltage wiring to an AC powered control unit which lives in an open space under the fireplace. When the switch is in the “on” position, the circuit is closed, and the control unit opens the gas valve and repeatedly fires the starter until the gas ignites. Super simple.

However, HomeKit and other “smart” switches require high-voltage AC to operate, and the control switch doesn’t have AC in the gang box.

The Solution

I spent a year thinking about how to get AC to the gang box without cutting a bunch of drywall, when I realized it wasn’t worth the effort. The obvious thing to do is to use a Lutron Caseta on/off switch, a relay, and a Lutron Pico remote. This meets my needs, since I have Caseta switches throuhout the first floor.

18/24gauge Male and Female Disconnects (these aren't on Amazon in quantites that aren't nuts; you can find them at your hardware store)

Here’s a diagram of how I wired the switch to the relay. I did all of this on my workbench so I could easily test the relay with my multimeter, and tuck the wire nuts away as best I could. Most relays will have a diagram printed on their housing which shows which pins energize the coil, and which contacts are switched. In my case, 2 and 7 energize the coil, and 1 and 3 or 8 and 6 were switched pairs.

It took some testing to figure out which wire was switched.

The fireplace control connnected to the low-voltage switch with 18 gauge thermostat wire using quick-disconnects, so I stuck some quick disconnects on the thermostat wires connected to the relay to make installation easier. The switch's black (hot) wire is connected to the black (hot) wire of the AC cord, the switch's switched (red) wire is connected to the relay's coil, so when the switch is switched on, the coil is energized. The neutral wires of the relay, the switch, and the AC cord are all connected to complete the circuit. The low-voltage wires to the fireplace control are connected to two switched contacts of the relay. When the coil is energized, the gate is closed, and the loop is completed, just like flipping the old switch to the "on" position. The switch's blue wire isn't used in this case, and is just wire-nutted in the two-gang box.

I assmbled all of this in a two-gang box, tested it on my workbench, then moved it under the fireplace. There's an AC outlet under the fireplace which was unused, which was a convenient place to plug in the power cord. I disconnected the low-votage switch with the disconnects under the fireplace, and reconnected the control wires to my thermostat wire coming from the relay using the disconnects that I added.

At this point I could toggle the switch in the gang box and, lo and behold, fire! I replaced the low-voltage switch with the Pico remote. Added the switch and Pico remote to the Lutron app, which in turn adds it to HomeKit, and did some minor tweaks in HomeKit.

Finished Product

Pico on the right of the mantle. The whole thing works a charm.

Gang box pulled out

You can see the relay at the top. The switch is “off” so the coil isn’t charged, so the red LED on the relay is off.

Tucked in

This is where the gang box lives, and I’ll add a faceplate to close everything up. In this one, the switch is on, so the red LED indicated the coil is charged.

Four friends and I planned three days and two nights just east of Mt. Rainer National Park, in Baker Snoqualmie from from June 29th through July 1. ~24 total miles, with ~8.5 to our campsite at Basin Lake, and a 8 mile loop on day 2, and 8 miles out on day 3. We wound up sticking pretty close to that plan, although it was slightly modified.

This is still pretty early in the season for backpacking in the area, and snow was a concern. We were evaluating alternative routes until about 10 days before the trip, at which point we had seen enough trail reports with good conditions to alleviate our fears.

Details

We started at Norse Peak Trailhead, and the trail begins with a few miles of switchbacks. Norse Peak trail is pretty clear despite the damage from last year's fire. The conditions were very foggy, but warm at this point. Goat Lake Trail had very low visibility, sometimes the fog was so thick we couldn't see more than 50 feet.

Early on Goat Lake Trail, we came to the only significant wayfinding of the day. We lost the trail on a saddle in the ridge, marked with several hitchposts. If you take this route, you'll know exactly the spot when you get there. We took a guess, but after 10 or 15 minutes, realized we were not on the trail at all, and retraced our steps. We found the trail hidden over a small ridge on the saddle.

Mike is a Trail Post - He's standing right on the trail, just on the other side of the ridge. It's unmarked and easy to miss.

It was on Goat Lake Trail, just after the trail down to Goat Lake itself, that we saw the first snow of the trip, a creek that filled with snow over the winter. It was easy to cross, and the only time we actually had to cross any snow.

I should note that until you're on the PCT, there is virtually no water avaialable from the time you set out from the trailhead until a mile or so onto the PCT. Given the day's relatively cool temp and the misty air, I was fine with 1.7 liters of water, but if it were a hot day, I'd plan to take more from the car.

The section along the PCT was great, with really nice views, and loads of side trails that would have been fun to explore. We didn't go down to the old shelter, since we thought we'd pass it on the way out. We did see a few elk nearby, and paused to whistle at them.

Basin Lake from just below the PCT

After 2.5 miles on the PCT, we got to see Basin Lake for the first time. It was a welcome site, and the view from above was beautful. After another mile or so down to the lake, we picked our campsiteThere are several options for campsites around Basin Lake, but only two were an option for the number of hammocks we had, and one was occupied. We unpacked in mist and 5-10 mph winds, and hoped the wind wouldn't pick up overnight.

Overnight temps were in the mid-30's but dry, with winds staying around 5-10mph. We all slept pretty well, but all three hammocks made the perimeter of the campsite, and we all made mental notes to make adjustments to better secure our rainflys for the next night. This area will be gorgeous in warmer weather later in the summer.

Day 2: Basin Lake Trail to PCT to Crown Point to Basin Lake Trail

The next day, we woke around 6:30 to blue skies and wind. We took our time getting breakfast and getting out of camp. We hit the trail around 8:30, and immediately made the mistake of starting our route in reverse. Once we realized our goof, we decided it didn't matter. We're doing a loop, anyhow.

In the direction we ended up going, our loop took us from the lake, ~500 ft up to the PCT, then south along the PCT to Crown Point, where we took the off-trail scramble to the point and paused for lunch. From there, we met the Basin Lake Trail on the east side of Crown, and continued north and east back to Basin Lake. Total loop milage 7.8 miles.

Rainer Peeking through the Cloud Cover

Me Checking the Map

Lunch on Crown Point

Traversing a bit of talus

Burned forest

The views were great for the first two thirds of the loop, all along the PCT to Crown Point, and then occasionally good from Crown back to Basin Lake. The section from Crown to Basin Lake passes through some areas with great, big views, as well as more subtle sections that were lush forest and were badly damaged in the fire. Either way, it's interesting, and it's nice to get both on the same loop.

We were back to camp in the early afternoon, and spent the rest of the day hanging out, building and tending to a fire that kept off the chill from the persisting cold winds. We saw a small herd of elk on the southwest side of the basin. Dinner was Beef, Mushrooms, and Soba Noodles, and a realtively early bedtime to wrap up in our blankets to fend off the chill.

Day 3: Basin Lake to Norse Peak to Norse Peak Trailhead

We got out of our shelters at a comfortable time, packed while oatmeal and coffee were cooking, and hit the trail a little before 8:00. As we were heading out of the basin, we saw a huge elk herd - at least 24 animals - on the west side of the basin, maybe 250 or 300 feet above us and a quarter-mile away. They were interested in us, but mostly intertested in playing with each other, bouncing and jostling one another and bugling.

The trip up to Norse Peak was fun, the trip down to connect with the Norse Peak Trail was a little less so. The talus section is short but sketch, and the talus is very loose. That said, I never felt unsure of my footing, and if I were this close and chose not to do Norse Peak, I would have been very dissapointed in myself.

The trip down to the trailhead was uneventful, and a bit of a grind. On the way in, the fog provided a distracting mystique that didn't exist in the bright sun of our last day. Instead it was replaced with rather mundane and repetitve switchbacks in the woods.

Gear Highlights

I had a few new peieces of gear on this trip, I'll write up some initial notes here:

Katabatic Onni Liteskin 50L

A lot of people have been really happy with Katabatic packs, and I'm now added to the list. I realized my old pack was really well built, but pretty heavy (5.5 lbs). I ordered the Onni 50L, 65L, and an Atompacks Prospector 50L, with the intetion of returning or reselling the packs that weren't quite right for me. All of these packs are right around 2 lbs, and it was pretty clear early on that the 65L Onni was more than I'd need. The Atompacks bag didn't make it from England quite in time, arriving just after we left on Friday, so I took the Onni 50L out on this trip. It excelled. I packed it up with my underquilt and topquilt at the bottom, then my cookset, mug, meals, jacket on top. My hammock, straps, rainfly, trowel, and extra rope were in the mesh back pocket, and my water, filter, bourbon, and snacks were in the mesh side pockets. I had a little room to spare, which will be nice on slightly longer trips for carrying more meals or clothing options.

The pack felt great both fully loaded at just over 21lbs, and when I was using it as a daypack, at probably 6 lbs. The frame is sturdy but lightweight. We had mist and light rain both nights, and the inside of the pack never got wet, even though I neglected to bring my pack cover.

If you're looking for a really nice, very lightweight pack, this is a great option.

Massdrop Pine Down Quilt

I bought two of these quilts, expecting to at least use one as a topquilt, and the other might only get use when car camping so my wife and I could share a blanket. When I saw it, I knew it'd be a great underquilt quilt, though. A friend of mine was coming on the trip with a hammock but no underquilt, planning to put a sleeping pad in the hammock for a little extra insulation. When he saw the quilt, he immediately decided to leave the sleeping pad in the garage. He was very happy he did. He reported it was warm, and it did a great job breaking the wind.

I felt the same way with it as a topquilt. The nights both had temps in the low or mid 30's, and a frigid wind between 5 and 15 mph. My rainfly became a sail and did a poor job keeping the wind out, but the quilt did a great job protecting me from it, and keeping me very warm.

I learned to make use of the footbox, and at 6'1" I could still pull the top comfortably over my face. I used a down jacket as a pillow in the hammock, and I was very comfortable on some uncomfortable nights.

I'm consdering modifying the blankets and my hammock to add snaps that will make affixing the underquilt to the hammock very easy. The difficulty of getting an underquilt on my asymmetric hammock is the one drawback to that style hammock.

Dutchware Spider Straps and Beetle Buckles

In general, I like the idea of Dutchware's Spider Straps and Beetle Buckles, but they aren't as simple to use as the Dutchware video implies. It's very convenient to use them to get positioning right without having to tie and untie a bunch of intermediate knots.

The downside was that securing the beetle buckles was more tricky than I thought. Anyone who uses a hammock knows that a key step to getting the right hang is adding your weight to the hang to see how it's positioned once weighted. Doing this with the Beetle buckles can be a chore. I'm going to keep using them, and see if I can learn technique to minimize my frustration.

Long Term: La Sportiva Ultra Raptor Trail Runners

This was my last trip with these shoes. I got them last summer, and I've taken them on three trips plus a Spartan Race. While they're very grippy and drain well, they're heavy and the huge amount of structure gave me blisters every time I wore them, no matter how I taped and bandaged. After 75+ miles, there's little chance the shoes will break in any more, and I'm left with several days of recovery after a trip. Not worth it when I know there are shoe options that won't wreck my feet.

I took advantage of REI's great return policy, and swapped over to a pair of Brooks Cascadia 13s. My road running shoes are Brooks Ghosts, and I love them. We'll see how the Cascadia 13s do over the next couple months.

Nearly four years ago, I picked up a Nixie Clock kit with the plan to build it with my son. He wouldn't be born for another two months. To complete the Nixie Clock, I needed a soldering iron, and I wanted one that would be approachable and usable for a variety of projects, so I also picked up a Hakko FX-888D.

Shortly thereafter, my son was born, my time to work on projects evaporated, I took a new job, moved the family to Boston for a year, we found out we'd have another kiddo, moved to Seattle, my daughter was born, my time further evaporated, so on and so forth.

About 18 months ago, I jumped in on a drop on Massdrop for a WhiteFox keyboard. It delivered just about a year ago, and it has been waiting patiently since then.

I finally got a chance to break out the soldering station for the first time, and assemble the keyboard over the Thanksgiving break from work. The project was really fun, and I'm itching to do another one. My soldering skills improved dramatically simply through repetition, and it was a really fun learning experience[1].

The keyboard itself is much better than I expected. The gap between the right-modifiers and the arrow keys is exactly as my fingers expect, and it makes things like ⌘+← just as easy as on my WASD Code 87-key, or on my MBP's Keyboard for that matter.

Add to that, Input Club has a really nice web-based configuration tool which makes key programming super easy. It means I can futz with the layout until I get it exactly the way I like it. For example, I just realized that I'd likely prefer the ~ key to be just to the left of Esc and all the other num keys right one. This will be no problem at all.

Of course, this isn't without its caveats. The current firmware (both Latest and LTS) have bugs with the LED functions. Not a dealbreaker, but frustrating.

Oh, that Nixie clock is still waiting. It's almost time.

As an aside, I took the assembly picture while I was working on a chamois for some reason. It didn’t dawn on me until I was reviewing the pictures that a chamois isn’t ESD-safe. Everything turned out just fine, but talk about a noob mistake. ↩

At this point, I'd guess most folks reading this are familiar with eero and similar distributed mesh home wifi products. For those that aren't, the tl;dr is that in many environments, a single router with a set of radios won't cover a whole home very well, and a distributed system with multiple radios working together is a better solution (read the linked Sweethome overview - it covers this better than I will). I'm a happy eero customer, and I'm not super interested in getting into why eero was a better fit for me than its competitors at the time I made the decision. As I said, overall I've been very happy.

However, I did have to get a little creative to solve a specific problem:

NAT/Egress Hairpinning

I have long run a few internal services on various web-servers running inside and outside my network.

Unfortunately, eero doesn't currently support a feature called Hairpinning, which allows clients inside the network to egress the network and get a response from the public IP of the same network. As a result, I had to access these services by one name externally (eg. [server].alvani.me), and another name internally ([server-hostname].local). This is frustrating since it breaks scripts and alerts that rely on consistent DNS names for services, and it means I need a second set of bookmarks to access services inside versus outside my network, plus the congnitive load of remmebering if I should use this name or that name to access this service. The whole point of DNS is to make this easy on us simple humans.

Split Horizon DNS to the Rescue

Split Horizon is a pretty common implementation in the enterprise world. In general, it's overkill for home networks, since there aren't a lot of DNS needs for most home networks. I really didn't want to, but eventually it became clear that for the short term, it'd be a good idea to run my own internal DNS server which handled request for the *.jehanalvani.com and *.alvani.me domains, while forwarding all other requests to upstream DNS providers. I could run in this configuration until eero eventually adds support for the hairpinning.

I'm writing this to document how I configured split-horizon on a Synology with Synology's DNS Server software. There's no reason this couldn't be adapted fairly easily to BIND or whatever other DNS Server you might want to run.

I started by installing DNS Server on my DS414Play.

Then, in DNS Server, I configured my forwarders.

Oh, if you leave the "Limit Source IP service" box checked, make sure you add your internal network CIDR to the list of permitted IPs. Otheriwise you'll get "Forbidden" on your DNS requests.

I added the zones I care about

A Quick Aside About DNS Zones

If you're familar with DNS, this is not a section you'll need to read, but I got some feedback that the concept of DNS Zones are confusing. For our purposes, DNS Zones are any domain(s) or subdomain(s) you want your nameserver to respond for. Of course, zones are much more powerful, and can be used in a lot of ways. The bottom line is that Zones are a method of drawing a demarcation for the responsibilities of different nameservers.

Moving on:

Finally, inside the zones, I configured the subdomains and services I care about

This matches the public DNS configuration of the same services, just replacing the IP address with the internal IP address of the server running the service. In my case, they're all the same, because I'm using a reverse proxy to interpret the requests and send them to the appropriate servers.

Now, any client that sends requests to this name server should recieve the internal record as an answer. I can test with a couple simple NSLOOKUPs from inside the network.

Where 4.2.2.2 is the nameserver that was queried, and the results of the non-autoritative answer are exactly what I've configured for my pubilc subdomain. (syno.jehanalvani.com is a CNAME to dynamic.jehanalvani.com, which is itself a CNAME to synology's dynamic DNS service). Ineffecient? Maybe a little. But I don't have to rememebr anything other than "dynamic.jehanalvani.com" after initial setup.

DHCP configuration

The next step is to tell the clients inside the network to use this nameserver. Clients inside the network needs to know to send requests to my nameserver. If you're configuring for your network, you might prefer not to set DHCP name servers to the your internal server, instead electing to give manual DNS server to specific clients. I wanted to be able to use any device on the network to reach these URIs, so I opted to configure eero's DHCP server to direct all clients to my internal nameserver.

Caveat

On a reddit thread, someone asked if this configuration works with eero Plus. The short answer is: yes! The long answer is: yes, but with some qualifications.

eero hasn't published much about how eero Plus works. However, it seems to hijack outbound DNS requests, sending the request to a nameserver eero controls. It's important to note that this only affects outbound DNS requests, so requests that say inside your network still work, as long as there is a responder to accept the requests. In the configuration above, that means that any records in the defined zones will be successful, but anything that needs to be forwarded to an upstream server will be hijacked by eero Plus.

This breaks services like Unlocator and Unblock-Us which rely on their own DNS servers receiving all requests, and interpreting specific requests. I had to disable eero Plus for the time being, since I make use of these services (as you can tell if you're familiar with the nameservers I configured as forwarders).

Is it worth it?

Obviously, that depends on your needs and your level of comfort. I have been happy with this setup for the year+ that I've been using it. However, as soon as eero adds support for NAT hairpinning, I'll happily pull it out. This does introduce a bit of fragility I don't care for, mostly in that it forces my Synology to be powered on for anyone on my network to be able to reach any internet resources.

A few months ago, I took a new job that had my family and I relocate from Balitmore to Boston. Getting settled into the new gig, and getting settled into the new home routine have both contributed to my lack of time to wrtie, here.

We arrived just in time for the notorious Boston winter. We also arrived just in time for the release of Fallout 4, which takes place in a fictionalized version of Boston some 250 years in the future. The apartment we're renting is only a few hundred feet from the historic Bunker Hill Monument, which in-game, has become a refuge for traders retired from travling the wasteland of the post-apocolyptic Commonwealth.

This morning, the sun was out and I had a little time to take some pictures of Bunker Hill for a comparison with its in-game representation.

IRL BH Monument from Monument St

This is a few feet from the entrance to my apartment, and I walk the dogs up to the Monument at least once each day.

IG Bunker Hill Monument from "Monument St"

Monument St. doesn't exist in the game; the closest I could find is this small alley with a similar view. Monument St. isn't big, but it's not quite an alley, either. Apologies I forgot to toggle the HUD in this one.

In this picture, and in the next, my character's back is to the river behind me. In real-life, there's a couple blocks of low-income housing that is currently slated to be torn down, replaced with luxury condos. It's ironic that the game omits this section of the neighborhood just as so many of the real-life government and Charlestown residents would like to.

IRL Toward BH from Lexington

IG Toward BH from "Lexington"

IRL BH NW Corner

IG BH NW Corner

I'd say this was pretty well represented. I was very happy that the trees in the park were included.

IRL Exhibit Lodge from North

IG Exhibit Lodge from North

IRL Exhibit Lodge SW Corner and Monument

IG Exhibit Lodge Corner and Monument

Couldn't get exactly the same angle, due to an in-game building, but pretty close. The monument is open to climb every day of the week. I didn't go this time, but I encourage you to come check it out if you're in the area.

IRL Monument and Col. Prescott Statue

These pictures do a good job of showing the way the game compresses large areas. It's a requirement; if the game world was as big as the real world, we'd get bored. Still quite impressive.

IG Monument and Col. Prescott Statue

Oh, no Pack Brahmin at Bunker Hill in real life, either.

IRL Charlestown HS from East side of BH

Facing east from the East side of the Exhibit lodge, there's a sizable green space, then down the hill you can see what was the Charlestown High School. I believe it's condos, now. Gorgeous building I would love to see represented in-game.

IG "Charlestown High" from East side of BH

In-game, though, it's just some row homes.

IRL Monument and Exhibit Lodge from SE

IG Monument and Exhibit Lodge from SE

IRL Col. Prescott Statue from South Side Main Entrance

IG Col. Prescott Statue from South Side Main Entrance

IRL Monument Square and Monument Ave. from S. Side Main Entrance

Yes, all in a 700' radius, there's Monument Square, Monument Ave., and Monument St. Getting delivery can be a challenge in this area.

IG Monument Square and Monument Ave. from S. Side Main Entrance

IRL Long of Monument and Main Entrance from South

IG Long of Monument and Main Entrance from South

Again, I couldn't quite get the angle right in-game due to buildings, but not too bad.

IRL Exhibit Lodge Front Door from East Side

My wife and son make a cameo. If you ever wondered, weather along the Atlantic seaboard changes about as quickly as in-game weather. We went from sunny, clear skies to completely overcast in a matter of the 90 minutes it took to go grocery shopping, come home, and get outside to play. That's why most of the pictures are blue skies, but this one is overcast.

IG Exhibit Lodge Front Door from East Side

IRL Freedom Trailhead Marker

The Freedom trail actually starts at the Bunker Hill Monument. I have a map later on in the gallery.

IG Piper Standing Approx. where Trailhead Marker Would Be

Piper isn't a bad trailhead maker, herself.

IRL Freedom Trail Map Signage Detail

IRL Freedom Trail Map Crop

IRL New Hampshire Gate Detail

The New Hampshire Gate doesn't exist in-game, since there's no entrance on the north side of the Bunker Hill.

IRL BH Signage Detail

Dogmeat would be SOL. He's never on a leash. And, tbh, I've never once cleaned up after him.

IRL BH Signage Detail

I’ve been a photographer since high school. I’ve usually been a hobbyist, occasionally making some money, rarely making the bulk of my income from photography. I started with a Minolta STSi, eventually working up to a Nikon F5 before I made my move to digital with a D200. When that started to gather dust, I moved on to a few point-and-shoots, experimenting with not having a SLR; leaning on my phone for day-to-day shots, and a small camera when I thought I’d use it. In practice, that marked the period of my life where I took the absolute fewest pictures. That was a bummer.

I’ve been curious about the new (relatively speaking) compact mirrorless camera systems. I researched the two main systems, APS-C versus Micro Four Thirds (MFT). The more I read, the clearer it became that MFT is winning the battle despite the documented advantages of APS-C’s larger sensor size[1]. In my research, there were more lens options available for MFT than APS-C, which I took as an an indicator the platform’s momentum. Hell, the Wirecutter has a writeup of the MFT lenses you should investigate for your new camera, but such an article doesn’t exist for APS-C. I ordered an Olympus OM-D EM–1. Plus, the camera is gorgeous in silver, which certainly didn’t hurt.

On an overcast day, the 45mm didn't have any trouble snapping to focus, and freezing Tex and his favorite ball.

Olympus’ autofocus is fast and accurate. Its face detection is helpful, in that it tries to intelligently focus on faces in the frame as best as it can, and it usually does a good job choosing the faces that are important based on the focal plane. I’ve been really impressed with the speed of the system, but I wonder how much of that is just the progression of technology overall since I bought my D200 in 2003.

Despite the lower f-stop, I’ve found that the 17mm is almost always the one I leave on the body. Maybe once the boy starts running more than fifteen feet away, I’ll use the 45mm more frequently. It’s a good all-around lens. It’s not super fast, or super sharp, but it also sat at a price-point where I don’t get worried about it always being on my camera. On the other hand, there have been a couple times I wished I had sprung for the $150 more expensive f/1.8 version of the lens. I might, yet.

Either way, once again having a camera I’m confident in and with means I’ve taken a ton of pictures. Mostly of my son, but that gives me something else to work on: expanding the subjects and events I’m comfortable shooting.

I’ve linked to the intenational SKU, which is $150 less expensive, but carries no warranty. The Olympus-warrantied SKU is here, if you prefer. I couldn’t find an international SKU for the 17mm. I should note that I actually got a pretty good deal on the warrantied SKU, so I bought that one. ↩

I recently needed to move a few directorys of tens- or hundreds-of-thousands of files to my Synology. Perfect use for rsync!

Unfortunately, rsync on OS X is stuck at 2.6.9, and I wanted to take advantage of some of the new features of 3.1.0. Specifically better handling of OS X metadata, and progress indication.

Fortunately, this walks you through a quick build and installation of rsync 3.1.0 in your /usr/local/bin folder. The benefit is that you can install your new version alongside the OS X included version (which is installed in /usr/bin/). Then you can add a couple aliases to your .bash_profile to treat them appropriately.

The first makes the system-installed 2.6.9 version refrencable by using the command oldrsync. The second makes the version in /usr/local/bin/ (which is 3.1.0, in my case) the one that runs when I type rsync. Finally, the third references the new version of rsync with a couple flags I almost always use.

There's been quite a lot of hype about this. I can't wait to get my hands on the game. The Campo Santo team has put together an incredible looking game, and knowing Panic's attention to detail, this is going to be a blast.

To recap: durability, pretty deep balls AND timely pass-interference penalties! You wouldn’t call it the sexiest quarterback package, and you certainly wouldn’t feel great about paying one of the league’s most lucrative ransoms for it. […]

Then again, the Ravens weren’t paying for Joe Flaccid. They were paying for Joe Flacco. You know, the calm dude from the playoffs. The towering, smiling, handsome, lanky, confident, gunslinging, teaser-killing, flag-generating, deep-ball-flinging machine. This version of Flacco suffered growing pains: seven straight road playoff battles; in the first five, he had no 200-yard games, one touchdown and six picks, three wins and two losses, and two season-ending stink bombs against the 2008-09 Steelers (three picks) and 2009-10 Colts (two picks, three points total). He looked better in his third postseason appearance (two more road games, including a blowout win in K.C.), then blossomed the following winter when deep threat Torrey Smith showed up. Flacco’s seven-game playoff stretch from January 2012 through last weekend kinda sorta maybe backs up John Harbaugh’s claim that Flacco is “the best quarterback in football.”

I picked up a Synology DS415play, a couple weeks ago. I’ve been looking for a good way to store family memories, as well as have device-indepentet on-site storage and redundancy.

The Synology DiskStation is a Linux-based NAS, and I couldn’t stand that the default shell was ash. How to fix?

Process

I’m taking a lot from this post on the Synology forums, and trying to explain it in a litte more detail[1].

Finding the bootstrap file for the Intel Atom CE5335 was a bit of a challenge, since Synology doesn’t use it as widely used as some other CPUs in their lineup. Fortunately the thread I linked above has a relatively recent (Nov 2014) bootstrap for a DS214play, which uses the same CPU. I guessed it would be the same, and it was.

I’m going to assume that if you’re reading this, you are thinking of doing the same on your DiskStation, and that you have an ill-defined-but-higher-than-zero knowledge of both *nix systems and how to Google.

First, you’ll need to ssh into the NAS as root (root’s password is the same as the admin user password).

At this point you have ipkg, the package manager, installed, but your shell doesn’t know about the folder it’s installed in. You’ll need to add /opt/bin/ and /opt/sbin/ to the PATH[2] in your .profile.

While you’re in your .profile, you might see a line that says HOME=/root/. I changed mine to HOME=~/, since I want this .profile to be portable between users. I’ve copied it to the admin user when I finished, so I have the same experience when I’ve connected as admin and root.

Now, if you type ipk and hit [tab] it should autocomplete to ipkg.

So, let’s install bash:

$ ipkg install bash`

Bam. You’ll get some output, then you should have bash installed.

Now, I needed conventions for getting into bash when I connect to the device. Again, the Synology forums came to the rescue.

Add the following to the end of your .profile:

if [[ -x /opt/bin/bash ]]; then
exec /opt/bin/bash
fi

The above checks if /opt/bin/bash is executable. If it is, the command will execute /opt/bin/bash. If it is not, it doesn’t execute /opt/bin/bash, therefore leaving you in ash.

Add the following to .bashrc:

PS1='\u@\h:\W \$ '
export SHELL=/opt/bin/bash

The top line you may want to adjust to your taste. That’s how I like my prompt to look. Here’s a good tool to help you build the prompt that suits you.

The second line sets the SHELL variable to /opt/bin/bash. Remember that .bashrc is only read by bash when bash is started, so the SHELL only gets set if bash is called.

Now before you close your current SSH session, start a second. You should get your new, fancy bash prompt. Success!

Once you have that good feeling, copy .profile and .bashrc to /volume1/homes/admin/, and start another ssh session, this time connecting as admin. If that works, you’re set.

I find that if I start a project like this by thinking about (and sometimes outlining) a post like this as I go, I have a better understanding of what I’m doing. Often, if I can’t follow the thread from beginning to the end, I don’t actually begin the project because I feel like I don’t understand the process well enough. ↩

Lou Montulli in an old (but it seems to be impossible to find out how old) post on what appears to be a kind of personal website:

At some point in the evening I mentioned that it was sad that Lynx was not going to be able to display many of the HTML extensions that we were proposing, I also pointed out that the only text style that Lynx could exploit given its environment was blinking text. We had a pretty good laugh at the thought of blinking text, and talked about blinking this and that and how absurd the whole thing would be. The evening progressed pretty normally from there, with a fair amount more drinking and me meeting the girl who would later become my first wife.

Shocker.

It seems pretty sad that someone so involved with developing the web as we know it has this for a website.

The only bad thing about Song Exploder is that I've spent a lot more money on music I otherwise might not have found. Woe is me.

Be sure not to miss the year-end episode Sea of Love by the National. You can go through the year-long archives and find plenty of gold. The access that Hrishikesh Hirway has been able to gain over 52 weeks is a great example of how thoughtful, interesting, and insightful commentary opens doors.

Since earlier this year, I’ve been making a focused effort to ensure that my and my family’s important data is safe. It’s the closest I ever get to making a New Year’s resolution[1]. When I picked up my 2008 MacPro, a couple years ago, I built my own Fusion Drive, but also threw in a second, larger spinning disk drive for internal Time Machine backups.

Obviously, a single copy is not a backup, and for years I have kept all of my documents in Dropbox. That’s a second copy of most stuff. I signed up for BackBlaze earlier this year as well. That captures everything Dropbox does, plus the few things on my MacPro’s hard drive[2], that aren’t in Dropbox.

On-Site Improvements

I recently added a Synology NAS to the mix. On-site, large storage (with multi-drive redundancy), including multiple user accounts, various web services, and slew of other features made it very appealing. I picked the DS415play, because of the hardware video transcoder, and hot-swappable drives[3].

The Synology also allows each user account to sync their Dropbox (among other cloud storage providers) to a folder in their user home directory, it seemed like a nice way to have a second on-site copy of all of my and Lindsay’s docs.

In addition, the PhotoStation feature will help me solve the issue I’ve been struggling with: how do I make sure that Lindsay and I both have access to our family photos, consistently, effortlessly, and without relying on an intermediary cloud service. Neither of us are interested in uploading all of our photos to Facebook or Flickr just to share them. It also takes thought, effort, and coordination on our parts to get photos our of our Photo Streams give them to one another. I want to minimize that, while ensuring that these photos are well backed up.

Expect posts in the coming weeks about how I’m messing with this stuff. I’ve found it to be a lot of fun, already, and I’m pretty impressed with the Synology. It’s a little fiddly for most people, but if you’re inclined to be a nerd - especially a Unix-y nerd - it’ll be right up your alley.

I’m a big fan of the idea that if something is important to you, you should be doing it already. ↩

You might have noticed that I’m pretty focused on backing up my MacPro, and I’m much less worried about my rMBP. There are three reasons for this: first, My MacPro has all of my family photos in Aperture libraries that are too big to go into Dropbox; second, everything on the rMBP is in Dropbox, thanks to Dropbox for Business’ ability to sign the app into a work account, and a personal account. I symlinked ~/Documents/ to ~/Dropbox (Under Armour)/Documents/, but I stil have access to my personal dropbox at ~/Dropbox (Personal)/. The only things that aren’t in there are my Downloads folder (which could be easily, and arguably should be), and my ~/Sites/ which I really only use for Cheaters and as a repository for various software and configs routers, switches, WAN Optimization devices, and can be discarded at will. ↩

Synology’s feature matrix is a bit of a mess, but eventually I decided that hot-swappable drives was a must, which took me up to the DS415, and adding the transcoder was an additional $60, so that made the cut, but each person’s needs are going to be a little different. ↩

So "move on," if Cook’s essay today makes you so uncomfortable. Return to talking about his fastidiousness, or his supply-chain management, or whatever. But there’s no moving on for me, not today. This I’m going to savor.

This is the perfect pre-Halloween podcast. Grisly deaths; heroic figures, people who attempt to rise to "hero" status, but make themselves look like fools; supposedly supernatural monsters; all in late 18th century France.

And, the best part? After you listen, you can watch Brotherhood of the Wolf with a fire and a glass of wine. That's exactly how I'd like to lead into Halloween.

My ISP’s DNS server did not know about the address secure-1848156627.us-west-9.elb.amazonaws.com, but the unblock.us DNS server resolved it successfully. So I just added another zone for amazonaws.com, and forwarded those requests to unblock.us. That seems to have resolved it - Netflix now works. Not ideal, since the rule is a bit general, but I’m happy to have it working.

Good investigation, and little things like this may resolve some of the issues I was seeing with this setup, last year. I don't have the patience to keep up with it, but I'm certain some of you are more patient people than I am.