Homepage of Sam's weblog. Twitter // GitHub // LinkedIn // Timeline

... more about this site

This site is a work in progress. I'm mostly building it as a sandbox to experiment with web development and content. You'll see a lot of strange odds and ends here.

In particular, I'm experimenting with:

Component-based development

How much can you break a website into discrete chunks that don't speak to one another? This post appears in a feed. The feed is one chunk. Inside it, there is a list of posts, and each post is a collection of chunks. In component-based development, the data, template, and styles for each chunk should be completely discrete.

Un-networked content

I like publishing, but I'm not a big fan of modern digital publishing. Tweeting gives me anxiety, and Facebook is toxic. The ideology of "bigger is better," when it comes to audiences and traffic has caused a lot of problems. And why? The media industry has established definitively that scaling an audience does not scale revenue. So, rather than tying ourselves to monolithic distribution networks, what about opting out?

I have blocked the content of the homepage from Google. Google can find the page, but not the content. I intend to do the same with Facebook. I want to make it so that content can be shared, but not viewed, through Facebook (no image, no title, no description).

At some point, I'd like to launch a newsletter with a maximum number of subscribers. It would be nice to write for 100 people. When we assume that content scales, we're assuming that the quality of content bears no relation to the quality of our audience connection. With an audience of 100,000 readers, your audience connection is almost zero. How does that affect your value proposition?

Web Development

Another dev milestone: when I type "net" into my URL bar, my browser autofills "netlify" instead of "netflix".

Web Development

My great-grandpa, Joseph Wallace. He died in the Spanish Flu, when my grandpa was still a baby.


Claire pointed out to me that the French translation for "April showers" is giboulées de mars, literally "March showers." Language is always situated in experience.

I think of memories as based in time, but they can also be based in location. Last year, I spent a lot of time on the canal in Paris. So many fond memories of the same place. Finally, standing on the canal a year after arriving there, I realized that I had few memories of moments in time on the canal. Instead, I remembered the canal as a location where many things happened.

I thought about this as I went to the cheese shop on my street, and I remembered another cheese shop, from when I was fourteen, driving across the country with my mom, my brother, and my sister. It was a grocery at the Quebec border, where travelers could stop to buy Quebecois products before crossing the border into New Brunswick. I wasn't interested in anything, but my mom told me to buy some unpasteurized cheese curds and beer as a gift for my dad. I was nervous, walking up to the counter with beer, but the clerk sold it to me, unfazed.

Three years ago, Claire and I drove across Quebec. Just before the New Brunswick border, we saw a little grocery. I wondered if it was the one I visited as a teenager, and so we pulled over. Once inside, I could see it was much smaller, though they still sold good Quebec cheese.

Stepping into the cheese shop in Paris, I wondered if that original grocery store on the border still existed. Would I recognize it, if I walked into it? Or had time warped my memory into a completely different place? Is it perhaps even possible that the two grocery stores were the same?

I'm going crazy these days as I try to identify landmarks from when I visited Europe with my brother and sister eleven years ago.

In Berlin, we stumbled across a children's book store. My sister fell in love with some beautifully-illustrated picture books, but decided they were too expensive. A few days later, we left Berlin, and she and my brother flew home from Amsterdam while I hung around in Europe for another month. I went back to Berlin a couple of weeks later and stayed in the same hostel again, this time alone. I took a day to wander the city, retracing the aimless turns I had taken weeks earlier with my siblings, to find the children's bookstore. I did, and I bought the picture books for my sister.

I don't know why I was sure that if I ever returned to Berlin, I could repeat the feat. When I did, ten years later, I was there for a year. By chance, Claire and I lived in an apartment two blocks from the hostel I'd stayed in with my siblings — and then alone. Occasionally, I would wander out and try to retrace my steps. I thought I'd managed to piece together the first half of the walk, but I could never rediscover the bookstore. Eventually I turned to the internet and scoured the neighborhood for references to a children's bookstore, but I never found it.

In Paris, I remember walking through curving cobblestone streets to a grand, leafy, sloping park, with a pond. I remember Parisians lazing idyllically on the grass. For the past year in Paris, every time I come to a new park, my hopes flutter — thinking it might be the same spot — and then falter, when it is not. "Buttes chaumont?" my sister texted me back, when I asked her if she remembered the park. "I don't think so," I responded. Nonetheless, the next time I went back, I circumambulated the entire park to see if we had approached from a different angle.

I think it was a different park. Though I don't know. Maybe it wasn't.

In the summer, I went out for a walk and deliberately got lost until I found a park. I sat down, and told myself that so long as I don't know where I am, I am not somewhere. If I'm not somewhere, I don't really exist.

All experiences — thoughts and feelings — are memories. Some are memories of the present moment.

If you don't know where you are, you can't have been there. So, you're nowhere. You don't exist. Do you want to exist?

This website is an experiment in component-based development. At the time of writing, all of the content on the website is rendered with components from an npm library. Meanwhile, all of the content is stored in Prismic.

I created the components in a development environment on my computer, using Prismic's Slice Builder, which creates a Slice schema for modeling the content in Prismic's CMS. I then bundle the components as an npm package (sams-slices). In my blog project, I install the npm package and include it in my Prismic configuration. I use Prismic's dev tools to push the Slice schemas to the Prismic repo for my blog project (samlfair.prismic.io). Then, I have components in my project with matching schemas in my CMS, and I use them to create content.

With Prismic's SliceZone component, I can automatically query the content from my CMS and render it with the corresponding components in my project.

Web Development