- I spent most of Saturday, thinking about what I should be doing for the next few weeks, and what I really want to get out of Hacker School.
- I had a good discussion with Naren about things that he works on, and the kind of things that he sees as hard, what kind of things interest me, and what I want to do post Hacker School. I always knew, I didn't really have an area of expertise or an area that I'm super interested in, where I want to work. This discussion only was a verbalizing of those thoughts.
- I am not sure, I am very happy with the way I have been learning Haskell. The UPenn course has been reasonably good with the exercises provided, and I have been learning through "pseudo" projects. But, I'm wondering if I should pick up a more concrete project.
- I played around a little bit with Elm and started something to try and write Layout using Elm.
- I tried cleaning up the phonebook problem from Friday. It works, but can definitely be improved with some help from a more experienced Haskeller.
- I finished parts of the phonebook task today. The code looks ugly, and very un-haskelly. I asked for feedback on it, but I guess its just too ugly for anyone to take the time out to comment on it, and help me improve it.
- I also tried to read up about Monads, and worked through exercises from a few different places. I haven't yet finished the exercises in Chapter 12 of the UPenn course. I just looked at them today, and they seem like a complete bouncer at first glance.
- I went on a really long walk with Naren, and food-hopped with him while he was telling me stories about the various places he worked at and the kinds of things he has been working on, and things he liked and disliked about them. It has been a good weekend to spend with Naren!
- Also, the long walk and talking to Chaitu cleared my head a bit, and I decided to pause the Haskell tutorials and learning for the next couple of weeks. I don't really have a project that needs me to learn Haskell, right now. I should stick to project and need based learning, which I enjoy the most.
- Right now, I feel like working on an key stroke acoustic emanation
based key-logger. Just before applying to Hacker School, I came
across the idea of side-channel attacks, and it sounded pretty
exciting. I don't intend to snoop onto anybody, but the project
seems to be challenging enough, and I will have quite a bit to learn
about. It will involve signal processing, and learning – both areas
that I have seemed interesting to me for long, but I haven't really
done anything in them. I plan to work on the idea for a couple of
weeks, and review my progress and chart my future course. The
problem appears to have 2 parts to it.
- Processing audio, and extracting key-strokes from it.
- Identifying the text, based on a sequence of key-strokes. Though, in reality each press of a key may not sound the same, for a start assuming we are able to accurately get a sequence of key-strokes, the problem would reduce to solving a simple substitution cipher. I plan to start with this, tomorrow.
- Also, I plan to hang out a lot more with Hacker Schoolers, and let myself be distracted a lot more by random discussions and activities, than I have allowed myself to be, in the past few weeks. I should be writing as much code as I can, while I'm here. But, I should also be rubbing elbows with the awesome folks, which I will only be able to virtually, once I'm out of here.
- Thanks to Amber, I also came across this interesting looking book called Apprenticeship patterns. I plan to read it over the next week or two.
- I haven't been playing almost any Ultimate here. I atleast need to work out a conditioning and throwing practice schedule and start working on it, early next week. Tomorrow won't work since it's 5am and I'm still awake!
- I also probably need to get enough sleep!
- Looking forward to the next couple of weeks!
- Fridays are optional in Hacker School, and people are given help with preparation for job interviews.
- This week's exercise was a "know-your-language" type exercise and I decided to do it with Haskell, and confirmed the fact that I didn't know it too well. :)
- I spent the afternoon writing the blog-post on OAuth2, and adding support for converting ditaa code blocks to png using Pygments. It may not have been the best use of time, but anyway…
- Yesterday was a bit more wandering than usual. I still have to finish (actually, start) the last chapter in the UPenn course (Monads). I hope to finish it during the weekend.
- I started with reading Typeclassopedia, in the hope of getting comfortable with Functors and Applicatives and to get introduced to Monads. But, I got distracted before I got to the end of the part on Functors.
- During the check-ins, Laura and Denise mentioned that they are both
facing problems with OAuth, and would like to pair on it. I decided
to join them, since I've had reasonable luck with OAuth, though I
knew I didn't understand it very well. While they were working on
getting it to work on OSX, I was trying to write a simple Python
example to do it, and was getting a weird error about the
response_typebeing not supported. I was using rauth in a way very similar to what I had done for statiki but the Hacker School API server wasn't letting me through. I could debug it only a little before lunch, and a little bit after lunch. And realized that the
response_typehad to be one of
empty. But this is a required parameter, and I expected
rauthto do the right thing! I got back to it at the end of the day, and went through the RFC for OAuth2 and wrote up a simple Python script to implement the whole thing, without using any 3rd party oauth libraries. I think I understand the whole thing much better now, and will soon write up a blog post on it.
- I spent about an hour or so on reviewing Nava's code (along with Tom, Amber and Patricia), that generated and solved mazes. We tried to make small incremental changes to her code, and improve it, hopefully giving her a sense of how to make the code more intentional.
- Thursday evening presentations! People here have been working on such cool stuff! Maze solvers and percolation probability calculators, phone gap based mobile applications, a cool Midi based music generator, an emulator for MSP430 in Clojure, an event logger in ObjectiveC that can log to a web server and can be used by multiple clients to debug communication related issues, a HTTP server written from Scratch, a web server in Swift, a pattern matching based library in js, a heuristics based puzzle solver, and a web editor for jekyll! Holy cow! These presentations are extremely inspiring and will probably be the thing I look forward to the most, for the next 10 weeks.
- I can't believe it's already end of week 2. 10 more to go!
- Amber talked about "exploring only until the current task is done" and moving on, which is could really be a lost opportunity to learn something new and gain a better understanding of the system I am working with.
- Having something (anything not directly related to the current project I'm working on) scheduled for later in the day, doesn't seem to do me much good. I feel distracted for quite a long period before the scheduled time.
- Abstractions and layers were talked about in the second exercise on Applicatives… Layering, FTW!
- I spent about an hour or so in the afternoon reading the paper, One VM to rule them all. It talked about Truffle: an API to implement an AST parser for any language and Graal: a JIT compiler for the ASTs. Later in the day, I also went to the Papers we love meetup. The presentation and the talks were quite interesting!
- I also started looking at Elm and playing with it.
- I've been bookmarking the interesting links that people post on Zulip and have a lot of reading to do. It would be nice if I had an easy way to send stuff on to my kindle. (pdfs, html, etc.). Instapaper works, but doesn't work as well as I would like it to. I just want a simple script that takes a list of urls and does the right thing. May be I will write something that uses Calibre, or even better someone already has.
- I worked through exercises 08 and 10 of the haskell course, yesterday.
- Chapter 8 was about how IO works in haskell. The exercise didn't involve too much, except I wasted a lot of time on tracking a stupidity of mine.
- The next part of the course was an introduction to Functors, Applicative and Alternative. I'm not sure I totally understand and am comfortable with them, but I have been able to get through the exercises.
- I think it's time for me to start working on some Elm tutorials, along with the Haskell exercises.
- Also, I had questions about when to use
dataand incidentally found this section that ended with the following summary: "If you just want your type signatures to look cleaner and be more descriptive, you probably want
typesynonyms. If you want to take an existing type and wrap it in a new type in order to make it an instance of a type class, chances are you're looking for a
newtype. And if you want to make something completely new, odds are good that you're looking for the
- Didn't do anything during the weekend. Hopefully, this won't be the case all of the weekends. I had fun with my cousins, though.
- Denise is already working on a twitter app that sounds similar to the idea I had.
- I accidentally discovered that evince supports vim-like keybindings, which is cool.
- When writing patterns for a function it helps to write the most general case first, and then write the edge cases.
- I was feeling a little unproductive in the afternoon and I ended up attending Zach's talk on Community. I got a brief overview of the whole architecture, and got to know a little bit about reactjs and om. I don't think I'll get around to contributing to the project, since most of the stack is totally new to me, and I'm not particularly inclined to learn those things now.
- I was working on Monoids for most part of the day and got through exercise 7. I started doing the I/O exercise around the end of the day.
- The day ended with a talk on jobs related stuff by Nick and Sonali. It seems super unlikely for me to get a job (in the US), from what I understood from them. So, I needn't worry too much about that and focus on getting better at Haskel and as a programmer in general.
- Came to know about the project that Tom is working on for being able to auth integration of GitHub and Hacker School. This will be useful for me, when I get to working on the GitHub dashboard.
- I spent an hour or so to clean up by blog workflow and help scripts to insert tags in Nikola posts, etc. I also have a script to make a post for each day, automatically.
- lolcommit is an interesting project, and Max is using it for logging his work at Hacker School.
- Learned about laziness and the consequences of it. You cannot have side-effects, in a lazy language, if you want to keep the sanity of the developers using your language.
- Pattern matching forces evaluation.
- Also, briefly read about
seq, halting problem and
bottomfrom the Haskell wiki.
- The week ended with presentations by Hacker Schoolers from this batch. It was also Alum day, so we had some Alumni visiting. I missed half of the presentations because I had to leave early for Suguna's graduation.
I hope to continue to do some work on the tutorials during the weekend, and get back to it and finish them next week.
Continue with the Haskell tutorials, with additional reading from Real World Haskell.
- Finished exercises 4 and 5.
- Learnt about Type classes in Haskell and how to create them and make data types instances of them.
- Also came across a new algorithm of sieving called the Sieve of Sundaram, which was discovered by a student. Surprisingly, I never heard of it before!
- A few of us had an interesting discussion about various places people grew up in and visited, and the cultures, etc.
- Idea: implement a GitHub dashboard for organizations (say, HS batches) that give you different statistics, and interesting graphs. (Use elm?) [Update: Tom is working on HS and GitHub integration. So, that's perfect!]
I came super early to try and get some work done in the quiet before the daily checkins time. Continued with the Haskell tutorial and reading the Real World Haskell.
Finished a couple of exercises from the UPenn course, that were pretty straight forward.
Also, finished a few exercises from chapter 3 of real world haskell, and partially finished implementing Graham scan for generating a convex hull for a set of points.
The exercises from both the places involved mainly learning about Algebraic Data Types.
Mary pinged me to ask how the first couple of days were, and it was good to talk to get a ping from her though I never talked to her.
I'm going to continue working on the Haskell exercises today.
I also got a couple of ideas for small projects:
- Since, yelp is blocked from here, nobody can use yelp's API and work on any projects. It may be helpful to have an API proxy server that runs on a different server and forwards any requests coming to it.
- A simple script to create a twitter list for each batch of Hacker School.
Doing them in Python would be pretty straight forward. I will try to work on these things in Haskell, once I'm reasonably comfortable with Haskell.