The Collatz Strikes Back

What did I do this past week? This week has been a busy one. In OOP land, I’ve made a surprising amount of progress with the Collatz project. I’ve written a lot of code, read about a lot of technologies, and resolved a lot of those GitHub issues. Most of my other spare time was spent on extracurricular activities - leading student organization kickoffs (ISSS, MAD) and meeting with eager and curious freshmen. Job hunting (internship hunting) has also officially started - I’ve polished up my resume and have begin passing it around to recruiters.

What’s in my way? While I’ve won a number of battles with the Collatz project, the war is far from over. I need to polish up my documentation, upload the acceptance tests to the public repo, implement more optimizations as I discover them, and read all those Piazza posts. I also have some Government homework that needs to be done, but shaving off seconds on benchmarks is surprisingly addicting…

What will I do next week? Next week I’ll be polishing up my Collatz code and getting it submitted. I imagine I’ll actually end up finishing early, which leaves me time to work on other homework and projects. Job applications in particular can take a long amount of time, but I imagine applying early (rather than in-person at the career fairs) will save time in the long run.

I’m starting to understand why this class carries the Independent Inquiry flag. I’ve spend a large fraction of my time simply trying to figure out what’s going on, and how the smaller pieces fit together to make a bigger picture. That makes for a lot of, well, independent inquiry. I am concerned that getting thrown in the deep end will only result in becoming a jack of all trades and a master of none, which discourages me from making use of the technologies involved in the Collatz project in my own personal projects.

One particular source of frustration and evil is having to keep track of all the little details. From all the files that need touching, to all the Piazza posts that need reading, I wish there was even more working infrastructure provided at the outset. While it’s true that a lot of stuff is provided for free (writing the makefile would have taken me hours on my own), there’s some stuff that looks like it should work - but doesn’t. For example, Doxygen’s default output for the project is incorrectly blank for the provided and documented functions in Collatz.h until you write in some special commands to get it to read the file properly.

Overall though, I like the immersion, and it’s a good feeling to have made progress despite the uncertainty. Let’s hope I can become more confident with future projects and materials.

Tip of the Week: The keyboard shortcut CTRL+R in Bash begins a search for a command you ran previously. Often times, it’s easier and faster than pressing the up arrow repeatedly to run an old command.

Speaking of keyboard shortcuts, the Emacs caret movement shortcuts work great directly on the command line prompt. They’re quick once you get the hang of them, because your hands no longer have to leave the home row to reach the arrow keys. Note that the META keys is usually the ALT key on your keyboard. Try these out:

  • To skip to the beginning of the prompt, press CTRL+A.
  • To skip to the end of the prompt, press CTRL+E.
  • To move the cursor forward, press CTRL+F.
  • To move the cursor backwards, press CTRL+B.
  • To move the cursor one word forwards, press META+F.
  • To move the cursor one word backwards, press META+B.
  • To delete a character, press CTRL+D.
  • To delete a word, press META+D.

Congratulations! You’re now an Emacs expert. Just learn the other 999999 key combinations and you’ll be ready for anything.

Written on September 3, 2016