Rebuilding with Gatsby

A few months back, I launched the latest iteration of this website. A lot has happened since the launch in both the world and my personal life. This is the overdue launch post. I took the opportunity to revisit some old blog posts, journal entries, and social media content. As much as I have supposedly changed throughout years, the key theme remained the same. I’m still struggling with the same challenges and emotions. I'm still flawed mostly the same ways. Some say people can't change for the better. Could that be true?

It has almost become a pattern that every two or three years this website gets a redone. I have no intention for it to become another place where the only topic is itself (App.net anyone?). Still, this rebuild is interesting to share.

Although the website has had a minimalist design since its inception, multiple aspects could benefit from a modern rethink. There were three things jumped out to me the most: font choice - Source Sans Pro was a good font but I had a strong preference these days for websites using system fonts; the font sizing was on the smaller side; and the spacing wasn’t nearly generous enough. In addition, I long wanted to add footnote popover and a dark mode.

The previous version was built with Hugo. Besides providing an extremely fast build time, Hugo took care of most of the common needs such as content management and pagination out of box. However since I didn't take the time to fully grasp Hugo and especially its templating engine, I always had a sense of uneasiness. This time, I wanted better control over the code and just like before, performance and accessibility were my top priorities alongside a clean look.

Gatsby was already on my radar during last rebuild. I picked Hugo because I found a Hugo template better suited my needs. Since I wanted more control over the code, it mattered less now what Gatsby templates I could find. I chose Gatsby for that it has a good reputation, is well maintained, and has an active community. Gatsby uses React for templating and GraphQL for data querying. They are great gateways for me to stay connected with the JavaScript community.

The actual building process was already a little blurry. I remember choosing not to use Gatsby theme because that would involve publishing my own npm package. It was a bit counterproductive to maintain a package that would most likely be used by a few if not just one. Plus I was confident I could structure the codebase so that the content and the site would have a clear domain separation. Open-sourcing the website satisfied my wanting for making it a community project. I opted for using a starter instead. Maybe because the starter was originally built a while back, I found in it many practices to be challenged. I ended up removing lots of overloaded dependencies and changing almost every aspect of the code. Nevertheless, it gave me a solid ground to start with along with Gatsby’s official documentation and guides.

The new design was refreshing. Dark mode was beautiful and activated following system setting. Footnote popover was finally there and looked in place on different screen sizes. Yet I couldn’t bring myself to release the new website. Inconsistencies still popped up across browsers and devices. There was always one more design tweak I could make. The code could always use more refactoring and cleanup. After some more procrastination, I knew I had to stop or I’d never launch it. I just needed one more reason to convince myself. I told myself, if Lighthouse gave the website decent scores, I’d launch it.

Screenshot of Lighthouse report

So I pushed the button. I knew I would find new issues from time to time. I also knew this website would evolve over time as it was supposed to. I was happy it was out there.

Is Gatsby the perfect choice for a personal website like this? The answer is probably no. Something like Jekyll is a lot more straightforward and has a much better chance at not having the code going outdated instantly (the JavaScript world moves fast). I may very well choose Jekyll for the next time but that doesn’t matter — I had a lot of fun building using Gatsby and I’m quite happy with the result.

Though can't be definitive, I want to attempt at answering the question in the beginning: if I can make this website a little better every a few years, I choose to believe we can ourselves too.

Seven Years Later, Online Shopping Still Doesn’t Save You Time

Casey Johnston in Shopping Sucks Now:

The internet has created a tyranny of perfect information, so there is more to know about which thing is the right thing to buy than any human can comprehend.

And:

This infinite-market stuff was all well and good when being able to buy almost anything was an opportunity, but now that I can consider everything in the interest of saving time and money on buying subpar stuff, it’s an obligation I can’t ignore. But then I inevitably end up wasting a lot of time and money trying to save that time and money, making everything about this my fault.

I wrote about the same sentiment way back in 2013. It has only got worse with the now omnipresent direct to consumer brands.

What Do I Talk About When I Talk About Dance

I need to talk about dance.

Dance is the surprising and wonderful delight I found in 2018. It all began with when a friend suggested we did something new and tried out a hip hop dance class for a Saturday morning. That was fun, I thought. I went back the next week, the week after, and the week after that... Before I knew it I joined a performance workshop, danced with some most amazing instructors and students, and met many wonderful people that I now call friends.

I'm by no means a natural dancer. One would think dance is a just another form of sport that takes some adjustment and technique learning. Well it was not. Shocker. I received really great feedback from some dance friends. One said my shoulders were not open. Another said I forgot that I had arms when I danced. You see the idea. Groove? I don't have. Isolation? Not really. It took me three months to really understand what people meant when they said I was moving my shoulders when I was supposed to move my chest. None of those mattered though. I still found so much joy in it. I stayed. And I’m probably going to stick around.

The type of class I partake the most is usually referred as urban choreography or urban dance. Here is a video attempting at explaining what it is. The first 30 seconds is pure comedy gold if you already have an idea about urban choreography, which is more of describing an activity than a certain dance style. It’s the practice of people coming together and dance. It’s about building a community. While commonly hip hop, the instructors come from all kinds of dance background and employ different styles to express what they see and feel in the music.

It has been an unreasonably stressful year and dance provided me tons of positive energy to push through. I was so lucky to take class from incredible local talent such as Sila Poe to shiny stars such as Larkin Poynton and Ellen Kim. I sort of performed on the same stage with Les Twins, Kida the Great, and Chris Martin. My YouTube homepage started to fill with dance videos. I started to deliberately look for bass and snare when listen to music. It was wonderful and I'm grateful. I understand I need to foster a better relationship with myself and destress myself from the inside but dance has given me so much while I learn to do that. To much more dance to come.

My Email Workflow

We love email. We hate email. We deal with email everyday. Through out the years I've tried many ways to keep my mailbox sane. Many seek for help from a task management system. Often with this method, people track emails as todo items and treat emails themselves as merely reference material. Some email clients have taken that even further by making the client itself a hybrid task manager, popularized by Mailbox and its peers.

A rising amount of email clients started to automatically process and organize emails on user’s behalf, employing machine learning and alike. The processing may be based on an email’s type, priority, and other criteria. Such feature is sometimes called smart inbox. Spark and Inbox are two notable contenders. Even traditional email clients such as Outlook are exploring this option.

I personally do something much simpler. For that at the end of the day, email is just another communication channel. First of all, I separate my work and personal email entirely — different addresses and different clients. I don't even have personal account set up on work machine and vice versa. When I absolutely need to look something up in my personal email when using my work machine, I use the web interface. Having the physical separation helps me build a clear mental separation. The cleaner the context is defined, the better. The less context switching, the better.

I only subscribe to a tiny amount of newsletters. All the unsolicited ones are unsubscribed mercilessly. Marketing and promotion emails? Gone. Useless notification emails? Gone. For the ones I can never seem to find a unsubscribe button, I simply set up a rule to delete them upon arrival.

Notification, the single most distracting invention in history. To minimize the amount of notifications, I use rules to automatically mark the emails that I need but don't need to be notified about as read. For example I do so for the newsletters.

I triage my inbox in batch using a GTD inspired method. If an email can be responded within 2 minutes, I usually do that right away. Otherwise I leave it in the inbox to response at a later time, and again in batch. When a long response is needed, I most likely write the response in a writing app instead of directly inside the email client. Once I respond, I archive the mail. I flag the sent item that I’m waiting for a response for.

I use exactly one folder besides Archive and I don’t use tags at all. The folder is called Saved, where I store things needed for upcoming events, such as concert or flight tickets. Once they are used, they go to Archive.

I believe the best way for anyone to manage email is the way that makes them feel in control of their inbox rather than the other way around. Mine makes me feel so.

Have a Good Day

Who doesn’t love a good day? Everyone longs for days when everything just seems to go their way. However sometimes we focus too much on the wanting part and forget that a good day doesn’t just come by itself — it requires work and specifically, preparation work.

Go to sleep early. Prepare the clothes you need for tomorrow. Prepare breakfast as needed. When the morning finally comes, you wake up full of energy, jump out of bed and put on the clothes you’ve already decided on last night, and eat a hearty breakfast. From there, you are probably going to have a good day.

Tomorrow starts tonight. Want to get up early? Go to bed early.