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
Import AI 399: 1,000 samples to make a reasoning model; DeepSeek proliferation; Apple's self-driving car simulator
Friday, February 14, 2025
What came before the golem? ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Defining Your Paranoia Level: Navigating Change Without the Overkill
Friday, February 14, 2025
We've all been there: trying to learn something new, only to find our old habits holding us back. We discussed today how our gut feelings about solving problems can sometimes be our own worst enemy
5 ways AI can help with taxes 🪄
Friday, February 14, 2025
Remotely control an iPhone; 💸 50+ early Presidents' Day deals -- ZDNET ZDNET Tech Today - US February 10, 2025 5 ways AI can help you with your taxes (and what not to use it for) 5 ways AI can help
Recurring Automations + Secret Updates
Friday, February 14, 2025
Smarter automations, better templates, and hidden updates to explore 👀 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
The First Provable AI-Proof Game: Introducing Butterfly Wings 4
Friday, February 14, 2025
Top Tech Content sent at Noon! Boost Your Article on HackerNoon for $159.99! Read this email in your browser How are you, @newsletterest1? undefined The Market Today #01 Instagram (Meta) 714.52 -0.32%
GCP Newsletter #437
Friday, February 14, 2025
Welcome to issue #437 February 10th, 2025 News BigQuery Cloud Marketplace Official Blog Partners BigQuery datasets now available on Google Cloud Marketplace - Google Cloud Marketplace now offers
Charted | The 1%'s Share of U.S. Wealth Over Time (1989-2024) 💰
Friday, February 14, 2025
Discover how the share of US wealth held by the top 1% has evolved from 1989 to 2024 in this infographic. View Online | Subscribe | Download Our App Download our app to see thousands of new charts from
The Great Social Media Diaspora & Tapestry is here
Friday, February 14, 2025
Apple introduces new app called 'Apple Invites', The Iconfactory launches Tapestry, beyond the traditional portfolio, and more in this week's issue of Creativerly. Creativerly The Great
Daily Coding Problem: Problem #1689 [Medium]
Friday, February 14, 2025
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Google. Given a linked list, sort it in O(n log n) time and constant space. For example,
📧 Stop Conflating CQRS and MediatR
Friday, February 14, 2025
Stop Conflating CQRS and MediatR Read on: my website / Read time: 4 minutes The .NET Weekly is brought to you by: Step right up to the Generative AI Use Cases Repository! See how MongoDB powers your