Sunday, June 24, 2018

Polly: .NET resilience & transient-fault-handling library

The Polly Project

A tool useful for .NET based cloud apps, part of .NET foundation.
The "Polly" name is derived from "policy":
declarative handling of transient errors.

The Polly Project

Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. Polly targets .NET 4.0, .NET 4.5 and .NET Standard 1.1.

similar tool for Java:


patterns described:

Flutter: Release Preview 1 (Dart + mobile)

Flutter Logo

Announcing Flutter Release Preview 1 – Flutter – Medium

Technical Overview - Flutter
"Flutter is a mobile app SDK for building high-performance, high-fidelity, apps for iOS and Android, from a single codebase.
The goal is to enable developers to deliver high-performance apps that feel natural on different platforms. We embrace differences in scrolling behaviors, typography, icons, and more."

Friday, June 22, 2018

photo clouds: SmugMug += Flicker; Unsplash

podcast interview:
Triangulation 351 SmugMug and Flickr

this also means AWS += tens of billions of photos on Flickr


There are also many free web sites for hosting photos,
not even counting Facebook and Google.

Beautiful Free Images & Pictures | Unsplash

License | Unsplash
"All photos published on Unsplash can be used for free. You can use them for commercial and noncommercial purposes. You do not need to ask permission from or provide credit to the photographer or Unsplash, although it is appreciated when possible."

Unsplash API | Free HD Photo API
Unsplash API Documentation | Free HD Photo API | Unsplash

A view from the orbit on an artificial satellite over white clouds on the ocean

Wednesday, June 20, 2018

Angular: Dynamic Forms

Angular - Dynamic Forms

"Building handcrafted forms can be costly and time-consuming, especially if you need a great number of them, they're similar to each other, and they change frequently to meet rapidly changing business and regulatory requirements."
See the live example / download example.

This cookbook uses reactive forms.

Reactive forms is an Angular technique for creating forms in a reactive style. 
Try the
Reactive Forms live-example / download example.

Angular offers two form-building technologies: reactive forms and template-driven forms. The two technologies belong to the @angular/forms library and share a common set of form control classes.

With reactive forms, you create a tree of Angular form control objects in the component class and bind them to native form control elements in the component template

  1. new DropdownQuestion({
  2. key: 'brave',
  3. label: 'Bravery Rating',
  4. options: [
  5. {key: 'solid', value: 'Solid'},
  6. {key: 'great', value: 'Great'},
  7. {key: 'good', value: 'Good'},
  8. {key: 'unproven', value: 'Unproven'}
  9. ],
  10. order: 3
  11. }),

Hugo: tool for creating static web sites
"The world’s fastest framework for building websites
Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again."


Deploying to Google Kubernetes Engine - Code as Craft

Tuesday, June 19, 2018

AI 4 Code: VS IntelliCode

Introducing Visual Studio IntelliCode | The Visual Studio Blog

"Visual Studio IntelliCode brings you the next generation of developer productivity by providing AI-assisted development. Every keystroke and every review is informed by best practices and tailored to your code context. You can try it out today by downloading the experimental extension for Visual Studio 2017 that provides AI-powered IntelliSense."

Assistance with every review

AI, voice: Google Assistant "Actions"

How voice interface works?
Google Assistant supports "Actions" that are configurable,
and support voice syntheses in SSML

Informative podcast interview with many useful links:
Actions on Google with Mandy Chan | Google Cloud Platform Podcast

Build Actions for the Google Assistant (Level 1)

"Actions on Google is a developer platform that lets you create software to extend the functionality of the Google Assistant, Google's virtual personal assistant, across more than 500 million devices, including smart speakers, phones, cars, TVs, headphones, and more."

  • Your Actions run entirely in the cloud, even when users talk to them on their phone, smart home device, or watch.
  • Every Action supports a specific intent and has a corresponding fulfillment that processes the intent.
  • The user's device sends the user's utterance to the Google Assistant, which routes it to your fulfillment service via HTTP POST requests.
  • Your fulfillment figures out a relevant response and sends that back to the Assistant, which ultimately returns it to the user.

SSML-Builder - Building Better Google Home and Amazon Alexa Skills

Build natural and rich conversational experiences
Powered by Google's machine learning

Monday, June 18, 2018

free ebook: Microservices, events, and upside-down databases

Designing Event-Driven Systems
171 pages

" to apply patterns including Event Sourcing and CQRS, and how to build multi-team systems with microservices and SOA using patterns such as "inside out databases" and "event streams as a source of truth."
Event streaming as the source of truth | Technology Radar | ThoughtWorks

Microservices, events, and upside-down databases - O'Reilly Media

Git patterns and anti-patterns

Git patterns and anti-patterns for successful developers | Microsoft Build 2018 | Channel 9

Release Flow: How We Do Branching on the VSTS Team – Microsoft DevOps Blog

Illustration: prior branch strategy with multi-level team branches

Trunk Based Development

"A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.
* trunk = master, in Git nomenclature"

Trunk-Based Development is not a new branching model. The word ‘trunk’ is referent to the concept of a growing tree, where the fattest and longest span is the trunk, not the branches that radiate from it and are of more limited length.

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

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

base64 encoded, 22 chars: Ej5FZ-ibEtOkVkJmVUQAAA

import ""
import "encoding/base64"
uid, err := uuid.NewV4()
"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 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.
mux/mux.go at master · gorilla/mux

Beego: An open-source, high-performance web framework for the Go programming language.

Buffalo: Rapid Web Development w/ Go.

Echo: A high performance, minimalist Go web framework.

Gin: HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance.

Iris: The fastest web framework for Go in The Universe. MVC fully featured. Embrace the future today.

Revel: A high productivity, full-stack web framework for the Go language.

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


Kestrel vs Gin vs Iris vs Express vs Fasthttp on EC2 nano ·

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 (

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

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

Buy Apple TV 4K - Apple

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."


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 -

"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 -

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


» 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..." // Good // Avoid

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

GET 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

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