Andrejus Baranovski

Subscribe to Andrejus Baranovski feed
Blog about Oracle, Full Stack, Machine Learning and Cloud
Updated: 2 hours 25 min ago

What I Hate About Machine Learning

7 hours 9 min ago
I describe what I hate most about Machine Learning. Hopefully, this video will not scare you, but on the opposite, it will inspire you to start with Machine Learning.

 

What I Love About Machine Learning

Sun, 2021-04-04 09:04
I describe what I love most about Machine Learning. Hopefully, this will inspire you to jump into the exciting field of ML.

 

My Machine Learning Experience

Sun, 2021-03-28 14:05
I talk about my own Machine Learning experience and why I decided to convert to ML from enterprise software development with Oracle tools.

 

FastAPI and Oracle DB Client in Docker

Sun, 2021-03-14 10:55
I describe how to dockerize Oracle DB Client with FastAPI and Uvicorn. The end result - you will be able to connect to Oracle Cloud DB and expose REST services through FastAPI in Python.

 

TensorFlow.js Blueprint App Step by Step

Sun, 2021-03-07 06:31
I describe how to prepare data that comes from API into TensorFlow.js Dataset structure, how to shuffle, normalize, one-hot-encode, and batch the data. Next, I go on model training and explain why fitDataset is recommended way to train a neural network in TensorFlow.js. At last, I show how to do inference and print the results. This app is built with React, but the same code can be reused with any JS toolkit/framework.

 

Rabbit MQ with Docker for Microservices

Sat, 2021-02-27 06:02
Rabbit MQ message broker helps to implement event-driven architecture for microservices. Instead of tight coupling multiple services, we can send and subscribe to events. In this video, I explain how to dockerize Rabbit MQ and provide a simple, but complete example of communication through Rabbit MQ.

 

React and TensorFlow.js

Sat, 2021-02-20 06:31
I explain how to create React app with Yarn and how to integrate TensorFlow.js into that app. A simple model is trained with TensorFlow.js to give you a good starting point. I also show how to run the predict function and read the output.

 

ML Microservice Client with Python and gRPC

Sat, 2021-02-13 06:07
In this video, I continue to talk about microservices for ML. I explain how to implement a direct call from the training service to fetch data and run training with model evaluation.

 

ML Microservice with Python and gRPC

Sat, 2021-02-06 05:58
I explain how to implement microservice in Python for Machine Learning code. In this example, data processing is done with Pandas, Numpy, and Scikit-Learn libraries. Communication is implemented through gRPC, I explain how to send Numpy array through gRPC.

 

FastAPI with Oracle Cloud DB, building APIs with Python

Sun, 2021-01-31 13:37
Learn by example about how to connect to Oracle Cloud DB from FastAPI without any third-party libraries. Connection to DB is optimized with connection pooling.

 

Connect to Oracle Cloud DB from Python

Sat, 2021-01-16 09:19
A quick explanation of how to connect to Oracle Autonomous Cloud Database (Always Free instance) from Python script.

 

Oracle JET or Oracle VBCS For Your Next Web App

Fri, 2020-12-11 04:52
I talk about my experience of working with Oracle JET and VBCS. I share a few hints - how to choose between Oracle JET and Oracle VBCS for your next Web app development.


Oracle Visual Builder Studio - Development Process Experience

Tue, 2020-12-01 09:25
I describe how you can handle the development process in Visual Builder Studio. It is really straightforward and very well defined.

 

Back to Oracle Blogging

Tue, 2020-10-27 10:35
I'm back to Oracle blogging Partying face. This time it will be Youtube vlogging focused on Oracle VBCS. My first video is live. I plan to post technical tips about VBCS at least twice per month.


Update On My Oracle Blogging Activity

Wed, 2020-06-03 15:23
If you were following me, you probably noticed I stopped active blogging related to Oracle tech. I moved to Medium platform and writing Machine Learning related articles at Towards Data Science. I'm doing this already since late 2018. So, I didn't stop blogging, just the subject is changed. If you are interested in Machine Learning, I will be happy if you follow me on Medium.

Why I stopped blogging about Oracle? There are several reasons:

1. We are building our own product Katana ML
2. Machine Learning is a complex topic and requires lots of focus
3. I decided to dedicate my time to Machine Learning and Open Source

We still keep working in Red Samurai with Oracle technology, but probably you would not see Oracle related articles from me anymore. But then who knows, never say never.

Building Dynamic UI Form with Oracle JET

Mon, 2020-03-09 08:05
Dynamic form is a common requirement when building more advanced UIs. With Oracle JET you have all the tools available to build dynamic form. One of the examples of dynamic form requirements - report parameter capture screens. Building fixed forms to capture parameters for each report would be an overkill. A smarter approach is to build one dynamic form, which would handle a set of different UI components and render based on metadata received from the service.

Dynamic form example:


When values are changed, we can capture all changes while submitting the form - value printed in the log:


In the heart of dynamic form logic, we are using JET bind for each tag, it renders form elements from metadata:


Each element is checked and based on the type - UI field is rendered through JET if tag. Input field properties are fetched from metadata.

Example of metadata structure - array. It is important to use Knockout observable for value property. This will allow capturing user input. When we submit the form, we can iterate through the array and read value property:


Sample code available on GitHub.

Handy TensorFlow.js API for Client-Side ML Development

Thu, 2020-02-20 01:45
Let’s look into TensorFlow.js API for training data handling, training execution, and inference. TensorFlow.js is awesome because it brings Machine Learning into the hands of Web developers, this provides mutual benefit. Machine Learning field gets more developers and supporters, while Web development becomes more powerful with the support of Machine Learning.


Read more - Handy TensorFlow.js API for Client-Side ML Development.

Time-Series Prediction Beyond Test Data

Thu, 2020-01-23 12:13
I was working on the assignment to build a large scale time-series prediction solution. I end up using a combination of approaches in the single solution — Prophet, ARIMA and LSTM Neural Network (running on top of Keras/TensorFlow). With Prophet (Serving Prophet Model with Flask — Predicting Future) and ARIMA it is straightforward to calculate a prediction for future dates, both provide a function to return prediction for a given future horizon. The same is not obvious with LSTM, if you are new — this will require a significant amount of time to research how to forecast true future dates (most of the examples are showing how to predict against test dataset only).

I found one good example though which I was following and it helped me to solve my task — A Quick Example of Time-Series Prediction Using Long Short-Term Memory (LSTM) Networks. In this post, I will show how to predict shampoo sales monthly data, mainly based on the code from the above example.

Read more - Time-Series Prediction Beyond Test Data.


Publishing Keras Model API with TensorFlow Serving

Tue, 2019-12-24 11:40
Building a ML model is a crucial task. Running ML model in production is not a less complex and important task. I had a post in the past about serving ML model through Flask REST API — Publishing Machine Learning API with Python Flask. While this approach works, it certainly lacks some important points:

  • Model versioning 
  • Request batching 
  • Multithreading 

TensorFlow comes with a set of tools to help you run ML model in production. One of these tools — TensorFlow Serving. There is an excellent tutorial that describes how to configure and run it — TensorFlow Serving with Docker. I will follow the same steps in my example.

Read more in my Towards Data Science post.

Multiple Node.js Applications on Oracle Always Free Cloud

Thu, 2019-11-28 08:26
What if you want to host multiple Oracle JET applications? You can do it easily on Oracle Always Free Cloud. The solution is described in the below diagram:


You should wrap Oracle JET application into Node.js and deploy it to Oracle Compute Instance through Docker container. This is described in my previous post - Running Oracle JET in Oracle Cloud Free Tier.

Make sure to create Docker container with a port different than 80. To host multiple Oracle JET apps, you will need to create multiple containers, each assigned with a unique port. For example, I'm using port 5000:

docker run -p 5000:3000 -d --name appname dockeruser/dockerimage

This will map standard Node port 3000 to port 5000, accessible internally within Oracle Compute Instance. We can direct external traffic from port 80 to port 5000 (or any other port, mapped with Docker container) through Nginx.

Install Nginx:

yum install nginx

Go to Nginx folder:

cd etc/nginx

Edit configuration file:

nano nginx.conf

Add context root configuration for Oracle JET application, to be directed to local port 5000:

location /invoicingdemoui/ {
     proxy_pass http://127.0.0.1:5000/;
}

To allow HTTP call from Nginx to port 5000 (or other port), run this command (more about it on Stackoverflow):

setsebool -P httpd_can_network_connect 1

Reload Nginx:

systemctl reload nginx

Check Nginx status:

systemctl status nginx

That's all. Your Oracle JET app (demo URL) now accessible from the outside:

Pages