SOAR – SQL Optimizer And Rewriter


SOAR is an SQL Optimizer and Rewriter.  It can help analyse, optimize, and rewrite SQL queries.  Don’t get offset by the Chinese documentation as default – there is an English translation.

Here are some of the features:

  • Cross-platform support, such as Linux, Mac, and Windows
  • Support Heuristic Rules Suggestion
  • Support Complicate SQL Indexing Optimize
  • Support EXPLAIN analyze for query plan
  • Support SQL fingerprint, compress and built-in pretty print
  • Support merge multi ALTER query into one SQL
  • Support self-config rewrite rules from SQL Rewrite
  • Suggestions were written in Chinese. But SOAR also gives many tools, which can be used without understanding Chinese.

And if you are familiar with the other tools that provide similar functionality, here’s how SOAR compares to them:

Easily optimize images using PHP

Via this blog post I came across this PHP image optimization library, which somewhat reminds me of this blog post from a couple of years ago.  As good as ImageMagick is, it takes time and effort to find all the right options.  With Spatie Image Optimizer you have an almost out of the box solution for optimizing images in a variety of formats.

This package can optimize PNGs, JPGs, SVGs and GIFs by running them through a chain of various image optimization tools.

10k Apart – Inspiring the Web with Just 10k

10k apart

From this article, I’ve learned about an excellent (for our times) 10k Apart competition:

With so much of an emphasis on front-end frameworks and JavaScript runtimes, it’s time to get back to basics—back to optimizing every little byte like your life depends on it and ensuring your site can work, no matter what. The Challenge? Build a compelling web experience that can be delivered in 10kB and works without JavaScript.

Think you’ve got what it takes? You have until September 30th.

I can’t wait to see the submissions and all the ways to squeeze the awesomeness of the modern web into just 10 kilobytes.  This reminds me of the Perl Golf posts over at PerlMonks and Assembly PC 64K Intro from my childhood early days (here are some examples).

Latency numbers by year

Last year I came across a nice chart of latency numbers every programmer should know.  Today, I saw this page, which shows you the same latency numbers, but also provides a timeline from 1990 to 2020.

For some operations, latency is constant, because it’s based on things of nature – speed of light, distance between continents, etc.  For other operations, latency can be decreased through better technology and algorithms.

The timeline clearly shows the mind-blowing advance we’ve experienced in technology over the last three decades.

Latency Numbers Every Programmer Should Know


I’m saving this here for current and future generations of programmers:

Latency Comparison Numbers
L1 cache reference                            0.5 ns
Branch mispredict                             5   ns
L2 cache reference                            7   ns             14x L1 cache
Mutex lock/unlock                            25   ns
Main memory reference                       100   ns             20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy              3,000   ns
Send 1K bytes over 1 Gbps network        10,000   ns    0.01 ms
Read 4K randomly from SSD*              150,000   ns    0.15 ms
Read 1 MB sequentially from memory      250,000   ns    0.25 ms
Round trip within same datacenter       500,000   ns    0.5  ms
Read 1 MB sequentially from SSD*      1,000,000   ns    1    ms  4X memory
Disk seek                            10,000,000   ns   10    ms  20x datacenter roundtrip
Read 1 MB sequentially from disk     20,000,000   ns   20    ms  80x memory, 20X SSD
Send packet CA->Netherlands->CA     150,000,000   ns  150    ms

1 ns = 10-9 seconds
1 ms = 10-3 seconds
* Assuming ~1GB/sec SSD

By Jeff Dean:     
Originally by Peter Norvig:

Some updates from:            
Great 'humanized' comparison version:
Visual comparison chart:      
Nice animated presentation of the data:

This is a copy-paste of this gist, referenced from this blog post. Read and share both, for the better world.