I have worked on a variety of projects in life, professionally mostly in advertising, though I have interests in programming, nature, reading, exercise, and gardening. I always love learning new things, nothing is better than finding a new hobby to learn.

App Goblin: App Scraper & Dashboard


App Goblin screenshot

App Goblin is the combination of several open source projects I built. I don’t know why, as there are a large number of similar projects like data.ai and sensortower.com which have many more features. But it was a great project for me to learn more frontend and javascript as well as give me something to do with the scraper which I had built previously before the site itself (whats the point of a database if you cant use it somehow). For now App Goblin is simply there as a resource free of charge as it’s running costs only $10 a month or so in hosting.

Tech Stack:

First is the underlying data which is collected and maintained from github.com/ddxv/adscrawler

The adscrawler uses Python & PostgreSQL to crawl app stores to collect apps and their basic information like names and rating counts. This data is then stored to the PostgreSQL database.

The website itself is also open source and can be found at github.com/ddxv/app-store-dash

The website is built from a Python backend API based on LiteStar which manages queries to the PostgreSQL database. The API is used by a JavaScript Svelte frontend with Tailwind and Skeleton for CSS. All projects are glued together with systemd and websockets where needed. Everything is hosted on AWS in the small EC2 instances.

Hacker News App & Widget

There are many Hacker News apps, but this one focused on two features:

  1. Widgets: This app supports dynamic widgets using Compose Glance. The widgets can be themed and set up with one of the three main categories: “New”, “Top” and “Best”.
  2. Themes: Both the widgets and the main app support a number of color schemes based on user preference.

This project focused on learning Kotlin as well as “modern Android”, a term which I did not invent.

In addition to Kotlin it is supported by a Python backend implemented in Python.

All code is available:

Python API: https://github.com/ddxv/hackernews-api

Android App: https://github.com/ddxv/hackernews-api

Number Puzzle Widget

My second game in a widget! This one has slightly more complex logic than tic-tac-toe but still works good.

  1. Widgets: This app supports dynamic widgets using Compose Glance.
  2. Game: Sort numbers from 1 – X. Comes in 3 sizes: 3×3, 4×4, 5×5

All code is available:

Android App: https://github.com/ddxv/NumberPuzzle

Tic-Tac-Toe Widget

I never see games using widgets as part of their way of interacting with users. To see if it could be done, I tried making a simple tic-tac-toe widget so users can play tic tac toe from their home screen.

  1. Widgets: This app supports dynamic widgets using Compose Glance.
  2. Game Logic: The game logic is simple here, minimax and keeps track of your wins/loss records.

All code is available:

Android App: https://github.com/ddxv/tic-tac-toe-app

Storm Tracker & Widget

I love checking the different weather models on apps like Windy. I often wish though that I could just see their predictions at the same time, especially for storms. So I built this in Python, pulling in data from NOAA sources and plotting them together at once to see live and historical comparisons of models.

  1. Widgets: This app supports dynamic widgets using Compose Glance.
  2. Models: This currently supports most several NOAA models as well as CMC and ICON. ECMWF models will hopefully be added in the future.

In addition to Kotlin it is supported by a Python backend implemented in Python.

All code is available:

Python API: https://github.com/ddxv/storm-tracker

Android App: https://github.com/ddxv/strom-tracker-app

Space RTS

C#, Android game, just a fun side project to make a small RTS game. Basic bases that generate ships. Move your ships to the next base to generate ships faster.

Github: https://github.com/ddxv/rts-2d but currently set to private due to keys, but happy to share if anyone is interested.



A Python project to crawl and store iOS and Android Apps and then further crawl their developer pages for app-ads.txt files. The goal is to find patterns in app-ads.txt files for better understanding the advertising ecosystem.

Ads Dash


Python dashboard to view the data collected by AdsCrawler. Feel free to contribute the the dashboard. I am working on hosting a version of it for the public on https://ads.jamesoclaire.com


https://github.com/ddxv/backfire-dev Python project from 2016 for backtesting crytpo trading schemes, but quite out of date now.

Professional Work

I’ve worked in gaming since 2013. I got started in Beijing working with Chinese mobile game publishing helping global launches across a half dozen titles. In the past half decade I’ve been growing our own startup that helps empower game developers to automate their advertising campaigns and insights.

I love working with data, databases, machine learning and data visualizations.


Since 2016 I’ve been co-founder and working with Bubbleye to help automate mobile game advertisements. Bubbleye is an industry leader in moving the mobile user acquisition ecosystem towards greater intelligence and automation. We help everyone from small game developers to large game publishers to deliver insights into their data and automate the repetitive actions their team performs so that campaigns are managed 24/7. In 2023 I moved away from a day to day role at Bubbleye, but am still close with the team.

Follow Bubbleye on LinkedIn
Read more about Bubbleye on our site.