Stuff (Personal)
blursed.py
December 11, 2019Just because you can do something doesn’t mean you should! What started off as a (mostly) innocent attempt to mess around with code that modifies code ended as all such things tend to: simultaneously blessed and cursed. Read more about what unfortunately managed to be accomplished with Python codec abuse here here.
Tags: Python, Open Source, Fun, Meta
  Blog Post (Home)
Blursing Python
December 6, 2019Tags: Python, Fun
“blursed (adj): Simultaneously blessed and cursed by a situation, object, person, etc…”
I recently discovered something incredibly blursed while reading an article by faehnrick
in PagedOut Volume 2.
  Stuff (Personal)
Blockcard
April 1, 2019An overcomplicated way to send people birthday cards through the power of blockchain. The repo is an implementation of the accompanying paper here which is probably more interesting than the tooling itself :)
Tags: Python, Open Source, Fun, Tools
  Stuff (Personal)
Showdown.py
January 10, 2019A Pokemon Showdown! client for Python 3.4 and 3.5. This was written to make it easier to write bots, interact with users, moderate chat rooms, and collect data. Takes advantages of Py3’s async features to allow multiple connections over websockets, maintain IO channels, and to integrate with existing IRC bots.
Tags: Python, Data Collection, Web, Open Source
  Blog Post (Home)
Rock, Paper, Scissors, Fire, Water, Grass
January 1, 2019Tags: Python, Data Collection, Game
For those unfamiliar with the finer details of competitive Pokemon, it’s basically just a fancy version of rock, paper, scissors. While RPS gives each player 3 options, a turn in pokemon consists of around 4-9 possibilities for each player. Each player then reveals his or her choice simultaneously, and the results of their actions play out. This makes it different than games like Tic Tac Toe, Chess, or Go where only one player is “in control” at a time, and instead more like a game of Poker where two players are forced to reveal their hands at the same time.
  Stuff (Coursework)
⭐ Guavabot Rescue
Course: CS170 (Algorithms)Term: Spring 2019
CS170 (Algorithms) at Berkeley has a long tradition of handing students an NP-complete problem and holding a competition to see who can produce the best computationally tractable approximation. Guavabot rescue gave a two layered problem:
- Faulty sensing
- Steiner-tree approximation
Team “go-bears'; UPDATE Teams SET score = 0 WHERE name != 'go-bears';
” got rank 23 out of
320 groups. The important thing, of course, was that countless stranded Guavabots around the world were rescued.
As with other projects I can’t really reveal my group’s approach publicly since this project may resurface in future semesters, but if you’re 1) curious and 2) not planning to enroll then let me know!
  Stuff (Coursework)
Penetration Testing
Course: CS161 (Computer Security)Term: Spring 2019
A close contender for my favorite security project. Students were handed an insecure webserver and tasked to find 7 exploits. It turns out breaking stuff is orders of magnitude more fun than making stuff!
  Stuff (Personal)
VADER Sentiment Analyser
July 5, 2018VADER (Valence Aware Dictionary and sEntiment Reasoner) is a lexicon and rule-based sentiment analysis tool that is specifically attuned to sentiments expressed in social media. It is fully open-sourced under the MIT License. This is a port of the original module, which was written in Python. If you’d like to make a contribution, please checkout the original author’s work here.
Tags: Rust, Python, NLP, Open Source
  Blog Post (Home)
Hog Contest (Part 2)
June 15, 2018Tags: Python, Berkeley
Picking up where we left off from Part 1, so far we’ve found a way to generate an optimal strategy for the game of Hog by recursively calculating which moves would be the best. While effective, it certainly wouldn’t have made for much of a contest if everyone who came up with this approach were tied for first. Luckily, the professor was likely aware of this possibility, and threw a wrench into the probabilistic method by forcing the strategies to work with incomplete information.
  Blog Post (Home)
Hog Contest (Part 1)
June 1, 2018Tags: Python, Berkeley, Visualization
The first project of my first CS class at Berkeley was to write the logic for a modified version of the dice game Hog. The game itself is pretty simple (roll die to score points, first to 100 wins), and the project was more a less just a warm-up to get everyone used to Python syntax and higher order functions. The extra credit option, however, was a bit more interesting.
  Stuff (Personal)
Berkeley Lost and Found Bot
October 20, 2017An email bot that notifies the user whenever new items have been added to the UC Berkeley Lost and Found. Up-to-date data is synced with a Firebase database, and displayed on the interative webpage. Currently being run off of OCF infrastructure. In loving memory of the pair of glasses that I lost during orientation week :’(
Tags: Python, Firebase, Data Collection, Web, Open Source
  Stuff (Personal)
Hog Contest Visualizer
October 20, 2017Tools for developing optimal strategies for the game of Hog when complete information is available, and for approximating solutions when there is incomplete information. Includes visualization tools to watch strategies evolve between iterations. More details in this post
Tags: Python, Visualization, Open Source, Berkeley
  Stuff (Coursework)
⭐ Scheme Interpreter
Course: CS61ATerm: Fall 2017
A full featured interpreter for the Scheme programming language written in Python. Supports all the beautiful features of Scheme including:
- Tail-call optimization
- Quasiquotes
- Macros