Monday, 24 November 2014

Type checking in javascript has never been easier

I love languages which aren't strongly typed. It makes software development process very fast and very easy as we need not write huge, complex, unreadable code like in our typed languages. However this can lead to developer's worst nightmare: Runtime errors! In languages such as javascript it is not easy to check for type mismatches while in development process. Hence flow was invented!

Flow is one of Facebook's open source projects. It allows developers to check for programming errors in javascript code with very less effort. This is a sample code available on their site:

function foo(x) {
  return x * 10;
}
foo('Hello, world!');

Note that a string is passed into the function foo and an arithmetic operation is performed on that string inside it. When flow is run on this code:

01_HelloWorld/hello.js:7:5,17: string
This type is incompatible with
  01_HelloWorld/hello.js:4:10,13: number

It points out that the string is incompatible with number. Consider a much much complex code. An error like this can simply be unnoticed until a runtime error is raised.

Source: https://github.com/facebook/flow
Installation: http://flowtype.org/docs/getting-started.html
Examples: http://flowtype.org/docs/five-simple-examples.html

Sunday, 23 November 2014

Navigation Bar suddenly disappeared on Nexus

This can happen on any phone with soft navigation keys.

Yesterday, I was tweaking my Nexus 4 after updating to Lollipop. When I restarted my phone I found that the Navigation Bar had disappeared! Even to switch from one app to another I had to restart my phone! Then I found a way to fix it.

Install Root explorer or ES Explorer. Open it and go to /system and mount it in R/W.

Then open the file build.prop in the current folder using text editor.

Then go to bottom of the file and change the value of "qemu.hw.mainkeys" from 1 to 0
Reboot and you are done!