Alpha and Beta in the Land of Rat

Friday-Sunday: The Planning

The Friday before February vacation, Meghan and I meet up for lunch and she drops a bombshell: “what if we take the girls to Disney next week?”

Last minute scheduling aside, this presents some very large hurdles: cost, PTO requests and balances, and arranging transportation.  We kind of, sort of had the money but I had earmarked it for other things.  I don’t get a lot of time off in my new job, and I’m husbanding what I do get for something we’re planning towards the end of the year — and we’re normally expected to schedule PTO in advance.  Last minute plane tickets tend to be expensive, crappy flights.

gecko camoflaged by mulch
If look carefully, you’ll notice that there are geckos everywhere around Disney. This one is particularly well-suited to mulch. (click to expand)

Meghan wanted to do this, I was on the fence, so we compromised and decided to go.  Meghan is vivacious, I’m the responsible one.  A decent life lies somewhere in between, and I’ve learned over time to let go a little while still reigning her in enough that we don’t meet financial doom.  It did mean that I would be working on this vacation.  I’m fortunate to have a job that only needs a laptop and an internet connection, and an accommodating boss.

The most important decision we made was to keep it a secret from the kids.  We had to make all the arrangements, prepare for the trip, and talk about it all weekend without letting them catch on — no small feat.  Oh, and we had already planned to see some friends in Connecticut on Saturday.

We had to come up with a bunch of cover stories.  Beta needed new shorts, and we can’t buy them without her trying them on.  We had to get the dog to boarding before Monday without arousing suspicion, since we needed to be at the airport before 6 am.  We needed to get the kids showered and in bed a little early, even though Monday’s a vacation day.

The final cover story: why we’re getting up before 5 am, which we had to provide the night before so the kids wouldn’t worry when we woke them, but something that wouldn’t make them too excited to sleep.

Monday: Getting There

4:30 am: Mom and Dad rise and shine!
4:50 am: kids roll out of bed and stumble downstairs
5:00 am: in the car
5:20 am: arrive at the airport long-term parking garage
5:30 am: shuttle drops us off at the airport
5:31 am: Alpha asks “why are we at the airport?”
5:33 am: security line, and we can’t keep the secret anymore
6:20 am: take off!

Our flight to Orlando had a long layover and transfer in Detroit.  Both legs were packed solid.  There was a class trip going to Disney that got on the plane in Detroit.

During the layover I got some real work done, while Meghan and the girls got some lunch and amused themselves.

3:45 pm: land in Orlando
4:15 pm: arrange some ground transportation

Orlando airport is huge.  It has monorails to move passengers between terminals and the main building, but each terminal is pretty big in it’s own right.  They’re also building another terminal right now.

We discovered that our on-property hotel of choice, The Swan, is not owned and operated by Disney and does not come with the typical benefits like a free bus ride between the airport and the hotel.

We secured a taxi driven by a guy named Victor, who hails from NYC.  Our ride was very entertaining, as he got more comfortable his vernacular got very… colorful¹ but his stories and running commentary were among the best from a taxi that I’ve ever had.

4:45 pm: check into The Swan
5:00 pm: take a shuttle to Disney Springs to get dinner

Beta and living statue
The living statue would make you think she would stay still, and would then do something surprising (like put her hand on your shoulder or lift your bag out of your hands) then turn back into a statue.

Disney Springs, formerly known as Downtown Disney, is basically a mall with shops and restaurants dotted throughout.  There aren’t any rides, so it doesn’t require a park pass.  After looking around a bit and engaging in strong negotiations over who wanted what, we picked The Landing because it offered food that everyone would like while dining on a dock over the water.

To be honest, Disney Springs isn’t quite as much fun as it used to be.  The stores aren’t unique anymore — they’re the same as any mall.  The Landing was also a little disappointing, with fine-dining prices but takeout-quality food.  We refused to let it get us down, though, and watched a beautiful sunset from our table.

7:00 pm: head back to the room
7:30 pm: Beta goes swimming in the hotel pool
8:30 pm: bedtime for everyone

Tuesday: Animal Kingdom

Morning dawned clear, bright, and warm.  After a buffest breakfast at the hotel we went our separate ways: Meghan, Alpha, and Beta to Animal Kingdom and I back to our room to work for the day.

At lunch I went exploring to see what was around the hotel and found a beach, playground, and much larger pool complex with a water slide, two hot tubs, and a waterfall/grotto.

About the same time I was wrapping up work, everyone else came back to rest up a bit.  Beta wanted to swim a bit, Alpha did not, so Beta, Meghan, and I suited up and walked down to the pool.  Alpha stayed behind to charge her introvert batteries.

We played at the big pool for over an hour, until we started getting hungry.  We decided to go back to the Animal Kingdom to get dinner, try a few more rides, and watch the light show.

After a light dinner at one of the short-order restaurants we headed over to “the Himalayas” to try out a ride that Alpha wanted to see called Expedition Everest.  It’s a roller-coaster that is partially inside the “mountain” (so it’s pitch black, like Space Mountain) and rolls backwards for part of the ride.  Very intense, very fun, especially after dark.

The girls also convinced me to take two cruises on the Kali River Rapids.  I managed to stay merely damp after the first pass, but I was completely soaked after the second.

We went back to the hotel after that.  The light show was wrapping up and we wanted to beat the crowds back to the shuttles.  It was also pretty late, after 9 pm, when we finally got upstairs.

Wednesday: Epcot

This was a rainy day.  This was also a tricky day, activity-wise, because Meghan was only able to take half the day off and had to work during the afternoon.  We had breakfast at the hotel again, and I headed upstairs while the rest of the family went over to Epcot for a little while.

Everyone was back in the room at noon, as the drizzle started outside.  I knocked off work a little early (hooray for getting my crap done!) and took Beta over to the hotel’s game room while Alpha recharged her introvert batteries again.

About 2pm we decided that we wanted to go (back) to Epcot – me, Alpha, and Beta.  Meghan was still working but had arranged reservations at the Garden Grill at 4:45.  It’s Meghan’s favorite restaurant in Disney.

The rain remained light and drizzley while the girls and I toured the World Showcase in Epcot.  We stopped in a few of the “countries” along the way, from France (where the ferry dropped us off) and counter-clockwise around through China, which is almost exactly opposite.

While we poked around a shop in China the rain picked up, then picked up some more, so we stayed inside and waited for it to slow up — the clock was ticking and we had a date with Meghan in an hour.  I refused to pay $9 per poncho.

A little after 4 pm the rain appeared to lighten up so we made a break for it.  We got out of China and were in front of Norway, the next country over, when the skies opened up into a torrential downpour.  We were soaked to the bone in seconds, before we could even dart under an overhang.  So much for being dry at dinner.

We squished our way up to The Land in time for our reservation inside, a couple of minutes late but sooner than Meghan.  The rain not only stopped after soaking us, but the sun popped out before we arrived at the restaurant.

After dinner we took the slow ride that goes around the restaurant, and headed out to enjoy the rest of Epcot.  We went over to the ride in Mission: Space (not to be confused with Spaceship Earth, a.k.a. the golf ball) which is a pretty cool G-force type ride.

The rain continued to come and go so we wound up buying a couple of ponchos and an umbrella for the walk home.  This was a fortunate decision on Meghan’s part because the rain came back in earnest while we walked back to the ferry.

Thursday: Boardwalk, DVC, and Heading Home

Our last day, but a late flight (9 pm) so we had time to have some more fun.  I arranged with my boss to put off work until late in the day, since there were no meetings scheduled.  Meghan had to work in the morning and doesn’t have flexible scheduling.

kids at the beach
Alpha and Beta on the beach. Across the water is the Boardwalk.

We were a little disappointed with the Swan overall² so we decamped for the Boardwalk, just next door (and a Disney resort) with shops and things to do.  I took the girls out to play and walk around while Meghan sat in the lobby with our bags.  We discovered that Epcot is just a short walk away.

After making a circuit around the “harbor” it was lunch time.  Alpha wanted to read but Beta and I were still a bit restless.  We headed down the walking path towards Hollywood Studios.  Not to go into the park, just to see where the path goes and look for alligators.  (We didn’t see any.)

Even after all that we had a few hours before we needed to get to the airport so I wandered into the DVC office to gather some information.  Meghan and I have talked about buying back into the vacation club for about a year, as changing fortunes have allowed us to travel and vacation more frequently and the DVC can actually be viewed as a money-saving way to travel.  As the agent brought our information back up we discovered that Meghan had been making inquiries while she was at Epcot the day before.  There was an open house at another resort where we could get all of the information, so game on: I judged that we were both ready to plunge back in, and got us a ride to the open house.

beta posing on swing
Beta posing for the camera as she swings

This was late in the day, getting close to the time we should really start heading to the airport, so we had to hew to a tight schedule with the sales guys.  We arranged it perfectly, though, and got back to our starting point in time to meet Victor (remember Victor the taxi driver? we liked him so much we called him back for our pick-up³) at our pre-arranged pick-up time.

Our flight out was pretty uneventful.  We took off on-time at 8:45 pm and landed at 11:30 pm, a bit of turbulence in between.  The kids stayed awake, I worked for a bit, Meghan napped (a first for her on a plane!).  We rolled back into our driveway at half-past midnight.

All in all, a success!

Footnotes

1: We don’t worry much about letting our kids hear profanity.  We have taught them some simple lessons: profanity is what you say when you don’t have the vocabulary to express yourself; profanity doesn’t make you cool, and certain people will judge you poorly when you use it; profanity is just words.  Moreover, making a big deal about “bad words” just increases the taboo-ness of them, which makes them more desirable. Return

2: Our time at the Swan ranged from merely average to disappointing.  The room was of average quality, but we’ve stayed in downtown Manhattan for the less per night with more included as part of the nightly fee.  Some of the disappointment was due to poor expectations: we thought that it was a Disney resort with same benefits like ground transportation from the airport included; some disappointment was because they nickel-and-dimed us to death (e.g. a $25-per-night “resort fee” to cover the complimentary internet access and pool, which we only got partially refunded). Return

3: Victor’s cell phone is 321-945-1003, call a few hours ahead to arrange a ride with him (dispatch will only send the next available).  His voicemail box was full but he responded promptly to our texts.  He seemed to genuinely appreciate having a guaranteed fare.  There are cheaper methods to get in and out of the airport if you’re by yourself, but none quite so hilarious. Return

Neil Gaiman in NYC

Meghan gave me an awesome Christmas present: tickets to see Neil Gaiman read from his latest book, Norse Mythology at The Town Hall on February 9, 2017 in New York City.  She only purchased two tickets and it’s a Thursday night.  Too bad kids — you’re staying home!  (We arranged for our neighbor’s adult daughter Sam to stay with the girls for the night).

looking up the aisle on the trainAs the day approached I watched the weather forecasts with growing interest.  Snow was forecast for Thursday, the day of the event and the day we planned to travel to NYC.  By Tuesday the forecast was clear: snow, and possibly a blizzard.  Driving to NYC was out of the question, and flying would be problematic as well.  We have easy access to trains, though, assuming they would run in a blizzard.

The storm could not wait to arrive and it was snowing hard by the time we left the house for our local train stop.  In order to head south on Amtrak, we take commuter rail from our house to Boston’s North Station, the subway (or walk when the weather is nice, which is to say not this time) from North Station to South Station, and pick up Amtrak there.  The Amtrak train was scheduled to depart at 11:15, so we left the house by 9 am to catch everything on time.  As usual, we forgot a few minor things like toothbrushes, and had to purchase them when we got there.

pink unicorns
We watched people skating at the park for a while, until the pink unicorns came out — then it was time to leave.

Amazingly enough, train service ran perfectly despite being a real, legitimate, certified blizzard.  We had periods where we could not see the landscape at all, but the train continued to rock along at 100+ mph (verified via Waze on Meghan’s phone).  The ride from South Station to Penn Station is about 4 ½ hours.

By the time we got to NYC the snow had wound down, though it continued to snow back home for another six hours.  The streets were messy and wet, with snow piled up at every corner.  The hotel is only a few blocks from Penn Station, a few blocks from Times Square, and a few blocks from The Town Hall — NYC is great that way.

meghan at beer authority
I still wonder what she’s thinking here

We ate dinner around the corner from our hotel at the Beer Authority. The food was yummy, the beer selection is well-curated, and we had a very enjoyable time.  (I thoroughly enjoyed a Founders Porter and Meghan tried a Timmerman’s Strawberry Lambic that was surprisingly tasty.)

top of the empire state building at night
We popped out of the hotel, went around the corner, and had a (relatively) great view of the Empire State Building

We killed a little more time before the show by wandering the local neighborhood.  Times Square is always blindingly bright, but within a few blocks are much nicer views.

Finally, the main event: Neil Gaiman.  “Norse Mythology” was finished some time before the 2016 election, and every story in it is a faithful retelling of stories from the original eddas, but the story he chose to read was eerily appropriate: a book about the gods building a wall around Asgard to keep the ice giants out.   The reading was followed by a pair of previews, one for the American Gods miniseries (based on his excellent book), and one for a movie adaptation of an old story of his, How to Talk to Girls at Parties.  Finally, he came back out with Ophira Eisenberg for a Q&A session.  Mr. Gaiman is, by turns, very thoughtful and very funny.  Despite the cramped seats made for midgets with abnormally short legs we really enjoyed ourselves.

Neil Gaiman on stage
Neil Gaiman. He read a segment from his latest book, Norse Mythology, about building a wall around Asgard

The next morning we ate breakfast at the hotel and killed some more time waiting for our 11 am train.  We visited the Empire State Building’s lobby and checked out a few adjoining blocks.  Our train was delayed for nearly an hour due to “missing equipment”, but we got back to Boston by dark and back to our car by 6 pm.  (Rush hour on the subway is never fun, but all in all it wasn’t too bad.)  Glad to be home!

Loon Mountain

One of the perks that Meghan gets through her job are invites to swanky resorts.  Last week was Wentworth-by-the-Sea, this week was a client inviting her to the Loon Mountain Ski Resort for a day of snow sports.

meghan's snow-encrusted hat
The sleds kick up lots of snow, much of which winds up on the back of your head

Meghan and I don’t ski, but they have more than skiing; our activity of choice was sledding.  This isn’t any ordinary sledding, though: they seem to have repurposed an old ski lift and trail.  The sleds are snow-tubes with rails and brakes.  You take a lift up to the top, ride down for as long as 30 seconds, and head back up.  There were few other sledders so we had zero waiting.

After a group lunch with the client and their other guests, the two of us decided to sight-see.  We climbed in the car and drove up into the mountains along the Kancamagus Highway.  Despite the clouds the views were beautiful.

kancamgus pass overlook
Looking out from a scenic overlook just below the Kancamagus Pass (3k’ elevation)
looking back at Meghan
The sun was starting to peek out to the east, but west was still solidly clouded over. There had been snow earlier in the day, but only in these higher elevations.
disappearing mountain tops
The low clouds meant we couldn’t see the mountain tops, as they faded into the clouds

Wentworth-by-the-Sea 2017

Meghan’s employer invites all employees and their families to an annual three-day retreat at a fancy spa and hotel called Wentworth-by-the-Sea.  This is our second year.

Last year we mostly stayed n the hotel due to a snow storm, but this year we ventured out a bit to take in some local color.  We found a state park called Fort Constitution (also known as Fort William and Mary), which is situated inside the grounds of a Coast Guard station.

Fort Constitution
Fort Constitution, as seen from the water (or closest I could get it from the little tip of rock that extends out)

I don’t normally pay much attention to geology but the bit of rock that juts out into the water is very eye-catching.

striations in sedimentary rock
I was drawn to the striations in the rock. This is a great example of sedimentary rock with lots of iron in it.
striations in sedimentary rock
A different section, with a shoe for scale. The layer inclusion on the right (might no be the technical term) is what caught my eye

We also drove around a bit; the town is reminiscent of Mystic, CT.

NYE 2016

Date: Evening of December 31, 2016
Location: Boston, MA
Event: New Year’s Eve

baba and alpha
Baba and Alpha, watching the carousel

We rang in the New Year in traditional style: a night out in Boston.  This year we had the very good fortune to be joined by Baba (Meghan’s mother, the girls’ grandmother).

Most years we take a train into the city to avoid issues with ‘amateur night’ drivers, but not this year. Being a Saturday, the commuter rail only runs a limited schedule; there are extra trains but not until later in the evening.

We reserved parking right next to the Commons (Parking Panda to the rescue!) but planned to start the night at Quincy Market.  I dropped the rest of the family off there and ran downtown to park the car.  I made the short walk back to meet with everyone again in about fifteen minutes.

The Black RoseWe shopped a bit before getting an excellent early dinner at The Black Rose.  We’ve been there several times; despite it’s location right next to Quincy Market it doesn’t have the air of a tourist trap.  It does have excellent Guinness on tap, though!

Let me back up a few days before I present the next photo: both girls have had braces on their teeth for a long while, until this past week.  Beta will be getting a second round when she gets a little older, but for now they both have brilliant smiles.

Alpha Mom and Beta
Alpha, Mom, and Beta, dinner at the Black Rose in Boston

Dinner was followed by a little more window-shopping, a brief stop for Blink, the Greenway Carousel, and dessert in the market.

We walked from Quincy Market to Boston Common, about a mile.  We stopped for hot chocolate and hot apple cider across the street at The Thinking Cup Cafe.  Both were very good.

Finally, at 7 pm: fireworks.

fireworks
NYE 2016 Fireworks – my phone’s camera cannot do them justice, but they were right over our heads

After the fireworks, our decision to park across the street paid off.  We picked up the car and made it out of the city before the rest of the traffic.

Baba slept over our house to avoid amateur night traffic, rain – the threat of rain made good shortly after we got home – and for a promise of waffles in the morning.  Meghan and her mom stayed up to watch a show, Hinterland, but everyone was asleep well before midnight.

Apartment Dweller Woes

This memory was dredged up by https://www.aboveaverage.com/watch/above-average-presents/everyones-upstairs-neighbors/

One day I was sitting in my 2nd-floor apartment in a multi-family home. I was the meat of the apartment sandwich: a family below me, and a family above me. The house was owned by our very good friend Val Scott Barker.

One Saturday afternoon I was quietly reading at home when a tremendous crash echoed from upstairs. I, like so many apartment dwellers before me, stood under the source of the sound for a long moment and wondered just what exactly happened up there.

My wonder only increased when several minutes later the ceiling fan in the middle of the room started dripping a whitish fluid. Inspection was inconclusive because it was tinged reddish-brown. Had they killed someone with a can of white paint up there? The lamp had a steady stream for a short while, and dripped for almost an hour; I caught it in a small cup. Upon further inspection it appeared to be milk that had picked up dirt from between the floors.

Several days later the mystery was put to bed when I talked to one of the occupants. Their toddler wanted something on a high shelf in the fridge, and had pulled an entire shelf out — one that included a full gallon of milk. Most of the milk disappeared into the hardwood floor before she could clean it up.

We moved out a couple of years later, into a house of our own. Bill and Laura had created a second small adorable child, but they never topped the milk pouring out of the ceiling while I was there.

Pleiades

Living in our new home town occasionally yields surprises, some good and some not. Tonight’s surprise is definitely the former.

We’re located no more than 15 miles from Boston (as the crow flies) and we’ve come to expect a certain level of light pollution from the city and surrounding suburbs, including our own commercial strip here in town.

So color me shocked when Meghan strides in at 10 pm tonight, returning from a friend’s house, and announces that she can see the Pleiades.

We head back outside to look and, as we stand where the driveway meets the street we count six of the seven sisters. If I recall correctly that was considered good in ancient times; seeing all seven was reserved for the eagle-eyed among us. Pretty good for front-yard star gazing.

NiFi HTTP Service

I’m attempting to set up an HTTP server in NiFi to accept uploads and process them on-demand.  This gets tricky because I want to submit the files using an existing web application that will not be served from NiFi, which leads to trouble with XSS (Cross-Site Scripting) and setting up CORS (Cross Origin Resource Sharing [1]).

The trouble starts with just trying to PUT or POST a simple file.  The error in Firefox reads:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource (Reason: CORS header 'Access-Control-Allow-Origin' missing).

You can serve up the Javascript that actually performs the upload from NiFi and side-step XSS, but you may still run into trouble with CORS.  You’ll have trouble even if NiFi and your other web server live on the same host (using different ports, of course), as they’re considered different hosts for the purposes of XSS prevention.

handlehttpresponse screen shot
HandleHttpResponse processor config

To make this work, you’ll need to enable specific headers in the HandleHttpResponse processor.  Neither the need to set some headers, nor the headers that need to be set, are documented by NiFi at this time (so far as I can tell).

  1. Open the configuration of the HandleHttpResponse processor
  2. Add the following headers and values as properties and values, but see below for notes regarding the values
    Access-Control-Allow-Origin: *
    
    Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS
    
    Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Connection, Content-Length, Content-Type, DNT, Host, Referer, User-Agent, Origin, X-Forwarded-For

You may want to review the value for Access-Control-Allow-Origin, as the wildcard may allow access to unexpected hosts.  If your server is public-facing (why would you do that with NiFi?) then you certainly don’t want a wildcard here.  The wildcard makes configuration much simpler if NiFi is strictly interior-facing, though.

The specific values to set for Access-Control-Allow-Methods depend on what you’re doing.  You’ll probably need OPTIONS for most cases.  I’m serving up static files so I need GET, and I’m receiving uploads that may or may not be chunked, so I need POST and PUT.

The actual headers needed for Access-Control-Allow-Headers is a bit variable.  A wildcard is not an acceptable value here, so you’ll have to list every header you need separately — and there are a bunch of possible headers.  See [3] for an explanation and a fairly comprehensive list of possible headers.  Our list contains a small subset that covers our basic test cases; your mileage may vary.

You may also want to set up a RouteOnAttribute processor to ignore OPTIONS requests (${http.method:equals('OPTIONS')}), otherwise you might see a bunch of zero-byte files in your flow.

References:

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

[2] http://stackoverflow.com/questions/24371734/firefox-cors-request-giving-cross-origin-request-blocked-despite-headers

[3] http://stackoverflow.com/questions/13146892/cors-access-control-allow-headers-wildcard-being-ignored