Another week passed by quickly! It was a productive week. Here's what I learned this week.
Mindset:1. Be a catalyst for change: I read the story called Stone Soup and Boiled Frogs in The Pragmatic Programmer book this week. It's an amazing story of a three soldiers who were hungry when they returned from a war. They thought that the villagers would share food with them but they found that villagers were short of food and hoarded what they had. But rather than giving up and/or getting discouraged, they acted as a catalyst, and they brought villagers together one by one and made a soup. They jointly produced something that they couldn't have done by themselves. The moral of the story/lesson learned from the story is - during the software development, if you ask too much all at once, it might overwhelmed your team. They'll find ways and all reasons why it won't be possible, which ultimately might stall the progress. But instead, start small, breakdown the problem/software development into a very small chunk, build something very quickly and launch it. Momentum is the key here. People finds it easier to join an ongoing success. It reminded me of this YouTube clip about the human psychology: https://www.youtube.com/watch?v=GA8z7f7a2Pk
2. The importance of choosing the right data structure in the first place: During one of the classes Noufal Ibrahim shared a quote that stuck with me. He said: "Bad programmers worry about the code. Good programers worry about data structures and their relationship." The reason Git is leading/winning the game compared to it's competitors in Version Control System (VCS) space is because the way Git thinks of or store it's data. So choose the data structure wisely.
1. Emacs: This week I familiarized myself with Emacs commands, buffers and modes. Following are some of my notes on Emacs:
(a) Buffers: are the data structure Emac uses to store the text. All the manipulations of text are done inside the buffers. Usually the mode of the buffer is set based on the extension of the file. For e.g. if you open a filename project.py, it'd open in Python mode. If the filename is project.rb it'd open in Ruby mode. You can also switch between buffers. They key stroke is C-x b and it'll ask you what you want to switch to. You can kill the buffer by using C-x k.
(b) Registers and bookmarks: Registers are storage bins which can hold useful informations. Registers allows you to remember certain useful information during your current work (but nor forever). It can remember the buffer positions, text, numbers, etc. Register has to have a name. Emacs allows you 26 letters and it's case sensitive. For e.g. a and A are different letters. Moreover, it also allows you to use 10 numbers. So you have total 62 registers during the editing sessions. Bookmarks are similar to what is in web browser. But it also remembers the position, for e.g. go to a particular line in your text file you want to bookmark and enter C-x r m to book mark. To list all the bookmarks: C-x r l. To jump to a bookmark: C-x r b (it'll ask jump to which bookmark). By default it'll save it to: ~/home/.emacs/bookmark
(c) Minor Modes/Major Modes: Minor modes are like "preference" settings. There can be more than one minor modes. On the other hand each buffer is associated with on major mode. Major mode is a collection of emacs behaviors designed for a specific task. C-h m or M-x will show all the active minor and major modes and a brief description of each
(d) Dired (Directory Editor): It's a directory management inside the Emacs. You can create edit, save, rename and delete file from inside the Emacs. - C-x d - to run dired mode- press enter/return key to view list of files- You can use up, down, arrows to go to scroll up and down on the lists of files- C-x C-s to save the file- C-x C-c to close the file- C-x C-W for save as file (it'll ask you to enter the file name)- Shift r (R) for renaming the filename- C-x C-f to find a file- To delete a file - select the file you want to delete and then press d x (it'll ask you do you want to delete the file?)
If you have any comments/feedback, please let me know.
Thank you for reading.