Sunday, August 19, 2018

Microsoft AI for Earth

AI for Earth with Jennifer Marsman @ .NET Rocks! vNext

VR/AR Art  MediSwarm  AI for Earth  FarmBeats  AI for Accessibility  Project Premonition Land Cover Mapping  Project Premonition  FarmBeats  WildMe  iNaturalist

Microsoft AI for Earth | Using AI to advance sustainability

Microsoft AI for Earth - Projects


System Design Primer

GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Wasm: GoLang vs. .Net

WebAssembly (wasm) is getting ready for its prime time
since all major browsers now have support for it.

Essentially, wasm provides universal "virtual machine"
with small subset of JavaScript commands, that can be provided either as a binary "bytecode" or as a script.
The performance is close to code compiled directly to machine language (i.e. factor of 2).
The security model is same as for JavaScript, meaning as good as it gets for web.
For web browsers that don't natively support wasm, there are "shims" that interpret commands in standard JavaScript, obviously with performance penalty, (i.e. factor of 5).
Wasm is already fast enough even for many action games, that used to be possible only with native apps. And since wasm apps are pure web apps, the distribution is quite optimal.

Except for C and C++ programs (usually games), it is in theory possible to convert programs in any strongly typed  language to wasm, and there are already good examples.

A typical use-case for using languages as Go and C# in web browser
is re-using server based business logic in client side web apps and even SPAs (single page web apps)

Google is actively working on making GoLang run with wasm, and
Microsoft is working on making .NET work on wasm also.
But those two approaches are quite different, and it is interesting to compare.

Latest GoLang compiler (SDK) has option to produce wasm as an "target CPU architecture" with JavaScript as an "OS", all in one step. The resulting code has not dependencies,
but it is relatively large, since not all optimizations are implemented yet.

.NET Blazor project has quite different approach. It takes Mono (.NET) VM compiled in native output (C/C++ like) and converts that to wasm using typical C/C++ toolset (LLVM).
That is obviously relatively large, but it does not change over type. Then, any standard .NET DLL that does not try to directly access OS or HW can run on top of that VM (.NET) on VM (wasm) or VM (JavaScript) setup. The effort now is to enhance integration with web browser (DOM, JS).

Both solutions are "work in progress" and it is too early for conclusions.
Here are a few more details...

For running GoLang in web browsers, there was  already a tool GopherJS for converting Go source code to JavaScript. That does not require or use wasm, and runs Go based code in web browser.
GitHub - gopherjs/gopherjs: A compiler from Go to JavaScript for running Go code in a browser
GopherJS Playground


GopherJS vs WebAssembly for Go - DEV Community 

"The latest Go version 1.11 supports WebAssembly port by Richard Musiol, the same author of GopherJS. Now Go 1.11 is on the way releasing, but you can test WebAssembly APIs with the latest Go by compiling yourself. Your compiled program for WebAssembly is available both on browsers and Node.js. You can use full features of Go including goroutines. You can call any JavaScript functions from Go, and you can pass Go function as a JavaScript callback. The API is defined at syscall/js package. The environment variables for WebAssembly are GOOS=js and GOARCH=wasm"
WebAssembly excursion with Go – Boris Djurdjevic – Medium

BxJS - Compiling Golang to WebAssembly - YouTube


Welcome to the Blazor preview docs website!

GitHub - aspnet/Blazor: Blazor is an experimental .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly

Online Demo:
https://blazor-demo.github.io


AWS IOT Device Defender Service

IoT Security | IoT Device Security Management | AWS IoT Device Defender

"AWS IoT Device Defender is a fully managed service that helps you secure your fleet of IoT devices. AWS IoT Device Defender continuously audits your IoT configurations to make sure that they aren’t deviating from security best practices. A configuration is a set of technical controls you set to help keep information secure when devices are communicating with each other and the cloud. AWS IoT Device Defender makes it easy to maintain and enforce IoT configurations, such as ensuring device identity, authenticating and authorizing devices, and encrypting device data. AWS IoT Device Defender continuously audits the IoT configurations on your devices against a set of predefined security best practices. AWS IoT Device Defender sends an alert if there are any gaps in your IoT configuration that might create a security risk, such as identity certificates being shared across multiple devices or a device with a revoked identity certificate trying to connect to AWS IoT Core."
Keeping Connected Device Secure - YouTube

vs.

Azure Internet of Things (IoT) Security | Microsoft

Secure your Internet of Things deployment | Microsoft Docs

Saturday, August 18, 2018

A Cloud Guru: cloud training

A Cloud Guru - Cloud computing certification training for the Amazon Cloud

$249/year or $ 29/month

Free AWS Certification Exam Prep Guide
A Cloud Guru - A Cloud Guru link from: The Cloudcast


classes also available on Udemy
AWS Certified Solutions Architect - Associate 2018 | Udemy


Music Notation in Blazor (.NET + Web Assembly)

Interesting solution, a real hard challenge,
and CodeProject is still alive! Everything is not (yet) on GitHub :)

Music Notation in Blazor - Part I - CodeProject



Music Notation in Blazor - Part 2 - CodeProject

link from: .NET Rocks! vNext

official web site:
Manufaktura Controls - music engraving libraries for .NET

The code is Git, but not in GitHub
Ajcek / ManufakturaLibraries — Bitbucket





Chrome App: Video Speed Controller



Video Speed Controller - Chrome Web Store

"Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.HTML5 video provides native APIs to accelerate playback of any video, but most implemented players either hide or limit this functionality. This extension fixes that, plus more... "

hint from:
Take Training - Online Courses - AWS Certification Exam Prep Guide - A Cloud Guru


Friday, August 17, 2018

IoT languages: MicroPython, emGo

Standard programming languages, including complete C and C++ are often too large for micro-controllers. But programming in macro assembly language is slow.

free book:
Programming with MicroPython: Open Source Conference | O’Reilly OSCON
"MicroPython, the re-implementation of Python 3 for microcontrollers and embedded systems."

MicroPython on four typical devices: PyBoard, the micro:bit, Adafruit's Circuit Playground Express, and ESP8266/ESP32 boards
MicroPython - Python for microcontrollers

MicroPython on Unicorn

pyboard v1.1

ziutek/emgo: Emgo: Bare metal Go (language for programming embedded systems)

Wednesday, August 15, 2018

Sunday, August 12, 2018

Blockchain in 5 Levels of Difficulty

Blockchain Expert Explains One Concept in 5 Levels of Difficulty | WIRED - YouTube

WebAssembly podcasts, repos, .NET Blazor, GoLang wasm





Here are links to some very interesting and informative interviews and GitHub repos with WebAssembly

Besides running compiled games in web browser, WebAssembly can be useful for "classic" web apps for re-using business logic and data validation code between web client-side apps and server side, in particular with web SPA (Single Page Apps) and micro-services APIs. 

Some developers may want to avoid JavaScript all together even on client side by using same programming language used on web server.

By all major web browsers now supporting WebAssembly, and available fall-back polyfills to JavaScript. WebAssembly can now run in all web browsers with reasonable performance. 
 
WebAssembly with Brendan Eich - Software Engineering Daily
"Brendan Eich created the first version of JavaScript in 10 days. Since then JavaScript has evolved, and Brendan has watched the growth of the web give rise to new and unexpected use cases.

Today Brendan Eich is still pushing the web forward across the technology stack with his involvement in the WebAssembly specification and the Brave browser."


"Lin Clark is an engineer on the Mozilla Developer Relations team, and has been working closely on the WebAssembly project. She is the author of a detailed series of illustrated blog posts that explain how WebAssembly works."






C# => WebAssembly

Blazor is a tool that runs .NET in web browser by converting to WebAssembly


"The Blazor project aims to bring .NET to the open Web using Web Assembly. Scott talks to Steve Sanderson about this experiment and it's future plans. How are they compiling C# and .NET to Web Assembly in a way that works everywhere? How does Mono and .NET Standard fit in?
https://blazor.net/"












GoLang => WebAssembly









C => WebAssembly





Azure Regions Map

This map details the spread of Azure data centers across the world | Windows Central

OpenStreetMap

OpenStreetMap

"OpenStreetMap is a map of the world, created by people like you and free to use under an open license.

OpenStreetMap is open data: you are free to use it for any purpose as long as you credit OpenStreetMap and its contributors. If you alter or build upon the data in certain ways, you may distribute the result only under the same licence."


used by Weather.com among others...


Saturday, August 11, 2018

GitHub Learning Lab


1973?s=140&v=4

free training classes

GitHub Learning Lab · GitHub Marketplace · GitHub

New courses on GitHub Learning Lab | The GitHub Blog

GitHub Learning Lab

GitHub Expands Its Learning Offerings @ InfoQ


Google Cloud Platform: IoT Edge + TPU

Google Cloud Platform Release Edge TPU and Cloud IoT Edge @ InfoQ

"Google announced it would bring two new products to their cloud platform to aid customers in developing and deploying devices close of end-users at the 'edge' of their networks. These products are the Edge TPU, a new hardware chip, and Cloud IoT Edge, an expansion of the Google Cloud AI capability for gateways as well as connected devices."

Quantum Computing in 5 Levels of Difficulty

Quantum Computing Expert Explains One Concept in 5 Levels of Difficulty | WIRED - YouTube

Friday, August 10, 2018

WebSockets & WebHooks: GoLang, ASP.NET Core, Node.js

WebSockets
Here are some useful links about WebSockets and WebHooks, for .NET, GoLang, JS

Moving Data over the Web: AJAX vs. WebSockets vs. Webhooks

"HTML5 WebSockets allow your client-side JavaScript to open and persist a connection to a server. With WebSockets, data is exchanged as messages, which can happen very quickly due to the persistent connection.
...
powerful aspect of WebSockets is a capability called full duplex, which is a fancy way of saying that both the Client and Server can send each other messages
...

A Webhook is really just a URL that accepts a HTTP POST (or GET, PUT, DELETE). One server/service will provide another with a callback URL that it should push data to when it has some data to send. Any old web server can be used really."


WebSockets - Web APIs | MDN

Writing WebSocket client applications - Web APIs | MDN




WebSocket - Wikipedia


"WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C."
Webhook - Wikipedia

"A webhook in web development is a method of augmenting or altering the behaviour of a web page, or web application, with custom callbacks. These callbacks may be maintained, modified, and managed by third-party users and developers who may not necessarily be affiliated with the originating website or application."



gorilla/websocket: A WebSocket implementation for Go.

"Mail polling involves about 50,000 HTTP queries per second, 60% of which return the 304 status, meaning there are no changes in the mailbox."


WebSockets support in ASP.NET Core | Microsoft Docs

aspnet/WebSockets: Implementation of the WebSocket protocol, along with client and server integration components. @ GitHub


aspnet/WebHooks: Libraries to create and consume web hooks on ASP.NET Core

"Note: This repo is solely for the ASP.NET Core WebHooks projects (libraries to consume WebHooks on ASP.NET Core 2.0 and .NET Standard 2.0). For ASP.NET WebHooks (targeting .NET Framework 4.5), see the aspnet/AspNetWebHooks repo."

Sending WebHooks with ASP.NET WebHooks Preview | ASP.NET Blog


socketio/socket.io: Realtime application framework (Node.JS server)


How many system resources will be held for keeping 1,000,000 websocket open? - Stack Overflow

How do push notifications work? What is the basic concept behind them? - Quora

Push technology - Wikipedia

Adding Push Notifications to a Web App  |  Web Fundamentals  |  Google Developers

How does push notification technology work on Android? - Stack Overflow

600k concurrent websocket connections on AWS using Node.js - Jayway


Messaging in Distributed Systems - What's the Deal? - The Static Void Podcast

About Chromebooks

About Chromebooks – Chromebooks, Chrome OS and Chrome tablet news, how tos, views and reviews

If you want a laptop you can count on. You Chromebook. [Extended] - YouTube



Reader question: Does the Pixelbook use eMMC or SSD storage? (Answer: It depends) – About Chromebooks

Wednesday, August 08, 2018

ASP.NET Blazor Hands-On Lab (.NET + WebAssembly)



"Blazor is an experimental project and is not ready for production. It is not even released as an alpha. Significant changes to APIs and design are likely to occur and there is no official word on any timeframes or if the project will be seen through to completion."

dotnet new -i Microsoft.AspNetCore.Blazor.Templates
Official ASP.NET Blazor Repository

Wednesday, August 01, 2018

Ansible: automation tool


Ansible logo.svg

Ansible is Simple IT Automation

"Red Hat® Ansible® Tower makes it easy to scale automation, manage complex deployments and speed productivity. Extend the power of Ansible with workflows to streamline jobs and simple tools to share solutions with your team."
How Ansible Works | Ansible.com

Getting Started with Ansible | Ansible.com


Ansible (software) - Wikipedia

"Ansible is an open source software that automates software provisioning, configuration management, and application deployment.[2]. Ansible connects via SSH, remote PowerShell or via other remote APIs."


Written in Python, PowerShell




Tuesday, July 31, 2018

Linus good taste code

What makes good taste? @ GitHub

"Linus Torvalds in an TED interview talked about the idea of good taste in code or what I like to call elegance. As one might expect from two slides meant to make a point during a talk, he omits a lot of details to keep it short and simple. This post digs into the specifics of his example (deleting an element from a list) and adds another example (inserting an element in a list) including working code."

"Linus: not good": has extra if statement
Bad taste

"Linus: good"
Good taste


Monday, July 30, 2018

OpenStack: open source for private clouds


OpenStack® Logo 2016.svg

OpenStack - Wikipedia

"OpenStack is a free and open-source software platform for cloud computing, mostly deployed as infrastructure-as-a-service (IaaS), whereby virtual servers and other resources are made available to customers.[2] The software platform consists of interrelated components that control diverse, multi-vendor hardware pools of processing, storage, and networking resources throughout a data center. Users either manage it through a web-based dashboard, through command-line tools, or through RESTful web services."


Wednesday, July 25, 2018

IoT: Jacuzzi + Particle + AWS



Particle | Case Study | Jacuzzi Revients Hot Tubs with Particle

"With Particle’s professional engineering service, Particle Studios, Jacuzzi had the engineering fidelity they needed to deploy a cellular connected product to market in 6 months"

Google Docs AI writter

https://qz.com/1335517/google-docs-is-finally-catching-up-to-microsoft-word-20-years-later/amp/

grammar-check feature for Google Docs and an expansion of its “Smart Compose” tool for Gmail and Hangouts, which automatically suggests responses based on a message’s content. ...

Google is treating bad grammar like a translation problem. Instead of translating from, say, French to English, Google Docs will now be able to translate improper English to proper English




Tuesday, July 24, 2018

Go Cloud

https://techcrunch.com/2018/07/24/google-wants-go-to-become-the-go-to-language-for-writing-cloud-apps/amp/

The Google-incubated Go language is one of the fastest growing programming languages today, with about one million active developers using it worldwide. But the company believes it can still accelerate its growth, especially when it comes to its role in writing cloud applications. And to do this, the company today announced Go Cloud, a new open-source library and set of tools that makes it easier to build cloud apps with Go .


https://github.com/google/go-cloud

web email CSS callenges

Martijn Cuppens on Twitter: "The div that looks different in every browser https://t.co/hXmxoLA8fW… "

same CSS, widely different results

Extreme Remote Work - MS Dev Show Podcast

Brian Kernighan: origins of ‘grep’

Brian Kernighan Remembers the Origins of 'grep' - The New Stack

Sunday, July 22, 2018

Surface Go

Introducing Surface Go - YouTube

Like iPad running Windows

Surface Go - Mobile Workstation Laptop - Microsoft
optional LTE and starting at 1.15 lb, $449

Surface Go  in laptop mode side by side to Surface Go in tablet mode


https://gizmodo.com/the-microsoft-surface-go-is-practically-perfect-1828045097

Alexa with Raspberry Pi, or any computer

It is interesting that Alexa web service is accessible.

Alexa @ GirHub

Making An Alexa Raspberry Pi – JEFF BLANKENBURG
raspberrypi3microphonesdcard

Raspberry Pi · alexa/alexa-avs-sample-app Wiki @ GitHub
"step-by-step instructions for setting up AVS on a Raspberry Pi. It demonstrates how to access and test AVS using our Java sample app (running on a Raspberry Pi), a Node.js server, and a third-party wake word engine. You will use the Node.js server to obtain a Login with Amazon (LWA) authorization code by visiting a website using your Raspberry Pi's web browser.
For instructions on how to set it up on Mac, Linux or Windows, please see our wiki."

There is even an alternative from Microsoft, but no much activity...
Microsoft/cortana-samples: Code samples for Cortana extensibility. @ GitHub

Friday, July 20, 2018

cloud: Data Transfer Project by Google, Facebook, Microsoft, Twitter

Google, Facebook, Microsoft, and Twitter partner for ambitious new data project - The Verge

"Google, Facebook, Microsoft, and Twitter joined to announce a new standards initiative called the Data Transfer Project, designed as a new way to move data between platforms. In a blog post, Google described the project as letting users “transfer data directly from one service to another, without needing to download and re-upload it.”

The current version of the system supports data transfer for photos, mail, contacts, calendars, and tasks, drawing from publicly available APIs from Google, Microsoft, Twitter, Flickr, Instagram, Remember the Milk, and SmugMug.
...
The existing code for the project is available open-source on GitHub, along with a white paper describing its scope. Much of the codebase consists of “adapters” that can translate proprietary APIs into an interoperable transfer, making Instagram data workable for Flickr and vice versa."



Wednesday, July 18, 2018

Azure Service (Fabric) Mesh

A "new" buzzword for cloud: Service Mesh

Azure Service Fabric Mesh preview


Service mesh | Technology Radar | ThoughtWorks

How to choose and deploy a service mesh - O'Reilly Media


https://pages.buoyant.io/Oreilly-Service-Mesh-Book.html

"In cloud native architectures, your network becomes the fundamental determining factor for how your applications behave at runtime. The shift to microservices solves many problems, but it also introduces a new set of reliability, performance, and security challenges inherent to managing distributed systems. The service mesh helps you wrangle that complexity by providing a uniform way to manage, monitor, and control your production applications."


Kubernetes Service Mesh