A Nice Little Place

Good afternoon! I'm glad you could make it. Today I'd like to show you a special place. It's a sort of a refuge for the weary; a natural charger of human batteries. I like to go there when the demands of life are closing in, but it's a fine place to visit on any occasion.

It's right that way, just down the path.

Close the door behind you, if you don't mind — thanks.

Now, if you'll just follow me, it's not too far.

Do you see those ferns over there, off to the right? The really dark green ones, I mean. Lush, aren't they? And I've been told this is the only place in the world they still grow naturally. They'll grow as high as your head by the end of the Summer. When I was younger I'd wander through there for hours. Sometimes, after a rain, I'd lie on the damp ground and watch the clouds float by all afternoon.

Watch your head there, the branches hang quite low to the path.

I've always found the woods here fascinating — not far to go now, just over that next rise — there are myriad species. White Ash next to Brown Ponderosa, Elm, and all sorts of wild fruit bearers. But my favorite are these Oaks. The way they spread out their arms it feels like they're holding up the whole of the forest canopy. And on a day like today, with the sun just so, it's as if they have their fingers spread to let the light dance on the floor with the breeze.

That sound? Which one? Ah! You're hearing the Robins. They do seem rather delighted today, don't they? They're probably sharing stories of all the worms they've gorged themselves on after yesterday's rains. Who can blame them?

Now be careful here. The moss on these rocks can be rather slippery. You can use that tree there to steady yourself as you descend. Once we get to the bottom there, the path goes to the right; we've almost arrived. Oh, look, a little garter snake over there in the leaves. You missed it? I'm sorry. Rather dashing fellow, had bright yellow stripes on dow his back.

There. That wasn't so bad, was it? The path is a bit firmer here. Our destination is just ahead, through those trees. Watch your head again, the branches are even lower than they seem at first.

Just follow me through here. It almost looks like a magic portal, doesn't it? I'm not certain it isn't.

Well, what do you think?

Magnificent, isn't it? I don't think I've ever been to a place that felt so much like a room in the forest, the way the trees come together around the edges here, yet the middle remains so open.

See the rock there to the left, that juts out just above the creek? It's the perfect place to take off your shoes and chill your feet on a hot Summer day. The creek is cool year round. And if it's warm enough you might try wading in just there, to the right. See those purple daisies on the bank? A few steps out there's a small depression in the creek bed, perfect when you need a soak.

I don't know if fishing is one of your interests, but you can imagine that this is a good spot. There's never much of anything large in the creek here; it's a bit too shallow for that. But the occasional trout or minnow can be found. If your hands are quick enough I dare say you could pluck them right out of the water, it's clear enough.

There's really nothing you can't do out here. I've brought some paints and a canvas in the past; saw a fox that day, if you can believe it. I couldn't count the words I've written out here. It's just such a good place to sit and think.

Well, anyway, I should probably be going now; life is calling me back. Though, I might stay long enough for a quick dip of the toes.

Oh, if you have time you absolutely must have a look at the rocks on the opposite bank there. I've never seen so many colors of lichen all in one spot. And if you've any interest in coming back with a special someone, you might want to have a look at the hollow behind those vines, between the trees across the creek, just to the left of that White Ash.

Anyway, let me know what you see, won't you? I love to hear about the wildlife, and it seems every time I'm here there's a new botanical discovery in waiting.

No, no need to follow me back. Stay as long as you'd like. Hear the sounds, smell the smells, see all there is to see. Be sure to take a sip, it's like nothing you've had before. Maybe have a nap on the rock there; it's softer than it looks.

Don't worry, the path back is an easy one, you won't miss it.

And if I've gone before you arrive, please leave me a note. I'd love to hear what you found.

Losing A Friend

When a human dies we have certain rituals we perform. Mine might be different from yours, but they’re probably similar. We mourn, we reminisce, we sell old things, or donate them. We consider the acute causes, the ways we hope to avoid them ourselves. And then we erect memorials; physical objects to remind us of the dearly departed.

Most often we humans have a specific ritual where we do these things together. Whether we realize it or not while living, most of us touch enough other lives that when we fade out of this life it doesn’t go unnoticed.

A similar thing often happens when a pet dies. It may only include the immediate household of the now-gone companion, and maybe a few of the friends of the members of that house, but it’s still there: the mourning, the reminiscing, the donations. It’s an event. We mark it as such, sometimes even with very physical memorials.

But not all death is mourned equally. Not all friends get a funeral.

For the last five years I’ve spent nearly every day with my friend. Each morning, after getting ready for the day, I pour my cup of coffee and head out to my office, where I’m greeted by my friend. Sometimes he’s been on my mind all night. Sometimes I’d rather not think about him at all, frankly. Like any other friendship, it has its rocky moments.

This friendship has many unique qualities, but one of them is that I’m responsible to make sure my friend gets fed. And he works to make sure I get fed, in turn.

We work together all day, each day. And it’s not just the two of us. There have been many who have helped to feed my friend, and received the benefit in return. Most recently among them is my brother.

While it’s been my responsibility to keep him fed for years now, it hasn’t always been easy. Last year we went through a few months with basically nothing at all to eat. But, we made it through that, and the Summer and Fall were full, and happy. We even took some of the extra food we had and stored it away in the cellar. It kept us well-fed through the winter. Last year was a good Christmas.

Then, at the beginning of this year, my friend got sick. He’d been sick before, so we knew he’d make it through it. But, as the weeks turned into months we started to doubt. The food from the cellar was gone now, and the best I could find for him were a few meager rations (joyfully received, but insufficient for the task). He needed more, but no matter how hard we tried we just couldn’t find anything for him.

In March the shadow started to shade my friend. Like the scattered edge of a storm it was soft at first, darkening throughout the month.

In April there was no denying it. The shadow was here, and it wasn’t leaving alone. All through the process my friend never complained. He never threw an eye of disappointment my way. He just kept doing what he could, every day. From a cup of coffee in the morning to a cold beer in the evening, we saw each other every day until the end.

April 29 was our last day together.

We don’t hold funerals for businesses, and maybe we shouldn’t. But when you spend half a decade or more working on something you love, pouring your life into it, weaving it into your life day by day, you can’t rip it off like a band aid. It’s not stuck on you, it’s woven into you.

I can’t help but feel like I failed my friend. Failed to take proper care of him. I could have done more, or something different, right? We all know death is inevitable. But this death, in this way?

There will be reminiscing, and probably even selling of old things. We’ll probably all stand around from time to time, remembering the good ol’ days, but also wondering about how it could have been different.

There won’t be a memorial service. No one will get up at the microphone and talk about a life well lived, or sing a melancholy song about how short life can be.

But, I would like a sort of grave stone. A physical reminder of where all those days went. Something to be able to look at and know this really happened.

Then, in the morning, I can grab that cup of coffee, sit down, look, and remember.

Rest in peace, old friend. I won’t forget you.


Monitoring an APC UPS with a Raspberry Pi

If you're looking to monitor an APC USP (many of the latest models have a USB port for monitoring) this is the best walk-through I've found:


Thanks to Kenneth Burgener for his great write up.

Being able to query the UPS or perform actions based on Power Off/Power On state is fantastic.

$ apcaccess 
CABLE    : USB Cable
UPSMODE  : Stand Alone
STARTTIME: 2016-03-09 09:10:19 -0700  
MODEL    : Back-UPS ES 550G 
LINEV    : 122.0 Volts
LOADPCT  : 6.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 107.5 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 92.0 Volts
HITRANS  : 139.0 Volts
ALARMDEL : 30 Seconds
BATTV    : 13.5 Volts
LASTXFER : Automatic or explicit self test
XONBATT  : 2016-04-04 06:36:26 -0700  
TONBATT  : 0 Seconds
CUMONBATT: 16 Seconds
XOFFBATT : 2016-04-04 06:36:34 -0700  
LASTSTEST: 2016-04-04 06:36:26 -0700  
STATFLAG : 0x05000008
SERIALNO : 4B1414P00197  
BATTDATE : 2014-03-31
NOMINV   : 120 Volts
NOMBATTV : 12.0 Volts
END APC  : 2016-04-10 09:13:05 -0700

Graphing Data With SNMP and MRTG


  • Had to install the extra MIBs with ``
  • Data is always in integer format. If you want decimals you have to use Factor
  • Watch your MaxBytes! If a value goes above that, MRGT will assume it was an error and either make it a 0 or not display it at all.
  • How to check an OID with SNMP: snmpget -v 2c localhost -c public .
  • I put the entire flow of Updating MRTGs into a single script to avoid race conditions /usr/local/bin/update_values_and_run_mrtg
  • APCUPSD Getting Started: http://www.anites.com/2013/09/monitoring-ups.html
  • MRTG is writing to /www/mrgt on the Pi, but NGINX just points to that as the root.

Helpful Links:

Cox Gigablast Install

Around November 2015 I got a letter in the mail from Cox Communications, my ISP. “Gigablast is coming soon!” it said, along with a warning that service might be interrupted from time to time over the next few weeks as they install infrastructure.

Gigablast is Cox’s Fiber To The Home (FTTH) gigabit internet offering.

Needless to say, I was excited. I was already on their highest-tier plan (300Mbps down, 30Mbps up), but faster always seems better. Why? Because why not?

I was also very interested in the rollout because I wasn’t familiar with much of the technology of optical networks. This was a chance to observe up-close how it all works. And since a lot of the technology was going underground, there would be a limited window of opportunity to observe it, ever.

With that in mind I did my best to take photos, talk to workers, and document as much of the process as I could. I’ve documented the process here in roughly chronological order, and I’ve done my best to gather the details necessary to get a good grip on how the Cox Fiber network is physically setup in neighborhoods with Gigablast.

If you know details that I don’t, or have corrections, I’d love to know.

Step 1: Digging the holes for the POSs and Digging some trenches for new conduit.

The first sign of activity in the neighborhood was the digging of holes to install the POSs. A Passive Optical Splitter is the point in an optical network where the incoming “Main” fiber line is split up into a single line for each house.

Workers dig a hole for an POS
A utility box is prepared to be placed into the hole previous dug. The POS will sit on this utility box, fed by the Fiber in conduit beneath it.

Step 2: Pulling Conduit and Pulling Fiber to the Pedestals

While the POSs are being prepared, workers are pulling conduit through the existing coaxial conduit. Yes, that's right, they're pulling conduit through existing conduit. You can see the new, bright orange conduit being pulled within the existing gray conduit. Once that has been pulled, the fiber is pulled within the orange conduit. I presume this is because the stresses that the orange flexible conduit can endure far exceed what they are willing to put the fiber through.

New conduit (orange) being pulled near the existing coaxial amplifier, and the new utility box that the POS will be placed on.
Closeup view of new conduit (orange) near existing amplifier and the new POS container.
New conduit (orange) being pulled to the pedestal in front of a house. Once the new conduit is in place, fiber was pulled through the new (orange) conduit.
Inside of the underground utility box where the POS will be placed.

Step 3: Installation of the POS

Once the conduit is in place the POS is installed adopt the utility box that was placed in the ground. So far all of these are right next to existing amplifiers in the coaxial network. This seems like a logical way to structure the network, but by no means would it be mandatory.

Once the POS is installed, the fiber was pulled into the cabinet and terminated.

POS atop its utility box. Fiber is fed from beneath.
Closer view of Cox POS.

Step 4: Termination of the Fiber at the Pedestals

This was one of the most confusing parts to me before I watched the install take place. I couldn't figure out how the fibers were routed through the pedestals. Were there optical switches in each pedestal, linking the fibers to main network? Were there splices everywhere?

Turns out the answer is super simple.

The cable that's pulled from the POS is then looped through each pedestal, with about 12 or 15 feet of coiled slack left in each pedestal.

The trick is that this cable actually has 96 glass fibers in it, enough for 96 houses.

Example of multi-fiber cable.

Here's how they do this at each pedestal:

  1. Pull off the out layer(s) of insulation, exposing the "tubes". (Each "tube" contains 12 optical fibers, each in its own protective jacket).
  2. Pull off the out layer(s) of the tube(s) that need to be access at this pedestal.
  3. Now the individual fibers are visible, in their protective jackets.
  4. Cut the fibers that need to be terminated at this pedestal.
  5. Terminate the fibers with standard SC or LC (etc) style connectors and install in place in the pedestal.
  6. Carefully coil the cable back into its harness and close up the pedestal.

So the trick I failed to see is that, the fibers that are terminated at this pedestal remain in the cable bundle, they're just unusable beyond this point.

Here's a diagram representing this:

The path of the fibers in the main cable bundle, from pedestal to pedestal.

Step 5: Home Install

The Home install is very straighforward. There are only a few steps:

  1. Pull Fiber and a new piece of Coax from the Pedestal to the Home through the existing conduit.
  2. Terminate the Fiber inside the home and connect to an ONT, installed in the home.
  3. Terminate the Fiber at the pedestal and connect to incoming Fiber.
  4. Provision the ONT (Mine is an Alcatel-Lucent G-010G-A).
  5. Do a speed test.
Pulling new Fiber and RG-6 from the pedestal to my house.
This box, on the wall in my garage, splices the rigid fiber from the conduit (black) to the flexible cable that was run to the ONT in my house (beige).
Closeup of the flexible fiber.
Terminating the flexible fiber.
Terminating the flexible fiber.
The tool used to splice the connectors onto the ends of the fiber, a Swift F1.
Some of the many layers of a fiber optic cable.

Final Notes

  • A new piece of Coax was pulled at the same time. At least in my neighborhood TV isn't going to be on Fiber any time soon. The old Coax was used to do the pull of the new cables.
  • A box was installed in my garage were the rigid fiber from the conduit was spliced to much more flexible fiber that was then run to the ONT.
  • The ONT was required to be indoors. The garage was not sufficient.
  • I was able to keep using my existing router (TP-Link Archer C7). The techs recognized it and gave me no trouble leaving it in place.
  • The techs noted that Gigablast is not overclocked the way the rest of their internet products are. If you get 950Mbps, be happy. Don't expect over 1000. Also, good luck finding a switch or router that'll go over 1Gbps for any consumer price at this point, so you wouldn't notice anyway.
  • The connectors were spliced onto the ends of the fiber, the fiber wasn't hand-fed and terminated through the connectors.
  • The installation was 2 hours from the time the first tech showed up until I was back online.
  • The installation process was supposed to take multiple days (pull fiber one day, come back and install ONT another), but the tech offered to pull the fiber and do it all in one go. Of course I took him up on the offer.
One of the many speed tests I have run since the install. The max speed I've seen is about 960Mbps. I'm satisfied.

If you know details that I don’t, or have corrections, I’d love to know.


  1. An earlier version of this article mistakenly referred to the POS as an OLT. The OLT exists in the CO or PoP, not in the neighborhood.
  2. An earlier version of this article mistakenly referred to the coax being pulled as "RG-8". It is, in fact, RG-6.
  3. An earlier version of this article referred to coaxial "Nodes". These are, in fact, Amplifiers.

Colorado River At Hoover Dam

The Best Parts from Apple's Motion To Vacate

This afternoon Apple posted a motion in response to the order brought by the court on behalf of the FBI:


You can read the entire document if you're interested.

What I find brilliant about this particular motion is that it's clearly written in a manner meant to be quoted from. Some sections almost read as a collection of sound bites more than a legal argument. That said, make no mistake, this is a thorough dressing-down of the FBI's request.

Below you'll find my favorite quotes from the document.

In fact, no court has ever authorized what the government now seeks, no law supports such unlimited and sweeping use of the judicial process, and the Constitution forbids it.

In short, the government wants to compel Apple to create a crippled and insecure product.

Finally, given the government’s boundless interpretation of the All Writs Act, it is hard to conceive of any limits on the orders the government could obtain in the future. For example, if Apple can be forced to write code in this case to bypass security features and create new accessibility, what is to stop the government from demanding that Apple write code to turn on the microphone in aid of government surveillance, activate the video camera, surreptitiously record conversations, or turn on location services to track the phone’s user? Nothing.

Moreover, this is the only case in counsel’s memory in which an FBI Director has blogged in real-time about pending litigation, suggesting that the government does not believe the data on the phone will yield critical evidence about other suspects.

A. The All Writs Act Does Not Provide A Basis To Conscript Apple To Create Software Enabling The Government To Hack Into iPhones.

Moreover, federal courts themselves have never recognized an inherent authority to order non-parties to become de facto government agents in ongoing criminal investigations. Because the Order is not grounded in any duly enacted rule or statute, and goes well beyond the very limited powers afforded by Article III of the Constitution and the All Writs Act, it must be vacated.

If the government can invoke the All Writs Act to compel Apple to create a special operating system that undermines important security measures on the iPhone, it could argue in future cases that the courts should compel Apple to create a version to track the location of suspects, or secretly use the iPhone’s microphone and camera to record sound and video. And if it succeeds here against Apple, there is no reason why the government could not deploy its new authority to compel other innocent and unrelated third-parties to do its bidding in the name of law enforcement.

While these sweeping powers might be nice to have from the government’s perspective, they simply are not authorized by law and would violate the Constitution.

Moreover, responding to these demands would effectively require Apple to create full-time positions in a new “hacking” department to service government requests and to develop new versions of the back door software every time iOS changes, and it would require Apple engineers to testify about this back door as government witnesses at trial.

Moreover, the government has not made any showing that it sought or received technical assistance from other federal agencies with expertise in digital forensics, which assistance might obviate the need to conscript Apple to create the back door it now seeks.

Under well-settled law, computer code is treated as speech within the meaning of the First Amendment.

The government disagrees with this position and asks this Court to compel Apple to write new software that advances its contrary views. This is, in every sense of the term, viewpoint discrimination that violates the First Amendment.

If the government did have any leads on additional suspects, it is inconceivable that it would have filed pleadings on the public record, blogged, and issued press releases discussing the details of the situation, thereby thwarting its own efforts to apprehend the criminals. See Douglas Oil Co. of Cal. v. Petrol Stops Nw., 441 U.S. 211, 218-19 (1979) (“We consistently have recognized that the proper functioning of our grand jury system depends upon the secrecy of grand jury proceedings. . . . [I]f preindictment proceedings were made public, many prospective witnesses would be hesitant to come forward voluntarily, knowing that those against whom they testify would be aware of that testimony. . . . There also would be the risk that those about to be indicted would flee, or would try to influence individual grand jurors to vote against indictment.”).

In addition to violating the First Amendment, the government’s requested order, by conscripting a private party with an extraordinarily attenuated connection to the crime to do the government’s bidding in a way that is statutorily unauthorized, highly burdensome, and contrary to the party’s core principles, violates Apple’s substantive due process right to be free from “‘arbitrary deprivation of [its] liberty by government.’”

For example, society does not tolerate violations of the Fifth Amendment privilege against self-incrimination, even though more criminals would be convicted if the government could compel their confessions. Nor does society tolerate violations of the Fourth Amendment, even though the government could more easily obtain critical evidence if given free rein to conduct warrantless searches and seizures. At every level of our legal system—from the Constitution,28 to our statutes,29 common law,30 rules,31 and even the Department of Justice’s own policies32—society has acted to preserve certain rights at the expense of burdening law enforcement’s interest in investigating crimes and bringing criminals to justice.