Tomorrowland #dystopia vs #futureoptimism #fatalism vs #possibility #knockdown vs #build #alone vs #curate #community and the need for #genius #engineers #creativity #inventions
A couple of quotes:
“Anyone who will feed the right wolf.”
“Find the ones who haven’t given up. They’re the future.”
updated tantek.com/relmeauth@CSSWG meeting to demo :-moz-ui-invalid, :-moz-ui-valid, and :user-changed polyfilled to work while modifying the input (typing, paste, etc.) before clicking outside.
Note that :-moz-ui-invalid already only triggers *after* the user leaves the input, thus acting as a warning to the user that they need to go back and fix something, instead of interrupting them while they're typing.
However for the valid case, as soon as the user has entered something valid, you want to give them positive feedback thus letting them know they can take the next step (leave the input, submit the form, etc.).
Despite the proposals in the Yahoo article, I still think a “dumb” capture/view mode would still be better on a vacation, where all you could do with your device was capture photos/text/GPS and subsequently view/edit what you captured. Even limited notifications distract and detract from a vacation.
However, the idea of “social media updates only from people you’re close to, either geographically or emotionally” would be useful when not on vacation. I'd use that as an Evening Mode most nights.
Original content rather than “shares”
In addition, the ability to filter and only see “original content — no shared news stories on Facebook, no retweets on Twitter” would be great as reading prioritization — I only have a minute, show me only original content, or show me original content from the past 24h before any (re)shares/bookmarks etc.
This strong preference to prioritize viewing original content is I think what has moved me to read my Instagram feed, and in contrast nearly ignore my Twitter feed / home page, as well as actively avoid Facebook’s News Feed.
Ideally I’d use an IndieWeb reader, but they too have yet to find a way to distinguish original content posts in contrast to bookmarks or brief quotes / commentary / shares of “news” articles.
Tame your inbox? No, vacation should mean no inbox
The Yahoo article suggests: “tame your inbox in the same fashion, showing messages from your important contacts as they arrive but hiding everything else” and completely misses the point of disconnecting from all inbox stress while on vacation.
SMS smart phone texting frustrations vs stress-free iPod
While I was on the Alaska cruise, other members of my family did txt/SMS each other a bit, but due to the unreliability of the shipboard cell tower, it was more frustrating to them than not.
With my iPod, I completely opted out of all such electronic text comms, and thus never stressed about checking my device to coordinate.
IRL coordination FTW
Instead I coordinated as I remember doing as a kid (and even teenager) — we made plans when we were together, about the next time and place we would meetup, and our general plans for the day. Then we’d adjust our plans by having *in-person* conversations whenever we next saw each other.
Or if we needed to find each other, we would wander around the ship, to our staterooms, the pool decks, the buffet, the gym, knowing that it was a small enough world that we’d likely run into each other, which we did several times.
During the entire trip there was only one time that I lost touch with everyone and actually got frustrated. But even that just took a bit longer of a ship search. Of course even for that situation there are solutions.
Walkie Talkies!
My nephews and niece used walkie-talkies that their father brought on board, and that actually worked in many ways better than anyone’s fancy smart phones.
Except walkie-talkies can be a bit intrusive.
Walkie Texting?
My question is:
If walkie-talkies can send high quality audio back and forth in broadcast mode, why can’t they broadcast short text messages to everyone else on that same “channel” as well?
Anybody have one or a similar two-way radio that also supports texting?
Or would it be possible to do peer-to-peer audio/texting purely in software on smart “phones” peer-to-peer over bluetooth or wifi without having to go through a central router/tower?
That would seem ideal for a weekend road trip, say to Tahoe, or to the desert, or perhaps even for camping, again, maybe in the desert, like when you choose to escape from the rest of civilization for a week or more.
6 cities, two each across three countries: Brighton, Edinburgh, Götenborg, Portland, San Francisco, and especially a warm welcome to Malmö which is hosting its first Homebrew Website Club meetup this week!
When did you last eat without using digital devices at all*?
Me: last night picnic, Dolores Park. *Except showing each other photos/videos related to our topics of conversation, read-only, no taking photos either.
Makes me think mobile “smart phones” and other similar devices should have a mode similar to “airplane mode”, let’s call it “dumb camera mode”, where all they can do is review your album of existing photos/videos, and maybe take photos/videos. No notifications, no switching apps.
Maybe allow taking text notes too (not txts nor emails!), on a photo or by themselves, to capture things mentioned in conversation (auto-location-tagged and datetime-stamped like EXIF of course — when did I take this note, and where was I).
There was something quite nice about the post-digital-camera pre-camera-phone era. It was much easier to have a focused and continuously present experience, for hours at a time.
Most of my time on the Alaska cruise^ was like that.
♫ vimeo.com/68510983 Depend on snowflake APIs? Born slippy indeed. This Is My Jam going readonly, citing particularly: “changes to those services have meant … 100% of our time’s been spent updating years-old code libraries and hacking around deprecations just to keep the lights on”
#NPSF #trackish workout 4x (2x200 600) I did 2x200 br-break 2x200 300, 2x200 600, 2x600
Overslept until I finally awoke with my last alarm at 5:45, got ready and had to drive just to make it to Golden Gate Park’s Music Concourse (Kezar closed today for restriping) 5 min late. Looked like the crowd was just getting ready for the first sprints — they must have warmed up already. Still feeling sore from last week but did most of the workout. Just gotta keep showing up.
bim definition noun; plural: bims 1. each of six newcal periods into which a year is divided. 2. 61 days, except for the last 60 days of a non-leap-year.
Etymology: short for bi-month or bimonth, from bi- ("two") + month.
ISO date 2015-08-04. Having left the curtains open the night before, I awoke on my own at 5:04 despite having gone to bed after midnight. The four page folded newsletter for the day said sunrise would be at 4:52 (no need to guess apparently), yet when I looked outside, the sun was just starting shine on the tops of nearby mountain peaks.
My roommate stirred, I asked him if he wanted to see the sunrise, he said no. Should I close the curtains? No. I let him keep sleeping. I got dressed and went up to see what was blocking the sun.
We had docked right next to a giant mountain, just the pier, a broad boardwalk with minimal vehicle access, and train tracks between us and the mountain’s sheer vertical face.
A forklift on the boardwalk carefully lifted and lowered gangplanks into place. I went outside and up to the Star Deck (19) to take more photos.
Another cruise ship was docking behind us, it had a giant helipad on its bow. Sunlight continued to descend down the sides of the mountains in front and to our port side.
An older gentleman powerwalked with walking poles on the official jogging track, a small loop on this highest deck. I descended back down to the Sun Deck, and took photos of Skagway from the bow, still lit only by dawn’s refracted light above.
The buffet finally opened at 6am and I was too hungry to wait for anyone else. Smoked salmon, a small premade veggie omelette, scrambled eggs with mushrooms & swiss cheese with salsa on top, diced roasted potatoes with ketchup on top.
An hour later I had caught up with my personal journal, and finished writing most of day 2’s log. Just as I got up to return to our rooms, I saw my mother approaching and saved my table for her. A few more of our crowd drifted in, sat down with their full buffet plates, and we tossed around ideas for our day onshore in Skagway.
With hours remaining before disembarkation, I returned to my room to nap a bit, and read some more MATM. Mom came by our balcony and we quickly summarized Skagway plans. I succumbed to connecting, tethered via her iPhone6. I found out later that media (like video) sent over a tethered connection is heavily down-sampled, until the grainy result is barely identifiable. I took another video of helicopters taking off and returning to the cruise ship across the way, an upsell tour option no doubt.
Got to about 1/3 of the way through MATM and finally cleaned up to get ready for shore. The kids had finally woken up, a good time to grab second breakfast and blog a bit more while they grabbed their first.
The entire process took long enough that I was hungry again, with only a few minutes to wait until the first cheese slices of the day were ready. My dad waited with me while I grabbed a couple of slices and we found a couple of lounge chairs, now finally illuminated by the mid-day sun. We eventually returned to the rooms to collect everyone to disembark together.
Skagway Summary
Skagway appears to be the northernmost stop for these massive Alaska cruises (it was certainly ours). By the time we walked into downtown Skagway, it was quite warm, and the tiny town looked like it was being overwhelmed with awkward tourists. The town itself had only one major street (“Broadway”) and certainly seemed to be deliberately presenting itself for tourist shopping.
While everyone else shopped, my younger sister and I found a semi-independent local coffee shop (they “served Starbucks coffee”) and picked up cold drinks. It was far warmer than usual in Skagway according to the locals. There was fairly universal acknowledgment of global warming being a real thing, despite the perhaps dominant conservative attitudes.
Being from a city that has its own far too touristy parts, I’m not a fan of such areas in other towns, especially when the town appears to have reorganized itself around as much. I photographed a few moments of cute small town design. After sampling some fudge from the “Alaskan Fudge Company”, I bought a 3-pack for my mom, and started walking back toward the ship with my dad. Everyone had their own idea of what they wanted to explore on the little touristy strip. I was done.
We made it back to the ship less than three hours after we had stepped foot in Skagway. It felt like it had been longer.
A Return to Cruise Comforts
The poolside grill had a halibut steak special, so of course I ordered one instead of the usual buffet fare. It was the perfect substantive snack before afternoon tea.
There was just enough time after tea yet before dinner to read some more MATM in the cool air-conditioned quiet of my stateroom. We dressed for dinner, and took the steps down to the “Da Vinci” restaurant for seated service. I sat between nephew2 and my dad.
I had noticed that the impulse to check my readers/notifications had returned even though I was offgrid. I think it took 12-24 hours of being off the grid the first time before I stopped checking my mobile for activity. Yesterday’s connectivity in Juneau seemed to refresh bad habits.
Dinnertime Dates and Seagulls
I asked nephew2 what was today’s ISO date. He got it after a couple of tries. When I asked him for the ISO ordinal date, it was trivial for him once he’d gotten the Gregorian ISO date right: 2015-216.
The kid’s placemat had an origami exercise, and a suggestion to start with a 5" on a side square sheet of paper, along with a printed ruler. Noting that all we needed was a square piece of paper, I taught nephew2 how to make a square piece from any rectangular piece by folding the corners over to make a square, then folding that crease back & forth repeatedly to weaken the paper to the point where it would tear cleanly in a straight line.
I pointed out that we had done so purely with the power of knowledge and our bare hands, without any tools. This seemed to please nephew2.
We proceeded to fold up origami seagulls one by one — a shape I hadn’t folded before, so I talked it through out loud with him, as I was figuring out each step myself, and he kept up. There were a few folds where he needed some help, however he’d apparently done some origami before, so he picked up the rest very quickly.
Triumphantly placing our seagulls on the table we talked about what to try next. Both of us have short attention spans so we tend to get along quite well, not being content to just sit and wait for whatever is supposed to happen next at a grown-up’s dinner table. We decided more math instead.
Squares, Cubes, and a Connection
He easily reviewed 1 through 10 squared. I pointed out that cubes were merely those same squares, multipled by their square factor again, and we started from 1.
1 was obvious. 2 he guessed without thinking so I made him talk it through. 3 he had to think through. We got to 4 cubed and the appetizers finally arrived. Caesar salad for me, a shrimp cocktail for him.
I walked him through 4 cubed with hints, and how the result was also a square! We broke it down to how many 2s it took. And how many 2s it took to multiple into an 8. Eventually he put it all together and got the right result: 64.
5 cubed was easy for him. 6 cubed took a bit more work, but once he got it he was super happy: 216.
I asked him if he remembered what the ISO ordinal date was that he had just figured out. He paused a moment, recalled, repeated 2015-216 from memory, his eyes lit up and he roared with laughter. He had just connected why I had chosen to drill him on cubes. (It being the 216th day of the year, 216 also being 6 cubed).
My dad the retired mathematician (math professor even), decided to keep quizzing him on cubes, and asked him about 7. Nephew2 figured it out as 7 time 50 minus 7. He knew 7 squared was 49, and that he could more easily figure out 7*50 = 350, and then subtract 7 = 343. Neither of us had taught him that explicitly. Interestingly, his older brother figured it out the more traditional way, 7*40 = 280 + (7*9 = 63) = 343. He went on to state 8 cubed and 9 cubed. They nephews challenged each other to 10 cubed which they both remarked was easy: 1000.
We finished dinner (I had a baked Alaskan salmon special, coffee, bites of others' desserts), and returned to our rooms.
Bittersweet But Real — My Vanilla Sky
I gathered my reading & writing things and went back outside to the Lido deck, grabbed a reclining chair by the pool under the big screen, caught up on my personal journal, and finished writing up day 2’s log.
The outdoors movie happened to be “The Longest Ride”, seemingly a classic Hollywood romance cliché, with an unrealistic and deceptive narrative as usual.
Removing myself from such reinforcements, I noticed the sky had turned into a swirling blend of blue, purple, pink, orange, and yellow (featured photo at top). We were on our way and the natural beauty around us snapped me back to reality.
I took it in and a few photos too, then returned to my room and got in bed. I read more MATM under the glow of my iPod’s backlight until I was halfway through the book.
I’ll take bittersweet but real triumphs & failures any day over deceptive cheery narratives that set unhealthy expectations.
My iPod lockscreen clock read 0:04. I put everything down and seconds later fell asleep.
Ryan King, Matt Mullenweg, Chris Messina, and Andy Smith at Ritual Coffee Roasters on Valencia Street, San Francisco, 2005-08-13.*
Several virtual co-planners and infrastructure crew came on board within days and were essential to making the first BarCamp happen: barcamp.org/BarPlanners.
You should all be very proud of what all of you collectively created 10 years ago in the six days of planning and 2-ish days of BarCamp itself.
10 years and 1000s of BarCamps later, the barcamp.org site (a wiki) is still being used to organize them worldwide and direct people to separate independent BarCamp sites as well (like barcampnashville.org — going strong since 2007) independently of any of the founders or original planners. Organic growth beyond anyone’s expectations or wildest dreams.
I remember at the closing session remarking how maybe we’d do a second BarCamp the next year. It was not to be, because others couldn’t wait to organize the second, and third etc. BarCamps on their own.
Only a few of the individuals who participated in the first BarCamp helped with the immediately subsequent camps, both facilitating and spreading the cultural seeds of BarCamp. Hat-tips to Chris Messina (@factoryjoe at the time) & Andy Smith (@termie), and Amit Gupta (@superamit) in particular for Amsterdam and New York City, the second and third BarCamps respectively.
They were able to because we had documented everything about BarCamp on an open wiki on the web (no login needed to view, searchable, and search-engine friendly).
We had opensourced the very processes (the human “software”) of running a BarCamp, which meant that anyone could create and run one, experiment with variants, and contribute improvements. We had shipped an opensource implementation of the Freedom of Assembly and didn’t even realize it at the time.
*Note: Ritual renovated in the past couple of years and looks nothing like the above photo any more, but you can still find tons of photos of the classic Ritual Coffee Roasters on Flickr: flickr.com/photos/tags/ritualroasters/interesting/
#NPSF #trackattack 2d ago workout 1600 1200 800 400 200 abs I did 1600 br-break 800 400 200 100 abs
First session at the track post-cruise, also first time after running to the Monday @Nov_Project_SF Fort Mason / Aquatic Park workout the day before. Felt much slower to start, found my track legs eventually, and then surprised myself on the 200 and especially the 100.
Rather than stake any claim to being the Alphabet, I decided it would be more useful to document an alphabet of the IndieWeb, choosing a primary IndieWeb building block for each letter A-Z, with perhaps a few secondary and additional useful terms.
article posts are what built the blogosphere and a classic indieweb post type. audio posts like podcasts are another post type. Most sites have an archive UI. The authorship algorithm is used by consuming sites and readers.
backfeed is how you reverse syndicate responses on your posts's silo copies back to originals, perhaps using Bridgy, the awesome backfeed as a service proxy. Many indieweb sites publish bookmark posts.
design in the IndieWeb is more important than the plumbing of protocols & formats. The delete protocol uses webmentions and HTTP 410 Gone for decentralized deletions. Consider the disclosure UI pattern.
event, exercise, and edit, are all very useful types of IndieWeb posts for decentralized calendaring, personal quantified self (QS) tracking, and peer-to-peer collaboration.
food posts are also useful for QS. Follow posts can notify an IndieWeb site of a new reader. Use fragmentions to link to particular text in a post or page. Both the facepile UI pattern and file-storage are popular on the IndieWeb.
generations are a model of different successive populations of indieweb users, each helping the next with ever more user-friendly IndieWeb tools & services to broaden adoption, activism, and advocacy.
homepage — everyone should have one on their personal domain, that serves valid HTML, preferably using HTTPS. Come to a Homebrew Website Club meetup (every other Wednesday) and get help setting up your own!
jam posts are for posting a specific song that you’re currently into, jamming to, listening to repeatedly, etc. The term “jam” was inspired by thisismyjam.com, a site for posting jams, and listening to jams of those you follow.
Known is perhaps the most popular IndieWeb-supporting-by-default content posting/management system (CMS) available both as open source to self-host, and as the Withknown.com hosted service.
like posts can be used to “like” anything on the web, not just posts in silos. Longevity is a key IndieWeb motivator and principle, since silos shutdown for many reasons, breaking permalinks and often deleting your content.
microformats are a simple standard for representing posts, authors, responses etc. to federate content across sites. Micropub is a standard API for posting to the IndieWeb. Marginalia are peer-to-peer responses to parts of posts.
note posts are the simplest and most fundamental IndieWeb post type, you should implement them on your site and own your tweets. Notifications are a stream of mentions of and responses to you and your posts.
ownyourdata is a key indieweb incentive, motivation, rallying cry, and hashtag. The excellent OwnYourGram service can automatically PESOS your Instagram photos to photo posts on your own site via micropub.
quotation posts are excerpts of the contents of other posts. The open source Quill posting client guides you through adding micropub support to your site, step-by-step.
reply is perhaps the second most common type of indieweb post, often with the reply-context UI pattern. Use a repost to share the entirety of another post. An integrated reader feature on your site can replace your silo stream reading.
stream posts on your homepage, like notes, photos, and articles, perhaps even your scrobble & sleep posts. Selfdogfood your ideas, design, UX, code before asking others to do so. Support salmentions to help pass SWAT0.
text-first design is a great way to start working on any post type. Use tags to categorize posts, and a tag-reply to tag others’ posts. Use travel posts to record your travel. The timeline page records the evolution of key IndieWeb ideas.
UX is short for user experience, a primary focus of the IndieWeb, and part of our principle of user-centric design before protocols & formats. Good UI (short for user interface) patterns and URL design are part of UX.
video posts are often a challenge to support due to different devices & browsers requiring different video formats. The Vouch extension to Webmention can be used to reduce or even prevent spam.
Webmentions notify sites of responses from other sites. Webactions allow users to respond to posts using their own site. If you use WordPress, install IndieWeb plugins. Woodwind is a nice reader. We encourage wikifying.
XFN is the (increasingly ironically named) XHTML Friends Network, a spec in wide use for identity and authentication with rel=me, and less frequently for other values like contact, acquaintance, friend, etc.
YAGNI is short for "You Aren't Gonna Need It" and one of the best ways the IndieWeb community has found to both simplify, and/or debunk & fight off more complex proposals (often from academics or enterprise architects).
Z time (or Zulu time) is at a zero offset from UTC. Using and storing times in “Z” is a common technique used by indieweb servers and projects to minimize and avoid problems with timezones.
I realized I was getting pretty close to a whole alphabet of building blocks. In particular the list of Community Resources has 16 of 26 letters all by itself!
Rather than try to figure out how to expand any of those into the whole alphabet, I decided to keep them focused on key things in 2014, and promptly forgot any thoughts of an alphabet.
Monday, since the topic of conversation in nearly every channel was Google renaming itself to “Alphabet”, I figured why not make an actually useful “alphabet” instead, and braindumped the best IndieWeb term or terms that came to mind for each letter A-Z on the IndieWebCamp wiki.
Subsequently I decided the list would look better if the first letters of each of the words served stylistically as list item indicators, wrote a custom post stylesheet to do so, and rewrote the content accordingly. The colors are from my CSS3 trick for a pride rainbow background, with yellow changed to #ffba03 for readability.
Incidentally, this is the first time I've combined the :nth-child(an+b) and ::first-letter selectors to achieve a particular effect: nth-child with a=6 b=1…6 for the colors, and first-letter for the drop-cap, highlighted in that color. View source to see the scoped style element and CSS rules.
Since I wrote up the initial IndieWeb alphabet on the IndieWebCamp wiki which is CC0, this post (and its custom post styling) is also licensed CC0 to allow the same re-usability.
ISO date 2015-08-03. I awoke to my first terrestrial travel timezone change on the open water. We gained an hour. It was ~5:45 Alaska Time, or more reliably for today, 05:45 -0800. I put on just enough casual clothes to go outside, and brought my book to read.
Everyone else was sleeping, and I was hungry, again. After photographing another sunrise at sea, I picked up some breakfast to go from Horizon Court and walked up to deck 17 to enjoy the outside air & view. My mom showed up and wanted to check out the deck 19 walking track. Having found the stairs to it yesterday, I took us up and we fastwalked a few laps, taking more photos.
It was colder than expected, but a quick room roundtrip and a layer fixed that. Got my dad while I was at it and rejoined my mom outside on the sun deck railing just in time for the ship’s naturalist to announce over the speakers: there she blows!
The Super Pod
We started seeing the humpback whales two at a time, one water spout, then another, sometimes a tail flip, then another. Between the pairs, sometimes a whale cruising on its own. Rather than take photographs, I looked through binoculars for the best views I could get. Besides, my parents were taking plenty of photos and videos on their iPhone 6s.
There were so many whales, they just kept coming, or rather we just kept passing them by. They seemed happy enough, arching their backs above the surface, and flipping their tails up too.
Two of them came quite close to the ship. As they passed by us on the port side, they leapt from the water and breached with big crashing splashes! Amazing, I’d never seen whales breach like that in person before.
Finally the ship’s naturalist exclaimed that we’d seen somewhere between 50-60 whales, a super pod of whales, larger than he’d ever seen before.
Entering Juneau
No yoga class today; instead I joined my mom in the hardwood floor area of the gym and we did a bunch of stretches. I completed a simple floor stretch yoga routine from memory. Afterwards I took photos of the weird day spa marketing materials I had noticed the day before, then went to second breakfast with everyone else.
Back in our rooms we watched our approach to Juneau from the balconies. Fascinating scenery in the nearby mountains, more and more signs of human habitation as the passage narrowed. We kept watching as the ship turned to approach the piers and docked.
Knowing it would be a little while before we could disembark, I showered, changed, and packed my backpack for a full day of all possible Juneau adventures. Totally overpacked.
We gathered in the hall outside our rooms and descended together to the disembarkation deck. Rather than wait twice as long for taxis, we walked 15 minutes into town and quickly came upon the Heritage Coffee Roasting Company.
Securing our first local coffee of the trip, my younger sister and I said bye to everyone else who decided to take a taxi to a salmon hatchery. Sis and I just wanted to explore downtown, plus she wanted to meet up with a local friend of hers.
A Sea Plane and A Social Break
I took advantage of our few minutes at the cafe to get on their wifi (captive portal password: coffee), post a couple of photos, and receive a few text messages.
We walked back down to the docks to look for the meeting point my sister’s Juneau friend suggested. They’d last seen each other a decade ago in New York City, both having left years ago after tiring of its dehumanizing grime & grind.
While waiting we watched sea planes land in the harbor. One in particular came towards us so I captured a clip for a friend — a sea plane propels itself forward on the water, turns to approach its docking slot, and gets help from humans on adjacent piers who rotate it around and back it into place — like something you might see in a Richard Scary book.
My sister’s friend showed up. I saw her before my sister did, before she saw my sister. When they did, their faces lit up, their voices exclaimed joy in harmony.
On her recommendation, we went to a nearby taqueria for halibut tacos which were quite tasty. They even had Cholula. My sister and her friend caught up as if not a moment of 10 years had passed. I was happy to be a silent third wheel sitting in the sun, without any expectation of interaction, a social break without solitude.
More iOS App Deletions
Two things have dominated the use of my mobile device for the entire cruise: taking notes and taking photos (or short videos).
Filming the sea plane docking filled up my iPod and it refused to do many things (obviously take photos or video) until I had cleared out some space. At least it helpfully directed me to “Usage” preferences which quickly revealed the most bloated apps.
The biggest culprits? iOS8 “default” apps.
I’d previously deleted a dozen iOS native apps after being annoyed by their update noise. This was much worse: loss of primary device functionality. So I deleted the most bloated apps that Apple installed with the iOS8 upgrade that I never asked for nor needed nor used:
GarageBand
Keynote
Pages
Numbers
… and got back 1.1GB from dumping just those four! Two of which should have simply been well designed indiewebapps instead of “native” apps.
Minutes to Mountain Hiking
My sister’s friend led us uphill out of downtown, into rows of residences, which disappeared after a few blocks. Suddenly (while I was distracted deleting apps) we were hiking up Mt. Juneau, dense woods on either side, cut only by the road and rushing river below.
The air was as clean and crisp as any I’d ever breathed. Summer hikes in Yosemite came to mind. We crossed a bridge over the river and found a spot where it slowed to a crawl over polished stones and walked over to splash our faces.
Spotting a few flat & thin rocks, I piled them into a stack ten high, topped with a chunk of bright white quartz. We stood for moments in silence just breathing and listening.
The hike back down went by much more quickly, as it always does. We stopped by the state capitol where I took the opportunity to use the facilities.
Posts & Messages; A Tram, A Hike, and A View
Without a specific plan, we wandered around more of downtown, browsed a local used bookstore, and stopped for another round of coffees.
I posted day 1’s log, a brief note, and sent replies to a few text messages. Receiving them, a day or two old already, it was nice taking the time to absorb, reflect, as you might with letters received, even if short, and short in reply.
We continued our wanderings, a gift shop, a juice bar, and finally walked back towards the ship, considering a meal or a tram ride & hike. We found the rest of the family who had just returned from said tram.
Restaurant wait times having swollen with cruise tourists, we decided an appetizing hike was in order. We took the tram a ways up Mt. Roberts, bringing along my sister’s friend as our guide. We hiked from the tram terminus Mt. Roberts Nature Center uphill past the edge of the map they’d posted to an incredible view of the bay below, lit by a slowly setting sun. Now we were hungry.
After scampering down the hill, we had to wait just 10 minutes in line for the tram ride back to the shore. Restaurant wait times unchanged, I used their wifi for one last grid sync and confirmed that a professional recommendation I'd sent had been received.
With our ship scheduled to leave port soon, we said our goodbyes to my sister’s friend, thanked her for guiding us on such an active day, and reboarded as the sun sank toward the mountains opposite the bay. Every sunset at sea has been different, and I have yet to tire of them and the landscape’s orange glow.
Dinners, Finishing TRON, A Speechless Nephew, and Unexpected Memories
I returned to my quarters to drop off my overpacked backpack. At ~30-40 pounds extra, I figured hiking swiftly at altitude and keeping up with my sister and the local served as good trail strength training. And made a mental note to pack one tenth as much next time we went ashore.
Now starving, my sister and I went to our usual, the Horizon Court buffet, where my other sister and brother-in-law had saved us a table. I devoured a couple of rounds of Alaskan halibut in a Thai coconut sauce, buttered peas, mashed potatoes, mixed greens salad with shredded carots, beets, blue cheese dressing, and a bowl of corn & potato chowder.
My sister and I returned to our rooms to rest our legs for a bit. My roommate (nephew1) was getting ready for bed so I took the the opportunity to read a bit more MATM. He asked if we could watch the rest of TRON, and with only 27 minutes remaining I set it up.
I kept reading with TRON in the background, occasionally underlining or making notes in the margins. Nephew1 asked me why I was writing in the book, I said because I’m taking notes. He asked if it was my book, I said yes, it was given to me by the author because I’m in it.
He looked incredulous. I had just reached the chapter on the 2010 Federated Social Web Summit, paused the movie, and flipped the book around with my finger on the paragraph where the author had mentioned me, and explained microformats as building blocks for a social web. For a moment nephew1 was speechless and looked like he thought that was even cooler than the movie he was watching. Then he turned his gaze back to TRON.
We finished the movie, and I said goodnight to him as I turned out the lights and ventured out. My day adventures sister also happened to exit her room. She was in search of hot water for tea, I was hungry again. We parted ways at the pizza bar, I got my slice of cheese, found a deck chair under the night sky, and started writing up day 2.
I started fading just after midnight, and only then found out that the “The Age of Adaline” was the movie playing in the background (on a large digital display above the pool) while I wrote. Its frequent shots of San Francisco kept drawing my attention. A brief glimpse of The Conservatory of Flowers from JFK drive brought back a flood of fond memories of running through Golden Gate Park.
The movie finished, I called it a night, and went to bed while the memories lingered.
Timezones are one of the quirkiest things any programmer has and will ever have to code, because they’re a political construct. They were and are decided by largely non-scientific non-technical politicians. But it’s worse than that, timezones themselves change over time. What timezone a place is in, and worse, daylight savings time, and when daylight savings time starts and stops all change, pretty much every year some place on earth.
Thus the moment you depend on a timezone in your data format, database, storage, files, your persistent canonical copy of your information, you’ve made your data fragile and vulnerable to passive corruption over time. Fragile to programmer errors (programmers get quirky things wrong all the time), and vulnerable to its meaning being changed by political bodies you have no (or nearly no) control over.
Solution one: UTC all the times
There are two solutions programmers have adopted to avoid political and temporal timezone problems, the first is to always store times (and dates!) as UTC, or "Z" time.
The problem with this “UTC all the times” approach is that it makes harder for humans (including yourself) to inspect & verify stored times.
Data that’s harder for humans to inspect and verify is also more prone to errors, especially small passive errors that go unnoticed. Programmers who have to debug such data are humans. Harder for them means harder to debug, means more bugs that survive longer. QED.
Solution two: local time & UTC offset
Rather than UTC all the things (or at least times), the second approach is to store precisely what the local time was at that time, with a time offset to UTC. This way the time (and date) is inspectable and verifiable as what you saw on a clock at that time. What you remembered seeing.
Times with offsets are also automatically convertible from local observed time to UTC and thus machine-processable into a universal timeline, regardless of past or future timezone changes. It’s the approach we’ve taken in microformats for quite some time and found that it helps keep data DRYer.
One possible exception to this “use an offset to UTC” approach are times for things that happen purely online. Web servers have their own clocks, likely set to UTC, and independent of any daylight time savings changes etc. When such servers receive messages, like a webmentions, or other HTTP requests, it makes sense to store them in the same “offset” as the server’s own time, UTC.
Here’s both an offset and exceptional UTC time from an actual email I received.
... 08:34:12 -0700
... 15:34:41 UTC
The first time shows when a user (in a physical timezone) sent an email. The second shows when an email server (set to UTC) received it 29 seconds later (assuming synchronized clocks).
I’m not going to provide complete examples of the bad approaches because I don’t want you to even think of using them. I’ll just leave you with this, if you see things like:
... America/Los Angeles ...
in your data, you’re depending on named timezones and making a mistake.
The best you can do to avoid this problem, or to “clean” such data is if you have access to it close to the time of creation (when it is unlikely there have been any timezone changes between when the data was created and your present time), automatically convert the named timezone reference into an absolute time +/- numerical hours (and minutes) offset from UTC, and then store that with the time, instead of the named timezone.
Bonus: “Set Automatically” Breaks Your Clock
Here’s a bonus problem. That seemingly useful “Set [timezone] Automatically” feature in computers, phones, works reasonably well on land, sometimes fails briefly when flying across timezones.
However, on a ship that’s nearly completely off the grid, “Set [timezone] Automatically” fails epically.
Say if you’re taking a cruise from Seattle to Alaska, and hit the open ocean, far out of the reach of any landbased wifi or cell towers that “Set Automatically” depends on. It may fallback to shipboard wifi or perhaps even a shipboard cell tower. But “Set Automatically” based on wifi SSID databases or cell tower triangulation assumes that neither of those things move.
Actual result: as we traveled up to Alaska and now back, anyone using “Set Automatically” in their iPhones etc. found their clocks automatically bouncing between an hour more forward than they should be (based on Seattle) and back. Their smarter devices were dumber at the simple task showing the time. I didn’t see anyone with an Apple Watch to see how good it was at telling time on a ship.
Future vs Past Times
Addendum 2015-08-13: James Socol pointed out to me that future dates are more problematic since they are subject to possible timezone/DST definition changes, whereas such definitions appear to be frozen for past times. The techniques in this post are for storing past times, which was implied above when I said:
…what you saw on a clock at that time. What you remembered seeing.
Emphasis added for the deliberately past tense in the text.
How to store future times is left as an exercise for the reader, though you may want to consider different use-cases differently (e.g. future human events where they assume what local clocks will show will match the future time they were shown, vs. again, servers, perhaps coordinating with other servers.) and take a look at this recent article: 2015-03-19 Lau Taarnskov: How to save datetimes for future events, also passed along by James.
ISO date 2015-08-02. After sleeping soundly the first night aboard, my alarm woke me gently at 5:40am. Without knowing what our precise latitude and longitude would be when, I had to estimate when the sun might rise for us. I say us, because the night before my roommate, nephew1, had agreed to get up and go running with me at sunrise.
Sunday Runday
This is the same nephew that has left me minutes behind the past three years in the Turkey Trot 5k. And he’s only getting faster, faster than I’m getting faster. But first I had to get him up. Took only about 10 minutes and we were up and running up three flights of stairs to the Lido deck.
The sky was already aglow. Once outside we ran up another flight of stairs to the Sun deck. It was quiet and empty, except for a small handful of photographers with their serious cameras.
Nephew1 and I found a nice vantage point after walking around the ship. As the sun crested the landmass to the East (likely Alaska), everything grew brighter until we could see orange glimmers on the waves.
We ran a lap around the upper deck, including up and down stairs as needed to keep going around. Suddenly it was clear we were both hungry (a common theme it seems), he told me quietly, no demanding, no whining, no complaining.
I’d learned that when a preteen even quietly says they’re hungry, it’s best to listen. Knowing the Horizon Court buffet had opened at 06:00, we stopped in to get a small bite and quickly found nephew1’s dad already inside, snacking and working on his laptop.
We finished our little first breakfast snack break and nephew1 wasn’t so sure he wanted to run anymore. I convinced him to stick with it, he convinced me that it was ok if he “only” did 3km. We ran several laps around the ship and hit 3km just as we got to the staircase between decks. I let him know he’d achieved his goal and he happily returned to our room.
My training schedule (which continued after last week’s half marathon) called for 4 miles today, so I kept running until I hit that and more. I returned to my room to change for the one yoga class I’d signed up for and had some time so I read a bit more of MATM.
Shipboard Yoga
Five til nine I left and ran up to the gym. Easily made it on time and grabbed a spot next to my mom and middle sister. Leading the yoga session was an Australian fitness instructor, who seemed friendly enough, yet had received perhaps just cursory training in all the different course offerings.
He took us through a warmup, some unethusiastic sun salutations, and then a few warrior sequences. He closed with simple floor stretches, the customary shavasana, and cross legged sitting pose finish.
Feeling a bit wanting, I went through an arm balance sequence. First, 30 seconds of crow pose, doing my best to hold the pose and relax, breathing regularly while I counted down from 10 then up then down again. While relaxing I could feel the very subtle swaying of the ship (it’s a big ship) under my hands.
My mom had also continued with her own stretches. I offered to show her side crow — she was there when I first learned it from Jordan, my favorite teacher at Mission Cliffs. She declined for now, citing some back stiffness.
I sat into chair pose, twisted to one side, hands down, hips up & knees on triceps, leaned forward and balanced for 10 seconds. Then side crow on the other side. I stood up to warrior 1, twisted to one side placing my hands on my thigh, twisted further and placed my hands down on the floor. Lifting my hips up again and onto my triceps, I leaned forward into side crow split legs for a few seconds. Just learned that a few weeks ago. Then the other side. Closed with a dual wrist stretch plank and mayurasana.
Second Breakfast and Softserve
Returning to my room I read some more of MATM, up to the 20% mark. Finally showered & changed for the day and went back upstairs to the Horizon Court for brunch AKA second breakfast with my parents and middle sister.
Afterwards my dad and I took the elevator up to deck 19 (The Star Deck) which I hadn’t figured out how to otherwise get up to. We found and walked the official “jogging track” which had a net enclosed basketball court at one end. Found the steps down to deck 18, then 17, then 16 which I’d run past numerous times that morning. Labeled only with an innocuous “Center Court” sign, I made a note of the foot of these stairs for future explorations.
I showed my dad the entire loop around the boat that I had run earlier that morning. He seemed quite proud. It was only a week ago that we had both completed the 2nd half of the San Francisco Marathon.
The thing about running is, on the days where you get in a satisfying medium to longish run, you never stay full for long. After our walk lap I grabbed a chocolate softserve with sprinkles and found a nice table by the pool to catch up with all the things I didn’t do before I left the grid. Most things I let go, into the future, to the Sunday after my return. I noted a couple of things to check should I opportunistically find a decent uplink at our next port of call.
A slice of margherita pizza helped me keep the momentum and both finish braindumping recent memory from yesterday & today til the present time, as well as get started on writing up day 1’s log into a post.
Lunch and Day 1 Log
As I serialized memories to text by the table, my younger sister came by and said hi, also going for a walk around the boat. A while later my father came by, and I was hungry again. I wrapped up my thoughts in a paragraph, and we went to lunch.
As usual I started my buffet plate with a huge salad (that’s buffet hack #1, salad and veggies first, then protein, lastly if you have room maybe a bit of starch, skip dessert). The smell of Indian food hit my nose and I decided to try the Dhingri Matter [sic], paired with some mashed potatoes. A few fried calamari with tartar sauce and a very small piece of trout rounded out my plate.
My father and I both ate and took in the view. We were both in the mood to write, he got out his notebook, and I my laptop and continued writing yesterday’s log. Got to the sunset writeup, was hit by a strong memory, and rewrote it three times before capturing it in a short aside. Suddenly it was five minutes to tea time. A good stopping point for sure.
Tea Time
Dad had mentioned that Tea Time was my mom’s favorite meal of the cruise. Perhaps even her favorite thing on the cruise. We walked quickly to the Da Vinci Restaurant, the same place we’d had our sit down dinner the first night.
My mom was nearly the first person in line waiting for them to open. We joined her and by the time they started letting people in the line had grown. We asked for a table for 8, they asked us if everyone was here. We looked back in line, and most of our crew was back a few people. We waived them up and got seated.
Tea time is just as you might expect. We sat at a nice round table for 8. Tea cups and small plate settings for everyone. Within moments a server poured us all cups of tea. Then the platters came.
First the pastries, as cute as you might see in any fancy bakery, all lined up on a tray held by a server more than eager to explain what each of them were and then gently use her tongs to pick up whatever you requested or pointed at and place it on your plate.
Next the cookies, soft, crunchy, butter, peanutbutter, chocolate, and some banana bread too. Third the sandwiches — miniature, just larger than bitesize. Each tray was brought by a different server.
Finally the fresh baked scones arrived on a round platter, kept warm under cover of aluminum foil. As the scone server offered and served them one by one, she was followed closely by a waiter who served dollops of jam, clotted cream, or both upon request.
Then of course the inevitable additional offerings of all the above and teacup top-ups. Stuffed, once again.
First Formal Evening
Afterwards I wanted to do nothing but recline, and yet it was too nice out to do so indoors. I found a chair by the Calypso pool, kicked back, and finished writing up day 1’s post. There was just enough time left to get dressed for our first formal evening. Apparently on cruises like this they designate 2-3 nights as “formal” nights where everyone is expected to dress-up, perhaps to set more of a deliberately dressed-to-impress party atmosphere.
I changed into the only button down shirt I’d brought, my other black pants (the first pair had soaked up a bit of water from that poolside chair), and my nicer black jacket, G-star, along with my polished black boots. No tie, blazer, nor white shirt. None of those is who I am, and I’m supposed to be having fun on this cruise, so I dressed formal my way.
We walked together as a family down to the Crown Grill restaurant for our reservation. They were not quite ready for us, so we took a few formal photos at the black felt backed photo station just outside.
Once again, amazing food. Salmon in many forms, and other tasty things. After they took our orders for dessert, they came back with a birthday dessert for my mom, then everyone else’s orders, as well as an extra dark chocolate mousse heart garnished with a pool of strawberry jam, a couple of raspberries. I won’t even try to describe the nine layer smores that a couple of us got. You’ll just have to wait til I update this post with photos.
Sunset and Sleepy TRON Time
After a nice post-dinner walk, we watched the sun set on the sea yet again. The farther North we went, the later the sun actually set, nevermind how long it took for it actually get dark out.
Somehow after all that I was hungry yet again, and grabbed a slice from the pizza bar. Finally around 22:00 I went back to my room where my roommate nephew1 was just getting ready for bed, definitely past his normal bedtime.
He asked if he could watch more TRON, and I said yes, but we should probably limit it to 20 minutes tonight since it was already late. I setup the laptop at maybe a minute or so before where we left off, turned off the lights and hit play. I fully intended to go back out again, since I was already all dressed-up.
I kept writing and somehow just fell asleep. That sort of thing happens when you try doing things lying down in bed in the dark.
I awoke almost 50 minutes later, and in an instant knew that the movie was farther along than it should be.
I told my nephew we had gone way over and needed to change into our pajamas and go to sleep. Realizing I’d been up since 05:40, then having run, done yoga, eaten so much, and walked around & up/down stairs a lot, the exhaustion suddenly made sense. We called it a night. The Solar Sailer escape would have to wait.
ISO date 2015-08-01. We boarded the Crown Princess not long after checking in at the port, after having them verify our passports, take our self-assessed medical questionnaires, and give us our boarding cards. My parents had kindly arranged early boarding for us.
Just before we stepped onto the gangplank they checked our boarding cards and took our photos (without glasses). Thoughts of a complimentary cruise yearbook briefly went through my head.
Finding our rooms easily, we unloaded our backpacks and put away our small hand luggages. We had checked-in our rollaways at the Princess Cruises counter at Seatac for them to bring directly to our staterooms later that afternoon. Apparently hotel rooms on ships are called “staterooms”.
First Lunch
When you sleep little or not at all the night before, you’re a lot hungrier the next day. After checking out our rooms, their balconies, which happened to be connected, we quickly went to get lunch. There was no line at the Horizon Court, one of many buffet restaurants on the ship that’s open continuously from 06:00 to 23:00. I had pan cooked Alaskan cod with lemon, mashed potatoes, a big salad, and a small piece of onion focacia.
As we left the line went out the door. Curious about our workout options, we went to explore the gym.
To get to the gym you have to walk through the spa, with all manner of marketing posters and upsells of various rejuvenation, pampering, and beautification options. (Writing this makes me want to go back and photograph the posters, realizing just how strange they might seem out of context.)
In addition to wide spread of cardio and weight machines, most with a beautiful view out the front of the ship, they offered various classes on the hardwood floor behind the machines. Yoga, pilates, TRX, etc. As part of the cruise package we’re on, we each have $50 credit on our boarding cards (which double as room keys, triple as onboard credit cards), and a $12 yoga class seemed like a reasonable way to spend some credit. The classes only had about 15 spots each, with 3 lines for a waitlist. That seemed small for a population of nearly 3500.
We explored the upper decks, took in the views, and watched our departure from Seattle Harbor. We went back to our rooms, and I decided to read a bit from the three books I brought and take a nap to keep catching up on my sleep.
Safety Drill
I awoke a couple of hours later (apparently I needed that nap) to the sounds of my roommate (nephew1) scurrying about and noise from next door as well. Everyone was getting ready for the imminent safety drill.
Each cabin has lifevests for precisely the number of occupants. We were instructed that the drill was imminent and to carry (not wear) our life jackets to the Muster Station for our section. Everyone in my family was already on their way well before the official drill time. I grabbed my life jacket and made my way as well, following the well placed signs and arrows to the Muster Station.
Found my parents, sister, a nephew, and my niece in the Muster Station which turned out to be an auditorium. Crew members scanned our boarding cards at the entrance. The crew member on stage quickly quieted everyone down and then started welcoming people by country and making other comical banter. Once in a while an official sounding (or perhaps just British accented) voice would come on the loud speakers reminding us what was going to happen in mere minutes.
Minutes before drill time, the lead crew member became increasingly serious, teaching us what would happen in case we had to abandon ship, finally instructing everyone how to put on their lifejackets, and then had us all do so.
16:00: the general alarm sounded. 7 short bleats and one long bleat. Everyone looked around, and the various crew members did a once over the crowd. Having passed the drill, we were told to take off our lifevests and return to our rooms. We did so, putting the lifevests back where we found them.
A Little Tour, A Few Mental Exercises
After the drill we wandered around the boat a bit, walking from pool to pool (pretty sure I counted four, not counting the hot tubs).
We stopped to check out the Calypso pool in particular, above which was place a massive display and adjacent speakers, for daily movie showings.
My parents arranged for reserved dining for our dinners. 17:30 and 20:00 were the only two options so naturally we chose 17:30, better suiting the kids and us early risers. After our little mini-tour, we changed to look a bit nicer for dinner. For me that meant zipping up my fitted Betabrand jacket rather than being loose and casual with a black v-neck t-shirt underneath.
Dinner was sit down and order style, and I suddenly realized just how hungry I was (again). Feeling even more impetuous and impatient than my nephews & niece, I decided to first help nephew2 work on the puzzles on his kid’s placemat, and then we did mental exercises while waiting for our food.
First I asked him to tell me the ISO date, which he nailed without hesitating. Two thousand fiften DASH zero eight DASH zero one. Then a big grin knowing he’d nailed it. So of course I hit him up with a bigger challenge, the ISO ordinal date. He protested, claiming he hadn’t practiced it.
No chance I was letting him off that easy. I told him, no problem, let’s figure it out from what we know. How many days in January? 31. How many days in February? 28. What does that total? 59. How many days in March? 31. Add that? 90. Ok let’s put that aside, 90 days in the first quarter. How many days in April? 30. May? 31. June? 30. Total? 91. Let’s put that aside for the second quarter. 181. Yes that many days in the first half of the year.
How many days in July? 31. What day is it in August? 1. Add those. 32. What was the number we had before? 181. Now add those. 213. So what’s the ISO Ordinal date? Two thousand fifteen DASH two hundred thirteen. Nailed it. In his head, no paper needed.
The bigger goal here is of course to teach him two general purpose problem solving tools by practicing them: deconstruction and clustering/chunking. Every problem can be deconstructed into smaller, often trivial pieces. By clustering and chunking these solved pieces into larger pieces, you can keep the whole solution in your head as you build it back up.
Having mastered dates (all an 8-year old needs to know about dates anyway), we moved onto other units. I grilled him on metric lengths. Millimeters, centimeters, decimeters, meters, kilometers. With a little help, he got all those too. What about weight / mass? 1 kilogram is 2.2 pounds. He told me his weight / mass in both.
What about the periodic table of elements? Apparently he hadn't studided these yet. So I let him "phone a friend" and ask his older brother for help. We got thru nearly the first two rows. Finally we ended with naming airport codes and our food arrived.
Dinner And A Sunset
Our food arrived, one course at a time. For my appetizer I had Alaskan salmon gravlox. Then a simple small Caesar salad. Finally the baked Alaskan salmon special. Everyone else ordered dessert. I merely helped with some of the chocolate bits.
The temperature outside had swiftly dropped from high 80s down to windchilled 50s. We returned to our rooms and put on a layer or two. I grabbed a book to read as well. My younger sister and I went out to the upper sports deck level to walk around and watch the sunset.
The sun lit the cloudy horizon on fire, glinting off the tips of the waves. Approaching the bow of the ship, we had to push against an ever stronger headwind. I held my camera firmly, took a few more shots near the bow, then put it away, leaned into the wind, and just enjoyed the view.
A little windchill can’t scare off a San Franciscan. I walked back to the semi-protected Calypso Pool area where a movie was playing. Didn’t matter which one, it was just background. I picked out a pool chair, reclined comfortably in my layers, and only then noticed that everyone else on the chairs was bundled-up under indentical red green patterned wool blankets. It wasn’t the first, nor would it be the last time on the ship that I would suddenly feel different from everyone else around.
I started reading More Awesome Than Money (MATM), and while doing so gave in to the nearby unlimited pizza and softserve bar. A couple of slices of margerita and a small chocolate softserve later, I’d read thru about 10% of MATM and decided to return to my room.
Introduction to TRON: A Bedtime Movie
My roommate nephew1 was already getting ready for bed, and I found myself sleepy as well. Earlier I’d disclosed that I “brought” a few movies with me (they just happened to be images on my laptop from a few DVDs at home), and he’d done his due diligence, asking his parents which he could watch. Of the dozen or so I had that was permitted to see, he picked TRON.
It was already late, so we collectively decided to watch the first half hour, and then go to bed. It’s amazing what observations an 11-year old will make, and what questions they ask. Especially when seeing a movie with some of the earliest computer generated special effects.
We watched up through the scene where Kevin Flynn is introduced, and talks his friends and former colleagues into helping him break into ENCOM. As they were sneaking past towers of computers, we paused the movie and went to sleep.