Saturday, June 30, 2018

IoT AI: Watch with Alexa



Take Alexa with you everywhere you go with this sleek smartwatch – BGR

"Seamleasly integrated with Alexa, Amazon’s cloud-based voice service. Just tap and ask Alexa, to enjoy thousands of skills on the go, such as hearing the latest news, weather and traffic reports, check sport scores, and much more.
Connect tastefully blends the longevity of an analog watch with smartwatch convenience – lasting 3-5 days on a single charge and up to 2 years on analog. Supports iOS 8/android 4.0.3 and later"


Amazon.com: GUESS Men's Stainless Steel Connect Smart Watch - Amazon Alexa, iOS and Android Compatible, Color Black (Model: C0001G5): Watches
$199

AI book: Life 3.0 & Cloud FPGA customizable HW



podcast interview with MIT Physicist Max Tegmark on Life 3.0: What We Do Makes a Difference
@ Singularity.FM

Life 3.0: Being Human in the Age of Artificial Intelligence: Max Tegmark: 9781101946596: Amazon.com: Books

The concept is interesting:

  • Life 1.0: improvements by evolution, random changes & natural selection
  • Life 2.0: improvements by learning: chancing "software" 
  • Life 3.0: improvements by design: intentional optimizing of "hardware" 
While for human and other live biological species this concept is still a challenge,
for "cloud based" computers this is already a reality!

Besides options to select HW for the task, such as faster IO, more memory, GPU,
they also offer FPGA: modifiable processors, where microcode can be changed to optimize for specific tasks, such as database, web servers, AI etc, it is possible to speed up 10 or more times.


Amazon and Microsoft already offer such option on their clouds:


Inside the Microsoft FPGA-based configurable cloud
"Azure Accelerated Networking... The bandwidth between two VMs inside Azure, even with a 40-gigabit network adapter on each VM, is only around 4Gbps per second; with FPGA-accelerated networking, that goes up to 25Gbps, with five to ten times less latency"



For Google FPGA optimization seems to be not sufficient:
they prefer complete custom HW design, in particular for AI tasks. 

"Google's answer: FPGAs are much less power efficient than ASICs due to their programmable nature. The TPU has an instruction set, so as TensorFlow programs change or new algorithms are developed they can run on the TPU."

Periodic Table of DevOps Tools

Periodic Table of DevOps Tools


12-Factor Web Apps

"The twelve-factor app is a methodology for building software-as-a-service (web) apps:"

The Twelve-Factor App

Twelve-Factor App methodology - Wikipedia


Stack Overflow for Teams



for some things it may be better than Slack or MS Office Teams...

Stack Overflow for Teams

"Stack Overflow for Teams is a private, secure home for your team’s questions and answers. No more digging through stale wikis and lost emails—give your team back the time it needs to build better products."

Wednesday, June 27, 2018

go-git: Git implementation in GoLang

interesting...

src-d/go-git: A highly extensible Git implementation in pure Go. @ GitHub

"It can be used to manipulate git repositories at low level (plumbing) or high level (porcelain), through an idiomatic Go API. It also supports several type of storage, such as in-memory filesystems, or custom implementations thanks to the Storerinterface.

It's being actively develop since 2015 and is being use extensively by source{d} and Keybase, and by many other libraries and tools."

git - GoDoc

Git - go-git : Embedding Git in your Applications - go-git

go-git A pure Go implementation of Git - YouTube

go-git logo








another, different tool
Gogs: A painless self-hosted Git service
gogs/gogs: Gogs is a painless self-hosted Git service. @ GitHub

How to Install Gogs Go Git Service on Ubuntu 16.04

Gogs vs GitLab detailed comparison as of 2018 - Slant

Microsoft Teams PWA with Angular & Chromium

Microsoft Teams is a new, very fast growing member of Office family.
It competes with Slack, a very popular app for enterprise (and other) collaboration.
Microsoft Teams is included in some of Office 365 subscriptions and is well integrated.

Architecture of Teams is a bit unusual for Microsoft product:
it is based on client side web technologies, including Angular and related,
and is packaged with "web shell" based on Electron/Chromium.
Essentially Microsoft is leveraging some Google's open source tools for new flagship product!


very informative interview:
The latest in Teams - MS Dev Show Podcast


Microsoft Teams PWA (Progressive Web App) Preview, but for Windows 10 S Mode only? - Tom Talks

"Microsoft Teams is built from the ground up using modern web technologies; Angular, TypeScript, Webpack, SASS and more. It uses over 200 different OSS components and is designed to share as much code as possible between different clients."




Screenshot of the "More options" menu next to the channel name, with the Connectors option selected





Tuesday, June 26, 2018

free ebook: Anti-fragile ICT Systems




What is ICT?
Information and communications technology - Wikipedia


Open-Access Book: Anti-fragile ICT Systems


Anti-fragile ICT Systems | SpringerLink: PDF & ePUB

"The book applies four design principles and one operational principle to achieve anti-fragility for different classes of incidents. It discusses how systems can achieve high availability, prevent malware epidemics, and detect anomalies. Analyses of Netflix’s media streaming solution, Norwegian telecom infrastructures, e-government platforms, and Numenta’s anomaly detection software show that cloud computing is essential to achieving anti-fragility for classes of events with negative impacts."

related book: Antifragile 


related book:  The Black Swan 

Underwater Cloud DataCenter

Microsoft tests Project Natick, self-sustaining underwater datacenter - YouTube

Under the sea, Microsoft tests a datacenter that’s quick to deploy, could provide internet connectivity for years | Stories

Project Natick Phase 2

"A research project to determine the feasibility of subsea datacenters powered by offshore renewable energy"

Monday, June 25, 2018

Open API (Swagger) code generators

swagger-api/swagger-codegen: swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. @ GitHub

"swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition."
For many languages... requires java to generate code

Another one in GoLang:


"This package contains a golang implementation of Swagger 2.0 (aka OpenAPI 2.0): it knows how to serialize and deserialize swagger specifications.
Swagger is a simple yet powerful representation of your RESTful API."

https://goswagger.io

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:


podcast:


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

SmugMug



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

https://gohugo.io/
"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."

K8S @ GCP GKE 😉

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

Dialogflow
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

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

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