- 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 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
- 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.
- Micheal demo-ed paredit mode in the emacs-club meetup, and I learnt a bunch of things I didn't know about it.
- I added simpler tests (just one test, really) for
cinspectusing a dummy module, and Tom started reviewing the code. I wrapped up the code (for now), until there is further interest in the project (in the form of issues/feature requests). I haven't yet announced it anywhere, but I probably should.
- I helped Teja (a friend of mine, not in HS) with a simple function to use bisection to solve an equation. He's just starting off with Python, and am looking forward to see where he goes with it!
- I learned a few things about the V8 code base, thanks to sitting next to Marcus, who is poking around with it.
- I started looking for other things to do, and went through a little bit of the Audio programming book, but didn't do it for too long, until I stumbled on Think Complexity and started reading it. I read the introduction, and got through a few of the exercises on Graphs.
- I also played around Flask-Sockets to help figure out answers to some questions on Zulip, and was able to get a Hello World working.
- In the process, I discovered the awesomeness of the gist-mode in emacs. I had always wanted gist plugins to let me list and update my previous gists, but most of the plugins didn't seem to have it, or the feature wasn't very discoverable. I had tried writing something like that for Canopy, one or two years ago. Discovering that gist mode has this feature, was awesome!
- Monday morning checkins for our group had only two people. That was strange! Very strange!
Work on cinspect
- I wrote up a README since David (an alum at Hacker School) showed interest in the project. But, he probably isn't that interested anymore since the code base is Python2.x only.
- I got rid of assumptions that method names would start with the module name or the type name, and actually look up references to the names in the definitions of types or objects.
- I also improved the test-suite to actually download sources of CPython and index them. They take very very long!!
- I tried to get it working with Numpy, but getting all the headers to include wasn't as easy as I assumed it would be!
- I didn't spend much time at Hacker School on Friday. I reached a bit late for the start of "Recursion day", and did a few problems. The problems were simple, but interesting. After lunch, I headed home to start to Philly.
- Later in the day, I did some refactoring of the code to have the index reader and writer split out.
- I also added a setup.py to be able to install the package using the standard tools instead of PYTHONPATH hacks and stuff.
- During the refactoring, I again hit this bug. I found out from Pankaj that
from __future__ import print_function, absolute_importsat the start of his files these days. I think I'm going to do it, too.
Saturday & Sunday
- I didn't do much during the weekend. I ended up adding a TXT record for SPF for this domain, to work around Gmail marking bulk mails for the childrens-park newsletter as spam. I was able to send one newsletter, but not sure if only the SPF is enough or I'll have to setup DKIM, and other stuff. (I don't understand most of these acronyms!)
- Someone mentioned http://github.com/kennethreitz/autoenv on Zulip, and I really liked the idea. I have started using it for a couple of projects and also got rid of a couple of my bashrc aliases, and created a new project command with completions of the directories in my project directory. I like this setup, as of now.
- I was just refactoring bits of the code, and clubbed all the different visitors into a single visitor to speed up the code.
- We also had a birthday celebration of one of the facilitators.
- I also gave my first presentation at Hacker School. I thought it was cool. Not sure if everyone thought it was.
- Unicode issues: it turned out that (atleast) one of the files had a character that wasn't UTF-8 encoded. I got around it by trying 'utf-8', if not falling back to 'iso-8859-1'. Now that I think about it, I should fallback to 'utf-8' with replace, if that doesn't work either.
- I did a little clean up on the way the indexes were stored, to be able to
getfile, to mimic
- I also "improved" the IPython startup script to monkey-patch the source code formatter/colorizer to not break with C modules.
- The one-on-one with Allison was pretty useful, and I feel a little more relaxed now.
- I paired with Kyle to get streaming audio working for his OSX app. It doesn't work yet, but we made progress! Hope to get it working today.
- I spent the late evening trying to refactor some of the code and clean it up.
- Also, updating the py-clang code to the latest version fixed the issue of unknown cursor kinds.
- I may present my project in today's presentations!
- I had gone to the emacs weekly meetup, and Samer demonstrated some of the things he liked, and discovered recently.
- Stopped worrying too much about what the best way to index the data was, and just went about getting the tests running one by one. There is still a small hack, but I got all the tests running except the source for modules.
- At the end of the day, I thought I had the code to get all the tests passing, but I hit some unicode issues with json serializing, and don't have all the tests passing, yet.
- I paired with Kyle to work through a simple example to generate a note of a specified frequency.
- I spent some time reviewing my first month here, and wrote up some notes in preparation for the one-on-one today with Allison.
- As preparation for a one-on-one this week with one of the facilitators, I was wondering if I was really getting better as a programmer, by doing what I am doing.
- I have heard at numerous places that reading and reflection are keys to getting better. I feel like I haven't been giving these things much attention in the past couple of weeks. I don't catch up on reading all the awesome reading material shared on Zulip and I switched from writing this blog post first thing in the morning, to any-time-after-lunch. I don't think this worked out very well. Writing the post worked as a way to reflect on what I had done yesterday, and what I should be doing today. So, I am back to writing the blog post, first thing in the morning!
- Yesterday, I worked on indexing the Python sources in a way that the
inspection code can look up, later. During this process, I found that my
code to use libclang's AST wasn't generic enough, and I had to clean it up to
be able to extract useful information from any file in the
- We also got to attend a super-awesome talk by Steve Labnik! He talked about
his progression from being an application developer, to writing libraries, to
working on languages (as a professional developer). He made a lot of
interesting and inspiring points during his talk. Some of those that stuck
with me are:
- None of these is particularly harder than any of the other. Depending on each person's personality, or the way their brain works, they are good at doing one or the other.
- Getting good at programming is a matter of showing up, more than about the "genes". He repeated quite a few times that he disliked the idea of "baby hacker", and left out the story of his childhood and college programming days! I'm totally stealing his idea of meeting every saturday at 1pm, with a bunch of friends and working until it was 10pm or so, when they could get cheap beer and food! And he did this all through his college! It is interesting that this idea is so similar to Hacker School!
It was a very enjoyable and inspiring talk on the whole.
- The plan for today is to actually have the parsed information dumped into some persistent format, and modify the inspect code to actually use it.
- I will also be pairing with Kyle for a few hours on working through some of http://mitpress.mit.edu/books/audio-programming-book