TL;DR – this article describes how Windows Sandbox can be used to prepare a well known environment for demonstrations, tutorials, tests etc. Scoop is a great package manager for quickly installing Windows packages (Node runtime, Git client, VS Code editor, …) into the Sandbox. I have applied these concepts to […]
node
Run Automated Step-by-Step Browser Scenarios for Instruction or Demo from NodeJS applications with Playwright
TL;DR; Run demonstrations or instructions of browser actions. Allow the user to pause and skip acts, and to reset and switch scenarios. Allow the user to interact with the browser before, after and during the scenarios. The open source Playwright library is used from a custom NodeJS application in which […]
Inject Generic Floating Toolbar into Any Web Application or Site using Playwright
The objective I am pursuing is the following: I want to be able to open a web site or web application and show a floating toolbar on top of the web site’s content. As I am making my way through the site or application, I can use functions from the […]
Use Playwright to Inject Shortcut Keys into Any Web Page – for example to download all images
Adding a short cut key combination to a web application or web site can be quite powerful. When the short cut key combination is activated – things can happen. Things that you have defined on top of everything the web application already offers. In this article I describe how I […]
Get going with automated CI/CD on OCI in Visual Builder Studio
The Oracle Developer Cloud Service was probably the very first service on Oracle Cloud, as early as 2015 if I remember correctly. This service has been repositioned and relabeled as Visual Builder Studio. This service supports agile project management, source code control, artifact management, automated builds, software quality checks, CI/CD […]
Write debug level logs on error – print detailed logging only in exceptional circumstances
TL;DR: Collect debug information in an in-memory buffer that is printed to the output when an error occurs (and quietly discarded in all other cases). I may have come up with a useful idea. Or something that is not all that useful. Or even something that already exists (and I […]
Example of OCI Function as Resource Principal [enabled] to invoke OCI services
Resource Principal is an OCI resource that through its membership of a Dynamic Group and permissions granted through policies to the Dynamic Group is given access to OCI resources and services. Examples of Resource Principals are Function and API Gateway. A Function that is resource principal enabled can for example […]
Quickest route to Your First Handson Experience with GraalVM – Katacoda Scenario with live environment and step by step tutorial
TLDR: This Katacoda Scenario has a live runtime environment with GraalVM 20.1 prepared for you including an easy to click-through step by step scenario that does a live demonstration of most aspects of GraalVM (modern Java runtime, Ahead of Time compilation to native executable, polyglot runtime platform and the platform […]
Reading Query Parameters in GET requests to Project Fn Functions (and Oracle Functions as a Service)
TLDR: query parameters can be retrieved from the Fn-Http-Request-Url header in the ctx parameter passed by Fn to the Node function handling the request; using url.parse() on that header retrieves the url query parameters Project Fn is an open source container native serverless framework. Project Fn provides a runtime […]
DIY Kafka Topic Watcher tool – Node, Express, Server Sent Events and Apache Kafka
This article can be read in at least two different ways: as a somewhat lengthy introduction of a handy tool that you can easily run to inspect messages published to the topics in a Kafka Cluster as a detailed yet basic example of how to combine several techniques to create […]
A Free Apache Kafka Cloud Service – and how to quickly get started with it
Last week I presented on Apache Kafka – twice. Once to a group of over 100 students, once to 30+ colleagues. In both instances, I invited attendees to partake in a workshop with hands-on labs to get acquainted with Apache Kafka. I had prepared a Docker Compose based Kafka platform […]
Publish Oracle Function for Reading and Writing Object Storage Files through OCI API Gateway
The objective for this article is to show you how to get to the point where two routes are available on an API Gateway on Oracle Cloud Infrastructure that allow easy writing to a file on Object Storage and easy retrieval of such as file. Writing files is obviously useful […]
Oracle Cloud Infrastructure – Leveraging API Gateway as Read Only Cache from serverless Function
This article demonstrates a set up that is probably mainly of theoretical interest or maybe useful in demonstrations. I describe how we can invoke an OCI serverless Function through the API Gateway and ask the serverless function for values that are read from a [read only] cache. This cache is […]
Oracle Cloud API Gateway – Using an Authorizer Function for Client Secret Authorization on API Access
The objective in this article: create a simple Authorizer Function that checks the Client Secret passed in API calls and allows and denies requests based on whether the correct Client Secret is included. The Authorizer Function does a little more than simply accept or deny: in case of accept it […]
Override Date.now() based on OS time when Node returns incorrect current date
I was facing a weird issue. In my Node application – version 10.6.3 – running on Ubuntu – 18.04 – I got the wrong value for the current date and time. A call to new Date() and to Date.now() resulted in a wrong value, off by over two months: The […]
The Pipelined Pancake Party – demonstrating the Power of Parallelization and Pipelining in JavaScript with Promises and Asynchronous Generators
This article is an attempt to demonstrate the performance gains – and programming elegance – that is at our disposal with the advent of asynchronous generators in ES 2018 (JavaScript), for example in Node 10 and later. With asynchronous generators and Promises, we can implement parallel, asynchronous and pipelined processing […]
JavaScript Pipelining using Asynchronous Generators to implement Running Aggregates
As of ES 2018 (recent browsers or Node 10), JavaScript support asynchronous generators. Generators are functions that return a set of values, one value at a time. These values can be processed inside the code that invokes the generator immediately, as soon as they become available. There is no need […]
Serverless Node Function on Oracle Functions runs periodically to produce CSV report on Oracle ObjectStorage from data in ElasticSearch
This article highlights a use case implementation I recently implemented (for a demo session) leveraging Oracle Functions as well as OKE (Oracle Kubernetes Engine), Object Storage and Elastic Search. I will briefly touch upon some of the interesting aspects of implementing this case. The code for the function and […]
Invoke an Oracle Function on Oracle Cloud Infrastructure from a Node application
Oracle Functions is currently in limited preview and is expected to soon reach wider availability. Rolando Carrasco did this write up on Medium about his first experiences with Oracle Functions. Oracle Functions is a managed PaaS service, based on Project Fn. It supports a serverless architecture with light weight functions […]
Save File to Oracle Cloud Infrastructure Object Storage from Node through REST API
Oracle Cloud Infrastructure Object Storage is a public cloud service for storing data to which you need fast, immediate, and frequent access. As Oracle states: “The Oracle Cloud Infrastructure Object Storage service is an internet-scale, high-performance storage platform that offers reliable and cost-efficient data durability. The Object Storage service can […]
Moving message threads to different group using the Yammer API
At AMIS we are quite happy users of Microsoft Yammer. Days with 10 or more messages are no exception and since December 2009, we have assembled quite a history of over 8000 message threads. Because we have joined the Conclusion eco system and we will now share a Yammer Network […]
Finding the shortest path from Country A to Country B – using Neo4J and Node
Graph Databases are good at recording nodes and edges – and even more at performing queries that traverse the edges. Some challenges can be dealt with in Graph Databases far more elegantly and efficiently than for example in relational databases using traditional SQL. As simple example, this article will create […]
Session Catalog for Oracle OpenWorld & CodeOne 2018 in JSON files
The Oracle OpenWorld and CodeOne 2018 conferences took place in the last week of October 2018. Together, over 1500 sessions took place. The session catalog with details for all sessions is accessible at https://events.rainfocus.com/widget/oracle/oow18/catalogcodeone18 – at least at the time of writing. The session information includes title and abstract, track, […]
CQRS through Twitter – more fun than meaning
As part of my 50 Shades of Data presentation, I talk about CQRS – Command Query Responsibility Segregation. The idea that you can have one or more read only data stores with data replicated from the master store where all data manipulation (commands) take place. In a different presentation, I […]
From locally running Node application to Cloud based Kubernetes Deployment
In this article I will discuss the steps I had to go through in order to take my locally running Node application – with various hard coded and sometimes secret values – and deploy it on a cloud based Kubernetes cluster. I will discuss the containerization of the application, the […]
Generic Docker container image for running and dynamically reloading an Oracle JET application from a Git repository
This article introduces a Docker Container Image that runs an Oracle JET application from a Git repository and is capable of dynamic reload of that application when the repository contents get updated. The container image sources are on GitHub in repository https://github.com/lucasjellema/docker-oracle-jet-run-live-reload. It has been pushed to Docker Hub as […]
Generic Docker Container Image for running and live reloading a Node application based on a GitHub Repo
My desire: find a way to run a Node application from a Git(Hub) repository using a generic Docker container and be able to refresh the running container on the fly whenever the sources in the repo are updated. The process of producing containers for each application and upon each change […]
Simple CQRS – Tweets to Apache Kafka to Elastic Search Index using a little Node code
Put simply – CQRS (Command Query Responsibility Segregation) is an architecture pattern that recognizes the fact that it may be wise to separate the database that processes data manipulations from the engines that handle queries. When data retrieval requires special formats, scale, availability, TCO, location, search options and response times, […]
15 Minutes to get a Kafka Cluster running on Kubernetes – and start producing and consuming from a Node application
For workshop I will present on microservices and communication patterns I need attendees to have their own local Kafka Cluster. I have found a way to have them up and running in virtually no time at all. Thanks to the combination of: Kubernetes Minikube The Yolean/kubernetes-kafka GitHub Repo with Kubernetes […]
Remote and Programmatic Manipulation of Docker Containers from a Node application using Dockerode
In previous articles, I have talked about using Docker Containers in smart testing strategies by creating a container image that contains the baseline of the application and the required test setup (test data for example). For each test instead of doing complex setup actions and finishing of with elaborate tear […]
Handle a GitHub Push Event from a Web Hook Trigger in a Node application
My requirement in this case: a push of one or more commits to a GitHub repository need to trigger a Node application that inspects the commit and when specific conditions are met – it will download the contents of the commit. I have implemented this functionality using a Node application […]
Node & Express application to proxy HTTP requests – simply forwarding the response to the original caller
The requirement is simple: a Node JS application that receives HTTP requests and forwards (some of) them to other hosts and subsequently the returns the responses it receives to the original caller. This can be used in many situations – to ensure all resources loaded in a web application come […]
Create a Node JS application for Downloading sources from GitHub
My objective: create a Node application to download sources from a repository on GitHub. I want to use this application to read a simple package.json-like file (that describes which reusable components (from which GitHub repositories) the application has dependencies on) and download all required resources from GitHub and store them […]
Oracle JET Web Applications – Automating Build, Package and Deploy (to Application Container Cloud) using a Docker Container
The essential message of this article is the automation for Oracle JET application of the flow from source code commit to a running application on Oracle Application Container Cloud, as shown in this picture: I will describe the inside of the “black box” (actually light blue in this picture) where […]
Microservices and Updating Data Bound Context on Oracle Cloud with Application Container and Event Hub (plus DBaaS and MongoDB)–Part Two
This article describes – in two installments – how events are used to communicate a change in a data record owned by the Customer microservice to consumers such as the Order microservice that has some details about the modified customer in its bound context. The first installment described the implementation […]
Microservices and Updating Data Bound Context on Oracle Cloud with Application Container and Event Hub (plus DBaaS and MongoDB)–Part One
This article describes – in two installments – how events are used to communicate a change in a data record owned by the Customer microservice to consumers such as the Order microservice that has some details about the modified customer in its bound context. The microservices are implemented using Node. […]
Prepare and link bind Oracle Database Cloud, Application Container Cloud, Application Container Cache and Event Hub
A fairly common combination of Oracle Public Cloud services that I use together – for example for the implementation of microservices – is DBaaS, Application Container Cloud, Application [Container] Cache and Event Hub. In this article, I show the sequence of steps I went through in the Oracle Public Cloud […]
Tweet with download link for JavaOne and Oracle OpenWorld slide decks
In a recent article I discussed how to programmatically fetch a JSON document with information about sessions at Oracle OpenWorld and JavaOne 2017. Yesterday, slidedecks for these sessions started to become available. I have analyzed how the link to these downloads were included in the JSON data returned by the […]
Setting up Oracle Event Hub (Apache Kafka) Cloud Service and Pub & Sub from local Node Kafka client
Oracle offers an Event Bus Cloud Service – an enterprise grade Apache Kafka instance – with large numbers of partitions and topics, (retained) messages and distributed nodes. Setting up this cloud service is simple enough – especially once you know what to do, as I will demonstrate in this article. […]