Things I HATE 😡 about Javascript

Hello World!

Don’t get me wrong I Love Javascript even a wrote an entire blog about it, However there javascript is not a perfect language like any other language in this planet.

At the time of writing this blog I have been developing javascript since last 18 months, yep i that is not enough time to get sufficient knowledge to write a blog like this but I am planning to keep on updating with time.

 

ASYNC:

I have been coding in python from last year of my engineering, I loved it because of it’s dynamic typing and I jumped into javascript realm for the same reason. I loved it till I came across ASYNC programming in javascript, which left me confused at so many level(yep I know as JS has single thread it’s is one of the fundamental feature which makes sure multiple processes can at a any given point of time.) It would have been great if ASNYC part in JS is dealt in a way that it’s more intuitive to write async code. Thanks to async and await syntactic sugar it’s  not that of a deal anymore.

 

HOISTING:

Understanding how hoisting works was one of the eye opening moment for me, suddenly lot of things started making sense to me about the me. I am still not very sure why JS needs to have hoisting in first place. I understood how it works but why behind it still not clear to me. Most likely I will remove this point from the list after understanding the purpose behind it.

 

DEBUGGING(Frontend):

I have not done enough backend coding to express my opinion on how it’s like to do debugging in node, What I done is frontend and due to different browser engine implements  certain feature of javascript differently it’s very hard to get to debug an issue. Apart from it, if you are not using strict mode in javascript sometime it’s almost impossible to track back an silent bug which exist in your code. Tools have been come a long way in recent times which made debugging error and it’s relatively straightforward to debug JS bugs now. But without proper tooling it’s almost impossible to catch the bug easily.

My learning journey has just began. This list will change with time as my understanding of javascript get better with time.

Thanks for spending your time on this post. Feel free to share your experience with javascript and the bits you don’t like as much.

 

Seen you in next one

Signing off

-Karan

 

Things I ❤️ about JS

Hello World!

Till end of 2016, I never took javascript seriously. I use to think it’s only used for doing form validation and basic DOM manipulation, Then I came across Angular JS and from that point onward my out look towards JS changed forever! My initial expression was like

‘Hmm so Javascript can do more than I thought!’

Since you are here to read about the things I love about JS. I am listing down the program feature which I absolutely love. This is very subjective and your opinion might defer with mine and that’s a good thing!  Here we go 🏃🏼‍♂️(please someone tell me how to reverse this(🏃🏼‍♂️) emoji 😂).

  1. Lose typing:
    1. After spending quite lot of time with python, One of the major similarity which I found between JS and Python was that they both are loosely typed language which means  interpreter dynamically assign the type to variable which is such a blessing if one use it properly.
  2. Less Steep Learning Curve:
    1. Javascript is one of the very few languages which is very easy to learn but very hard to master. This is what makes it very easy for new developer to start with JS pretty quickly!
  3. Isomorphic Javascript: 
    1. Javascript is only language which can be used for client side and server side coding which if you think about it’s pretty neat! Isomorphic app have lot of advantages like faster rendering time and on top of that because you have entire stack in one language context switch between backend and frontend code gets easier.
  4. ES6:
    1. I we should give ES6 a lot of credit to bring lot of stability Javascript language. Frontend development is lot less of a hassle after wide adoption of the standard.
  5. React/Vue:
    1. I have never imagined that jQuery would not be required in future anymore. Infect jQuery is how I learned javascript coding. Existence of frontend framework like react , vue and the entire eco system around is a testimonial itself that how quick JS landscape is changing.

Hmm.. seems like I am running out of point right now. I will be keep on updating  this post as and when I will come across something I love about JS. Thanks for reading, Hope it helps someway 😇

 

Seen you in next one

Signing off

-Karan

Building an Expo APP

Hello World!

If you know JS and React/React Native than this blog is for you, If you don’t no issue here are some great resource to learn.

javascript: JDKJS &  Freecodecamp 

React/React Native: Egghead React Tutorial   

I have started working on fooodie.store app some time back.  You can download it from playstore , It would be completely wrong to say that I have build this app all by myself. Significant part was build by Supi without has Redux wizardry it was impossible to complete this app.

WHY EXPO?

Coming back to topic, We picked up Expo for this task, If you are thinking why expo? it’s a topic for a different blog itself, inshort following are the feature which expo makes so appealing for some one who is starting react native development

  1. Push notification
  2. Expo app for dev
  3. Native file support
  4. Native graphics
  5. Social Auth

There are few more, if you are intrested you may continue reading in expo website

 

HOW TO SETUP EXPO?

Up and running with expo is really simple and fast(make sure you have node installed already!).

you have to install expo cli (npm install expo-cli --global) in your system and expo client app your android/ios phone. once this is done. all you have to do is run following command(expo cli will do the hard work for you):

expo init my-new-project

above command will create new project with all bolierplate in same location where you have ran this command.

and you are done!

 

Fireup your code editor and start fiddling around with app.js file to see changes you can either you xcode iphone emulator(fastest option in my experience) or use Expo client app on your device, Just make you are in same network as your system for faster experience.

 

There are lot more to this, But I don’t remember all the details right now. Hope this helps. I will keep this post updated as and when I get recollect more information about setting up expo.

Seen you in next one

Signing off

-Karan

 

 

How to setup Django server

Hi fellow programers!

Few days back I decided to face my fear 😛 gathered enough courage to setup a website using django+nginx+uwsgi and I was ready to go any extent to finish this task which I have never done.

 

Day1(Yep it took me multiple days 😂 )

My understanding of whole nginx and uwsgi setup was next to none & most of this bit sounds me like some sort of harry potter magic…. Uwsgi sockets, Enabled-sites, Available-sites, static file hosting with django… bla bla bla… yada yada yada…

Starting few steps were relatively easier(and I was already thinking that this must not be HARD).

Installing nginx

sudo apt-get update

sudo apt-get install nginx

Installing uwsgi:

pip install uwsgi

 

After these two steps were done, I thought of starting nginx

 

sudo service nginx start

And BAM!

Nginx welcome page was already there! 😍

 

Things were looking so simple I thought I would go to bed only after setting this up but as every developer know there is always an issue… (stupid mistake, misread or overconfidence to name few) waiting for you when you are on the verge to completing your task on time :p and out of nowhere if jumps on right in middle and bites you… and boy it bites you read hard :joy:

 

For me it was understanding of following flow

( Web Client)<—–>Nginx(Web server)<——->(uwsgi_socket)<————->uwsgi<———->(Dango Application.)

 

This simple looking setup got me real bad.. I thought Hmm… this is easier than I thought 😛 (it was not!)

These are the few tutorial I have been following for setting up django on my aws linux VM

 

https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-14-04

 

If you just want straight  forward tutorial for setting up django above link is a very good resource!

Don’t waste your time reading my blog… but on the other hand if you are enjoying my painful journey.. Keep on reading it’s going to get worst :joy:

 

Most of the tutorial i came across was telling me that it’s simple once you have uwsgi install… you don’t need to do much to see your code running just run regular

 

python manage.py runserver 0.0.0.0:8080

& if that’s works

uwsgi –http :8080 –home /home/user/Env/firstsite –chdir /home/user/firstsite -w firstsite.wsgi

 

But in my case either of them didn’t work as i expected. I was trying to do following setup

the web client <-> uWSGI <-> Django

It cost me another frustrating day to find out this issue was because of AWS setting where TCP connection over port 8000 was not open and the very request which my browser was making was not getting register by the VM.

 

After bit of googling I was able to change settings in AWS so that request over port 8000 is transferred to the VM. I thought that’s it! I got it… but it was only working on running command

python manage.py runsever 0.0.0.0:800

Uwsgi was not serving properly even

 

my setup should just work with nginx as well. 🙂

But i was wrong again….

Took another half day to understand that depending on kind of way you setup uwsgi one might have to add following in uwsgi setting (sitename.ini) file.

plugin=python.

 

And that was it. Everything started up and running as expected (it was actually not). This blog is in fact incomplete it’s been long I have done this setup and I don’t remember much of it now.

I will try to update it as I work on next setup in near future. 🙈

What I have learned from working remote in one year

Around a year back I got an opportunity to work for a london based startup ‘Encyclokidia’, I had quite mixed feeling about the opportunity while i was reading offer letter from Zahir. I was confused, nervous, suspicious and excited!

 

Since it’s been an amazing year(yes, even I can’t believe it!), I thought it is an experience worth sharing with others 🙂

The Beginning!

In Beginning it was almost impossible for me to work from home because it felt like I am working on some hobby project, Having enough self-discipline to work for continuous 8 hrs was HARD!  or should I say impossible… 😛 I found myself watching random videos on youtube (feynman lectures  on physics) for no reason and then work life balanced messed up as I had to work for 10-12 hrs to get the task done. 🙁 This made me sad, unhappy, confused and I started wondering is remote job giving me the benefit I was looking for? I started wondering…

The Realization!

After few days of introspection, I found the biggest problem I had with my remote job was me :joy:(only slack user will understand). I finally understood only way to make it work is by adding self-discipline and organise my work-load.

 

The Change!

I started working on changes I need to bring in my daily schedule, Initailly my routine looked  something like this:-

6:00 wake up

7:00 break fast

8:00 start working

12:00 lunch

1:00 work

4:00 call it a day!

But what actually if looked like

8:00 wake up

10:00 done with breakfast

11:00 start working

2:00 lunch

8:00 call it a day!

I failed! And Failed quite badly :joy:

The Understanding!

After struggling from all kind of issue from self discipline to work life balance. I understood that I have to break the whole problem down into small parts.

  1. I started created TODO list for a day and had a fixed timeline to complete it.
  2. I got some good pair of headset (thanks to http://suprabha.me) and started worked on shorter time period with high focus.
  3. Setting priorities for the day and rewarding myself for completing them helped me a lot.
  4. Cafe like starbucks were places where i used to crash after getting bored working from home( you will surprise by knowing how much you miss crowd after working remote :P)