<commit_before>time: "Aug 18, 2020"
subject: "How to build a custom keyboard"
draft: false

description: "Hi everyone, Welcome to issue #165. Covid-19 may gives us more time, especially for one have no kids yet :-), so this week I include a link on how to build your own keyboard. Maybe a good hack to leverage some off time during Covid-19."

links:
  - url: https://matt3o.com/book/
    title: "How to build a custom keyboard"
    description: |
      The more I used the computer, the more I realize we all have different workflow and habit, yet I used a pre-built keyboard. I know Chefs that like to have their own custom build knives, I would like to build my own keyborad, custom to what I need, write my own firmware for it. This is a serie with 5 articles.

  - url: https://www.datascienceatthecommandline.com/1e/index.html
    title: "Data Science at the Command Line"
    description: |
      This is the website for Data Science at the Command Line, published by O’Reilly October 2014 First Edition. This hands-on guide demonstrates how the flexibility of the command line can help you become a more efficient and productive data scientist. You’ll learn how to combine small, yet powerful, command-line tools to quickly obtain, scrub, explore, and model your data.

  - url: https://martinfowler.com/articles/patterns-of-distributed-systems
    title: "Patterns of Distributed Systems"
    description: |
      Distributed systems provide a particular challenge to program. They often require us to have multiple copies of data, which need to keep synchronized.
      This article recognizes and develops these solutions as patterns, with which we can build up an understanding of how to better understand, communicate and teach distributed system design.

  - url: https://aatishb.com/entropy/
    title: Entropy Explained, With Sheep
    description: |
      Sometime on Linux when you are generating password, it said something like generating entropy, or not enough entropy. Entropy is a key of randomess. In this we will learn about them
      from a different angel, using sheep to help visualize them for easily understanding.

  - url: https://www.compose.com/articles/faster-performance-with-unlogged-tables-in-postgresql/
    title: "Faster Performance with Unlogged Tables in PostgreSQL"
    description: |
      Time to time I want to have a table with fast write and I'm ok if I lost data of that table, I don't want it to be corrupted(such as violation constraint) but losing data of that table
      if database is restarted is ok, then unlogger table is an option. It skips write ahead log.

  - url: https://phabricator.wikimedia.org/phame/post/view/190/internal_anycast/
    title: "Internal anycast at wikimedia"
    description: |
      There is no doubt WikiMedia receives a massive amount of traffic. The awesome of making change and see it reflect immediately at that scale are amazing.
      This article describe two major changes to their infrastructure. Firstly, servers that used to be fronted by LVS for load balancing are now peering directly with our routers. Secondly, we have started using IP anycast for a highly critical service: recursive DNS.

  - url: https://www.amazon.science/latest-news/machine-learning-course-free-online-from-amazon-machine-learning-university
    title: "Amazon's Machine Learning University is making its online courses available to the public"
    description: |
      As a DevOps engineer I usually scare of ML and treat it as a blackbox. But it doens't have to be that way. At the end of day, I'm an engineer and should be able to learn it.
      These class previouslous only available to Amazon employess will now available to the community

  - url: https://kunststube.net/encoding/
    title: Know About Encodings And Character Sets To Work With Text
    description: |
      If you are dealing with text in a computer, you need to know about encodings. In a world where UTF-8 is everywhere, understand that string is an array of bit is important. How it appears on screen or deserialize are depend on a few layer of abstraction.

  - url: https://fedoramagazine.org/tcp-window-scaling-timestamps-and-sack/
    title: "TCP window scaling, timestamps and SACK"
    description: |
      The Linux TCP stack has a myriad of sysctl knobs that allow to change its behavior.  This includes the amount of memory that can be used for receive or transmit operations, the maximum number of sockets and optional features and protocol extensions.

  - url: http://rachelbythebay.com/w/2020/08/11/files/
    title: "File handling in Unix: tips, traps and outright badness"
    description: |
      What happen if multiple process write to a same file at a time? How does Linux manage those write? 

  - url: https://disc-projects.bu.edu/lethe/
    title: "lethe: a tunnable delete-aware LSM engine"
    description: |
      LSM is famous for MyRock, LevelDB, Cassandra. LSM-trees write the incoming key-value entries in an in-memory buffer to ensure high write throughput, and uses in-memory auxiliary data structures (such as Bloom filters and fence pointers) to provide competitive read performance. While LSMs are great for writes and reads in general, we show that all state-of-the-art LSM-based data stores perform suboptimally in presence deletes in a workload


#  - url: https://www.cybertec-postgresql.com/en/a-quick-pg_stat_statements-troubleshooting-hack/
#    title: "A quick pg_stat_statements troubleshooting hack"
#    description: |
#      What would you do when you cannot install a Postgres monitoring system such as pghero or pgwatch2 to collect metric for performance debugging. This articile is about a quick hack that create a temp table and set up a periodically job to get metric from `pg_stat_statements` and insert into that table. Then analyzing that tabel to find slow query
#https://ptx2.net/posts/unbricking-a-bike-with-a-raspberry-pi/
#  - url: https://hassamuddin.com/blog/reg-alloc/
#    title: "A Quick Introduction to Register Allocation"
#    description: |
#
#https://teachyourselfcs.com/
#  https://opensource.com/article/20/6/linux-noatime
#http://web.eecs.utk.edu/~azh/blog/teenytinycompiler1.html
#  - url: https://github.com/EmilHernvall/dnsguide
#    title: "A guide to writing a DNS Server from scratch in Rust"
#    description: |
#      Writing DNS server is like hello world for networking to me. DNS is small enough, not massive like HTTP, also relying on UDP, so I think it's a good exercise to learn UDP, DNS protocol.
#      This artcile is focus on Rust, and I'm not a Rust programmer, only toy with Rust and I was able to follow it.
#
#  - url: https://csswizardry.com/2020/05/the-fastest-google-fonts/
#    title: "The Fastest Google Fonts"
#
#    https://www.gutenberg.org/files/30688/30688-h/30688-h.htm
#
#    https://thorsten-hans.com/5-types-of-zsh-aliases#operating-system-specific-aliases
# https://github.com/LisaDziuba/Marketing-for-Engineers
#https://pragmaticwebsecurity.com/articles/oauthoidc/from-implicit-to-pkce.html

video:
  - url: https://www.twitch.tv/videos/709079582?t=00h01m01s
    title: "DevNation Tech Talk: 10 awesome Kubernetes tools every user should know"


read_code:
  - url: https://github.com/facebook/pyre-check/
    title: Pysa
    description: |
      an open source static analysis tool we’ve built to detect and prevent security and privacy issues in Python code. Read the [companion post](https://engineering.fb.com/security/pysa/)
    category: ['Python']

  - url: https://github.com/Byron/gitoxide
    title: gitoxide
    description: |
      Implementation of `git` cli(not the server part) in Rust. It's written to optimize the user-experience, and perform as good or better than the canonical implementation(which is C)
    category: ['Rust']

  - url: https://github.com/twilco/kosmonaut
    title: kosmonaut
    description: |
      A web browser for the space age 🚀. Of course I'm not going to use it on my daily web usage, but I would peek to see how this can be done given its current state is still small enough for me to understand
    category: ['Rust']

  - url: https://redis.pjam.me/
    title: "Reimplement Redis in Ruby"
    description: |
      This website is a free, “online book” about attempting to rewrite Redis™* in Ruby. It has 5 chapters righ now. You will learn how to implement a TCP servers, understand Redis protocol so I say that is a lot to learn and super helpful
    category: ['Ruby']

  - url: https://github.com/codenotary/immudb
    title: immudb
    description: |
       lightweight, high-speed immutable database for systems and applications. you can track changes in sensitive data in your transactional databases and then record those changes permanently in a tamperproof immudb database. This allows you to keep an indelible history of sensitive data, for example debit/credit card transactions
    category: ['Go']


tool:
  - url: https://github.com/augmentable-dev/askgit
    title: askgit
    description: |
      Give you a SQL interface to your Git repository. You can query lots of interesting thing about your Git repo using SQL you known.

  - url: https://github.com/agroal/pgagroal
    title: pgagroal
    description: |
      a high-performance protocol-native connection pool for PostgreSQL.

  - url: https://github.com/okbob/plpgsql_check
    title: plpgsql_check
    description: |
      a linter tool for language PL/pgSQL (native language for PostgreSQL store procedures).

  - url: https://github.com/major/MySQLTuner-perl
    title: MySQLTuner
    description: |
       a script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.

  - url: https://github.com/mattiabasone/tuning-primer
    title: MySQL tuning primer
    description: |
      Yet another MySQL performance tuning primer script

  - url: https://github.com/ksensehq/eventnative
    title: eventnative
    description: |
      an open source, high-performance, event collection service. Capture all events your application generates and stream to your preferred Data Warehouse with current support for RedShift and BigQuery. Support one click deploy to Heroku

  - url: https://qmk.fm/
    title: qmk
    description: |
      a keyboard firmware. Useful if you like to build DIY keyboard.

#  - url: https://github.com/trailofbits/sinter
#title: sinter

  - url: https://github.com/jesseduffield/horcrux
    title: horcrux
    description: "Split your file into encrypted horcruxes so that you don't need to remember a passcode"

  - url: https://github.com/theforeman/foreman
    titl: foreman
    description: |
      an application that automates the lifecycle of servers<commit_msg>Final 165<commit_after>time: "Aug 18, 2020"
subject: "How to build a custom keyboard"
draft: false

description: "Hi everyone, Welcome to issue #165. Covid-19 may gives us more time, especially for one have no kids yet :-), so this week I include a link on how to build your own keyboard. Maybe a good hack to leverage some off time during Covid-19."

links:
  - url: https://matt3o.com/book/
    title: "How to build a custom keyboard"
    description: |
      The more I used the computer, the more I realize we all have different workflow and habit, yet I used a pre-built keyboard. I know Chefs that like to have their own custom build knives, I would like to build my own keyborad, custom to what I need, write my own firmware for it. This is a serie with 5 articles.

  - url: https://www.datascienceatthecommandline.com/1e/index.html
    title: "Data Science at the Command Line"
    description: |
      This is the website for Data Science at the Command Line, published by O’Reilly October 2014 First Edition. This hands-on guide demonstrates how the flexibility of the command line can help you become a more efficient and productive data scientist. You’ll learn how to combine small, yet powerful, command-line tools to quickly obtain, scrub, explore, and model your data.

  - url: https://martinfowler.com/articles/patterns-of-distributed-systems
    title: "Patterns of Distributed Systems"
    description: |
      Distributed systems provide a particular challenge to program. They often require us to have multiple copies of data, which need to keep synchronized.
      This article recognizes and develops these solutions as patterns, with which we can build up an understanding of how to better understand, communicate and teach distributed system design.

  - url: https://aatishb.com/entropy/
    title: Entropy Explained, With Sheep
    description: |
      Sometime on Linux when you are generating password, it said something like generating entropy, or not enough entropy. Entropy is a key of randomess. In this we will learn about them
      from a different angel, using sheep to help visualize them for easily understanding.

  - url: https://www.compose.com/articles/faster-performance-with-unlogged-tables-in-postgresql/
    title: "Faster Performance with Unlogged Tables in PostgreSQL"
    description: |
      Time to time I want to have a table with fast write and I'm ok if I lost data of that table, I don't want it to be corrupted(such as violation constraint) but losing data of that table
      if database is restarted is ok, then unlogger table is an option. It skips write ahead log.

  - url: https://phabricator.wikimedia.org/phame/post/view/190/internal_anycast/
    title: "Internal anycast at wikimedia"
    description: |
      There is no doubt WikiMedia receives a massive amount of traffic. The awesome of making change and see it reflect immediately at that scale are amazing.
      This article describe two major changes to their infrastructure. Firstly, servers that used to be fronted by LVS for load balancing are now peering directly with our routers. Secondly, we have started using IP anycast for a highly critical service: recursive DNS.

  - url: https://www.amazon.science/latest-news/machine-learning-course-free-online-from-amazon-machine-learning-university
    title: "Amazon's Machine Learning University is making its online courses available to the public"
    description: |
      As a DevOps engineer I usually scare of ML and treat it as a blackbox. But it doens't have to be that way. At the end of day, I'm an engineer and should be able to learn it.
      These class previouslous only available to Amazon employess will now available to the community

  - url: https://kunststube.net/encoding/
    title: Know About Encodings And Character Sets To Work With Text
    description: |
      If you are dealing with text in a computer, you need to know about encodings. In a world where UTF-8 is everywhere, understand that string is an array of bit is important. How it appears on screen or deserialize are depend on a few layer of abstraction.

  - url: https://fedoramagazine.org/tcp-window-scaling-timestamps-and-sack/
    title: "TCP window scaling, timestamps and SACK"
    description: |
      The Linux TCP stack has a myriad of sysctl knobs that allow to change its behavior.  This includes the amount of memory that can be used for receive or transmit operations, the maximum number of sockets and optional features and protocol extensions.

  - url: http://rachelbythebay.com/w/2020/08/11/files/
    title: "File handling in Unix: tips, traps and outright badness"
    description: |
      What happen if multiple process write to a same file at a time? How does Linux manage those write? 

  - url: https://disc-projects.bu.edu/lethe/
    title: "lethe: a tunnable delete-aware LSM engine"
    description: |
      LSM is famous for MyRock, LevelDB, Cassandra. LSM-trees write the incoming key-value entries in an in-memory buffer to ensure high write throughput, and uses in-memory auxiliary data structures (such as Bloom filters and fence pointers) to provide competitive read performance. While LSMs are great for writes and reads in general, we show that all state-of-the-art LSM-based data stores perform suboptimally in presence deletes in a workload


#  - url: https://www.cybertec-postgresql.com/en/a-quick-pg_stat_statements-troubleshooting-hack/
#    title: "A quick pg_stat_statements troubleshooting hack"
#    description: |
#      What would you do when you cannot install a Postgres monitoring system such as pghero or pgwatch2 to collect metric for performance debugging. This articile is about a quick hack that create a temp table and set up a periodically job to get metric from `pg_stat_statements` and insert into that table. Then analyzing that tabel to find slow query
#https://ptx2.net/posts/unbricking-a-bike-with-a-raspberry-pi/
#  - url: https://hassamuddin.com/blog/reg-alloc/
#    title: "A Quick Introduction to Register Allocation"
#    description: |
#
#https://teachyourselfcs.com/
#  https://opensource.com/article/20/6/linux-noatime
#http://web.eecs.utk.edu/~azh/blog/teenytinycompiler1.html
#  - url: https://github.com/EmilHernvall/dnsguide
#    title: "A guide to writing a DNS Server from scratch in Rust"
#    description: |
#      Writing DNS server is like hello world for networking to me. DNS is small enough, not massive like HTTP, also relying on UDP, so I think it's a good exercise to learn UDP, DNS protocol.
#      This artcile is focus on Rust, and I'm not a Rust programmer, only toy with Rust and I was able to follow it.
#
#  - url: https://csswizardry.com/2020/05/the-fastest-google-fonts/
#    title: "The Fastest Google Fonts"
#
#    https://www.gutenberg.org/files/30688/30688-h/30688-h.htm
#
#    https://thorsten-hans.com/5-types-of-zsh-aliases#operating-system-specific-aliases
# https://github.com/LisaDziuba/Marketing-for-Engineers
#https://pragmaticwebsecurity.com/articles/oauthoidc/from-implicit-to-pkce.html

video:
  - url: https://www.twitch.tv/videos/709079582?t=00h01m01s
    title: "DevNation Tech Talk: 10 awesome Kubernetes tools every user should know"


read_code:
  - url: https://github.com/facebook/pyre-check/
    title: Pysa
    description: |
      an open source static analysis tool we’ve built to detect and prevent security and privacy issues in Python code. Read the [companion post](https://engineering.fb.com/security/pysa/)
    category: ['Python']

  - url: https://github.com/Byron/gitoxide
    title: gitoxide
    description: |
      Implementation of `git` cli(not the server part) in Rust. It's written to optimize the user-experience, and perform as good or better than the canonical implementation(which is C)
    category: ['Rust']

  - url: https://github.com/twilco/kosmonaut
    title: kosmonaut
    description: |
      A web browser for the space age 🚀. Of course I'm not going to use it on my daily web usage, but I would peek to see how this can be done given its current state is still small enough for me to understand
    category: ['Rust']

  - url: https://redis.pjam.me/
    title: "Reimplement Redis in Ruby"
    description: |
      This website is a free, “online book” about attempting to rewrite Redis™* in Ruby. It has 5 chapters righ now. You will learn how to implement a TCP servers, understand Redis protocol so I say that is a lot to learn and super helpful
    category: ['Ruby']

  - url: https://github.com/codenotary/immudb
    title: immudb
    description: |
       lightweight, high-speed immutable database for systems and applications. you can track changes in sensitive data in your transactional databases and then record those changes permanently in a tamperproof immudb database. This allows you to keep an indelible history of sensitive data, for example debit/credit card transactions
    category: ['Go']


tool:
  - url: https://github.com/augmentable-dev/askgit
    title: askgit
    description: |
      Give you a SQL interface to your Git repository. You can query lots of interesting thing about your Git repo using SQL you known.

  - url: https://github.com/agroal/pgagroal
    title: pgagroal
    description: |
      a high-performance protocol-native connection pool for PostgreSQL.

  - url: https://github.com/okbob/plpgsql_check
    title: plpgsql_check
    description: |
      a linter tool for language PL/pgSQL (native language for PostgreSQL store procedures).

  - url: https://github.com/major/MySQLTuner-perl
    title: MySQLTuner
    description: |
       a script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.

  - url: https://github.com/mattiabasone/tuning-primer
    title: MySQL tuning primer
    description: |
      Yet another MySQL performance tuning primer script

  - url: https://github.com/ksensehq/eventnative
    title: eventnative
    description: |
      an open source, high-performance, event collection service. Capture all events your application generates and stream to your preferred Data Warehouse with current support for RedShift and BigQuery. Support one click deploy to Heroku

  - url: https://qmk.fm/
    title: qmk
    description: |
      a keyboard firmware. Useful if you like to build DIY keyboard.

#  - url: https://github.com/trailofbits/sinter
#title: sinter

  - url: https://github.com/jesseduffield/horcrux
    title: horcrux
    description: "Split your file into encrypted horcruxes so that you don't need to remember a passcode"

  - url: https://github.com/theforeman/foreman
    title: foreman
    description: |
      an application that automates the lifecycle of servers
{'fraction_non_alphanumeric': 0.07056198577604239, 'fraction_numerical': 0.007390879933063729, 'mean_word_length': 3.5696686491079013, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 76, 'lorem ipsum': 0, 'www.': 12, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4000346', 'n_tokens_mistral': 6180, 'n_tokens_neox': 5794, 'n_words': 2676}