On Friday I had the opportunity to see two of favorite bands, Skyharbor and TesseracT, perform live in San Francisco. It was sublime. I got to meet TesseracT before the show (as part of the VIP ticket experience) and it was a bit surreal meeting some of my musical heroes. I talked to them briefly about life on tour, which bands they’re listening to, and (the beautiful city of) San Francisco. The show was was incredible. All 4 bands (Skyharbor, Erra, The Contortionist, and TesseracT) put on a great show. This was definitely one of the best shows I’ve been to all year. Seeing TesseracT live is a treat for the senses.

IMG_4873 (1)

Me + TesseracT




Over the weekend I read an interesting paper: How to Memorize a Random 60-Bit String. This was probably the first security paper I’d read in quite some time. I discovered this paper via The Morning Paper, which in my opinion is one of the best resources for people interested in computer science research papers. The title of the paper caught my eye and I decided to read the entire paper (this is typically my strategy with The Morning Paper; I tend to use it for “paper discovery”).

This paper builds on the password generation mechanism introduced by XKCD. It modifies XKCD’s approach to work for 60-bit long passwords and also proposes new schemes for English password generation based on random 60-bit strings. We use a lot of online services in our lives, and creating a secure + easy to remember password (especially if you use the same password for all the services. Please don’t do this.) is essential in order to safeguard ourselves.

While XKCD’s scheme is based on a simple dictionary lookup in order to generate a 4 letter phrase, the methods proposed in the paper are more involved. They all use n-gram language models in order to generate English word passwords that, while random, still seem to have the correct structure of a grammatically correct English sentence fragment or phrase.

I think the most impressive scheme proposed is the one in which a 60-bit string is converted into a poem. Yes, you read that right, a poem. This is done using word information from the CMU pronunciation dictionary + FST + FSA for their accepted poem structure. I thought this was the most interesting part of the paper. It was also the part that took me the longest to read.

The paper ends with a section on experiments showcasing user preference and recall for the difference generation schemes proposed. What is interesting is that even though the poetry scheme has the highest recall percentage it has the second lowest user preference percentage (the XKCD method has the lowest preference).

This paper was a fun, short read. I really enjoyed it!

Goal Tracking: October Edition

At the beginning of the year I published a post outlining what some of my goals for the year were. In the spirit of being transparent, here is the progress I made on them over the course of October –

  1. 0 hours of volunteering.
  2. 0 shyness.
  3. Zero progress on Rust or Erlang. With two months left in the year it’s going to be an uphill battle to meet my goal.
  4. I read The Brief Wondrous Life of Oscar Wao. Very entertaining and I enjoyed Diaz’s writing style a lot. 
  5. Two papers read.
  6. 2 posts over the course of the month.
  7. 6 consecutive muscle ups.

I feel like I made almost no progress towards any of my goals last month. Hopefully this month will be better.


For October’s InDay I had the opportunity to teach high school students how to code.  This was the first time I was mentoring/teaching someone who had no prior programming experience.

The goal of the lesson was to help the student build a simple guessing game (pick a random number and have the user try to guess it; let the user know if their guess is greater than or lesser than the random number) in Javascript. On the surface this seems like an easy task; but if you think about it it involves using quite a few programming constructs — variables, loops, conditionals, functions, random number generators, etc.

One method that I found useful while teaching was to introduce the programming concepts with the help of the mathematical concepts on which they are built. Variables and functions in programming languages are (more or less) based on the same constructs in mathematics and it was easy to draw parallels between the two.

To explain how to generate a random number within a range I used the Google Chrome Console to show how function composition in programming works.

Also, analogies help. “Why do we need HTML, CSS, and Javascript?” “Well, HTML elements are the basic building blocks of a webpage. CSS allows you to add color to and position the blocks — it makes the blocks look pretty. Javascript makes the blocks interactive.” Yes, I’m well aware that this analogy is not perfect, but it was the best I could come up with at the time and I think captures the essence of why we need this trio to build websites today.

Overall this was a challenging and rewarding experience. I need to find more volunteering opportunities that are coding related.

Goal Tracking: September Edition

At the beginning of the year I published a post outlining what some of my goals for the year were. In the spirit of being transparent, here is the progress I made on them over the course of September –

  1. 0 hours of volunteering.
  2. An iota of shyness.
  3. Zero progress on Rust or Erlang.
  4. I finished Immortality by Milan Kundera. It was quite an interesting read. Kundera has a very unique style of writing.
  5. Two papers read.
  6. 28 posts over the course of September.
  7. 6 consecutive muscle ups.


The year is 2013. I’d just graduated college. I was trying to find a place to live in Mountain View. And Deafheaven had released Sunbather.

I heard about the album on the music websites I frequent. I read the rave reviews, the glowing words of praise. Of course I decided to give it a listen. And, I disliked it. A lot. I was aghast. “How is this music? This is noise! I can’t understand what the singer is saying. Where is the melody?”

Fast forward to October 4th 2015.

I live in SF now. I’ve lost weight since 2013, and gained ear piercings. In fact, I like to think I’ve changed quite a bit since I graduated college.

Two days ago Deafheaven released New Bermuda.

Once more the amazing reviews come flooding in. Praise for their new album is sky high.

“So you didn’t like them in 2013. But your musical tastes have expanded now! You’d be hurting yourself if you don’t check out Sunbather and then New Bermuda.” These are the thoughts wandering about in my head as I open up Spotify and start listening to Sunbather.

And I finally get it. I finally understand what those reviews were talking about two years ago. In the noise there is beauty. The guitars, the vocals, the furious drumming; they all work together to paint a picture that has to be experienced. I look up the lyrics and like everything else about this band I’m amazed by how tragically beautiful they are; amazed by how much emotion is buried in them.

After listening to Sunbather a couple of times I move on to New Bermuda with high expectations. I was not disappointed in the slightest. It is definitely an aural masterpiece.

I think this transition of musical appreciation is one of the most clear examples I’ve seen of my non-physical personal evolution.


At the beginning of September I accepted a challenge of writing one blog post a day for the rest of the month. With the month coming to an end I thought it would be interesting to see how I did, and also do a quick analysis on my posts.

September has 30 days. I wrote 28 posts. Try as much as you want, 28 does not equal 30. The math simply does not work out. So I did fail in my attempt at doing a post a day. But on the bright side I did get pretty close. And this is also the most I’ve ever posted in a month. So yay.

I took my small sample set (you’ve heard of big data? This is small, artisanal, and organic data) of the blog posts I wrote and ran it through a simple script in order to get some statistics. The input command line argument is a folder containing all the posts, where the title of the file is the title of the post and the content of the file is the content of the post.

Yes, I know the regular expression used to split a post into words is very primitive and doesn’t handle all the cases. It doesn’t really matter for such a simple analysis. This script is probably not the most elegant or efficient. But I’m pretty tired and should really be sleeping instead of writing this post right now.

Onto the statistics.

My shortest posts (in ascending order) were:

  1. M2 with 11 words.
  2. What I’m Currently Listening To: Scale the Summit with 26 words.
  3. What I’m Currently Listening To: Foals with 29 words.

I’m not surprised by #2 and #3; these posts are typically very short. #1 is short because I was exhausted from MHacks.

My longest posts (in descending order) were:

  1. Library with 355 words.
  2. Dog with 320 words.
  3. Feel with 292 words

I’m surprised that my longest posts aren’t that long.

Which brings me to my average post length, which is 138.96 words. A friend of mine said that I should write longer posts. I think I agree.

The total number of words I wrote is 3891. The number of unique words is 1107. In other words (pun intended), 28.4%. I wonder what the average value for this ratio is.

The list of the 100 words I used the most is dominated by commonly used words in the English language. This makes sense because I did not do any pre-processing on the data to remove/ignore them. Other words that I used a lot are:

  1. time. 24 occurrences.
  2. think. 15 occurrences.
  3. Portland. 9 occurrences (I was in Portland for the long weekend in September).
  4. climbing. 7 occurrences (I discovered climbing very recently).
  5. MHacks. 6 occurrences (I was at MHacks in September).

Overall, this blogging challenge turned out to be harder than I expected. But it was also super fun! I will use the momentum built over the course of the month in order to (hopefully) maintain a more frequent posting schedule.


The lower e string on my new guitar snapped on Saturday. I was pretty surprised that it happened so quickly (around one week since the day I purchased it) as I hadn’t even played it that much. Oh well. I bought a set of D’Addario replacement strings on Sunday and I intend to restring it very soon. I think this is the first time I will have to do this myself; I’ve always had my friends do it for me in the past.

In other news I’ve started maintaining a physical journal of my workouts. It makes it easy to see improvements and regressions over time. Yes, I know there is probably an app that lets me to this, but I like the old fashioned (also my favorite drink) way.