Past & Current projects

2018: Binomial stock option pricing script. Updated in 2021 & 2022 to use TDAmeritrade API

2019: transcript.fm, searchable podcast transcriptions using PostgreSQL full text search. Halted because of legal reasons after being pitched to a new venture competition. Keeping the domain for a future project based on this idea

2018-2020: School social network app. Github, Demo

2020-2021: worldcomm (in TestFlight). A location based voice chat app written in react-native. Demo 1, Demo 2

2021: bullionstats. Tracks silver inventory & premium trends

2022: Managing a friend’s wordpress page

2022-2023: SpliceX (in macOS App Store). MacOS application for transcribing and splicing audio/video content

Made changes to worldcomm so WebRTC no longer uses plan-b but instead uses the unified plan

Current: (done 2023) , fixing bugs in SpliceX, possible project using Berkeley’s BOINC, integrate SpliceX with old transcript.fm website

Project management

I’ve been writing notes on what I’d hope to accomplish each quarter for the past few years. One issue I found with this is that a good amount of these tasks are not accomplished. Recently I’ve made a change to write this monthly instead of quarterly.
I’ve found that this accomplishes two things:
1. More attention is put towards these goals
2. The goals are more realistic

For the month of June my goals were to release SpliceX, pick up guitar, possibly start a powerline communication (PLC) project & do some research on machine learning models & music generation.
For the month of July, the plan is to
– Run a few attempts to get worldcomm on the app store,
– continue guitar
– get my server colocated(?). But realistically this may happen later this year
– Do at least 1 livestream making changes to SpliceX
– possibly start that PLC project
This list may change before July. Also its a shorter month since I have vacation that month

One thing that I found that helps is to pay attention to where time is being spent and increasing the amount of work involved to spend time on those things so that I don’t and do something more productive instead. In a given year I usually download and delete Facebook, discord, & Instagram 5-6 times. I delete them once I start using them a lot

The purpose of the livestream isn’t to get viewers or anything since the content wont be that exciting. It’s just so that I can stop thinking about wanting to do it along with a few other reasons that might not really matter.
Also I think my time is better spent livestreaming while making changes to SpliceX & maybe then I can introduce some sort of a structure.

Also I think I’m going to end that project idea with Berkeleys BOINC. It’s not that important

SpliceX project outline

The motivation behind this project came from looking for the most efficient solution to a particular video editing task: voice splicing

Overview

The audio or video files are transcribed and split into word bubbles. The word bubbles are colored based on transcription confidence. Clicking on the words plays the segment within the audio/video file.

There’s a search bar that allows quicker searching of the word bubbles. 

⌘ + Click on the word bubble adds it to the word scroll list (bottom view).

The text or time for individual words in the transcription can be modified to something else.

By default, users run audio playback but there also includes video playback. This is somewhat buggy

Each word bubble in the word scroll list can be selected and the time adjusted

Within the file list, the speaker column is currently unimplemented

Design notes

I decided not to go through the design phase for a project like this since it is more like a utility. This is unlike the last two larger projects: a school social network app and the worldcomm project. It usually includes a few weeks worth of making screens on illustrator or Figma. The objective is to get it completed faster than it took to make those

Technical notes

The swift project uses storyboards and was the first project that I decided to include code Linting midway through the project using swift lint. It uses unit tests for certain functions. Initially I intended to use core data but decided to just import & export projects as JSON files

Quick overview of the school social network app

Development was halted when a similar app appeared. GithubDemo

Stack

App: react-native, redux, websockets (internally through JS, no NPM library), expo, jest (testing)
Web Server: Node.js, express, ws, cassandra-driver (for scylla database), multer & aws-sdk (media upload)
Database: scyllaDB

Process

I followed the slower but more visually appealing process of designing first, developing the UI, web server, database, and putting everything together. Design was done in Adobe Illustrator using design references to examples on dribbble

binomialOptions2018

Project motivation

The idea for this project can be sourced from a 20 second clip in the movie The Big Short. Which, for legal reasons I can’t embed here so here is a link

https://youtu.be/Qo1OSqBQYmk?t=218

The clip explains a very simplified version of the investment strategy for a firm known in the movie as Brownfield Fund known as Cornwall Capital in real life. Betting on unlikely events using cheap options. The list of stocks came from a zacks.com screen. It had broad requirements aimed at any stock with a liquid enough option chain.

As for the strategy, I was hoping to find out what events the market thinks will never happen based off of the abnormal option pricing. Abnormal in this case just means that its expecting a move that doesn’t match its past performance since volatility data is what the algorithm has to go off of.

Technical notes

The code itself began as messy at best and later became somewhat understandable. It was written before I knew the best practices with respect to variable naming & program organization. The bulk of the data was initially sourced from Barchart’s API before they required a subscription service. Then it was converted to TDAmeritrade’s API in 2022. Stock volatility & dividend info is from yahoo finance

Example report (ran 11/27/22)

Hello.

The purpose of this blog is to outline past or current projects that I’ve spent time on.

The creation date of some posts are altered to keep the projects in chronological order