Getting a vanity phone number with 4 consecutive digits

I find that it’s pretty useful to have access to multiple phone numbers. Any time a site offers a discount if you give them their phone number, or when you want to be more anonymous online and a service needs a number, it’s nice to have a number that’s more than a burner but not … | Continue reading


@blog.jonlu.ca | 1 year ago

How the Nintendo Switch prevents downgrades by irreparably blowing its own fuses

Downgrade prevention has been a cat-and-mouse game between consumers and companies since the inception of remote updates. The Nintendo Switch adopts a worrisome-strategy of preventing firmware downgrades by permanently modifying your device every time it updates. While this isn’t … | Continue reading


@blog.jonlu.ca | 2 years ago

Writing a script to get any open table reservation

New York City has some of the best restaurants in the world, with some of the most competitive reservations to match. Some of the hottest restaurants are booked out months in advance, and sell out within minutes of opening their reservations. There are a few restaurants that I’ve … | Continue reading


@blog.jonlu.ca | 2 years ago

Building an OpenTable Bot

New York City has some of the best restaurants in the world, with some of the most competitive reservations to match. Some of the hottest restaurants are booked out months in advance, and sell out within minutes of opening their reservations. There are a few restaurants that I’ve … | Continue reading


@blog.jonlu.ca | 2 years ago

Writing fast async HTTP requests in Python

I do a lot of web scraping in my spare time, and have been chasing down different formats and code snippets to make a large amount of network requests locally, with controls for rate limiting and error handling. | Continue reading


@blog.jonlu.ca | 2 years ago

A modern server rendered Vite, React 17, and TypeScript 4.3 boilerplate

Introducing a barebones, slightly-opinionated boilerplate for working with a modern web stack written for 2021. This takes the additional jump of allowing you to run your own server, for applications that are more complex or need more flexibility than Netlify or Nextjs can provid … | Continue reading


@blog.jonlu.ca | 2 years ago

Redeeming crypto for being a FOSS developer

If you were an active FOSS developer in 2019, you were gifted ~4,246 HNS, which as of May 2021 is worth 0.0359087 BTC, or $2k USD. Handshake wanted to reward FOSS developers by gifting handshake tokens (HNS). You can redeem these pretty easily, and either use them to support open … | Continue reading


@blog.jonlu.ca | 2 years ago

Thoughts on User Growth

My day job is, officially, as a Growth Engineer working primarily on Unauth Product at Pinterest. It’s slightly different from my previous software engineering roles - typically, in other roles, I would be handed a spec sheet or design and had to implement it. Sometimes I’d desig … | Continue reading


@blog.jonlu.ca | 3 years ago

Fun VPN tricks due to Apple owning all of 17.X.X.X

I worked as a security engineer intern at Apple during the Summer of 2018, on the Threat Intelligence team. | Continue reading


@blog.jonlu.ca | 3 years ago

What is tax loss harvesting?

As a W2’d employee you don’t have a lot of strategies you can use to minimize your taxes at the end of the year. You can be making $1,000,000 a year, but if most or all of that income comes from a direct employer and shows up on your W2, your tax bill at the end of the year is ef … | Continue reading


@blog.jonlu.ca | 3 years ago

Zoh-no Zogo: Manufacturing pineapples (and cash) with Burp Suite

Zogo is a finanical education app that offers incentives to its users, through gift cards, for completing learning “modules”. These modules are fairly broad, and cover topics such as an introduction to investing, 401ks, health insurance, and purchasing your first home. | Continue reading


@blog.jonlu.ca | 3 years ago

Thoughts on User Growth and Product

My day job is, officially, as a Growth Engineer working primarily on Unauth Product at Pinterest. It’s slightly different from my previous software engineering roles - typically, in other roles, I would be handed a spec sheet or design and had to implement it. Sometimes I’d desig … | Continue reading


@blog.jonlu.ca | 3 years ago

How the Nintendo Switch prevents downgrades by irreparably blowing its own fuses

Note: this is a republish of the article I originally wrote on Medium for Hackernoon | Continue reading


@blog.jonlu.ca | 3 years ago

Promise.all vs. Promise.allSettled

I was reading the MDN docs on JavaScript promises and realized that the difference between Promise.all and Promise.allSettled wasn’t immediately obvious. | Continue reading


@blog.jonlu.ca | 3 years ago

Making audio sound like it came through a phone

A while back I was wondering what made phone calls sound so distinct - a call over a landline, through copper cables, always sounds very similar. They are tin-y, hollow, and the person you’re talking to sounds far away. The newer VoIP and VoLTE calls sound so much better, so I as … | Continue reading


@blog.jonlu.ca | 4 years ago

Making high-fidelity audio sound like it came through the phone (2018)

A while back I was wondering what made phone calls sound so distinct - a call over a landline, through copper cables, always sounds very similar. They are tin-y, hollow, and the person you’re talking to sounds far away. The newer VoIP and VoLTE calls sound so much better, so I as … | Continue reading


@blog.jonlu.ca | 4 years ago

How much space would it take to store every word ever said?

If we tally up every word ever said by any person, throughout history, how much physical storage space would be needed to store a representation of those words? Note that I do not mean unique words - rather, every word, ever said, by anyone. | Continue reading


@blog.jonlu.ca | 4 years ago

How much space would it take to store every word ever said? (2020)

If we tally up every word ever said by any person, throughout history, how much physical storage space would be needed to store a representation of those words? Note that I do not mean unique words - rather, every word, ever said, by anyone. | Continue reading


@blog.jonlu.ca | 4 years ago

How much space would it take to store every word ever said?

If we tally up every word ever said by any person, throughout history, how much physical storage space would be needed to store a representation of those words? Note that I do not mean unique words - rather, every word, ever said, by anyone. | Continue reading


@blog.jonlu.ca | 4 years ago

How much space would it take to store every word ever said?

If we tally up every word ever said by any person, throughout history, how much physical storage space would be needed to store a representation of those words? Note that I do not mean unique words - rather, every word, ever said, by anyone. | Continue reading


@blog.jonlu.ca | 4 years ago

Deobfuscating JavaScript from an American Express scam (2019)

Earlier today I received a scam email that managed to evade both my and gmail’s email filters. I wanted to get a closer look at how it did it and what it’s trying to accomplish. | Continue reading


@blog.jonlu.ca | 4 years ago

Ryanair, Hamiltonian Cycles, and using graph theory to find cheap flights (2018)

Ryanair is a wonderful example of two extremes - it’s one of the worst possible airlines that nickel and dimes you for everything, it’s not a great employer, and it is rated the worst European airline; however, it’s dirt cheap. | Continue reading


@blog.jonlu.ca | 4 years ago

Tracking flight details while in the air

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 4 years ago

Email Authentication: SPF, DKIM and Dmarc Out in the Wild

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 4 years ago

Email Authentication: SPF, DKIM and Dmarc Out in the Wild

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 4 years ago

Reversing Safeways private APIs to automate coupon collection

Safeway is an American supermarket chain that has historically had a pretty comprehensive coupon program. They somewhat recently tried to modernize their offerings (as they were founded in 1915, and are pretty much the definition of “old guard” companies), by allowing online coup … | Continue reading


@blog.jonlu.ca | 4 years ago

Reversing private APIs, Safeway, and not-so-extreme couponing

Safeway is an American supermarket chain that has historically had a pretty comprehensive coupon program. They have recently tried to modernize their offerings (as they were founded in 1915, and are pretty much the definition of “old guard” companies), which brought what used to … | Continue reading


@blog.jonlu.ca | 4 years ago

Safeway coupons, automation, and reversing private APIs

Safeway is an American supermarket chain that has historically had a pretty comprehensive coupon program. They have recently tried to modernize their offerings (as they were founded in 1915, and are pretty much the definition of “old guard” companies), which brought what used to … | Continue reading


@blog.jonlu.ca | 4 years ago

Illegal streams, decrypting m3u8's, and building a better stream experience

Having not lived in the US for the majority of my life, I often needed to rely on illegal streams to watch America sports games. The experience on these streams is, to say the least, extremely poor. Most have some sort of crypto miner running in the background, as well as dozens … | Continue reading


@blog.jonlu.ca | 4 years ago

Compensation in 2019 new grad tech offers

I saw a lot of friends have the same questions and concerns and thought I’d write up a “State of Tech Offers” for 2019 - it’s meant to help shine light on how an offer is structured, how the big players are constructing their offers, and how to make sure you’re not being taken ad … | Continue reading


@blog.jonlu.ca | 4 years ago

Dr. Carvers Shave Butter, Ember, and Disappearing Products

TL; DR - using the Ember developer tools, you can find cheaper versions of the same products on Dollar Shave Club’s site, as well as find products that have been discontinued or that would not be normally shown. | Continue reading


@blog.jonlu.ca | 4 years ago

Scams, American Express, and Obfuscated JavaScript

Whenever I get a scam email that manages to circumvent both my and gmail’s email filters, I like to take a closer look at how it did it and what it’s trying to accomplish. | Continue reading


@blog.jonlu.ca | 5 years ago

Class schedules, a cease and desist from Viacom, and accidental monetization

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Uber, statistics, and a chrome extension

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Uber, statistics, and a chrome extension

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Ryanair, Berlin, and Hamiltonian cycles – traveling using graph theory

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Bruteforcing United Club's WiFi password

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Illegal streams, decrypting m3u8's, and building a better stream experience

Having not lived in the US for the majority of my life, I often needed to rely on illegal streams to watch America sports games. The experience on these streams is, to say the least, extremely poor. Most have some sort of crypto miner running in the background, as well as dozens … | Continue reading


@blog.jonlu.ca | 5 years ago

Leaky vs. Punch-Through Abstractions

Leaky abstractions are bad - they do not properly hide away all the complexity of the system they are covering. Unfortunately every abstraction is leaky to some degree1 - that’s why the best designed abstractions offer the ability to punch through them. See The Law of Leaky Abstr … | Continue reading


@blog.jonlu.ca | 5 years ago

The Federalist Papers: Author Identification Through K-Means Clustering

JonLuca’s Blog - A blog about tech, programming, and information | Continue reading


@blog.jonlu.ca | 5 years ago

Speeding up Zsh and Oh-My-Zsh

Recently I timed my shell and was surprised at how slow it was.You can time your own with:for i in $(seq 1 10); do /u... | Continue reading


@blog.jonlu.ca | 5 years ago