Saturday, February 18, 2017

CMake in Layman's Terms

CMake is basically just a collection of tools for building, compiling and testing software. Generally, it's used in projects almost like a configuration tool. If you've ever built a package from source, you've probably had to do a `./configure ... ` before doing a `make && make install`.

From what I've used of CMake so far (I've only just run through the tutorial in an attempt to figure out how to integrate CPP Requests (cpr) into a project I've been working on), CMake basically generates a Makefile for you without you having to go through a bunch of stuff. It seems to work sort of like python's package setup utility or `./configure`. Not sure about that, so don't take my word for it.

You can find CMake tutorials here. Note that it only seems to really shine for more complex systems, so unless your project is huge, it probably won't be worth trying to figure out and you should just stick with writing your own good ol' Makefiles. It's also good for cross platform `making`. That is, I can use `make` the same way on every system that I please, unlike with regular ol' Makefiles. It's up to you.

Tuesday, February 7, 2017

I'm a pretty bad programmer.

You know, the more I learn about Computer Science, the less I think I know. I'm really feeling the imposter syndrome- though maybe I don't qualify as a `talented individual`.

It seems that I just don't know when to stop. I always feel like I need to do more, because I see people around me doing more than just the minimum. They're better than I am, and as much I hate to admit it, I care too much. Heck, I've got a friend at MIT that wrote up a code editor using Node. And I'm jealous as all hell; it looks good and functions well. It could actually be used, unlike the mini-projects I have going on.

I want to get better at programming, even if I'm bad now. So, here's the plan, for the next four years of college:
  1. Spend more time on pratice programs and projects. Don't give up write away, and always write down possible plans to rule out/use. Finish them before moving onto other things.
  2. Read more books; Have a computer next to you and try out the code examples. Try to make your own mini programs, e.g calculating prime numbers, fibonacci. The basic programming exercises.
  3. Commit to things like HackerRank, InterviewBit, TopCoder.
  4. Answer stuff on StackOverflow; do the research if you don't know what the asker is talking about, test their code on your machine.
  5. Contribute to open-source. Find anything that interests you on GitHub, use and read their code (maybe explore an issue with the program after using it) before trying to make any pull requests.
  6. Write viable code everyday. Try to at least have one useful commit everyday.
And that's it. I'll update if I come up with anything else, but something concise is better anyhow.

Benson Chau
02 - 07 - 2017