Sunday, March 31, 2019

Collocation vs cloud price

there-is-no-cloudThe Cloud Is Just Someone Else's Computer
by Jeff Atwood of Coding Horror
"Given the prevalence and maturity of cloud providers, it's even a little controversial these days to colocate actual servers.

colocating mini-pcs

you pay almost three times as much for a cloud server.

if you do have need for dedicated computing resources over a period of years, then building your own small personal cloud, with machines you actually own, is not only one third the cost but also … kinda cool?"

related news:

Google Stadia: cloud gaming

Logo for StadiaGoogle Stadia - Wikipedia

Stadia is a cloud gaming service

"Stadia", plural of "stadium", is meant to reflect that it will be a collection of entertainment, which the viewer can choose to sit back and watch, or take an active part in

It is the direct competitor to Sony Interactive Entertainment's PlayStation Now service, and Microsoft's Project xCloud.

Saturday, March 30, 2019

Google Code Jam

About - Code Jam
"Google’s longest running global coding competition, Code Jam, calls on programmers around the world to solve challenging, algorithmic puzzles against the clock. "

Past Contests | Google Code Jam

"results and code from past rounds of Code Jam (from 2008 to 2017) and related spin-offs... you can try the problems yourself"

other related sites:

"Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems."

Wednesday, March 27, 2019

ML: Swift for TensorFlow (vs Python)

Swift is a modern programming language developed by Apple for mobile iOS and Mac.
And not it is being used by Google for AI development with TensorFlow!

How this happened? And what about Python?

Swift is developed by Chris Lattner who also created LLVM compiler platform.
He worked in Apple on compilers and tools, and he and his team created Swift as a modern open source replacement for Objective-C. Then he briefly worked in Tesla on self-driving, just to end up in Google Brain team.

TensorFlow is a hardware and software platform optimized for Machine Learning.
Usually it is used from Python, and that is a challenge, since Python is an interpreted language,
hard to closely integrate with low-level tool like TensorFlow.
Swift on the other side has performance of C++ (since it is using same compiler toolset)
and syntax and semantics of a very modern language!

In this case Swift can even be dynamically integrated with Python, to call existing Python libraries!
It can be used in interactive mode, compiled, or even from Jupyter Notebooks.
Very interesting!

In addition to mobile and desktop, Swift is also being used for "server side" development
and this is supported by IBM.

Swift for TensorFlow  |  TensorFlow

Swift for TensorFlow - TFiwS (TensorFlow Dev Summit 2018) - YouTube

Swift for TensorFlow (TensorFlow @ O’Reilly AI Conference, San Francisco '18) - YouTube

Exploring TensorFlow 2.0 with Paige Bailey - TWiML Talk #242

Coral | Home

SparkFun Edge Development Board - Apollo3 Blue - DEV-15170 - SparkFun Electronics

Introducing Swift For TensorFlow – TensorFlow – Medium

TensorFlow and Swift – QuarkWorks, Inc. – Medium

Swift creator Chris Lattner joins Google Brain after Tesla Autopilot stint | TechCrunch

Sunday, March 24, 2019

Functional Programming in JavaScript

illustration for Just Enough Functional Programming in JavaScriptJust Enough Functional Programming in JavaScript from @kyleshevlin on @eggheadio

Functional-Lite JavaScript | Pluralsight
by Kyle Simpson

Memory usage of JavaScript string type with identical values - Software Engineering Stack Exchange

programming languages - Do common JavaScript implementations use string interning? - Stack Overflow

String interning - Wikipedia

Druid: high performance real-time analytics database

Druid | Interactive Analytics at Scale

Druid | Technology

Druid Analytical Database with Fangjin Yang - Software Engineering Daily

Architecting Distributed Databases with Fangjin Yang - Software Engineering Daily

Druid is a column-oriented distributed database that excels as a data warehousing solution for fast queries on large data sets.

Inverted Index - an overview | ScienceDirect Topics

"inverted index ... stores an ordered list of each of the words that occur in the different documents and associated with the specific documents in which they occur"

Apache Superset: business intelligence web application

Apache Superset with Maxime Beauchemin - Software Engineering Daily

"Superset allows users to create visualizations, slice and dice their data, and query it. Superset integrates with Druid, a database that supports exploratory, OLAP-style workloads."

Apache Superset (incubating) — Apache Superset documentation

apache/incubator-superset: Apache Superset (incubating) is a modern, enterprise-ready business intelligence web application @GitHub

"Apache Superset (incubating) is a modern, enterprise-ready
business intelligence web application"

Tuesday, March 19, 2019


Code | GraphQL

graphql-dotnet/graphql-dotnet: GraphQL for .NET

Getting Started with GraphQL in ASP.NET - Simple Talk

Serverless GraphQL with Tanmai Gopal - Software Engineering Daily

Building a GraphQL API with ASP.NET Core 2 and Entity Framework Core

"As our application grows, the number of REST endpoints we must build and maintain starts to explode. A growing number of endpoints demands more and more time and effort to test and support - on both the client and server. And if you eventually need to version your API, you've got a lot more to consider.

In GraphQL, we can define Query types in our Schema to retrieve (or mutate) any combination of types in our system through one endpoint i.e /api/graphql.
With types and a query defined in the schema, we can now issue requests via GraphQL similar to the RESTful ones listed above. However, we only need to send them to one endpoint. "

GET /api/graphql?query={ student(id: "10") { firstName, lastName, courses { title } } }
  "firstName": "Mark",
  "lastName": "Macneil",
  "email": "",
  "courses": [
    {"title": "Advanced ASPNET Core" },
    {"title": "Introduction to GraphQL" }

Monday, March 18, 2019

Blazor: C# full stack for web development

Web Development - Full Stack C# with Blazor @ MSDN magazine

"C# programmer can write desktop, server-side Web, cloud, phone, tablet, watch, TV and IoT applications. Blazor completes the puzzle, allowing a C# developer to share code and business logic right into the user’s browser."

Sunday, March 17, 2019

SAFE: F# full stack for web development

F# => JavaScript, CSS; without WebAssembly
all strongly typed, including no need for custom JSON.
+ interactive web app updates while keeping current state(!) Even JavaScript web frameworks are not doing this yet!

Fable REPL

informative podcast:

Functional Web Programming using SAFE with Anthony Brown @ .NET Rocks! vNext

Saturday, March 16, 2019

Normalizing Unicode strings

A very informative story about encoding text with Unicode.

When "Zoë" !== "Zoë". Or why you need to normalize Unicode strings | With Blue Ink

"the dog emoji 🐶 has the code point U+1F436.

When encoded, the dog emoji can be represented in multiple byte sequences:

UTF-8: 4 bytes, 0xF0 0x9F 0x90 0xB6
UTF-16: 4 bytes, 0xD83D 0xDC36

Most JavaScript interpreters (including Node.js and modern browsers) use UTF-16 internally. Which means that the dog emoji is stored using two UTF-16 code units (of 16 bits each). So, this should not surprise you:
console.log('🐶'.length) // => 2

...some characters appearing identical, but having different representations.

...The problem is that some of these characters could be represented in multiple ways.

For example, the letter é could be represented using either:
A single code point U+00E9
The combination of the letter e and the acute accent, for a total of two code points: U+0065 and U+0301

The two characters look the same, but do not compare as equal, and the strings have different lenghts. In JavaScript:
console.log('\u00e9') // => é
console.log('\u0065\u0301') // => é
console.log('\u00e9' == '\u0065\u0301') // => false
console.log('\u00e9'.length) // => 1
console.log('\u0065\u0301'.length) // => 2 

This can cause unexpected bugs, such as records not found in a database, passwords mismatching letting users unable to authenticate, etc."

AWS AWSome Day Online

AWS AWSome Day Online

2019-04-09 12:00pm–4:30pm Eastern Time

free, online training will provide an introduction to the core AWS services for compute, storage, database, and networking.

Thursday, March 14, 2019 free class: Create a React Native App

Short, instructional screencast video tutorials for web developers on @eggheadio

"egghead is a group of working web development professionals and open source contributors that provide you with concise, information dense video courses on the best tools in the industry." @ GitHub

Tuesday, March 12, 2019

World Wide Web: 30 years

World Wide Web - Wikipedia

The World Wide Web turns 30: our favorite memories from A to Z - The Verge

"On this day 30 years ago (1989-03-12), Tim Berners-Lee submitted a proposal with the dreary title “Information Management” to his superior at the European physics laboratory CERN."

History of the Web – World Wide Web Foundation

Tim Berners-Lee: world wide web inventor calls for 'fight' to protect internet on its 30th birthday - CNN

SQL Server Temporal Tables

Temporal Tables - SQL Server | Microsoft Docs

"SQL Server 2016 introduced support for temporal tables (also known as system-versioned temporal tables) as a database feature that brings built-in support for providing information about data stored in the table at any point in time rather than only the data that is correct at the current moment in time. Temporal is a database feature that was introduced in ANSI SQL 2011."
"How does temporal work?

System-versioning for a table is implemented as a pair of tables, a current table and a history table. Within each of these tables, the following two additional datetime2 columns are used to define the period of validity for each row: SysStartTime, SysEndTime "

PostgreSQL doesn’t support these features natively, but this temporal tables approximates them.

Friday, March 08, 2019

npm.js and the future of JavaScript

interesting presentation, by co-creator of npmjs

npm and the Future of JavaScript @ InfoQ

"npm is extremely popular... npm has more than 10 million users ... they download more than 8.1 billion packages every seven days... more than 90% of developers who use JavaScript's are currently using npm to put it together. And that's heading towards 100%...

JavaScript is the most popular programming language in the world right now. It has been the biggest language on GitHub for the last five years running. 70% of Stack Overflow developers report that they use JavaScript, at least some of the time,

all 50 of the Fortune 50 are using npm in production, all 50 of the 50 biggest financial companies, all 50 of the 50 biggest tech companies."
slides: npm and the future of JavaScript, QConf SF

npm - npm:

weekly downloads