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.
Migrating Facebook to MySQL 8.0
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.
Pufferfish, please scale the site!
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?
Old pattern powering modern tech
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
Hello, Video Codec!
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.
Reversing for dummies - x86 assembly and C code
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.
Python behind the scenes #11: how the Python import system works
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.
Call 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.
Implement Go as a script language in Rust. Run most of Pure Go code
State machines and statecharts for the modern web
a forensic tool to look for signs of infection in smartphone devices
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
Chaos for Postgres, generate long query, idle transaction, locks etc
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
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this