Posts

Showing posts from July, 2017

Reductio Ad Absurdum

Image
"The reductio ad absurdum is god's favourite argument" - George Tyrrell This is a phrase which is used so often during the bootcamp at Go-Jek Engineering, that it has become one of the strongest tools in my arsenal while arguing about anything. It is also known as "reduce to absurdity". It is a mode of argumentation in which a proposition is disproven by following its implications logically to an absurd conclusion. The fallacy is in the argument that could be reduced to absurdity and "reductio ad absurdum" is a technique to expose the fallacy. This form of argumentation has roots in the Socratic method and has been used throughout history in formal mathematics, philosophical reasoning, debating, etc. One of the classic examples is the argument - "The earth cannot be flat, otherwise people would be falling off the edge.". This shows that it would be absurd to argue that the earth is flat. "Reductio ad absurdum" is o...

Touch Typing

Image
"Keep typing until it turns into writing - David Carr" Touch typing is the ability to type without using the sense of sight to find and identify the keys. Muscle memory is used by the touch typist to know the location of the keys on the keyboard. It can be of both types - two-handed and one-handed. This is something that I am being made to practice at the boot camp at Go-Jek Engineering. It helps improve an individual's typing speed and accuracy which is very essential for programmers as every fraction of time saved helps improve ones own efficiency. It was invented in 1888 by Frank Edward McGurrin, a court stenographer from Salt Lake City, Utah. It involves placing your eight fingers excluding the thumbs in a horizontal row along the middle row of the keyboard, which is known as the home row and then reaching out to the other keys accordingly when needed. On the most common type of keyboard for English i.e. the "QWERTY" layout, the keys "...

The Pomodoro Technique

Image
"If you want to be more productive, you need to become the master of your minutes" - Crystal Paine Can you really, and I mean REALLY focus for 25 minutes? This is what the Pomodoro technique of time management which was developed by Francesco Cirillo in the late 1980s is all about. Pomodoro means a tomato in Italian and this method is named after the pomodoro-shaped kitchen timer which Francesco used when he was a university student. It uses a timer to break down the work into small intervals called pomodoros separated by short breaks. It has been widely adopted in pair programming technique. It is based on the concepts of timeboxing and iterative and incremental development. There are basically six steps in this technique: Decide on the task to be done. Set the pomodoro timer (traditionally to 25 minutes). Work on the task until the timer rings. After the timer rings, put a checkmark on a piece of paper. If you have fewer than four checkmarks, take a short br...

Software Semantic Versioning

Image
The quote "Be the best version of yourself" holds true for a software too as software is a working entity which has its own properties and behaviour. Software is a great combination of artistry and engineering. So why should one not be artful to version that engineered piece of software. Semantic versioning or SemVer is a versioning system which provides a universal way of versioning software development projects. This helps us keep track of what's going on in the development process of the software. SemVer is a three component system which has a format of x.y.z where   'x' stands for a major  version, 'y'  stands for a  minor  version and 'z'  stands for a patch . Thus, we have major.minor.patch . The patch is bumped up, if it is just the bugs which have been fixed while keeping the contract same (refactoring). If some functionality is added or new features are implemented in a backwards compatible way, then minor  is bumped up. F...

Ruby and Her Gems

Image
Ruby depends on many of her friends which she lovingly refers to as her precious little "gems" . A gem is nothing but a ruby code which we extract for later use. "Gemfiles" are the files which we create and use for describing the dependencies of a ruby program on the gems. This Gemfile in turn is treated and evaluated as a ruby code. Ruby likes to keep her friends close and Gemfiles help her do that. The gemfile must always be present in the root of the project directory. "Bundler"  is a manager for Ruby which installs the exact gems and their versions when required. All one needs to do is execute just one commands  bundle install from the root of the project directory and voila!, Ruby has been reunited with her gems. Once this is done, a file named "Gemfile.lock"  gets created which records the exact versions of the gems which were installed. This file can then be reused later to conform to the same specifications. The first thi...

The Day I Met Ruby

Image
It was indeed a really memorable day having met Ruby formally for the first time and boy it was good. I never imagined that I would become comfortable with a new acquaintance in such a short span of time. There were of course a few hiccups on the way of getting acquainted but the way the transition from mere acquaintances to friends happened was really unimaginable. Here, I talk about the programming language of Ruby that I was introduced to as a part of the Boot Camp here at Go-Jek 😋 It was after a long time indeed that I found a programming language so easy to code and that is because Ruby is so close to the English language. All that one needs to do is just form an idea about what needs to be done in one's mind, translate it to English and hey presto, we get the resultant working code for the same. Ruby is an imperative scripting language which has inherited a lot from functional programming.  I believe that to be perfect in every sense is very r...