First Blog Post
Setting expectations
Hello World! This is my first blog post and I am excited to utilize blogging as a way to document my apprenticeship at Clean Coders. Mr. Tom Preston-Werner succinctly summarizes the joy and benefits of writing or blogging:
the act of transforming ideas into words is an amazingly efficient way to solidify and refine your thoughts about a given topic.
One great expectation I have for myself is that through the daily blogging, I will be able to thoroughly examine my understanding of concepts. Consequently, the writing should be coherent, clear, and simple because when you think about it even a complex idea/concept is a composition of underlying fundamental concepts which can be broken down and explained in a straight-forward manner.
Thus, it is essential for me to have a strong foundation in whatever domain of study I choose to pursue, or else it will be a constant struggle of trying to describe concepts in a convoluted, jargon-filled way (not that there is anything wrong with using jargon but one of my goals it to try to ELI5 - explain it like I’m five when it comes to what I have learned).
Today’s Tasks
- Taking care of the first order of business, I worked through the new hire paperwork and submitted all the required documents.
- Next, Micah provided me several links to help me create my first blogging site. I read through an article on using Jekyll and GitHub Pages to build a blog and followed the brief tutorial on that article to build my blog, which you are reading right now. The other links were examples of other people’s blogs that I found to be helpful and guided me in terms of what sort of content I should be posting on my blog.
- Clojure Koans. A koan is a riddle or a puzzle used during meditation to help someone contemplate some greater truths/realities. There are 27 Koans and each Koan is comprised of a number of exercises. The Clojure Docs came in clutch a couple of times when I found myself meditating a bit too long on a particular koan exercise. Also, I think this is an excellent way of learning the basics of Clojure and I am thoroughly enjoying myself.
TIL - Today I Learned…
Clojure
- According to the docs
(symbol name)
thename
of the symbol can be a string or a symbol, e.g.symbol 'foo
orsymbol "foo"
Clojure.core
is a namespace and is Clojure’s standard library. In OO languages where behavior is grouped using classes, Clojure uses namespaces to group similar behavior and state.
intelliJ/linux
- When I was cloning the Clojure Koan repo I ran into this error:
Warning: Permanently added 'github.com,140.82.113.3' (RSA) to the list of known hosts. git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.
I received this error because I was running on linux mint instead of my usual windows and because of that I did not have an existing ssh key for my linux mint. So, with the help of Micah, I found an article on generating a new SSH and adding it to the ssh-agent and after generating a new ssh key, I used thecat
command to view the contents of the public key, which I copied and saved into my github profile’s ssh keys. - Using the
locate
command to find the path foridea.sh
(the file that is used to launch intelliJ). A SH file is a simple text file that contains commands and some logic. In some ways, it is very similar to a batch file for Windows. In my case, the.sh
file was ran on linux mint. - Created a command line lanucher for intelliJ. Now, I don’t have to worry about finding where the idea.sh file is located. Also, the command line launcher conveniently allows me to launch intelliJ with the
idea
command. So, I went to/home/gosupark/Projects/clojure-koans
and typed in the commandidea project.clj
to open up the Clojure Koans project and it worked like a charm. I love it when I discover ways to save time & streamline mundane tasks.
What’s Next?
- One ultimate goal is to work through all 27 Clojure Koans. (Figure out a good schedule & pace for this)
- I found this pretty in-depth tutorial on Clojure, so when I get the chance I would like to go through the entire video and probably take notes on it as well.
- Continue to familiarize myself with linux mint & the terminal. (The terminal is a friend, not a foe)
- Try to work on the blog post throughout the day and as I face challenges or make breakthroughs I can write it into my blog. This will help me remember what happened throughout the day and keep the post more organized.
- Clone this repo so I can blog locally in my favorite editor.