Lots of exciting dev bookmarks added in march 2019


Dev-Bookmarks Logo

Save up to a workweek a year by efficiently managing your dev bookmarks, on www.bookmarks.dev. Share your favorites with the community and they will be published on Github - Star


New dev bookmarks added in march 2019. Hot topics include:

alias

Nice dotfiles example

My dotfiles. Buyer beware ;)


api

API Infrastructure at Knewton: What’s in an Edge Service?

In this post, we will pull back the covers of our API to explain how we handle user requests. You will first learn how to build an edge service with Netflix Zuul, the framework we chose for its simplicity and flexibility. Then, we’ll dive into the Knewton edge service to show you how it improves API simplicity, flexibility, and performance.

What’s in an Edge Service

An edge service is a component which is exposed to the public internet. It acts as a gateway to all other services, which we will refer to as platform services. For example, consider an Nginx reverse proxy in front of some web resource servers. Here, Nginx acts as an edge service by routing public HTTP requests to the appropriate platform service.


Dredd — HTTP API Testing Framework — Dredd latest documentation

Dredd is a language-agnostic command-line tool for validating API description document against backend implementation of the API.

Dredd reads your API description and step by step validates whether your API implementation replies with responses as they are described in the documentation.


API Blueprint home page

API Blueprint is simple and accessible to everybody involved in the API lifecycle. Its syntax is concise yet expressive. With API Blueprint you can quickly design and prototype APIs to be created or document and test already deployed mission-critical APIs.


api-management

Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


architecture

Oliver Gierke - Whoops! Where did my architecture go

Summary

The basic approach I recommend is to move the vertical slices into the focus of the package naming and try to model them in a way that the public API of a slice is as tiny as possible in the first place. This is of course no silver bullet approach as packages can grow significantly and it might make sense to extract certain types into a sub-package or the like which then usually leads you to the need to use an architecture management tool. The core idea here is to try to use the means of visibility control that are available in Java to write code that is not a giant potential dependency mess in the first place. Packages can actually help you to achieve exactly that.


Layers, hexagons, features and components

Layers, hexagons, features and components - Coding the Architecture


BoundedContext

Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD’s strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships.


The Clean Architecture

Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:

  • Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
  • Onion Architecture by Jeffrey Palermo
  • Screaming Architecture from a blog of mine last year
  • DCI from James Coplien, and Trygve Reenskaug.
  • BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach

Though these architectures all vary somewhat in their details, they are very similar. They all have the same objective, which is the separation of concerns. They all achieve this separation by dividing the software into layers. Each has at least one layer for business rules, and another for interfaces.

The diagram at the top of this article is an attempt at integrating all these architectures into a single actionable idea.


Strategic Domain Driven Design with Context Mapping

Many approaches to object oriented modeling tend not to scale well when the applications grow in size and complexity. Context Mapping technique can be used to manage the complexity in large software development projects. In this article, author Alberto Brandolini discusses the many sides of bounded contexts and how to use them to build a context map to support key decisions in a software project.

Code is the primary form of expression of the model. Although other artifacts might be necessary along the way to capture requirements or portions of the design, the only one that’ll be constantly in sync with the application behavior is code itself.

Trying to set up a partnership without a collaborative environment, is clearly a dead end strategy.


Big Ball of Mud

While much attention has been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture is seldom discussed. This paper examines the most frequently deployed architecture: the BIG BALL OF MUD


arquillian

Arquillian Home Page

An innovative testing platform for the Java Virtual Machine (JVM). Open source. Highly extensible.


async

Java 8: Definitive guide to CompletableFuture

Examples of using and combining CompletableFuture API


asynchronous

Java 8: Definitive guide to CompletableFuture

Examples of using and combining CompletableFuture API


awesome

useful-java-links

A list of useful Java frameworks, libraries, software and hello worlds examples - Vedenin/useful-java-links


GitHub - stoeffel/awesome-fp-js

:sunglasses: A curated list of awesome functional programming stuff in js - stoeffel/awesome-fp-js


GitHub - arslanbilal/git-cheat-sheet: git and git flow cheat sheet

Git Cheat Sheet English

awesome-list

useful-java-links

A list of useful Java frameworks, libraries, software and hello worlds examples - Vedenin/useful-java-links


GitHub - stoeffel/awesome-fp-js

:sunglasses: A curated list of awesome functional programming stuff in js - stoeffel/awesome-fp-js


aws

kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


AWS re:Invent 2015: DevOps at Amazon: A Look at Our Tools and Processes (DVO202) - YouTube

  • published on:  2015-10-15
  • tags:   aws,   devops

Learn about Amazon’s transition to a service-oriented architecture over a decade ago. We share lessons learned, processes adopted, and the tools built to increase both agility and reliability.


bash

Nice dotfiles example

My dotfiles. Buyer beware ;)


command line - How to list all symbolic links in a directory - Ask Ubuntu

find . -type l -ls

To only process the current directory:

find . -maxdepth 1 -type l -ls

Install Bash git completion

How to install git completion on different platforms…


bootstrap

Bootstrap 4 Cheat Sheet - The ultimate list of Bootstrap classes

Quickly find your Bootstrap classes on this interactive Bootstrap cheat sheet. It includes code samples and live preview of elements.


c

GitHub - krallin/tini

A tiny but valid init for containers.


chai

Modern Node.js: async/await based testing with Mocha & Chai

Mocha is a JavaScript test framework running on Node.js and in the browser. It can run both asynchronous and synchronous code serially. Test cases are created using describe() and it() methods, the former is used to provide a structure by allowing to put various tests cases in logical groups while the latter is where the tests are written.

In order to perform actual tests, there is a need for an assertion library: a runtime mechanism which can be used to verify assumptions made by the program and print a diagnostic message if this assumption is false. Node.js comes with a built-in assert library. Chai is another popular assertion library that provides both the BDD and TDD styles of programming for testing the code. BDD stands for Behavior-driven development while TDD stands for Test-driven development. In a nutshell, Chai provides a should keyword for BDD style which allows to chain assertions and an expect() method for TDD style. Choosing between one and another is a matter of personal preference.


GitHub - domenic/chai-as-promised

Extends Chai with assertions about promises. Contribute to domenic/chai-as-promised development by creating an account on GitHub.


cheatsheet

GitHub - arslanbilal/git-cheat-sheet: git and git flow cheat sheet

Git Cheat Sheet English

GitHub - audreyr/favicon-cheat-sheet

Obsessive cheat sheet to favicon sizes/types. Please contribute! (Note: this may be in flux as I learn new things about favicon best practices.) - audreyr/favicon-cheat-sheet


Bootstrap 4 Cheat Sheet - The ultimate list of Bootstrap classes

Quickly find your Bootstrap classes on this interactive Bootstrap cheat sheet. It includes code samples and live preview of elements.


circuit-breaker

Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


css

Angular Progressbar

A nanoscopic progress/loading bar. Featuring realistic trickle animations to convince your users that something is happening!


devops

Kubernetes + Compose = Kompose

kompose is a tool to help users familiar with docker-compose move to Kubernetes. It takes a Docker Compose file and translates it into Kubernetes resources.


GitHub - docker/docker-bench-security

The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production. - docker/docker-bench-security


AWS re:Invent 2015: DevOps at Amazon: A Look at Our Tools and Processes (DVO202) - YouTube

  • published on:  2015-10-15
  • tags:   aws,   devops

Learn about Amazon’s transition to a service-oriented architecture over a decade ago. We share lessons learned, processes adopted, and the tools built to increase both agility and reliability.


diagnostics

Arthas Java Diagnostics Tool - home page

Key features

  • Check whether a class is loaded, or where the class is being loaded. (Useful for troubleshooting jar file conflicts)
  • Decompile a class to ensure the code is running as expected.
  • View classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc.
  • View the method invocation details, e.g. method parameter, return object, thrown exception, and etc.
  • Check the stack trace of specified method invocation. This is useful when a developers wants to know the caller of the said method.
  • Trace the method invocation to find slow sub-invocations.
  • Monitor method invocation statistics, e.g. qps, rt, success rate and etc.
  • Monitor system metrics, thread states and cpu usage, gc statistics, and etc.
  • Supports command line interactive mode, with auto-complete feature enabled.
  • Supports telnet and websocket, which enables both local and remote diagnostics with command line and browsers.
  • Supports JDK 6+.
  • Supports Linux/Mac/Windows.

diagram

mermaid docs

Generation of diagrams and flowcharts from text in a similar manner as markdown.

Ever wanted to simplify documentation and avoid heavy tools like Visio when explaining your code?

This is why mermaid was born, a simple markdown-like script language for generating charts from text via javascript.


dns

MX Lookup Tool - Check your DNS MX Records online - MxToolbox

MxToolbox supports global Internet operations by providing free, fast and accurate network diagnostic and lookup tools. Millions of technology professionals use our tools to help diagnose and resolve a wide range of infrastructure issues.


docker

Kubernetes + Compose = Kompose

kompose is a tool to help users familiar with docker-compose move to Kubernetes. It takes a Docker Compose file and translates it into Kubernetes resources.


Manage data in Docker

Overview of persisting data in containers

Types of mounts and where they live on the Docker host

  • Volumes are stored in a part of the host filesystem which is managed by Docker (/var/lib/docker/volumes/ on Linux). Non-Docker processes should not modify this part of the filesystem. Volumes are the best way to persist data in Docker.
  • Bind mounts may be stored anywhere on the host system. They may even be important system files or directories. Non-Docker processes on the Docker host or a Docker container can modify them at any time.
  • tmpfs mounts are stored in the host system’s memory only, and are never written to the host system’s filesystem.

GitHub - dockersamples/example-voting-app

Example Docker Compose app. A simple distributed application running across multiple Docker containers.


GitHub - docker/docker-bench-security

The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production. - docker/docker-bench-security


GitHub - krallin/tini

A tiny but valid init for containers.


jib home page

:sailboat: Build container images for your Java applications. - GoogleContainerTools/jib

Quickstart


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


Testcontainers home page

Testcontainers is a Java 8 library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.


docker-compose

Kubernetes + Compose = Kompose

kompose is a tool to help users familiar with docker-compose move to Kubernetes. It takes a Docker Compose file and translates it into Kubernetes resources.


GitHub - dockersamples/example-voting-app

Example Docker Compose app. A simple distributed application running across multiple Docker containers.


docs

Manage data in Docker

Overview of persisting data in containers

Types of mounts and where they live on the Docker host

  • Volumes are stored in a part of the host filesystem which is managed by Docker (/var/lib/docker/volumes/ on Linux). Non-Docker processes should not modify this part of the filesystem. Volumes are the best way to persist data in Docker.
  • Bind mounts may be stored anywhere on the host system. They may even be important system files or directories. Non-Docker processes on the Docker host or a Docker container can modify them at any time.
  • tmpfs mounts are stored in the host system’s memory only, and are never written to the host system’s filesystem.

documentation

mermaid docs

Generation of diagrams and flowcharts from text in a similar manner as markdown.

Ever wanted to simplify documentation and avoid heavy tools like Visio when explaining your code?

This is why mermaid was born, a simple markdown-like script language for generating charts from text via javascript.


Graphviz - Graph Visualization Software

Graphviz is open source graph visualization software. It has several main layout programs. See the gallery for sample layouts. It also has web and interactive graphical interfaces, and auxiliary tools, libraries, and language bindings. We’re not able to put a lot of work into GUI editors but there are quite a few external projects and even commercial tools that incorporate Graphviz. You can find some of these in the Resources section.


Dredd — HTTP API Testing Framework — Dredd latest documentation

Dredd is a language-agnostic command-line tool for validating API description document against backend implementation of the API.

Dredd reads your API description and step by step validates whether your API implementation replies with responses as they are described in the documentation.


API Blueprint home page

API Blueprint is simple and accessible to everybody involved in the API lifecycle. Its syntax is concise yet expressive. With API Blueprint you can quickly design and prototype APIs to be created or document and test already deployed mission-critical APIs.


domain-driven-design

BoundedContext

Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD’s strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships.


Strategic Domain Driven Design with Context Mapping

Many approaches to object oriented modeling tend not to scale well when the applications grow in size and complexity. Context Mapping technique can be used to manage the complexity in large software development projects. In this article, author Alberto Brandolini discusses the many sides of bounded contexts and how to use them to build a context map to support key decisions in a software project.

Code is the primary form of expression of the model. Although other artifacts might be necessary along the way to capture requirements or portions of the design, the only one that’ll be constantly in sync with the application behavior is code itself.

Trying to set up a partnership without a collaborative environment, is clearly a dead end strategy.


dotfiles

Vim dotfiles and configurations example

My .vim dotfiles and configurations. Contribute to jessfraz/.vim


Nice dotfiles example

My dotfiles. Buyer beware ;)


email

Nodemailer home page

Nodemailer is a module for Node.js to send emails


error-handling

Sentry home page

Open-source error tracking that helps developers monitor and fix crashes in real time. Iterate continuously. Boost workflow efficiency. Improve user experience.

Error Tracking Software — JavaScript, Python, PHP, Ruby, more…


facebook

La Gazzetta dello Sport I News su Calcio, Basket, NBA, F1 e MotoGp

Leggi La Gazzetta dello Sport: news, foto, video e risultati su calcio di serie A, calciomercato, basket, F1, motoGp, ciclismo e tennis.\n BOLD


favicon

X-Icon Editor

X-Icon Editor, create high resolution icons from your own browser


GitHub - audreyr/favicon-cheat-sheet

Obsessive cheat sheet to favicon sizes/types. Please contribute! (Note: this may be in flux as I learn new things about favicon best practices.) - audreyr/favicon-cheat-sheet


ffmpeg

High Quality Gifs with FFMPEG

After getting FFMPEG installed, let’s try it out on a MOV downloaded from my google photos account:

ffmpeg -i MVI_6654.MOV firsttry.gif

We’re calling the ffmpeg program and telling it that MVI_6654.MOV is our input file with the -i flag. the filename at the end defines the conversion and creates the new file


FFmpeg

A complete, cross-platform solution to record, convert and stream audio and video.


free-programming-books

Dive Into HTML5

Dive Into HTML5 elaborates on a hand-picked selection of features from the HTML5 specification and other fine standards.


rx-book RxJS - Javascript library for functional reactive programming.

Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.


functional-programming

GitHub - stoeffel/awesome-fp-js

:sunglasses: A curated list of awesome functional programming stuff in js - stoeffel/awesome-fp-js


Simplify your JavaScript – Use .map(), .reduce(), and .filter()

Simplify the way you write your JavaScript by using .map(), .reduce() and .filter() instead of for() and forEach() loops. You’ll end up with clearer, less clunky code!


gif

High Quality Gifs with FFMPEG

After getting FFMPEG installed, let’s try it out on a MOV downloaded from my google photos account:

ffmpeg -i MVI_6654.MOV firsttry.gif

We’re calling the ffmpeg program and telling it that MVI_6654.MOV is our input file with the -i flag. the filename at the end defines the conversion and creates the new file


git

GitHub - arslanbilal/git-cheat-sheet: git and git flow cheat sheet

Git Cheat Sheet English

Install Bash git completion

How to install git completion on different platforms…


gradle

jib home page

:sailboat: Build container images for your Java applications. - GoogleContainerTools/jib

Quickstart


graph

Graphviz - Graph Visualization Software

Graphviz is open source graph visualization software. It has several main layout programs. See the gallery for sample layouts. It also has web and interactive graphical interfaces, and auxiliary tools, libraries, and language bindings. We’re not able to put a lot of work into GUI editors but there are quite a few external projects and even commercial tools that incorporate Graphviz. You can find some of these in the Resources section.


helm

Helm Docs home page

Helm - The Kubernetes Package Manager.

Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes application.

Charts are easy to create, version, share, and publish — so start using Helm and stop the copy-and-paste.


homebrew

GitHub - Homebrew/homebrew-cask home page

🍻 A CLI workflow for the administration of macOS applications distributed as binaries - Homebrew/homebrew-cask


html

GitHub - audreyr/favicon-cheat-sheet

Obsessive cheat sheet to favicon sizes/types. Please contribute! (Note: this may be in flux as I learn new things about favicon best practices.) - audreyr/favicon-cheat-sheet


Dive Into HTML5

Dive Into HTML5 elaborates on a hand-picked selection of features from the HTML5 specification and other fine standards.


html5

Dive Into HTML5

Dive Into HTML5 elaborates on a hand-picked selection of features from the HTML5 specification and other fine standards.


immutable.js

Immutable.js home page

Immutable data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

Immutable.js provides many Persistent Immutable data structures including: List, Stack, Map, OrderedMap, Set, OrderedSet and Record.

These data structures are highly efficient on modern JavaScript VMs by using structural sharing via hash maps tries and vector tries as popularized by Clojure and Scala, minimizing the need to copy or cache data.

Immutable.js also provides a lazy Seq, allowing efficient chaining of collection methods like map and filter without creating intermediate representations. Create some Seq with Range and Repeat.

Want to hear more? Watch the presentation about Immutable.js:


install

macos - Mac OS X and multiple Java versions - Stack Overflow


integration-testing

Arquillian Home Page

An innovative testing platform for the Java Virtual Machine (JVM). Open source. Highly extensible.


istio

Making microservices micro with Istio Service Mesh & Kubernetes by Ray Tsang @ Spring I/O 2018 - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.


A Tale of Two Frameworks: Spring Cloud and Istio - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.

Istio or Spring Cloud (or both?)

If its part of the platform, use it. Except for…

  • Fallbacks
  • Tracing Propagation
  • Security

Istio or a service mesh architecture works better for polyglot environments


Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


java

Java 8: Definitive guide to CompletableFuture

Examples of using and combining CompletableFuture API


Arthas Java Diagnostics Tool - home page

Key features

  • Check whether a class is loaded, or where the class is being loaded. (Useful for troubleshooting jar file conflicts)
  • Decompile a class to ensure the code is running as expected.
  • View classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc.
  • View the method invocation details, e.g. method parameter, return object, thrown exception, and etc.
  • Check the stack trace of specified method invocation. This is useful when a developers wants to know the caller of the said method.
  • Trace the method invocation to find slow sub-invocations.
  • Monitor method invocation statistics, e.g. qps, rt, success rate and etc.
  • Monitor system metrics, thread states and cpu usage, gc statistics, and etc.
  • Supports command line interactive mode, with auto-complete feature enabled.
  • Supports telnet and websocket, which enables both local and remote diagnostics with command line and browsers.
  • Supports JDK 6+.
  • Supports Linux/Mac/Windows.

macos - Mac OS X and multiple Java versions - Stack Overflow


jEnv - Manage your Java environment

Discover jenv, the command line Java manager


Oliver Gierke - Whoops! Where did my architecture go

Summary

The basic approach I recommend is to move the vertical slices into the focus of the package naming and try to model them in a way that the public API of a slice is as tiny as possible in the first place. This is of course no silver bullet approach as packages can grow significantly and it might make sense to extract certain types into a sub-package or the like which then usually leads you to the need to use an architecture management tool. The core idea here is to try to use the means of visibility control that are available in Java to write code that is not a giant potential dependency mess in the first place. Packages can actually help you to achieve exactly that.


useful-java-links

A list of useful Java frameworks, libraries, software and hello worlds examples - Vedenin/useful-java-links


jib home page

:sailboat: Build container images for your Java applications. - GoogleContainerTools/jib

Quickstart


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


Testcontainers home page

Testcontainers is a Java 8 library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.


JUnit 5 Articles and source code from Baeldung


Reactor vs. RxJava

Was spricht für und gegen Reactor und RxJava?


javascript

Immutable.js home page

Immutable data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

Immutable.js provides many Persistent Immutable data structures including: List, Stack, Map, OrderedMap, Set, OrderedSet and Record.

These data structures are highly efficient on modern JavaScript VMs by using structural sharing via hash maps tries and vector tries as popularized by Clojure and Scala, minimizing the need to copy or cache data.

Immutable.js also provides a lazy Seq, allowing efficient chaining of collection methods like map and filter without creating intermediate representations. Create some Seq with Range and Repeat.

Want to hear more? Watch the presentation about Immutable.js:


Jake Archibald: In The Loop - JSConf.Asia 2018 - YouTube

Have you ever had a bug where things were happening in the wrong order, or particular style changes were being ignored? Ever fixed that bug by wrapping a section of code in a setTimeout? Ever found that fix to be unreliable, and played around with the timeout number until it kinda almost always worked? This talk looks at the browser’s event loop, the thing that orchestrates the main thread of the browser, which includes JavaScript, events, and rendering. We’ll look at the difference between tasks, microtasks, requestAnimationFrame, requestIdleCallback, and where events land. Hopefully you’ll never have to use setTimeout hacks again!”

Jake is developer advocate for Google Chrome. He’s one of the editors of the service worker spec, so he’s into offline-first, push messaging and web performance.

JSConf.Asia - Capitol Theatre, Singapore - 27 January 2018


GitHub - stoeffel/awesome-fp-js

:sunglasses: A curated list of awesome functional programming stuff in js - stoeffel/awesome-fp-js


The Cost Of JavaScript In 2018 – Addy Osmani – Medium

Youtube video

Building interactive sites can involve sending JavaScript to your users. Often, too much of it. Have you been on a mobile page that looked like it had loaded only to tap on a link or tried to scroll and nothing happens?

Byte-for-byte, JavaScript is still the most expensive resource we send to mobile phones, because it can delay interactivity in large ways.


Simplify your JavaScript – Use .map(), .reduce(), and .filter()

Simplify the way you write your JavaScript by using .map(), .reduce() and .filter() instead of for() and forEach() loops. You’ll end up with clearer, less clunky code!


mermaid docs

Generation of diagrams and flowcharts from text in a similar manner as markdown.

Ever wanted to simplify documentation and avoid heavy tools like Visio when explaining your code?

This is why mermaid was born, a simple markdown-like script language for generating charts from text via javascript.


jenv

macos - Mac OS X and multiple Java versions - Stack Overflow


jEnv - Manage your Java environment

Discover jenv, the command line Java manager


junit

JUnit 5 Articles and source code from Baeldung


jvm

Project Reactor Home Page

Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification


kotlin

Reactive Spring - Josh Long, Mark Heckler - YouTube

Spring Framework 5.0 is here! One of the most exciting introductions in this release is support for reactive programming, building on the Pivotal Reactor project to support message-driven, elastic, resilient and responsive services. Spring Framework 5 integrates an MVC-like component model adapted to support reactive processing and a new type of web endpoint, functional reactive endpoints. In this talk, we’ll look at the net-new Netty-based web runtime, how existing Servlet code can run on the new world, and how to integrate it with existing Spring-stack technologies.


kubernetes

Kubernetes + Compose = Kompose

kompose is a tool to help users familiar with docker-compose move to Kubernetes. It takes a Docker Compose file and translates it into Kubernetes resources.


Helm Docs home page

Helm - The Kubernetes Package Manager.

Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes application.

Charts are easy to create, version, share, and publish — so start using Helm and stop the copy-and-paste.


Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


kubernetes-helm

Helm Docs home page

Helm - The Kubernetes Package Manager.

Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes application.

Charts are easy to create, version, share, and publish — so start using Helm and stop the copy-and-paste.


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


latex

Pandoc home page

Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library.


linux

GitHub - krallin/tini

A tiny but valid init for containers.


command line - How to list all symbolic links in a directory - Ask Ubuntu

find . -type l -ls

To only process the current directory:

find . -maxdepth 1 -type l -ls

Install Bash git completion

How to install git completion on different platforms…


macos

GitHub - Homebrew/homebrew-cask home page

🍻 A CLI workflow for the administration of macOS applications distributed as binaries - Homebrew/homebrew-cask


macos - Mac OS X and multiple Java versions - Stack Overflow


markdown

Pandoc home page

Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library.


maven-plugin

jib home page

:sailboat: Build container images for your Java applications. - GoogleContainerTools/jib

Quickstart


kubernetes-for-java-developers repo from Aron Gupta

A Day in Java Developer’s Life, with a taste of Kubernetes - aws-samples/kubernetes-for-java-developers. sample. example.


microservices

Making microservices micro with Istio Service Mesh & Kubernetes by Ray Tsang @ Spring I/O 2018 - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.


Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


API Infrastructure at Knewton: What’s in an Edge Service?

In this post, we will pull back the covers of our API to explain how we handle user requests. You will first learn how to build an edge service with Netflix Zuul, the framework we chose for its simplicity and flexibility. Then, we’ll dive into the Knewton edge service to show you how it improves API simplicity, flexibility, and performance.

What’s in an Edge Service

An edge service is a component which is exposed to the public internet. It acts as a gateway to all other services, which we will refer to as platform services. For example, consider an Nginx reverse proxy in front of some web resource servers. Here, Nginx acts as an edge service by routing public HTTP requests to the appropriate platform service.


middleware

Connect home page

Connect is a middleware layer for Node.js.


mocha

Modern Node.js: async/await based testing with Mocha & Chai

Mocha is a JavaScript test framework running on Node.js and in the browser. It can run both asynchronous and synchronous code serially. Test cases are created using describe() and it() methods, the former is used to provide a structure by allowing to put various tests cases in logical groups while the latter is where the tests are written.

In order to perform actual tests, there is a need for an assertion library: a runtime mechanism which can be used to verify assumptions made by the program and print a diagnostic message if this assumption is false. Node.js comes with a built-in assert library. Chai is another popular assertion library that provides both the BDD and TDD styles of programming for testing the code. BDD stands for Behavior-driven development while TDD stands for Test-driven development. In a nutshell, Chai provides a should keyword for BDD style which allows to chain assertions and an expect() method for TDD style. Choosing between one and another is a matter of personal preference.


mongodb

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


How do you rename a MongoDB database? - Stack Overflow

//copy the database
> db.copyDatabase("db_to_rename","db_renamed")

//drop the old database
> use db_to_rename
> db.dropDatabase();

monitoring

Sentry home page

Open-source error tracking that helps developers monitor and fix crashes in real time. Iterate continuously. Boost workflow efficiency. Improve user experience.

Error Tracking Software — JavaScript, Python, PHP, Ruby, more…


nginx

Understanding Nginx Server and Location Block Selection Algorithms

  • published on:  2014-11-17
  • tags:   nginx

Nginx is one of the most popular web servers in the world. In this guide, we will discuss how Nginx selects the server and location block that will handle a given client’s request. We will go over the algorithm in place, as well as the directives and


API Infrastructure at Knewton: What’s in an Edge Service?

In this post, we will pull back the covers of our API to explain how we handle user requests. You will first learn how to build an edge service with Netflix Zuul, the framework we chose for its simplicity and flexibility. Then, we’ll dive into the Knewton edge service to show you how it improves API simplicity, flexibility, and performance.

What’s in an Edge Service

An edge service is a component which is exposed to the public internet. It acts as a gateway to all other services, which we will refer to as platform services. For example, consider an Nginx reverse proxy in front of some web resource servers. Here, Nginx acts as an edge service by routing public HTTP requests to the appropriate platform service.


nodejs

Nodemailer home page

Nodemailer is a module for Node.js to send emails


Connect home page

Connect is a middleware layer for Node.js.


oidc

Identity, Claims, & Tokens – An OpenID Connect Primer, Part 1 of 3

In this post, we learned some basics about OpenID Connect, its history, and a bit about the various flow types, scopes, and tokens involved.


online-tools

Online SQLite browser

SQLite Browser is a online SQL interpreter for SQLite database. Open and execute queries from a SQLite file. Neither download nor installation.


open-source

Contributor Covenant: A Code of Conduct for Open Source Projects

Open Source has always been a foundation of the Internet, and with the advent of social open source networks this is more true than ever. But free, libre, and open source projects suffer from a startling lack of diversity, with dramatically low representation by women, people of color, and other marginalized populations.

Often it is the unintentional assumptions and actions of project maintainers and participants that make open source projects unwelcoming (or even hostile) to marginalized people: making assumptions about gender or race, reinforcing stereotypes, using sexualized or otherwise inappropriate language, or demonstrating a lack of regard for the safety and well-being of vulnerable people.

One way to begin addressing this problem is to be overt in our openness, welcoming all people to contribute, and pledging in return to value them as whole human beings and to foster an atmosphere of kindness, cooperation, and understanding.

Adopting the Contributor Covenant can be one way to express and codify these values and signal your intention to make your open source community welcoming, diverse, and inclusive.


openid-connect

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


Identity, Claims, & Tokens – An OpenID Connect Primer, Part 1 of 3

In this post, we learned some basics about OpenID Connect, its history, and a bit about the various flow types, scopes, and tokens involved.


OpenID Connect Scopes

Understand scopes and claims used with the OpenID Connect (OIDC) protocol.


osx

Install Bash git completion

How to install git completion on different platforms…


package-manager

Writing R Extensions

Writing R Extensions - the canonical reference for writing R packages.


pandoc

Pandoc home page

Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library.


performance

Arthas Java Diagnostics Tool - home page

Key features

  • Check whether a class is loaded, or where the class is being loaded. (Useful for troubleshooting jar file conflicts)
  • Decompile a class to ensure the code is running as expected.
  • View classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc.
  • View the method invocation details, e.g. method parameter, return object, thrown exception, and etc.
  • Check the stack trace of specified method invocation. This is useful when a developers wants to know the caller of the said method.
  • Trace the method invocation to find slow sub-invocations.
  • Monitor method invocation statistics, e.g. qps, rt, success rate and etc.
  • Monitor system metrics, thread states and cpu usage, gc statistics, and etc.
  • Supports command line interactive mode, with auto-complete feature enabled.
  • Supports telnet and websocket, which enables both local and remote diagnostics with command line and browsers.
  • Supports JDK 6+.
  • Supports Linux/Mac/Windows.

The Cost Of JavaScript In 2018 – Addy Osmani – Medium

Youtube video

Building interactive sites can involve sending JavaScript to your users. Often, too much of it. Have you been on a mobile page that looked like it had loaded only to tap on a link or tried to scroll and nothing happens?

Byte-for-byte, JavaScript is still the most expensive resource we send to mobile phones, because it can delay interactivity in large ways.


podcast

Podcasts – React

Podcasts dedicated to React and individual podcast episodes with React discussions.

Podcasts

Episodes


promise

GitHub - domenic/chai-as-promised

Extends Chai with assertions about promises. Contribute to domenic/chai-as-promised development by creating an account on GitHub.


proxy

Istio home page

Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio’s control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.


r

Writing R Extensions

Writing R Extensions - the canonical reference for writing R packages.


reactive

Reactor vs. RxJava

Was spricht für und gegen Reactor und RxJava?


Reactive Spring - Josh Long, Mark Heckler - YouTube

Spring Framework 5.0 is here! One of the most exciting introductions in this release is support for reactive programming, building on the Pivotal Reactor project to support message-driven, elastic, resilient and responsive services. Spring Framework 5 integrates an MVC-like component model adapted to support reactive processing and a new type of web endpoint, functional reactive endpoints. In this talk, we’ll look at the net-new Netty-based web runtime, how existing Servlet code can run on the new world, and how to integrate it with existing Spring-stack technologies.


Project Reactor Home Page

Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification


reactive-programming

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


Spring 5 WebClient

Discover Spring 5’s WebClient - a new reactive RestTemplate alternative.


reactjs

Podcasts – React

Podcasts dedicated to React and individual podcast episodes with React discussions.

Podcasts

Episodes


redis

Reactive Spring - Josh Long, Mark Heckler - YouTube

Spring Framework 5.0 is here! One of the most exciting introductions in this release is support for reactive programming, building on the Pivotal Reactor project to support message-driven, elastic, resilient and responsive services. Spring Framework 5 integrates an MVC-like component model adapted to support reactive processing and a new type of web endpoint, functional reactive endpoints. In this talk, we’ll look at the net-new Netty-based web runtime, how existing Servlet code can run on the new world, and how to integrate it with existing Spring-stack technologies.


resources

useful-java-links

A list of useful Java frameworks, libraries, software and hello worlds examples - Vedenin/useful-java-links


rest

API Blueprint home page

API Blueprint is simple and accessible to everybody involved in the API lifecycle. Its syntax is concise yet expressive. With API Blueprint you can quickly design and prototype APIs to be created or document and test already deployed mission-critical APIs.


rxjs

rx-book RxJS - Javascript library for functional reactive programming.

Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.


security

GitHub - docker/docker-bench-security

The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production. - docker/docker-bench-security


shell

command line - How to list all symbolic links in a directory - Ask Ubuntu

find . -type l -ls

To only process the current directory:

find . -maxdepth 1 -type l -ls

spring

Making microservices micro with Istio Service Mesh & Kubernetes by Ray Tsang @ Spring I/O 2018 - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.


Spring 5 WebClient

Discover Spring 5’s WebClient - a new reactive RestTemplate alternative.


Guide to Spring 5 WebFlux

A brief guide to using WebFlux with annotations, in Spring 5.


Project Reactor Home Page

Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification


spring-boot

Making microservices micro with Istio Service Mesh & Kubernetes by Ray Tsang @ Spring I/O 2018 - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.


Identity, Claims, & Tokens – An OpenID Connect Primer, Part 1 of 3

In this post, we learned some basics about OpenID Connect, its history, and a bit about the various flow types, scopes, and tokens involved.


spring-cloud

A Tale of Two Frameworks: Spring Cloud and Istio - YouTube

Spring has been the leader as a microservices framework for Java with Spring Boot, Spring and Spring Cloud. Istio has emerged as a polyglot alternative to Spring Cloud as an open platform to connect, manage and secure microservices. Let’s explore how Istio compares to Spring Cloud and what each platform provides in addition to the other. We will also explore the use cases that are best suited to use Spring Cloud or Istio, or perhaps a combination of both.

Istio or Spring Cloud (or both?)

If its part of the platform, use it. Except for…

  • Fallbacks
  • Tracing Propagation
  • Security

Istio or a service mesh architecture works better for polyglot environments


spring-cloud-gateway

Reactive Spring - Josh Long, Mark Heckler - YouTube

Spring Framework 5.0 is here! One of the most exciting introductions in this release is support for reactive programming, building on the Pivotal Reactor project to support message-driven, elastic, resilient and responsive services. Spring Framework 5 integrates an MVC-like component model adapted to support reactive processing and a new type of web endpoint, functional reactive endpoints. In this talk, we’ll look at the net-new Netty-based web runtime, how existing Servlet code can run on the new world, and how to integrate it with existing Spring-stack technologies.


spring-security

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


spring-webflux

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


Spring 5 WebClient

Discover Spring 5’s WebClient - a new reactive RestTemplate alternative.


Guide to Spring 5 WebFlux

A brief guide to using WebFlux with annotations, in Spring 5.


Reactive Spring - Josh Long, Mark Heckler - YouTube

Spring Framework 5.0 is here! One of the most exciting introductions in this release is support for reactive programming, building on the Pivotal Reactor project to support message-driven, elastic, resilient and responsive services. Spring Framework 5 integrates an MVC-like component model adapted to support reactive processing and a new type of web endpoint, functional reactive endpoints. In this talk, we’ll look at the net-new Netty-based web runtime, how existing Servlet code can run on the new world, and how to integrate it with existing Spring-stack technologies.


sql

Online SQLite browser

SQLite Browser is a online SQL interpreter for SQLite database. Open and execute queries from a SQLite file. Neither download nor installation.


testing

Testcontainers home page

Testcontainers is a Java 8 library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.


Dredd — HTTP API Testing Framework — Dredd latest documentation

Dredd is a language-agnostic command-line tool for validating API description document against backend implementation of the API.

Dredd reads your API description and step by step validates whether your API implementation replies with responses as they are described in the documentation.


Modern Node.js: async/await based testing with Mocha & Chai

Mocha is a JavaScript test framework running on Node.js and in the browser. It can run both asynchronous and synchronous code serially. Test cases are created using describe() and it() methods, the former is used to provide a structure by allowing to put various tests cases in logical groups while the latter is where the tests are written.

In order to perform actual tests, there is a need for an assertion library: a runtime mechanism which can be used to verify assumptions made by the program and print a diagnostic message if this assumption is false. Node.js comes with a built-in assert library. Chai is another popular assertion library that provides both the BDD and TDD styles of programming for testing the code. BDD stands for Behavior-driven development while TDD stands for Test-driven development. In a nutshell, Chai provides a should keyword for BDD style which allows to chain assertions and an expect() method for TDD style. Choosing between one and another is a matter of personal preference.


GitHub - domenic/chai-as-promised

Extends Chai with assertions about promises. Contribute to domenic/chai-as-promised development by creating an account on GitHub.


Arquillian Home Page

An innovative testing platform for the Java Virtual Machine (JVM). Open source. Highly extensible.


tools

MX Lookup Tool - Check your DNS MX Records online - MxToolbox

MxToolbox supports global Internet operations by providing free, fast and accurate network diagnostic and lookup tools. Millions of technology professionals use our tools to help diagnose and resolve a wide range of infrastructure issues.


X-Icon Editor

X-Icon Editor, create high resolution icons from your own browser


user-experience

Angular Progressbar

A nanoscopic progress/loading bar. Featuring realistic trickle animations to convince your users that something is happening!


video-processing

High Quality Gifs with FFMPEG

After getting FFMPEG installed, let’s try it out on a MOV downloaded from my google photos account:

ffmpeg -i MVI_6654.MOV firsttry.gif

We’re calling the ffmpeg program and telling it that MVI_6654.MOV is our input file with the -i flag. the filename at the end defines the conversion and creates the new file


FFmpeg

A complete, cross-platform solution to record, convert and stream audio and video.


vim

Vim dotfiles and configurations example

My .vim dotfiles and configurations. Contribute to jessfraz/.vim


visualization

Graphviz - Graph Visualization Software

Graphviz is open source graph visualization software. It has several main layout programs. See the gallery for sample layouts. It also has web and interactive graphical interfaces, and auxiliary tools, libraries, and language bindings. We’re not able to put a lot of work into GUI editors but there are quite a few external projects and even commercial tools that incorporate Graphviz. You can find some of these in the Resources section.


web

GitHub - audreyr/favicon-cheat-sheet

Obsessive cheat sheet to favicon sizes/types. Please contribute! (Note: this may be in flux as I learn new things about favicon best practices.) - audreyr/favicon-cheat-sheet


websocket

Build Reactive APIs with Spring WebFlux

You’ve heard that reactive programming can help you scale? But how do you implement it? Using Spring WebFlux, of course! This article shows you how.


windows

Install Bash git completion

How to install git completion on different platforms…


zuul

API Infrastructure at Knewton: What’s in an Edge Service?

In this post, we will pull back the covers of our API to explain how we handle user requests. You will first learn how to build an edge service with Netflix Zuul, the framework we chose for its simplicity and flexibility. Then, we’ll dive into the Knewton edge service to show you how it improves API simplicity, flexibility, and performance.

What’s in an Edge Service

An edge service is a component which is exposed to the public internet. It acts as a gateway to all other services, which we will refer to as platform services. For example, consider an Nginx reverse proxy in front of some web resource servers. Here, Nginx acts as an edge service by routing public HTTP requests to the appropriate platform service.


Adrian Matei

Adrian Matei
Life force expressing itself as a coding capable human being

New dev bookmarks in february 2019

Lots of exciting #DevBookmarks in february 2019. Keywords: api, architecture, arquillian, aws, bash, bootstrap, chai, cheatsheet, devops, diagram, dns, documentation, domain-driven-design, error-handling, facebook, favicon, ffmpeg, free-programming-books, functional-programming, gif, git, graph, html, html5, integration-testing, java, javascript, junit, jvm, kotlin, latex, linux, markdown, microservices, middleware, mocha, mongodb, monitoring, nginx, nodejs, oidc, online-tools, open-source, openid-connect, osx, pandoc, podcast, promise, reactive, reactive-programming, reactjs, redis, rest, rxjs, shell, spring, spring-boot, spring-cloud-gateway, spring-security, spring-webflux, sql, testing, tools, video-processing, visualization, web, websocket, windows and zuul Continue reading