Today I brought you a little bit of space and programming, more programming history, how to get recognized at work, designing better documentation, and speeding up your CI pipelines by cloning your repositories in a faster way. You don’t want to miss it!
I had a very busy couple of days at work, so I couldn’t get too much done in Advent of Code. Working on day 7 took me a while to figure out the solution, specially in part 2. But I did it.
I think the biggest issue that I faced was that I was still trying to think in terms of procedural programming and not functional programming. I’m definitely not happy with the solution, again specially part 2, but it works. I’m definitely looking forward to start refactoring the code and looking for better solutions.
The wait is over! Issue #3 of inkelinks it out. Feel free to check it for a weekly dosis of design, history, and speeding your Bash shell startup times.
So far these are the challenges that I liked the most, I think. Also, a feeling that I’ve been having lately was that the code is a mess (to be expected because I’m learning) and this particular day’s solutions showed me exactly that: there are lots of refactorings to apply that will make the code more reusable and maintainable. I don’t plan on doing that yet, but it’s likely I’ll do it in the upcoming days.
These day 5 solutions took me a little longer, yet nothing compared to how long it took me when I started with Clojure.
One thing that I always knew theoretically but now I can confirm because of working with it the last few days is that the level of expressiveness is astonishing. I was very comfortable when I was programming in Ruby because I felt that it was too easy to translate my thoughts into code, but I’ve got to confess that while I’m nowhere near that level of comfort, I’m liking it more and more as each day passes.
Last night I solved day 4 part 1 of the Advent of Code 2020 challenge, and this morning I finally solved part 2, thus solving day 4 completely. While arguably days 2, 3, and 4 have “simpler” challenges than day 1, they were still challenging, specially given how unfamiliar I am with Clojure’s syntax and API.
I feel more confident as each day passes, and I’m getting more proficient with the environment as well. I hope that by the end of Advent of Code I feel confident enough to try Clojure in a small project at work.
I’m on a roll! Day 1 was painful; in day 2 I did some improvements, and now day 3 was also solved in less than 2 hours!
I’m getting more familiar with Clojure, and the tools I use for this project: Leiningen, Emacs + CIDER. About the latter, I know I could be more efficient if I knew the commands better, but so far it is really useful and I’m not only learning tons but also in awe as to how well integrated this tool is.
Funny how day 1 took me 4 days to solve but I was able to solve day 2 in just an hour. I guess the challenges are not strictly in a increasing order of complexity.
I also like that I think my Clojure programming style is getting better as the time passes, which in the end was my sole main objective.
Let’s see what day 3 lies ahead…
I did it! I was finally to solve both Day 1 challenges in Clojure! And it only took me four days!
As said in my previous post one of the reasons why I’m participating in this years Advent of Code is because I want to learn Clojure, and while at times I felt frustrated because I couldn’t find the solution, I’m happy that I did. As with everything, in hindsight, the solution is obvious now. Not that while the problems were similar, both solutions are quite different, and I think they showcase my improvement with the language and functional way of thinking.
I’m looking forward to Day 2 challenges, and I hope to solve them in less than four days!
Issue #2 of my newsletter was delivered today. I’m really enjoying curating links and sharing them with friends!