Boba Quest: Bobavise

As part of Boba Quest 2025 đź§‹, I'm trying and reviewing a new boba shop each week.

It's the beginning of a new month, so it's a good opportunity to visit a genuinely new boba shop.

This week we visited Bobavise in Crown Heights, Brooklyn, which just opened in February. At 893 Nostrand Ave., it's easily reachable via the 2, 3, and 5 trains.

The location is a bit unusual though: it's located right inside of a laundromat.

Exterior of a laundromat, through the doors/glass you can see a the counter of a boba shop on the right.
Not pictured: the Gong Cha (a boba shop chain) that's literally across the street.

I've never seen anything like this before, it is by far the smallest boba shop I've ever visited. I'm not sure "shop" is even the right term, it's more like a counter.

They currently have a buy-one-get-one free deal, so I went with a friend and O.G. Boba Quest reader, Emmie.

Two boba drinks, with a blurred out menu in the background.
Classic milk tea with boba (left) and honeydew milk tea with boba (right).

I ordered a classic milk tea with boba, regular sugar and ice. My review:

  • Boba: 2/4 the boba was just adequate, it was neither good nor bad. It could've benefited from more flavor and slightly less chewiness.
  • Tea: 2/4 honestly, same feeling about the tea. For something that was supposed to be 100% sweetness, it was pretty...not sweet.
  • Bonus: 0/1 the laundromat location is cool but it really doesn't lend itself to a nice ambiance. The only seating was a small bench, and that seemed like it really was for people waiting for their laundry.

Total: 4/10.

Emmie got a honeydew milk tea with boba, also regular sugar and ice. She said that it's difficult to find places with good honeydew (and taro) flavors, so she's always on the lookout. Her review:

  • Boba: 3/4 the boba was pretty good. Not groundbreaking, but it was solid. It had a good texture, wasn't too hard, and it complemented the drink well. I'm not sure I'm good at gauging boba sweetness, but nothing seemed particularly wrong with it.
  • Tea: 2/4 the flavor wasn't amazing, it was kind of just... okay. I talked about it with Kunal, but I wasn't quite able to put my finger on what the issue was. Maybe slightly more sugar could've brought the flavor out? But something about the flavor overall just felt inadequate.
  • Bonus: 0/1

Total: 5/10. It wasn't horrible. Emmie said she's had some honeydew or taro which was clearly flavor powder or juice in water, and even if their other flavors were good, the quality of those two would kind of turn her off to the whole store.

I, Kunal, do feel bad giving such a bad review to a new place, because starting a new boba shop is no easy task and I'd like to support them. My current thinking is that Bobavise is a new place and it will take some time to get better (the drink lids said, "Good things take time"). I look forward to trying their hopefully improved boba again later in the year.


Technical details for SecureDrop's Noble migration

Originally posted on securedrop.org

Since its first version, SecureDrop has run on the Ubuntu Server operating system. Ubuntu provides security fixes and updates for each long-term support release for five years; SecureDrop currently uses Ubuntu 20.04 “Focal.” As of May 2025, that version will no longer be supported, so all servers must migrate to Ubuntu 24.04 “Noble,” which will be supported until May 2029.

Historically this upgrade has involved taking a backup of your SecureDrop, reinstalling the servers using the newer Ubuntu version, reinstalling SecureDrop itself, and then restoring the backup. From a development perspective, this was reliable, as it reused the same robust logic as with routine OS upgrades.

However, this put the burden on SecureDrop administrators to go through a manual process. For this round of upgrades, we wanted to see if we could spare administrators the extra work and automate the upgrade process.

Read the full post on the SecureDrop blog.


Subscribing to independent media

I broadly support economic boycotts when companies do things we don't like, and participate in plenty of them myself. And I've seen enough people cancelling their subscriptions to The Washington Post and the Los Angeles Times after their billionaires owners interferred at the papers.

But in media specifically, cancelling your subscription just exacerbates the funding problem journalists face. If individual subscribers walk away, publications are even more dependent upon the good will of billionaires.

The solution to this is easy though: just invest whatever you were previously spending on WaPo, LA Times, etc. into independent media that isn't billionaire-controlled. If you really want to stick it to them, double or triple your investment. And yes, supporting independent media really is an investment, not just another subscription.

We need more outlets that are accountable to the communities they cover and serve instead of giant conglomerates and corporate boards. More local papers and less news deserts.

I try to put my money where my mouth is, so here's an alphabetic, non-exhaustive list of the various publications I financially support:

You are of course welcome to support all of the same publications as me, but I also believe we need a diverse set of independent media organizations and not just a few big ones; so I'd encourage backing other outlets that I haven't listed here too.


Boba Quest: Breaktime Tea

As part of Boba Quest 2025 đź§‹, I'm trying and reviewing a new boba shop each week.

I'm on vacation this week in San José, California, so I'm taking a break from Boba Quest — just kidding, of course I wanted to review another boba shop.

Back in October 2019 I was the executive editor of the Spartan Daily, San José State's student newspaper, when we published our "Boba Bloom" issue. It discussed the financial and health impacts of boba, profiled an alumnus who started their own shop, and most importantly, reviewed and ranked multiple boba shops around campus.

The winner? Breaktime Tea, at 110 East San Fernando St. It's about a block away from the VTA light rail Paseo de San Antonio station, which is accessible using the Blue and Green lines.

To this day, Breaktime still has that ranking prominently displayed for students to see that yes, they are (or were) the best.

A printed newspaper with the headline TEA TASTE TEST and boba shop menu screens in the background
Aside from a small tear, the newspaper print has held up. The digital version will be easier to read though.

Somehow it's already been five years since that issue was printed, but I wanted to see how things were today.

I asked for what I had always gotten: a lychee green milk tea with boba. They actually didn't have it on the menu, only advertising a lychee green tea (i.e. no milk) but when I talked to one of the employees, they said it was only recently changed, and they could still make the old drink for me.

Two boba drinks, one on the left is a green milk tea, and on the right is a orange-ish clear drink
Lychee green milk tea on the left, and a mango mojito with lychee jelly (not reviewed) on the right.
  • Boba: 4/4 the boba was perfect, it had the ideal consistency and right amount of sweetness. The tea also comes with small lychee fruit bits, which is just icing on top of the cake.
  • Tea: 4/4 lychee is one of my favorite fruits, but it's rare to find a place that offers it as a milk tea. Apparently Breaktime no longer fits in that category, but this was exactly what I wanted.
  • Bonus: 1/1 the ambiance and experience is really nice, I've spent enough time there drinking boba and chatting with friends.
  • Consistency: 1/1 I had intended for the consistency point to be awarded after a shop gets a 9/10 score, but given that I've been drinking here for 5+ years, I'm going to make an exception. I was genuinely stunned that it tasted basically the exact same from what I remember when I was a college student.

Total: 10/10. Breaktime earns our first 10/10 score! I'm not surprised, my experience with them as a student was always top-notch and I'm really glad to see it continue.

I'll be back in New York City next week, and am planning to kick-off March with a review from within the five boroughs.

P.S. I'm working on a better website to showcase these reviews, if you want a sneak preview. I still need to improve some things like the mobile view and no-JavaScript fallbacks, but any feedback would be welcome.


Boba Quest: Boba Baar

As part of Boba Quest 2025 đź§‹, I'm trying and reviewing a new boba shop each week.

I want to start by shouting out PixDeVl, who after reading last week's review, visited Débutea and took much better photos than me.

This week's review is a bit different as it, unfortunately, is the first boba shop I didn't reach by public transit. We visited Boba Baar in Garden City on Long Island.

You technically can get there by taking the Long Island Rail Road to Mineola, then catching the n22 bus to the Roosevelt Field Mall, and then walking half a mile to Boba Baar. Or take LIRR to Carle Place and then walk 1.5 miles. Point is, it's pretty inconvenient to get to from the city.

But Boba Baar seemed promising at first, a literal thirst trap.

A car bumper mounted to the wall with a fake New York license plate that says THRSTRAP.
Basically the first thing you see when you walk in.

The shop itself had really nice ambiance; while we waited for our drinks, we got in a few rounds of Mortal Kombat II.

A classic video game arcade machine with Mortal Kombat II.

Boba Baar posted their top 10 drinks, and the first one listed was a cookies and cream milk tea. I was tempted to try it, but Kajol, my girlfriend, was more interested in trying the tiramisu milk tea, which people had, surprisingly, positively mentioned on the Google reviews.

Two boba drinks.

In the end, I ordered a more traditional thai milk tea with brown sugar. It was:

  • Boba: 1/4 the boba was overcooked and pretty flavorless.
  • Tea: 4/4 on the flip side, the tea was quite good, it tasted like a normal thai milk tea, but with a nice bit of brown sugar mixed in.
  • Bonus: 0/1 the ambiance was quite nice, but it's just too hard to reach without a car.

Total: 5/10. I was disappointed, they've clearly put a lot of thought into building a nice space for people on Long Island, but the boba was a let down.

Kajol ordered the tiramisu milk tea. Her review:

  • Boba: 2/4 the boba wasn’t consistent and was very chewy.
  • Tea: 2/4 it was good and sweet but it didn’t taste like tiramisu at all and I’m not really sure what it did taste like.
  • Bonus: 1/1 there were very unique flavor options along with dairy-free options. The place was also decorated really well and had plenty of seating for people to hang out or study.

Total: 5/10. Kajol further said she would return to try a different flavor, maybe something more classic that would allow for better comparison (like the brown sugar boba) but wouldn’t return for the tiramisu boba.

I, Kunal, tried the so-called "tiramisu milk tea" as well and have yet to figure out what it actually tasted like, but it definitely was not tiramisu.


Simplifying PDF imports on reMarkable

I've been using my reMarkable 2 a lot more recently, and have gotten started with actually hacking on it. It's a bit overdue, since the main reason I purchased it in the first place was that it is built on top of Linux and doesn't require any special jailbreaking/rooting.

I found Adrian Daerr's script to import PDFs/EPUBs into a reMarkable, which is surprisingly not a straightforward operation. You need to rename the file to use a UUID as its name, create corresponding .metadata and .content files, and then empty .cache, .highlights, and .thumbnails directories.

Daerr's bash script does all of this, except it runs on a different machine, and then scps the files over to the reMarkable. Modifying it to run on the reMarkable itself didn't seem too complicated, but I try to avoid writing shell scripts as much as possible, so I took the opportunity to port it to Rust.

I first asked Claude to port it to Rust, and, probably for the first time, I was disappointed by the result.

Specifically, it generated:

if args[1] == "-r" {
    restart_xochitl = !config.restart_xochitl_default;
    files_start_index =, 2;
}

I couldn't come up with a reason on why Claude would insert a comma after the equals sign (it's not really a hallucination I think?), but rust-analyzer flagged it as a syntax error right away.

I deleted most of that code anyways since I wanted to unconditionally restart, and also use camino instead. As an aside, std::path represents paths with OsString, which is incredibly inconvenient to use anywhere else, which'll expect normal UTF-8 Strings. camino only supports paths that are fully UTF-8 (aka String instead of OsString), which should be fine for most projects that don't need to support legacy files and encodings, like this one.

Next, I had to cross-build it for the reMarkable's ARM v7 CPU. I've done it before for Raspberry Pis, but since it's been a while, I wanted to try out the cross tool, which transparently builds in a container with the necessary toolchains. And if you set a little bit of metadata, it's as simple as cross build --release.

To make the newly imported file actually show up in the reMarkable file listing, you apparently have to restart the entire thing, which does work, but surely there's a better way to tell it to look for new files...

Finally, to actually make use of it, I set up rclone to automatically fetch a folder from my Nextcloud instance, and then run rm-import over it. And now I can drop a PDF in a dedicated Nextcloud folder, and it'll end up on my reMarkable!