In their blog post about the release, the folks at Plex go behind the scenes a little bit:
The new platform allowed for two very different ways to build apps, each with distinct advantages and disadvantages. The easiest was TVML, which is a custom markup language evolved from the earlier version present on previous generations of the device. TVML is a markup language for media interfaces, meaning that it’s incredibly easy to make the beautiful screens you’re accustomed to seeing in the Apple apps. On the other hand, they allowed running full native code, which was obviously essential for games, and provided the highest level of control.
In and of itself, this is nothing revolutionary nor exciting. This passage, however, really stood out to me:
After a bit of experimentation, we settled on a clever mechanism whereby we’d request XML from the media server, and then transform it using XSLT into TVML.
This makes me happy.
Though XML is in many ways a completely barbaric, enterprisey way to transmit data, it does have a couple advantages. One in particular is how easily it can be transformed to look like a completely different document. Enter XSL Transforms.
In short, XML can be transformed by applying rules defined in another, special, XML document called a XSLT. The result of these transformations can look completely different than the original.
For example, many times in the past I’ve used XSLTs to transform an XML input into a HTML output. It works really well in certain use cases.
As a big fan of XSLT — even despite its many warts — seeing this post from Plex made me smile. I’m happy to see that the folks at Plex did what was smart, rather than what was cool. They embraced this nearly 20 year old technology to make the best app they could for a platform that’s, by some measures, nearly 20 days old.
A couple of years ago, the fine folks at Synology were kind enough to give me a DS1813+ fully loaded with 8x 3 TB drives. That’s a whopping 24 terabytes of available storage that I have sitting in my home office. More than I need. And I love it.
As discussed on the last ATP, having a stupidly large storage solution in the house is something you can’t live without once you experience it. While the 8-bay Synology I have is probably a bit overkill, there are others at more manageable sizes that may suit you better.
Any of the Synology devices I’ve ever used, regardless of how many bays they have, run their Disk Station Manager software. As you’d expect, it’s web-based, but it’s pretty nice as these sorts of things go.
I really fell in love with my Synology once I went poking around in DSM, and realized that this is more than just network attached storage — it’s an entire server that’s sitting on my home network, always on, ready to help.
One of those things the Synology can do is give you access to your home network when you’re not at home. All you need to do is set up a VPN server.
These instructions are current as of DSM version 5.2.
- To start, sign into DSM using your web browser.
- Once you’re there, open
- In the left-hand pane, select
VPN Server, and choose
Once the VPN Server is installed, you can navigate to it from the “Start” button.
I have mine set up to be a PPTP server. I know that’s not a particularly secure choice, but really the idea is just to be enough of a thorn in a nefarious person’s side that they’ll likely choose some other low-hanging fruit to mess with instead.
To set up the PPTP server:
- In the left-hand pane, select
Enable PPTP VPN server.
- Set up the rest of the settings as you see fit. Here is my setup:
The next step is to convince your router that PPTP traffic is approved, and to forward it to your Synology. The mechanism for doing so will vary by router, but the key is that the following need to be forwarded:
- TCP Port 1723
- GRE/IP Protocol 47
Once you have everything set up on the Synology and your router, you need to configure your client. In the case of OS X:
- Use the Apple Menu (or Spotlight, etc) to open
- Choose the
- Click the
+at the bottom of the left-hand column.
- Set the
VPN Typeto be
PPTP, and type a friendly name of your choosing.
- Set the
Server Addressto be your home IP address or hostname. As with the router conversation above, there’s a million ways to handle this; it’s left to an exercise for the reader.
Account Nameto your user name on your Synology.
Send all traffic over VPN connection. You probably want this, as it will ensure that your computer encrypts all the things.
The next time you’re out of your house (or, say, if you tether to your phone),
go back into
System Preferences, back into the
Network pane, select your
new VPN connection, and then click
Connect. Depending on your settings, you’ll
likely see an item in your menu bar indicating you’re connected.
You can also use the
Network pane to set the order in which your computer will
attempt to reach out to the internet. Whether or not you completed step 8 above,
you may want to fiddle with this. To do so, return to the
Network pane, select
the gear, and then select
Set Service Order.... Then simply drag the options
around until they’re in the order you want.
All the networking geeks are currently writing me to tell me that PPTP is so insecure that it’s near-as-makes-no-difference to transmitting data plainly. That’s okay. More than anything else, I just really like being able to get to devices on my home network when away. A VPN server like this allows that.
If I ever get more security conscious, I’ll take a stab at setting up one of the other kinds of VPN servers the Synology offers.
It feels like both yesterday and forever ago that this happened:
Today, a year later, we celebrate.
I can’t believe how lucky I am to have you and your mother in my life, little man. You both bring me indescribable joy, every single day.
It was such a struggle getting you here. You’ve proven worth it, a million times over.
Today I dug up an old tool I wrote way back in 2007. It’s called Tray System Monitor, and it’s designed to be a very small system monitor for Windows. It runs in the tray, and shows two graphs, side by side:
Out of the box, the graphs can show:
- Battery remaining
- CPU usage
- Disk usage
- Network downstream
- Network upstream
- Network up & downstream
- Wireless strength
I wrote Tray System Monitor back when I was using Windows full time. It was one of my first C# apps. The code is reflective of its author: a semi-experienced C++ developer that had only around a year of experience in C#.
That being said, I dusted it off today, as I wanted to run it on the Windows computer I’m using full time at a client’s office. It took a little bit of build settings tweaking to get the old girl to run, but no code changes, which I was happy about.
I’ve placed the code on Github, should you want to check it out and/or tweak it for yourself.
I should also note that it is very easy to add your own monitors to the app,
without changing any of my code. In your own DLL, include a class that implements
IStatusProvider interface, and place it in the same folder as the
Tray System Monitor executable. It should auto-discover your provider the next
time the app is restarted, and it will be treated just like any of the other
A pop culture podcast, but more than that, hosted by Jason Snell and Friends, The Incomparable has always felt like the “big leagues” to me.
I’ve finally made it to the big leagues.
I could quote most of this movie from memory. I love it, and watch it constantly. When I was a kid, I wore out a section of our VHS copy because I watched Hunt so darn often.
This was, without hyperbole, a big moment for me. It was like, well, sailing into history.
Despite the endless public discussion of baby-making, relatively little is said about fertility problems, even common ones. The erasure of these issues from the public consciousness, combined with the “don’t leave it too late” narrative, directs a heavy and unnecessary sense of blame towards those who struggle to conceive.
When a close friend of mine was referred to a fertility clinic by her [General Practitioner] at the age of 28, she said it felt like a punch in the stomach. Despite every logical argument to the contrary, she struggled with feelings of embarrassment, failure, guilt and shame. What would have made it much easier, she told me, was feeling that this was normal, common even.
In a departure from my usual nerdery, I was lucky enough to get interviewed by the Disney World fansite Rope Drop [dot] net. I was asked several questions about Disney World by John Kivus, one half of the husband and wife team that run the site.
On my interview, I discuss planning for Disney World trips, changes to Disney World over the years, and what attractions I really love there. Though I’m no expert, I could go on about Disney World for hours.
Today I had the tremendous pleasure of appearing on my dear friend Myke Hurley's wonderful podcast series, Inquisitive. On this episode, we discussed my favorite album, Mutemath's “Armistice Live” (Spotify, iTunes Video, iTunes Audio, Amazon, Rdio).
When Myke first started this favorite albums series with our mutual friend Faith Korpi, I was immediately hooked. I love music; as with so many others, it has been an important part of my life since I can remember. Listening to people discuss their favorite albums is always fascinating, and fun. Myke’s masterful editing just makes it that much more fun to listen to.
When I listened to Faith’s episode, I immediately wondered what I would choose as my favorite album. The one I chose for Inquisitive was Armistice Live, for a couple reasons. Mutemath is presently my favorite band, and has been for a few years now. Armistice Live, mostly a live performance of their then-new album “Armistice”, is my favorite of all their albums.
Mutemath is without question one of the best live acts I’ve ever seen. Their energy is phenomenal, and riveting. Armistice Live does a great job of capturing that.
Naturally, I have quite a lot more to say; please have a listen.
Before I landed on Armistice Live, I had spent a lot of time trying to figure out how to answer such a simple question — what is my favorite album? I ran through tons of different choices, narrowing it down to just a few. Though I stick by my choice, there are a few others I nearly chose. In case you’re in need of some new music to try, I thought I’d call them out here.
In college, my good friend Brian introduced me to an absolutely phenomenal debut album by an artist that seemed to come out of nowhere. Rob Dougan's “Furious Angels” (Spotify, iTunes, Amazon, Rdio) is best known for some of the tracks that were used on the soundtrack for The Matrix. Nevertheless, it’s a stunningly beautiful and powerful album; one that still gets regular plays to this day.
Anytime I listen to “Furious Angels”, I’m immediately brought back to college. That brings with it all the good and bad times that defined my college experience. Furthermore, I feel like “Furious Angels” was the gateway drug into my love of trip-hop and downtempo music.
When I was in high school, my parents bought a Nissan 300ZX from one of my dad’s coworkers. We knew that it only had a cassette player in it, and when we bought it, we brought one of the only cassettes we had in the house to listen to on the way home. That cassette was an album that I can’t find for purchase anymore. The album is “Seal: The Acoustic Session”, which is six tracks, all acoustic. There’s a video available as well, which we had on VHS and eventually captured digitally. As with so many things, that video is available on YouTube.
This album has, just like “Furious Angels”, remained in constant rotation since that day we picked up the Z in 1996 or so. It’s scary to realize that was very nearly twenty years ago.
“The Acoustic Session” is also unique in that I always tend to play it on rainy days. The day we picked up the Z was a very very wet day in New York and Connecticut, and I had only six songs to listen to on the hour drive home. I will forever associate rain with this album, and vice versa.
As a child, I tended to gravitate toward the music my parents liked. We heard a stunning array of wildly unrelated artists, but there were a few mainstays. Elton John was one of them. Though “Live in Australia” will always have a special place in my heart (one of the tracks was our wedding song, among other reasons), I very nearly chose a different album altogether.
Elton’s “17-11-70” (Spotify, iTunes, Amazon, Rdio), or 11-17-70 for us silly Americans, is an absolutely stunning live performance by just three people. The performance of Sixty Years On, particularly that of drummer Nigel Olsson, is breathtaking.
Finally, it would be peculiar if I didn’t mention at least one Dave Matthews Band album. For at least 10 years, beginning early in high school, DMB was my favorite band. Though I rarely listen to them anymore, I always enjoy it when I do. Of all of their studio albums, my favorite is “Before These Crowded Streets” (Spotify, iTunes, Amazon). It was to me, and many other DMB fans, their pinnacle.
Superlatives are in many ways a silly endeavor. A waste of time. Yet, they force reflection and introspection in a way that many other excercises do not.
Coming up with this list, and eventually selecting “Armistice Live”, was a ton of fun, before I even got in front of a microphone. Check out Inquisitive if you’d like to hear more, and hear how I landed on “Armistice Live” over these other stellar albums.
Last year, Erin and I interviewed for and received our membership in the United States Customs and Border Protection's Global Entry program. By being members of Global Entry, with that comes automatic enrollment in the Transportation Safety Administration's Pre-Check program. This year, we did the same for Declan.
In doing research about Global Entry, I didn’t come across any particularly great summaries of what it is nor the application process. Hopefully, this post will fill that gap.
TSA Pre-Check has the following perks:
- Dedicated and/or shorter security lines
- When going through TSA Pre-Check lines, you don’t have to remove
In addition to the above, Global Entry has the following perks:
- Segregated and shorter Customs lines
- Entry interrogation by way of automated ATM-like machines
TSA Pre-Check costs $85. For a mere $15 more, you can apply to be a member of Global Entry. To my eyes, I don’t understand why one wouldn’t forego TSA Pre-Check and just go straight to Global Entry. Furthermore, American Express cardholders can get the fee reimbursed. (In our case, we paid for it, since we are not American Express cardholders.)
Once you’re a member of Global Entry or Pre-Check, you get a “Known Traveler Number”, which you enter during the reservation process as you’re booking air travel. Upon checking into your flight, you will usually see a TSA Pre-Check icon on your boarding pass. This means you can go to the special speedy security line. If you don’t get the TSA Pre-Check icon, you have to go through the normal line.
In the case of Global Entry, upon returning to the United States from abroad, you walk up to the special kiosks, make their customs declaration, scan your passport and fingerprints, and get a receipt. That receipt is given to the CBP officers before exiting into the United States.
In order to apply for Global Entry, it’s a multi-step process:
- Fill out an application online, which includes such things as where you’ve lived and countries you’ve traveled to for the last 5 years, your work history, etc. At this point you pay your non-refundable $100 application fee.
- Wait for your application to be reviewed. The review took less than a week.
- If you pass the review process, you schedule an in-person interview. These interviews are typically at a large regional airport. For us, the nearest airport was Dulles, which is a little over 2 hours away. In our case, we had to schedule a few weeks in advance to get a time slot that worked for us.
- Go to an in-person interview.
- Wait for your interview results to come in. For us, we interviewed mid-afternoon and had our results a few hours later.
- Receive your Global Entry card in the mail.
Excepting the interview itself, the entire application process is managed through the government’s Global Online Enrollment System, or, GOES. This website is exactly as bad as you’d predict a government website to be. Nevertheless, it does the job… when the site isn’t down.
It’s also in GOES that you can go back and modify your information, such as updating your address, or your passport number. It’s important to remember that when you renew your passport, your new passport does not share the same passport number, and you need to notify the government of your new passport number. This is also true for your mailing address, driver’s license, etc.
As mentioned above, interviews tend to be at large regional airports. For us, that meant the two hour trip to Dulles. Depending on the time of year, interview times may be available nearly immediately, and sometimes they may not be available for months. Erin and I interviewed in July 2014, and the schedule was largely booked for about a month. Declan interviewed (more on that later) in August of 2015, and there were plenty of spots open almost immediately.
In Dulles, the enrollment center was in the main terminal, in a hallway at the very end of baggage claim. When Erin and I went to do our interviews, there was a very passive-aggressive sign on the closed door that said, in so many words, “take a seat and someone will come get you when it’s your turn; DO NOT KNOCK”.
I found it extremely unnerving to just go sit in some hallway (on provided chairs) and hope for the best, but that’s what we did. To their credit, a CBP officer came out at exactly our appointment time, and called our names. We then followed him into the enrollment center office, where we were told to watch a short video about how Global Entry works. When Declan interviewed, the door was open, sign gone. We entered the office immediately and waited in there, watching the same video.
For Erin and me, we interviewed individually but simultaneously. Though I don’t recall the questions that were asked, they were all very basic. Things like where I’ve traveled, where I’m planning to travel, and my residential and criminal history. They also verified the documentation provided, which was things like your current passport, driver’s license, and proof of residency. The CBP agent that interviewed Erin was considerably more punchy, and gave her a harder time, but nothing too egregious. During the interview they take your fingerprints, digitally, and take a picture of you.
For Declan, we were told during our interviews that he would also have to come interview. We found this a bit surprising, given he would quite literally have nothing to say, but we were assured it was the way things had to be. When we did come for his interview, only one parent was allowed back, though both had to be present.
During Declan’s interview, the CBP agent verified his passport and birth certificate, and took his picture. Declan’s fingerprints were not taken, since they will likely change so much so quickly. This means that, should we enter the country with him, the automated machine will reject him due to lack of fingerprints, and will be deferred to talk to an agent. I’ve read that when this happens, you will often be directed to the crew member line, and not the main line that everyone else is waiting in.
All three of us passed our interviews the first time, and were notified by way of GOES within a few hours.
It’s also worth noting that while Declan does need to enroll in Global Entry himself in order for us to go through the segregated Customs line, he can ride with us on TSA Pre until he’s 12. For example, from Virgin America’s site:
Plus, passengers 12 years of age and younger are allowed through TSA Pre✓™ lanes with eligible guests
If you have a child that is traveling with you only domestically, you may find that getting them Global Entry is not worth your time nor money.
Using TSA Pre
I’ve only flown a couple times with TSA Pre-Check, but it’s wonderful. Someone described it to me once as going back to the way things were before 9/11. I think that’s a pretty great description. The lines are almost always shorter, and you don’t feel like you’re belching half your clothes nor the contents of your carry on onto the X-ray scanner.
We also got TSA Pre when traveling domestically with Declan. We specified him as a lap infant and he was allowed to go through TSA Pre without question.
Using Global Entry
Though I haven’t had the opportunity to use Global Entry yet, my understanding is that it makes things quite a lot easier when entering the US. (Global Entry does nothing for you when leaving the US, though TSA Pre-Check does.) The advantages start on the plane, where you don’t have to fill out that paper customs form shortly before landing — that is taken care of at the Global Entry kiosk.
Once you land, you walk up to a Global Entry kiosk. There, you scan your passport, your fingerprints, and you have your picture taken. You make your declarations on that kiosk. It will print a slip of paper instructing you to either hand it to an officer on the way out, or to wait to talk to an officer before leaving.
Should you need to talk to either a customs or passport control officer, you will nearly always find a shorter line. That line will either be exclusive to Global Entry, or shared with the aircraft crews. If there is no segregated line, you’ll often get to jump the main line.
The friend who convinced me to get Global Entry in the first place has told stories of getting from the jetway to the outside air in Dulles in less than 10 minutes. Even as an American citizen, that’s unheard of without Global Entry.
Despite what’s hinted at above, Global Entry does actually permit some affordances when entering some other countries. This is either by way of a sort of reciprocity with Global Entry, such as Australia’s SmartGate. CBP will also inform you when you’re potentially eligible for an optional enrollment, such as the new UK’s Registered Traveller program.
To me, it’s worth giving up $100 and my fingerprints for far easier travel. Having had the taste of the good life, I plan to continue staying enrolled in Global Entry in perpetuity. Memberships only last for 5 years, so expect a follow-up post about the renewal process in 2019.