BetterDev #208 - Migrating Facebook to MySQL 8.0 and Zip - How not to design a file format.
Better Dev #208 Jul 26, 2021
Hi all,
Welcome to issue 208, I like migration stories, they showed us how others approach swap things out in production. I had 2 migrations stories in this issue. I hope you like them as much as I do.
If you like this newsletter, consider forward it to your friend, tell your co-worker.
Beside working on the newsletter, I build and run an email forwarding service, if you have domain sitting around, hook them up to my platform.
Now to our links.
Facebook was using MySQl 5.6 and missed out many improvement in 5.7 and especially 8.0. Their MySQL 5.6 also has 1700 code patches need to port to 8.0 version too. Given the scale of Facebook, upgrading database like this is huge and difficult.
The Zip file format is now 32 years old. You’d think being 32 years old the format would be well documented. Unfortunately it’s not.
Another database related migration. NoRedInk wanted to re-architecture their core engine to reduce MySQL load. Previous attempt to rewrite that engine failed and had to rolled back. To make it worth, they don’t quite trust their test either. So how they approach to rewrite the core business logic in a more peformance way?
On March 23rd Taras was honored to present at PAC HERO FESTIVAL 2021 their favorite append-only design property. The recording is available on YouTube and this article contains some of its highlights
Instead of returning rows from the database, initialize data structure on your app then serialize them to JSON string, you can ask Postgres to just return JSON and cut out all the middleware access.
In this post, we’ll explore at a high level the key concepts and defining characteristics of video codecs. Then, to further demystify them, we’ll even implement one from scratch in about a hundred lines of Rust.
executables always seemed like black magic to me. I always wondered how stuff worked under the hood, and how binary code is represented inside .exe files, and how hard it is to modify this ‘compiled code’ without access to the original source code.
I think among scripted language, Python has a very powerful import system. You can do relative import, parent import with ..
, and root import with ...
(yes, three dot if you are unfamiliar) and full path import. Once import an object, you can name it anything using import ... as
. Even if you aren’t using Python, read to understand how those import/require/include
mechainisms work
Code to read
a framework for developing PostgreSQL extensions in Rust and strives to be as idiomatic and safe as possible.
RustCall itself a routing tree web toolkit. It’s unique among Ruby web framework where it used a Tree-based approach to define your route instead of an array/list page like Rails. Fastest among similar framework.
RubyTools
Run periodic jobs in PostgreSQL. Good for thing like data cleanup, now you can just run SQL as a cronjob, define inside your postgres db, use the same CRON syntax
Have you ever send test email to see how it rendered in email client? Stop wasting that. Install this package(as a ruby gem), and run a local mailserver then you will have a web UI to view email locally. Fast, cheap(no more paying for extra mail)
web server scanner which performs comprehensive tests against web servers for multiple items, including over 6700 potentially dangerous files/programs, checks for outdated versions of over 1250 servers, and version specific problems on over 270 servers
You can view this issue in web browser.
If you have any suggestion/feedback, do tell me by replying to this email. I read them all.
No longer want to receive these emails? Unsubscribe
Older messages
BetterDev #207 - The Incident Review: 4 Times When Typos Brought Down Critical Systems and LiveKit Open source platform for real-time audio and video
Tuesday, July 20, 2021
Better Dev #207 Jul 19, 2021 Hi all, I hope everyone has a great weekend. Now to our issues as normal. If you like this newsletter, consider forward it to your friend, tell your co-worker. Now to our
BetterDev #206 - Behind the scenes, AWS Lambda and Against SQL
Monday, July 12, 2021
Better Dev #206 Jul 12, 2021 Hi all, We skipped last week due to July 4th. I hope everyone had a nice rest anyway. Sometimes during this pandemic, it's still worth it to go outside, wear a mask, on
BetterDev #205 - A from-scratch tour of Bitcoin in Python and Logging Tips for Postgres, Featuring Your Slow Queries
Monday, June 28, 2021
Better Dev #205 Jun 28, 2021 Hi all, Crypto is going chao last few weeks but when looking at it purely from an engineering purspective, it's quite interesting system. Have fun enterainment with
BetterDev #204 - What Every Programmer Should Know About SSDs and Is an event loop just a for/while loop with optimized polling
Monday, June 21, 2021
Better Dev #204 Jun 21, 2021 Hi all, Last week I was busy working on an IMAP implementation for my email forwarding app and also have some consultant work so the issue was put aside. This week we'
BetterDev #203 - The repeated deahths of Object Oriented Programming and How a Jenkins Job Broke Slack's Jenkins UI
Monday, June 7, 2021
Better Dev #203 Jun 07, 2021 Hi all, Every companies has to have a CI/CD and also have to organize code. This week I got links on that topic. Jenkins, code organization and a few WebAssembly/CSS links.
You Might Also Like
SRE Weekly Issue #422
Monday, April 29, 2024
View on sreweekly.com A message from our sponsor, FireHydrant: FireHydrant is now AI-powered for faster, smarter incidents! Power up your incidents with auto-generated real-time summaries,
Quick question
Sunday, April 28, 2024
I want to learn how I can better serve you
Kotlin Weekly #404 (NOT FOUND)
Sunday, April 28, 2024
ISSUE #404 28st of April 2024 Announcements Kotlin Multiplatform State of the Art Survey 2024 Help to shape and understand the Kotlin Multiplatform Ecosystem! It takes 4 minutes to fill this survey.
📲 Why Is It Called Bluetooth? — Check Out This AI Text to Song Generator
Sunday, April 28, 2024
Also: What to Know About Emulating Games on iPhone, and More! How-To Geek Logo April 28, 2024 📩 Get expert reviews, the hottest deals, how-to's, breaking news, and more delivered directly to your
Daily Coding Problem: Problem #1425 [Easy]
Sunday, April 28, 2024
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Microsoft. Suppose an arithmetic expression is given as a binary tree. Each leaf is an
PD#571 Software Design Principles I Learned the Hard Way
Sunday, April 28, 2024
If there's two sources of truth, one is probably wrong. And yes, please repeat yourself.
When Procrastination is Productive & Ghost integrating with ActivityPub
Sunday, April 28, 2024
Automattic, Texts, and Beeper join forces to build world's best inbox, Reflect launches its iOS app, how to start small rituals, and a lot more in this week's issue of Creativerly. Creativerly
C#503 Building pipelines with System.Threading.Channels
Sunday, April 28, 2024
Concurrent programming challenges can be effectively addressed using channels
RD#453 Get your codebase ready for React 19
Sunday, April 28, 2024
Is your app ready for what's coming up in React 19's release
☁️ Azure Weekly #464 - 28th April 2024
Sunday, April 28, 2024
Azure Weekly Newsletter Issue #464 powered by endjin Welcome to issue 464 of the Azure Weekly Newsletter. In AI we have a good mix of high-level and deep-dive technical articles. Next-Gen Customer