Monday, March 30, 2020

TCP/IP vs ISO/OSI

good story!

OSI: The Internet That Wasn’t - IEEE Spectrum


OSI vs TCP/IP

AWS Secrets Manager vs Parameter Store

An Inside Look At AWS Secrets Manager vs Parameter Store – Linux Academy

AWS (Secrets Manager vs. Parameter Store) - Sherif Abdalla - Medium

In Amazon Web Services (AWS), you can find a variety of services covering almost all infrastructure requirement. Among the most popular services is the AWS Secret Manager, Parameter Store, and the KMS. These three infrastructures have differences and slight similarities
AWS Secrets Manager vs. Hashicorp Vault vs. AWS Parameter Store - By Ewere Diagboya

Sunday, March 29, 2020

grpc-gateway: gRPC to JSON proxy generator

grpc-ecosystem/grpc-gateway: gRPC to JSON proxy generator following the gRPC HTTP spec @GitHub

"The grpc-gateway is a plugin of the Google protocol buffers compiler protoc. It reads protobuf service definitions and generates a reverse-proxy server which 'translates a RESTful HTTP API into gRPC. This server is generated according to the google.api.http annotations in your service definitions.
This helps you provide your APIs in both gRPC and RESTful style at the same time."
architecture introduction diagram

gRPC [Node.js] MasterClass: Build Modern API & Microservices | Udemy

Tesla Virtual Power Plant

Tesla Virtual Power Plant

VPP is a network of distributed energy-resources (often solar, wind, batteries) that are aggregated to provide smarter and more flexible power generation, distribution, and availability. Tesla's VPP consists of vertically integrated hardware and software, including both cloud and edge computing.




"Tesla is working on a giant virtual power plant made of 50,000 Powerwalls and solar systems in Australia and the local government says that the first phases have shown a reduction in electricity rates by “more than 20%.”

gRPC reflection, Evans CLI

ktr0731/evans: Evans: more expressive universal gRPC client @GitHub
Evans

gRPC Golang Reflection and CLI - YouTube
by Stephane Maarek

gRPC Reflection & Evans CLI - gRPC [Golang] Master Class: Build Modern API and Microservices


gRPC Java Reflection and CLI - YouTube


gRPC [Node.js] MasterClass: Build Modern API & Microservices | Udemy


grpc-ecosystem/awesome-grpc: A curated list of useful resources for gRPC



Protocol Buffers in gRPC - YouTube

4 Types of API in gRPC - YouTube

gRPC and gRPC Reflection - Ruangguru Engineering - Medium


GRPC Core: gRPC Server Reflection Tutorial


Go Gets New Reflection-Based Protocol Buffers API

"Go's new bindings for protocol buffers, Google's language-neutral data interchange format that aims to replace JSON for high-performance applications, aim to merge the protocol buffer type system within Go's type system and enable its manipulation at runtime."

Saturday, March 28, 2020

gRPC Node.js & gRPC Web

@grpc
Deep Dive: gRPC Node - Michael Lumish, Google - YouTube
presentation by main maintainer of gRPC Node, 2018

There are two implementations,

1) one common core binary/native created by Google in C/C++ and wrapped for usage by JavaScript in Node.js, and used in many other languages (Python, Ruby, C# etc) as well.

2) second written in TypeScript, that re-implements (essential part) of gRPC.
The features are performance are less, but deployment is simpler.

they currently have very similar number of NPM downloads

grpc.io
gRPC – A high-performance, open source universal RPC framework

1) grpc - npm @NPM

github.com/grpc/grpc-node

2) @grpc/grpc-js - npm @NPM

github.com/grpc/grpc-node/tree/master/packages/grpc-js


grpc/grpc-web: gRPC for Web Clients

"gRPC-Web clients connect to gRPC services via a special gateway proxy: the current version of the library uses Envoy by default, in which gRPC-Web support is built-in."

using "proxy" on server side, translating REST requests from browser to gRPC

Getting Started with gRPC and JavaScript - Colin Ihrig, Joyent - YouTube

Colin Ihrig - Getting Started with gRPC and Node.js - nodejsday 2019 - YouTube

gRPC - Wikipedia

gRPC Packages

gRPC – Tutorials

Python Blockchain


dvf/blockchain: A simple Blockchain in Python @GitHub
Learn Blockchains by Building One


Wednesday, March 25, 2020

Tesla touch-less delivery options

Tesla introduces several new car delivery options - Electrek

Tesla Direct Drop: Designed as a completely touchless delivery experience, we will drop your new vehicle at a location of your choosing — typically a home or workplace — without any required interaction. Just complete all required paperwork, let us know where you’d like the car, and we’ll drop it off and leave the vehicle for you to unlock via the Tesla app. Please note that payment, paperwork, and e-sign agreements must be completed in full prior to delivery, and you are required to send back any remaining physical paperwork in the vehicle via a pre-paid shipping envelope within 24 hours.

Friday, March 20, 2020

IoT telematics based insurance

Nationwide Teams up with Toyota, Ford, Lincoln to Offer Insurance Featuring Telematics Solution

"Nationwide, along with Toyota, Ford and Lincoln, recently announced partnerships to offer customers insurance options at a potential large discount, based on data collected by their connected vehicles about their driving habits."

Toyota customers who purchase an auto insurance policy and opt-in to share their driving data will automatically receive an initial 10% SmartRide participation discount.

Upon completing the collection of driving data for 90 days, customers can earn up to a 40% final discount.

Thursday, March 19, 2020

web: Svelte Javascript Framework

excellent podcast interview with creator of Svelte

Episode 402: Rich Harris on the Svelte Javascript Framework : Software Engineering Radio

"Rich Harris, author of the Javascript module bundler Rollup, discusses with SE Radio’s Adam Conrad his Javascript framework Svelte as a high-performance alternative to mainstay frameworks such as React, Angular, and Vue"
Svelte’s Twitter – https://twitter.com/sveltejs

Tuesday, March 17, 2020

Performance: JavaScript vs Python vs Rust vs WASM

NodeJS vs. Python 3 Performance - DEV Community 

Problem 7 - Project Euler
What is the 10 001st prime number?

nodejs vs python 3

LanguageVersionTime
JS10.7.31.64s
Python3.7.126.24s
Rust1.35.00.78s
On another machine
JS: getPrime(10001)=104743 elelapsedTime=5633 ms
RS WASM: get_prime(10001)=104743 elelapsedTime=5176 ms

Monday, March 16, 2020

HTTP testing: Postman Echo

Postman Echo

Postman Echo is service you can use to test your REST clients and make sample API calls. It provides endpoints for GETPOSTPUT, various auth mechanisms and other utility endpoints.
The documentation for the endpoints as well as example responses can be found at https://postman-echo.com

Introduction to WebAssembly (WASM)

Introduction to WebAssembly — Rasmus Andersson

GitHub += npm

npm is joining GitHub - The GitHub Blog
GitHub has signed an agreement to acquire npm.
npm is joining GitHub

Sunday, March 15, 2020

data meaning: "status" vs. "state"


In program code and database it is very often needed to name variable or field
that describes current "state" or "status" of an object or a record. What is the correct name, though?
That depends on context, and the meaning is NOT exactly same, and it is not arbitrary. 
  • "state" is specific, where value can be one of pre-defined known distinct values, with conditions, like in context of "state machine", i.e. state of shopping cart: empty, open, closed etc.
  • "status" is broader and is a result of an action or activity, where it could indicate an error or also include resulting state, i.e. status of adding item to shopping cart error for insufficient funds. 
So simple rule for programming: when all possible values for an fields are known and defined better name  "state", and when all values are not known or defined that this is a "status". 


"systems engineering definition:
  • A system is in a certain "state" at a point in time when the system meets a pre-defined set of criterion, i.e. on shopping website, a user's shopping cart enters a different state when the customer adds an item to it.
  • A "status", in the context of states of a system, describes the transition into a state. For example, the user of our online shop may attempt to add an item to their cart. The transition into the state that describes the item being in the cart may be blocked if the status of the transition signals an error (i.e. the item is out of stock).
... state exists (or does not exist) irrespective of time. A status, however, describes the outcome of an action at a particular point in time."




React: Facebook Messenger: Project LightSpeed

Project LightSpeed: Rewriting Messenger to be faster, smaller, and simpler



Dan Abramov on Twitter: "What’s going on with React Native and Messenger? There’s many hot takes, but I’ll stick to my understanding of the facts. A thread so that I don’t have to copy and paste this in replies:" / Twitter

Saturday, March 14, 2020

Variable-length encoding

LEB128 - Wikipedia


LEB128 or Little Endian Base 128 is a form of variable-length code compression used to store an arbitrarily large integer in a small number of bytes. LEB128 is used in the DWARF debug file format[1][2] and the WebAssembly binary encoding for all integer literals.[3]
MSB ------------------ LSB
      10011000011101100101  In raw binary
     010011000011101100101  Padded to a multiple of 7 bits
 0100110  0001110  1100101  Split into 7-bit groups
00100110 10001110 11100101  Add high 1 bits on all but last (most significant) group to form bytes
    0x26     0x8E     0xE5  In hexadecimal

→ 0xE5 0x8E 0x26            Output stream (LSB to MSB)

What is most significant bit or byte? - Definition from WhatIs.com

The most significant bit (MSB) is the bit in a multiple-bit binary number with the largest value. This is usually the bit farthest to the left, or the bit transmitted first in a sequence. For example, in the binary number 1000, the MSB is 1, and in the binary number 0111, the MSB is 0.

leb128 · GitHub Topics

wasm-LEB128/unsigned.js at master · shmishtopher/wasm-LEB128
(JavaScript)


UTF-8 - Wikipedia

The Long-Term Stock Exchange

From author of "Lean Startup" book, here comes potential transformation of stock markets

Eric Ries: Long-Term Stock Exchange - The Long Now

"In 02019, the Long-Term Stock Exchange was approved as the country’s 14th and newest stock exchange. It offers a new framework for companies to raise capital while keeping their focus on long-term results. By requiring participating companies to accept a set of governance standards and incentive systems that deprioritize the short-term, the Long-Term Stock Exchange hopes to reward investments and business strategies that focus on a longer time horizon.

Eric Ries is the founder and CEO of Long-Term Stock Exchange. He created the Lean Startup methodology and is author of The Lean Startup and The Startup Way. Ries founded IMVU and served as an Entrepreneur-in-Residence at Harvard Business School, IDEO, and Pivotal."

The Long-Term Stock Exchange Comes to Life - LTSE Blog

The LTSE is designed to remove the short-term pressures that plague today’s public markets and reorient companies and investors around long-term thinking. Through brand new listing standards, software tools, and advocacy, we’re reinventing the public company experience with novel approaches to executive compensation, shareholder voting, disclosure practices, board and stakeholder policies, and community governance.

gRPC info


very informative podcast interview with gRPC core team member, and useful links

gRPC, with Richard Belleville - Kubernetes Podcast from Google



Friday, March 13, 2020

SQL.js: SQLite.c => WASM (WebAssembly)

kripken/sql.js: SQLite compiled to JavaScript through Emscripten

"sql.js is a port of SQLite to Webassembly, by compiling the SQLite C code with Emscripten, with contributed math and string extension functions included. It uses a virtual database file stored in memory, and thus doesn't persist the changes made to the database. However, it allows you to import any existing sqlite file, and to export the created database as a JavaScript typed array.
There are no C bindings or node-gyp compilation here, sql.js is a simple JavaScript file, that can be used like any traditional JavaScript library. If you are building a native application in JavaScript (using Electron for instance), or are working in node.js, you will likely prefer to use a native binding of SQLite to JavaScript.
SQLite is public domain, sql.js is MIT licensed.
Sql.js predates WebAssembly, and thus started as an asm.js project. It still supports asm.js for backwards compatibility."