Friday, June 15, 2018

Elon Musk's Chicago 'Express Loop'


The Boring Company to build Chicago O’Hare airport link - Metro Report

"The Boring Company has been selected to design, build, finance, operate and maintain a service of autonomous electric vehicles running in tunnels connecting central Chicago with O’Hare International Airport, Mayor Rahm Emanuel announced on June 14.
"


The Craziest Thing About Elon Musk's 'Express Loop' Is the Price- CityLab

"The Boring Company, the tunneling venture Tesla CEO Elon Musk started in 2016 out of his personal frustration with surface-level gridlock, has made a significant step towards evolving beyond billionaire-passion project: The company has been selected to build and operate an 18-mile, 12-minute rapid transit connection between Chicago’s downtown Loop and O’Hare International Airport, according to news reports.

If the Boring Company’s cost projection of $1 billion is anywhere near accurate, that pencils out to $55.5 million per mile—far and away, the cheapest construction cost for any subterranean transit line in the U.S."



Elon Musk, Rahm Emanuel address skeptics of high-speed Chicago train - YouTube

Tesla will build the ‘pods’ for the Boring Company’s Loop, says Elon Musk | Electrek


Cloud Kubernetes Service: AWS EKS, Azure AKS, both "GA"

The race is on... for GA = Generally Available (not Beta anymore)

Elastic Container Service for Kubernetes (EKS)

AWS Releases Elastic Container Service for Kubernetes (EKS) @ InfoQ

Amazon EKS – Now Generally Available | AWS News Blog



Azure Kubernetes Service (AKS) GA | Azure Friday | Channel 9

"Brendan Burns ... discuss GA of Azure Kubernetes Service (AKS). Developers can drastically simplify how they build and run container-based solutions without deep Kubernetes expertise."

Thursday, June 14, 2018

Databases: UUID as an ID

Output UUID in Go as a short string - Stack Overflow

example:
hex encoded, 36 chars: 123e4567-e89b-12d3-a456-426655440000

base64 encoded, 22 chars: Ej5FZ-ibEtOkVkJmVUQAAA

GoLang:
import "github.com/satori/go.uuid"
import "encoding/base64"
...
uid, err := uuid.NewV4()
base64.RawURLEncoding.EncodeToString(uid[:])
"base64.RawURLEncoding produces a base64 string (without padding) which is safe for URL inclusion, because the 2 extra chars in the symbol table (beyond [0-9a-zA-Z]) are - and _, both which are safe to be included in URLs"

Store UUID in an optimized way

UUID performance in MySQL? - Stack Overflow

MySQL GUID/UUID Performance Breakthrough

MySQL InnoDB Primary Key Choice: GUID/UUID vs Integer Insert Performance :: KCCoder

IoT: Voice controlled Alexa enabled USB charger

A bit strange combination, why would USB changer in car need voice control and internet connection? A random mutation in the IoT evolution, for natural selection...
No GUI may be good in car, if it works...

VIVA - Roav

Amazon.com: Roav VIVA, by Anker, Alexa-Enabled 2-Port USB Car Charger for In-Car Navigation, Hands-Free Calling and Music Streaming (Spotify Available Soon). For Cars with Bluetooth/CarPlay/Android Auto/Aux In: Cell Phones & Accessories

Tuesday, June 12, 2018

GoLang Web Frameworks

GoLang core packages support most of HTTP out of the box.
Still, there are useful libraries, or even frameworks that can help making web apps better in Go.

diyan/go-web-framework-comparsion: Golang Web Framework Comparsion @ GitHub

Gorilla/mux: A powerful URL router and dispatcher for golang.
https://github.com/gorilla/mux/blob/master/mux.go
mux/mux.go at master · gorilla/mux

Beego: An open-source, high-performance web framework for the Go programming language.
https://github.com/astaxie/beego
https://beego.me

Buffalo: Rapid Web Development w/ Go.
https://github.com/gobuffalo/buffalo
https://gobuffalo.io

Echo: A high performance, minimalist Go web framework.
https://github.com/labstack/echo
https://echo.labstack.com

Gin: HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance.
https://github.com/gin-gonic/gin
https://gin-gonic.github.io/gin

Iris: The fastest web framework for Go in The Universe. MVC fully featured. Embrace the future today.
https://github.com/kataras/iris
https://iris-go.com

Revel: A high productivity, full-stack web framework for the Go language.
https://github.com/revel/revel
https://revel.github.io

7 Frameworks To Build A REST API In Go | Nordic APIs 

Top 6 web frameworks for Go as of 2017 – Noteworthy - The Journal Blog




Golang Guide: A List of Top Golang Frameworks, IDEs & Tools

Why I Don’t Use Go Web Frameworks – Code Zen – Medium


performance:

Kestrel vs Gin vs Iris vs Express vs Fasthttp on EC2 nano · dizzy.zone

tbrand/which_is_the_fastest: Which is the fastest web framework?




Programming languages used in most popular websites - Wikipedia

Sunday, June 10, 2018

"Platform Uno": UWP for iOS, Android, WebAssembly



Interesting solution: using Universal Windows Platform (UWP) C#/XAML to run native mobile apps on iOS, Android & Web.

It is similar to (now Microsoft) Xamarin, but using variant of XAML
that is same as on Windows & Visual Studio.

If web GUI performance was improved a bit sooner, all this mobile variety would not be needed.


Open Sourcing Uno with Francois Tanguay and Jerome Laban @ .NET Rocks! vNext

Uno (http://platform.uno/)

nventive/Uno: The Uno Platform, the UWP bridge for iOS, Android, and WebAssembly @ GitHub

Supported platforms:
  • Windows (via the standard UWP Toolkit)
  • iOS and Android (via Xamarin)
  • WebAssembly through the Mono Wasm SDK

Noms: database that works like Git (and how Git works)

At its essence, Git is a relatively simple files-based content management tool.
The tool has many not so intuitive commands, but internals are logical and simple.

Now that GitHub is becoming (very expensive) part of Microsoft,
Git's importance is guarantied. After all, like Linux, it is everywhere.
Even Windows source code is in Git (and Linux commands are included in Windows, too).
By the way, Google is not using Git internally, but is using GitHub heavily.

Internals of Git are technically interesting,
and concepts are potentially reusable for many other areas
where content and data version, branching, merging could be applied.

For example:
  • Web sites content could be represented by SHA1 (or SHA256) hashes,
    and on distribute only changes on request for efficiency.  
  • Databases typically do not have native support for versioning,
    and even when they do this is typically simple timestamp based records.
  • Such data & content storage would benefit from "white-only" nature,
    since every update is effectively a new write,
    and since only changes are saved this is still very efficient,
    and would be very easy to replicate and run in parallel. 

A very good class:
How Git Works | Pluralsight by Paolo Perrotta

A public/free version 
A reference book:
Git - Git References

Slides:
New Views on your History with git replace


By now, almost every idea is already implemented in some way...
In GoLang, as it is modern now :)

attic-labs/noms: The versioned, forkable, syncable database
"Noms is a decentralized database philosophically descendant from the Git version control system."





Saturday, June 09, 2018

gadget: Amazon Fire 4K TV Cube with Alexa

Voice interface is nothing new for TVs, it is even included with every Comcast remote control.
Amazon keep extending they home system with more gadgets and cloud services...

Amazon Fire TV Cube | Hands-free with Alexa | Streaming Media Player
$119

vs.
Buy Apple TV 4K - Apple
$179

Designing robust and predictable APIs

Very interesting and useful observation:

Designing robust and predictable APIs with idempotency
by Brandur Leach from Stripe engineering

"Idempotent API: means that they can be called any number of times while guaranteeing that side effects only occur once."




"a few core principles to follow while designing your clients and APIs:
  • Make sure that failures are handled consistently.
    Have clients retry operations against remote services.
    Not doing so could leave data in an inconsistent state that will lead to problems down the road.
  • Make sure that failures are handled safely.
    Use idempotency and idempotency keys to allow clients to pass a unique value and retry requests as needed.
  • Make sure that failures are handled responsibly.
    Use techniques like exponential backoff and random jitter.
    Be considerate of servers that may be stuck in a degraded state."

CSI: Container Storage Interface

Container Storage with Jie Yu - Software Engineering Daily

"Kubernetes is not the only container orchestrator. There’s also Cloud Foundry, Mesos, Docker Swarm, and several others. Each of these container orchestrators needs to be able to run a variety of persistent workloads (such as a MySQL database or a Kafka cluster). Each of these persistent workloads needs to be able to use different types of backing storage.

With the range of container orchestrators and the range of backing storage types, a problem arises. Every storage type would have to write custom code to connect to each container orchestrator.

The solution to this is the CSI: the container storage interface."


CSI Logo

Container Orchestrators (CO)

Future of Computing: specialized processors

podcast interview with chairman of Alphabet, how was also president of Stanfrord, recived Turing award for RISC architecture etc.

The future of computing: a conversation with John Hennessy (Google I/O '18) - YouTube




 Future of Computing with John Hennessy - Software Engineering Daily

Wednesday, June 06, 2018

AWS Well-Architected

AWS Well-Architected - Build secure, efficient, cloud enabled applications

"The Well-Architected framework has been developed to help cloud architects build the most secure, high-performing, resilient, and efficient infrastructure possible for their applications. This framework provides a consistent approach for customers and partners to evaluate architectures, and provides guidance to help implement designs that will scale with your application needs over time."


aws-reference-architecture-chatbot

WSL: Windows Subsystem for Linux

WSL (used to be "bash on Windows")  is now a simple command in Windows:
a portal to using alternative shells, and could use multiple different shells at the same time in separate windows.

The year of Linux on the (Windows) Desktop - WSL Tips and Tricks - Scott Hanselman

Install the Linux Subsystem on Windows 10 | Microsoft Docs

Windows Subsystem for Linux - Wikipedia

Microsoft's Windows Subsystem For Linux - More Details About How Bash On Windows 10 Works

Windows Subsystem For Linux

Tuesday, June 05, 2018

ng-bootstrap: Angular + Bootstrap

Angular powered Bootstrap
"Bootstrap 4 components, powered by Angular
...
A number of team members are core Angular contributors."

demo: Angular powered Bootstrap


previous version, for AngularJS (v1):

Google Photos PWA: Progressive Web App

Google Photos Goes PWA - Thurrott.com

"The Google Photos website has been converted to a Progressive Web App (PWA) so that it can be installed on Chromebooks and other PCs.
Today, that means Chromebooks. But if you enable the PWA features hidden in Chrome 67 on Windows or Mac, you can also install Google Photos on those systems"
Google Photos now available as a Progressive Web App


This is What Google Said About PWAs at I/O 2018 - Thurrott.comThis is What Google Said About PWAs at I/O 2018
Microsoft's Bold Plan to Bring PWAs to Windows 10 - Thurrott.com

Sunday, June 03, 2018

Microsoft += GitHub


Microsoft confirms it will acquire GitHub for $7.5 billion - The Verge
"GitHub will now be led by CEO Nat Friedman, the founder of Xamarin, who will report to Microsoft’s Cloud and AI chief Scott Guthrie. GitHub CEO and co-founder Chris Wanstrath will now become a technical fellow at Microsoft, also reporting into Guthrie."



Microsoft Buys GitHub for $7.5 Billion – Andreessen Horowitz


Microsoft is reportedly acquiring GitHub | TechCrunch

Microsoft has reportedly acquired GitHub - The Verge

"Microsoft is the top contributor to the site, and has more than 1,000 employees actively pushing code to repositories on GitHub. The service was last valued at $2 billion back in 2015, but it’s not clear exactly how much Microsoft has paid to acquire GitHub."

Microsoft Is Said to Have Agreed to Acquire Coding Site GitHub - Bloomberg
"GitHub hosts 27 million software developers working on 80 million repositories of code."



Angular + Google Maps (AGM)



Angular 2+ Google Maps Components


SebastianM/angular-google-maps: Angular 2+ Google Maps Components @ GitHub


@agm/core

» Play with Angular Google Maps on Stackblitz
angular-google-maps-demo - StackBlitz


Getting started with Angular Google Maps (AGM)


Google Maps & Angular | ANGULAR SNIPPETS - YouTube


In the meantime, Google is adjusting pricing of maps API:

User Guide | Google Maps Platform  |  Google Maps Platform  |  Google Cloud
"Beginning on June 11, 2018, you’ll need to enable billing with a credit card and have a valid API key for all projects. This will give you the ability to scale easily with less downtime and fewer performance issues. In addition, we’re simplifying our 18 individual APIs into three products: Maps, Routes, and Places.
(on the same date) ...would stop supporting keyless usage, meaning any request that doesn’t include an API key or Client ID"

Pricing & Plans | Google Maps Platform  |  Google Maps Platform  |  Google Cloud

Saturday, June 02, 2018

REST API design & Microservices

We have switched from XML to JSON, from wrappers and namespaces to HTTP URLs and headers,
but the process of building and maintaining Web APIs / services is still mostly manual.
This is a useful document:

API design guidance | Microsoft Docs

"In 2000, Roy Fielding proposed Representational State Transfer (REST) as an architectural approach to designing web services. REST is an architectural style for building distributed systems based on hypermedia. REST is independent of any underlying protocol and is not necessarily tied to HTTP. However, most common REST implementations use HTTP as the application protocol..."


http://adventure-works.com/orders // Good http://adventure-works.com/create-order // Avoid


POST http://adventure-works.com/orders HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 57 {"Id":1,"Name":"Gizmo","Category":"Widgets","Price":1.99}

GET http://adventure-works.com/orders/2 HTTP/1.1 Accept: application/json






ebook: Building Microservices


free preview edition (subset)
How to Adopt Microservices - Oreilly ebook | NGINX

Building Microservices: Designing Fine-Grained Systems - Sam Newman - Google Books

video:
Sam Newman Principles Of Microservices
"This talk is distillation of what makes microservices different from normal services"



More on this topic from another person from ThoughtWorks
  
Microservices Guide by Martin Fowler


Microservices @ InfoQ

microservices at real scale:

Friday, June 01, 2018