- 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
- 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
- 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
- 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"
- 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.
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.
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
- 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
- Also, excited to see how all the cool projects will come together in the
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.
- 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,
- The trouble was essentially getting Airplay to discover my service. I tried
a bunch of things with
avahi, but wasn't able to get it
- 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!
- 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.
libshairport to see what I was doing wrong,
- May be write up the whole thing, and make the code available.
- Learn a little bit about Parsers from rntz.
- 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
- 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
- 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
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
- 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.
- 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 install.sh 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
- 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
- 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.