Wednesday July 11th

GSoC Day 59

I learned some things about myself today

  • I had a really interesting evening tonight! I pair-programmed with a guy named Frank during the day for about 8 hours, and I was really pushed. I was mentally wiped out afterwards. I really appreciate the patience he had with me to keep going.
  • One of the things I really have to work on is not being paralyzed by a large problem. Basically, being able to look at a problem and break it down into smaller problems. Right now, I rely too much on pattern matching. Every problem is a nail..or I’m looking too much for metaphorical “nails”.
  • Essentially, if I look at a problem and it’s something that is similar to something I’ve seen, I use that look-up table and resolve that X is the way to solve the problem, and if not, it’s often difficult for me to know where to start, because I grasp at straws mentally. That’s what they teach you in school.
  • “This is how you write a for-loop..when you want to count things”. So you start to associate all “counting problems” with for-loops. I don’t want to think like that, but instead want to be more in line with the way mathematicians tend to think, which is more-so reasoning about problems by breaking things down, and considering the trade-offs of using one methodology over another.
  • So one of the things Gabe said I should do is start writing everything down meticulously about my process, asking questions and breaking down a problem into as small pieces as I can. He also went through an example with me as to how he would write down everything. And it’s a translatable skill in learning how to problem-solve.

The problem today I was working on

  • Was a parser/expander/grammar. The grammar was very fun to work on, and I enjoyed working on that. And it was a smaller piece of a problem. But I really struggled with the larger problems, in which several steps were involved. And my partner helped me figure out how to go through one by one, injecting functions and debugging results. At the end, I asked him how long he had been using the language, and he had been using a similar one, but actually didn’t have much experience with this particular language. He was just using the methodology of breaking larger problems into smaller ones and focusing on small parts that didn’t work, fixing those and working back up the spine. That’s something I could really get better at doing.
  • It’s often difficult to know where to start in a large code-base, also. I have found myself asking over and over again in the meetings for GSoC “where do I start?” or “Which one should I work on first?” based on the general agenda. I really think if I listened to Gabe’s suggestion of writing everything down and asking questions to myself that this will become more apparent to me over time. It would also help in cementing my thought process when I have to come back to a code-base several days afterwards; I can revisit my thoughts and my reasoning.

Of course he has a blog post…

  • In true Gabe-style, he has a blog post that he recommended to me called “How to Desugar Haskell Code” He also gave me a copy of the notes he made, which is how he says he breaks down a problem, by basically talking to himself through the problem. That was super helpful!

I want to work on a Parser

  • I’d like to work on something like a language or parser because I think it would (today’s activity was one involving grammars, parsers, lexers and tokenizers) force me to work on smaller bits that become parts of larger bits, and learn to debug and solve problems that are small and become larger problems as the code-base grows. I think that I would learn a lot from that, particularly in a recursive language like Haskell or Racket. So that’s my next goal for myself.

Today was really a mental workout

  • I learned a lot today, and about myself. I may call it a night early, but I’m going to get up early to start documenting things, first by looking at the function interactionOf, so I can reason about how that works via its implementation on the user side, and then translate that process to the code base. I think that that would help me a lot, and is a good starting point for me.

And that’s about it!

  • Here is a photo from today :) This is courtesy of Racket School 2018. If you want to be challenged, I highly recommend it. It was blood, sweat and tears, but very rewarding.

Written on July 11, 2018