Home About MIT CC BY-SA 4.0 RSS

writeup

Thesus Redux

My college physics thesis was a simulation and analysis of a system of close-packed spheres. Specifically, I was looking what crystalline structure arises in the system as the density of spheres increases, which is a small part of the grand question, “How do objects freeze?” Several weeks ago, I picked up my thesis to see if I could understand it better, and came to the realization that I did nothing correctly. Therefore, I’ve added to my ever-growing list of projects a complete rewrite of my thesis, to recitfy the fact that it was complete bullshit. Furthermore, after discussions with Kevin, we realized there may be a simpler method of system structural analysis than the proposed method, and I wish to expand my analysis to include the new metric, and to see if there are any correlations that may be drawn from the two structure metrics.

Iterative Tree Node Counting

I love coding, but one of the major hurdles I haven’t been able to pass is the sluggish speed at which I actually write code – this is a death sentence during coding interviews. In order to combat this, I’ve been working on competitive programming over the last several months, with the result that I’ve seen some moderate improvement to my coding. One of the great strengths of these contests is that in addition to gaining raw speed, I’ve been exposed to a variety of data structures and algorithm implementations which I would have never otherwise have come across. Such was the case when I got stuck on the following problem:

Implementing dOPT

Implementing Cormack’s 1995 paper was more straightforward than I anticipated; as per the previous discussion with the author, I went ahead and implemented the corrected dOPT algorithm for a tree topology. The source code at the time of this writing can be found on Github for reference; all tests are passing, and no known bugs exist. Any questions on the source code can be directed to me.

Feature Phones

Recently, I came across on reddit a very cool project – the “Cosmos Browser” – which is a browser which sends HTTP requests over SMS. Communicating over SMS isn’t a novel concept – many SMS APIs exist to communicate between the phone and the outside world (Chicago’s Bus Tracker being one such example). What’s striking here is that I finally understand why these APIs exist: why, given all the smartphones in the world today, with their fancy app stores, would we want to still make apps based on SMS communication? One of the app-makers in the original Reddit post mentioned that a strength of this is the J2ME architecture of the browser – that is, we can install the browser on not just smart phones, but dumb phones as well.

A Counterexample to dOPT (Cormack 1995)

Cormack’s 1995 paper shows a flaw in the original dOPT algorithm, in showing that the strength of the algorithm – the completely decentralized nature of the messaging protocol – leads to divergent states across different clients. Fortunately, Cormack outlines a possible way to fix the algorithm, provided that message passing between nodes is retricted to a point-to-point protocol – that is, we can no longer afford the luxury in a network topology of having circular circuits. Fortunately, for our collaborative editing needs, having a p2p network is actually counterintuitive to our needs, and will not inhibit our needs.

Operational Transform

For the past few months, I’ve been attempting to develop a collaborative code editor in the command line. What that entails essentially is a Google Doc-like interface, but using ncurses, allow the program to be used in the terminal. There are of course software out which allows editing collaboration away from the browser, but a scant few offer this capability from the command line. What I want to do is build a vi-like editor which can be connected to from halfway around the world, as well as locally.

Hi

Like Python, sometimes it’s easier to write in a compile-once-run-many fashion. That is, there are times I find myself wishing that I kept track of some strange idea I had in the middle of the night, or explaining to multiple people some concept or story. Thus, I have created this blog as a reference for both myself and others in the hope that it may be, at best, a learning experience, or at worst, an interesting story to read.