<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BrianLi.com</title><link>https://brianli.com/</link><description>Recent content on BrianLi.com</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 14 Feb 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://brianli.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Hosting Static Sites on Fly.io</title><link>https://brianli.com/hosting-static-sites-on-fly-io/</link><pubDate>Tue, 14 Feb 2023 00:00:00 +0000</pubDate><guid>https://brianli.com/hosting-static-sites-on-fly-io/</guid><description>&lt;p>I recently joined the team at &lt;a href="https://fly.io">Fly.io&lt;/a>, and have slowly been moving my various sites and hobby projects over. In case you haven&amp;rsquo;t heard of Fly.io, we help developers host apps (all sorts of apps, not only JavaScript-based ones) close to users – no devops skills required. I use Fly.io to host a few Python apps like &lt;a href="https://icon.rhizome.dev">this one&lt;/a> and &lt;a href="https://nozomi.world/collections/machin/prime/">this one&lt;/a>.&lt;/p></description></item><item><title>The Moon</title><link>https://brianli.com/2022/11/the-moon/</link><pubDate>Tue, 08 Nov 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/11/the-moon/</guid><description>There was a &amp;ldquo;blood moon&amp;rdquo; eclipse tonight. I&amp;rsquo;ve never tried photographing the moon before – mostly because I didn&amp;rsquo;t own a telephoto lens until recently. The photo below was captured at 840mm (1260mm FF-equivalent). It&amp;rsquo;s crazy to think this giant rock is just chilling up there.</description></item><item><title>Shonan Sunset</title><link>https://brianli.com/2022/10/shonan-sunset/</link><pubDate>Wed, 26 Oct 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/10/shonan-sunset/</guid><description>One perk of living in Shonan is being able to see sunsets like this one.</description></item><item><title>Enoshima Sunset</title><link>https://brianli.com/2022/08/enoshima-sunset/</link><pubDate>Sat, 27 Aug 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/08/enoshima-sunset/</guid><description>Enoshima is always crowded on the weekends, but at least the sunsets are pretty. Joking aside, it was nice to stop by before the end of the summer. There were a bunch of restaurants and bars on the beach, and it was great to see people socializing and having fun again.</description></item><item><title>How to Use Python to Get the Number of Commits to a GitHub Repository</title><link>https://brianli.com/2022/07/python-get-number-of-commits-github-repository/</link><pubDate>Sat, 30 Jul 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/07/python-get-number-of-commits-github-repository/</guid><description>Recently, I&amp;rsquo;ve been working on a page to track GitHub activity for ICON-related repositories. The page has a component that displays every commit made to the tracked repositories. This component is powered by a background service that scrapes GitHub&amp;rsquo;s API for new commits every few minutes, and stores new commits in a MongoDB database.
As you can imagine, this task is fairly resource-intensive (especially for repos with a large number of commits) because GitHub only displays up to 100 commits on each API call.</description></item><item><title>Switching Back to Cloudflare Pages</title><link>https://brianli.com/2022/07/switching-back-to-cloudflare-pages/</link><pubDate>Thu, 21 Jul 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/07/switching-back-to-cloudflare-pages/</guid><description>Back in December 2020, I tried out Cloudflare Pages for the first time during its public beta. After a few days of trying to get it to work with my blog, I gave up and reverted back to the always trusty Vercel.
Long story short, Cloudflare Pages was still very new at that point and there were some compatibility issues with a few of the larger images on my blog. Also, site builds were taking upwards of 10 minutes on Cloudflare, versus 1-2 minutes on Vercel.</description></item><item><title>Leica M10 Monochrom</title><link>https://brianli.com/2022/07/leica-m10-monochrom/</link><pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate><guid>https://brianli.com/2022/07/leica-m10-monochrom/</guid><description>I recently picked up a Leica M10 Monochrom. More to come.</description></item><item><title>How to Find Broken Links With Python</title><link>https://brianli.com/2021/06/how-to-find-broken-links-with-python/</link><pubDate>Thu, 10 Jun 2021 16:00:00 +0900</pubDate><guid>https://brianli.com/2021/06/how-to-find-broken-links-with-python/</guid><description>I was fixing some broken links on our blog at work when I decided it would be fun to make my own broken link checker. It didn&amp;rsquo;t end up being very complicated at all, and I&amp;rsquo;m glad that I no longer need to open a web browser and navigate to an ad-infested website to check if a page has broken links.
Here&amp;rsquo;s the code below if you want to use it.</description></item><item><title>Python Automation is Awesome!</title><link>https://brianli.com/2021/02/python-automation-is-awesome/</link><pubDate>Fri, 05 Feb 2021 13:00:00 +0900</pubDate><guid>https://brianli.com/2021/02/python-automation-is-awesome/</guid><description>I&amp;rsquo;m not a developer by trade, but I know just enough Python to automate repetitive tasks. Today at work, I saw an opportunity to speed up a task by writing a few lines of Python. Without going into too much detail, the task involved finding all the blog posts without a table of contents section.
We have a ton of content on our blog, so going through each post manually would&amp;rsquo;ve taken forever.</description></item><item><title>A Quick Update</title><link>https://brianli.com/2021/01/a-quick-update/</link><pubDate>Sat, 30 Jan 2021 00:00:00 +0000</pubDate><guid>https://brianli.com/2021/01/a-quick-update/</guid><description>I haven&amp;rsquo;t written anything for a few weeks, so I wanted to post a quick update.
I&amp;rsquo;ve been super busy with life and work since the beginning of the year. We&amp;rsquo;re moving to a new apartment in the coming weeks, so preparing for that has consumed a lot of my time. I&amp;rsquo;m happy to report that I&amp;rsquo;ll finally have a dedicated home office at our new place, so I&amp;rsquo;m excited to be able to work anytime without worrying about being too loud.</description></item><item><title>Happy New Year!</title><link>https://brianli.com/2021/01/happy-new-year/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0900</pubDate><guid>https://brianli.com/2021/01/happy-new-year/</guid><description>Happy New Year from Japan!
2020 was a tough year for many of us. COVID-19 swept across the world and ruined relationships, careers, and lives – too many lives.
I sincerely hope 2021 will be better.
Personally, COVID-19 did not have a huge impact on my life. On the contrary, 2020 was my best year yet – both personally and financially. We spent the first half of the year in the US, and the second half in Japan.</description></item><item><title>The AirPods Max Case Doesn't Suck</title><link>https://brianli.com/2020/12/the-airpods-max-case-doesnt-suck/</link><pubDate>Tue, 29 Dec 2020 10:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/the-airpods-max-case-doesnt-suck/</guid><description>Calling AirPods Max a controversial product is an understatement. Many have bashed the $549 price point, and others have complained about their weight. The biggest complaint about AirPods Max, however, is its case. People say it looks funny, and I guess it does, but why does that make it bad? As someone who&amp;rsquo;s owned a variety of headphones and in-ear monitors (both low-end and high-end), I just don&amp;rsquo;t understand the level of hostility towards the AirPods Max case.</description></item><item><title>I Bought AirPods Max Off eBay</title><link>https://brianli.com/2020/12/i-bought-airpods-max-off-ebay/</link><pubDate>Wed, 23 Dec 2020 15:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/i-bought-airpods-max-off-ebay/</guid><description>I did it. I caved and bought a pair of Sky Blue AirPods Max off eBay. I had to pay a 30% markup plus international shipping, but they&amp;rsquo;ll be arriving in a few days instead of in a few months. The more I read about them, the more I can&amp;rsquo;t wait to listen to them. Was it a stupid decision to buy them from eBay?
Practically, yes. Emotionally, no.
Stay tuned for more thoughts on AirPods Max over the next few weeks.</description></item><item><title>Hosting on Cloudflare Workers Sites and Vercel</title><link>https://brianli.com/2020/12/hosting-on-cloudflare-workers-sites-and-vercel/</link><pubDate>Wed, 23 Dec 2020 07:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/hosting-on-cloudflare-workers-sites-and-vercel/</guid><description>Some people may view this as paranoid (it sort of is I guess), but I host this blog on both Cloudflare Workers Sites and Vercel. The idea was that if Cloudflare Workers ever suffered a service interruption (which it sometimes does), I could quickly point my DNS to Vercel and pretend nothing happened.
Well, it finally happened last night!
A Cloudflare Workers service disruption.
I initially noticed the problem when a few of my pages started returning 404 errors.</description></item><item><title>Apple's Cloud Computing Play</title><link>https://brianli.com/2020/12/apple-cloud-computing-play/</link><pubDate>Tue, 22 Dec 2020 09:00:00 +1500</pubDate><guid>https://brianli.com/2020/12/apple-cloud-computing-play/</guid><description>Amazon Web Services:
Starting today, Amazon Elastic Compute Cloud (EC2) Mac instances for macOS are generally available. Built on Apple Mac mini computers, EC2 Mac instances enable customers to run on-demand macOS workloads in the AWS cloud for the first time, extending the flexibility, scalability, and cost benefits of AWS to all Apple developers. With EC2 Mac instances, developers creating apps for iPhone, iPad, Mac, Apple Watch, Apple TV, and Safari can now provision and access macOS environments within minutes, dynamically scale capacity as needed, and benefit from AWS’s pay-as-you-go pricing.</description></item><item><title>The Impact of Apple Silicon Macs on Broadway</title><link>https://brianli.com/2020/12/the-impact-of-apple-silicon-macs-on-broadway/</link><pubDate>Mon, 21 Dec 2020 08:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/the-impact-of-apple-silicon-macs-on-broadway/</guid><description>In a previous life, I was an electronic music designer working on Broadway shows in New York City. Broadway shows look glamorous and expensive on the outside, but it&amp;rsquo;s often quite the opposite on the inside – at least for the music department. One of the toughest parts of my job as an electronic music designer was to find the best performance-to-cost ratio for computer rigs powering keyboards, guitars, playback tracks, and more.</description></item><item><title>Apple's M1 Macs Make Creativity Accessible</title><link>https://brianli.com/apple-m1-macs-make-creativity-accessible/</link><pubDate>Sun, 20 Dec 2020 15:30:00 +0900</pubDate><guid>https://brianli.com/apple-m1-macs-make-creativity-accessible/</guid><description>&lt;p>At this point, we all know Apple&amp;rsquo;s new M1-powered Macs are incredibly powerful. Dozens of YouTubes have talked about how fast the M1 machines are for video editing, and hundreds of &lt;a href="https://browser.geekbench.com/v5/cpu/search?utf8=%E2%9C%93&amp;amp;q=Apple+M1">Geekbench tests&lt;/a> have been performed. Despite all of the M1 coverage, I&amp;rsquo;ve yet to see someone talk about how Apple&amp;rsquo;s native silicon technology makes creativity more accessible to everyone. I think this is a very important point that will drive an increase in Mac adoption over the coming years. In this post, I&amp;rsquo;ll share my thoughts about why Apple&amp;rsquo;s new M1 Macs make creativity more accessible for everyone.&lt;/p></description></item><item><title>I Canceled My HEY Email Subscription</title><link>https://brianli.com/2020/12/i-canceled-my-hey-email-subscription/</link><pubDate>Sun, 20 Dec 2020 09:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/i-canceled-my-hey-email-subscription/</guid><description>I tried to like HEY, I really did.
The idea of Basecamp, a bootstrapped company, taking on email giants like Google and Microsoft was a compelling story to be apart of. However, the novelty of using and supporting HEY has slowly worn away over the past five months, and I made the decision to cancel my two HEY email addresses today.
I don&amp;rsquo;t have too much to say about it.</description></item><item><title>Google Analytics vs. Cloudflare Web Analytics Reporting</title><link>https://brianli.com/2020/12/google-analytics-vs-cloudflare-web-analytics-reporting/</link><pubDate>Sat, 19 Dec 2020 13:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/google-analytics-vs-cloudflare-web-analytics-reporting/</guid><description>As I mentioned previously, I&amp;rsquo;m currently testing Cloudflare&amp;rsquo;s free web analytics service alongside Google Analytics. After a few days of gathering data, I have some good news to report. Initially, I was expecting Cloudflare&amp;rsquo;s numbers to be substantially higher than Google Analytics&amp;rsquo; – this is a common issue I&amp;rsquo;ve seen on the Internet. Fortunately, my Google Analytics and Cloudflare Web Analytics numbers are very similar. This means I might be able to switch over to Cloudflare&amp;rsquo;s privacy-oriented service in the next few weeks.</description></item><item><title>Cloudflare Introduces "Cloudflare Pages"</title><link>https://brianli.com/2020/12/cloudflare-introduces-cloudflare-pages/</link><pubDate>Fri, 18 Dec 2020 15:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/cloudflare-introduces-cloudflare-pages/</guid><description>Cloudflare:
Across multiple cultures around the world, this time of year is a time of celebration and sharing of gifts with the people we care the most about. In that spirit, we thought we&amp;rsquo;d take this time to give back to the developer community that has been so supportive of Cloudflare for the last 10 years.
Today, we’re excited to announce Cloudflare Pages: a fast, secure and free way to build and host your JAMstack sites.</description></item><item><title>Bitcoin Breaks $20,000</title><link>https://brianli.com/2020/12/bitcoin-breaks-20000/</link><pubDate>Thu, 17 Dec 2020 08:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/bitcoin-breaks-20000/</guid><description>Bloomberg:
Bitcoin surpassed $21,000 for the first time, another milestone in what’s been an eye-popping rally for the controversial digital asset this year.
As the COVID-19 pandemic starts winding down with vaccines rolling out around the world, Bitcoin quietly break $20,000 – past its previous all-time high. Unlike 2017, there is no retail euphoria to speak of. Mainstream investors are preoccupied and unaware – there is a global pandemic going on after all.</description></item><item><title>Universal Audio Software is Now Compatible with macOS Big Sur</title><link>https://brianli.com/2020/12/universal-audio-software-is-now-compatible-with-macos-big-sur/</link><pubDate>Wed, 16 Dec 2020 09:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/universal-audio-software-is-now-compatible-with-macos-big-sur/</guid><description>Universal Audio:
The latest UAD software is compatible with macOS 10.12 Sierra, 10.13 High Sierra, 10.14 Mojave, 10.15 Catalina, and 11 Big Sur.
Awesome! It looks like Universal Audio software is now compatible with macOS Big Sur (no M1 support yet though). I&amp;rsquo;ve been holding off on upgrading to Big Sur because I rely on my Universal Audio Arrow for work everyday. I&amp;rsquo;m going to try upgrading to macOS Big Sur today.</description></item><item><title>50 Shades of Shinjuku Gyoen</title><link>https://brianli.com/2020/12/50-shades-of-shinjuku-gyoen/</link><pubDate>Tue, 15 Dec 2020 18:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/50-shades-of-shinjuku-gyoen/</guid><description>It&amp;rsquo;s strange how the trees in Shinjuku Gyoen still have leaves in mid-December, but the colors definitely make for a good photograph.</description></item><item><title>AirPods Max Don't Have an "Analog Mode"</title><link>https://brianli.com/airpods-max-analog-mode/</link><pubDate>Tue, 15 Dec 2020 14:00:00 +0900</pubDate><guid>https://brianli.com/airpods-max-analog-mode/</guid><description>&lt;p>Prior to ordering my pair of AirPods Max, I wrongfully assumed that they would have an &amp;ldquo;analog mode&amp;rdquo; where they&amp;rsquo;d behave like normal wired headphones and still work even if their batteries died. However, according to a few notable Apple influencers, this is not the case. AirPods Max do not have an analog mode – when they&amp;rsquo;re dead, they&amp;rsquo;re dead. At first, I felt a little conflicted after hearing this. After thinking about it a bit more, I think it makes sense for AirPods Max to be fully digital devices without an analog mode, so let me explain why.&lt;/p></description></item><item><title>Japanese Work Culture is Toxic</title><link>https://brianli.com/2020/12/japanese-work-culture-is-toxic/</link><pubDate>Tue, 15 Dec 2020 11:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/japanese-work-culture-is-toxic/</guid><description>I enjoy living in Japan for the most part, but the one thing I can&amp;rsquo;t stand is the toxic work culture. The COVID-19 pandemic has amplified the toxicity of Japanese corporate culture even further, and it&amp;rsquo;s disgusting. I recently learned that my wife&amp;rsquo;s friend was peer-pressured into attending a company retreat.
These sorts of gatherings are fine during normal times, but to pressure employees into attending a retreat during a global pandemic is just moronic.</description></item><item><title>My Static Site Publishing Workflow on Mobile</title><link>https://brianli.com/2020/12/my-static-site-publishing-workflow-on-mobile/</link><pubDate>Tue, 15 Dec 2020 08:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/my-static-site-publishing-workflow-on-mobile/</guid><description>Ever since I moved my blog from WordPress to Hugo, I&amp;rsquo;ve consistently worked on improving the experience of publishing new posts and editing old content. I write on three devices – MacBook Pro, iPad Pro, and iPhone. In terms of percentage breakdowns, I&amp;rsquo;d say 95% of my writing is done on my MacBook Pro and 5% on my iPad Pro. I only use my iPhone for small edits if I notice an issue or mistake when I&amp;rsquo;m not close to the computer.</description></item><item><title>Custom Domain Support in HEY for You</title><link>https://brianli.com/2020/12/custom-domain-support-in-hey-for-you/</link><pubDate>Mon, 14 Dec 2020 15:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/custom-domain-support-in-hey-for-you/</guid><description>u/Ne1nLives:
We were originally promised EOY 2020 for custom domains. In fact, the webpage for custom domains still says ”by the end of 2020”. It looks like that might not be happening?
An interesting thread about custom domain support for &amp;ldquo;HEY for You&amp;rdquo; (HEY&amp;rsquo;s personal email product). In a recent AMA, Basecamp CEO Jason Fried discussed the status of custom domain support for &amp;ldquo;HEY for You&amp;rdquo; and &amp;ldquo;HEY for Work&amp;rdquo;. One tidbit I found interesting was that only HEY for Work requires pointing MX records, while HEY for You doesn&amp;rsquo;t.</description></item><item><title>AirPods Max Now Delivering in March 2021</title><link>https://brianli.com/2020/12/airpods-max-now-delivering-in-march-2021/</link><pubDate>Mon, 14 Dec 2020 14:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/airpods-max-now-delivering-in-march-2021/</guid><description>Wow, it looks like there&amp;rsquo;s some real demand for AirPods Max. I just checked the delivery dates for the US market, and March 11-25 is the earliest estimate. In Japan, my pair of Sky Blue AirPods Max is scheduled for an early February delivery. I also placed orders at Yodobashi Camera and BIC Camera as backups.
Mid-March delivery estimates for AirPods Max.
Depending on how things go, I&amp;rsquo;ll either cancel the other two orders once one of them ships, or sell two of them to close friends at list price.</description></item><item><title>Chrome is Bad</title><link>https://brianli.com/2020/12/chrome-is-bad/</link><pubDate>Mon, 14 Dec 2020 08:00:00 +0900</pubDate><guid>https://brianli.com/2020/12/chrome-is-bad/</guid><description>Chrome is Bad:
Short story: Google Chrome installs something called Keystone on your computer, which nefariously hides itself from Activity Monitor and makes your whole computer slow even when Chrome isn&amp;rsquo;t running. Deleting Chrome and Keystone makes your computer way, way faster, all the time.
Long story: I noticed my brand new 16&amp;quot; MacBook Pro started acting sluggishly doing even trivial things like scrolling. Activity Monitor showed *nothing* from Google using the CPU, but WindowServer was taking ~80%, which is abnormally high (it should use &amp;lt;10% normally).</description></item><item><title>Well, I Sold My Leica Q2</title><link>https://brianli.com/2020/12/well-i-sold-my-leica-q2/</link><pubDate>Sun, 13 Dec 2020 00:00:00 +0000</pubDate><guid>https://brianli.com/2020/12/well-i-sold-my-leica-q2/</guid><description>Last week, I sold my Leica Q2, and I managed to do so for more than what I had originally paid for the camera (Leicas are priced crazy high in Japan). After selling the Q2 for $5,250, I went to Fujiya Camera in Nakano and purchased a used Fujifilm X-Pro3 and two lenses (23mm and 35mm) for $2,500. I don&amp;rsquo;t have too much to say, but here are a few reasons why I decided to part ways with the Q2.</description></item></channel></rss>