Archiving Hell Gate's FYIs

Hell Gate is my favorite New York City-focused news outlet. The coverage is good and the writing tends to be exceptional.

When they redesigned their website in July last year, they added a new "FYI" section, which is usually one to two sentences with a link to a story about some current event. As I write this, the current FYI is:

New pope. Way too quick. Suspicious.

Maybe not the best example. Before that, it was:

In Randy Mastro's New York City, there will be no Pride concerts at Central Park if you support Palestine.

They usually update it every 3-4 days, though during major news events it might be more frequent.

Unfortunately it's not well advertised; on mobile, it's buried in a menu that you need to open before you even learn it exists. Plus they don't always post them on their social media and it's not in their newsletters.

So I've taken it upon myself to create an archive of them and provide an RSS feed. If you visit https://legoktm.com/hellgatenyc-fyi/, you'll see a (hopefully) complete archive of all their FYIs, using a layout and theme that tries to look like Hell Gate's website. It was a fun quick trip through the past year of NYC.

I also added a people filter, so you can just see entries that mention Mayor Eric Adams, disgraced former Governor Andrew Cuomo, and current governor Kathy Hochul. In a surprising-but-not-really-that-surprising twist, the former governor, who is also the leading mayoral candidate, has more entries than the current one.

How I built it#

I started by scraping the Wayback Machine for all the old entries.

Getting the "FYI" out of the HTML was trivial, the script looked for the node that matched the CSS selector .fyi-section p. If the inner HTML was different than what was previously found, it was saved as a new entry. (As a weird contradiction, Hell Gate's website adds both ?ref=hellgatenyc.com to any URL, and sets rel="noreferrer" 🙃.)

The Wayback Machine has some pretty aggressive rate limits, which was annoying for a bit, until I realized I could plug in urllib3's Retry utility and have it, slowly, retry everything until it succeeded. Some days the Wayback Machine had archived Hell Gate's homepage like every 10 minutes so I ended up adding an optimization to skip entries that were within 3 hours of one I already checked (hopefully it didn't miss anything).

Now that I had collected ~75 entries in a JSON database, I wrote a small Rust program to identify new entries and export a RSS feed on a 3-hour timer.

When I started manually reviewing all the entries, I realized that some of them were just typos or other cosmetic changes. For example, back in August 2024:

- To truly understand Bryant Park, y<a href="https://hellgatenyc.com/bryant-park-frog-carousel-flaubert-mystery/">ou must wrestle with its large frog</a>
+ To truly understand Bryant Park, <a href="https://hellgatenyc.com/bryant-park-frog-carousel-flaubert-mystery/">you must wrestle with its large frog</a>

The "y" didn't get linked, and within a few hours they fixed it.

I applied two checks to detect these type of typo entries. First, seeing if the plain text version is the same, to detect links changing or issues like the one above. Then I added in a check for the Levenshtein distance to detect other cases of minor changes.

Even with those two checks, it's not perfect. Sometimes the edits are more substantial, like "George Santos has been sentenced to more than seven years...". The additional "more than" is more than a small typo fix, but still just a correction.

But then there are FYIs like "What are you doing on December 5TONIGHT? ..." Only two words being changed, but it feels like both merit independent entries. The ideal solution would be manual curation, but I don't think I can commit to that, so the current implementation is a reasonable compromise for now.

The last part of this project was creating a HTML browser for all of these, which would allow linking to old FYIs. I tried pretty hard to mimic the styling of the Hell Gate website, which was fun.

It's weird what you learn when you dig very deeply into a website's CSS. On the Hell Gate website, if you hover over an author link, after 2 seconds it turns purple. I never noticed!

Nearly everything draws from elements on the Hell Gate website, except I wasn't able to replicate the font used in the headlines because it's not freely licensed. They use Futura Passata; I looked for free equivalents to Futura and ended up with "League Spartan", which is not really close, but in the ballpark at least. The body text is correctly "Outfit".

I'm exceptionally pleased with how the people filter turned out. In the database, I wrote some code to tag entries based on who was mentioned. "Adams" maps to Eric Adams, unless it's Adrienne Adams (no relation); "Cuomo" maps to Andrew Cuomo unless it's Chris Cuomo (yes relation).

This was especially fun to implement since Rust's primary regex crate doesn't support negative lookaheads.

On the HTML side, it's a radio input element, so only one filter can be selected at a time. The actual filtering is implemented in pure CSS:

body:has(#filter-adams:checked) .entry:not(.person-Adams) {
    display: none;
}
body:has(#filter-cuomo:checked) .entry:not(.person-Cuomo) {
    display: none;
}
body:has(#filter-hochul:checked) .entry:not(.person-Hochul) {
    display: none;
}

The only issue I ran into is that Firefox helpfully remembers the radio button state you last used, which isn't what I wanted here. I ended up adding a few lines of JavaScript to take care of it for now:

document.addEventListener("DOMContentLoaded", () => {
    document.querySelectorAll('input[type="radio"]').forEach((elem) => {
        elem.checked = false;
    });
});

That's pretty much it, I've published the source code for those that want to peek.


Boba Quest: Surreal Creamery

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

Surreal Creamery is not your typical boba shop; on first glance it looks like an ice cream shop. But at least from my point of view, it's enough of a boba shop for Boba Quest 2025 🧋 — a significant amount of their menu is boba and they even have a "dollar boba club" membership.

Plus it's starting to feel like summer. What better way to kick off the warm months than by talking about boba ice cream?

I visited the West Village location at at 126 MacDougal St next to Washington Square Park, accessible via the convenient West Fourth Street station, with A, C, E, B, D, F, and M service. A bit farther is the recently renamed Christopher Street–Stonewall station with 1 train service.

Just like normal boba, you can mix and match ice cream with tea and toppings, but I ordered one of Surreal Creamery's "signature floateas": earl grey ice cream with earl grey tea with boba.

The main difficulty with boba in ice cream is that it gets cold (duh). This ends up getting in the way of the texture of the boba, because it tends to stiffen after like 10 minutes or so, which definitely hinders the experience.

With that in mind, here's my rating:

  • Boba: 2/4 all things considered, I thought the boba was decent. It wasn't really sweetened, which was probably the right call given how sweet the ice cream was. And it did stiffen as I was finishing it up, but that's unavoidable.
  • Tea & ice cream: 4/4 if I scored the two separately, I doubt either would get full marks. But together they're fantastic; the ice cream melted nicely into the tea to give more of a milkshake vibe.
  • Bonus: 1/1 it's ice cream and boba, that's already plenty special.

Total: 7/10 A solid option for a hot summer day. Also, it's not super obvious in the picture, but these are huge and probably best shared with someone else.

P.S. they have a "monster cookie" ice cream flavor, which is just vanilla, except for the fact that it's very blue:


Boba Quest: I'Milky, Easter edition

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

In my first-ever Boba Quest review, I looked at I'Milky, my current go-to place in Long Island City (it got a 7/10). I concluded the review by stating:

Assuming they do a similar Easter promotion as last year, I'll review them again in April.

Unfortunately, they did not do the same Easter promotion this year :( Here's the Easter eggs we got last year (and some burritos):

There were three different special drinks, each with their own egg color. Also it's important to note that these were not just normal Easter eggs, they were magic eggs!

Picture courtesy of my sister.

There was artificial scarcity too; only 20 eggs would be sold per day, so you had to show up early if you wanted to get a specific color. The eggs were a relatively hard plastic and make for nice containers in general. From what I remember, the tea was pretty good too, especially the mango panna cotta.

2025 Easter edition#

I don't know why I'Milky didn't do the magic Easter eggs again this year, but they have a different promotion going on right now: a coconut water series. They have three special drinks: a yuzu lychee splash, coco matcha dream, and coconut espresso rush.

I love lychees, so I had to go for the yuzu lychee splash, with boba. I asked for 100% sugar, but he said it would be way too sweet and suggested I just do 30% — so I did. Note that they only offer the specialty drinks in medium and not large.

Two of my favorite things: trains and boba.
  • Boba: 2/4 the boba and lychee bits were great, but the rest of the topping wasn't. The drink also contained yuzu rinds, which kind of ruined the whole experience because they were such a different texture. I kind of appreciated the flavor, but it was just hard to eat and didn't go well in the boba straw.
  • Tea: 4/4 for a coconut milk promotion, I could taste absolutely zero coconut flavor. It tasted like 90% yuzu flavor, and 10% lychee, and honestly, I much prefer that.
  • Bonus: 0/1 I'm still a bit disappointed they didn't have the magic eggs this year, that would've been bonus worthy.

Total: 6/10. It was promising, but really fell apart because of the yuzu rinds just messing up the texture and feel of the drink. I don't know if they'll be able to accomodate, but next time I'll ask for the same drink, just without the rinds.

And in case you're interested, I'm told that this promotion will last until mid-May.


Boba Quest: Shiny Tea

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

As I wrote about last week, one of my favorite boba shops, Shiny Tea, is closing soon (now extended to May 17th). Knowing that time was running out to fill up my privacy-preserving stamp card, I brought two friends with me to review it: Emmie and Wen.

We headed over to the Upper West Side; it's located at 2667 Broadway Ave. Getting there via the subway is easy, you can either take the 1 train to 103rd Street or if you don't mind walking a few minutes, the 96th Street station has 2 and 3 service as well.

Left to right: mango green tea, taro milk tea, classic milk tea, jasmine green milk tea.

I ordered my usual jasmine green milk tea with boba, 100% sugar and less ice:

  • Boba: 3/4 the boba was solid, with good flavor and texture. (I previously would have called it perfect, but I've had better)
  • Tea: 4/4 exactly what I want out of a jasmine green milk tea. Nothing more to say on that.
  • Bonus: 1/1 Shiny Tea doesn't really have any ambiance, you can barely stand inside of it. But it makes up for it in great customer service and its privacy-preserving stamp card.

Total: 8/10.

Emmie was truly dedicated to the cause of helping me fill out the stamp card and ordered two drinks. (But also she said she felt like having two drinks.) Both were worth consuming in her words — she didn't throw them out unfinished or regret it — but found them a bit disappointing.

The first one she had was a taro milk tea, regular sweetness, no ice, with boba:

  • Boba: 3/4 the boba was fine, enjoyable, tasty, but not spectacular.
  • Tea: 2/4 maybe I'm too picky when it comes to taro, but I didn't enjoy it that much. I think there was too much milk and something about the taro wasn't to my liking.

The second drink was a mango green tea with lychee jelly:

  • Jelly: 3/4 standard enjoyable jelly in tea. Nothing special.
  • Tea: 1/4 - what I really wanted when ordering this was something more akin to fruit juice, but I didn't see mango drinks on the menu that were closer to what I was thinking of. I wasn't a big fan of the tea flavor, but I think it's primarily a personal preference.

Emmie did not award a bonus point, agreeing with Wen (keep reading) that it was small and cramped. Fair enough.

Totals: 5/10 and 4/10.

Wen ordered a classic milk tea with 30% sweetness and less ice. Notably he did not get boba nor any other topping, despite this being a boba review series. SMH

  • Boba: n/a
  • Tea: 3/4 I wasn't blown away by the tea flavor but it was decent, and it was also a good level of sweetness.
  • Bonus: 0/1 the shop was tiny, so we had to wait on the sidewalk for our drinks. It also got cramped quickly with multiple customers.

Congrats to Wen for managing to break my meticulously devised rating system, but I think we can add it up to 3 out of 5, or a total of 6/10.

It is a bit disappointing when my friends didn't enjoy one of my favorite places as much as I did, but that's one of the fun things about boba, everyone likes it in their own particular way. And yes, even if you don't like the actual tapioca balls, we can still be friends.


Shiny Tea is closing

I have sad news to share: Shiny Tea on the Upper West Side (UWS) is closing at the end of this month on May 17th. When I used to live on the UWS, it was my go-to boba shop, and I was one of their regulars. Within about 2-3 months of me moving into the area, the person who took my order started simply asking me, "You want your usual?"

I had a Friday evening routine of walking through Riverside Park, passing General Grant's Tomb, picking up Chinese food near Columbia and then finally grabbing my jasmine green milk tea with boba from Shiny Tea on my way home.

This is not a review, I'll do that next week. I just wanted to spread the word so people can visit it themselves before it closes. It's located on Broadway, between 101st and 102nd streets, near the 1 train's 103rd Street stop. If you don't mind walking a few minutes, the 96th Street station has 2 and 3 service as well.

Be careful, Shiny Tea is really easy to miss, it's basically the width of a closet:

It's the smallest boba shop I've ever seen, there's not even enough room for multiple people to wait in line to order drinks!

I rarely go there now that I live in Queens, but last week I had an appointment on the UWS, so I stopped by. Even though I moved out of the neighborhood basically a year ago, he still recognized me and commented that it had been a while since he'd seen me.

After a bit of catchup, he broke the bad news: the owner of Shiny Tea was not interested in renewing the lease, so it would be closing. It was a gut punch for me, so despite getting my regular order, I didn't really feel like doing a formal review.

I highly recommend stopping by in the next week if you're in the area, it will be worth it!


Boba Quest: Erye Tea Shop

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

Unfortunately I've been sick for the past two weeks and haven't been able to go around to try new boba places, which honestly made being sick even worse. But I'm better now, and ready to catch up on all the boba I missed!

Last week I tried Erye Tea Shop in Long Island City, Queens, located near the Court Square–23rd Street station, which provides 7, E, M and G service. In Chinese, 二葉 (pronounced er-ye), means "two leaves", which is also what their logo looks like.

In the beginning of March, regular readers will remember that I visited a boba shop located inside a laundromat. In a similar vein, Erye shares its location with a hair salon:

It's not really the most pleasant place to sit and sip tea since hair salons are relatively loud places with blow dryers and other things. I ended up walking down to the nearby Gantry Plaza State Park and had my boba at the waterfront.

Speaking of which, let's get to the boba! I ordered a roasted oolong milk tea with boba, 70% sugar and light ice.

  • Boba: 4/4 it's been a while since I've had honey boba that tasted this good. It struck a nice balance between being able to taste the honey flavor, but it didn't overpower the tea.
  • Tea: 2/4 I didn't really enjoy the tea; I think some of the blame is on me for ordering oolong, which I'm not as big of a fan of, so I'm giving them a 2 instead of a 1.
  • Bonus: 0/1 mixing a boba shop and a hair salon is really not super appealing

Total: 6/10. I don't see myself coming back here unfortunately, Long Island City is pretty boba-rich and has other places that I rated more highly.