Recurse Center, 2014-07-28

  • There seemed to be excitement in the space to have Jessica around. We had coffee with her, and I chatted with her briefly. She encouraged me to try and send a patch to CPython, that involved debugging and fixing some C issues.
  • I spent some time with Tom, while he tried to get cinspect working for him, and it seemed like having the developer next to you, helped. As always. We didn't make any fixes to the code, but it worked.
  • I spent the afternoon, adding tests for a simple issue, to see how patches are sent.
  • Later, I paired with Sophia for an hour to refactor the vcs code. It's beginning to look much better than what it used to, and I like that.
  • Jessica's talk on buffer overflows was enlightening and entertaining. It was very similar to a talk that Max gave on one of the thursdays, but it was exciting nevertheless.
  • After the talk, I am inspired to try and work through the Hacking: Art of exploitation, at some point. I'm beginning to feel like time at HackerSchool running out!

Recurse Center, 2014-07-25

  • We worked on writing our own (toy) version control system on Friday, as a part of job prep. I paired with Sophia, and we got upto the point where we had diffs working, when we decided to refactor the code with some tests and stuff.
  • The party was brilliant with a lot of activity. All the project installations looked so cool, and it was so much fun!
  • I spent some time during the weekend watching the "Anatomy of Matplotlib" lectures.
  • I started some work with poking around Matplotlib's template backend, and trying to start writing and ascii backend.
  • Also, I was trying to help UC setup GrooveBasin on his raspberry pi, and helped him configure jasper on it.

Recurse Center, 2014-07-24

Glowing LEDs and me

  • It turned out that the SPI driver exposed a faster way to write bits, writing to all the LEDs at once, instead of one at a time, and this was sufficient to get things working!
  • Kyle and I started to have enough, of the glowing LEDs and decided to wrap up the project, but, Nick had different ideas for us! We had talked about having the music stream via airplay, but Nick got his DJing tools, and it would be too bad to not use it for the party, but doing that meant Airplay's delay wouldn't help the DJ. So, we connected a line-in, and thought we'd be done if we just read the input and used that data. But, it turns out that's not so simple because sending data over the wire, added noise to it, and in a whole range of frequencies! I tried removing all the fourier coefficients which were lower than a threshold, but I felt like it didn't work very well, until Nick reduced the gain of this output on the amp to the very minimum. Finally, Kyle and I decided that this was good enough for the party!
  • I also hacked up a quick script to read a font file, and use the grey values to get ascii characters to show up on the LED strip.


  • While trying to find the RPi on the network, I learnt that sudo nmap -sP 10.0.1.* gives us the hostname as well, instead of just IPs. sudo being the key, here.
  • Kyle and I went and grabbed dinner in a restaurant in west village. It was good to sit down and talk about various things, and eat. The glowing LEDs were totally out of my mind for that period, and the break was good!
  • There were a bunch of HSers doing mock-interviews and it was fun to watch, so I stayed on until quite late, when all of us headed out together.


  • I'm excited about trying to build a small version control system from scratch today!
  • Though I have had quite a bit of glowing LEDs in my face for the past week, I may suck up to it, and figure out how to do scrolling text on the display.
  • Also, excited to see how all the cool projects will come together in the party tonight!

Recurse Center, 2014-07-23

Shairplay and WS2801

  • Kyle mounted the LEDs onto a cardboard, and packaged it to look cool.
  • We thought we were done with the project, until we found out we weren't! The LEDs all lighted up correctly, when we played the audio from a file on disk, but streaming messed something up! Only the first few columns lighted up, when we were listening on the stream.
  • We spent the whole evening trying to debug the issue, and eliminated quite a few hypothesis, but weren't able to fix it, yet.


  • rntz live coded a parser for us yesterday, and I learnt a few things about parsers. I'm glad I went to the discussion/talk.
  • I started working through the videos of Anatomy of Matplotlib, and hope to get new insights into how it works.


  • Today will be spent mostly trying to get streaming audio working.
  • I feel like debugging this, will take my understanding of the hardware-software interface to a new level.

Recurse Center, 2014-07-22

Mel's talks

  • Mel's talk in the morning was brilliant! I wonder why it's not a part of recommended reading for Hacker Schoolers, or referred to, in the manual.
  • Logically, it makes sense that Mel came now, so that she didn't have to come twice to talk to the firsts and seconds, but it would have been great to have had this talk in the first week of Hacker School!
  • Mel gave us a lot of new information and insights into education and learning styles. I also like the fact that she gave us all a good vocabulary to think about and discuss stuff related to learning. I will try to think, and apply as much of this as I can, for the rest of my time here.
  • She talked about test driven learning which seemed very interesting. Instead of just saying, "wow that would be an interesting thing to do", stop for a moment, think about what you are trying to learn, and how you will assess if you have learnt what you wanted to, and then dive into the project.
  • The learning styles workshop was pretty good too, though I feel like I don't know myself well enough, and I unable to properly "bucket" myself. Later, I took a quiz, and ended up fairly close to the middle, in all the dimensions.
  • Mel introduced us to the idea of cognitive apprenticeship, and encouraged us to try out the different modes when pairing. I really liked the idea of Zone of proximal development and I will try to take the advice of spending most of the rest of my time here in this zone.
  • Do I (really) care? Motivation and mindset, …
  • Be courageous!

Airplay and Raspberry Pi

  • I was trying to wrap libshairport and use it on the RPi to be able to listen to songs being streamed on Airplay, and use that data to drive the LEDs.
  • Shairport, a tool written in C seemed to work. My attempts to wrap libshairport, which is a fork of shairport converting it into a library, failed miserably.
  • The trouble was essentially getting Airplay to discover my service. I tried a bunch of things with pybonjour and avahi, but wasn't able to get it right.
  • Finally, I tried just announcing the service with shairport, and actually running a python script that wraps libshairport to listen to the data. But, this didn't work and iTunes complained that this Airplay device is not compatible. Before going much further with this, I found shairplay which is a tool similar to shairport, but came with a library, and also Python bindings! I happily used this to get stuff working!
  • I'm interested to see today, what exactly I was missing yesterday!

Emacs club

  • I demoed org-mode to a bunch of people for about half an hour, and it was good to see people being blown away by what it can do, exactly the way I was, when I first came across it.


  • Work on RPi to clean up a few things for the party.
  • Compare libshairplay and libshairport to see what I was doing wrong, yesterday.
  • May be write up the whole thing, and make the code available.
  • Learn a little bit about Parsers from rntz.

Recurse Center, 2014-07-21


  • It was exciting to have so many new Hacker Schoolers in the space. But, the excitement was kinda distracting too.
  • I spent most of the day looking at shairport, and libshairport and trying to wrap it, so I can use it to get data for the spectrum analyzer via the Air-play protocol. I was able to call it using ctypes, but it doesn't seem discoverable.
  • I also briefly looked at Julia and dwm, to try and port dwm to Julia. It doesn't seem like too much work, but is going to take me a while given how comfortable I'm with both Julia and C.
  • Yaron Minsky's talk on distributed systems was a great introduction to Distributed systems.
  • After the talk, I spent a little time updating my notes from an old org-mode workshop to present it at the emacs user group meet up today.


  • I hope to get the spectrum analyzer to use libshairport and be able to play music sent through Air play.
  • Spend some time talking to the emacs user group about org-mode.
  • If I have any time, after getting this to work, I may play around with the dwm port.

Recurse Center, 2014-07-20

Saturday & Sunday

  • During the weekend, I had this idea of building a personalized "radio" for myself using a Raspberry pi. The idea is to have a service where all my bookmarks, and feeds are accumulated to, instead of eating up valuable browser tab real estate. And then, I could use a Raspberry pi to randomly play content off of it, based on a theme.
  • I worked on getting things together for it, during the weekend. The project is more like a "thing that needs to be done", rather than something that puts me out of my comfort zone, atleast as far as I can see. So, I'm just going to work on it as a background thing, between other projects, etc.
  • Festival seemed OK initially, while I was trying things out, but when I actually used it to read me a blog post, it was really terrible! I tried demos of a few commercial tools, and they seem much better than what festival had to offer. I wonder what it would take to get Festival, up there. I tried using Google's translate service's tts (unofficial API) and it seemed so good! But, it limits each request to 100 bytes, and the audio will have to be downloaded via the Network.
  • Madhu pointed me to MaryTTS, which seemed to be an active project and it seemed to be much better than Festival, though not as good as Google's tts. I'm going to try getting it to run on a Pi, next.


  • I don't really know what I'm doing to work on, today. I have been playing around with the Pi, for the past week-ish, and it has been fun! Kyle and I will probably work more on tweaking it, to get it to work the way we want it, for the party!
  • I also did a little bit of Julia with Sean, and it was fun. I may try playing around with it, a little bit, but not sure what to work on. May be continue working through the think-complexity book using Julia?
  • Or jump into something I totally don't know about, inspired by listening to Julia Evans' podcast for Ruby Rogues. I just got this idea of trying to write a window manager to understand how X works, and what wayland is… I could try porting dwm or i3wm to Julia.
  • There's a whole new bunch of excited Hacker Schoolers in the space, and its very exciting!

Recurse Center, 2014-07-18

  • We worked on a couple of simple Google code jam problems
  • And then implemented an LRU
  • All of this in Julia, and it was fun.
  • I headed home early-ish, to catch up on some sleep.

Recurse Center, 2014-07-17

  • Kyle and I did a demo of our spectrum analyzer/visualizer during the presenations. It was fun to work on, though we mostly just followed a tutorial on the web, and made use of a bunch of libraries.
  • I spent the night in HackerSchool.
  • I was cleaning up the code in the tutorial we were trying to follow.
  • Also, cleaned up the used by lightshowpi project to not do all the ugly sudo setups, and use a Python virtualenv and install into that.
  • Refactored the ugly looking music part of the tutorial into a smaller script with only the functionality that we were going to use.
  • We hit an interesting bug that would light up all the LEDs on the strip, once in a while. I didn't notice it during the night, because I had a "decay" factor (the max factor by which the height of the columns should get reduced between successive updates) was 0.9, but when the decay factor was reduced to a lower value, it would happen quite often. Also, we didn't see this happening before. So, we thought the bug was in the code I had written, when I should have been sleeping. After reading and debugging my code for a bit, with Kyle and Sean, I thought it was something hardware related that we were doing wrong. But, it turns out that a library we were using lit-up the whole strip, when start and end values were both zero, instead of not lighting up anything!
  • Also, we hit another off-by one error, just before the demo. I didn't do the math for splitting the strip into columns too carefully, and we hadn't noticed the off-by one error until we taped up the strip into different columns on a pillar for demo.
  • There were some cool presentations by others. I'll update the list on Monday, since I currently don't remember them all! Looking at the list of names on the registration sheet would help!
  • The cleaned up code is here

Recurse Center, 2014-07-16

  • Started pairing with Kyle on his idea of building a spectrum analyzer on the RaspberryPi using a LED Strip. Both of us were fairly new to the RPi, and we spent the morning, setting it up, and stepping through steps in this tutorial.
  • The tutorial, I felt, wasn't very well written, and definitely not suitable for absolute beginners to start with.
  • The code didn't seem to work for us, too. The project put together a bunch of libraries, in a way that someone who knew their way could follow along.
  • Dana helped us and explained many things, about differences between SPI/GPIO, and the precautions to take, helped us hook up stuff, etc. It was great to have her stepping in an helping every now and then!
  • While Kyle was pairing on an Alum, I worked through the Graph Theory chapter in the Think Complexity book, and read about the abrupt changes of characteristics in random graphs, that were very similar and related to the phenomenon in percolation theory that Nava explained.
  • Later in the day, I played around with the python-googlevoice API, that someone laboriously wrote after lot of careful html/xml parsing.
  • I spent the night, refactoring the code to display random data on the LEDStrip as a display of columns. And then also ended up cleaning up the setup scripts, and the way things need to be installed.