Damian Boh

Hello, World!

I am Damian, a data scientist and developer with a background in theoretical physics. I have professional experience in data science, ML engineering, NLP, AI product development and deployment as well as business collaboration and stakeholder communication. I am currently in the finance sector, and have previously led a machine learning team in a tech cybersecurity company. I also have working experience in tools such as Hadoop, Spark, Hive, Impala, Flask, Django, Streamlit, Dash, FastAPI, Docker, Linux, GitLab, GitHub Actions, Kafka, MLFlow etc. I run a personal medium blog where I write tutorials of my data science, machine learning, deep learning and NLP projects together with sharing the source code. My interest and motivation in writing articles and sharing my knowledge hugely stems from my past teaching experiences as a physics lecturer and computing trainer. Similarly I greatly enjoy learning and reading about new technologies and trends as well as gaining insights from other people's projects! In my free time, I am a mobile and web app developer who has several apps published on Google Play Store with over 50k downloads and apps on HuggingFace spaces, Streamlit cloud and Railway.app. I love tinkering with hardware electronics and microcontrollers too. I have built drones, robotic cars and arms and a bunch of IoT projects. Feel free to check out my personal projects and videos of my robots on this page! Let's all learn from one another!


ANNOUNCEMENT

All links to my Python apps listed on Heroku are no longer working as Heroku has announced that it will stop offering free product plans. 😢😢 I am looking for a viable replacement! Currently https://railway.app/ looks like a cheap alternative.

PYTHON, DJANGO, FLASK, STREAMLIT

(4th Place in CrowdANALYTIX Contest) Identify Characters from Product Images

Deep learning object classification model which won 4th place in image classification contest by CrowdANALYTIX. Model built and trained in PyTorch which identifies characters (from pokemon, star wars, minions etc.) from images of products (shirts, bags, mugs).

LLM Chatbot for Country ESG Policies Comparison

Chatbot with agent powered by Mistral 7B Instruct LLM for users to ask and compare between ESG policies of different countries. Users can also upload their own PDF document, or perform web scraping in the app to override the existing country ESG policies database. Various parameters (chunk size, retriever etc) can be adjusted.

LLM Chat with Stock Earnings Calls Transcripts Gradio Webapp

Gradio Webapp that allows users to ask specific questions about lengthy earnings call transcripts and have the Mistral 7B large language model (LLM) answer them. Deployed on HuggingFace Spaces. Earning Calls Transcripts scraped from the Financial Modelling Prep API.

NLP A Level Physics Exam Question Sorter Flask Web App

NLP model to automatically extract questions from years of A Level physics examination papers and sort them into their physics topics, deployed in a Flask web app. Model is trained on A Level physics tutorial questions labelled by topics. User can upload many pdf A Level physics exam papers at once, questions will be cut and sorted into respective topics in separate pdf files, available in a zip folder for download.

NLP A Level Physics Question Classifier Flask Web App (Text Input Interface)

This project uses the same NLP model as the previous project to classify A Level Physics questions. However, it is for users who wish to test the model, rather than the full program which requires input of pdf exam papers. A text input UI is give for users to enter the question text to have it classified.

NLP News Category Classifier Flask Web App

Training an NLP model to classify news into 10 categories, embedding the model in a Python Flask Web App interface and deploying it onto the Railway.app cloud.

Live Sentiment Dashboard of Dow Jones Stocks News

Live stock sentiment dashboard of Dow Jones stock, showing the sentiment, stocks, industries and their respective allocation in the Dow Jones Index. A GitHub Actions workflow is configured to run a script that scrapes the website for news headlines, perform sentiment analysis and upload the page every 30 minutes. The page is hosted via GitHub Pages.

Sentiment Analysis of Stocks from Financial News

Extract daily stock sentiments from financial news headlines scraped from the internet.

Stock Hourly/Daily Sentiment Dashboard Streamlit Web App

Similar web app as in the previous project, but built on Streamlit instead of Flask, after I learnt about the Streamlit framework. Deployed on Streamlit.io.

Stock Hourly/Daily Sentiment Dashboard Flask Web App

Web app built in Flask which displays the daily and hourly sentiments for a stock (user to enter ticker as input). Stock sentiments are determined from financial headlines scraped from the web, via the same method as the previous project.

Stock Earnings Calendar Streamlit App

Streamlit app with an interactive calendar with month, week, day, list view of stock earnings dates of user selected ticker symbols.

Live Georgia Tech OMSCS Course Reviews Dashboard

Live dashboard of Georgia Tech's Online Masters of Science in Computer Science (OMSCS) course reviews and ratings. This was built using GitHub Actions to run a Python script regularly to pull the data from OMSCentral, clean and aggregate data, create interactive plots into a dashboard, before converting the plots to a HTML page and pushing it onto GitHub Pages.

Singapore Attractions Outings Django Webapp

Django Webapp that allows users to search for attractions in Singapore, create outings to attractions, and invite other users. The Singapore Tourism Info Hub API is used to populate attractions data in the internal SQL database. Celery, Celery Beat, and Django signals can be used for sending and scheduling email reminders, attendance updates and invites to users. REST API endpoints are implemented with Django REST Framework for users to query for or create attractions, outings and outing invites.

Pokedex Streamlit Web App

Search Pokemon. Filter, chart and display Pokemon stats and search for Pokemon with similar stats.

Stock Intrinsic Value Calculator Gradio Webapp

Gradio Web App that calculates a stock’s intrinsic value by scraping financial metrics and financial statemenets from multiple online sources and displaying all the results in a graphical UI to the user.

Determine Intrinsic Value of a Stock Programmatically

Applying calculations using financial data to project future cash flows and applying the discounted cash flow model to determine the intrinsic value of a stock. Data obtained by scraping financial ratios from the FinViz website, and querying income, balance sheet and cash flow statements from the Financial Modelling Prep API.

Evaluate a Stock Investment using Python

Obtaining financial data from FinViz and Financial Modelling Prep API to evaluate a stock investment according to the following criteria: Consistent Increase in Revenue, Cash Flow and Net Income, High and Consistent Return on Equity, Competitive Advantage, Great Financial Health, Reasonable Stock Price (Below Intrinsic Value).

Stock Portfolio Optimizer Streamlit Web App

Find optimized max sharpe portfolio weights for stock tickers of the user's choosing, according to the Modern Portfolio Theory. Historical stock prices are obtained from an API to calculate mean returns, volatility and covariance matrix to be used as the optimizer inputs. Web app built using Streamlit and deployed on streamlit.io spaces.

Stock Portfolio Optimizer Gradio Web App

Same function as previous app, but written as a Gradio app as some people prefer that. Find optimized max sharpe portfolio weights for stock tickers of the user's choosing, according to the Modern Portfolio Theory. Historical stock prices are obtained from an API to calculate mean returns, volatility and covariance matrix to be used as the optimizer inputs. Web app built using Gradio and deployed on HuggingFace Spaces.

Tutorial on Deploying a Streamlit Web App to 3 Different Cloud Platforms

Tutorial with simple examples on how to deploy a Streamlit web app to Hugging Face Spaces, Streamlit Cloud, as well as the Heroku App Platform.

MOBILE APP, ANDROID, JAVA, FLUTTER

Singapore ERP Rates Mobile App

Android app that provides a quick glance of the Singapore Electronic Road Pricing (ERP) Gantry locations on a map, and real time ERP rates and timings in Singapore. It also features a journey planner for users to avoid using roads with heavy traffic during peak hours and to save on ERP costs. Data is fetched from the Land Transport Authority DataMall API.

Singapore MRT Mobile App

Android app for the Singapore MRT transport system with the following features: Live arrival times of next trains and destinations, first and last train timings, show nearby MRT stations on map, search for MRT stations and filter by MRT Line, show MRT map, add MRT stations to favourites, customize app settings.

Singapore Traffic Cam Mobile App

User friendly Android app which allows user to view Singapore LTA realtime traffic cameras. User customization options included. Data is fetched from the Land Transport Authority DataMall API.

Physics Definitions Mobile App

Android app that provides A Level physics definitions on the go. Includes a test-yourself mode, search and add to favorites function.

HTML, CSS, JAVASCRIPT

Physics Simulations Website

Website with physics simulations for high school students. 1D kinematics solver, bouncing ball, lens ray diagram.

Stock Intrinsic Value Calculator

Simple stock intrinsic value calculator interface written in Javascript, along with an explanatory article on where to get the input values.

IOT, ELECTRONICS, ROBOTICS

While I spend most of my time programming software these days, I absolutely love making, hacking and building electronics and IoT related projects too! I spend my free time applying what I do at work to cheaper projects I can build at home, learning a lot of things that I can then apply back at work. :)

I love connecting pieces of software (on different nodes) and hardware (sensors and controllers) devices together to see what they can do as a whole! Here are some of my projects involving Arduino, Raspberry Pi, Robot Operating System (ROS), IoT, Bluetooth Android App and Speech Controllers etc.

HOW TO REACH ME