Last updated: February 27, 2019 [updated every 1-2 months] - v.0.6
Hi! My name is Iurii Dziuban [ˈjurij dziuban'] and I like to make chatbots.
My current tech stack in regard to chatbots looks like this:
Other things I'm working/worked with: Flask, Github, Heroku, AWS Lambda/S3/EC2, Redis, Docker etc
My current experience by programming language: JavaScript (Node.js) ~1100 hours, Python ~500 hours, Golang ~190 hours

Projects

Here are the projects that I’ve done (the most recent go first; only my side/hobby projects are shown here):

'Podervianskogobot' Facebook Telegram Skype Web Github - v1 Github - v2 (August 2018 - February 2019)

Since my last update of this site I launched my first multi-platform chatbot - Podervianskogobot.com. This is a bot which replies with popular quotes (drawn on stickers) from plays by Les' Poderviansky (the bot is in Ukrainian) and allows to read and listen to respective plays performed by the Author. Les Podervianskyi is a Ukrainian painter, poet, playwright and performer. He is most famous for his absurd, highly satirical, and at times obscene short plays, many quotes from which bacame popular memes (more on Wikipedia).

The bot was made using Node.js, Microsoft Bot Framework and npl.js and is available on Facebook, Telegram, Skype Web. Actually this is the 2nd "generation" of the bot, and the 1st (which wasn't launched and was supposed only for Telegram) was made using Node.js, telegraf wrapper of Telegram API and RiveScript.

I started to work on it last summer (>6 months ago), before I started to cooperate with Master of Code. Thought that it would be funny to make such a bot, and also had a chance to try several new things, mainly RiveScript and npl.js (inspired by this article). This was also my 1st 'live' bot on MS Bot Framework and the 1st bot for Skype and Web.

To make this bot I:

  1. Read through >25 plays by L.P. from this source, chose the most popular quotes (got ~140 of them);
  2. Took the most popular requests from Dialogflow's Smalltalk and assigned quotes from L.P.'s plays as responses to those requests;
  3. Contacted with Les Podervianky's representative to discuss copyright moments and got an approval;
  4. Draw stickers for all those quotes + separate stickers for the plays (~140 in total, this took up to 60% of time working on this project ;);
  5. Copied, parsed and formatted the texts of the plays, downloaded and prepared the audios.
  6. Created the bot itself on Node.js using Microsoft Bot Framework for 4 platforms (Telegram, Facebook, Skype, Web). Also wanted to make a version for Viber but their current policy doesn't allow that :( The bot is actually quite simple - after greeting each user's input is "fed" to NLU block which tries to respond with relevant quote. If no intents are triggered than a simple full-text search is made and user is presented with a list of plays in which his/her input was found. If no such phrases were found, user gets a default fallback response.
  7. In this bot I used an open source library for NLU nlp.js inspired by the above-mentioned article. My conclusion for npl.js - a nice tool and could be used if third-party solutions are not allowed for some reasons but for production I would still use Dialogflow or LUIS.
  8. Deployed the bot to an AWS EC2 instance. This bot is not using any DB or ElasticSearch (thought these could be used and could improve the flow) and thus can be hosted on a single AWS t2.micro instance for free (under free-tier plan).

So far the bot had about 20 users from Facebook, ~10 from Telegram and a few from Skype and Web version.



'BestMovieQuotes' Google Assistant Github (October 2018)

So starting from September 18, 2018 I switched from self-educating in hobby mode 2-4 h/day to building chatbots full-time for Master of Code. So I will probably have less time for my side projects but will try to hold on ;) In October I got acquiainted with Actions on Google and built 2 simple voice bots for Google Assistant platform using Dialogflow and Cloud Functions for Firebase. One of these bots, BestMovieQuotes, was approved by Google and is publicly available now (though not for all countries and/or locales - you may need to switch to English as a basic language on your device). So it's a quite simple bot, actually a stripped down Dialogflow's smalltalk agent that answers with audio-quotes from famous movies (like "The Godfather", "Casablanka", "The Lord of the Rings", "Titanic" etc.). It gives more or less relevant responses to phrases like 'hello', 'how are you', 'what's up', 'what is life/love', 'bye' etc and you can also ask it for a random quote. You can try it on your smartphone in Google Assistant app (Android, iOS) or on devices like Google Home etc. To invoke the bot please say something like 'Ok Google, talk to Best Movie Quotes' or 'Ask Best Movie Quotes for a random quote'.

P.s. A few words about how I got this bot approved and included into Google Actions directory: it wasn't so straightforward, I succeded only after 3 tries ;) The problem was that I wanted my bot to conduct a more or less 'natural' talk, listening to user's phrases and responding with relevant quotes. But the guys approving the app wrote that "During our testing, we found that your app would sometimes leave the mic open for the user without any prompt". I tried to prompt user to continue dialog using the quote "Talk to me goose" from "Top Gun" which I added after each response but this variant was also rejected. So finally I put an explicit 'robot-read' prompt after each quote - it's not really what I wanted and sounds a bit weird but probably is more correct.

As for the 2nd bot. We had a Halloween party here at MOC, and I also built a simpe voice bot especially for this event - CreepySounds. I didn't submit it to Google Actions directory so this bot isn't available publicly. But in case you'ld like the idea you may use my code and easily make one for yourself (it should be accessible as a test version on devices where you're logged in). This bot responds to any voice input by a random scary sound (taken from Google sounds library, mainly Horror sounds).



I got a full-time job as a chatbot developer!

This post is not about another chatbot of mine but about an important event in my coding career: I got hired and now work at Master of Code (FB, www)!
Just a quick summary of my journey to this stage: I'm a biologist by education, last 10 years have been working as an English-Russian medical translator. Married, we have 3 small kids (<6 years old). I started to learn coding 11 months ago, in Oct 2017 when I was 34. I was studying for 2-4 hours a day after my main work and on weekends, ~80 hours/month. By the moment I got a job I have been self-educating for ~840 hours net. I was making small projects (9 in total). Created 8 chatbots. Started from Python but then moved to Node JS. For more info – please see below. I had 2 interviews, both at the company for which I’m working now. Still getting used to the new format of work/life (as of Oct 11, 2018 I’ve been working for 3 weeks). A long and exciting way ahead… ;)

'GuessThePlaceBot' Telegram Github (August 2018)

Do you know your city well? Can you recognize its places by street view photos? Play a game with GuessThePlaceBot and check that ;) This is a Telegram bot that asks to identify places in a chosen city by Google Street View images. Built using NodeJS for bot logic, Telegram Bot API (Telegraf wrapper), hosted on AWS Lambda, stores conversation state in PostgreSQL DB (AWS RDS).
Note: Doesn't work on Telegram Desktop or Telegram for Web (platforms limitation - don't allow to send location)
September 30, 2018: Presented the bot in blog findthisplace.d3.ru, getting feedback..


'FinishPhraseBot' Web Demo Github (July 2018)

It's always more interesting to learn something on practice ;) So learning PostgreSQL I decided to write a simple bot that tells the beginning of a phrase (for eg., of a proverb) and asks user to finish it. It uses Dialogflow for conversation construction with webhooks on Node JS, and PostgreSQL for storing questions. But to make this bot a little bit more original I also attached a voice "frontend" written by Jaanus Kase. Give it a try ;) (works in Chrome for desctop or Android; as the webhook is hosted on Heroku and goes to sleeping mode in 30 min if not used, so the 1st response may take some time or may be empty).
P.s. This bot also understands SQL and the database it works with can be managed through the bot itself (see video; I won't provide the link to the text-only version of this bot though ;)).

FinishPhraseBot

8:20


'FoodCompositionBot v2.0' Facebook Github (June 2018)
FoodCompositionBot is a simple chatbot that analyses food by image (or at least does his best to do that ;) Give it a try by uploading a photo from your camera or photos, posting a link to an image with food or simply typing a food name. This bot was written using NodeJS, Google Vision API for image content analysis, Nutritionix API as nutrients data source and Facebook Messenger APIs. P.s. It's hosted on Heroku so don't be surprised if it starts the conversation with some delay ("cold" start may take up to 6-10 seconds)


'Fellowtraveler-website' Github | 'Fellowtraveler-Telegram chatbot' Github | 'Fellowtraveler-Facebook chatbot' Github
(March-June 2018 [project stopped])

This is supposed to be an entertainment project/social experiment - a toy 'travelling' across the globe being passed between accidental people. Built on Python using Flask, MongoDB and APIs for GoogleMaps, Dialogflow and messengers (Telegram, Facebook). A chatbot (2 integrations - Telegram & Facebook) and a website working with the same database.
Update - 02 June 2018: Website and chatbot for Telegram are almost done. Hope to make a version for FB Messenger and launch the project soon.
Update - 11 July 2018: Due to other training tasks with higher priority I had to pause my work on this project (but still hope to finish it and launch). Website and Telegram bot are almost ready, Facebook bot is ready for ~80%.
Update - 18 December 2018: Eh.. Still no time to finish this project. Telegram bot and website off. Who knows maybe one day I will rewrite it on node.js (I still like the idea).


'Remindmebot' Github (May 2018)

On May 16 2018 I visited IT Career Day 2018 in Cherkasy, a so called "IT-job fairs", which was the 1st event of such type for me. There I spoke with representatives of several companies. Preparing for this event I looked through websites of main companies and came to know that Master of Code (MOC) is making chatbots. I had a talk with guys from MOC and they suggested me to fulfill a test task writing a bot on node.js. I took this challenge. Though all my previous projects were on Python, I never coded on Javascript before and in general up to 3/4 of instruments used in this project were new for me, I seem to have coped with the task. You can read a bit more about how I made the way from my first "Hello world" on JS to writing and launching Remindmebot in 60 hours here.
About this chatbot: it's a bot-reminder written on Node.js using Dialogflow and Facebook Messenger APIs and MongoDB. It can create reminders using NLU (for example it can understand phrases like "Remind me to go cycling at 7:00 on Mondays, Wednesdays and Fridays"), delete all or one specific reminder and alert reminders which can be "confirmed" or "snoozed".


'SharedExpensesBot' Github (February-March 2018)

The idea for this training miniproject was suggested by my brother who said that it would be nice to have a chatbot that could help to track shared expenses during travels with friends. For example, when one pays for apartment, someone else for dinner, the 3rd one for gas, another food/drinks/tickets etc (as an alternative to chipping in with equal sums each time). More detailed information - see github or Dialogflow's forum.
Topics learnt/covered in this project: plain python, MongoDB, dialogflow and telegram/facebook integrations.

'PlotBot' Telegram Web Demo Github (February 2018)

Learning to build chatbots on dialogflow.com platform I decided to create a PlotBot - a chatbot which builds charts (using pygal python library for charting). Try this chatbot in Telegram, Facebook Messenger (waiting for approval) or in a web demo bottom right (click here to open a bigger window). See more detailed information about this chatbot on github or Dialogflow's forum.
Topics learnt/covered in this project: dialogflow, Heroku, pygal, dialogflow and telegram/facebook integration.



Other, non-chatbot projects

'Food Composition' Github (January-February 2018)
My 2nd real miniproject. Done in Jan 2018. A Flask app that tries to determine approximate percentage of fats, carbohydrates and proteins in food by image. Made for fun. Still thinking how to filter non-food images ;) Uses Google Vision API and Nutritionix API. Additionally created a simple chatbot (see it below on the right) on dialogflow.com platform that can tell fats/carbohydrates/proteins % content for the food user enters (you can also find this chatbot for example in telegram).
Topics learnt/covered in this project: Flask, REST API (Google Cloud Vision API, Nutritionix API), bootstrap, plot.ly, deployment to server, dialogflow, Heroku.

'Car-price-age-mileage' Github (November-December 2017)
My 1st real miniproject. Started on 01.11.2017 after learning Python/coding for ~175 hours (3-3.5months) in total, done in ~70 hours. A Flask app that allows user to choose a car model and get scatter charts showing how this car's price is changing depending on its age and mileage. Data is requested from auto.ria.com (the biggest Ukrainian advertisement board for vehicles) using their API. Charts (for age & price, price & mileage and age & mileage) are drawn using 2 charting engines/libraries - pygal and plot.ly. About 50% of time working on this miniproject was spent learning how to create a user management system in Flask (register, login, profile update, password update, password reset, avatar functions). App has a preferences page (accessible for registered and logged in users) where a user can change 2 parameters: adverticements quantity for the model being analyzed (5-50) and the charting engine.
Topics learnt/covered in this project: Flask (including creation of user management system), vagrant, git, virtualenv, REST API, requests, JSON parsing, charting (pygal, plot.ly), MongoDB, bootstrap, deployment to server.

Knowledge

Here I will be posting links to courses/materials/software and other resources that I’ve covered/worked with (last links go first).

1800 hours
Virtual Assistants and Consumer AI // chatbot, ai, virtual assistant, alexa, google home
1700 hours
Feb 14, 2019 - 100 working days in cooperation with Master of Code
Table associations in relational databases // db, postgres, table associations
Facebook Broadcast API // facebook, messenger, broadcast api
Podervianskogobot - getting feedback // podervianskogobot, chatbot, feedback


Learning Golang - STOPPED/PAUSED (08/02/2019)


Learning Golang - START (05/01/2019)



Project "PodervjanskyBot" - FINISHED (04/01/2019)

Elasticlunr // search, lunr, elasticlunr
How to add full text search to your website // full-text search, search
Bunyan - logging library // node, bunyan, logging
Setting Up An HTTPS Server With Node, Amazon EC2, NGINX And Let’s Encrypt // deploy, aws ec2, nginx, let's encrypt
Deploying a Node App on Amazon EC2 // aws, ec2, deploy
Microsoft Bot Framework: sending channel-specific messages // mbf, microsoft bot framework, chatbot

Project "PodervjanskyBot" - RESUME (20/12/2018)


What is Test Driven Development (TDD)? Tutorial with Example // tests, tdd
The Absolute Beginner’s Guide to Test Driven Development, with a Practical Example // tdd, tests
Dialogflow API v2 // nlu, nlp, dialogflow, chatbot
1400 hours
JS - OOP // js, oop
ООП в функциональном стиле // js, oop
1300 hours
Delete remote branch on Github // git
JavaScript: async/await with forEach() // js, async
Tutorial: Using the Messenger Webview to create richer bot-to-user interactions // messenger, webview
The JavaScript this Keyword // js, this
Call stack, event loop and async programming // js, call stack, async
ФУНКЦІОНАЛЬНЕ ПРОГРАМУВАННЯ В JAVASCRIPT // js
Функциональное программирование на Javascript // js
1200 hours
Understanding Asynchronous JavaScript — the Event Loop // js, async
Morgan (npm) //npm, morgan
JOI (npm) // npm, joi
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) // unicode
1100 hours
JMeter Result Analysis: The Ultimate Guide JMETER RESULT ANALYSIS: THE ULTIMATE GUIDE // jmeter, load testing
Jmeter // jmeter, load testing


Project "BotReminder 2.0" - STOPPED (02/11/2018)


Project "BotReminder 2.0" - CONTINUE (13/10/2018)



Project "BestMovieQuotes" - END (12/10/2018)

Actions on Google // actions on google, dialogflow, chatbot
Build your own Action for Google Assistant // actions on google, dialogflow, chatbot
How To Build Your Own Action For Google Home Using API.AI // actions on google, dialogflow, chatbot

Project "BestMovieQuotes" - START (10/10/2018)



Project "BotReminder 2.0" - PAUSED (10/10/2018)

The Twelve Factors // coding, general
Util.promisify // util.promisify, async, javascript
How To Build Your Own Action For Google Home Using API.AI // google actions
Build your own Action for Google Assistant // google assistant, google actions
DB migrations - Seaquelize // sequelize, migrations
Schema migration // schema migration, db
Fixing SQL Injection: ORM is not enough // orm, sql
Using Redis with Node JS // redis
Improving database performance with Redis // redis
Redis storage adapter for Microsoft BotBuilder // redis, bot builder
Redis // redis
900 hours
Merging objects in JS // javascript, merging objects
JS: Desctucturing assignment // javascript, desctructuring
Simplify your JavaScript – Use .map(), .reduce(), and .filter() // array functions, javascript
State of npm scripts // npm, npm scripts
Introduction to NPM Scripts // npm, npm scripts
NPM scripts // npm, npm scripts
QnA Maker // azure bot service, qna maker
Project personality chat // azure bot service, project personality chat
Conversation learner // azure bot service, conversation learner
Using dotenv package to create environment variables // dotenv, javascript, node
DotEnv // dotenv, javascript, node
Prettier for VSCode // vs code, prettier, eslint
Azure Bot Service Documentation // chatbot, azure
Microsoft LUIS // luis, chatbot, nl
Setting up ESLint on VS Code with Airbnb JavaScript Style Guide // eslint, airbnb, javascript, vs code
Airbnb JavaScript Style Guide // eslint, airbnb, javascript
5 JavaScript Style Guides — Including AirBnB, GitHub, & Google // javascript, eslint, airbnb
Create a bot with the Bot Builder SDK for Node.js // chatbot, bot framework, node

Project "BotReminder 2.0" - START (18/09/2018)



Project "PodervjanskyBot" - PAUSED (18/09/2018)


Project "PodervjanskyBot" - START (05/09/2018)


800 hours
How we built AI Chatbot Using JavaScript and ChatScript // chatscript, nlu
Presented FindThisPlaceBot on d3.ru // findthisplace, chatbot, promotion
ChatScript // chatscript, nlu
A Beginners Guide To Understanding The Agile Method // agile


Project "GuessThePlaceBot" - END (31/08/2018)


Project "GuessThePlaceBot" - START (07/08/2018)


Amazon S3 - Github examples // amazon s3, aws
Amazon S3 // amazon s3, aws
JavaScript ES6 — write less, do more // javascript, es6
Object-Relational Mapping (ORM) is a technique that lets you query and manipulate data from a database using an object-oriented paradigm // sql, orm, sequelize
Sequelize - promise-based ORM for Node.js // sql, orm, sequelize
Machine Learning: how to go from Zero to Hero // machine learning, ml


Project "FinishPhraseBot" - END (20/07/2018)


Project "FinishPhraseBot" - START (13/07/2018)


Connecting to PostgreSQL // postgreSQL
PostgreSQL Tutorial // postgreSQL
PostgreSQL Tutorial // postgreSQL
SQL vs. NoSQL Databases: What’s the Difference? // db, sql, nosql
Relational vs. non-relational databases: Which one is right for you? // db
700 hours
LivePerson - Sample App // liveperson, chatbot, javascript
LiveEngage Bots FAQs // liveperson, chatbot, javascript
LivePerson: Start Using Bots // liveperson, chatbot, javascript


Project "Food Composition Bot v2.0" - END (30/06/2018)


Project "Food Composition Bot v2.0" - START (18/06/2018)


Google Fonts // fonts, google, design
Chatbots were the next big thing: what happened? // chatbot
Top Sites for JavaScript Practice Exercises // javascript
JavaScript - Exercises, Practice, Solution // javascript
Gupshup // chatbot
Recast.ai //chatbot
Smooch.io // chatbot
JavaScript (developer.mozilla.org) // javascript


Project "Fellowtraveler" - PAUSED (12/06/2018)


Project "Fellowtraveler" - CONTINUE (28/05/2018)



Project "Remindmebot" - END (26/05/2018)


Project "Remindmebot" - START (17/05/2018)



Project "Fellowtraveler" - PAUSED (16/05/2018)

No language barrier bot - Multilingual AI Chat Bot with Google Detect and Google Translate // chatbot, l10n
500 hours
6 Chatbot UX Design ‘Must-haves’ for 2018 // articles, chatbot
How Businesses are Winning with Chatbots & Ai // articles, chatbot
The 3 Types of Chatbots & How to Determine the Right One for Your Needs // articles, chatbot
Best chatbot platforms to build a chatbot // chatbot, articles
How to Get to 1 Million Users for your Chatbot // chatbot, articles
This is how Chatbots will Kill 99% of Apps // chatbot, articles
10 Tips on Creating an Addictive ChatBot // chatbot, articles
How Businesses are Winning with Chatbots & Ai // chatbot, articles
Google Static Maps API // google maps, static maps api
Do You Want Your Chatbot to Converse in Foreign Languages? My Learnings from Bot Devs // chatbot, i18l, l10n
How to Use ngrok to Test a Local Site // ngrok
Google Maps Distance Matrix API // google maps, distance matrix api
Setting your Telegram Bot WebHook the easy way // telegram, chatbot, webhook
How To Share Localhost To World Using Ngrok // ngrok, deployment
Урок 4. Вебхуки // telegram, chatbot, webhook
Запускаем несколько ботов на одной машине: nginx + CherryPy // chatbot, deployment, nginx
Урок 11. Ведём (более-менее) осмысленные диалоги. Конечные автоматы // telegram, chatbot
Конечный автомат: теория и реализация // chatbot, telegram
Creating a Chatbot with Deep Learning, Python, and TensorFlow p.1-3 // chatbot, deep learning
TelegramBot Analytics - botan.io // telegram, chatbot, analytics
Пишем бота для Telegram на языке Python // telegram, chatbot
Создаём своего первого робота в Telegram при помощи Python 3 // telegram, chatbot
Делаем робота в Telegram: клавиатуры и возможности Inline-режима // telegram, chatbot
7 Live Chat Solutions for Small Businesses // live chat
Telegram бот для службы поддержки (pyTelegramBotAPI) // telegram, chatbot, pyTelegramBotAPI
Embedding Telegram on website to use as Live Chat // telegram, chatbot, web-chat
Request and handle phone number and location with Telegram Bot API // telegram, chatbot
pyTelegramBotAPI // telegram, chatbot, pyTelegramBotAPI
Building Telegram bot Using pyTelegramBotAPI and Flask // telegram, chatbot, python, pyTelegramBotAPI
how-to-create-a-telegram-bot-from-scratch-tutorial (pyTelegramBotAPI) // telegram, chatbot, pytelegrambotapi
different-programming-languages-and-their-fields-of-application // general, articles
Dialogflow API python wrapper (apiai) // dialogflow, nlp, apiai
python-telegram-bot // telegram, chatbot, python-telegram-bot
how-to-create-a-telegram-bot-with-ai-in-30-lines-of-code-in-python (python-telegram-bot) // telegram, chatbot, python-telegram-bot
Dealing with 413 error 'File too big' - nginx on ubuntu, flask // nginx, 413
Nginx: 413 – Request Entity Too Large Error and Solution // nginx, 413
Logging, Flask, and Gunicorn … the Manageable Way // flask, gunicorn, logging
AJAX with jQuery // jquery, ajax
Python Flask jQuery Ajax POST // flask, jquery, ajax
Encoding and Decoding Strings (in Python 3.x) // unicode, encoding
Processing Text Files in Python 3 // unicode, encoding
Unicode HOWTO // unicode, encoding
How to clone git repo into current directory // deployment, git
Getting free SSL certificate - Letsencrypt // ssl, deployment
How to redirect www to non-www - GoogleCloud // deployment, dns
IP address to domain redirection problem in NGINX // deployment, dns
How To Redirect www to Non-www with Apache on Ubuntu 14.04 // deployment, dns
Custom Dialogflow Chatbot using BotUI // chatbot, web chat, botui
Dialogflow V1 API Reference // dialogflow, api
Flask-Babel // flask, flask-babel, l10n, i18n
Top languages to localize your iPhone app and get revenue // l10n, i18n
Localization for Flask Applications // flask, localization, l10n, i18n, internationalization
The Flask Mega-Tutorial, Part XIV: I18n and L10n // flask, localization, l10n, i18n, internationalization
python-twitter: A Python wrapper around the Twitter API // python, twitter
Flask-Session // flask-session, sessions, flask
My Chatbot [web chat for Wordpress] // dialogflow, web chat
Chatbot with Angular 5 & DialogFlow // dialogflow, web chat
Basic html web chat for api.ai dialogflow // dialogflow, web chat
Python Flask jQuery Ajax POST // flask, python, jquery
StoryMap JS // storymap, js, maps, journalism
Place Autocomplete Address Form // google maps, autocomplete
Place Autocomplete // google maps, autocomplete, js
How do you get a query string on Flask? // flask, queries
Flask-JSGlue // flask, JSGlue, js
jQuery posting JSON // python, jquery, js
Send Google Maps marker position to Flask whe dragged // flask, google maps, js
Flask Google Maps (plus: how to write a Flask extension) // flask, google maps
How to get the filename without the extension from a path in Python? // python, file extension
Capturing an Image from the User // image upload, input
Passlib 1.7.1 documentation // flask, passlib
Flask-GoogleMaps 0.2.5 // flask, google maps
400 hours
reCaptcha setup // reCaptcha
Creating Forms // flask, wtf
CSRF Protection // flask, csrf
How to embed a [Twitter] timeline // twitter
Flask extensions registry // flask, extensions

Project "Fellowtraveler" - START (16/03/2018)



Project "SharedExpensesBot" - END (16/03/2018)


Project "SharedExpensesBot" - START (20/02/2018)



Project "PlotBot" - END (20/02/2018)


Project "PlotBot" - START (03/02/2018)



Project "FoodCompositionBot" - END (03/02/2018)


Project "FoodCompositionBot" - START (25/01/2018)



Project "FoodComposition" - END (25/01/2018)

Drugs Info APIs: 1, 2, 3, 4 // API, drugs
Paralleldots - text analysis APIs // machine learning, text analysis, Paralleldots
My Journey Into Data Science and Bio-Informatics — Part 1: Programming // bioinformatics, python
Improving Airbnb Yield Prediction with Text Mining // text mining, machine learning, airbnb
Problems with installing uwsgi - how to solve // deployment, uwsgi
How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 14.04 // flask, ubuntu, deployment, nginx
Protected directories and Files - Flask Web Development with Python 31 // flask, protected files, sentdex
Return Files with send_file - Flask Web Development with Python 30 // flask, sentdex
Flask Mail - Flask Web Development with Python 29 // flask, flask-mail, sentdex
URL Converters - Flask Web Development with Python 28 // flask, sentdex
Jinja Templating Cont'd - Flask Web Development with Python 27 // flask, Jinja, sentdex
Includes - Flask Web Development with Python 26 // flask, includes, sentdex
Flask Tutorial Web Development with Python 24 - Crontab / Cron jobs // flask, sentdex, cron
Learn X in Y minutes // python
Uploading and validating an image from an URL with Django // python, image validation
Style Guide for Python Code // python, pep-0008
Textbox - sentiment analysis of text // machine learning, API
I trained fake news detection AI with >95% accuracy, and almost went crazy // machine learning, articles
Deployment to virtual machine with Ubuntu // deployment, vm, ubuntu
Google Knowledge graph API (general info) // google knowledge graph, api
Nutritionix API // API, nutrionix
Setting up API and Vision Intro - Google Cloud Python Tutorials p.2 (sentdex) // google cloud, vision API, sentdex
Google Cloud Vision API // google cloud, vision API

Project "FoodComposition" - START (02/01/2018)



Project "Car-Price-Age-Mileage" - END (30/12/2017)

Intro and creating a virtual machine - Google Cloud Python Tutorials p.1 (sentdex) // google cloud, vm, sentdex
Writing Great Python Code // python, standarts
Practical Flask Web Development Tutorials by sentdex // flask, sentdex
Plotly DASH // plotly, DASH
Plot.ly // plotly
Nutritionix API // API, nutrionix
AWS Public Datasets // API
What are some fun API's to play with? // API
How I Secured An Internship With One Amazing Side Project // general, career
Flask-Login // Flask-login, login
Flask Tutorial Web Development with Python 20 - Login Required Decorator Wrapper // Flask, decorators, login
Flask Tutorial Web Development with Python 10 - Message Flashing // Flask, flash
Message Flashing // Flask, flash
Flask Tutorial Web Development with Python - User Registration - 1, 1, 3 // Flask, registration
Step 13 - Working with Forms in Flask // Flask, forms
Flask Tutorial Web Development with Python 19 - user login system // Flask, login
Flask Tutorial Web Development with Python 12 - GET & POST // Flask, Get, Post
Flask Redirects (301, 302 HTTP responses) // Flask, redirects
The Flask Request // Flask, request
HTML <form> // html, form
How to Get Your First Developer Job in 4 Months // general, career
Flask-Quickstart: Sessions // cookies, sessions
Cookies and Sessions // cookies, sessions
What is the difference between Sessions and Cookies? // cookies, sessions
HTTP cookies // cookies, sessions
Using PSCP to transfer files securely // deployment, pscp
Developing and deploying Python apps using pip and virtualenv // deployment, virtualenv, git, pscp
200 hours
Bootstrap - Introduction // bootstrap, frontend
Miscellaniours articles on Quora, including 1, 2, 3, 4, 5, 6, 7, 8 // general, career
Introduction to working with MongoDB and PyMongo // mongodb, python
Python Driver (PyMongo) // pymongo, mongodb, python
Getting Started with MongoDB (MongoDB Shell Edition)
Mongobooster // mongodb, mongobooster, ide
Install MongoDB Community Edition on Ubuntu (Vagrant) // mongodb, vagrant
Pygal - Sexy python charting // pygal, charting, python
JSON Library // json, parsing
Requests: HTTP for Humans // requests, python
Principles of good RESTful API Design // api
Flask Minimal Application // flask

Project "Car-Price-Age-Mileage" - START (01/11/2017)


Virtualenv // virtualenv
PyCharm // pycharm, ide
Git Tutorial – Codeschool // git
“Learn Git” course - codecademy.com // git
What is VCS? (Git-SCM) • Git Basics #1 //git
How Does the Internet Work? // general info, internet
CS75 (Summer 2012) Lecture 0 HTTP Harvard Web Development David Malan // general info, http
How the Web works // general info, internet
How does the Internet work? // general info, internet
How To Set Up SSH Keys // ssh
Understanding SSH Key Pairs // ssh
SSH Key // ssh
DevOps BootCamp: Packages, Software, Libraries // unix, libraries
DevOps BootCamp: Files – UNIX // files, unix
DevOps BootCamp: Users, Groups, Permissions - UNIX / users, unix
“Learn the Command Line” course - codecademy.com // command line
DevOps BootCamp: Shell Navigation // command line, shell, unix
DevOps BootCamp: Operating Systems // general info, os
Vagrant (install, setup, boxes, ssh, networking etc) // vagrant
Virtualbox // virtualbox
100 hours
Python coding practice - rosalind.info (28 tasks) (account, github) // python, bioinformatics
Python coding practice - codewars.com (10 tasks) (account, github) // python
Python coding practice - practicepython.org (27 tasks) (github) // python
Python coding practice - coderbyte.com (10 tasks) (account, github) // python
Python coding practice - codingbat.com (account) // python
“Learn Python” course - codecademy.com // python


Interests/About me

I’m 35, I was born and live in Ukraine (Cherkasy). I came to coding from biology (have master’s degree in human physiology, unfinished PhD; while studying at school and university was a winner of All-Ukrainian Biological Olympiads). I have >10-years of experience as an English>Russian medical translator [TA Medconsult]), translated for Novartis, Pfizer, Roche, Bristol-Myers Squibb, Sanofi, Regeneron Pharmaceuticals etc.
Passed a 2-month internship in a molecular biology lab INSERM U963 / CNRS UPR9022 (Strasbourg, France).
Have been learning to code for 16 months (~1800 hours in net) so far (since October 2017).
From September 18, 2018 work as a chatbot developer (node.js) at Master of Code.

Visual timeline of my education and jobs is as follows:


I would like to be working on problems at the junction of coding and biology, psychology, education but other topics are also welcome.
I’m married, we have 3 kids (born in 2012, 2014 & 2014), trying to keep a healthy balance between work and family/life. Our family/kids blog on Youtube.
I like mounting biking – Strava.