Get free https without spending a single penny

HTTPS (also called HTTP over TLS, HTTP over SSL and HTTP Secure) is a protocol for secure communication over a computer network which is widely used on the Internet. HTTPS consists of communication over Hypertext Transfer Protocol (HTTP) within a connection encrypted by Transport Layer Security or its predecessor, Secure Sockets Layer. The main motivation for HTTPS is authentication of the visited website and protection of the privacy and integrity of the exchanged data.

https is good for SEO too, but if you are going in a old school way, ssl's are way too costly. Wondering how to get it for free?
Let's Encrypt is to the rescue. Let's encrypt is a certificate authority that launched on April 12, 2016 that provides free X.509 certificates for Transport Layer Security (TLS) encryption via an automated process designed to eliminate the current complex process of manual creation, validation, signing, installation, and renewal of certificates for secure websites.

From there about section
The key principles behind Let’s Encrypt are:

Free: Anyone who owns a domain name can use Let’s Encrypt to obtain a trusted certificate at zero cost.

Automatic: Software running on a web server can interact with Let’s

Read More

Why i hate programming sometimes ?

Needless to say there are many perks for working on a big project like you get to learn lot of new technologies, get to know how to scale a system face many algorithmic challenges and become a better programmer day by day but this all comes at a cost which makes people start hating programming in projects with larger team size. A situation where you are pulling your hairs out trying to fix a bug or optimising things right?

Here are certain things which makes me hate programming sometimes, but this doesn't mean i am leaving it!

[source: xkcd]

Perfection

Writing a code that works flawlessly and without missing a single test case is what we want to achieve but we forget we are humans and humans tend to make mistakes, a perfect code is a myth. Writing a perfect code takes time and the amount of time given by your manager is obviously too less, which makes your frustration level a bit higher when a bug is encountered in first round of testing.

Dependence on others

When you are working on a large project we do have lot of people we need to coordinate with and sometimes even with

Read More

Stairway to Code in Node - I

Many of you have heard about Node.js being used by various companies these days like linkedin, paypal, medium, uber and many more (you can see a list of various companies here).

In these upcoming series of posts I will help you learn basics of this technology, develop an app, using a no-SQL database with it, deploying an app using AWS. To keep up with these posts, you need prior knowledge of basic coding.
Knowledge of javascript is a plus.

For those who are not familiar with javascript, we are gonna
start with a little introduction of javascript in this post.

Firstly I should tell you there is no connection between java and javascript, the two are distinct languages and differ greatly in their design. Javascript is an interpreted language i.e. it doesn't need to be compiled, we can run the script directly into any web browser(like javascript console in chrome). Earlier javascript was used for browsers only, for the front-end purpose along with HTML and CSS. With introduction of Node.js, javascript entered the field of server side development too.

An example of JS used with HTML:

<html>  
   <body>

      <script language="javascript"
Read More

Why programming is fun?


Joy of making things

Writing a code that works and which can do some bunch of stuff has always delighted people. It's like creating new things from scratch and it's you who shape it. This gives you 'God' like feeling in a way that you are the creator and destroyer of the code you are writing, and it's always joy in making new things be it a software or some clay toy.


Making things that are useful for others

The idea that the software you have written will be used by hundred's or thousand's of people around the world is delight in itself.
Creating something that will make life of other people simple and help others makes you feel good for sure, and you can go to a good night sleep(guilt free) thinking that you have done something awesome today which is obviously the best feeling.


Fascination

Puzzle solving has always fascinated people. It's like interlocking lego parts and watching them work together to form complex structures. Programming is also somewhat similar. Writing code snippets that join together to be part of more advanced software is exciting. Challenging your brain to solve real world problems considering all the use

Read More

Some of the technologies you should learn.

This is a follow up post of previous post which explained why you shouldn't be learning only one programming language/technology , if you haven't read that one, please spare some time to read it and then jump to this.

Now let's jump to what technologies should you learn

1. A Low level programming language (C)

C is a statically typed language which means the type of a variable is known at compile time. Coding in C gives you idea how computer is working at low level as it resembles instruction being executed by computer's CPU.
Coding in high level language like JAVA, Ruby or Python doesn't give you idea of what is causing the code to execute and not appreciating the fact why code is slow. Knowing things at low level gives you idea and too many options to optimise it for speed.

2. A Dynamic programming language.

Dynamic programming language, in computer science, is a class of high-level programming languages which, at runtime, execute many common programming behaviour that static programming languages perform during compilation. These behaviours could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system.

I

Read More

Why is it good to be jack of all trades and master of none in Tech industry.

Technology is evolving rapidly and with the rise in number of startups since last decade, there have been tremendous rise in number of programming languages.

When you are learning to program you must carefully choose your tool (the programming language) in which you would want to code your entire life, right? If this article was being written 10 years ago, i would have simply said just go with JAVA and you will have a great career ahead as a software engineer, but this is not the case any more.

In today's world it's better to learn the concepts (Design Patterns, Problem solving techniques) instead of mastering a programming language. Just know the basics.

With rise and fall of startup's these days you cannot stick to just one programming language, as tech industry is going through a transformation phase where everyday next big thing is coming up and if you want to be on same track you need evolve along with technology. Mastering a single language has its own drawback, as you will be bound to conventions of that particular language and your boundaries will be limited.

Taking an example here, suppose you are working on front-end majorly javascript/css/html5

Read More

Ways to boost performance of a web application and decrease its load time

Web applications are growing very rapidly, below is the graph showing the increase in number of web applications since 2000

0. Cache results for mysql statements.

This is one of the major step if you are not having a static website(a bunch of HTML pages). If your main/home/landing pages have any dynamic data, coming directly from a database it's always better to cache the result set of the query so when any other client requests the same page you can serve it from the cache. Although you will be needing some special handling for invalidating the cache when result set updates i.e., at the time of insertions and updations.

This way you can improve the performance and speed of your web application almost by 60%.

P.S - Do not exploit this method, as if you are not handling your cache correctly it might also blow up you web application and decrease performance instead of increasing it. Always cache only what is important, otherwise you may be running out of cache store too soon. Cache memory like memcache automatically deletes older files, but still remember the saying:

With great power come's great responsibilities

1. Avoid too
Read More

Private attribute accessors ( private getters and setters). Do we need them ? (Ruby version)

I tend to use a lot of attribute accessors to my ruby class’s. They basically add getter and setter methods to my class, for example suppose we have a Snake class, with public method grow, shrink & reputation. Where grow would increase the length of snake by a unit, shrink would decrease lenght by a unit & reputation uses length to calculate snake’s reputation. Here the length is an attribute which would be referred as well as updated within the class.Then my class would be as following:

  class Snake

    attr_accessor :length

    def initialize(params)
      self.length = params['length']
    end

    def grow
      self.length += 1
    end

    def shrink
      self.length -=1
    end

    def reputation
      (length)*(1.45)*(...)
    end

  end

When I define attr_accessor :length it would correspondingly generate the following setter & getter methods:

  class Snake

    def length
      @length
    end

    def length=(var)
      @length = var
    end

  end

Now let us see it in action:

  :001 > @length = 20
  => 20
  :002 > self.length = 30
  => 30
  :003 > @length
  => 30
  :004 > length = 20
  => 20
  :005 > @length
  => 30

As you might have noticed I am calling the setter method explicitly

Read More

Some pointers to keep in mind for SEO and Analytics

Online Marketing is becoming one of the most crucial part for any business, after all you want a website that can be seen by millions of users. It's required for kick starting any online application.

Online business firms are investing millions of $$ to get online marketing right but there is always something we miss out and tend to screw up things and had to start all over again. These things can be avoided if we are careful from the start. This happens mostly because analysis/analytics is not done right or SEO guys screws up the website.

Below are certain points that should be kept in mind for getting the analytics and SEO part correctly, with that said online marketing can be targeted thereafter.

1. Treat your front-page not as single page but collection of pages.

Your front-page shouldn't be a single page but you need multiple landing pages for your website. Each landing page should be targeted for particular set of audience or each campaign. We should use noindex, nofollow for search engines as these landing pages tend to change frequently and we will want not to index these pages.

<meta name=”robots” content=”nofollow”>  
<meta
Read More

Different coding styles

We already have too many division in society and here is the division of people based on their coding style, yeah yeah i am being a codist ;)

1_brackets on the right

Egyption Dance

if(condition){  
// Do something
}
2_brackets at bottom

Old school

if(condition)  
{
// Do something
}
3_Normal People

How comparisons are made by a common progammer

if(a==0) {  
 // Do something
}
3_Yoda

This is how Yoda does it !, Do you think this has any advantage, let us know in comments

if(0==a) {  
 // Do something
}
4_ Tabs for indentations

Lazy people!

if(condition) {  
   some_function();
}
5_ Space for indentations

Hardworking people

if(condition) {  
··some_function();
}
6_ Documenting what you are doing

People who go with the philosophy - "The code i am writing is going to be handed to a serial killer, who knows where i live."

  # The function below destroys the everything in universe 
  # For development purpose only
  #
  # Author:: ABC
  # Reviewed by:: XYZ
  # Written on:: 2021-03-11
  #
function destroy_universe() {  
   discover_matter_antimatter_particle();
   create_ray_gun();
   gather_energy_from_sun();
   start_process();
}
7_ What the hell am i doing?

I don't need to write comments, my code is self-explanatory

function destroy_universe() {  
   discover_matter_antimatter_
Read More

Save money on staging servers hosted on AWS

We wanted to reduce the AWS bill, first thing we did was to reduce the number of RDS instances and create different databases in the same instance. Next we could save by moving from on-demand to reserved for ec2-instance, which would at the least reduce 30% of per hour charge. But it made sense to move into reserved instances for production servers, but not for staging servers which were used only for internal testing and development, it did not make much sense because if we check for working hours per week its average say at 10-12 hours for 5 days a weeks, which is effectively about 2.5 to 3 days a week, so we are paying 60% extra for the staging servers. To optimize this we need to build a way to remove these servers when not in use.

AWS gives us an option to stop ec2-instances which are EBS backed and will charge only for the storage, which is minimal. But each time to stop instance we cannot go to the aws console, for which aws provides varias sdks and command line tools, we choose to use aws-ec2-cli. Just by saying ec2-stop-instances <instance-id> --region <region&

Read More

Check if number is a power of 2

The intution for this solution was when i was trying my hands on the Collatz conjecture, which basically is to get the series for a given number(n) by doing n/2 if even and 3n+1 if odd. Its found that the series always stops with the continuos sequence 4-2-1. For example consider the series for 21 would be 21-64-32-16-8-4-2-1-4-2-1.... There is no proof for this but for the largest number they could compute they found that the sequence always ends with 4-2-1. So how is this related to even power of 2, getting there, patience.

Now while thinking about the problem you find that for the series to converge to 4-2-1, odd n should either reach to 4 or 16 or 64 …, why not 8, 32 ? for n to reach 8,32 its predecessor in the series should be 7/3 or 31/3 which is not possible. So we observe that even powers of 2 can be written as 3n+1. This can be proved easily.

consider 2^(2n+2) => 4*(2^2n) => 3(2^2n) + (2^2n) => 3(2^2n) + 3*(2^(2n-2)) +.....+ 4 => 3(2^2n + 2^(2n-2) + ... + 1) + 1 =>

Read More

What are side effects (computing)? Ever wondered about i++ and ++i output when in printfs. I know they suck !

Side Effects to me came into existence when interviewer asked me "What will be the output of printf("%d",i++ + ++i + i++ + ++i ..."

This goes to infinity :'( ) when i=5 and we continuously argued on the concepts, and the result was both of us were not aware of the concept of side effects and sequence point.

Any thing can have a side effect so be careful before using things especially in the world of computer science, We know a function or an expression return something when evaluated, but sometime instead of just returning a value, functions/expressions may modify some value ( global or static variable) like in above question each expression modifies the value of i, instead of just returning something, Now this function is said to have Side Effects and this is bad.

Though Side effects are essential to enable a program to interact with the outside world (people, filesystems, other computers on networks). Yes I know, its something like necessary evil. We will learn below how to use them effectively.

WikiPedia Quoted about side effects

A function or expression is said to have a side effect if, in addition to returning a value, it also modifies some

Read More

What programming languages can get you hired?

The one good thing about IT world is that opportunities never end here, Any day you can plan switching from your current job, just you need is right ingredients to mix it up in your resume. Although I am not promising that the list below will get you hired, as it also depends on you and some of the core skills like Algorithms,data structure, operating system concepts, networking etc etc. that are independent of the programming languages you code.

What is most required in IT world is specialisation in a particular technology, you must have heard the proverb “Jack of all trades, master of none” well this also holds in IT industry too, as they don’t require JACK’S, all they need is a person (Master) who has some sort of specialisation.

Below is the list of Programming Languages/Skills (You do not need to learn all of them) that can get you hired or at least act as added benefit

1. JAVA

Maintaining its position from the start JAVA is one of the most required skill (still) in IT industries and will continue for another decade(at least), seriously you cannot beat this. Already so many of

Read More

Inifinity Dark Conky Theme v2

After great success of Infinity conky version 1.0,that received 35000+ downloads, its my pleasure to release the second version of the Infinity Conky with dark theme.

Download Here

This theme includes some added features namely TODO List, Profile Pic and Good Fonts. Have a look

In order to install the theme follow instructions in Readme.txt

Install monofur font provided in the zip and set background also to get same look and feel. You can also geek around and create something wonderful.
I have also provided the reveng.psd file to customize the background and profile pic.

The above theme was tested on Freshly installed Ubuntu 13.04. You will need compiz for transparency

If you liked the theme or you are facing any issue feel free to comment below, I will be willing to help.

Please note previous comments have been deleted due to domain migration, Sorry for inconvenience!

Read More

Init - Welcome to iCanBeACoder

Welcome to blogs of icanbeacoder.

Inspiration

The name iCanBeACoder, was inspiration from icanbecreative.com(that focuses on website design and many other design related things). I am still learning to code and will surely take a lifetime to master this art, so you may find errors, contradicting ideas in future blog posts, please let us know through comments if you have any thoughts.

The technology is evolving quickly and each day there bunch of things that keep coming in life of coders. The blog focusses on things like Trending News, Life Hacks, Scripts to automate tasks, coding conventions and science stuff that is supercool and many many other awesome stuff about coder's world.

The logo you see actually is #! in webdings font, go ahead search for it, its easy to find.

icanbeacoder.com is not biased, means we do not boast about any particular OS, or technologies, but we recommend Linux over other, as it is highly configurable. At least install it on Virtual Machine. Again It doesn’t matter whatever OS/technology you use, you are going to be a coder soon!

Follow us on facebook and stay connected, Subscribe below to get updated on our weekly posts,

Read More

Inifinity Conky Theme

This is one of the most popular conky theme among linux users, and now its here, revive your desktop with infinity conky theme. you can download theme –

Download Here

Conky Theme

Theme : Infinity

Version : 1.0

Author : Harshit

Dependencies : Conky 1.8.0

Bottom Dock : Avant Window Navigator

Desktop theme : Mint-X-icons

Icon Theme : Mint-X-theme

Installation Instructions

Step 1 : Install Conky

            Ubuntu :   apt-get install conky-all

            Fedora : yum install conky

            see documentation for other distros in order to install conky

Step 2 : Extract the Infinity tar/rar file

Step 3 : change the name of conkyrc to .conkyrc

            change name of lua to .lua

            change name of conky to .conky

Step 4 : Copy these 3 files .conkyrc, .lua and .conky files to your home directory

            cp * ~/

Step 5 : Open .conkyrc and adjust the screen resolution according to your desktop

Step 6 : Also adjust haunted.lua in .lua directory according to screen resolution

Step 7 : I have also given u a file named rev-eng.psd in order to modify the background image of conky so u can adjust it too.

Step 8 : Some scripts for mem,cpu etc have been written separately . you can delete them

Step 9 : Now you are ready to run

Read More