Posts for Wednesday, November 14, 2018

avatar

Bash windows in to survive follow up

Looking again at the Stack Overflow Developer Survey Results. It is possible to calculate a trend for “Developed for Platform” category. ‘win’ for Windows Desktop or server depending on year.

| Year | other|  win |
|------|------|------|
| 2013 | 38.6 | 61.4 |
| 2014 | 41.2 | 58.8 |
| 2015 | 42.0 | 58.0 |
| 2016 | 47.9 | 52.1 |
| 2017 | 59.0 | 41.0 |
| 2018 | 64.8 | 35.2 |

In a five years almost half of the share is gone.

The bash on windows improvement allows more developers to use Windows while developing for other platforms. At the same time more Microsoft things are being ported to linux.

NTFS is still the biggest gripe. Along with very slow search and system updates.

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

<g:plusone size="medium"></g:plusone>

<script type="text/javascript"> (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script> <script src="http://www.reddit.com/buttonlite.js?i=2&amp;styled=off&amp;url=http://andreasaronsson.github.io/2018/11/14/bash-windows-in-to-survive-follow-up&amp;newwindow=1" type="text/javascript"></script>

Posts for Monday, November 12, 2018

How to display the times in various time zones from the LXDE Panel

I normally check the time in the time zone of family, friends and colleagues who live in various places around the World before I call or message them. In KDE Plasma on my laptop it is possible to configure the digital clock widget to display the times in a list of time zones of my […]

Posts for Wednesday, October 31, 2018

Configure a keyboard shortcut in Lubuntu 18.04 to take a screenshot of a screen region

As installed, Lubuntu 18.04 is configured so that the user can capture a screenshot of the whole screen by pressing the PrtScrn key, and a screenshot of the active window by pressing Alt+PrtScrn. However, no keyboard shortcut is configured to enable the user to capture a user-specified region of the screen. Now, as it happens, […]

Posts for Thursday, October 25, 2018

About Microsoft acquiring github

That's right, you can read about here.


I was on the verge to migrate my repos to gitlab, now I have another good reason to do it. My new git repo is available here.
avatar

TL;DR: Bad Blood

Bad Blood

In the retrospect, a few red flags were raised during the Theranos’ ascendancy:

  1. The founder, Elizabeth Holmes, had little experience on medical devices when she dropped out Stanford as a 19-year-old sophomore. There MIGHT exists prodigy founder, but highly unlikely in the medical field due to many years of professional training.

  2. No biotech focused venture capital invested on Theranos. Its all-star board director were heavily specialized on the military and diplomatic expertise, nobody had worked on medical field1.

  3. Theranos is reluctant to publish any peer-reviewed journal to validate the accuracy of the test result. It also refused to discuss the menchanics of the miniature devices.

In the book, Bad Blood, the Wall Street Journal journalist, John Carreyrou discloses more details about the troubled company:

No matter how bad you think the Theranos story was, the reality was actually far worse.

The finger-pricking blood collection in Holme’s vision is not new. The blood testing industry has been working on this holy grail for years without material progress. Obviously the small sample size is more vulnerable to the margin of error, also the blood collected from capillaries carries unique biochemical traits. For example, the red blood cells are more likely break, then artificially elevate the potassium concentration.

The Dirty Secret

Theranos’ endeavor stayed in the course of miniature rather than seeking methodological breakthroughs. They built a toaster-sized prototype for chemiluminescent immunoassy, called Edison; but hit the wall when extending its functionalities. Thus they stacked multiple units as miniLab. The test results were neither accurate or precise as the fundamental methodology challenges are not solved.

But these drawback did not hinder Holmes to pitch the product to vendors, partners, and government agents. And the company tried all possible means to protect the secret. Holmes carefully compartmented the organization to several silos; only the senior management could see the big picture. The company also never hesitated to leverage the legal weapons to scare current and former employees. Theranos hired the most prestigious lawyer in the country, David Boies to outgun its opponents who later joined the board of directors. Part of the legal fees are paid by Theranos’s stock, — a really smart move for Theranos.

The Great Saleswoman

It is no doubt that Holmes is a great saleswoman with the Steve Job’s reality distortion field. She also dressed in black turtle neck, and intentionally speak in a lower tone, “fake it until make it”. She successfully lured the former Secretary of State, retired Admiral, General USMC to join the board, and established chains of endorsement to boost the creditability.

She also closed hundred-million dollar deal with Walgreen for the strategical partnership. It is interesting to see how the fear of missing out clouded the executives’ judgement and let Theranos slid without cross-examining the testing results.

I think Elizabeth Holmes will be a great leader in the software industry with her ruthless growth hack. Unfortunately, the medical industry demand a higher standard far beyond the minimum viable product(MVP). And her ruthless disregard of the human’s well being cast the doubt whether she has the sociopath tendency:

  • The Edition did not function correctly in a investment demo, they fabricated the testing result and beamed it back.

  • They hacked Siemens equipments to test diluted blood samples, which was not approved or supported by the manufacturer.

  • They couriered blood samples from Arizona to their labs in Newark, California to avoid FDA regulation. The contractors were not certificated with proper cold chain. In fact, Theranos’ practice in Arizona is so badly executed, the company voided two years of blood test result.


  1. Theranos introduced its medical advisory board on April, 2016.

Posts for Tuesday, October 23, 2018

The non-elegant tray icons

    For whatever development reasons, some applications refuse to change the tray icons to reflect the theme you're using. For example, you want a nice dark/bright/whatever theme, and the icon in tray sit there, as the default one, breaking everything you want in your desktop. Yeah I know this feel.
    After some researching, I've made this guide and I'll improve over the time with more tips about this.

Obs.: You can also use this.


Hexchat

HexChat comes with built in icons for the tray, user list, and channel tree (which can be disabled in Preferences). You can use custom icons by placing icons (16x16 recommended) in an icons subdir, which may need to be created, within your config folder. The icons must be named exactly as follows including file extensions:
  • User List
    • ulist_netop.png
    • ulist_founder.png
    • ulist_owner.png
    • ulist_op.png
    • ulist_halfop.png
    • ulist_voice.png
  • Channel Tree
    • tree_channel.png
    • tree_dialog.png
    • tree_server.png
    • tree_util.png
  • Tray Icon
    • tray_normal.png
    • tray_fileoffer.png
    • tray_highlight.png
    • tray_message.png
    • hexchat.png

Source: Hexchat documentation



Clementine
  1. Create the directory ~/.config/Clementine/customiconset.
  2. Inside this directory create an icons directory.
  3. Inside this icons directory, create 3 folders: 22x22, 32x32, and 48x48.
  4. In each one of these directories I can place the indicator panel icon files:
    a) clementine-panel.png -> the icon as it is displayed when player is stopped .
    b) clementine-panel-grey.png -> an overlay that slowly replaces the previous icon as the song plays.
    c) I can make both icons the same to remove the animation.
  5. Two levels up, inside the customiconset directory, I can place two other icons:
    a) tiny-pause.png -> an overlay icon (22x22) that will be scaled down by the application and represents the play symbol, which will be displayed on the top right of the indicator panel icon when the player is playing.
    b) tiny-pause.png-> same thing but for when the player is paused.
    c) If I don't place these two overlay icons, they will be changed to the default ones, which is a no-no!. So if I don't need/want these two overlays, I just create two fully transparent 22x22 png images and name them accordingly.
 Source: Ubuntu Mate Forums


Posts for Friday, October 19, 2018

avatar

Two-Factor via Nextcloud Notifications

I’m happy to announce a new two-factor provider for your Nextcloud: the Notifications Provider. This provider utilizes your existing logged in devices to grant new devices access to your Nextcloud. Note: the app is still under heavy development. Still we appreciate testing and feedback! The flow is simple. You enable the provider in your personal security settings. Then the next time you log in you can chose to authenticate using a device that is already logged in to your account.

Posts for Thursday, October 18, 2018

avatar

Towards a stricter Content Security Policy

A Content Security Policy (CSP) can be used to protect against Cross Site Scripting (XSS) attacks. This is done by having the server tell the browser what resources (executable script, images, etc) can be loaded from where. All this is told to the browser via a header, so if the actual page tries to do something it is not allowed the browser will block it. At Nextcloud we have deployed a CSP for a while now that limited the resources to be loaded mainly to the domain your Nextcloud is running on.

Posts for Sunday, October 14, 2018

“Connected” Buch

Als Gegengewicht zu den damals (und auch heute) üblichen Weltuntergangstexten zur Digitalsphäre schrieb ich in den Jahren 2014-2015 alle zwei Wochen eine Kolumne zu unterschiedlichen mehr oder weniger tagesaktuellen Themen.

Die besten und heute noch relevanten Texte aus dieser Zeit sind jetzt als Buch im Ach Je Verlag herausgekommen und sind (*trommelwirbel*) nun käuflich zu erwerben:

<figure class="aligncenter is-resized"><figcaption>Connected Cover</figcaption></figure>

Das Buch kann für 14,99€ direkt beim Verlag erworben werden. Das Ebook schlägt mit 9,99€ zu Buche. Man kann das Buch natürlich auch bei Amazon erwerben (Referallink).

Das Buch richtet sich einerseits an diejenigen, die damals vielleicht einige Texte verpasst haben wie auch an diejenigen, die gerne eine kompakte Sammlung von Texten zu Themen rund um die sozialen Zusammenhänge digitalvermittelter Kommunikation und Lebensrealität zur Verfügung hätten. Oder natürlich auch an alle, die damals – Patreon gabs da noch nicht wirklich – eigentlich die Kolumne gerne unterstützt hätten und das nun gerne nachholen würden.

Posts for Saturday, October 13, 2018

How to create missing favicons for your bookmarks in Firefox Quantum for Linux

Prior to the advent of Firefox Quantum, several add-ons were available that enabled you to replace the favicons of bookmarks in Firefox, or to create custom favicons for bookmarks lacking a favicon. One of my favourite such add-ons was Favicon Picker 3. However, Firefox Quantum currently lacks an add-on that would enable you to insert […]

Posts for Sunday, October 7, 2018

avatar

Medical animations and surgical visualisation with MedFilm

You’re sitting in front of the doctor’s table in a hospital. The doctor has just spent the past half hour explaining the procedure you will undergo to solve a medical problem that you experience. It sounds complicated — there are a few things you have to do to prepare, some foods to watch out for, and a recovery process of a few months afterwards. You will later come home to only be bombarded with a series of questions from your friends and family, who are all curious and have somehow managed to ask the questions which you didn’t think of asking earlier. It also doesn’t help that their native language isn’t English.

Four years ago, this was exactly the problem that Erik Kylen, a small team in Sweden, and myself working remotely set out to solve. The solution was a series of animated videos to explain various medical issues in simple terms. A doctor could use these videos to help guide patients, and patients could then watch these videos from the comfort of their own home. This is MedFilm.

MedFilm Logo

Each video starts with a gentle description of the various body parts involved in the procedure to introduce the required medical terminology. This is followed by an explanation of how these parts relate to the ailment at hand. The patient is then reminded of the various preparatory steps they need to take before the procedure, such as fasting, or drinking fluids. The surgical procedure is then shown, heavily tested to maintain medical accuracy whilst ensuring that the patient does not see anything gruesome. Finally, the video describes the recovery process, and the steps the patient can take to expedite it.

These videos are simple to understand, are accessible with subtitles and translations into many languages, and tailored for specific medical practices in localised hospitals and countries. Each hospital and country has their own preferred ways of doing things, and these videos accomodate that fact.

A doctor from a participating hospital can share a link to their patient, or interactively use the video during the briefing process on a tablet. A patient can later watch it again to refresh their memory, or reshare it with friends and family.

MedFilm surgical videos on various tablets

Let’s see a demonstration video (and yes, videos can be embedded with custom branding into a hospital or clinic’s website!). Below is the video created for an appendectomy. Usually, getting your appendix removed is a pretty safe, standard procedure, and happens pretty soon after you figure out you have a problem. Most people have also heard of it, which makes it a great procedure to demonstrate.

Here’s the video! Click play below and learn about an appendectomy!

<script id="medfilm-player" src="https://medfilm.se/resources/player.js?h=patientinformationsfilmer&amp;id=17&amp;lang=en"></script>

MedFilm is steadily growing and now has a repository of 40 videos covering topics from cardiology to otorhinolaryngology (I’m not a doctor, so to me that’s a very complicated word!), used in clinics across Scandinavia. I’m proud of the service, and happy that it is able to help patients. If you’re interested are are involved in the health industry, you can contact MedFilm here and we can explore opportunities!

The post Medical animations and surgical visualisation with MedFilm appeared first on thinkMoult.

Posts for Monday, October 1, 2018

A brief discussion about package installation times in Gentoo Linux

I thought that perhaps users of binary-based Linux distributions who are contemplating trying out the source-based distribution Gentoo Linux might be interested to know a bit about package installation times in contrast to binary distributions. I am not going to go into great detail here; this is just to give interested people a quick idea […]

Posts for Saturday, September 29, 2018

avatar

TL;DR: Nudge

The 2017 Nobel Prize laureate, Richard H. Thaler, and Cass R. Sunstein present the libertarian paternalism and choice architecture: the authority does not coerce the policy, instead it influences the choosers’ behaviors to make better choices, aka nudge.

Nudge

Why nudge works

Daniel Kahneman, 2011 Nobel Prize laureate, proposed in his book, Thinking Fast and Slow, that we have two modes of thoughts: system 1 and system 2. System 1 is fast, instinctive and emotional, while System 2 is slower, more deliberative, and more logical. From the engineer point of view:

  • System 1 is like deep learning. Million years training data and selective evolution train the system focusing on the responsiveness at the expenses of accuracy.
  • System 2 is more like domain knowledge. The system evolves from the reflection, and it can rationalize its decision based on the logic and insights. It trades the accuracy over responsiveness.

The canonical Eco will analyze the current status, then apply logic rational to evaluate pros and cons, and conclude a decision at the end. Ideally, he or she MAY also review the decision for a retrospect in the future. ALL of these requires significant cognitive power, and our brains are lazy1, we tend to solve more complicated problem with System 1, which incurs many cognitive biases, such as anchoring, herd mentality mentioned in the book.

On the other side, as the choice architecture designer, we can also exploit the biases for the choosers’ good.

How nudge works

In the book, the authors propose several libertarian paternalism to make chooses better off:

Remover bad options If some options result worse outcomes, the choice architecture designer can simply remove them to make a difference.

Make a better default option We can make a better default option, and leverage the status quo bias.

Rethink regulation in the public policy In the United States, a significant portion of health-care cost is spent on the malpractice insurance. The policy maker’s intent is to protect patients’ best interest, but in practice, the ambiguity of “neglect” makes the malpractice lawsuit more or less a lottery, and lawyers take lion shares. We MAY consider to allow the patients to waive the rights to sue for a more affordable health-care practice.


  1. Consider laziness a virtue from the evolution perspective: the body can allocate the energy for alternative use.

Posts for Monday, September 17, 2018

Automatic backup of users’ files on a NAS device to an external USB HDD

One of my Linux machines is a 4-bay server that performs various roles, one of which is as NAS (network-attached storage) for family and visitors’ devices connected to my home network. I had configured each pair of HDDs in a RAID 1 array in order to provide some internal redundancy, but I was nervous about not […]

Posts for Friday, September 14, 2018

Password feedback for sudo

To make sudo show asterisks when you type a password, add this to your Defaults specification:

Defaults pwfeedback

Posts for Tuesday, September 11, 2018

Make syslog-ng at /dev/tty12 colorful

To make syslog-ng at your /dev/tty12 (or whatever tty you use for your logs, and it works to whatever kind of log from syslog-ng afaik), install ccze and use this line in your /etc/syslog-ng/syslog-ng.conf:

destination console_all { program("ccze -r >> /dev/tty12"); };

Posts for Sunday, September 9, 2018

avatar

cvechecker 3.9 released

Thanks to updates from Vignesh Jayaraman, Anton Hillebrand and Rolf Eike Beer, a new release of cvechecker is now made available.

This new release (v3.9) is a bugfix release.

Posts for Wednesday, September 5, 2018

avatar

Improved AppPasswords in Nextcloud 14

The app passwords have been available in Nextcloud for some time now. They were first introduced when we added second factor authentication to Nextcloud, as you still want to have a way to connect your mobile and desktop clients to your account. In the early days this was all manual labor. In the last year we have added support for app passwords to our mobile clients and the desktop client is following soon.

Posts for Tuesday, September 4, 2018

avatar

Destructuring assignments in TypeScript

This is a really quick post to show some examples of destructuring assignments in TypeScript.

First, what is a destructuring assignment in JavaScript?


Basically when you want to assign some data from an array or object into separate variables.

// from an object to a variable
let obj = {foo: 13, bar: 'baz'}; // get the object

let {foo, bar} = obj; // get two variables out of the object

// from an array
let arr = [1, 2, 3, 4]; // get the array
let [a, b, ...others] = arr; // get three variables out of the array

If that's confusing, the MDN link above will explain everything!

The above JavaScript will compile as TypeScript as well, but sometimes when you define a function, there is no type for the parameters yet, so they become 'any'.


// objects
func({a, b}) { ... } // a and b would be 'any'

func({a, b}: {a: number, b: string} { ... } // now a and by have types!

// arrays

func([a, b]: [number, string]) { ... } // a and by have types!

There is more great info here.

Posts for Wednesday, August 29, 2018

Installing Dropbox in Gentoo Linux following the recent restrictions introduced for Dropbox for Linux

In a 2013 post I explained how I installed Dropbox in Gentoo Linux running KDE 4. The Dropbox company has recently imposed some restrictions in the Linux client, so this is to explain what I did to get Dropbox working again in my two Gentoo Linux installations, both using the ext4 filesystem (unencrypted) and, these […]

Posts for Saturday, August 25, 2018

avatar

Job Hunting in 2018

After six years in SurveyMonkey, I decided to explore external opportunities. I felt surreal after staying on the other side of the table for last couple years. Here are my thoughts and lessons learned.

Red Queen’s Race

Six years ago, I read CLRS, and practiced with Cracking the Coding Interview 150, now we have more than 900 problems in leetcode. The backtracking and graph problems which were categorized as “advanced topic” are now quite common in the interview challenges.

Furthermore, the process has also adapted to the new paradigm. For example, the phone screening used to be 30 minutes conversation between the hiring manager and candidate to exchange information regarding the working experience and job responsibility; now it evolves to live coding session with code sharing tool such as codepad. “Talk is cheap. Show me the code.”

The bar is raised.

Problem solving triumphs over algorithm

Fortunately1, most of the companies mainly focus on the problem-solving skills instead of the algorithm or data structures, such as:

  • Data collection, transformation, aggregation, and analysis.
  • Augment a known data structure for a specific use case.
  • Live debug.

Alternatively, they challenge your system design knowledge with open discussion. I think these tests indicate better signals about the engineers’ capability and potential.

Lessons learned

The most valuable lesson I learned from my mistake is never let off your guard. Whether the session is marked as chat or open discussion, its objective is still evaluating your qualification intellectually, mentally and socially.

If the intensive practice is tiresome, why not just amortize it? I mean, it is better to keep your edge sharp all the time, right? Treat the practice as an opportunity of continuous education:

Joining a discussion group / meetup will also help.


  1. Or unfortunate from the return of investment perspective.

Posts for Tuesday, August 7, 2018

Prevent apple OS from creating .DS_Store and other bullshits

I don't think I have to explain about that. Everyone that had to admin an ecosystem that have one or more apple users know how this can be a nightmare in many different scenarios (specially because at some point, MacOS doesn't care even to hide the files anymore when dealing with network shares, external drives and so on, how nice).

Well... this needs to be applied with the MacOS:

Prevent MDS from attempting to Index
sudo touch /Volumes/volume_name/.metadata_never_index

Disable Indexing AND Searching of Volumes (if necessary)
sudo mdutil -i off -d /Volumes/volume_name

Delete existing Spotlight Index (if necessary, to start over, whatever fits you)
sudo rm -rfv /Volumes/volume_name/.Spotlight-V100
sudo rm -rfv /.Spotlight-V100


Disable creating '.DS_Store' bullshit on USB volumes
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

Disable creating '.DS_Store' bullshit on network volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Now that you've cleaned the mess, remove this bullshit from your drives:
find /path/you/want/to/clean/ -name ".DS_Store" -depth -exec rm {} \;

You can also delete the file responsible for custom icons:
find /path/you/want/to/clean/ -name $'Icon\r' -depth -exec rm {} \; 

Posts for Monday, August 6, 2018

How to move a mouse pointer automatically in Linux to simulate user activity

My various Linux installations all have Suspend to RAM enabled with a specified timeout. Sometimes I want to override the timeout; for example if I have left something running in a terminal window or I have left the package manager in a virtual machine upgrading the guest installation. I could of course launch the system’s […]

Posts for Monday, July 30, 2018

avatar

STLM meetup: The Evolution of Database

Lyft Engineer, Lei Chen reviewed the evolution of databases systems in the STLM meetup. Here are the meeting notes with references and my thoughts.

The Principle

The memory hierarchy of the modern computer dictates how fast we can access the data, and how much data can be stored. The database system is designed to leverage the memory hierarchy to optimize for specialized use cases and make tradeoff between the latency, throughput, and capacity.

Single Host Database

Long long ago, the database is designed for single host due to network performance cannot compete with local storage. Using MySQL architecture as an example:

MySQL Architecture

From bottom up, the MySQL composes several tiers:

  • File System provided by the OS.
  • Storage Engine handles the data layout to optimize for read / write or something between.
  • SQL parser, optimizer, executor provides the SQL semantics.
  • Connection pool manages the incoming connections, sockets, file descriptors

There several directions for the scalability:

  • Separate read / write operations.
  • Sharding: push the scalability problem to the business logic.
  • Drop the SQL support, use key-value store instead.
  • Replace the local file system with distributed file system
  • Some or all of above.

Master-Slave replication

The master-slave replication separates the read / write operations:

  • The master and all slaves handle the read operations.
  • Only the master accepts the write operation, it then replicates to the slaves synchronously or asynchronously.5

Strong consistency requires <semantics>R+W>N<annotation encoding="application/x-tex">R + W > N</annotation></semantics>R+W>N, see the eventual consistency article .

Sharding

With sharding, we can partition the database horizontally across multiple isolated instances to improve the I/O performance. The sharding logic is either handled by a middleware or the application.

Consistent hashing is commonly used to cushion the repercussion when partition is added or removed.

Key-value store

It is not-trivial to support SQL semantics, especially transactions1, what if we drop the SQL support for scalability? Without the SQL semantics, the storage engines can be simplified as key-value stores. It is like the hash map, but the data is too big to fit into the memory2.

Hash Indexes

We can maintain a in-memory hash table to map the key to the offset of the data file. Clearly, we cannot update the value in-place, that requires us to re-index all the succeeding keys. The data file is organized as:

  • append only: any put operation will append a new entry, and the index is updated to point to the new entry.
  • segmented: the data file is broken into segments, so we can compact the data file to reclaim used space, and keep the service available.

Bitcask (the default storage engine in Riak) takes this approach.

SSTable, memtable, and LSM-Tree

The hash indexes does not support range selection3, and demand all keys MUST fit into the memory. This shortcomings are addressed by the Sorted String Table, aka SSTable:

  • We maintain a balanced tree in memory4, aka memtable. Once it grows bigger than the threshold, the data is persisted to a segment with sorted keys.
  • The read operation first searches the memtable, then the most recent segments.

Thus, we maintain a sparse index in the memory instead of all keys. This data structure is also known as Log-structured merge-tree or LSM tree.

LevelDB and RocksDB take this approach, and HBase and Cassandra use the similar storage engine.

Distributed File System

With network speed increases, we can replace the local disks with distributed file systems, such Google File System, (see paper). There are many benefits:

  • Better throughput and reasonable latency6.
  • Data integrity and availability are decouple from the DB design.

Case Studies

Aurora

Amazon’s Aurora performs better than the RDS with two magic bullets (See Deep Dive on Amazon Aurora for more details):

  1. The underlying file system is replaced by EBS(hot data) and S3(cold data).
  2. The master only replicate the write-ahead log, aka WAL to avoid massive I/O.

I am kind of confused by the claim that WAL replication is more efficient; as the WAL write amplification is one of main motive that Uber engineer [migrated from pgsql to mysql][umysql-migration].

BigTable and Spanner

BigTable leverage the Google File System, SSTable, and Paxos consensus protocol (provided by Chubby?)

Spanner is built upon the BigTable, with atomic clock to ensure global consistency.


  1. The transaction MAY eat up half throughput due to locking primitives.

  2. You MAY find more details in Design Data-Intensive Applications, Chapter 3.

  3. This is by design, the hashed key MUST be randomly distributed to avoid collision.

  4. The BigTable uses the skip list instead of balanced tree.

  5. The replicate strategy is determined by the trade-off of the consistency vs. write throughput.

  6. The jupiter network can deliver 1Pbps of bisection bandwidth.

Posts for Sunday, July 22, 2018

Un poème pour Didier

July 22nd, 2018

Une fois, Aimé, avec son capitaine, Didier, a tout gagné.

Ensuite Didier, vingt ans après, son objectif à bien fixé.

Parmi tous les joueurs, une équipe il a dû sélectionné.

Il a pas tardé, que tout le monde lui est venu la contesté.

Patiemment, tous les adversaires il les a éliminé.

Même les sublimes croates, ils ont le mieux essayé.

À la fin, quand même, c'est Didier qui a gagné.

Planet Larry is not officially affiliated with Gentoo Linux. Original artwork and logos copyright Gentoo Foundation.