Hey there, so week 2 is over. Don't confuse with the title, I am not going to talk about the game 'Need for speed'. What I meant by Need for speed is an important attribute of a programmer. Programmers should have really good speed at what they do.  Sometimes when we stuck it's just trail and error. So how far you can do trail and error depends upon your speed. Not just that, more importantly it's save a lot of time and energy.

So how exactly can we gain this speed?!

We already took Step one. Practicing typing is one of simplest way to gain speed. Though very less, I can already see that my typing has improved. It's about 30wpm (words per minute) as of now, which considered as average.

Step two: Be an expert in the editor. We choose EMACS

Naa.. Not going into that 'editor war'. source: https://xkcd.com/378/

Get started with Emacs

EMACS might be very old editor. It's initial release is on 1976. But it's still effective. Why? I would quote Emacs manual itself;  "the extensible, customizable, self-documenting, real-time display editor". Since it's general purpose, it will be good platform to use for any programming language. That's my reason to learn.

In Emacs we use special key combinations and shortcuts (commands) to operate and edit. It has over 10,000 built-in commands. More can be made by using Lisp programming language (Emacs is build upon it). We can also download them from online. These commands not only gives speed, you can automate your work to the level you haven't dreamed before! (at least I haven't )

Color labeled parts of Emacs

Emacs starts out with one frame, but you can create more. A frame can contain one or more windows, each of which can display the contents of one buffer at any time. You might ask what is buffer? Well it might be the most important part of Emacs. The buffer is the basic editing unit; one buffer corresponds to one text being edited. You normally have several buffers, but at any time you are editing only one, the current buffer, though several can be visible when you are using multiple windows or frames.

Other important parts are Minibuffer (which is used for reading arguments to commands) and Mode Line. Mode Line gives status information on the buffer displayed in that window. It tells us which modes are currently running. We can have one major mode (eg: Lisp Interaction, python) and multiple minor modes(eg: autosave mode, tool bar mode) same time. Minor modes can be global(affecting entire buffers) and local(affecting specific buffers).

After writing this much, I sure I have to use Emacs for writing the blog from next time onward. I got started with Emacs by referring emacsmovies.org. The site contains video tutorials by Noufal Ibrahim.

Other activities

Every Monday we have presentation to take on something related to last week. This is a skill which I have quite a lot to improve. It doesn't matter how much one knows, if they can't present in a way others can understand. It's jus 5 min presentation (You can't blame the attention span) But Noufal Ibrahim gives valuable feedback to improve upon.

Finished UNIX Programming Environment chapter2. It mainly discus about the file system, how it structured and how it works. Let's just say i find some of the ideas in it really incredible.  Everything in the Unix system is a file!, even the directories. That didn't make sense at first. But when it did, just WOW. T0 add up more spice there is no file format (at least not like in windows). If you are Windows user you might go crazy reading all these about this. Really starting to appreciate it, How any OS works.. I think it's just incredible. Really enjoyed reading this chapter.

and as always, Thanks for Reading:)