I had an amazing opportunity to attend a book signing for 10,000 Memories in Berkeley along with my wife. 
 10,000 Memories is a non-profit, volunteering and crowdsourcing project that has collected 10k witness accounts about the Partition across South Asia. There was an insightful panel discussion with the editors, and story telling sessions along with a curated exhibit. 
 The Partition…
Reading Kim Stanley Robinson’s Ministry for the Future , I got curious about Chapter 8’s numbers, which essentially break down some of the main driving forces of the climate crisis better than most other things I’ve come across. 
 KSR describes how much fossil carbon we’re consuming, how much is left, how much should not be extracted if we want to stay below 2C, who owns what’s left, and what…
Last week, I visited a couple of my professors from Northwestern to chat and
help out with an interesting engineering “bootcamp” class they are teaching.
Beyond the nostalgia, those interactions brought me back to my days in college,
when I regularly felt this mixture of lighthearted fun and simultaneously an
overwhelming awe at learning new things I didn’t even…
;; This is a playful introduction to Racket, using the in-built app 
 ;; Dr. Racket, intended for a <60 min session. 
 
 ;; Racket is a polygot-friendly, language designer friendly, beginner friendly 
 ;; multi-paradigm general purpose programming language. 
 
 ;; Install Racket and then open this little tutorial using Dr. Racket, by 
 ;; saving it as a…

 
 Our goal felt hidden, out of reach. 
 Our product, Frontier, focuses on building better student writers in grades 4-8 by challenging them with engaging narrative, informational, and argumentative writing projects: how does severe weather affect our lives? What does it take to be a gymnast? Do cats make good pets? 
 The goal to focus on building better writers through fast…
You open up your email, swipe through some work messages, and notice a classic email about a bug. 
 RuntimeError : Your app is terrible
 app / controller / page : 17 - what is
 config / route / blah : 24 - this I
 bin / app : 4 - can ' t even
 It looks… strange. The error message and the stack trace look only vaguely familiar. 
 You would be forgiven for being…
I made a new gem based on some exploration I did, but to tell the story, let’s talk about a possible use case. 
 Let’s say you’re writing some Ruby code where you need to call a sequence of methods on some initial value. (This is a contrived example, so bear with me) 
 class FileChecker 
 def report (file)
 # need to produce summary after running checks 
 end…
Sometimes, you have a problem. A problem that itches and maybe even hurts. 
 The kind of problem where you wish “wouldn’t it be cool if…,” but then you follow that up and it’s clear that it’s either too difficult or would take more time than you have to spare. Or maybe you realize you don’t know something needed to solve it. 
 Here’s how you could scratch that itch, even if you think it’ll…
This is based on a talk I gave at the Open Source Open Mic meetup, around Sep 2015. 
 Slides from the talk . 
 Let’s say you’re walking down the street. You see someone walking towards you, and a question comes to mind: 
 
 
 Barista or Consultant? 
 (A contrived case for sure, but humor me) 
 How would you answer this? 
 You could reason that this…
I decided to write a short story about a ridiculous premise to get myself to just sit down and finish a story. Here’s the result! 
 A hooded jogger cuts through a dark alley nestled between a greasy burger joint and an old boarded up warehouse. Sarah’s muttering to herself as she runs at a steady clip, dictating some notes into her bluetooth mic. 
 A bubbling, anxious knot starts to form…

 
 updating based on feedback is trickier than you think 
 Psychologist Bertram Forer once asked some students to fill out a personality test and then gave them a personalized profile based on the results. The students rated how well the profile captured their individual personality, and at the end, the average rating was found to be 4.2 out of 5! 
 But actually, Forer had taken…
thoughts about how I’m picking what to learn right now 
 
 Originally published on Medium. 
 I have limited time and a long list of things to learn. My own knowledge is a tiny bucket compared to an ocean of blah yada ladeeda… I know how that goes, the refrain about how little you know and the implication that curiosity is thus naive. Is it not enough for me to be curious, do I also…
As an engineer working in an education startup, learning is a familiar topic for me. At eSpark, we’re personalizing education for primary school students and we often visit schools, pore through data, and test our theories about how students really learn. It’s remarkably easy to get infected by the enthusiasm of our young students. But it’s also easy to get concerned by the…
I was talking to a friend during dinner and the conversation drifted over to what I’m guessing is a very busy intersection: how an exact explanation seems to subtract from the beauty of a thing. In short, I disagree. An explanation actually enhances your experience of a thing. There was much that we talked about, but I want to use this post to think about the opposite point and wrestle with…

 
 At the 
 eSpark Hackathon last weekend, I had a great time making interesting new things with my work friends. Koppel and John were quite excited by Markov chains and so we had two different kinds of Markov babblers; one was a Slack bot and one was a Twitter bot. Kairui and Cathleen were interested in analyzing how to optimize selection of the right testing content for students; I…
Why the tired gesture?
Why the sarcastic vignette of a tropical world? 
 Why the black and white,
the smooth minimalism,
the simplistic angles,
the tidy garden? 
 Write in bold strokes and drench that paper in color.
Dig deeps into the folds and stretch that cloth to tearing. 
 You get one shot at this. 
 
 Written July 19, 2009 (just before my freshman year…
You probably have some ssh key files ( ~/.ssh/id_rsa{.pub,} or similar) kicking around if you’ve ever needed to use a service that uses public key cryptography, like Github or Heroku. 
 These id_rsa and id_rsa.pub files are private and public key files that you should keep quite secure. 
 But they don’t have to be the only ones you ever use! In fact, it’s probably best to…
Hardware: a living, conscious, human brain capable of reading English and with a high school level of education in mathematics, science, and history, and that is greater than the 70th percentile in terms of interest in computer science and general current events in the contemporary period defined by late-twentieth/early-twenty-first century. 
 Program: read this hardware description and…
I’ve decided to experiment with a weekly blog post that consolidates my reading, programming, and general learning. Here’s week 1! 
 Reading 
 
 
 Some portion of Surely You’re Joking, Mr. Feynman 
 
 
 Quite a bit of Infected , a hard sci-fi novel by Scott Sigler 
 
 
 The Humanism arc of HPMOR (Ch. 43 to 46). It’s just… 
…

 
 TL;DR: 
 here’s the demo! 
 Chernoff faces[1] are a useful way to visualize multivariate data in a way that leverages the great facial recognition ability of our brains. There’s a great paper[2] about it too! Here’s an example that highlights their utility: 
 Imagine visually comparing election results as they’re rolling in on election day. You want…
Terminals are crucial to mastering computers and are super fun to play with. But you don’t need to be a gray beard to master the terminal! You can learn it bit by bit and have fun too. And this isn’t some kind tongue-in-cheek expression. Try to remember the last thing your learned that made some drudgery less drudgeful (like finding out that adding site:blah.com in Google will limit…

 Do not go gentle into that good night, 
 
 Old age should burn and rave at close of day; 
 
 Rage, rage against the dying of the light. 
 (spoilers!) 
 This quote represents a major theme in the movie Interstellar. Beyond the color pallette that reminds me of color footage from the Apollo missions, or Hans Zimmer’s enveloping soundtrack that echoes 2001: A Space…
For those not yet familiar with the awesomeness of Strangeloop, it is a yearly conference about “emerging languages, concurrent and distributed systems, new database technologies, front-end web, and security." This year, Strangeloop was at the Peabody Opera House in St. Louis, and I found it informative, inspiring,and incredibly fun. 
 I decided to take some time and compress my experience…
Have you ever wanted git branches to display all branches sorted by the last
commit date? 
 Let’s say you’re working on a project with a lot of branches, you’re hopping around topic branches like crazy, and you have the name of that last one you were working on right on the tip of your tongue… 
 Well, easy enough! 
 
 Use this plugin . 
 It’s…
I love the versatility of emacs, even without any additional packages. You get
a powerful and fast editing environment that is ridiculously extendable if you
so desire. 
 I used to maintain quite an extensive .emacs configuration, with all sorts
of third party packages and custom functions. But early this year, after about
a year of heavy Emacs use, I felt the pain of…
I just finished reading Worm, a smartly written and relentlessly intense web serial by Wildbow. It’s about an introverted high school girl named Taylor who’s one of many individuals with superpowers. But her power is rather unique
for the genre: she can control and perceive essentially any number of bugs within around 1500 feet. We see Taylor fight insanely high powered capes, deal with…
originally published in North by Northwestern 
 Whether you want to build a game, a website, a mobile application, or simply want to explore creative concepts, programming is an indispensable skill. It offers the means to create instantly useable and distributable products, so it’s very relevant to Northwestern’s mix of entrepreneurial, creative, and technical students. Moreover, it is…

 
 Do you read more about politics or economics? What are the top websites you recently visited to read articles? How do you plan your casual reading? 
 My team (
 Katie Zhu , 
 Basil Huang , and 
 Amelia Kaufman ) and I wondered about these questions and more at the start of Knight Lab’s “Collaborative Innovation and Journalism in Technology” course in…

 
 What I mean by a “neural prosthetic” is a supplemental tool that aids your
brain. Over the past year, I’ve found that Evernote fits that description
fairly well, and that it aids useful thought in many ways. 
 The collection of items that passes your attention daily includes: Wikipedia
articles, posts on HackerNews or other aggregators, research papers,
interesting…
I’ve made some headway into my reading list over the past few weeks. Actually,
calling it a “reading list” evokes the wrong concept; it’s more like a
constantly re-ordering queue of effectively infinite reading material that is
pitiably reduced over time. But anyway, here’s some of the things I came
across: 
 
 Consider Phlebas, by Ian M. Banks
 # 
 
 One of the…
I recently found a (somewhat old) but

 great repository . The structure really helps you build modular Sinatra apps and has the basics needed for you to jump in and start building. 
 However, after discovering the joys of the 
 SimpleCov gem, which generates code coverage reports in HTML, I wanted to tweak this already-awesome repository. Also, I wanted a few more Rake tasks to…
Today, I cleaned up an earlier project I’d left hanging around called

 Colby . It’s a little wrapper around the data structures that the
Hamster gem provides, and it adds some functions to make working with
those data structures a little similar to the Clojure-way. 
 At this point, Colby is very experimental and is only at a 0.0.1 
release to reflect its…
The problem: find the largest prime factor of 600851475143. 
 I used the Sieve of Eratosthenes and Ruby to solve it

 last time . 
 This time, I tried a lazy, functional approach. The result was an
efficient, straightfoward solution that involved no sieve or any
static/full-realized data structure at all! I make a recipe for the
kind of numbers I want and then take just…
Github link: 
 RepoMap 
 There are hundreds of git repositories stored at various folder depths
all over my computer. Organizing them, remembering where they are or
determining whether I still have a working copy cloned from a remote
repository is a chore. 
 So, why not have a map of where all my repositories are? Should be
simple enough to keep a YAML file with a map…

 
 …and it was really quite simple to do! Sherlock is pretty stupid: all
you can do is click on him to specifically google the current tab’s website.
So, if you find yourself adding “site:example.com” to your Google searches
often, this should be a nice shortcut. 
 Here’s the MIT-licensed code: 
 https://github.com/gnarmis/sherlock .…

 
 Marcel Flores, Maciej Swiech and I have been working hard on our
machine learning project, in which we are asking whether we can detect
twitter spammer upon account creation, before they’ve made a single
spammy tweet. Our results have been promising and I’m posting here a
link to the project website: 
 Ready Spam Detection in Twitter . 
 At the above…

 
 It’s been a busy few days at Hack Northwestern! We got a

 new home , announced a

 hackathon sponsored
by 
 imo , and just wrapped up a tech talk / hack night
by folks from 
 Seelio yesterday! 
 It’s humbling to note that this started as an idle suggestion last
spring, and then a quick get-together of around 7 students. Here’s…
I had an idea to try and bring a tiny bit of Clojure’s ideas of hash-maps to Ruby’s hashes. I came up with a simple monkey-patch that allows you to truly use hashes as functions of their keys. In the process, I’ve come to really dig method_missing , although debugging it can be a chore. Word of advice: always implement respond_to? with your method_missing . Principle of Least…
Over the past day or so, I’ve been playing around with small bits of
Ruby after spending most of the summer in Clojure-land. There’s great
similarities in both Ruby and Clojure (functional style, dynamic,
etc), and both are very practical choices. Clojure gives you amazing
access to JVM land while not forcing you to pull your hair out, and
Ruby grants you a good…
After asking #ruby what the equivalent of Clojure’s

 -> macro 
could look like, I compiled the collective solution into a gist. You
might find this useful somewhere, especially when you have multiple
transformation functions operating on the same basic data structures. 
 # piping example in Ruby 
 
 def foo (data)
 data [ :a ] += 1 
 data
 end…
Ever since Posterous was acquired by Twitter, I’d been meaning to
ditch the service for something better. While it was convenient to
post by email and enjoyable to forget about hosting, I missed
controlling the structure of my raw posts and the site’s design. 
 So when I discovered 
 Octopress , I was quickly
won over. Finally, a hacker’s workflow: compose…
TL;DR 
 https://github.com/gnarmis/sentimental 
 Sentiment analysis is the hot thing to do these days. One example is ViralHeat, a social media monitoring platform that uses sentiment analysis to provide a picture about how the conversation is trending about certain keywords (or combinations of keywords, which they call profiles). There’s a lot of such products, and for developers…
Having found an 
 awesome little wrapper for 
 Snowball (which allows for stemming of words, like “going” -> “go”), I decided that it was the perfect opportunity to try creating my very own “Clojar” and deploying it. It didn’t
take long to fork the repo, make an account on clojars.org, make some minimal changes, and deploy this library. The…

 Noir is an excellent, Sinatra-like framework in Clojure, and

 Korma is a great companion. But in a lot of database-backed
services, you often need migrations to make sane changes to the
database and have the abilitiy to roll back your various schema
changes. Lobos is a little library (among a few) that tries to do
this, but seeing only a few examples 
 here and…
( defn Y [r]
 (( fn [f] ( f f))
 ( fn [f]
 ( r ( fn [x] (( f f) x))))))
 There’s few things as iconic as the Y-Combinator in functional programming. 
 The Y combinator can be thought of as a higher-order function that takes a function (which represents some sort of recursive logic) and returns its fixed point. This fixed point is the recursive function you want to call…
I’m really digging this wonderful little language called Clojure. It’s a modern Lisp, meaning it has all the functional goodness I have been craving after using Racket. It’s awesome being able to build things like interpreters and type checkers, which I didn’t think I’d be able to approach so easily (this was part of an awesome programming languages class taught by…

 
 Introducing 
 What’s Here? , an app to help you explore your local people, places, and tweets. 
 This mobile app was an exploration of a project idea about searching and making sense of locally relevant data. It was explored in the context of my 
 Journalism & Tech project class . 
 You can use this app on any modern smartphone, though it was tested only on the…

 http://getsoundboard.com 
 Me and Jon are finally at the stage where we can start showing off our
idea called SoundBoard, which was conceived and well received at a
hackathon last weekend. After talking about it with several great
people at TEDxUChicago, we feel the need to learn as much as possible
about how people use it. We have also put up a link on the site…
Last weekend, me and Jonathan Chan spent a straight thirty hours working on

 SoundBoard , a crowd-driven music player, and had a blast! Our app won
second place by a single vote, and we won VIP tickets to the TedX - UChicago
event. It’s been a hectic week, but it’s satisfying to see a project emerge out
of a weekend of feverish coding. 
 Here’s how…