Skip to content

Running Javascript in your Mac using JSC

Being a swift developer, I was expecting a playground for javascript locally without website and other external dependencies, I ended up learning about JavascriptCore. (jsc)

Follow below steps to set up jsc

  1. Find the location of jsc in your mac. It usually resides in (/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Helpers/jsc)
  2. Create Symbolic link using the below syntax
    ln -s /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Helpers/jsc /usr/local/bin
  3. Use jsc to execute javascript file: jsc console.js 

Notes:

console.log does not work here and print works

Code smells to be wary of in Swift

Below is a list of code smells I have encountered during my development

1. Excessive usage of guard – Using a guard in a scenario where a general if else would suffice is an overkill.
2. Complex code in else-clause – Using a guard’s else to nest conditional statements or guard statements in it
guard let doFoo = doFooProducer.doFoo else {
let productId = randomProducer()
if productId == 3 {
produceCar()
} else {
produceTree()
}
return
}

3. Singleton – It is easy to use Singleton to solve problems where data retention is key and as the data stored in it is accessible every where. By the time things gets worse and you end up in spaghetti, you can not refactor the implementation and end up piling bugs because of this global mutable state which has no single owner. If you think of creating a singleton, consider the below before creating one.
* Can this be solved using Dependency injection in to other classes?
* Singleton is a global variable in disguise. Are you ready to face the wrath of a global variable?

References:

https://radex.io/swift/guard
View at Medium.com

https://www.swiftbysundell.com/articles/avoiding-singletons-in-swift/

https://www.objc.io/issues/13-architecture/singletons/

Quote for a Post

A quote I liked from reference:

Programming is a social activity.

Rename a local and remote branch in git

Multiple States Knowledge Base

If you have named a branch incorrectly AND pushed this to the remote repository follow these steps before any other developers get a chance to jump on you and give you shit for not correctly following naming conventions.

1. Rename your local branch.
If you are on the branch you want to rename:

If you are on a different branch:

2. Delete the old-name remote branch and push the new-name local branch.

3. Reset the upstream branch for the new-name local branch.
Switch to the branch and then:

View original post

Setting up linter in Atom editor

  1. Install react package from apm
    apm install react
  2. Create a .eslintrc file with the the minimum configuration of
{
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true
  }
}

Now restart your atom editor.

 

References:

http://orktes.github.io/atom-react/

http://stackoverflow.com/a/35611103/189006

First impressions with React-Native

I always  believed writing native apps using Javascript (web tech stack )would  cut the cost in terms of maintaining different teams for each mobile OS platform. Read one, two,three

But never expected it would become a reality soon(I would not count Titanium as a solution here because of the lack of community support as it is for React-native and the amount you will have to shell out for getting support). Thanks to Facebook for making it possible. I was so elated when Facebook open sourced it.

After more than a year of it being made it available for public, I started using it my work. I am sharing a couple of pointers here which will help any one who jumps in to React-Native development.

(I  joined Myntra, an e-commerce company for fashion products recently. Myntra is one of the companies who first embraced React-native in India. )

  1. I was used to imperative way of thinking. React-Native being declarative in style, I had few hiccups while understanding the workflow. Write a sample app and you will get used to this new style of thinking.
  2. I had a hard time setting up the environment (Ruby, rvm, npm,activesupport ) mainly due to the compatibility of the exiting code base. Get a clarity on the versions of all these tools from your team  and you would not waste time.
  3. Choosing the right tool is important. I am very comfortable with Atom editor. I started using Nuclide from Facebook built on top of atom.
  4. One of the most used views in iOS is UITableView. The the behaviour and UI is achieved here using  ListView.Reading the below, gave me a better way to understand how they work under the hood.

http://moduscreate.com/react-native-listview-with-section-headers/

https://github.com/facebook/react-native/issues/5572

I will be sharing very specific errors I faced and how to handle them in upcoming posts.

வாட்ஸ் அப்-இன் துவக்குனர் வாழ்க்கை

 

ஜான் கோம்,  நாம் அனைவரும் பயன்படுத்தும் வாட்ஸ்ஆப்-பின் முதன்மை இயக்குனரும் , துவக்குனரும் ஆவார். இவர் தனது நிறுவனத்தை பேஸ்புக்கிடம் 24பில்லியன் அமெரிக்க டாலருக்கு விற்றவர். 4 லட்சம் டாலர்களை வைத்து துவங்கப்பட்ட  ஒரு நிறவனத்தை, கிட்டத்தட்ட இரண்டாயிரத்து இருநூறு கோடி அமெரிக்க டாலருக்கு விற்றுள்ளார்.(2200 கோடி அமெரிக்க டாலர்). அண்மையில் 1987 கோடி ரூபாய்க்கு தனது பங்குகளை அரசுக்கு  வரி கட்டுவதற்காக விற்றவர்.

2009 இல், 4 லட்சம்  டாலர்களைக் கொண்டு ஆரம்பிக்கப்பட்ட ஒரு நிறுவனத்தின் மொத்த மதிப்பு 2014இல் 24பில்லியன் என்றால், அது  நாம் பல படங்களில் பார்த்து ரசித்த (ஒரே பாடலில்)ரஜினியின் வளரச்சி போன்றது.

ஆனால் இதை இவர் எளிதில் அடைந்து விடவில்லை. தனது தந்தையை 1997 இலும், தாயை 2000 இலும் இழந்தவர். கம்யூனிச முற்றதிகாரத்தால்(Dictatorship) முற்றும் சிதையுண்ட உக்ரைனில் பிறந்தவர். அங்குள்ள குளிரை சமாளிக்க சுடு நீர் கூட இல்லாத நிலைமையில் தான் வளர்ந்துள்ளார். அங்கிருந்த யூத வெறுப்பு நிலையால், அவருடைய அம்மா, வீட்டில் இருந்த தொலைபேசியை பயன்படுத்த அச்சம் கொள்ள வேண்டிய நிலைமை.

அப்படியொரு மோசமான நிலையில் எப்படி இந்நிலையை அடைந்தார்? அங்குதான் காட்சிக்குள் அமெரிக்கா வருகிறது.

1992இல் தனது 16ஆவது அகவையில், தன் அம்மா, பாட்டியோடு அமெரிக்காவின் கலிபோர்னியாவில் குடிபெயர்ந்தார். தந்தை அவர்களோடு பின்னர் அமெரிக்கா வருவதாய் இருந்தது. அமெரிக்கா  வருவதற்குள், 1997இல் மரணம் தழுவினார். அவர் தாய் புற்று நோயால், 2000இல் இறந்தார்.ஜான் கோம்  வந்து குடியமர்ந்த புதிதில் பெரும்-பல்பொருள் அங்காடியில், சுத்தம் பணியாளராய்  இருந்துள்ளார்.அமெரிக்காவின் உணவு வில்லைகளையே (நம்மூர் ரேசன் கடை போன்றது)  உணவுக்காக நம்பியிருந்த நிலை.

பள்ளியில் பயிலும் போது, தனது 18  வயதில் கணினி நிரல்கள்(Computer Programs) எழுதுவதில் ஆர்வம் வர, பழைய புத்தகங்களை விற்கும் கடைகளில்,  மென்பொருள் நிரல்களை எழுதும் திறனை வளர்த்துக்கொண்டார்.  பின்னர் கல்லூரி பயிலும் போதே, எர்னஸ்ட் & யங்-கில் பணி செய்தார். ஒப்பந்த ஊழியனாக அப்போது மிக துவக்காகாலத்தில்  இருந்த யாகூவில் (YAHOO) இருந்தார். வெளிப்படையாக, மனதில் பட்டதை பூசி மொழுகாமல் பேசும் அவர் திறனைக் கண்டு அவருக்கு அங்கே வேலை செய்ய அழைப்பு வந்தது.அடுத்த எட்டு வருடங்கள் யாகூவிலேயே பணிபுரிந்தார். அங்கேதான் வாட்ஸ்ஆப்பின் கூட்டு துவக்காளர் பிரையன் ஆக்டனை சந்தித்தார்.

8 வருட யாகூ அனுபவத்திற்கு பிறகு நீண்ட விடுமுறையில் சென்றவர். பேஸ்புக், டிவிட்டர் நிறுவனங்களிலும் வேலைக்காக விண்ணப்பித்தார். இரண்டிலும் வேலைக்கு தகுதியில்லை என திருப்பி அனுப்பப்பட்டவர். பின்னர் தனது சேமிப்பில் இருந்த 4 லட்சம் டாலர்களை வைத்து துவங்கப்பட்ட ஒரு சிறு திட்டப்பணியே வாட்ஸ்ஆப்பாக விரிவடைந்தது. இப்போது கிட்டத்தட்ட 90 கோடி பேர் இதை பயன்படுத்துகிறார்கள்.

பேஸ்புக்கோடு ஏற்பட்ட ஒப்பந்தத்தை, கையெழுத்திட்டது முகநூலின் தலைமைசெயலகத்திலோ வேறு பெரிய ஓட்டல்களிலோ அல்ல. தான் இலவச உணவுக்காக இளம் வயதில் காத்திருந்த  அதே ரேசன் கடையில்.

தான் மிக வருந்தக்கூடியதாக நிகழ்வாக அவர்குறிப்பிடுவது நீதிமன்றம் அவர் முன்னால் காதலி சார்பாக அவருக்கு விதித்த ‘தடைகுறி கட்டளை’(Restraining Order).  தன்வாழ்வில் கட்டாயம் அழிக்கப்படவேண்டிய பாகம் என ஒன்று இருந்தால், அது இந்நிகழ்வே என குறிப்பிட்டுள்ளார். அவர் காதல் உடைந்ததை  எற்றுக்கொள்ளாத மனநிலையில் செய்த மூடச்செயல்களே ‘தடைகுறி கட்டளை’க்கு காரணம் ஆகும்.

 

நன்றி:

விக்கிபீடியா, குவாரா

Daniel L Jacobs

கவிஞர் மகுடேசுவரன்

http://qr.ae/Rgpg4Z

குறிப்பு:

வாட்ஸ்ஆப் விற்கப்பட்ட தொகை, சில இடங்களில் 16 பில்லியன் என்றும், பல இடங்களில் 18 அல்லது 19 பில்லியன் என்றும் குறிப்பிடப்பட்ள்ளது. நான் குறிப்பிட்டுள்ள தொகை, நான் வாசித்த குவாரா பதிலில்  இருந்து எடுத்தது.

 

Zero to one

Some good stuff I learned and recollected out of reading Peter thiel’s Zer to One:

1. Value of being optimist and Value of being definite optimist. Definite optimist and indefinite optimist are way different. 

2. The stupidity of mob mentality quoted from his PayPal days amidst dot com bubble

3. The power of planing and designing and having a vision through Apple’s success and Mark zuckerberg’s determination of not selling FB to yahoo.

4. The value of effort  (people easily dismissim someone success to chance and luck)

5. The power of differentiation and uniqueness explained interns of Google ‘s monopoly

Will update as I complete the book.

Bizarre Slow motion transitions in iOS application

When I was doing some ugly hacks on one of the apps I was working to test a feature, my app entirely worked in a slow motion.

Since I was doing some hacks with UIApplication subclass and associated methods, I felt that these changes were causing the application to behave in a slow motion.

Then even removing my custom UIApplication did not help me in anyway. So I was reminded of a similar situation few months ago and me wasting lot of time on this.

The problem was I have enabled a hotkey COMMAND+T without intention.

You can revert to normal behavior by hitting the same combo again.

Quotes that inspire me

These quotes help me with keeping up my life afresh amidst all the events that try to drag me down. It is a living list..

1.Any stubborn challenge was simply an obstacle to be conquered; the harder it was, the more it drew my attention until I won.

Source:http://adamhgrimes.com/blog/rage-master/

Cost cutting strategy for location based service business

I use Freshmenu app and Ola App frequently.

Problem:

One common problem the delivery boys face (never seen a girl)  is identifying the location of the delivery/pickup which is key part of the customer service experience.

The amount lost for the customer and delivery boy (the organization they belong to) is around 1-3  per delivery.

Out of all the freshmenu deliveries I have received and all the Ola commute I had, the delivery boy/driver and I had to call each other on all occasions to point the address where I am. But in both the cases either my address was collected automatically or I have explicitly sent my address  through the mobile App.

Approach

Freshmenu:

  1. The customer’s address is passed as a text to the the server and further passed to the delivery boy.

Ola:

  1. The customer’s current location is passed as GPS coordinates to the server and further the customer’s location rendered in the Maps application of the driver.

Both the approaches has got a problem.

Freshmenu’s approach has a problem for the delivery boys with the direction to reach the destination. The delivery folks calls you once from their pickup point and then somewhere near your locality because they are not familiar with the locality where they deliver. (Which is acceptable)

In three of my Ola trips, my the location was not  identified accurately by the driver. All of them have told that the location was not accurate. Either I had to walk some 100 metres to go to a landmark which I could quote them or talk to them over phone and ask them to come to my location.Ola’s approach suffers from a problem with rendering the location of the customer or capturing the location accurately using GPS or a problem with my Phone.

Solution

A combination of both would help the people who are providing service with identifying the location without ambiguity and save money for both of them. Though Physical address can not be provided when you need Ola or Uber from an arbitrary location.

Food for thought:

Ola problem with Billing