AirPods Max Pro vs. AirPods Pro Max

A few days ago, I was contemplating the product name for the “next level up” from the AirPods Max – and I think there will be a higher-end model in the future because Apple will need a more accessible (not $549) over-the-ear headphone to saturate the market after the initial round of AirPods Max hype dies down.

The idea here is the current AirPods Max would get a price cut and become “the mainstream headphone”, and a more expensive model with the latest technologies would occupy the $549 (or higher) price point. The question is whether this new model would be named “AirPods Max Pro” or “AirPods Pro Max”. I’m leaning towards AirPods Pro Max, so let me explain why.

Continue Reading →

Cloudflare's New Free Web Analytics →


In September, we announced that we’re building a new, free Web Analytics product for the whole web. Today, I’m excited to announce that anyone can now sign up to use our new Web Analytics — even without changing your DNS settings. In other words, Cloudflare Web Analytics can now be deployed by adding an HTML snippet (in the same way many other popular web analytics tools are) making it easier than ever to use privacy-first tools to understand visitor behavior.

Cloudflare’s Web Analytics product was previously only available for Pro plans and above. Now it’s available for everyone, but there’s a small difference. The new free analytics service relies on a JavaScript snippet, while the paid service (which requires a paid Cloudflare plan) doesn’t.

As someone who’s obsessed with performance, I really enjoyed the paid service when I tested it out for a few weeks when it first came out. Not having to load additional JavaScript just for analytics was (and still is) something that’s very appealing to me. Unfortunately, I didn’t have a use case for a paid Cloudflare plan, and paying $29/month just for analytics was a waste of money.

As I mentioned in a post from earlier this month, I’ve been starting to look into replacing Google Analytics with a privacy-oriented analytics solution. I was taking a serious look at Fathom Analytics which clocks in at $12/month until I saw Cloudflare’s free analytics service pop up this week. I like the idea of supporting small businesses like Fathom Analytics, but I’m really trying hard to minimize costs for this site as much as possible.

I’ve already installed Cloudflare’s new service on this site. Cloudflare uses a single beacon.min.js file for analytics tracking, and it’s very lightweight at 4.28 KB. For reference, the Google Analytics tracking script weighs in at 73 KB, though I currently use Minimal Google Analytics Snippet, which reduces the JavaScript file to 1.5 KB. Anyway, my plan is to see how Cloudflare’s traffic stats compare to Google Analytics. If the numbers are comparable – say ±15% – I’ll probably get rid of Google Analytics and switch over to Cloudflare’s solution.

I’ll monitor for a few weeks, and provide an update. Thrilling stuff!

« Permalink »

Google Search Instant Indexing With Python

Google has an “Instant Indexing API” for submitting new URLs and page updates. Officially, it only supports pages with JobPosting and BroadcastEvent (when embedded in VideoObject) schema markup. However, based on my personal testing, it seems to work for normal pages as well.

For the past week, I’ve been using the Python script below to submit new posts to Google, and they all ranked much faster than usual. I’m not sure if this is safe to do because JobPosting and BroadcastEvent are the only two schema types that are officially supported. So, if you use this Python script to submit URLs and get penalized by Google, don’t blame me.

By the way, you’ll need to create a service account and generate a JSON key file before you can use this Python script.

from oauth2client.service_account import ServiceAccountCredentials
import httplib2
import urllib
import json

authentication_scopes = [ "" ]
publish_endpoint = ""
metadata_endpoint = ""

json_key_file = "/Users/brianli/Desktop/gsc-instant-index/key.json"
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_key_file, scopes=authentication_scopes)
http = credentials.authorize(httplib2.Http())

index_url = input("What URL would you like to index? ")

payload = {
  "url": index_url,
  "type": "URL_UPDATED"

response, content = http.request(publish_endpoint, method="POST", body=json.dumps(payload))

if response.status == 200:
	print(f'The submission was successful. Google reported a {response.status} response code.')
	print(f'The submission was not successful. Google reported a {response.status} response code, instead of 200.')

The script returns a 200 response code following a successful submission. If it gives you another response code (e.g. 3xx or 4xx), feel free to debug further by printing the content body of the HTTP response. Have fun!

MacWorld Thinks AirPods Max are "Ridiculously Overpriced" →

Michael Simon, MacWorld:

But at $549, it’s hard to look at the AirPods Pro Max as anything other than a missed opportunity. We knew they wouldn’t come cheap, but AirPods Max are hundreds more than their closest competitor and are arriving pretty late to the game bringing features we’ve seen and heard before. They feature the same Adaptive EQ, Active Noise Cancellation, Transparency mode, and spatial audio that’s available on the AirPods Pro, along with the H1 chip, the Apple Watch’s Digital Crown, and the iPad Air’s colors.

This is such a bad take on AirPods Max from MacWorld. In consumer electronics, competition is all about context. Thus, it’s important to specify exactly what the competitor is when saying, “AirPods Max are hundreds more than their closest competitor” – and this is exactly what Michael Simon does not do. Later on in the article, Simon mentions a few other models including the Bose Noise Canceling Headphones 700, Sony WH-1000XM3, and the Beats Studio 3. However, it’s not clear if these three models are, in fact, the “closest competitor[s]”.

Let’s say they are. I don’t agree that these three models are direct competitors to AirPods Max. Yes, they all allow you to listen to music, but that’s like saying a bicycle is competitive with a car because they both let you get from Point A to Point B. The truth is Apple’s AirPods line is so far ahead of and has more potential than the competition because the internal hardware is fully programmable. In the context of AirPods Max, the way the drivers are used can be tuned and upgraded over time with new features developed by a world-class computational audio team. This is something that a competitor to AirPods Max needs, and none of the aformentioned models have this.

One more thing, being “pretty late to the game” has been a core part of Apple’s strategy for the past two decades. Apple was late to the game with smartphones (iPhone), tablets (iPad), wearables (Apple Watch), custom silicon for Macs (Apple Silicon), and now – wireless over-the-ear headphones (AirPods Max).

Let’s see if history repeats itself.

Later on, Simon comments on the drivers in AirPods Max.

As far as the sound goes, the AirPods Max feature “a 40-mm Apple-designed dynamic driver that provides rich, deep bass, accurate mid-ranges, and crisp, clean high-frequency extension so every note can be heard.” That sounds nice and likely will sound nice, but a 40mm driver isn’t all that uncommon in high-fi headphones. For example, Sony’s high-rated WH-1000XM3 Wireless Noise-Canceling headphpnes feature 1.57-inch drivers, which convert to 39.878mm, while the Beats Studio 3 have a 50mm driver.

Saying that a 40mm driver “isn’t all that uncommon in high-fi headphones” completely misses the point of what Apple is as a company. Apple has never been about numbers and specifications, and that’s obvious when you consider they don’t even advertise CPU clock speeds on the new M1 Macs anymore.

Apple has always been about engineering to maximize the efficiency of hardware within strict design constraints. So, it doesn’t matter if Apple is using a 40mm driver “while the Beats Studio 3 have a 50mm driver” – this specification is completely irrelevant because what’s important is how Apple uses the drivers, and not how large the drivers are. Another example of this is how Apple approaches its iPhone cameras. Plenty of other phones and digital cameras have much larger sensors, but iPhone still manages to win thanks to Apple’s industry-leading integration of computational photography. The sensor in iPhone is akin to the drivers in AirPods Max. Size only matters to a certain extent. The engineering execution and hardware-software integration is much, much more important.

You’re also not getting an equalizer to let you tweak the bass and treble to your liking. The AirPods Max has the same Adaptive EQ as the AirPods Pro that “adjust the sound to the fit and seal of the ear cushions by measuring the sound signal delivered to a user and adjusting the low and mid-frequencies in real time” but true audiophiles who would spend $549 on a pair of headphones will want to customize the sound.

So, in order to be a “true audiophile”, you have to want to customize the sound of your headphones? That’s completely absurd! I consider myself an audiophile, and I have a large headphone collection that I should probably sell to pay off my student loans to prove it. Guess what? I’ve never thought about customizing the sound signature of my headphones.

With that said, there are certainly people out there who enjoying customizing their audio equipment, but to use the term “true audiophile” as a qualifier for wouldn’t buy AirPods Max is insane. I’m very excited to listen to AirPods Max, and I paid $549 to do so. If that makes me a fake audiophile, so be it.

This take on audiophiles also misses the “on-the-go” use case. I can’t tell you how long I’ve been looking for a headphone that offers really good sound quality with native iOS integration. Until AirPods Max, the closest product that fits this criteria is AirPods Pro – so that’s what I’ve been using. I’m certain that AirPods Max will sound even better than AirPods Pro, and I can’t wait to experience a bump in sound quality when I’m going about my day walking around Tokyo – this is how audiophiles behave in the real world.

When deciding what or who a product is for, it’s silly to paint yourself into a corner with statements that suggest audiophiles won’t buy AirPods Max because they want to customize the sound. Audiophiles, like everyone else, are complex human beings. They’re capable of more than just sitting around the house customizing the sound signature of their audio equipment. Audiophiles have day jobs, audiophiles ride the subway, and some audiophiles even prioritize convenience over absolute sound quality in certain situations. I know, what a shocker! Long story short, I do think that AirPods Max are a very tempting purchase for audiophiles because they offer an excellent level of sound quality plus the convenience of a native iOS-integrated product.

I don’t care how good they sound, they’re priced too high.

Sorry, but this makes no sense whatsoever.

« Permalink »

Apple Introduces AirPods Max →


Apple today announced AirPods Max, innovative wireless headphones that bring the magic of AirPods to an over-ear design with high-fidelity sound. AirPods Max combine a custom acoustic design, H1 chips, and advanced software to power computational audio for a breakthrough listening experience with Adaptive EQ, Active Noise Cancellation, Transparency mode, and spatial audio. AirPods Max come in five gorgeous colors, including space gray, silver, sky blue, green, and pink, and are available to order starting today, with availability beginning Tuesday, December 15.

It finally happened. Apple has entered the over-the-ear headphone market with an original non-Beats product, and they’re calling it AirPods Max. They come in five colors with a $549 price tag. As with nearly every single new Apple product over the years, the Internet’s initial reaction is, “What! That’s so expensive!”. Objectively, $549 is most definitely not pocket change, but I also don’t think it’s an unreasonable price point for AirPods Max for a few reasons.

  • AirPods Max are a first-generation product (wireless over-the-ear headphones). There will always be early adopters, especially when it comes to Apple products, and Apple knows this. So, why not price the product for those early adopters who will buy it no matter what?
  • Making statements like “I can buy X number of other headphones for the price of a pair of AirPods Max” is, quite frankly, a terrible take because it’s not a valid comparison. That’s sort of the same as saying, “I can buy 50 bicycles for the price of a BMW X3.” AirPods Max are not normal headphones. They are computational audio devices with “programmable drivers” that happen to resemble headphones as we know them.
  • Even if AirPods Max were just normal headphones, $549 is not astronomical. Bose has various models in the $250-380 range, and based on my personal experience, Bose is nowhere near Apple in terms of computational audio, software integration, and industrial design. In other words, if Bose can sell their 700-series noise-cancelling headphones for $380, AirPods Max (based on the quality and functionality standard set by AirPods Pro at $249) makes sense at $549.
  • If we’re talking about audiophile-level equipment, which I seriously think AirPods Max will be competitive against thanks to the advantages of computational audio, $549 is nothing. The popular Sennheiser HD800S headphones go for $1,500, and that’s not even “expensive” in the world of premium audio. Is it wrong to compare AirPods Max to traditional audiophile headphones? I don’t think so. It’s similar how people compare iPhone cameras that leverage computational photography with $5,000 high-end DSLR setups – because there is truly a comparison to be made.

Simply put, AirPods Max are definitely not cheap, but it’s also difficult to make the case that they’re expensive. I think they’re priced correctly as a first-generation premium product designed by Apple. I decided to order AirPods Max in Sky Blue, and I’m looking forward to comparing them with the rest of my headphone collection – Focal Utopia, Shure KSE1200, Sennheiser HD600, and more! I won’t be surprised if AirPods Max ends up providing a better listening experience.

Too bad I have to wait until February to find out!

« Permalink »

Cloudflare Extends It's Free Tier to Workers KV →


Today, we’re announcing a Free Tier for Workers KV that opens up global, low-latency data storage to every developer on the Workers platform. Additionally, to expand Workers KV’s use cases even further, we’re also raising the maximum value size from 10 MB to 25 MB. You can now write an application that serves larger static files directly or JSON blobs directly from KV.

Cloudflare announced this a few weeks ago, but I’m just getting to writing about it now. Workers KV is Cloudflare’s globally-distributed key-value storage service, and it’s the storage backbone that powers Workers Sites – Cloudflare’s static site hosting product, which happens to be what I use to host this site.

Workers Sites requires Workers KV because it uses the key-value storage service to store web pages (URL is the key, HTML is the value). Previously, Workers KV was only available on a $5/month (starting price) Workers Bundled plan, and there was no free tier. Now, $5/month doesn’t sound like much for a high-performance edge computing service, but Cloudflare plays in the same arena as Netlify and Vercel – two static hosting providers that both offer free tiers.

I don’t have extensive data to back this up, but I think Cloudflare’s lack of a free Workers tier that included its KV storage product made it difficult for people to experiment with it for hosting static sites and migrating off Netlify and Vercel. This was certainly the case for a few people I spoke with.

With this new and generous free tier in place, it’s now possible to host static sites via Cloudflare Workers Sites for free! There are, of course, a few Workers KV compute and storage limits in place (in addition to the standard Workers limits), but most static sites will rarely hit these limits.

  • 100,000 read operations per day.
  • 1,000 list, write, and delete operations per day.
  • 1 GB of storage on Workers KV.

The previous $5/month minimum for deploying a static site on Cloudflare’s super fast network kept many people from trying out Cloudflare Workers Sites. With that monthly minimum out of the way, I’m willing to bet we’ll see a lot more static sites migrate to Cloudflare over the coming months. With the increased performance and programmability compared to Netlify and Vercel, I bet some people (like me) will even choose to pay a very reasonable $5/month to host on Cloudflare over a free tier on another slower and less flexible provider.

« Permalink »

I Canceled My M1 MacBook Air Order

After many rounds of internal deliberation, I decided to cancel my order for the new M1 MacBook Air. I’ll admit it – I got caught up in the initial FOMO. I daydreamed about not being tethered to my charger (like I am with my 16" MacBook Pro) and how much life would be different if my computer didn’t turn into a space heater every time I watch a show on Netflix.

All of that sounded great, but reality got in the way.

The main issue was the lack of Big Sur and M1 support for my Universal Audio Arrow – the audio interface I use for podcasting, among other things. At this time, none of Universal Audio’s software works 100% on macOS Big Sur and M1 systems, and there is no clear indication of when support will be coming. That’s also the reason why I’m still stuck on Catalina on my current 16" MacBook Pro.

I engaged in a lot of mental gynmastics when I made the initial decision to order the M1 MacBook Pro. I convinced myself I could just use my old RME Babyface for podcasting for a while, and everything would be fine. Technically speaking, that’s totally a possibility, but switching back to the Babyface would inhibit my recording and editing workflow significantly because I depend so much on Universal Audio’s zero-latency effects (gate, EQ, compressor, and limiter) while recording. With the RME, I’d have to do all that stuff in post-production, which is not a good use of time – especially when considering the main purpose of buying the MacBook Air was to save time on various tasks in the first place.

So for the time being, I’ve decided to take the rational route and cancel my M1 MacBook Air order. Once Universal Audio updates their software for compatibility with macOS Big Sur and M1 chips, I’ll reevaluate the situation. I have a sneaking suspicion that MacBooks with “M1X” chips will be out by then. If that’s the case, I hope there will be a 14" MacBook Pro because that’s my dream computer. With that said, I’m still looking forward to testing out MainStage and Logic Pro on my wife’s MacBook Air, which is arriving sometime next week.

I Picked Up a Contax T2

I had some time to myself today, so I finally made my way over to Harajuku to visit FILMCAMERA TOKYO. One of my goals for 2021 is to get more familiar with shooting film, so I’ve been researching film cameras for the past few months. I wanted a compact camera to get started with shooting film, so I eventually settled on the, now infamous, Contax T2.

I purchased a Contax T2 film camera today.

My newest film camera – the Contax T2.

FILMCAMERA TOKYO always seems to have a bunch of them in stock. When I visited today, I counted at least ten of them – all in pretty good condition. The one I purchased included the original box and accessories. I can’t wait to start shooting with the Contax T2 this week, and I’ll be sure to share some updates (probably mostly failures for a while) along the way.