Monday, January 31, 2022

web: HTM vs JSX, with Preact or React

 developit/htm: Hyperscript Tagged Markup: JSX alternative using standard tagged templates, with compiler support. @GitHub

htm is JSX-like syntax in plain JavaScript - no transpiler necessary.

Develop with React/Preact directly in the browser, then compile htm away for production.

It uses standard JavaScript Tagged Templates and works in all modern browsers.



Sunday, January 30, 2022

all languages => Touring Complete?

 Every Simple Language Will Eventually End Up Turing Complete – The Solution Space

Every simple language will develop enough new features to eventually end up Turing Complete.

...stumbled over this realization while working on Helm charts which are implemented in the form of a templating language on top of YAML, resulting in constructions such as the following beauty (extract from the bitnami/kafka chart):

Go Templating Language that this is based on is Turing complete. But what’s more interesting, is how we ended up with such a monstrosity rather than any other high-level language which would allow the same level of expressivity? Well, it’s because it started as a Simple Language.


... a humble proposal for the next time that you feel the need to use a simple configuration or markup language for a feature: Maybe consider an embedded domain-specific language instead. Start from a rich programming environment and include the simple configuration in the form of language constructs provided by the host language. All of a sudden, users have access to all of the abstraction tools that the host language offers – but in a way that does not seem bolted on.


Turing completeness - Wikipedia

Turing-complete or computationally universal if it can be used to simulate any Turing machine. This means that this system is able to recognize or decide other data-manipulation rule sets. Turing completeness is used as a way to express the power of such a data-manipulation rule set. Virtually all programming languages today are Turing-complete. The concept is named after English mathematician and computer scientist Alan Turing.


WASM Photo editing

Using WASM?

Photoshop coming to the Web : WebAssembly

Photopea | Online Photo Editor

photopea/photopea: Photopea is online image editor @GitHub


Photoshop's journey to the web


WebAssembly, Fourth Language in the Web

Saturday, January 29, 2022

Cloud cost +++

Troy Hunt's Azure cloud bill shock is a cautionary tale









in December 2021 that monster bill hit from Azure – by line item pred.ominantly under the “bandwidth” service name with the bill meter for “data transfer out
...
a setting on his Cloudflare plan that set the max cacheable file size to 15GB was ultimately to blame: the launch of the Pwned Passwords ingestion pipeline for the FBI along with hundreds of millions of new passwords provided by the NCA had meant HaveIBeenPwned had started hosting millions of new zip files; each of them 17.3GB big and slipping the net.

ACM podcast with DHH

A very good podcast interview with “DHH”, creator of Ruby on Rails open source framework with some good insights about open source, remote work, value of marketing etc. “Rails” has profoundly influenced many other web dev frameworks (i.e. ASP.NET MVC), so DHH indirectly affected many of todays developers…Not to mention that he is a (real) race car driver,
and was even able to “fight and win” Apple Store :)

ACM ByteCast (podcast) Ep23 David Heinemeier Hansson

JavaScript algorithms

trekhleb/javascript-algorithms: 📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings @GitHub

This repository contains JavaScript based examples of many popular algorithms and data structures.

Each algorithm and data structure has its own separate README with related explanations and links for further reading (including ones to YouTube videos).

Svelte vs React

 Comparing Svelte and React - Jack Franklin

comparison of bulding "Pomodoro" app with both (P)React & Svelte



Monday, January 24, 2022

Saturday, January 22, 2022

cloud hosting: Render.com

"second level cloud provider, like Heroku", just newer and based on Kubernetes

podcast interview
softwareengineeringdaily.com/2021/12/07/render-with-anurag-goel


render.com
Render is a unified cloud to build and run all your apps and websites with free TLS certificates, a global CDN... 






Make the most of 750 free compute hours each month with automatic scale-to-zero services.

Friday, January 21, 2022

Metaverse: Microsoft += Activision Blizzard - $68.7 billion

Microsoft to acquire Activision Blizzard for $68.7 billion - The Verge

Satya Nadella says the deal ‘will play a key role in the development of metaverse platforms’

Microsoft is acquiring Activision, the troubled publisher of Call of Duty, World of Warcraft, and Diablo. The deal will value Activision at $68.7 billion, far in excess of the $26 billion Microsoft paid to acquire LinkedIn in 2016. It’s Microsoft’s biggest push into gaming, and the company says it will be the “third-largest gaming company by revenue, behind Tencent and Sony” once the deal closes.

Thursday, January 20, 2022

Gotemberg: GoLang stateless API for PDF files

clever name, useful tool :)

gotenberg.dev


"A Docker-powered stateless API for PDF files

Gotenberg provides a developer-friendly API to interact with powerful tools like Chromium and LibreOffice to convert many documents (HTML, Markdown, Word, Excel, etc.) to PDF, transform them, merge them, and more!

Thanks to Docker, you don't have to install each tool in your environments; drop the Docker image in your stack, and you're good to go!"


Gotenberg Hero Logo

Wednesday, January 19, 2022

infviz.io: Automated AWS Diagrams

infviz.io
Automated AWS Diagrams

"Manually drawing your infrastructure no longer makes sense.
Get meaningful diagrams rendered directly from your
AWS Accounts or CloudFormation Templates."


TODO app with 10 JavaScript web frameworks

I built the same app 10 times // Which JS Framework is best? @YouTube

github.com/fireship-io/10-javascript-frameworks

  1. Vanilla JS
  2. React
  3. Angular
  4. Vue
  5. Svelte
  6. Lit
  7. Alpine
  8. Solid
  9. Stencil
  10. Mithril

Tuesday, January 18, 2022

Amazon SageMaker Studio Lab


"light" / free version of "enterprise" tool Amazon SageMaker Studio

[INTRODUCING] Amazon SageMaker Studio Lab: AWS Podcast

Amazon SageMaker Studio Lab is a free, no-configuration service built to reduce friction when getting started with ML.

only email required for signup, no AWS account needed; 

up to 12 hours on CPU, 4 hours on GPU, 

jupyter notebooks could be loaded directly from GitHub

Read the blog | Learn more | Sign up to preview


Monday, January 17, 2022

CodeSee: visualize code

codesee.io

Quickly identify cross-code dependencies and navigate between files and folders. With insights to improve your understanding of the codebase and guide onboarding, planning, and reviews.


Sunday, January 16, 2022

Microsoft Linux distro: Mariner


Azure Posdcast: When Windows is nowhere to be found - Making Azure better with CBL Mariner

YouTube: https://youtu.be/Q_F5xQo5u6w

GitHub repo - https://github.com/Microsoft/CBL-Mariner

CBL-Mariner is an internal Linux distribution for Microsoft’s cloud infrastructure and edge products and services. CBL-Mariner is designed to provide a consistent platform for these devices and services and will enhance Microsoft’s ability to stay current on Linux updates. This initiative is part of Microsoft’s increasing investment in a wide range of Linux technologies, such as SONiC, Azure Sphere OS and Windows Subsystem for Linux (WSL). CBL-Mariner is being shared publicly as part of Microsoft’s commitment to Open Source and to contribute back to the Linux community.




About Web3, and example dApp

Why it’s too early to get excited about Web3 – O’Reilly
By Tim O’Reilly
December 13, 2021

"There’s been a lot of talk about Web3 lately, and as the person who defined “Web 2.0” 17 years ago, I’m often asked to comment. I’ve generally avoided doing so because most prognostications about the future turn out to be wrong. What we can do, though, is to ask ourselves questions that help us see more deeply into the present, the soil in which the future is rooted. As William Gibson famously said, “The future is already here. It’s just not evenly distributed yet.” We can also look at economic and social patterns and cycles, using as a lens the observation ascribed to Mark Twain that “history doesn’t repeat itself, but it rhymes. Using those filters, what can we say about Web3?"

“Web3” as we think of it today was introduced in 2014 by Gavin Wood, one of the cocreators of Ethereum. Wood’s compact definition of Web3, as he put it in a recent Wired interview, is simple: “Less trust, more truth.”


"To get a feeling for the web3 world, ... made a dApp called Autonomous Art that lets anyone mint a token for an NFT by making a visual contribution to it. The cost of making a visual contribution increases over time, and the funds a contributor pays to mint are distributed to all previous artists (visualizing this financial structure would resemble something similar to a pyramid shape). At the time of this writing, over $38k USD has gone into creating this collective art piece.

I also made a dApp called First Derivative that allows you to create, discover, and exchange NFT derivatives which track an underlying NFT, similar to financial derivatives which track an underlying asset 😉.

... there is nothing particularly “distributed” about the apps themselves: they’re just normal react websites. The “distributedness” refers to where the state and the logic/permissions for updating the state lives: on the blockchain instead of in a “centralized” database."



Saturday, January 15, 2022

AWS CloudFormation tools

github.com/aws-cloudformation/awesome-cloudformation

A curated list of resources and projects for working with AWS CloudFormation.

PDFKit.js + React

npmjs.com/package/@react-pdf/pdfkit
github.com/diegomura/react-pdf


A JavaScript PDF generation library for Node and the browser.

This project is a fork of pdfkit by @devongovett and continued under the scope of this project since it has react-pdf specific features.


PDFKit is a PDF document generation library for Node and the browser that makes creating complex, multi-page, printable documents easy. It's written in CoffeeScript, but you can choose to use the API in plain 'ol JavaScript if you like. The API embraces chainability, and includes both low level functions as well as abstractions for higher level functionality. The PDFKit API is designed to be simple, so generating complex documents is often as simple as a few function calls.

Check out some of the documentation and examples to see for yourself! You can also read the guide as a self-generated PDF with example output displayed inline. If you'd like to see how it was generated, check out the README in the docs folder.

You can also try out an interactive in-browser demo of PDFKit here.



Friday, January 14, 2022

Security: AWS vs. Azure vs. GCP

free booklet

Secure Service Configuration in AWS, Azure, & GCP by SANS

This poster compares and contrasts the popular security services of each major cloud provider - Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure. By identifying insecure defaults and little-known security features, you can ensure the security of your organization's assets across each public cloud environment.

PDF

Wednesday, January 12, 2022

Serverless, AWS SAM => AWS CDK

 Serverless Stack Update: Using AWS CDK

Many of our readers have said defining resources in yaml is both cumbersome and error prone. We’ve now updated Serverless Stack to use AWS CDK 7 instead of CloudFormation YAML. This is a big change! And it makes configuring your Serverless infrastructure a lot easier.

So defining a DynamoDB table looks like this:

- Resources: - NotesTable: - Type: AWS::DynamoDB::Table - Properties: - TableName: ${self:custom.tableName} - AttributeDefinitions: - - AttributeName: userId - AttributeType: S - - AttributeName: noteId - AttributeType: S - KeySchema: - - AttributeName: userId - KeyType: HASH - - AttributeName: noteId - KeyType: RANGE - # Set the capacity to auto-scale - BillingMode: PAY_PER_REQUEST + const table = new dynamodb.Table(this, "notes", { + partitionKey: { name: 'userId', type: dynamodb.AttributeType.STRING }, + sortKey: { name: 'noteId', type: dynamodb.AttributeType.STRING }, + billingMode: dynamodb.BillingMode.PAY_PER_REQUEST, + });


What is AWS CDK


Better together: AWS SAM and AWS CDK

AWS Serverless Application Model CLI (AWS SAM CLI) support for local development and testing of AWS Cloud Development Kit (AWS CDK) projects. 

AWS SAM and AWS CDK are both open-source frameworks for building applications using infrastructure as code (IaC). AWS SAM is template-based using JSON or YAML, while the AWS CDK uses languages such as Python or Node.

Before today, you could use the AWS SAM CLI to build locally, test, and package serverless applications defined using AWS CloudFormation or AWS SAM templates. With this preview release, you can use AWS SAM CLI to build, test, and in the future, package applications defined using the AWS CDK.


AWS CDK vs Serverless Framework


Using AWS CDK with Serverless Framework


Tuesday, January 11, 2022

The "end of software" as we know it?

 The end of software is coming | Peter Wang and Lex Fridman - YouTube

"Peter Wang is the co-founder & CEO of Anaconda and one of the most impactful leaders and developers 
in the Python community. Also, he is a physicist and philosopher."

The "software as we know it" (for last 50 years) is not quite predictable, both correctness of implemented features as well as in performance. 

The new "ML" (machine learning) based systems are often defined in terms of expected output and performance, and with this could run as "cybernetic systems", without "human in the loop". 

So while "no software" tagline promoted by Salesforce in early 2000's was describing "no software to install and manage", the next wave of "software" could be and "autonomous system" that produces expected results, without direct insight or even control how this is done. 







javascript imaging libs (sharp.js)

sharp.pixelplumbing.com

The typical use case for this high speed Node.js module is to convert large images in common formats to smaller, web-friendly JPEG, PNG, AVIF and WebP images of varying dimensions.

Resizing an image is typically 4x-5x faster than using the quickest ImageMagick and GraphicsMagick settings due to its use of libvips 


How To Process Images in Node.js With Sharp | DigitalOcean

npmjs.com/package/sharp


www.npmjs.com/package/jimp


stackoverflow.com/questions/42277138/easy-way-to-resize-image-in-node-js


www.npmjs.com/search?q=image%20resize


Monday, January 10, 2022

Parcel.js: Web Application Bundler


flaviocopes.com/parcel

Parcel is a Web Application Bundler. It's in the same tool category of WebPack, with a different value proposition. Parcel promises to do many things without any configuration at all, and be fast too.


"Parcel is a zero configuration build tool for the web. It combines a great out-of-the-box development experience with a scalable architecture that can take your project from just getting started to massive production application."






Sunday, January 09, 2022

Ethereum 2.0 with eWASM


Ewasm: Where We Are and Where We Are Going | by Dj | ParaState | Nov, 2021 | Medium

On Ethereum, smart contracts are deployed through its virtual machine called the Ethereum Virtual Machine (EVM), an architecture that is currently rigid and only supports low-performance programming languages such as Solidity.

The solution is the flexible, high performance Ewasm, WebAssembly optimized for the Ethereum Network. Ewasm ensures Ethereum compatibility when migrating Ethereum dApps to high performance blockchains, replacing the current Ethereum virtual machine. Ewasm advances on EVM by upgrading Ethereum smart contracts to near-native speed.

The Ewasm project aims for backward compatibility by also supporting the current opcode instruction set and including transcompile options in its specifications, beyond allowing new smart contracts to be written in high-level languages like Rust, Go, etc.

The eWasm will be a new EVM, which will allow smart contracts to be written in any programming language and not just Solidity, as is currently the case with Ethereum.

GopherCon UK 2021 videos

GopherCon UK 2021 @YouTube

Videos from all of our great GopherCon UK speakers, recorded in October 2021

GopherCon UK

Saturday, January 08, 2022

Visual Studio 2022

 Visual Studio 2022 IDE - Programming Tool for Software Developers


Visual Studio 2022 Roadmap | Microsoft Docs


Visual Studio 2022 - Launch Event - YouTube


main "competition": VS Code :)


Download Visual Studio Tools - Install Free for Windows, Mac, Linux


Code as Data

Code as data - Wikipedia

code and data allows computers to treat instructions in a programming language as data handled by a running program

Homoiconicity - Wikipedia

In computer programminghomoiconicity (from the Greek words homo- meaning "the same" and icon meaning "representation") is a property of some programming languages. A language is homoiconic if a program written in it can be manipulated as data using the language, and thus the program's internal representation can be inferred just by reading the program itself. This property is often summarized by saying that the language treats "code as data".

A commonly cited example is Lisp, which was created to allow for easy list manipulations and where the structure is given by S-expressions that take the form of nested lists, and can be manipulated by other Lisp code.[1] Other examples are the programming languages Clojure (a contemporary dialect of Lisp), Rebol (also its successor Red), RefalProlog, and more recently Julia

Lisp data, a list using different data types: (sub)lists, symbols, strings and integer numbers.

((:name "john" :age 20) (:name "mary" :age 18) (:name "alice" :age 22))

Lisp code. The example uses lists, symbols and numbers.

(* (sin 1.1) (cos 2.03))      ; in infix: sin(1.1)*cos(2.03)


Homoiconic Languages @wiki.c2.org

Examples (in alphabetical order):

Language-oriented programming - Wikipedia

Language-oriented programming (LOP)[1] is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components,[2] and rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific languages for the problem first, and solves the problem in those languages.

Symbolic programming - Wikipedia

symbolic programming is a programming paradigm in which the program can manipulate its own formulas and program components as if they were plain data.