HN user

nareshv

8 karma
Posts1
Comments13
View on HN

If we can find "why" we go to all these apps/websites, then we can find a solution by ourselves by satisfying the "why" with some other one which can improve our skills (or any other desired quality)

For example, if we always check emails just to see how many new-emails we have got, so that we can act on them asap, Its a good case as its going to improve our productivity and time-to-respond lower.

Another example, if we always check fb to see what other people's activities are. Well, we can turn this around and make us the person who is doing lots of personal activities (outside of internet domain) and posting it to facebook (may be weekly), or restrict it to closer pals/family.

Personally, if we interact more with Nature around us, it feels great.

Restrict the use of these "virtual" worlds and try to participate more with the world around us. Instead of posting a message on facebook, may be call your best friends and say hi. Its million times better than seeing 1 like for the post in the virtual world.

When you cannot work with other experience people or participate in open-source projects. Try these things.

1. Take a task and implement it in the most laziest way (like implementing everything in a single code file)

2. Try to make the implementation "look beautiful" (with proper indentation, etc)

3. Try to make the instructions in your code analyze the return codes, check the input parameters to functions, catch exceptions, split them into various files, functions, classes etc by adding more code.

Third step is where you will try to learn more from the programming language that you have chosen. See https://gist.github.com/nareshv/50fa0884d09622792e34 for example

Once you master the step-3, you will always do begin with these things when you start implementing your project.

Source: Personal experience.

1. Start with the basic syntax/cheat-sheet of the language.

2. Read instructions as 'that's what they are' and try to come-up with examples for yourself as why they are like that. (This is a bit creative and examples are only for yourself so that you can remember it)

3. once step-2 is done, its going to make it easier to remember things via your own-made-examples and things will flow smoothly when you see things.

say: http://www.maplesoft.com/support/help/maple/view.aspx?path=s...

1. take 'concatenation'. a || b

2. remember it like you are gluing two things with || thingy. and || thingy can be remembered as a chewing-gum or anything you like

3. next time you see || you remember the object (chewing-gum) and it always leads you to concatenation.

Try it out, it might sound funny. But works..

If your app can run with just the h/w (CPU,Disk,RAM) available @ D-O you can do the migration. AFAIK, D-O does not have EBS like storage, which is essential in case there is lot of data that needs to be stored.

I have couple of sites (pretty low traffic) [nodejs, hhvm] running on D-O with pretty good uptime (> 1 year)

I'd recommend you to jot things down w.r.t what all things you have in terms of CPU, Disk, Memory, Apps, Server Usage over a week/month/year period and then see if the instances @ D-O can help.

Also, plan for future growth of the App, Just in case there is a sudden spike in traffic, there might be sudden need for additional Storage. In such scenario, with D-O you need to buy new servers, with EC2 you can add another disk with ease and can scale on storage.

AFAIK, D-O does not have ELB, so we need to buy instances and run ATS, Nginx, HAproxy, etc to do the load-balancing

say /var/www/html is where the code is served from.

Active symlink is maintained to the proper build which comes from (say hudson/jenkins)

Say the current symlink is /var/www/html -> build.v5

Below commands illustrate the sequence of the deployment via ssh for the next build number 6 (which can even be a no-op build)

tar jcf build.v6.tar.bz2 build.v6

scp build.v6.tar.bz2 prod-server:/var/www/

ssh prod-server 'VER=6; cd /var/www && tar jxf build.v$VER.tar.bz2 && ln -sf html build.v$VER && sudo service httpd reload'

Similar logic is followed with the help of git/etc. Idea is to 'keep versions' of your code. so that if things get messed up you can rollback quickly. Most people don't think of rollback, until it bites them really bad !

Instead of answering what you are looking for, let me try to give some leads.

For few minutes, try to disconnect yourself from facebook, mobile, etc. Grab a coffee or your favorite drink. See what are the things that you wished would've been better. Lemme give some random thoughts.

1. oh, my brother always forgets to buy fruits on friday. may be i should write small webapp which will take list of things to buy and reminds him on friday morning. 2. I love, when my friends playing cricket every weekend. May be we should record all the good pics/scores and record them somewhere, so that it will be a good thing to look at later. 3. I am always running out of money. may be i should record what i am spending on and get a report of it at the end of week/month, so that i can plan my expenditure accordingly.

remember, that every thing that needs to be built, requires few idle minutes to think about the problem, write down the things we want, design(how-it-should-look) it, code(make-it-work) it (Code is always the last and the most exiting thing!)

Hope you got some idea.

Now go have some fun !

This was taught to me in college a decade.

"Programming language is just a syntax, the core logic of getting things done is already available in your brain."

Here is what i'd do

A) Remember what you already learnt from your favorite language

  1] Syntax

  2] Libraries

  3] Reference Documentation

  4] Organizing your code

  5] Building / Running Programs

  6] Deploying code to farms of servers (if you are interested in sysops, explore this as well)
B) Once you get a hang of basic syntax, start with Examples and keep making progress.

C) Pick a simple task, from what you have already solved before. Program it in the new language by expanding your skills towards 2-5 points and you are done !