You need to have JavaScript enabled in your browser in order to view this website properly. Click here for help enabling JavaScript.

Switches between day/night mode

Jemmin Chang

About Me


Hello, world!

My name's Jemmin (IPA: dʒεmɪn). I hail from Somers, NY (home of the American circus!), where I graduated from Somers High School in 2013, and I'm currently a student at Carnegie Mellon University. I'm studying computer science and linguistics, expecting to graduate in May 2017.

My academic interests include programming of all sorts, theoretical computer science, artificial intelligence, and linguistics (especially phonetics, acoustics, and syntactic theory). Some of my work in these areas can be seen on the Projects tab, or you can download my Résumé.

I'm also an avid classical musician. I enjoy playing viola and violin in symphony orchestras, chamber groups, and pit orchestras, and I love going to concerts and the opera. Besides music, I spend my free time playing tennis and ping pong, hiking, playing competitive Scrabble, and making ice cream. If you share any of these interests and would like to see (or play) a concert together, challenge me to a game of sport, or make a delicious batch of strawberry oreo mint ice cream, please get in touch!

For more information about my musical and Scrabbular activities, see the sections in More.

About this website

This website is built from scratch in HTML/CSS with JQuery animations, edited with Vim, and graciously hosted by the #!/cmu/cc. Last updated on 07/06/14.

My Projects


Role: Project Developer

For my high school senior project, I built Letterpress Victory, a Java application with an interactive GUI that allowed the user to enter Letterpress games and moves, and calculated the best moves to make. As part of the project, I tested my AI against similar apps, and found that it well outperformed them (see the video for the statistics).

My knowledge of AI was much smaller at that time, and the implementation was quite simple. After a year of CS at CMU, I decided to rewrite the app from scratch: new language (JavaScript), new algorithms, and - as I soon discovered - many new challenges (mostly related to JS...). But the results far exceeded my expectations: as I coded, I realized more and more of the design flaws, inefficiencies, and downright bugs in my original Java program. By the end, everything was different, from the dictionary data structure to the game tree exploration algorithm to the GUI layout. And, though I haven't done any tests yet, I'm sure Lettercrush performs far better than Letterpress Victory did, which, as far as I know, makes it the best AI for Letterpress out there.

Below is my Letterpress Victory presentation video from high school. The algorithms discussed here are long gone in Lettercrush, replaced by much more efficient and powerful solutions.

MabiMart sheep

MabiMart —

Role: Data Collection

MabiMart is an online auction site for trading items from the MMORPG Mabinogi, built in the summer of 2014.

My role was very small compared to that of the site's owner and lead developer, my friend and classmate Clark Chen. I helped Clark build the site's database by writing a webscraper to acquire and organize data on all of the game's items, enchants, reforges, etc., and prepare these data for database seeding. This turned out to be both more interesting and challenging than I had expected, and I learned a lot about webscraping in the process. The script was written in Python, and I learned and made use of the Requests, lxml, and CSSSelect libraries.


Role: Research Assistant

Victor is a Scrabble-playing robot built at Carnegie Mellon and residing on the 3rd floor of the Gates Center for Computer Science, created primarily for the purpose of studying human-robot interaction. But it's he's also fun to play with!

I worked during the Fall 2013 semester with Dr. Reid Simmons, the CMU professor who leads the project, on improving Victor's Scrabble AI. I employed my prior knowledge and experience as a competitive Scrabble player, as well as extensive research on Scrabble algorithms and AI strategies, to design, implement, and test several new strategy paradigms for Victor, and collect statistics on their relative performance. The goal was to design several levels of strategic complexity for Victor, so that he could automatically adjust his skill level to match his opponent's, making him more fun and interesting to play against.

Future Projects

I've got lots of exciting ideas that I'm working on. One of the biggest ones is a web app to replace the For Sale @ CMU Facebook group, providing much more functionality and convenience for CMU students to easily buy and sell items than the current, ad hoc medium provides. I'll be starting development for this project very soon.

Another is an online strategic board game idea I've had for a while that I can't wait to begin working on. Development for that probably won't start until after the above app is more-or-less complete.

More details about these, and any other projects that I take on, will become available as development begins in earnest. I'll update this site occasionally, but if you're interested and want to keep up with the latest, I recommend you connect with me on other media.

Other Stuff

Scrabble Board


Looking for the 98-252 course page?

I started playing Scrabble through the School Scrabble program when I was 12 years old. I attended the National School Scrabble Championships in 2008 and 2009, partnering with Danilo Vicioso and Bryan Poellot and finishing 26th and 18th, respectively. After graduating from 8th grade and becoming too old to play School Scrabble, my Scrabble activity decreased due to the much harder competition in adult tournaments and my getting more involved with music and other activities. Recently, upon starting college at Carnegie Mellon, I've started playing more Scrabble again, and I attend a few tournaments as well as help direct the newly-forming Scrabble Club at CMU.

In Fall 2014, I am teaching a StuCo class called "Wordplay: Fundamentals of Scrabble Strategy." The course number is 98-252.


My love for and involvement in classical music has developed steadily over the years. I began playing viola in the 3rd grade with my intermediate school orchestra, and started taking private lessons with Elizabeth Kaplan in high school. Somewhere along the way I picked up a violin, and found that I enjoyed playing that as well.

I continue to practice and study viola at CMU, and I've played viola and violin in the All-University Orchestra and String Theory. My favorite, though, is to perform in small chamber ensembles and quartets - so if you're interested in playing something together, please let me know!

My favorite period of music is the transition between the Classical and Romantic periods, and (some of) my favorite composers are Beethoven, Mendelssohn, Schubert, Tchaikovsky, and Chopin.

Code Philosophy

I hate hacking. This may sound strange coming from an avid programmer, but it's true. For me, the beauty of programming lies in its logical structure and semantic organization. I strive always for the most elegant, cleanest, fastest solution - the right way and the best way to solve the problem at hand. This isn't always easy to find; it requires careful research, lots of reading through thick documentation, and being willing to frequently refactor large chunks of code. But it leaves me with a sense of understanding and satisfaction that copy-pasting an answer from Stack Overflow just can't provide.

I also believe firmly in clear, easy-to-read, and thorough documentation. This applies to every piece of code I write, from comments in my personal .bashrc to docstrings in a python script to Git commit messages. When I first started programming, I was one of those kids who thought comments were a waste of time. I quickly grew up from that, and I take pride in devoting time and thought to writing well-documented, easy-to-maintain code.

Though I'm averse to hacky code, I'm certainly not opposed to hackathons. The excitement of charging forward with a brand-new idea and coding for hours and hours without sleep is great, even if the time constraints don't allow for the perfectly methodical programming I prefer. I've participated in HackCMU and TartanHacks at CMU, and I look forward to doing more.

My current system is Linux Mint, my unbleached all-purpose editor is Vim. My cell phone, of course, remains the timeless and unbeatably reliable Samsung Convoy 3.

Me in Gates

How to get in touch

I'm available for personal and professional inquiries, comments, and coversation of all sorts, so feel free to reach out. If you have a professional inquiry, you may want to check out my Résumé first.

I respond to email very quickly, so it's the best way to reach me. My email address is simply my first and last names, followed by at cmu dot e dee you (pronounce it; it's for the robots). If you need to send something by snail mail, my postal address is on my Résumé.

I can also be found on Google+, Facebook, and LinkedIn.

If you're more about code than social media, check me out on GitHub (though I don't have many public projects; you're better off checking out my Projects tab) or ask for my friend key on Project Euler.

© Jemmin Chang 2014