Instant Bookmark Access with Alfred

I use a lot of different web apps throughout my work day, and I can’t be bothered to navigate to them all the time.

Using Alfred to launch apps on my Mac is great but it’s too obvious a use case to be worth a blog post.

However, Alfred does integrate with major web browsers to give easy access to your bookmarks.

Alfred Web Bookmarks settings

(looks like Firefox isn’t supported out of the box but you can install an Alfred workflow to make these work).

From there, all you have to do is invoke Alfred and start typing the name of the bookmark and you’re off to the races.

I have a few different GitHub-specific shortcuts, such as one that takes me to my notifications page (I named that one ghn), one that takes me to the issues I’ve written (myissues), and one that shows me my current pull requests (myPRs). Alfred will automatically suggest the best match in real time so I usually just have to type the first few letters and then hit Enter.

Protip: If you work at a company that uses Okta single sign on, I recommend that you copy Okta links to each of your apps and make bookmarks of those. That way, if you’re not signed into the app, it’ll take you through the Okta sign-in process first:

copying URLs for Okta

Depending on how effectively use your bookmarks this might save you only a couple seconds, or it could save you several if you were pretty inefficient before. But over time, if you’re opening up bookmarks all the time, this adds up to decent time savings over time, and it keeps you in your flow state. Plus, the satisfaction of being able to open arbitrary bookmarks with just a couple keystrokes is incredibly satisfying.

Get a free Alfred License!

As I mentioned in a previous post, I’m giving away some Alfred Power Pack licenses because I love Alfred so darn much.

If you use macOS and you’re interested, just follow @harpaa01 on Twitter and DM me to let me know you’re interested. If you want to double your chances and you’re willing to shamelessly plug me on Twitter for it, mention me with a link to this post on Twitter. And if you have 100–999 followers, your chances of winning will be tripled. Yes, that’s right, tripled! This offer also valid on my account (but I don’t think has DMs so just mention me)

Not a Twitter user? No problem, subscribe with your email address and you’ll be entered. Using RSS? No problem, comment on this post (make sure you leave your email) and show me a screenshot proving you’re subscribed (I won’t approve the comment so your email won’t be public).

No purchase necessary, void where prohibited, bla bla bla.

If you are actually reading this far into the blog post, your chances are pretty high; I know there aren’t many of you; I see the analytics.

Your Mac is incomplete without Alfred

Alfred is easily one of my most essential and most-used pieces of software. It’s usually the second app I install on a new Mac when setting it up (right after Dropbox, which I only set up first because Alfred’s settings are synced via Dropbox).

And yet if you hear my excitement about it and ask “What is Alfred, anyway?”, well, I can’t quite answer!

Oh, okay, well what does it do?

See, that’s also kind of tricky because it doesn’t really do much of anything on its own. It does make it quicker for me to do other things.

The simplest use case is that it’s an app launcher. Wait, I can already launch apps on my Mac, you say. “Well, what I mean is that you can launch any app from Alfred just by starting to type its name on the keyboard.” But, doesn’t Spotlight already let you do that?


“But Alfred can do waayyyyyyy more.”

And even with that, it’s hard for me to describe what Alfred can do without just listing off a bunch of completely different but useful features and sounding super scatter-brained about it.

The truth is, Alfred is fundamentally a very open-ended tool that makes it quicker and easier for you to accomplish things that are typically kind of tedious or repetitive.

For Alfred to become useful to you, you have to develop the habit of using it, and you do have to find yourself on the lookout for new opportunities for using it and customizing it to really benefit from it. You don’t have to use every single feature it offers, but once you have a general idea of what you can do with Alfred, you will develop an eye for new things Alfred can help you do more quickly.

Alfred looks deceptively simple. When you invoke Alfred with its standard hotkey, you just see a text field like this:

screenshot of the Alfred window

Looks pretty unassuming, huh?

But once you begin to type things into Alfred you find that it can do all sorts of things you ask it to do.

Oh, so Alfred is like Siri, but you type it

“Well, sort of. But on the other hand, sigh. Siri and Alfred aren’t even in the same league.”

Instead of trying to just tell you everything about Alfred that would no doubt be a dry and boring read, I’m going to make a series of short posts about things you can use Alfred for.

But wait, there’s more!

And to sweeten the deal and spread the Alfred love, I’m going to give away some Alfred Power Pack licenses to some lucky readers (confession: you probably don’t have to be that lucky; I don’t have very many readers). I’ll post rules to enter in an upcoming Alfred post, so you should subscribe so as to not miss out.

I’ll be giving away at least two licenses, and possibly more depending on how many ideas for posts I have. Also, not to put on too much modesty here, but almost no one actually reads icanthascheezburger, so if you are reading this and you want to score an Alfred Power Pack license, your odds are… pretty good!



I’ve been getting into the habit of regularly doing 5 day fasting mimicking diets. I’ve decided to settle on doing one every few weeks, doing the diet for 5 days, followed by 16 days of my normal diet.

At $250 a pop, that started to sound pretty expensive (especially when you factor in how little food you get), so I decided to try making an FMD using foods I sourced myself.

I tried this a couple years ago and failed miserably, mostly because of a lack of measuring things correctly and counting out the calories, as well as the fact that I wasn’t paying close attention to the macronutrients.

So this time I decided to try it again and do it right. I decided to build a similar looking meal plan using soups, olives and crackers. As part of a promotion I had extra Fast bars from L-Nutra so I used those as well.

The Meal Plan

Here is what my Day 2 food selection looked like, and it’s pretty representative of the rest of the days:

On Day 1 I picked an Amy’s soup with higher caloric density, one of the “hearty” branded soups. Of the non-hearty soups, some of their soups are 120 calories a can, and some are 190, so keep an eye on that and adjust portions accordingly.


This DIY FMD worked beautifully! I felt the same types of effects I would feel on the L-Nutra FMD, both good and bad. My blood sugars look fantastic, blood pressure is lower, and I get a little restless at night due to extra energy. And I am 13 pounds lighter than I was five days ago.

The canned soups I am using are much tastier than the L-Nutra powdered soups, and I think their composition is healthier too; L-Nutra’s powdered soups use a lot of potato and rice starch (well, not a lot; the entire soup is usually 110 or so calories) whereas the canned soups are made of veggies and vegetable stock.

I made a fresh batch of gazpacho before my FMD as one of the daily meals and that was a great choice; the gazpacho is absolutely delicious and flavorful. The biggest downside is the lack of a precise calorie count that a prepackaged food item would offer me, which also gives me an excuse to have a little more of it after i’m done with a cup. It was actually really nice to have meals that were made of fresh vegetables (well, ones that I liquefied in my blender anyway).

I do plan to experiment with replacing the Fast Bars in a future FMD; they’re kind of expensive at about $4 a pop and I think I can get similar macronutrients from KIND bars, though I am worried they might not be quite as filling. I may also try making them myself; there is a recipe for making them that looks like it’ll create a good approximation. The Fast Bars that ship by themselves also include cacao nibs in the bars, which ended up being a really tasty addition, so I’d probably try to find those too.


The Moonlander Keyboard – First Impressions

When ZSA announced a new keyboard a couple of weeks ago and said it was in stock and ready to ship immediately, I managed to last about five minutes before clicking the Order button. ZSA, makers of the Ergodox EZ and more recently the Planck EZ, have stepped things up with a new keyboard that is an entirely new design (the Ergodox and Planck EZ are based on open-source keyboards).

I was interested in the Moonlander primarily as part of my initiative to experiment with keyboards that are Planck-like but have some extra thumb keys to make things a little easier for me. The Moonlander has an extra row on top, which makes it more similar to a Preonic with extra thumb keys.

But one thing in particular caught my eye about the Moonlander: the thumb clusters are on a hinge and adjustable. Being someone for whom the thumb keys often either are in my way or are a real stretch for the thumbs to reach (looking at you, Keyboardio Model 01), this seemed quite promising.

Fast forward to today (well, yesterday), and my friendly UPS driver drops off a surprisingly compact box on my doorstep. I open it up and find it has a beautiful unboxing experience, and the keyboard comes with a nice little carrying case.

Moonlander box with Planck EZ on top for scale

Moonlander keyboard in its handy carrying case

I immediately got to work adapting my own keyboard layout to this keyboard (That’s right! I’m giving it my own custom layout. This keyboard is fully programmable so its layout can be whatever you want it to be. More on that in a bit). Instead of using the layout it came with, I am instead making this layout a superset of my Planck layout, which is what I’ve been doing with all the ortholinear-layout keyboards I use. They’re all at least as big as a Planck, so they contain a Planck inside of them.

Onions have layers, keyboards have layers

When using a relatively compact keyboard like one of these, you will find the need get multiple keys’ worth of mileage out of each individual key on your keyboard, and one easy way to accomplish this is with layers. You can assign keys to let you switch between layers. They can either work like a standard modifier key where you’re on the other layer as long as you hold the other key down, you can have the key toggle the layer on/off, or you can even have a one-shot layer switch, where you tap the key quick, then the next key you tap is on that layer and the keyboard automatically switches back. You can even have a key that lets you hold to momentarily switch layers, but will toggle the layer on if you tap the key.

Your computer traditionally is none the wiser about these layers; all the computer knows is that the keyboard sends keypress events to it and it processes them, and the fact that there are layers is not really known to the computer. But ZSA have made a clever feature in their keyboard configurator called “Train” that allows you to actually explore your keyboard layout in real time, and it gives you visibility into the layer keys you’re pressing. Let’s have a peek at that now:

animation of training mode

This goes beyond a traditional typing tutor application because it also provides visibility into the layers you have on your keyboard and it indicates which is active and what keys are available on that layer. If you’re new to the whole concept of layers on keyboards this is a really valuable learning tool, and even an experienced curmudgeon like myself enjoys this as a testing/debugging tool.

And if your keyboard layout turns out to be unusable? No worries! You can just reprogram it and re-flash it.

Keyboard features and quality

tl;dr: It’s a quality keyboard. Nothing to worry about here.

The keyboard itself is surprisingly thin when unfolded. It’s just over half an inch thick. It can be used flat (which is how I’m using it currently), or you can tent it at whatever angle you like. Actually getting the tenting situated looks a little bit fiddly, but there’s a helpful YouTube video demonstrating how to do it.

The key caps it comes with come in a DSA profile, which means that the height and angle of the keys is the same on every row. If you don’t like this, there is a cottage industry of small makers selling their own third-party key caps for mechanical keyboards. You might have to buy some add-on kits to get enough caps for this keyboard, but for most key cap sets a base kit plus an ortho kit will probably be just fine.

The keyboard has RGB LEDs under each keyswitch, and the firmware for the keyboard comes with a variety of fun animations built right in. The LEDs’ brightness and hue can be adjusted on the keyboard, and they can be turned off entirely for those who hate the whimsy. And the keyboard isn’t just a visual delight; it also has a built-in PC-style speaker which can even be used to play little tunes if you’re into that kind of thing (and the speaker can also be turned off if you don’t want it making a chirp when you connect it to your computer).

The build quality is absolutely fantastic. The keyboard is made of plastic but it has a decent amount of heft to it (something I can’t say for ZSA’s Planck EZ which is so light it feels cheap).

As any good modern mechanical keyboard, it uses a USB-C connector on the back, and the switches aren’t soldered onto the board; they are instead hot-swappable, so if you change your mind and want a different type of feel to your keyboard you can just pop out the switches and put in new ones.

The keyboard comes with a 2 year warranty as well, and I can say that all of my interactions with their support team are spectacular. They helped me troubleshoot a pretty gnarly issue last year with my Planck that ended up being caused by the animation code using up too many processor cycles and causing my keyboard to not respond correctly in all cases.

The switches

I chose Kailh Box White switches for this keyboard. ZSA offers a decent selection of switches with their keyboards, but one thing I really wish they and other keyboard vendors would offer is an option to buy a keyboard with the key caps but no switches so I can pick exactly the ones I want later, because these wouldn’t have been my first choice.

My first choice would probably have been Kailh Box Jade or Box Navy switches, which are part of their “thick click” series. They’re… so luxurious to type on. But I digress.

The Box White switches are nice and clicky, and have a bit more of a “chonkier” sound than, say, Cherry MX Blue switches, often the default keyswitch people think about when they think about a loud and clicky keyboard.

The click from these switches is lower in pitch compared to an MX Blue.

Let’s hear these compared to a couple other of my favorite switches:

In person the differences between these sounds are quite different (in particular the Box Royal switches are much quieter in person than the recording would have you believe). And if you don’t really need or want a loud and clicky keyboard there are plenty of much quieter keyswitch choices available to you, although they often have a more dampened tactile feel to them as well when you type on them.

A… nonstandard configuration

I got used to the layout of this keyboard pretty quickly, but one thing kept driving me nuts: as a long time Planck user, that top row of keys felt superfluous and the keys were getting in the way.

I initially worked around this by making the top row of keys do the same thing as the second row of keys in most layers, but it still felt clumsy.

Then I realized: It’s a totally customizable keyboard with hot-swappable switches; I can do something about this!

So… I just took the top row of keys out entirely.

blinded by the light

It looks silly and I am getting blinded by these extra LEDs while I figure out how to make some plastic placeholders to go in place of these keyswitches, but it works pretty well!

Of course, if ZSA makes a compact Moonlander that drops that top row I’m totally dropping another few hundred bucks.

I also might explore trying to find a super low-profile MX-compatible key cap that can go on that top row so that I can retain those extra keys, but without them always necessarily being in my way. I might even look into 3D printing some miniature caps that go right over the stem but don’t cover the rest of the switch, leaving the keys accessible, but not in a way I’m ever going to mistake for a regular key. I might also put in a row of artisan key caps on that top row.

Verdict: should you buy one?

Yeah, if you want one! It’s a great choice of keyboard.

If you’re currently using a standard keyboard layout, you need to give yourself time to adjust to this one though, because it’s pretty radically different. It’s a split keyboard, for one thing. It also uses a columnar (aka ortholinear) layout, which is going to feel unnatural to someone who is used to staggered rows of keys on traditional keyboards. And if that’s not enough, you have to get accustomed to the fact that there’s not a space for all of your symbol keys in the normal spot on this keyboard.

You’re not going to be typing at full speed on this keyboard the day it arrives on your doorstep like I am (unless you happen to be adapting a very similar keymap from another similar keyboard like I did)

And I think ZSA is a great little keyboard shop and they’re very deserving of your business.

Verdict: will it unseat my Planck as primary keyboard?

It could.

One thing that I really love about the Planck is how accessible every single key feels on it. I necessarily can’t get that same experience with these bigger keyboards because, well, they have more keys and when you add more keys, you’re eventually going to end up with some that are a farther reach.

What I can say so far is that once I got my layout on here, I’ve felt completely at ease and at home on this keyboard. It makes for a great keyboard for my desk, and it has a very good chance of becoming my daily driver.

Of course, when you have the massive collection that I have (that keeps getting larger), you can end up with an awful lot of daily drivers!

Fasting Without Fasting

Fasting is a fantastic way to treat type 2 diabetes. With no food to digest, your insulin levels will drop, and you’ll burn through fat in your liver and the rest of your body. And if you fast for multiple days your body will see additional benefits, such as autophagy kicking in and recycling old cells.

But fasting can be challenging! The ritual of multiple daily meals is deeply embedded into our lives. And, of course, the actual hunger is is kind of annoying to deal with (though it isn’t as bad as you might imagine).

I’ve experimented with an alternative called a fasting mimicking diet (hereafter referred to as an FMD). L-Nutra sells these as a kit under the Prolon brand and that’s what I’ve been using so far. The biggest drawback is that it’s fairly expensive at $250 (and that’s doubly disappointing when you factor in what a low calorie diet this is supposed to be!).

This isn’t quackery, either (despite an endorsement from Gwyneth Paltrow). It’s backed by decades of research on longevity performed by Dr. Valter Longo and his team. He devised this FMD protocol for cancer patients about to undergo chemo to give them better results but his research has shown that periodically going through an FMD will improve longevity and other important health markers, and the positive effects of the FMD continue even after you resume your normal diet.

Is the FMD easy to do? I don’t want to blow smoke up your ass. It’s not a walk in the park, but I’ve also done a 5 day water fast before, and the FMD is way easier to do, and it’s easier to incorporate into your daily life.

The kit comes in a box roughly the size of a shoe box:

prolon kit box

(imagine the first three boxes are in there too)

When you look at it, you think “hey, this isn’t so bad.” Of course, then when you grab one of the boxes and remind yourself that this is all you’re eating today, it’s a little more daunting.

prolon day 2

The food consists of powdered soups, kale crackers, olives, and snack bars. They also include some supplements, some teas, and for days 2–5, a glycerin-based energy drink.

This is how you can expect your week to go:

  • Day 1: “Hey, this isn’t so bad! I get 2 of these nut and honey bars, two soups, a package of kale crackers, a chocolate bar type thing, and some olives. It’s actually pretty filling!
  • Day 2: “Hey, wait a minute, this is… less food than yesterday. What happened to my kale crackers and my second nut bar?
  • Day 3: “Okay, we got the kale crackers back but what the hell happened to my olives?”
  • Day 4: “Oooh, I’m almost done! Good thing, too; this is starting to get a little bit repetitive.”
  • Day 5: “Well I’ll be damned, I did it!”

I made slight modifications. I largely didn’t bother with the glycerin drink on days 2–5; It struck me as empty calories (it’s basically water sweetened with glycerin with flavor added). To compensate for the calories the drink would have had, I augmented some of the meals with celery and ate some extra olives (I’ve kind of developed a taste for them!). One afternoon I had some seaweed snacks, and on the final day I augmented the final dinner with some slices of heirloom tomato. I was careful to not go over my overall calorie intake, and I have no regrets about any of these modifications. Especially the heirloom tomato; is there anything better than a nice ripe heirloom tomato?

Being a diabetic, I was skeptical about how healthy this FMD would actually be given that almost half the calories are from carbs. And while that’s a high percentage, when you’re eating <800 calories a day, the carbs aren’t really enough to do much to you (even when some of the soups use rice or potato flour as their first ingredient, both foods considered to have a high GI). And after a couple of days, you see a precipitous drop in blood sugars.

The morning I started my most recent FMD my glucose at 9am was 139. The morning after day 5, it was 119. More importantly, my ranges of blood sugars changed dramatically. On Day 1 of the FMD, they ranged from 109–243. The day after I finished the FMD, they ranged from 98–177. Today so far (2 days after the FMD ended) they’re ranging from 106–133.

glucose ranges spanning several days showing a dramatic improvement in glucose after the FMD

That’s pretty damn good. And during the FMD I wasn’t even taking any diabetes medicine (I’m taking them again now, and that probably explains why my levels today look even lower)

When I first did an FMD I was incredibly skeptical of how well it would work compared to fasting; your caloric intake is almost half carbohydrates, after all, and the primary ingredient in some of these soups is potato flour and rice flour, which struck me as not particularly healthy. But keep in mind that while the percentage of carbs is high, the absolute carb count is very low. And lo and behold, my blood sugar numbers started looking quite good after a couple days into the FMD, and importantly, even after you’re done with the FMD, your insulin response is improved and blood sugar numbers stay quite good.

Also, I lost at least 5 pounds during the FMD (I say “at least” because I was afraid to weigh myself at the beginning, so my baseline is from a day between my last FMD and the morning after I finished this FMD).

My plan is to start doing an FMD every couple of weeks. For my next one I’m going to use foods I make myself, just to save money and offer myself a somewhat improved variety of foods. I feel super optimistic about this approach, too; each FMD is not a huge commitment, and I just have to spend the bulk of my willpower budget in short five-day increments.


The Dunning-Krueger Years

I’ll periodically get these flashbacks to moments in my career where I can now realize that I was way out of my element and didn’t know what the fuck I was doing. Having worked at an early stage startup I ended up in a role where I was managing other engineers and I was not yet experienced enough to realize just how unqualified I was.

On one of these occasions, one of the engineers on my team was struggling to get some work done in time for an upcoming deadline.

And since I was presumably this clever and brilliant manager I figured I’d be able to swoop in, work my magic, and get this engineer back on track. There was a company-wide outing coming up that week, and I told him “hey, let’s both stay back at the office and we’ll knock out these issues together.” For me, this was perfect because I considered the event to be a waste of time anyway and I also got to be the down to earth, hands-on manager who rolls up his sleeves and gets shit done.

So we stayed behind to hold down the fort while the rest of the company went to this fun outing. In practice, I was of little use to him because I wasn’t intimately familiar with the codebase he was working on, and despite him working primarily in JS, he was perfectly proficient in Ruby and didn’t really have any need for 26 year old me’s sage advice as an expert Rubyist of… probably a couple of years at the time.

So I mostly spent the afternoon dicking around on the internet, not really helping with much, and I guess he got to chip away at his issues for an extra afternoon, and an extra afternoon wasn’t make or break. In retrospect, this was mostly a dick move. Instead of singling this lone engineer out and keeping him from a bonding activity with peers, I should have been monitoring the project more closely so that I could have directed some help his way weeks prior, when it would have mattered. And I would have been a much more down to earth manager had I been a good sport and attended this outing.

This engineer’s life has since then taken a dramatic turn; he eventually left tech entirely and according to his Facebook profile he teaches yoga and practices healing through sound baths and meditation. And to be honest, having worked in tech now for a little while, that does sound like it would be a refreshing and fulfilling departure from the shenanigans people like past me subjected people to.

I’m glad that I’ve grown enough that I can look at my past self and facepalm so hard. I’m not proud of whatever collateral damage I’ve left in the path I took to get here, and I hope I still have enough growth ahead of me that I can look back at even this post and think “wow, I was insufferable.”

Loving America

Awhile back I was thinking a little bit about the idea of loving my country as I keep learning more about history and learning how pervasive some of America’s problems are.

I had a sort of lightbulb moment that might not be out of place in a Sorkin TV show: there are two different ways you can see America. You can see the America that was home to slavery for centuries, the America that only let rich white male landowners vote, the America that refused to allow gay people to marry. Or, you can see the America that was able to overcome each of these things.

But that isn’t enough anymore for me.

From an economic perspective, America’s been awfully good to me. I have been able to live a life where my success has been correlated with the effort I put in over the years. There are a lot of other countries where these same skills and work wouldn’t have gotten me nearly as far as it has here, and I don’t think there’s anywhere else I could have been born and had a greater outcome than here in the US. I think a lot of people feel that, and that gives them a lot of national pride.

But for every one of me in America, there are several people who don’t get that same level of opportunity. America doesn’t do enough for those people.

America is full of deep issues. There is serious inequality everywhere you look, and not just economic inequality. There is inequality in people’s access to democracy itself with long time systems like the electoral college and the fact that the Senate gives some voters substantially more representation than others. Hell, we have entire subgroups of our population that are terrorized by law enforcement.

America isn’t great just because a good sized chunk of people have been able to be relatively well off. America’s impressive accomplishments alone can’t keep making up for the serious ways we are falling short.

So I don’t think my love for America is unequivocal anymore. Rather, my love for America now extends as far as America is able to continue being that country that evolves to live up to the ideals of meaningfully offering liberty and justice for all.

I refuse to let anyone insist that anything less than that is the best I should be able to hope for, and you shouldn’t either.


WWDC 2020: form vs function

I have seen a handful of these takes about WWDC and while I appreciate what they’re saying, something rubs me the wrong way about it.

We all miss getting together with friends and meeting people, but this overall “I get that the content is better, but networking!” sentiment some developers have shows that they value their own nostalgia and enjoyment of networking over better WWDC sessions and accessibility for the wider community.

WWDC’s primary purpose isn’t for you to make new friends. Its purpose is to help inform developers of new Apple technologies.

This year tens of thousands of developers got to have a much better WWDC with better, tighter content because of this new remote format. WWDC videos often contain the best information about new technologies and serve as a valuable reference for years. Often times the best way to learn about a particular technology is to go back and watch the WWDC session where it was first introduced, and for everything that was introduced this year, we have fantastic materials.

And although networking and seeing friends at WWDC in person is fun, attending in person is a privilege. Only a small percentage of developers have the substantial funds (and depending on what country you’re from, the ability to safely travel into the US without hassle from customs), and are lucky enough to win the lottery for a ticket.

WWDC in person is great for the people who get to go. But every year as the developer community grows that becomes a smaller percentage of the community. If being in person with others at WWDC brings new friendships and opportunities to the attendees, then it just means that attending WWDC amplifies your privilege, and we need to acknowledge the inequality that leads to.

Ideally, I hope next year’s WWDC format doesn’t completely abandon the perks and better video production values we got in 2020. We would have a live keynote and SOTU for Monday, and prerecorded sessions would be released throughout the week. Instead of presenting live sessions, Apple engineers could instead give more labs and in-person assistance during WWDC week, Apple engineers could be offering sessions with individual developers remotely throughout the rest of the year. That would make for a better WWDC for everyone.

Or maybe Apple will want to stick with a WWDC where everything is pre-recorded and remote (that’s probably a lot less stressful for them!) and instead of there being a single Apple developer conference that’s massive and expensive, smaller, local conferences can sprout up around the world for people to enjoy each other’s company and talk shop. It wouldn’t be quite the same as what WWDC was before, but then again, Apple’s developer community is a lot bigger, diverse, and spread out than it was before, and it’s time for WWDC to adapt to that new world.


Live-ish glucose data on Apple Watch

Since I was diagnosed with diabetes a few years ago, one of my best coping mechanisms has been to lean into it by using it as an excuse to play around with gadgets to track it.

And lest you think that’s a waste of time, it’s really effective! There is a direct relationship between how well controlled my diabetes is and how much I’m tinkering around with this stuff.

One of the most powerful tools in my diabetes management arsenal is a system called the FreeStyle Libre. Instead of having to prick my finger every time I want to check my blood sugar, I instead will insert a sensor onto my arm every two weeks, and whenever I want to check my blood sugar I can scan the sensor by swiping my reader next to it. Or if I don’t have my reader with me, the sensor uses NFC so my iPhone can scan it too.

When I scan the sensor, I instantly get my current blood sugar level, plus 8 hours of past blood sugar data.

glucose data from LibreLink app

But the LibreLink app sucks. It isn’t a particularly good iOS citizen; instead, it feels like it’s just trying to mimic the reader’s own interface. And despite having this treasure trove of data, it won’t sync to HealthKit. You have to use a proprietary app called LibreView (although through a series of steps I can export the data and eventually get it into the Health app).

Basically, there are two extra features I wanted for my Libre sensor:

  • ability to see current glucose level by glancing at a complication on my watch
  • having glucose levels automatically synced to the Health app


Because the Libre sensor is NFC based, I would need something extra if I wanted to actually push data from the sensor to my iPhone/Watch.

And there does exist such a device called the MiaoMiao. It piggybacks on top of your Libre sensor and connects to your phone via Bluetooth, scanning the sensor every five minutes via NFC and pushing the data over to your phone.

There are multiple apps that work with MiaoMiao, and on iOS you can use either Spike or Tomato. After unsuccessfully trying to get the Spike app set up and realizing it was kind of a lousy iOS app, I opted to try Tomato, which is at least in the App Store.

The Tomato app works, but it is kind of a low-quality Chinese made app with the trappings you might expect from such an app–poor translations, a UI that lacks care, mandatory login with your Google, Facebook or WeChat account (Sign in with Apple was strangely absent despite supposedly being mandatory via App Store policy) and Watch complications that either truncate your data, or make really poor use of space.

apple watch face with blood glucose complications

However, the app does sync with HealthKit, if you have a premium subscription (interestingly, it doesn’t use Apple’s in-app purchase mechanism either; they prompt you for PayPal. I have no idea how Apple approved that as that is a blatant violation of App Store policy and usually the kind of thing Apple watches like a hawk).

So instead of using Tomato’s own watch complication, I am instead using HealthFace to set up a complication for my watch that displays the most recent blood glucose value.

This works beautifully!

apple watch face with HealthFace app complication

Ideally I’d like the HealthFace app to be able to display a chart of the last few hours of values so I have some sense of my glucose trend, but now that I have the watch complication I am watching its value often enough that I have a mental idea of how it looks anyway.


Some random facts that I wondered that aren’t answered elsewhere:

  • If you’re in the US it will take forever for the MiaoMiao to ship from China. I ordered it in February and it didn’t finally arrive until late June, although they lost the first one and had to ship me a second one.
  • If your MiaoMiao arrives and your sensor is already activated, the MiaoMiao can still connect to it. You don’t have to wait for a fresh sensor.
  • You can still pair your Libre sensor with both the reader and your phone while still using the MiaoMiao
  • The MiaoMiao sensor’s stickers aren’t that great at staying attached. I had to use some medical tape to tape the sensor down to my arm, but since then it’s stayed put.

Parting thoughts

As appreciative as I am that all these parts can work together like Lego pieces to give me a working solution, I’m still a little frustrated that Abbott doesn’t provide a decent end-to-end solution.

In Europe there is a new version of FreeStyle Libre with sensors that are Bluetooth-enabled, but the sensor only uses Bluetooth to alert you of highs or lows, and doesn’t push the actual glucose data to your reader, so that’s still a dead end.

But at some level this neglect is a blessing. Abbott’s not offering anything like a full SDK or anything for its sensors, but they’re straightforward enough to reverse engineer that we can at least cobble together our own solutions.


A new WWDC

Speaking as someone who’s never attended a WWDC in person, today’s sessions felt like an overall improvement over an in-person event. Presentations felt tighter and more polished overall. It was probably a little less nerve-wracking for the speakers to have everything recorded ahead of time, even if they miss out on some of the live audience feedback and applause.

I realize that for the people who have attended WWDC in person this is for sure a downgrade for a lot of reasons, but for the tens of thousands more developers who get to experience the conference this time as first class citizens, this is an overall upgrade.

WWDCs for the past… decade or so have felt stagnant in their format that dates back to Steve Jobs. This year’s WWDC feels like Apple is finally breaking free of that legacy and trying something new that is true to the reality of Apple’s scale today. This year’s WWDC format also feels more true to the nature of working as a developer, something Apple hinted to in the outro video for the Platforms State of the Union, showing developers working in a variety of settings, sometimes late at night, sometimes with children around. By embracing a distributed and more asynchronous conference format, you are making WWDC feel like it’s for everyone, not just a privileged relative few who can make the journey.

Apple didn’t want to do this year’s WWDC like this; they were forced to do the event like this because of COVID-19, and I’m sure they’re eager to do live events again when it’s safe. And that’s great! I can’t imagine it gets much better than working hard on something great for people and hearing that thunderous applause when it’s introduced on stage. But the community has changed, and the defaults should change too.