Summer training students' planet

July 20, 2018

Prajit Mukherjee(thegeekbong)

JavaScript – Not at all Java!

When I first started learning about JavaScript popularly known as JS, as a fact being a newbie I thought it is something to do with Java, that is a programming language but they have their differences. As answered here in Stack Overflow, Java and JavaScript are as similar as Car is similar to Carpet. Yeah, this answer does tickle one’s funny bone. Well, I think this tells you how different both of these programming languages are. Putting the differences will be deviating from the topic(You can always search the internet) but I’ll surely put some features of JS below.

Features:

  • JS is dynamically coded programming language
  • JS is popularly used as a scripting language for web browsers(will surely explain this point)
  • JS is a prototype-based programming language
  • JS uses function-based scoping

Above were some features of JS which makes it such a versatile language. You will find JS today everywhere. It’s quite impossible and difficult to make a webpage without JS. This webpage alone will use many JS scripts to show you an interactive webpage. Hence, JS today is one of the crucial technologies used to make a web application.

In the last paragraph, you must have seen the phrase in bold which tells JS scripts. Any JS file is called a ‘script’ as it is a scripting language and also dynamically coded. A JS script has the power to actually interact with the database also, but not as efficiently as Django, PHP, Java or any other such frameworks and languages. Hence, this proves the versatility of this precious tools.

You must have come across the word dynamically coded language many times now and that must have made you wonder what exactly does that mean. Dynamically – coded languages are the languages which don’t need a variable type to run them, in short, we don’t have to define the type of the variable, the variable type is defined at run-time. Also, a point to be noted that dynamically – coded languages don’t need a compiler and also some of them doesn’t have one. There is no compiler for JavaScript.

Now, tackle the point, if JS does not have a compiler, how does it gets compiled and how do you see its effects on the browser? Well, nowadays each and every modern browser, Internet Explorer too, has a JS engine which runs the JS Scripts associated with the webpage. The engine comes in-built with all the browser today.

As JS is a programming language, it must give some output right? But, where does this output is shown? To your astonishment, it gets displayed on your browser only if at all the programmers logs it. All you have to is tap, Ctrl + Shift + I, if you are using Google Chrome, or you can just right-click and click ‘Inspect Element’/’Inspect’. You’ll find that in on the same webpage, a different partition has opened which somewhat looks like this:

screenshot-4.png

The orientation must be vertical/horizontal, depending on the default option. By default, the Element tab will open, you click on the Console tab, that’s what we are devoted on for now. It would be empty if you have opened on the new tab, but if you have opened on this webpage then surely there would be some text on it. Those can be errors or outputs, depending on the scripts.

We all have at some point of time has seen a dialogue box pop up on while filling a form which says generally “You have some unsaved changes. Are you sure you want to leave this page?”, this is done by the following command

alert("Hello!!!") ;

You’ll find something like below:

screenshot-5-e1532096265144.png

This how an alert is raised.

JS can do many interactive things like it can make a menu dropdown when the mouse hovers on it or it when clicked. Also ever seen the images on FlipkartAmazon IN and many other e-commerce pages? You may have seen the images in a constant slideshow after some interval. Well, this my friend is doing of JS. JS provides pre-defined functions to attain this type of transition. Also, the bullets underneath the picture going black or grey is also doing of JS. The 5-10 line code of the slideshow may be very overwhelming for a beginner, hence, it is better we leave it for now.

JS Frameworks and Libraries

js_frameworks_list

JS has become the most integral part of any good website. Hence, today there are a huge number of frameworks and libraries of JavaScript found online. One who doesn’t know what is a framework is, well to put it in simple words you can say it as an abstraction in which software provides generic functionalities which are selectively changed to perform specific tasks.  And libraries are pre-written non-volatile resources used by computer programs to facilitate specific tasks. Some of the most popular framework and libraries of JavaScript are written below:

  •  AngularJS
    angular_logo
    It is a JS framework maintained by Google. This is an open-source framework and thus, the FLOSS community maintains it. Nowadays, AngularJS is not used and is termed as obsolete though. But still, people use it in many of their projects. AngularJS has their new version as Angular 2 and Angular 2+. There are many versions of Angular and the latest stable version is Angular 6. Angular is very concise, that means, code taking around 10-15 line in JS will take around 5 -7 lines in Angular. You can try Angular by reading their tutorials. (the best way) Or you can directly search for the best tutorial you want to do.
  • ReactJS:
    reactjs-logo
    It is basically a library and is maintained by Facebook and the open-source community. ReactJS is used to build user interfaces and interactive web applications. You can try and read about React more in their documentation.
  • jQuery:
    jquery_logo
    jQuery is by far the fastest way to learn a JS library. It has very easy-to-use pre-defined methods. Hence, to try jQuery you got to know the basics of AJAX. The documentation is quite daunting, so, my preference will be this great life-saver by W3Schools. But if you want to go for the documentation, please be my guest.
  • VueJS:
    vuejs-logo
    Vue 
    is known as the framework which can be incrementally adoptable, by this it means that any application which uses other frameworks of JS is simplified by Vue. Vue is again an open-source framework and can be used by anyone. It was built to organise and make web development easy. Nowadays, Vue is very widely used and why not? It makes development easy and fast. Again, want to try Vue, go to the documentation at once!

There are many, many and many frameworks and libraries like these of JS. But, to be concise and small I just added these four very popular frameworks and libraries. It is totally on your own conscience what you want to try and work upon.

Conclusion

JavaScript is one of the best programming language at present. Core JS has many aspects which can take a lot of time to try and study upon. But, as they say if your studying about something, study it with utmost sincerity. So, it’s on you to go digging deeper.
To work upon all these frameworks and libraries, first you have to know JavaScript in its deepest depths. Hence, start trying JavaScript. My own preference to learn JS will be from W3Schools and the book Eloquent JavaScript by Marijn Haverbeke. They have the best resources and also you can anytime refer to it. Also Codecademy course of JavaScript with many other web development course I have found are very good. The completetion of the course rest purely on your will.

Please feel free to refer other online resources for JavaScript.

Till then this “thegeekbong” signing off.
Thank you for reading this blog and also please share if you like it.
May you have a blessed day ahead.

by thegeekbong at July 20, 2018 08:48 PM

July 19, 2018

Abdul Raheem (ABD)

One Month Later At Dgplug :)!

Hello World!

The Topic Itself  Says That It’s Now One Month At Dgplug And We Have Learned Communication Skills, How To Be Patient And Many More. For Some Days Our Mentors Took Sessions Just On Communication Skills And Others Basic Things And Then We Had A Intro On Shell Script. So What Is It?  -A Shell Script is a computer program designed to be run by the Unix shell, a command-line interpreter. Then We Were Introduced To A Book Which Was Know As Linux Command For You And Me LYM. Then We Had Sessions For This Particular Book And By This Book, I Came To Know More About Command Line.

Then We Had Some More Sessions On It So That Everybody Doubts Get Clear From LYM book. Then We Had A Guest Session On Programming By ntoll(I Didn’t Remember His Name It’s His IRC nickname) And We Had Session On Privacy And Security And Were Suggested To Use Tor Browser And Then We Had A Git Session By Sayan And Now Everyone Is Requesting For More Git Sessions I Hope We Will Have Them.

Moving On To The Next We Had A Session On Vim Editor And Am Pretty Much Liking it And I Have Used It To Solve Sum Basic Math Problems And Now Am Enjoying This Training / SummerTraining. And There Come The Most Interesting And Most Awaited Part Of  The Training Which Is Introduction To Python:), I Don’t Know How Many Weeks Or Months We Will Have the Sessions But Will Try To Grasp As much Information As I Can, So What We Had In Python Session? – First We Created An Account With Microsoft Azure And With That, I Got Access To Jupyter NoteBook And There We Did Some Simple Calculations And Kushal Took Some Doubts And The Time Was Up And We Ended Up With That And Got Homework, Yes You Read That Correctly HomeWork, We Were Introduced To A New Book Called PYM Book And We Ended Up There.

The Next Day We Had A Session On Time-Management And Operation Blue Moon From Shakti Kannan (Mbuf), Links Will Be Provided At Last. Every time When I Try To Do New Thing Like BLogging, Time-Management, Etc…, I Used To Get Discouraged And Left That Thing / Time Going As usual Like How I Was Before Joining To Dgplug, But Then Again Got Motivated From One Of Our Mentor And Things Went Good From Then And Now I Never Get Discouraged And The Way our Mentors Explains With Such Good Examples Like Ice-cream And All, All Our Mentors Are Polite And Kind Hearted And Never Have Been Rude To Us And Never Let Us Felt Like Frustrated Or In Anger :). And Now I Must Say Am Not The One Who I Was Before Joining To Dgplug, Now Am Feeling Much Better And Thank You All At Dgplug For Conducting Such Good Sessions, I will Mention The Mentor’s Names Which I Remember From Dgplug At Last. Am very Much Excited To Learn Many Good And Useful Things From This Training :).

So As I Said Here Are The Links:-

Time-Management

Blue Moon

Our Heroes In Dgplug Are:-

Kushal Das

Jasonbraganza

Sayan And More …

So By This, I will End This Blog And Hope To You See You Again In My Next Blog Till Then Happy Learning :).

by abdulraheemme at July 19, 2018 07:10 PM

Manank Patni

Day 18

Took up another issue to work on on coala project. Have done 90% of the work it needed, now just waiting for the maintainer to reply to some questions to finalise it. Will probably submit a PR till tomorrow.

Also didn’t felt like doing anything at night so watched some videos from a a channel. I like these kinds of infographics videos.

by manankpatni at July 19, 2018 06:15 PM

July 18, 2018

Mayank Singhal (storymode7)

Using Markdown

Hey there! A long time ago I shared my markdown experience in PyCon India 2017. What I missed was a gentle introduction to markdown. Let’s get on with it.

Markdown is amazingly simple and I write my blogs using markdown. Credits go to many folks but the one I remember always is Aaron Swartz. Yup, The Internet’s Own BoyHere is a list of people involved in markdown. Before starting with this post, I went to the website again to see if I find something new, and it was like a book that you read once and when you read it again you are amazed at what all it had!

Headings

Headings are created using a # symbol. The number of # symbols define the heading level. Like,

### Heading

This is the notation I used for the heading of this section.

Emphasis

To emphasize text you can wrap the content with * or a _. Like this text is emphasized. Strong tag generally makes text bold. It can be used by wrapping the word with ** or __. For example: This is strong text.

Code

This is the loveliest part about markdown. It not only makes the raw content easy to write but also beautiful! To write code you just need to indent it with a tab or 4 spaces (or more). Using this markdown also escapes the < and & like symbols which would otherwise ruin the writing experience.

This is some text written after indenting with a tab.
And hence treated as a code block.

For code used in the paragraph itself like this is also simple. It just uses backticks (`) to select the area that contains the code. To type backticks as a code like I did above you need to use double backticks (“) around the single backtick.

Hyperlinking text

Another easy task if you’re using markdown! Just write the text to be hyperlinked in square brackets, immediately followed by the link in parenthesis. This link is written like:

[This link](https://www.duckduckgo.com “Optional Title goes here”)

This “Optional Title goes here” part is the text which appears when you hover your mouse over the hyperlinked text. Another part that I came across when I read about the markdown again was reference-style links. I absolutely forgot about them and they just made my life easier!
You can reference a link using the syntax [link text][reference] which can also include a space by the way. And then later on anywhere in the text, you can use

[reference]: https://yourlink “optional title goes here”

If you feel too lazy to give the [reference] part, you can just give blank square brackets like [], in which case it would create a reference with the name of reference text. For example:

[ddg] []

[ddg]: https://www.duckduckgo.com

Now whenever I want to create a hyperlink, I just create reference-style links and then add a blank reference at the end of the paragraph. When I complete the blog, I can just fill these instead of jumping repeatedly in between to fetch the links.

Another really useful feature is automatic links. If you just type your link and want it to be clickable. That means, a link directing to a link. To clear out the confusion, let us see another example:

<https://www.duckduckgo.com>

This would appear as https://www.duckduckgo.com. More magical is the email address part. If you specify an email address using this method, the email address is encoded so that spambots can’t harvest it from the source of the page! Here is an example email address: example@nosuchemail.com

Lists

To create an unordered list use * or + or even - to denote items. An example would look like:

* Item 1
* Item 2
* Another item!

And after processing it’ll turn to:

  • Item 1
  • Item 2
  • Another item!

An ordered list is also easy to write.

1. Item 1
2. Item 2

Important thing is that the numbering doesn’t matter. Shocked? The number followed by . pattern just shows that this is an ordered list. You can even type random numbers or can have all the numbers exactly the same. Though it is suggested to use 1. as starting number due to a possible change to support starting of lists from a random number.

This means that:

1. Item 1
1. Another item

is perfectly fine for an ordered list. And it’d appear like:

  1. Item 1
  2. Another item

Note: If you want to write a number followed by a dot and don’t mean it to be a list, you can escape the dot by using a \. For example 123. is written as 123\.

Horizontal Rule

As simple as writing *** will create a horizontal rule(a simple line denoted by <hr/> tag). Any of * or - and even _ can be used. Spaces are also allowed between them. (The number of such characters has to be three or more)

--------

Will create:


Images

To use images, the syntax is exactly similar to hyperlinking text with just one exclamation mark preceding it.

![Alt text](https://some/path/to/the/image.jpg)

If you’ve not come across Alt text yet, it’s the text that is displayed in case image can’t be displayed.

I’ve also used markdown for writing this post and it has been a really pleasant experience.

 

Just write anything, even short content would do to see how amazing is markdown 🙂 (You may find https://daringfireball.net/projects/markdown/dingus helpful)

storymode7

by storymode7 at July 18, 2018 09:00 PM

Manank Patni

Day 17

Today’s Summary :-

  • Worked on the GSSOC issue on B.E.N.J.I. project and was successful. Then PR got merged after some of my utterly silly mistakes.
  • Also the PR on the coala/corobo project also finally got merged. Took a lot of time in comparison to what a small changes should have taken.
  • Also attended the #dgplug training. Today’s session by mbuf was on time management(which is my weakest department) will be following some of the methods he gave.

References:-

  1. https://github.com/coala/corobo/pull/582
  2. https://github.com/the-ethan-hunt/B.E.N.J.I./pull/132

by manankpatni at July 18, 2018 06:29 PM

Sehenaz Parvin

Day 31 ( Taking first footsteps in python programming).

Finally completed a month in summer training. Completed all the basic Linux commands . Now finally its time to set a new collage with basic ideas. Time to learn python programming!

Python is an interpreted high level programming language. It was created by Guido van Rossum and was first released in 1991. It provides construct that enable clear programming both in small and large scale.

So , now we know an introduction about python. Let’s start with the installation .

Installing Python:

We will Install Python 3 , the latest version of the language.

For Fedora users:
[user@host]$ sudo yum install python3

For Debian/ Ubuntu users:

[user@host]$ sudo apt-get install python3

After installing Python we will just type python3 and our terminal will show this:

>>>

Then we can type commands here to get a desired output.

Let us take one example: Type the following in the terminal.

>>> print(“hello world!”)

We will get the following output:

hello world.

Now we will get hold of Microsoft Azure notebook for writing commands and practising. We can also use the terminal also for this purpose.

Opening and creating an account in Microsoft Azure Notebook:

Firstly open this site with the following link:

https://notebooks.azure.com/

We will get the following screen:

There in the right corner of the screen we are going to get an option ” sign in”. We will click on that and we will get the following dialogue box :

If you already have an account you will log in through that. Otherwise click on “create one”.

Then give your email address and create a strong password. Our account will be created.

We will get the following screen. Mine one has already a created one. So no worries about that.

Now look at the following steps very clearly:

  1. Click on +New Library option. We will get the following dialogue box:

  1. Give your library a name. for eg: dgplug. and add your library id like your first name.Then click on create option. Our library will be created.

  1. Click on the library you have created. Then click on the +new option. We will get a dialogue box like this:

Add an item name for eg: summer training. Then select the item type as Python 3.6 notebook. Then click on New option.

  1. Then click on the created item. We will get the following screen:

It will be blank actually with one box available. I have given this picture with examples also.

Now you can try the examples to get the result as given in the screen.

Isn’t it interesting ? First get habituated with basic commands then slowly proceed into it.

So , I hope I could help you to create an account on Microsoft Azure Notebook . If not please tell your feedback to me so that I can improve more on it. Happy programming!

by potters6 at July 18, 2018 04:26 PM

July 17, 2018

Manank Patni

Day 16

Took up a new issue to work on under GirlScriptSOC and am currently working on it. Also from today the python classes have started in the #dgplug summer training. The training will be held on an online Jupyter Notebooks by Azure. Also tge PYM book was shared to learn Python. Looking forward to having a great learning experience.

References:-

  1. https://github.com/the-ethan-hunt/B.E.N.J.I./issues/129

by manankpatni at July 17, 2018 06:25 PM

Janifa M(bismi)

DGPLUG – Day 23

Started learning Python :).  Yesterday two of my friends, Anusha K.(anusha_1997) and Nimisha C. P.(nimisha_1997) joined dgplug and today, we attended the class together. Really enjoyed learning together.

by janifanowfal at July 17, 2018 05:52 PM

Ashish Kumar Mishra (ash_mishra)

Static pages with Gatsby

Gatsby is a JavaScript framework used for generating static HTML from React components. The thing is, while React is used to build a client-side application it generates JSX and not HTML, and so it’s a little difficult for the web crawlers to crawl through a react page.

This is a problem if you are building static websites such as a landing page for your project/product or a blog page, etc.

Gatsby generates static HTML from your React app and when you deploy it, it’s easier for the web crawler to go through the contents of your page and bring up your page in google or a duck duck go search results.

With all this in mind, let’s get started.

Installation

To start with, you will have to install the gatsby-cli. So fire up a terminal and type:

npm install --g gatsby-cli

Create a project using Gatsby

In the terminal type the following command:

gatsby new  https://github.com/gatsbyjs/gatsby-starter-hello-world

Fill the brackets with the name of your project.

Run

To run the application just type

gatsby develop

in your terminal, open your browser and go to localhost:8000 and tadaa… There’s your first Hello World application using Gatsby.

Next steps

If you are familiar with React, you can edit the tag in index.js and see the changes in your browser and play around with it a little.

GraphQL

There are many options for loading data into React components. One of the most popular and powerful of these is a technology called GraphQL. GraphQL is a query language that was invented at Facebook to help product engineers pull needed data into components. GraphQL is a query language. You use a special syntax, to describe the data you want in your component and then that data is returned to you. Gatsby uses GraphQL to enable components to declare the data they need.

You have to create a config file named gatsby-config.js in the root directory and type:

module.exports = {
  siteMetadata: {
    title: `Your title here`,
  }
};

Restart the server and go to http://localhost:8000/___graphql which is an interface to check your graphql queries.
You can type this query here to see your site title.

{
    site {
      siteMetadata {
        title
      }
    }
  }

In your index.js, to get the website title, you can do,

import React from "react";

export default ({ data }) =>
{data.site.siteMetadata.title}
export const query = graphql `query LayoutQuery { site { siteMetadata { title } } }`

You can see more here https://www.gatsbyjs.org/tutorial/part-four/

HTML page from JSON data

Now to get data from a JSON file, you can install a plugin named gatsby-transformer-json. You can find the installation instructions at https://www.gatsbyjs.org/packages/gatsby-transformer-json/

The gatsby-config.js file should look something like this:

module.exports = {
    plugins: [
      `gatsby-transformer-json`,
      {
        resolve: `gatsby-source-filesystem`,
        options: {
          path: `./src/data/`,
        },
      },
    ],
  };  

Here, we specify the path as being ./src/data/, so the json file must reside in the data directory inside src.

The important thing to note here is that the JSON file can be of two types: it could either be an array of objects, in which each object has the same key, or it could be a single object having a key and a value.

The value must always be a string for gatsby-transform-json to read it.
If your JSON file name is letters.json and has keys named “value” You can query the data at localhost:8000/___graphql like so:

{
  allLettersJson {
    edges {
      node {
        value
      }
    }
  }
}

This query now runs in your React component to get the JSON data, and you can use it according to your needs.

I had a JSON file, having values as strings in markdown format and I created a whole static page using just this.

If you need help, the Gatsby guide’s over here: https://www.gatsbyjs.org/tutorial/

Try it. Gatsby is fun.

by Ashish Kumar Mishra at July 17, 2018 05:38 PM

Prashant Sharma (gutsytechster)

Hamara Sugam release Party

Hey everyone! I was waiting for this weekend so as to attend the release party of Hamara Sugam 2.0 (Namaste), a linux distribution. I get to know about this from the meetup page of ILUG-D and LinuxChix India. I was following their events for last few months and came across this. The name of the distribution itself is so fascinating and different that I was eager to know more about it. I was excited to know about it from the actual founder and main contributors of the project.

The Beginning

I reached the event on time. There were few people at the time but soon, the room was full. According to the schedule,  our first session was to be taken by Vikas Tara, the founder of Hamara Linux, remotely from UK. We all were excited to listen to him. Initially, there were some technical problems but soon they(organisers) managed to solve it. He was thrilled to see so many people. He started with his small experience on how did he come up with this project idea. So, the story is like this

Once, he went to a shop to buy a laptop(specifically Macbook). But, when the shopkeeper showed him the machine(laptop), Vikas said that he only want the machine and not software. The shopkeeper was amazed and  said “You must be one of those linux guys”(lol).

Well, the shopkeeper understood very well. He is a linux guy, just like us. Vikas felt that even if he buys the machine, he would be restricted to use it in a pre-defined manner. So he thought of building something which belongs to us and came up with the “Hamara Linux” project. The name shows his intentions very clearly. To the people who might not know, “Hamara” is a hindi word which means that something belongs to us. So, he gathered all open-source enthusiasts and begins with the project which has now brought up its 2.0 release. Amazing, isn’t it?

Soon, as he completed with the small conversation, we all bid him goodbye and continued with the follow up sessions. The next session was a presentation by Shivani Bhardwaj on the features of Hamara Sugam desktop. Some of the features she shared:

  • The Hamara Sugam release uses the Calamares installer. They have tried with other installers also like Ubiquity(default installer of Ubuntu), Debian Installer, but at last they come up with this distribution-independent installer.
  • It uses Material theme for Hamara Sugam desktop and Paper theme for the icons.
  • They have used Generic names for the applications
  • They used the updated linux kernel 4.16 in their new release.

In the end she shared wikis links for references. You can find it here.

The next talk led by Raju Dev, who has worked on the integration of Calamares installer specifically. He shared the repositories which contains the source code. You can find them here. He explained how he experimented with other installers, however he got the success with the Calamares installer only. I was new to these things so it fascinated me a lot.

As soon as it ends, we had a lunch and networking break. We enjoyed the lunch break and meet with other people out there. People there were discussing about the web series “Sacred Games”(duh! everyone knew about it except me).

After the lunch break, Manas Kashyap took the stage, who has contributed to the Hamara Docker Containers. He explained that earlier he has contributed to Debian packaging and then he started with building Docker containers for Hamara. He also shared that it still needs the improvement as its size is large. He asked the interested contributors to take up the task and contribute to the project. As soon as he finished his talk, Sagar came up with another small discussion on to bring more GTK based applications and plans for upcoming GNOME based Hamara Svastik release. If you are new to the terms like GTK and GNOME(just like me!), there is a small explanation over here. In the end, Shivani and Raju talked about the upcoming plans of Hamara Linux project.

Yay! Cake Cutting Ceremony

Well, the most awaited part of any release party would be cake cutting, though everyone thinks to eat only (lol). After the cake cutting, it was distributed among all enthusiasts over there.

cake-hamara

WhatsApp Image 2018-07-17 at 1.21.58 PM

When we’re all done with filling our tummy, there held a small quiz-round. So, the rules were simple. A question would be asked and whoever raises the hand first would get a chance to answer the question. If the person gives the right answer, s/he would win a Hamara T-shirts(great prize, huh!). Though, I got a chance to answer one of the small question, I wasn’t right exactly. So, I missed it. But it was fun seeing people taking an active participation.

On the final note, everyone took a group photo and then we all left. We were given a small gift. Finally, I got something(just kidding).

hamara-group-photot

Can you find me in the picture? Well, maybe yes or no,  but I am there. Let me know if you get it where I am in the comments below. It was an amazing experience. I feel so happy to share it with you all. What do you think about this new distribution? Let me know this also in the comments.

For now bidding you goodbye!

Be curious and keep learning.

Advertisements

by gutsytechster at July 17, 2018 11:27 AM

Abdul Raheem (ABD)

John Perry Barlow

Hello World!

Sorry For This Late Blog Because I Got Busy With My College However Here Is My Blog :), So Who Is John Perry Barlow?

John Perry Barlow Is The Co-Founder Of EFF, You Can Go Through His Site Here.

In One Of Our Session, Kushal Said Us To Go Through This And Then To Go Through The Keynote Of Pycon 2014 Here Is The Link I Have Completed The Half Part Of This However I Will Probably Finish It Soon And Then Complete The Keynote Aswell. I Got To Know About It By One Of Our Mate On Dgplug IRC Chat.

by abdulraheemme at July 17, 2018 11:26 AM

Fun Begins Today!

Hello World!

Yesterday We Had A Session And Kushal Said Us To Go Through The Vim(It Is An Editor) Logs (Will Provide The Link Below For That Sessions ),  And Said That We Will Start Python Programming From Today, Feeling Good about it ;). Kushal Gave Us A Resource To Go Through Which Is Introduction To Python. I Completed Some Basics Of Python In Dataquest.io.

Python Is An Experiment In How Much Freedom Programmers Need. Too Much Freedom And Nobody Can Read Another’s Code; Too Little And Expressiveness Is Endangered.

– Guido Van Rossum –

images1

Resources For Vim :

1st Class

2nd Class

4th July 2018 Session

5th July 2018 Session

 

by abdulraheemme at July 17, 2018 10:32 AM

Piyush Aggarwal (brute4s99)

My testimony about Blockchain

from Genesis block to blockchain and everything in between!

Blockchain is a vast, global distributed ledger or database running on millions of devices and open to anyone, where not just information but anything of value — money, but also titles, deeds, identities, even votes — can be moved, stored and managed securely and privately. Trust is established through mass collaboration and clever code rather than by powerful intermediaries like governments and banks.

Wikinomics

So I’ve been reading all about blockchains (even those 12 point font research papers!). This is a rough gist of what I learnt:-

A distributed ledger

Wikipedia explains thus –

“A distributed ledger is a consensus of replicated, shared, and synchronised digital data geographically spread across multiple sites, countries, or institutions. There is no central administrator or centralised data storage.”

This seems too much condensed. Let me break it down for you.

  1. There is no central authority.
  2. Every transaction here occurs in front of an array of guards that maintain order and make sure the transactions are completed in full by both parties.
  3. These guards are just some computers that have volunteered to become a ‘node’. Only these nodes can validate the transactions of every user on a blockchain.

Before we go any further, I need to tell you what a transaction means in this context.

A transaction occurs when there is an exchange of data between any two parties. It need not be money only. It can be any data, you can even make a deal involving official papers of properties through some blockchain implementing platform!

And if this sounds scary, don’t worry; no-one, not even those nodes (the ones which supervise the transactions) know what exactly you exchanged! Kudos to privacy! And that’s not even half of it! I’ll explain more later.

Consider the conventional case of a bank (a conventional central authority).

NOTE : We are using ‘bank’ as an example just because it comprises a good amount of ‘transactions’. Always remember that these ‘transactions’ can be of data or goods too!

So here, in a bank, all the transactions occurring between accounts would be verified by a single, central authority, and all your possessions currently with the bank would be at the mercy of the whims of the bank, the single point of security in the transaction. If, by any chance, the bank burns down (physical damage to central authority) or gets robbed (or hacked), or seizes your account (unethically or otherwise) , there would be consequences, the likes of which you most probably won’t be comfortable with.

Enter blockchain with the power of consensus based distributed ledger! If we consider the case of bitcoin blockchain, there are about 7000 nodes in the network that all work for the security of all those precious bitcoins that keep soaring and falling by the minute. For bitcoin to fail, all these 7000 points of security would have to be attacked at the same time, or at-least half of them. Not only that, with the sky-high pricing of these virtual currencies, more and more people are opting in to become nodes, which adds to security of the users(traders) making transactions over bitcoin blockchain. So that’s security for you and the ‘things’ you love! If you wish to know more about blockchain that deals with data, check out ethereum. Ethereum is an open-source, public, blockchain-based distributed computing platform and operating system featuring smart contract functionality.

Block

A block is the ‘current’ part of a blockchain, which records some or all of the recent transactions. Once completed, a block goes into the blockchain as a permanent database. Each time a block gets completed, a new one is generated. There are countless such blocks in the blockchain, connected to each other (like links in a chain) in proper linear, chronological order. Every block contains a hash of the previous block. The blockchain has complete information about different user addresses and their balances right from the genesis block to the most recently completed block. Every node on the blockchain has a copy of the ledger with themselves, that gets synced after creation of a new block.

The ‘what’ block ?

Every blockchain has to start somewhere, so there’s what’s called a genesis block at the beginning. This is the first block, and there, at the beginning, the creators of Ethereum (or any other cryptocurrency) were at liberty to say “To start, the following accounts all have X units of my cryptocurrency.” Any transfer of data on the blockchain will have originated from one of these initial accounts (or from mining).

The blockchain was designed so these transactions are immutable, meaning they cannot be deleted. The blocks are added through cryptography (more, later), ensuring that they remain meddle-proof: The data can be distributed, but not copied (a node never knows exactly what’s in these transactions). You can always see a block yourself by using a Blockchain Explorer.

Privacy – how?

The blockchain isn’t just a bunch of computers watching that A sent something to B in return for some data; it’s so much more than that! On-chain transactions refer to those cryptocurrency transactions which occur on the blockchain – that is, on the records of the blockchain – and remain dependent on the state of the blockchain for their validity. All such on-chain transactions occur and are considered to be valid only when the blockchain is modified to reflect these transactions on the public ledger records.

What the crypto?!

So how does cryptography exactly fit in with this blockchain? It’s simple- the nodes lock the data with a  256 bit number (Hash Sum) that represents the data within a block. A different blockchain may use a different hash function, but the basic idea of its integration in the blockchain remains the same (more or less).

Hashing Functions

File:Hash function.svg - Wikibooks, open books for an open worldA basic idea of any hash function. <source>

If you look closely, you’ll notice even a slight change (even just 1 bit) in the data would create a different hash sum altogether. There is simply no pattern at all!

So here comes the answer to a question that might’ve struck you-

Why would anyone waste her/his own electricity and compute power to validate my transactions? Social service? Repentance out of guilt?

It’s MONEY!

There are nodes, there are traders, then there are MINERS.

Miners are a subset of nodes as all miners must be running a full node (ie they must have complete ledger with themselves) in order to mine (at least to mine properly). The nodes are what determine consensus as all nodes must agree to the same rules otherwise the nodes will fork off of the network.

They’ll what ?

They’ll fork off of the network.

A byproduct of distributed consensus, forks happen anytime two miners find a block at nearly the same time. The ambiguity is resolved when subsequent blocks are added to one, making it the longest chain, while the other block gets “orphaned” (or abandoned) by the network.

But forks also can be willingly introduced to the network. This occurs when developers seek to change the rules the software uses to decide whether a transaction is valid or not. Forks can be classified into two- hard and soft forks; both have different implications for the network and ecosystem.

Hard forks are a permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.

Soft forks are a temporary divergence in the block chain caused by non-upgraded nodes not following new consensus rules

Miners can add blocks to the blockchain so long as every other node on the network agrees that their block fits the consensus rules and accepts it.

The Block Header

So what do these miners do exactly? They hash the block header. It is 80 bytes of data that will ultimately be hashed.

The header contains this info:

Name Byte Size Description
Version 4 Block version number
Previous Hash 32 This is the previous block header
Merkle Root 32 The hash based on all of the transactions in the block
Time 4 Current time stamp as seconds (unix format)
Bits 4 Target value in compact form
Nonce 4 User adjusted value starting from 0

 

Screenshot_20180717_080410A snap of the latest block at Bitcoin blockchain at the time of writing.

How would the consensus deem a mined block as accepted?

See the Bits part ? It is the Integer (Base 10) representation of the target that is to be achieved by the miners. The target is the 256 bit hash sum of the block header. It is the MAXIMUM value acceptable by the consensus for the hash.

MAXIMUM value?

I thought you’d never ask! See the nonce part in the block header? Yup, miners need to start all the way from 0 (some may try to skip values, completely up to miner) to the number that when used in the block header, yields a hash sum below the target. See the nonce in the latest block image? The miner who successfully relayed this value to the nodes received the price money ie 12.5 BTC! That’s a lot of work and indeed a lot of bucks!

People buy special hardware (recent scarcity of GPUs? Curse those miners) and even computers specially built for this purpose! Ever heard of ASICs?

As it stands, mining on your won, on your single PC is almost dead. The process of finding blocks is now so crowded and the difficulty of finding a block so high that it would take over an year to generate any coins on an average high-end gaming system. While you could simply set a machine aside and have it run the algorithms endlessly, the energy cost and equipment degradation and breakdown will eventually cost more than the actual bitcoins are worth.

Pooled mining, however, is far more lucrative. Using a service  you can split the work among a ground of people. Using this equation:

(12.5 BTC + block fees – 2% fee) * (shares found by user’s workers) / (total shares in current round)

Putting it simply, it is basically how the system works. You work for shares in a block and when complete you get a percentage of the block reward based on the number of workers alongside you. More the people in pool, higher the chances of rewards.

Types of Blockchains in use

Any blockchain can be classified into any one of these categories-

Public Blockchain

The most basic of all blockchain concepts. This is the blockchain everyone uses out there.

The most basic features of this bockchain are –

  1. Anyone can run a BTC/LTC full node and start mining.
  2. Anyone can make transactions on the BTC/LTC chain.
  3. Anyone can review/audit the blockchain in a Blockchain explorer.

Example: BitcoinLitecoin etc.

Private Blockchain

Private blockchain as its name suggests is a private property of an individual or an organization. Unlike public blockchain, here there is actually someone in charge who looks after important things such as read/write or whom to selectively give access to read or vice versa. Here the consensus is achieved on the whims of the central authority who can give mining rights to anyone or not at all!

Example: Bankchain

Consortium Blockchain

This type of blockchain tries to remove the sole autonomy which gets vested in just one entity by using private blockchains.

So here you have multiple authorities instead of just one. Basically, you have a group of companies or representative individuals coming together and making decisions for the benefit of the whole network. Such groups are also called consortiums or a federation; ergo the name consortium or federated blockchain.

For example, let’s suppose you have a consortium of world’s top 20 financial institutes out of which you could decide that if a transaction or block is voted/verified by more than 15 institutions, only then does it get added to the blockchain.

Example: r3EWF

In fact, the idea that cryptographic keys and shared ledgers can incentivize users to secure and formalize digital relationships has imaginations running wild. Everyone from governments to IT firms to banks is seeking to build this transaction layer.

Authentication and authorization, vital to digital transactions, are established as a result of the configuration of blockchain technology. The idea can be applied to any need for a trustworthy system of record.

by brute4s99 at July 17, 2018 05:47 AM

Mohit Bansal (philomath)

One year anniversary with Pydelhi!

8th july 2017 is the day when I attended my very first meetup of pydelhi or any in general. Thanks to #dgplug folks and @curiouslearner. And now a year later, we had another pydelhi meetup on the exact date which marks my one year annniversary with delhi open source community. This post is going to be lengthy, so grab your popcorn! So, let's start with the details and experience of this

by Abstract Learner (noreply@blogger.com) at July 17, 2018 05:15 AM

Bhavesh Gupta (BhaveshSGupta)

Javascript uses utf16 and Html utf8, then how things work together?

This was part of one the discussion of dgplug discussion, that javascript uses utf-16 and html we usually use utf-8 as character encoding then how things work out. This was quite intresting on how things work around because of this. So I was reading around to find answers for the above question and I landed upon this. And this text from the answer in the link helps understand how things work.

July 17, 2018 12:15 AM

July 16, 2018

Bhavesh Gupta (BhaveshSGupta)

Update 17 Jul 18

This update post was actually created on 10th july, But as ususal due to some x reason it is not yet complete. There are several things which are running into my life right now out of them on is to update this blog on regular bases to get align with things. Pending Posts This blog came to life again due to dgplug summer training where we were taught to write blog post about things you are doing or learning(PS: I am yet to read logs to that class :p).

July 16, 2018 11:33 PM

dgplug Start 2

So Last year in some Facebook group or somewhere I read about summer training offered by dgplug on IRC chat. I had heard about IRC chat before and had tried to use it once or twice but never tried to use it or understand it. Technically summer trainings are usually for college students but during my college time I was too busy being in and around Microsoft Student Partner that I didn’t knew about many things around.

July 16, 2018 10:30 PM

Mohit Bansal (philomath)

Aman Verma (nightwarriorxxx)

Day 4 #Coding Streak

“An essential part of creativity is not being afraid to fail.”
– Edwin H. Land

Open Source!!, Coolest thing I have ever heard. My urge to contribute in Open Source is become more and more day by day. So, I found a project called random-words in Python and started looking for good first bugs. I solved it but when it came to pull request I faced problem with Travis CI. At that time I don’t know what do I do with it then I asked the project mentor about it. He tried to help me and make me understand but I was completely blank. I researched about it on internet but I didn’t get anything. So i failed to send my first PR to an Open Source Project but anyways I will try it again with more confidence.

Coming to Python I just completed beginner tutorials course from datacamp.
It not only help me with variable,strings,list,function but I also learned about numpy library. Side by side I am going through Python For You and Me,a book full of resources. I recommend everyone who want to start with Python just have a look at it, you will automatically get to know it’s conceptual power. Looking more forward to contribute to Open Source Projects and to become I good coder as it’s my second year now I will be going to attend lots of meetups specially PyDelhi-devsprints and Pycon 2018. Some more things I need to tell you but I will wait for my next blog. Till then stay tuned!!!

Happy Hacking

by nightwarriorxxx at July 16, 2018 07:02 PM

Janifa M(bismi)

DGPLUG – Day 22

Kushal told that we will start learning Python tomorrow, happy about it 🙂 . I was reading this (Introduction to Python) which is shared in today’s session and wondering how simple Python is, when I saw this 4 line code to print initial sub-sequence of Fibonacci series.

a, b = 0, 1
while b < 10:
    print(b)
    a, b = b, a+b

by janifanowfal at July 16, 2018 04:58 PM

Shiva Saxena (shiva)

John Perry Barlow – A rhyme in Cyberspace

Howdy readers! While going through dgplug summer training, I am getting to know about people who have not only enhanced and simplified the availability of information over the internet, but also about people who have brought the goodness in cyberspace, revealed the secrets behind the internet and what not. As a result of their work, we are now experiencing our internet as it is.

“The Internet is the most liberating tool for humanity ever invented, and also the best for surveillance. It’s not one or the other. It’s both.”

— J. P. Barlow

John Perry Barlow is not only a name but I see him as an exemplary individual who devoted his life to dreams. Dreams which were not shaped by selfish deeds like that most of common people’s, but his dreams, lies for the benefit of humanity around the world. Dream of a better cyberspace. Dream of freedom to get information.

“Hope does not always require probability.”

— J. P. Barlow

I first got to know about John Perry Barlow from this PyCon Talk. That, I really enjoyed! From the talk, I also got to know about organizations such as EFF (Electronic Frontier Foundation) and Freedom of the Press Foundation.

As I watched the talk, I got to know about John Perry Barlow as an Internet philosopher, as a great speaker who has a sense of humor in his tone and as humble as the stature of his thoughts. I got to know about his dreams for cyberspace and people around the world who are part of this.

“I … believe that angels, or something like them, sometimes live among us, hidden within our fellow human beings.”

— J. P. Barlow

After watching the video I couldn’t stop myself to search for him over the internet. Soon, I  found out that he is not only an Internet activist but also a great writer.

Without any doubt, the passion he had for liberty very well reflects in his writing, that was how my first exposure to John’s writing happened from his A Declaration of the Independence of Cyberspace.

I would say, that piece of writing is daring … and amazing! I mean, see below is a quote from the same.

“We will create a civilization of the Mind in Cyberspace. May it be more humane and fair than the world your governments have made before”

— J. P. Barlow

I can’t explain in words how true, confident and motivational the words in this declaration sounded to me.

When I was searching about him over the internet before I could come across anything further. I come to know that unfortunately, he has left us in this February and next, I watched his symposium.

In this, people who knew John very closely came forward and gave some words about him and also answered some questions from the audience. At times the moment in the symposium was joyous, and at times it was nostalgic.

“If you’re not lost, you’re not much of an explorer.”

— J. P. Barlow

For me John Perry Barlow is inspirational. And I believe not only for me, but also for people across the globe. Currently, I’m going through more of his writings available here. And at times I wonder about how much some people are struggling passionately, selflessly, and with dreams in their eyes to make a safe and better cyberspace.

Thanks for reading!

Advertisements

by Shiva Saxena at July 16, 2018 03:48 PM

July 15, 2018

Ved Sinha (Ved_Sinha)

My Blog

 

Ved’s Blog
About My Python Experience

Hello everyone, my name is Ved Sinha, I’m a 10 year old homeschooler in Pune, India and this is a blog post about Python and how I got interested in the topic. I started 1 1/2 years ago when I went to a JavaScript course but it didn’t work out. Then I tried a Python class but the teacher didn’t work out and then in the U.S. I went to a summer camp about Python and loved it.

When I returned to Pune, we (and by we I mean my mom) had a hard time finding someone to teach me (not everyone thinks that kids can learn Python) but we stayed encouraged. I went to a Python Pune Meetup in a place called Red Hat, they were so welcoming and nice to me. They introduced me to a programmer named Aditya who was looking for a job so we asked him if he could come over to teach Python.

Aditya and I clicked and not only did he become my mentor but we were BFFs in no time. He would come over every day I learned the amazingness of Python for 2 and sometimes 3 hours! He really understood me and vice versa; we spent a long, long, long, time working with the code and then…. WE MADE OUR FIRST GAME! It was called “Bounce; The Best Game Ever.” A few months later we made “Mr. Stick Man Races for the Exit.” We enjoyed making games with Python and even presented the games at the Meetup. That experience encouraged us to make a game called “Da Car Racing Game”.

I started using Python for Minecraft and attending more Python meetup and workshops. This is what I have done in Python programing so far and I hope more and more kids like me love and learn programing.

Oh and one more thing here are the books that Aditya and I followed

 

Thank you for reading my blog.

by vedsinha08 at July 15, 2018 01:55 PM

Manank Patni

Day 15

Today’s highlight was the meetup of Python that I attended. It is named PyJaipur Meetup. I had a great time there and met some amazing people. We learnt the basic data structures of Python Language.

The thing that I realised in this meetup was that I have been learning an writing Python for some time now. But still I learned a lot of things that were completely new to me and I know this is going to happen a lot with a language like Python.

So, I hope to attend more of such meetups to grow my knowledge of python as well as make some new friends.

by manankpatni at July 15, 2018 06:25 AM

July 14, 2018

Prajit Mukherjee(thegeekbong)

Version Control – A baby step for project management

 

What is version control?

Version control is an idea to manage the changes to documents, computer programs, large websites, and other collections of information.
It can be done by any means and there are many softwares available to do version control.

In lay man’s language version control can be broken into two words; version and control. ‘Version’ can be said as the different instances of a file after a number of changes are done on it and Control means controlling these changes. Thus, controlling or studying the number of changes on a file is said to be version control.

In a life of a Software Engineer or a Coder working on a project in a group, implementing version control is the most important step. Version control can be used when working on an individual project also. Suppose someone is starting his/her project after leaving for a long time and he/she doesn’t remember where he/she left, version control can be a useful tool here.


 

Now coming to the software to use to do version control. As I wrote there are many free softwares to do version control naming some are Git, Mercurial, Apache Subversion, Concurrent version system and many more. But the two most popular is Git and Mercurial. I’ll use Git to make you understand the main agenda of the blog.

Now coming if we go up to the picture used in this blog, in it, first, it is written Git, which is the software, and an icon is made, that is what we call GitHub. Now, what is GitHub? Github is nothing but a web application which let us host our projects with inbuilt version control in it. In GitHub, there are millions of programmers, GitHub gives our project a chance to let the other people alter our source code and tell us how to do it better than what is written. Let’s leave GitHub for the moment and start to learn basic localhost end version control.


 

The importance of version control

Version control is important for documents that undergo a lot of revision and redrafting and is particularly important for electronic documents because they can easily be changed by a number of different users. These changes may not be immediately apparent.
Quite overwhelming, right? Let’s discuss what it says, the above statement tells us the importance of version control(Duh, we all can see that), it tells us that a document saved on a server which is shared by many people can be a part of many editing and changes in the data done by everyone. Now, if the document contains 80 pages it will be a tedious job to actually see where someone has edited and what. Hence, by version control, one can easily see the added line and also the removed line, if any. All the editing can be seen in by version control softwares. Thus, making life easy.
This is implemented in projects by big companies because they have many employees working on the same project.

git-logo

Now, without further adieu let’s come to Git, which is a very popular version control software after which a huge web application is named.

First, let’s install Git.
For Windows users, Git has to be downloaded as an executable file and will won’t be able to work at the command prompt. So, if you are a Windows user, follow this link Git for Windows. The file will automatically start to download and you have to install it.

For Mac users, Git is pre-installed in your command line, to check the version of your Git write down the following command in your CLI(Command Line Interface) –

/usr/bin/git --version

This is because the git is pre-installed as Apple-Git at /usr/bin/git. And if you want to download it explicitly, then follow this link Git for Mac. But I don’t feel it is necessary.

For Linux users also it is pre-installed.

Let’s Get Started

Any Git command will start by calling Git. Yes, you heard it right, as you are called by your name Git also prefers to be called by its own name in CLI. To check a version of the Git installed we use

git --version

This will give the version installed in your system. The latest version can be seen on the official website of Git.

Now as you have worked upon the first command for Git. Let’s learn a bit more. Before going on we have to learn some of the keywords which will be needed in further reading.

  • Repository: It is the central location where data is stored and managed. In simple words, it is the root folder of your project. It is popularly known as Repo.
  • Branch: A branch determines the workflow of the project when a number of people are working on the same project. In this case, a user will create a branch of the default branch called master and gives it a name. This will copy all the files of the repo to the branch say ‘newbranch‘. Now the user who has created this branch can work independently on that branch and after he/she is finished doing the required work, he/she commits the changes to the ‘master‘.
  • Commit: A commit is used to save the changes in the main project. After making a branch as explained above, and attaining the goal the user sends a message to the owner in the form of a commit. The commit consists of a message, which explains the changes done. In Github, each commit has a hash id. This differentiates the different commits in the project because in real time there can be as many as 50 commits in a single project.

gitbranch

The above picture shows you how a new branch is formed off the master branch.

Now the commands used in Git:

git status *This tells that if the project has git incoporated in it*
git init *This changes the folder into a git repository*
touch file *To make and empty file*
git add -A *This adds all the file in the staging area*
git commit -m "...message goes here..." 
                    *This creates a commit with an option as message*
git log *This is to show all the commits*

These are some basics commands to use Git. In the above commands, there came a phrase which introduced a new word, staging area, this is the area where Git works upon. If an update is not added to the staging area then Git will ignore that update. Hence, adding that update is very necessary.

Now let us create a branch and work upon it:

$ git branch branch_name *This will create a branch branch_name*
$ git branch *This commands displays the branch the user is in*
$ git checkout branch_name *To change the branch to branch_name*

*Now to merge a branch to master, checkout to master by the above 
command and then write the below command*
$ git merge branch_name

*After merging to delete branch we use -*

$ git branch -d branch_name 

Now as Git tells the different instances of the file it must tell the difference also. So the difference of two instances of the same file can be given by

$ git diff file_name 
$ git log _commit hash_

Each commit has a unique id. Here it is used to log the changes the commit will do to the main project.


githubGithub

Github, as explained above, is nothing but a web application which lets people store their code in the cloud and also lets fellow coders around the world to contribute to the project. Well, it shows the source code of your app or project and other coders can improve it or help you with some issues that come up. This is the basic idea of Github in simple words.

To get to know more about Github and how to use it there’s always a tutorial by Github to learn more about it. Github is a very versatile and moreover stacked up with new and efficient services for Project Handling, though it uses Git in its backend.

Github has the same idea of Git that is creating a repository and letting others edit it by making a new branch or creating a commit. But as said it has many other services also that is Pull Requests and Forking.

Pull Request:

It is a type of submissions by the contributors after contributing or rectifying the issues rose by other fellow coders after using the application or making the application better. A pull request is sent to the owner of the repository and if he/she feels like it is worthy to implement in the project it is accepted.

Fork:

Forking a repo is mainly copying the whole repository of someone under your profile. This is mainly done to change or contribute to the project and later you can send a pull request to the owner. This feature is a very useful feature because one can contribute to the project at one’s own leisure and also the main project does not get changed hence, easy to compare.

Github is a platform where not only you can upload your work but also can contribute to other projects and showcase it to the world, as it is a global platform. Github also generates a heat map kind of a thing which tells the visitor how much you are contributing to your community.

Github also lets the owner create a README.md file which tells other contributors about the application. Popular softwares like Linux Distros, Mozilla Firefox browser, Chrome Browser, Atom Text editor and many more are uploaded on Github and you can contribute also.

Contributing to Github is easy but to maintain the decorum of the organisation and the community is as important as rectifying the issues. Hence, one must read the contributors text before contributing to the project. A well organised and a polite behaviour must be maintained when conversing with others.

You’ll keep finding many other references to Github and Git, and you can also search and gather more information about them also by just googling them.

Till then this is the thegeekbong bidding goodbye. Hope you have a marvellous day ahead and heartiest thanks for taking the time to read it.

See you on the next page. 😉

by thegeekbong at July 14, 2018 07:47 PM

Manank Patni

Day 14

Couldn’t do much today the internet was baned for nearly the whole day in the city. Other than that made some changes to the pr as proposed. Waiting for its approval

by manankpatni at July 14, 2018 06:10 PM

Pooja Kumari Singh (poojaencoded)

Gangtok: one day trip

Gangtok, a blissful Heaven in the Northeast😊.Exactly one week ago i went for the Gangtok.

Actually it was not a planned trip i went for the interview . Amazing place not too much expensive.I stayed there in one of my seniors home,and took pictures from her terrace because i can’t stop myself after looking this beautiful scenario 😃.A beautiful place I ever seen till the date .I wish i could stay there for more 4-5 days,but i went there with my uncle and next day he has his work as he didn’t take leave ,so we came back next day my hometown.But definitely I ‘ll go again there in future with my friends😊.

by iampooja at July 14, 2018 04:12 PM

Prashant Sharma (gutsytechster)

Why should you write a blog?

Does the topic seem boring to you? Indeed the answer to this question looks simple and easy. But do we know all the possible perspectives to this question? This can only be possible only when we ask many people out there about this. Rather than asking every person individually, there is a much better way to do this. You know this, don’t you? Yes, blogging. Well, instead you go to everyone and ask the same question, you can write a blog over it and ask the people through it. Of course, one of the main advantage of internet is to connect people across different parts of the world, belongs to different diversities. So, why not use it? So, this comes out to be one of the answer to our question.

So, few days back we were told to write blogs in our DGPLUG summer training. Though I have already started writing blogs, I wasn’t regular. Maybe because I lack motivation to write. I sometimes used to write just for the sake of doing things. But, when you realize that how much importance it has, and how can it change the way you look at the things; the way you learn things; the way to memorize them, you get motivation to do it. So, I came up with few things that might motivate you, to write a blog.

  • Your identity

It becomes your identity on the web. Your blog reflects your nature; your knowledge; your personality. Even if the person would’ve never met you but s/he can guess what kind of person you would be. You would find every other person who is famous for his work, having a personal or professional blog.

  • A log to refer

It helps you to keep record to what you are doing. So suppose, you go on a vacation and after returning you want to resume your work. So you can refer to your blog and catch up with your work from where you left. So, it helps you to maintains a log of whatever  you are doing. This needs you to write regularly. Through this you also measure your growth and how much you are improving.

  • A better understanding

You get a deep understanding of what you are writing about. So, suppose if you have to teach someone, of course you would go prepared with the topic so that you can handle any doubt. Same goes for writing. You learn and understand topics in a way so that you can write about it in your words without any uncertainty.

  • Feedback matters

You improve yourself. Well, you might want to know how? Since, you are posting your blog over the web so that everyone can see it. When people find your post helpful they appreciate through the comments and in the same way if they find any mistake or errors, they tell you that too, through comments. This way you get feedback and with each feedback you improve and do better every next time.

  • You get a command over language

Many people don’t have English as their native language and it is the language which is accepted for professional communication. So, we need to get command over the language. I often do silly mistakes while writing. I do typos, grammar mistakes and sometimes I don’t get words to write. But when you write you search for the words; before posting you proof-read your post. This way we improve our writing skills and vocabulary and in all we get more comfortable with the language.

  • Dive into reading

Very first step to write something, is to read something. We often read something to get a better understanding of what we are going to write about. So, this way we get a reading habit which is very crucial and has an equal importance as that of writing. Just like, Jasonbraganza(one of our mentors in DGPLUG summer training) always refers to the beautiful quote said by Junot Diaz:

Read more than you write, live more than you read.

  • A platform to reach out

When you start writing a blog, you create a platform for people to reach out to you. You present your thoughts, your views, your learnings which might be helpful to a lot of others out there. So,  in a way you help society and believe me, they would be as eager to help you when you need them.

In Open source community, we help out each other in any way we can. We share what we know and spread our learnings. Through blogging you make it much easier to help.

Is it easy to write a blog?

Oh no! what have you asked me? That’s the most difficult question. I am not much experienced enough to answer this question. However, on the basis of experience I have gotten till now, I can tell a bit. Well, it wasn’t easy for me when I started to write. But it is much easier now. You wanna know how?

Well the answer to this is consistency. Being consistent in any work, indeed improves the quality and efficiency of it. So does for writing. It might seem difficult at first; might take much longer time to write your first blog post. But just don’t leave it. Start with small. Of course, it would take time to improve, but if you are persistent then it’s not hard to achieve. You have to do these three things only. Do you know what are those three things? I think you do, yes those are Read, read and read. And whatever you read, try to synopsize it in your blog post.

Now you might ask, from where should I start? There are many platforms which provide you with almost everything(with everything I mean the whole website structure). You can go to wordpress, blogspot, medium, et al. You just need to write the content and click that Publish button and that’s all. You are good to go.

Conclusion

In the end, I would say that just start writing. I hope that somewhere I was helpful to motivate you and to convince you to start writing. Meet you next time.

References:-

  1. https://summertraining.readthedocs.io/en/latest/blogging.html

Be curious and keep learning!

by gutsytechster at July 14, 2018 02:26 PM

Jagannathan Tiruvallur Eachambadi

Privacy podcast, IRL

Mozilla, the organization behind Firefox actually does more than just build software. In its advocacy efforts, they roped in Veronica Belmont to make IRL: Online Life Is Real Life, a podcast that explores various aspects of privacy in everyday life explained in a way that can be understood by everyone. It is into the third season and the current episode takes a look at the dilemma of sharing data with companies for free services and privacy.

Nothing to hide

I was privacy conscious before but documentaries like “Nothing to Hide” has opened my eyes towards the historical significance of privacy as well. People who are generally in the opinion that since I am a normal person, I don’t have to fear surveillance should watch the documentary to gain more insight as to why everyone has something to hide or at least would not be comfortable with it being public.

Grand Bargain

Coming back to the topic of the IRL’s recent episode, we have become quite accustomed to accepting long terms of service agreements for online services. This extends to application permissions that can be overreaching. We move past those in the hopes of getting something out of those applications and in some cases we do. The episode takes a dive into whether this is worth it and how it can have an impact on someone’s life.

Paying for privacy

Old methods and practices are always resurfaced as we find newfangled business models are insufficient to handle privacy concerns. The question is if we pay for services, will that buy us more privacy.

  • Platforms like patreon offer a way for creators to reach their fans directly and sustainably.
  • Paying for a mail host gives us the confidence that they will maintain our mail and are not in it for extraneous purposes.

It should be quite evident that paying for these services removes incentives for companies to spy on users and concentrate on the product instead. To be honest, I am not sure that everyone would be able to pay for every service we use for free today. A lot of us use multiple news sources but paying for each of them can be difficult.

No one left behind

There is a real concern that the section of the internet users which is not able to pay their way out of this will be disproportionately affected. Till now these issues have not been looked at seriously because of online advertisement. But due to increase in the use ad blockers we have had banners asking to disable the plugin and allow tracking to view the content.

A straightforward solution will be to allow people to share subscriptions and make them cheaper; family plans comes to mind. We should also realise nothing comes for free and accept some loss of functionality by limiting our use to essential services. More importantly by paying for those essential services we get more privacy!

Middle ground between self hosting and advertisement driven services

Motivated individuals can maintain their own services on a personal server for a small group of people. For example, personal mail servers was the norm in the 90s but it has died out considerably due to amount of administrative burden and inherent complexity of these services.

To this extent, I have seen a couple of groups popping up offering free services powered through donations and free software that can help people move from ad-driven services. Disroot and Asymtote are examples that I found online. I believe forming groups among like-minded people and creating such small services is the way forward. Importantly the author behind Asymtote is keeping the infrastructure open so people can create clones and stand up their own versions. Sharing of infrastructure can help with reducing costs and burden with regards administration and bus factor.

This post has been braindump of sorts but hopefully the links here and the podcast can help people to think about these issues before signing up for more services and think about self hosting as a cheaper alternative. If you have money, please pay someone rather than using an ad-driven service for your own privacy and safety.

July 14, 2018 12:30 PM

Aman Verma (nightwarriorxxx)

Day 3 #Coding Streak!!!

Health is Wealth

Day 3 started with a doctoral session . I went to doctor again for the final time in order to make sure my health conditions are fine. I got a green signal from him, he confirmed that my body has started reviving. But the problems doesn’t end here. My medicines made me sleep all day long. So in order to avoid my boredom I started watching movies.I started with Citizenfour,one of the best movies I have ever seen. After that I went for Imitation Game, again an amazing movie.

I started with a Python course online after coming back from playing, so that I won’t miss any basics. Believe me programming is one of the coolest things every person should try not only for knowledge but also for understanding that without programming a person’s life is nothing.
I also got to know about few cool article, which I will revel I the next blog. Till then Keep Coding !!!!.

Happy Hacking

by nightwarriorxxx at July 14, 2018 07:01 AM

July 13, 2018

Amitrajit Bose

Python String Manipulation

This article will briefly demonstrate you to some of the most commonly used string manipulation functions using Python. Let us take a quick look at their implementations in Python 3. I have used Python IDLE for easy demonstration purpose.

>>> myWord = "Hello World!"

Convert To Lower Case

>>> myWord.lower()
'hello world!'

Convert To Upper Case

>>> myWord.upper()
'HELLO WORLD!'

Capitalizing A String

>>> myWord.capitalize()
'Hello world!'

Slicing A String

If you want to slice a string from index ‘i’ to index ‘j’. Assuming i and j contain some numerical value.

>>> myWord[i:j+1]

If you want to slice the string from the beginning, you don’t need to put i=0, you can just leave it blank. The code below will slice the string from beginning up to index ‘j-1’

>>> myWord[:j]

Same goes for the ending. Suppose you don’t know the length of the string but want to slice it till the end. This will be useful.

>>> myWord[i:]

Splitting The Words

>>> myWord.split()
['Hello', 'World!']

Splitting The Characters

>>> list(myWord)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']

Joining The Characters

>>> arr=list(myWord)
>>> arr
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']
>>> "".join(arr)
'Hello World!'

Replacing Words

>>> myWord.replace("World","Wordpress")
'Hello WordPress!'

Finding Sub-string

A sub string can be simply found using the .find() function which returns the index of the first occurrence of the character or sub string in the main string.


>>> myWord.find('orl')
7

Notice that, only the first occurrence is returned.


>>> myWord.find('o')
4

Finding some sub string in a given range from the main string,


>>> myWord.find('o',5,8)
7

What if the sub string or character is not present in the string at all.


>>> myWord.find("hero")
-1

Finding the last occurrence of a sub string or character, we use the .rfind() function.


>>> myWord.rfind('l')
9
>>> myWord.find('l')
2

Trimming Whitespaces

>>> myWord+" "
'Hello World! '
>>> myWord.strip()
'Hello World!'

Repeating Strings

>>> myWord * 5
'Hello World!Hello World!Hello World!Hello World!Hello World!'

Toggle Case

>> myWord.swapcase()
'hELLO wORLD!'

That’s all for now. For more functions, you can check the Python official documentation here. I may keep on adding more content to this article in future. Please feel free to put your comments, suggestions and recommendations below.

by amitrajitbose at July 13, 2018 04:14 PM

Pooja Kumari Singh (poojaencoded)

On Markdown

Learnt about Markdown on 11th July.

John Gruber created markdown,the best way to compose content for the internet.

Those who are an internet writer will definitely love markdown because it is easy,fast and efficient for them.

However, Markdown is commonly supported on popular blogging platforms like WordPress,it is not supported naturally on websites with WordPress software installed.

There are many Markdown Editors available for Linux ,Mac and Windows.

And you can try this online Dingus to learn more.

by iampooja at July 13, 2018 01:17 PM

Mayank Singhal (storymode7)

Writing reST

Ever wondered how documentation, blogs, online books (not the PDFs) are written? Well, if it’s a really big one, RST (or reST) is the best shot.

 

The name reStructuredText was chosen to indicate that it is a “revised, reworked, and interpreted StructuredText”. reStructuredText is also abbreviated as RST, ReST and reST. (Wikipedia)

The official Python documentation uses RST. You can see the primer of the RST they use here

I followed the reStructuredText Primer by kushal and created a test.rst for me.

To convert RST to an HTML page, you’d need to install two packages namely: python3-docutils and python3-sphinx

and then you can use the command:

rst2html test.rst test.html

This will generate HTML page based on the RST you wrote in test.rst. Without test.html the output is just sent to the stdout.

If you don’t have rst2html command after installing the said two packages, you can try pressing the tab key to see if it is installed by some other name.

Let’s follow along with some snippets:

Headings

First the title of the doc.

======
Title
======

Here remember to keep the upper and lower lines equal, and you can skip the upper one.

Then you can write the texts and para like normal text for example:

This will come as a simple sentence.

And this as another para, due to space between them.

If you don’t leave any line between two sentences, then they are joined into one.

Commenting

To comment, we use .. like:

.. This is a comment

Space between .. and the comment is required. Most of the issues that I ran into were resolved by trying to put a space or a new line while trying out RST.

A comment can be multiline in which case it’s length is determined from the indentation.

..
  This is a multiline
  comment.

Section title can be given in a similar manner to the doc title.

Section Title
==============

According to sphinx documentation, the following convention is preferred as it is used in the python style guide.

# with overline, for parts
* with overline, for chapters
=, for sections
-, for subsections
^, for subsubsections
", for paragraphs

I didn’t know this so in my test.rst I tried playing to get it all correct 😛

Lists

Lists are the simplest part. Unordered list has a syntax:

* First Item
* Second
* And this is Third

“This text is not in the list due to the absence of ‘*’”

Ordered List can be generated manually or automatically like:

1. Some text
2. Other text
   more text with "other text"


1. This 
#. Is
#. An
#. Autonumbered list

a. This
#. Is 
#. Also
#. Autoindexed

Definition list

This is a set of text indented relative to each other. Point to note here is that, there should be a blank line just before and after the definition list.

Some term
    It's definition

Some other term:
    It's definition

Option list

The options list is used to write command line tools’ option and description. This is one of my favorites too!

-a      Option a
-b      This is b option
        with longer description
--some  This is another option

Remember to leave lines before and after starting a new body element. This was the thing I messed up most.

Literal blocks

If you are writing about RST in RST, then what? You need literal blocks for such cases. They are not interpreted and are printed as it is.

::

    This is a literal block
    for a in ['a', 'b', 'c', 'd']:
        print(a)
    print("some content")
    # A python comment

Doctest Block

These are interactive python sessions pasted in the text. When I first tried RST, I thought these were supposed to be evaluated in Python :P. But these are for explanation purposes, to show examples, and to provide a method to test the documentation’s content using doctest modules

>>> print("This is a python command")
This is a python command

The command and the output are both written by the writer.

Creating Tables

Creating a table is another easy task though it requires some typing effort.

===   ===   ===
 a     b     c
===   ===   ===
1     2     3
3     2     1
===   ===   ===

Another form of a table is:

+--------+--------+
|Another | form   |
+--------+--------+
|of      |creating|
+--------+--------+
|a       |table   |
+--------+--------+

Though this is more readable, it is slightly strenuous on your fingers. But I still like this one :P.

Note: This table might appear malformed on wordpress. You can try copying it to an editor locally.

Creating links

This is a normal hyperlink

`link text <https://www.duckduckgo.com>`_

This is an example of a targeted hyperlink:

`text which isn't linked currently`_ This is text apart from it

.. _text which isn't linked currently: https://www.duckduckgo.com

Notes

You can also give notes in the text.

.. note:: This is a note

But this isn't

Emphasis

You can put * around your text to put the emphasis. Generally, it italicises the content it surrounds.

To make the content bold you can use **

This text is *italicised* and this **bold**

Footnotes

To give more links for further reading and clarifications, you can give footnotes. They can also be autonumbered.

This is footnote one [#]_ and this two [#]_.

Some text between the footnote text and links.

.. [#] Hey I'm footnote one
.. [#] You can refer to the official docs for more!

Some text after footnote

Note that the text before and after footnote links isn’t compulsory. I just added it so that I know that it’s possible too.

This must be it.

Till the next time, don’t rest but go reST!

 

storymode7

by storymode7 at July 13, 2018 10:56 AM

Manank Patni

Day 13

Worked on the issue that I volunteered for in Coala. Have nearly completed it and will be submiting a PR soon.

by manankpatni at July 13, 2018 06:13 AM

July 12, 2018

Aman Verma (nightwarriorxxx)

Day 2 #Coding Streak!!!

“Start where you are. Use what you have. Do what you can.”
-Arthur Ashe

When friends lie

Straight forwardly coming to my day to day life, I would like to share something about my friends.I have got friend who say’s them self an Open Source enthusiast,which completely agree with them as they contribute to Open Source projects more than me.I always talk to them ,never hide anything from them , on what things I am working on but when I ask them “Hi buddy ,on what you are working on these days ?” and then every time I get a reply nothing much I am just wasting time these days,which I came to know they were lying to me as I checked out their GitHub profiles and accounts.

So now I am confused whether they are my friends or they are someone who is hiding everything and calling them an Open Source enthusiast and a Hacker(a hacker that hacks into projects #self made hacker) which I guess it’s against Open Source ethics i.e share and talk about what you are learning .

It would be great if you guys help me out with this .What should I do ignore them and never talk to them again or something else?

Coming to Programming

Day 2 is far more better than Day 1.As not only my health is better now,but I am now more focused,excited,curious and serious for learning more and more about various programming language .

As I talked about Python in my previous blog that I will be learning Python ,which I started and I am on it .Surfing over the internet I found some good resources which I would love to share .

1.python programming Tutorials

2.Python for You and Me

3.Python.org

The above are one of the best resources for learning python.Moreover you can go on YouTube, Udemy and Udacity for video tutorials.

Happy Hacking

by nightwarriorxxx at July 12, 2018 03:35 PM

Sehenaz Parvin

Are humor and punch lines the only way of writing?

When it comes to writing why can’t we just think it in our own perspective? Why do we always think that if we can’t add humour and thoughtful words ,our work is not going to be well accepted? Is there seriously no other way? Well if you ask me there is . Sometimes basic and common words can make your writing an extraordinary one. And if we talk of humor then its not always necessary in writing. Long sentences always doesn’t specify a good meaning. Short sentences can do that too.

There are many ways of writing a particular interest.But we have to make sure that it has some logic or it will become totally meaningless to understand😉.

Now, the question will arise that how can we believe that only logical and short sentenced works can also be another way of writing ? Well , here is your answer – Francis Bacon .So before we go into details, let’s get an idea about Francis Bacon and his writing skills .

Francis Bacon:( 22nd January, 1561- 9th April,1626).

Bacon has been called ” The father of Empiricism.” So let’s first know what is Empiricism. Empiricism is the theory that all knowledge is based on experience derives from the senses. Empiricism in the philosophy of science emphasises evidence , especially as discovered in experiments. That is , his writing skills are based on logic and scientific resoning not on any humour or pity feeling.

Bacon’s writings are written in short sentences and it would look very simple to understand but it’s not at all like that. Every sentence describes a paragraph and every word of that is connected is to the sentence. If we don’t read carefully we won’t get the actual meaning of it. That is the perfection of his writings.

So Bacon’s writing characteristics can be summed up as follows:

  1. He writes everything based on logic and scientific resoning.
  2. No usage of excessive and thoughtful words.
  3. Tone of the writing is like an advicer one. He speaks as if he is not requesting us in a soothing tone but recurssing us to follow that by opening a floor of options in different fields that suits that particular interest.
  4. Full of Latin evidences and quotations.
  5. Every sentence has their own importance including each and every word.
  6. After every sentence he describes the following sentences that why he thinks so regarding that interest.
  7. He always presents both sides of an interest. That is, the advantages as well as the disadvantages of that particular interest.

So now we have got an idea about Francis Bacon and his writing skills and characteristics. So now let’s get an example from one of his famous essay ” Of studies” . https://www.bartleby.com/3/1/50.html Do read the text once before going to the examples.

Examples with reference to the text:

So coming to examples from “Of studies”

Let’s start with first three sentences :

Studies serve for delight ,for ornament and for ability . Their chief use of delight, is in privateness and retiring ; for ornament is in discourse;and for ability, is in judgement and disposition of business. For expert men can execute, and perhaps judge of particulars ,one by one; but the general counsels , and the plots and marshalling of affairs , come best from those that are learned.

Here, in these lines he explains that studies serve for delight, for ornament and for ability. Study provides us delight when we enjoy it personally. It serves as ornament during conversation with people. In practical field , it enhances our ability to perform and execute.

From Bacon’s perspective men with worldly experience can carry out plans and understand certain circumstances but men who study are better able to understand important political matters and know how to deal with problem accordingly ( marshalling of affairs).

So you can see through three lines only he explained a paragraph with short and understandable sentences without “humour”. Isn’t it beautiful?

Coming to next example:

Crafty men contemn studies , simple men admire them , and wise men use them ; for they teach not their own use; but that is a wisdom without them , and above them, won by observation. Read not to contradict and confute; nor to believe and take for granted; nor to find talk and discourse; but to weigh and consider.

Here Bacon describes the different attitude and objectives of studies. According to him simple and ignorant people admire study. Crafty or cunning men study to cover up their inefficiency in any field. But wise men use them to properly. Because their wisdom is incomplete without studying.

Further he says that study should not be taken as granted for fulfilling needs or cover up inefficiency nor it supports any blind faith in anything. Everything should be judged properly then considered. Study should not serve as topics for useless discussion in every day life but to use it efficiently to solve and tackle problems in life.

Here you can see he has used so basic words to describe the attitude and objectives of studies and the result of it is such an excellence. Hence basic words are sources of excellence too.

Another one and the most important one.

Reading maketh a full man ; conference a ready man ; and writing an exact man

Here, he describes his perception about perfection in studies. He suggests that one needs to read, write and confer in order to achieve perfection. Reading makes a man learned , conference makes him ready to use the learning . But the ultimate perfection can be achieved through writing. So if a man is very good at writing skills he must have a very vast knowledge about everything while a man good at confering with people will have a good presence of wit and the reader who read very little will not have a vast knowledge which is again a drawback.

There are much more important lines in the text but I think this is enough to make us understand that cheesy pick up lines and adding humour is not only the way to write anything. There can be other styles too.

Hope I could answer the questions through Bacon’s writing . Remember whatever you think and write , it must have some logic behind it otherwise it won’t attract readers and moreover your blog may also seem blurry. And moreover everything cannot be mastered at the very first attempt. It needs a lot of practice. So, “THINK BIG, START SMALL”.

by potters6 at July 12, 2018 12:56 PM

Manank Patni

Writing Documentation for Code

So, Yesterday (11 July 2018) we had a session on the topic RST(reStructuredText) on the #dgplug channel. A small tutorial for the basics of writing in RST was shared with us from where we all learned what RST is, it’s syntax and how the documentation for projects is written.

So, I decided to learn more about writing documentation and after searching the about the same on web I came to know about the various reasons as to why documentation is written.

It is written so that the people who are new to our software/code can easily understand how they can use it and they don’t get lost or confused. The documentation should be able to explain the project to the users/ contributors.

So what is RST?

The reStructuredText (RST) syntax provides an what-you-see-is-what-you-get plaintext markup syntax and parser system. So basically we type our code in plain text using a pre-defined syntax and then it is converted to HTML format for publishing. A basic tutorial of the same can be found here.

The RST was created by Python community and hence is a part of Docutils.

Alternative for RST :-

Markdown is another option which we can use in place of RST. Markdown is easier to use. It is written in Perl language. You can learn more about it on this link.

The main difference between Markdown and reStructuredText is that the former is intended for one purpose to be used as a format for writing for the web whereas the latter is used for writing technical documentation.

So, you can choose whatever you like and are comfortable with to write documentation. It all depends on what features you would want.

by manankpatni at July 12, 2018 08:37 AM

Kumar Vipin Yadav (kvy)

Some Simple Program on Functions

Let’s discuss some very simple example on Functions
By solving these problem you can able to solve simple problem based on functions
later we will discuss about functions with Array, Strings and with Pointers.

Factorial function :-

Finding Factorial of a number using function.

#include<stdio.h>
int main()
{
   int factorial( int );
   int n , facto; 
     // we can't access these variables in function but we can 
     //create variable there with same name
   printf("Enter a number : ");
   scanf("%d",&n);

   facto = factorial(n);

   printf("Factorial is %d. \n",facto);
   return 0;
 }

int factorial( int a )
 {
    int i,fact;
    for ( i = 1 , fact = 1 ; i <= a ; i ++ )
    fact = fact * i ;
    return fact;
 }

Output :-

  Enter a number : 5
  Factorial is 120.

Now we can find factorial of any number just by calling factorial function.

A Uppercase converter function:-

This function will accept a lower case latter and converter it into Uppercase latter.

#include<stdio.h>
int main()
{
   char alpha_converter( char );
   char n; 
 
   printf("Enter a alphabet : ");
   scanf("%c",&n);

   n = alpha_converter(n);

   printf("Latter is converted it's %c now . \n",n);
   return 0;
}

char alpha_converter( char x )
{
   // ASCII value of lower case latter
   if ( x >= 97 && x <= 122)
   // Converting latter if it is lower case
   return x-32;
   else
   // returning latter if it's already upper case
   // we can return only 1 variable from a function
   return x;
 }

Output :-

  Enter a alphabet : d
  Latter is converted it's D now .

Prime function:-

This function will return 1 give number is Prime else return 0.

#include<stdio.h>
int main()
{
   int Prime( int );
   int n ;
   printf("Enter a number you want to check : ");
   scanf("%d",&n);

     //here i call my function and if it return 1 means 
    //true and if will execute

   if (Prime(n))
     printf("Yes entered number is Prime");
   else
     printf("No entered number is Not Prime");
 
   return 0;
}

int Prime( int a )
 {
    int i ;
      // here i write (int)a/2 because a number can't 
     //divided number greater then it's half
 for ( i = 2 ; i <= (int)a/2 ; i++ )
  {
    if ( a%i == 0)
       // if condition is true it mean It's Not Prime so return 0
     return 0;
 }
    // and if loop will over and can't return 0 
    //means it's a prime number hence return 1
 return 1;
}

Output:-

  Enter a number you want to check : 98
  No entered number is Not Prime

by kumar vipin yadav at July 12, 2018 08:09 AM

July 11, 2018

Aman Verma (nightwarriorxxx)

Day 1 #Coding Streak

“Everyone you will ever meet knows something you don’t.”
–Bill Nye

Day 1 was not so good,because of my health which is not so good these days, so I tired to many unusual things likely surfing over the net,scrolling down the news feed of Facebook and other stuffs so that I can deviate my mind from my health issues and focus on learning ReStructuredText which was referred by one of my #dgplug mentors i.e Kushal Das.

For all those folks who don’t know what is ReStructuredText ,let me tell you it is same as what you see is what you get plain-text markup syntax.Basically, it is used for writing program documentation mostly for Python docs .Next thing I am going to start learning is Python as it is one of the most useful language in development and because its easy to learn .

“Happy Hacking”

by nightwarriorxxx at July 11, 2018 09:53 PM

Anu Kumari Gupta (ann)

Bash fun :P

If you are new to GNU/Linux, the pro like commands would have made you feel no less than a hacker initially (Note: Hacker doesn’t mean the one who breaks into your system, steals your data, passwords and do mischievous activities. The one who does this is called Cracker. Hacker is one who do all the innovation with their intelligence and it is something not restricted to computers and tech, it may be beyond that). All the commands you type in the terminal makes you a different person all-together than the one who uses operating system like Windows, which stresses on GUI than CLI. At times, may be, you must have felt “this” particular stuff would have been easier or better in some respects being in Windows than in Linux. Want to add something? was it uncomfortable or seemed difficult at first? or, contrary to this, may be you had the impression that you are doing an ingenious task running all those “unfriendly” commands and getting some unfathomable outputs, making you feel like a true programmer and making you happy deep inside. Nevertheless, it’s all different opinions. Whether or not, you like GNU/OS (or what people say as Linux), I have a fun thing to share with you! Excited?

For people who already been using GNU/Linux (Linux to be in particular), I don’t have to tell them anything because they already know what bash is and would have come here to see what bash fun I will be talking about (lol :P).

OK, now let’s begin the real fun!

Screenshot from 2018-07-11 22-26-59.png

Can you see my terminal? Is it same as your’s? Of-course no. It has my beautiful name written on it. Want to have your name written like this or something dynamic that changes each time? Hang on! I got to tell you how.

For having your name appear like this each time you open up a terminal, you have several options. First option is without installing anything new. Before I move on with the first step, I would like to tell you something, rather warn you something and, that is, the output of this program written in Python:

 for i in range (1000):
       print("Don't play with Bash !!")

It is essential that you note, you shouldn’t play with it and make each change very carefully and with a backup copy so that you do not end up doing some trouble to your login shell. Any mis-activity may lead to anomalous behavior.

Let’s begin with the actual stuff:

First step: Use an online Text to ASCII art generator. Write anything you wish using any of the characters from your keyboard. For example like one below:

Screenshot from 2018-07-11 23-14-36  Here, you can try out with the different types of font, character width, character height available to you. After you have done with it, you need to copy the generated output and paste it to the end of your .bashrc file. (You have to append and not overwrite). I will highly recommend you to open .bashrc file using the editor in which you are comfortable in. To avoid trouble that can happen in any case, you can use gedit or pluma for ease in copy and pasting. Use gedit ~/.bashrc or, pluma ~/.bashrc . Put echo statement at each line and put it under inverted commas so that it is treated as a string to be printed. To avoid confusion, let me clear you with this picture:

Screenshot from 2018-07-11 23-23-30

Notice there is already a piece of code written. You just need to append the lines at the end. Save your .bashrc file and close it. Open up a new terminal and you will see the changes as below:

screenshot-from-2018-07-12-00-01-141.png

Isn’t it cool? Now whenever you will open the terminal, you will see the lines in this format which you chose.

Alternatively, you can also use figlet. To use figlet, you have to install figlet (depending on your distribution) by: sudo apt install figlet or, sudo dnf install figlet. After it is installed, you have to open the bashrc file, i.e., gedit ~/.bashrc  or, pluma ~/.bashrc . At the end of the bashrc file, write figlet "Your text". Your text includes whatever text you wish to print. When you open a new terminal, you will find your text written at the top, quite similar to the art I showed above. You can explore more of figlet by reading its manual. For reading the manual, type man figlet.

This was all about text. Do you wish to see some characters printed in your terminal each time and would it sound more cool if I say you that each time you open the terminal, you will see some fun facts or quotes written? And guess what with each time you open the terminal, you see some different texts written. Do you want that? Well, if the above was interesting to you, you will find the below as interesting too.

For that, you need to install cowsay. To know more of cowsay, you are free to read on wiki and manual. Install cowsay by either sudo dnf install cowsay or, sudo apt install cowsay,  depending on your distribution. Open the bashrc file, i.e., gedit ~/.bashrc  or, pluma ~/.bashrc. At the end of bashrc file, type cowsay -f eyes "Some text"

I have appended cowsay -f eyes "I am watching what you do". And here is the output:

screenshot-from-2018-07-12-00-27-14.png

Now you have several options to try out. To list the names of all possible characters, type cowsay  -l. To see all the characters designed with symbols, write this small script on the terminal:

for i in $(cowsay -l); do cowsay -f $i "$i"; done

You may choose whichever you like and then append it to the bashrc file. Do tell me your favorite one in the comments. Mine is calvin and tux.

Screenshot from 2018-07-12 00-45-05

Quite Interesting and fun? right? Oh wait, you must be wondering about the fun facts and quotes which I told you that changes each time you open a new terminal. Here is what you need to do:

fortune | cowsay -f  tux

In place of tux, you can put your favorite character and you are done. You will see some fun facts or quotes written. See what I got when I opened four different terminals:

Screenshot from 2018-07-12 00-59-32.png

Full of humour and pun. Imagine you being in office unwilling to do work and happened to open up a terminal and you get to see this, might make you smile.

 Try this out and explore the bash fun!

by anuGupta at July 11, 2018 07:48 PM

Manank Patni

Shiva Saxena (shiva)

Intro to reStructuredText

Hello readers! Yesterday, in dgplug summer training, we had a session in which we were introduced to reStructuredText. I had been aware of and used Markdown before but it was my first time that I put my hands on reStruncturedText and seen how it works. Let’s go through a quick intro to this simple yet efficient tool.

What is reStructuredText?

It is simply a plaintext easy-to-read markup language, also abbreviated as reST.

It is part of the Docutils project and was developed by David Goodger and initially released on April 2, 2002 (source Wikipedia).

reST files have the extension .rst.

Why reStructuredText?

Ever want to get rid of those HTML tags while creating a simple webpage? Ever want to see an alternative of your Readme file format other than Markdown? Ever want to try out an efficient tool using which you may document programs especially of Python? Or say you want to create any standalone document like the changelog for your FOSS project. Then reStructuredText is the tool that fits in your purpose.

I read from Wikipedia that reStructuredText has been a core component of Python’s Sphinx document generation system since 2008.

And if you’ll look at the official documentation of reStructuredText you’ll find this module –> statemachine.py, It is completely documented using reST. Isn’t it awesome?

A quick hands-on with step by step examples

In the session, we were introduced with reST with this Primer, a big thanks to our mentor Kushal.

The first step is to install these tools

  • python3-docutils
  • python3-sphinx

Now create any file (say doc.rst) and let’s try out the following examples.

Document Title

Open the file and create a title with:

=======
A Title
=======

Save and exit

Display your reST file as HTML

On your shell give command   –>   $ rst2html doc.rst doc.html
This will convert your reST to HTML.

and open doc.html to see your reST in a form of a webpage.

Every time you’ll make changes to your doc.rst you’ll have to first convert that to HTML to see the webpage with updated changes.

Section Title

This is a section title
=======================

Sub-section

This is a sub section
---------------------

Note: You may use any of these character for section title and sub-section   = – ` : . ‘ ” ~ ^ _ * + #   but, the character you’ll use for the first “section title” it will get fixed to it. Means, if you use that character again, then it can only be used for a section title. Similarly the character you’ll use for the first “sub-section” it will get fixed to it as well. Don’t interchange the usage of these characters. If you have chosen a character for section-title let it be constant for all the section-titles otherwise you are likely to get an error while converting this .rst to .html.

Basic Inline markup

This is how to *emphasize* a word.
This is how to **strong emphsize** a word.
And this is a standalone hyperlink  https://google.com

Paragraphs and Indentation

This is paragraph number 1.

     This is paragraph number 2. With indentation.

Note: Multiple separate lines are counted as a single separate line.

Lists

Unordered/bullet list

- object 1
- object 2

Ordered/enumerated list

1. object 1
2. object 2

Definition list

Term 1: optional_classifier
       This is definition 1.

Option list

-a          purpose of attribute 'a'
-out        purpose of attrubute 'out'

Field list

:Student: Name of student
:Enroll: Student's enrollment number

Blocks

Literal block

::
       This is a literal block.
             Where no foramtting takes place.
       Useful for code samples.
       It will continue until indentation is close

This is outside literal block.

Line block

| this is a
| line block
| useful for
| writing addresses

Quote block

These are simply:

       indented paragraphs

Doctest block

Doctest blocks are interactive Python sessions.
They begin with: >>>like >>> print "This is a doctest block." This is a doctest block.

Comments

.. This is a comment.
    Will continue till
    indentation is completely over or

   if an empty line is introduced. This is outside of the comment

This is outside of the comment

Links

Titled link

This is `title <link>`_

Targetted link

`The Geeky Way`_ is a technical blog.

.. _The Geeky Way: http://TheGeekyWay.com

Footnotes

Refer this blog [#]_ and also this one [#]_.

.. [#] Blog on Markdown
.. [#] Blog on AsciiDoc

Have a look at reST cheatsheet http://docutils.sourceforge.net/docs/user/rst/cheatsheet.txt

reStructuredText vs Markdown

I have a prior experience with Markdown. I have always been using Markdown as a format for Readme, changelogs and some time on github issues. But if both Markdown and reST can be used for documentation and creating simple web pages, then who really wins the battle?

This is a hot topic like that of “which text editor is the best?” 🙂

People all over the web discuss, debate and give their opinions about it. Have a look, here is a discussion available on the same. https://news.ycombinator.com/item?id=11922485. And here on Reddit. https://www.reddit.com/r/Python/comments/3zp9g5/markdown_vs_rest/

But I think the gist of this battle lies as follows:

  • reST is better for technical documentation such as documenting program libraries, changelogs, API documentation, etc.
  • Markdown, on the other hand, is useful for creating simple web-pages, and all non-technical documentation.
  • Markdown seems more popular than reST.

But I would like to use both of them as per their use cases.

Conclusion

References:
http://docutils.sourceforge.net/rst.html
https://dgplug.org/irclogs/2012/rst-primer
http://docutils.sourceforge.net/docs/user/rst/quickref.html
https://en.wikipedia.org/wiki/ReStructuredText

I believe reST is a powerful tool that is easy to learn and that you may use for technical documentation purposes. I want to learn and apply more of it. Now let me know what you think about reST in the comments section below 🙂

Thank you!

by Shiva Saxena at July 11, 2018 11:16 AM

Sehenaz Parvin

Day 25 ( summer training)

Finally, its going to be a month in summer training of Linux.😊 A new environment . A new learning process. A new beginning .

Well , it was not at all possible or it would never be a new beginning if I wouldn’t have come out from the four walls of the captive environment. As said by Mark Caine

“The first step towards success is taken when you refuse to be a captive of the environment in which you first find yourself. “

Learning Linux was very confusing at first because of using windows for such a long period. But slowly after joining the summer training and with the proper guidance of the mentors I am able to synchronise that too.

Now as it is going to be one month in summer training I have almost learnt the Linux commands thoroughly and I can now move about freely on Linux. The commands are much more easier , user friendly . Doing these things myself have increased my self confidence and self reliability. And moreover Linux system is like a magnetic field – the more you learn the more you get attracted to it.

So thank you to all the mentors of summer training for your patience and support 😊.

by potters6 at July 11, 2018 03:06 AM

July 10, 2018

Aman Verma (nightwarriorxxx)

Coding Streak!!!!!

This world is full of technology. Everything is so fast that if you stop and look back you will never get a chance to succeed. Everyone wanted to go with the trend and so I.

Watching this on growing growth of technology day by day, something struck my  mind last night and I decided to write blog every day, which I named as “Coding Streak“. This will not only keep me on track but will also help me to focus on my goals.

Coming to “Coding Streak” as I am an Open Source enthusiast and fond of learning about Operating Systems and Web Technology ,I will be posting about them daily .

 

Happy Hacking

Do visit my Facebook Page Technoflux

by nightwarriorxxx at July 10, 2018 06:52 PM

Manank Patni

Day 11

Learned about RST or reStructured Text to write documentation in today’s session of dgplug summer training.

References: –

  1. https://dgplug.org/irclogs/2012/rst-primer/

by manankpatni at July 10, 2018 06:29 PM

Piyush Aggarwal (brute4s99)

A real life Hogwarts

It came to me accidentally, to be honest! Skimming through your seniors’ profile does some good at times!

“The programmers of tomorrow are the wizards of the future !” – Gabe, Co-founder-Valve

Screenshot_20180710_222525

LINUX USERS’ GROUP OF DURGAPUR

Learn and teach others

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” – Linus Torvalds, creator of Linux

An excerpt from the official site :-

Objectives

  • Revisiting programming fundamentals
  • Get acquainted with Free Software technologies
  • Spreading the hacker ethics
  • Gaining technical knowledge
  • Real-world project experience

What I have learnt within the month at #dgplug online summer training is invaluable to me! We get to talk and learn from the Jedi of F/OSS, attend Guest sessions with international upstream contributors and so much more!

An excerpt from a qoura answer :-

How is the summer training at Dgplug?

For me, it was like Hogwarts, a place which normal people don’t know, yet full of surprises, and new learning! It opened a whole new world for me! -Avik Mukherjee

And frankly, that makes the two of us.

by brute4s99 at July 10, 2018 06:27 PM

Bhavesh Gupta (BhaveshSGupta)

Static file blog using web based CMS

So a few days back I was working on a solution so that I could keep that blog updated. As this is a not-self deployable blog I actually need to deploy changes. Somebody would say instead of taking so much efforts to deploy a single post you could have set up a WordPress blog which has an awesome app to add post, n number of themes, plugins, etc. But I feel I like it this way.

July 10, 2018 07:14 AM

Piyush Aggarwal (brute4s99)

It’s a blog !

This is the first post that comes with the blog by default.

 

Let’s see.

I made a blog.

Let’s try our best to make it useful, yeah ?

I don’t wish you all to be watching ads with my blog, so just wait for a while!

Good company in a journey makes the way seem shorter. — Izaak Walton

 

by brute4s99 at July 10, 2018 06:55 AM

Ashish Kumar Mishra (ash_mishra)

Linux Command Line

I switched to Linux, one year back. I had heard a lot about its performance and I wanted to see if they were all true. And guess what, indeed they are!

The myth I had heard about Linux operating systems having a very bad GUI was also broken. I currently use Ubuntu 18.04 LTS and it has an amazing GUI.

Screenshot from 2018-07-09 14-10-48

But as everyone says, the true power of Linux is in its terminal. You can control your entire system using the command line. Windows doesn’t have so much power in its command prompt but Linux’s command line (terminal) is its main feature. You can do almost everything with the terminal, starting with creating and editing a file to reading/sending emails and RSS feeds.

This an example of mutt (an email client) on a terminal.

Screenshot from 2018-07-10 10-14-35.png

The benefits of using a Linux OS is known only when you start to use it. I will tell you an example where Linux helped me out to reduce my work. So, I had to send farewell invites to about 150 people. If I would have used a normal mail client, it would have been a very tedious task. I had everyone’s email id in a CSV file. So what I did was, I wrote a shell script to read the CSV file and fetch all the emails from it, and by using mutt’s command line utility I sent all the emails in one shot.

The power of Linux is way beyond what a Windows user imagines. I would recommend everyone to use Linux and experience the power of FOSS. You can follow the book Linux command line for You and Me (LYM) to begin with.

Happy hacking!

 

by Ashish Kumar Mishra at July 10, 2018 04:46 AM

July 09, 2018

Manank Patni

Day 10

Took more tutorials for Pyqt4.

by manankpatni at July 09, 2018 05:35 PM

Janifa M(bismi)

DGPLUG – Day 17

Today it is a guest session by Harlo, the director of newsroom digital security at freedom of the press foundation.

We are also informed that there will be a small session at 11 PM, today.

by janifanowfal at July 09, 2018 04:54 PM

Anu Kumari Gupta (ann)

Read Me!

If you are actually reading this, You are trapped into reading this. I wanted you to read me because it is something related to README (lol :P)

Creating readme file is a part of documentation and it is essential in the development process. README.md is a markdown file that you should, or it is necessary that you,  create for giving a summary about your projects onto a platform like GitHub (can be README.rst as well). It helps in making others know about your work, what your project is all about, etc. Wondering, why I have to write to you for a plain thing like readme that just describes your project? The answer is – You instill the mind of the readers with curiosity, interest of looking into your project, only through README. Think about using any tool without having a proper documentation. Would you like it then? Let’s say you like Python3.x. Had there been no proper documentation of Python3.x, from where do you think you could have started learning and exploring. Point? So, it is very essential that you write a proper README.md file. Think yourself as a developer once, who is making a important project (let’s say, a simple code that you built with the immense logic and knowledge you have in Programming), and you host it into a platform like GitHub. Don’t you think your viewers need to know more about it, rather than simply seeing the code? Yes, they need to know, because they might not get what the project is and what it does, until you explicitly describe it.

While working on a project, I was given a task to create a README file for the GitHub repository. Now, when I used to create repositories of my own, I did not bother to think so much and I had the tendency to write just few lines on whatever the project was all about. Think, when you are collaborating with developers and creating a real life, problem solving project, just an usual readme file could not be praiseworthy. Just as your project, your description about the project needs to stand out. This was what struck my mind and felt that it is highly essential. I came across blogs (thanks to Akash Nimare), some GitHub readme suggestions (Thanks to PurpleBooth), some templates. and here’s the summary to all that you need. I am also adding the corresponding markdown format to make it easier for you to follow. Markdown is a syntax for formatting plain-text to display it on the web in a particular manner. It has amazing styling features that is easy to use, once you try. These are something your readme file should have:

  • Project Title

A must thing. Project title is the first thing you need to mention. If you have not given any title to your project, give one suitable name and keep it at the front. This is the main heading of the entire README.

  • Project info

This includes the one liner or two liner small info showing the actual purpose and what the title mean. Note: This is something different from project introduction. Here, you just need to mention the main purpose. You may, instead, include a project tagline here. An example, MasterCard has their tagline as “There are some things money can’t buy. For everything else, there’s MasterCard”.

  • Project Introduction

Now you got to introduce the project. Describe in brief. Mostly, one or two paragraphs would do. Introduction generally contains the origin of the project. Explain what it does and what parameters are there which govern the mechanism of your project.

  • Motivation

Here, you need to mention about what made you do this project. Describe the necessity and what you wish to achieve by doing the project. If it is something that is real life problem solving solution, you ought to include this and attract viewers.

  • Build Status

This includes the status of your working project. It is not mandatory. However, if you wish, you can follow how to add status badges in your repository.

  • Tech/Framework

You mention all the technology stack that you have used in your project i.e., the programming languages, the framework, the tools, etc. By including this, you make the viewers know more about your project, your work, etc.

  • Getting Started

Now that you have mentioned about the Tech/Framework, you got to tell the viewers (of your project) how to get started. To tell them how, you need to mention here a few lines about how they can use it. This heading includes subheadings, which are:

  1. Prerequisites:   You need to mention the requirements the user need to have to use your application/project. The requirements may be any software that is essential to run your program, any libraries or modules that might need to be pre-installed, etc.
  2. Installation:   You should precisely mention the steps of installation of your entire work so that the user don’t have to face any problem. It would be good, if you add screenshots of the installation process. In short, a demonstration is needed.
  3. Testing:   Give a suitable example and show how to run your application, i.e., take an input case and show the process of testing your application with the specific input case. Show how it worked to give a particular output. It would be better, if you add screenshots, because pictures make it more descriptive and easy to understand.
  • API Reference

If you have used any API or small snippet of code from somewhere in your project, it is always a good habit to mention that in your readme file. It creates a good impression and adds a reference to the viewers.

  • Features

Mentioning features is a plus point. You mention all the qualities that your project possess and the areas that are noteworthy in your project. You can highlight the major functionality.

  • Contributing

Here, you give the information and instructions to the viewers explaining how they can contribute and submit pull requests to you. Now, since this might be a long list of guidelines and procedures, it is better to keep this as a separate file called CONTRIBUTE.md. For this file, you may follow this which I found. It is an amazing description of the pull request process, code of conduct, etc.

  • Contributors

If you have worked in a team, this heading must include the list of names or the people who have contributed in your project. If you have single-handedly worked on the project, this is not mandatory for you. However, you may include the heading as Author and write you name and your introduction.

  • Credits/Acknowledgement

It is always a good habit to credit people and references you have taken. It gives an impression of you, that you respect other people’s work and you show them gratitude by doing this. It adds to the beauty of your reputation and your work.

  • License

You must add a separate LICENSE.md and give a link here. Mostly, you add the type of License you have taken, year and your name (or your team’s name while working in a group).

You are free to add something that is essential, or is something that your project demands. I just gave a general overview and points that are noteworthy. As I promised, I will be showing you the markdown format for the above points. A quick syntax table for you to understand the purpose of each of them:

Syntax

Purpose

# Heading
## Sub-heading
### Sub-heading of a sub-heading
> Blockquote
* Bullets
1. Number Bullets
(https://www.foobar.com) Links
[text](https://www.foobar.com) Links inside a text
**Text** Bold
__Text__ Bold
~~Text~~ Strikethrough text
*Text* Underline
_Text_ Underline
“`Code“` Insert Codes
Heading0 | Heading1 | Heading2
— | — | —
Row0Col0 | Row0Col1 | Row0col2
Row1Col0 | Row1Col1 | Row1col2
Table

The above table is the basic requirement (know-how) to write your readme file in markdown. There are other syntaxes as well which you can refer. Here, is the README.md template, that you can follow:

Screenshot from 2018-07-09 14-00-45

Screenshot from 2018-07-09 14-26-21

Screenshot from 2018-07-09 14-26-30

The Left hand side is the markdown format. The right hand side is the preview of the markdown file (README.md). The above screenshots was to make convenient for you to see the difference and understand. Pasting the format below:

# PROJECT TITLE
> project Info
## Overview / Introduction
Project Introduction goes here. This is the project that does this … The factors on wich it is dependent on. It is helpful in …
## Motivation
Unimpressed by the current scenario of …, my project deals with … and that was the motivation that led me to make this … I sensed the need of …
## Build status
You can use Tarvis CI or any.
## Tech/Framework used
Build with
* Your tools
* Frameworks
## Getting Started
I will show you how to get started with “project title”.
### Prerequisites
You must have :
1. System requirements:
* OS: Linux / MaccOS / Windows
* 64bit machine
2. Libraries/Modules :
* Numpy
* …
* …
3. …
### Installation
Follow steps as below:
1. …
2. …
### Testing
Sample Input: …
Follow steps as:
1. …
2. …
3. …
Output: …
## API Reference
Add reference (if any).
Use link as:
## Features
* Sustainability
* Real time based
* …
## Contributing
Want to contribute? See CONTRIBUTING.md for more information.
## Contributors / Author
Author of the project is
* Anu Kumari Gupta – CSE
## Credits / Acknowledgement
I wish to give my gratitude to …
Sources which helped me …
## License
MIT © 2018 Anu Kumari Gupta
Check LICENSE.md
 Note: To change the paragraph, you should give double space at the end of the current paragraph.
Now that you have got the essential skills to write your README.md file in markdown, go ahead and write one!

 

by anuGupta at July 09, 2018 09:47 AM

swechha jha (sweksha)

Learn It, Girl

litgw12

I am a person who loves meeting new people, discussing tech, overflowing ideas and am a Fooodie (of Course). So, it was in March this year (2017), that I got to know about Learn It Girl and the concept seemed too good i.e you can work on your own idea under the guidance of a mentor. Sounds great? Yes, indeed! So, I contacted them and asked about the next edition registration (this is the 3rd edition), and they were too humble to answer all my queries. It was in August, that the registrations started and the only idea I could think of that time was regarding depression. This is no less than a disease and needs addressing.

And hence I brainstored into how can I approach this problem and give some efficient results. I thought of developing a game, a maze game, where users would be directed to some motivational video and quotes, every time they get stuck in the maze. I went ahead with this idea, and worked out a timeline for 3 months.

  • Regarding the application, there are two fields which keep a lot of importance:
  1. The project Idea
  2. The timeline for the 3 months of the program. You can learn more about it here:https://www.learnitgirl.com/

wlitg2

wohoo! One of 129, I was over cloud nine.

The application process is itself a learning and self evoking process. It let’s you brainstorm an idea that you are passionate about or a technology stack that interests you or a specific language that you want to learn, it makes you focus on the things that matter to you.

litgw13

So, after the results for Learn IT Girl were announced in October, I was super excited to work on the project and the tech stack that I was passionate about and on cloud nine when I got to know that only 129 girls from all over the world were selected for this program and I was one of them. But, this was just the beginning of the breath taking journey that lay ahead:)

Depression conceptual design isolated on white background. Low mood concept

It’s a twelve week program where I worked with my mentor to develop a Django based web application to classify tweets and analyze depression using Machine learning.


The Challenges:

The first and foremost challenge was the idea itself because I had initially had the idea of a game in mind to fight depression using Django but it had to be tweaked. So we researched and then decided to make a tweet sentiment analysis system using Machine learning and Django as framework.

The next challenge was to work out the timeline for the entire project again but this time more practically and clearly. So I proposed a timeline to my mentor and then he suggested the changes and then this process continued till we had a proper schedule for those 12 precious weeks keeping in mind all the factors.

After we crafted out our timeline, we worked on tasks and discussed them every day or two. Here’s how we worked:

  • First few weeks, say 5, we worked on machine learning basics and how it can be implemented, so that I have a solid grasp of the concepts.

  • Then, we went on to work on the project, further dividing it into tasks like:

1) Getting data from twitter using tweepy

2) Pre-processing the data

3) Applying different machine learning algorithms in order to find the one which gives the best accuracy

4) Working on the website to show the relative rates of depression

 After the completion of the program, comes the evaluation time, when the LITG team evaluates your work and tells whether you passed the program or failed. Here’s the certificate I got on completion of the evaluation: litgcertificate

litg23

This experience didn’t only help me become stronger technically, but also taught the art of working together, respecting each other’s time and commitments and coming together to work out problems. I’m really grateful to Learn It, Girl for this opportunity and would like to contribute to the initiative in any way possible.

Keep calm and code on! 

by swechha jha at July 09, 2018 07:54 AM

Devesh Verma (devesh_verma)

#dgplug SUMMER TRAINING — 2018

dgplug-logo

WHAT IS #dgplug?

Let me first tell you how to pronounce this word “dgplug”, you can either say each letter separately like “d-g-p-l-u-g” or as “d-g-p-lug”. I got to know this at PyconIndia Delhi 2017, when dgplug members had a small get-together.

NOW YOU CAN MAKE SENSE OUT OF COLORING IN LOGO 🙂

Now, coming back to our question let me explain what is #dgplug.
#dgplug is a community which was started in Durgapur, which stands for LINUX USERS’ GROUP OF DURGAPUR . This is a 3months long summer training program which started on 17th of June. This free summer training is provided by Kushal Das, mbuf, jasonbraganza, fhackdroid, sayan, rtnpro and few other people.
You must be wondering are the names mentioned above are actual names of people 😂. So let me tell you these are nicknames aka nicks. Dgplug summer training is carried over an IRC channel. Next question

WHAT IS AN IRC???

IRC stands for INTERNET RELAY CHAT, which is one of the oldest form of communication and the best part, it can work with very low bandwidth. In an IRC channel everyone is addressed by there nicks. There channels in IRC where you can just connect using any IRC client like HEXCHAT. When you see the interface of the an IRC for the first time, the first question that you get is the summer training really happening here, why not use google hangouts or video based training. The reason for this is not everyone has access to really great internet and people across world join this summer training and as I mentioned earlier IRCs can work with very low bandwidth.

A LITTLE INSIGHT OF THE SUMMER TRAINING

This summer training most of the times starts at 7pm IST on IRC channel #dgplug on freenode. Though you can interact with people at any point of time because most people are active throughout the day.
This training is not like any other training that you have ever attended or have been through. This is not the training where you pay a hefty amount and are taught something and asked to iterate the same and get a certificate at the end of the training.
Rather Dgplug Summer Training is all about making you a better programmer in every aspect right from very basic things that a programmer must know and the habits a good programmer must cultivate let it be blogging, touch typing and many more things. You will also learn python programming. Here by the end of the training you will also get to know how to get started to contribute to various Upstream OpenSource projects.
Also the biggest thing, at #dgplug there are many guest sessions, and believe me these are life time learnings.

ITS NEVER TOO LATE TO START SO IF YOU FEEL BIT MOTIVATED TO JOIN THE SUMMER TRAINING YOU CAN JOIN IT NOW.

 

by devesh_verma at July 09, 2018 04:49 AM

July 08, 2018

Mayank Singhal (storymode7)

Playing with WeeChat’s configurations

 

Recently I’ve started to use WeeChat to connect to IRC. My earlier client was Hexchat, and is currently a fallback in case I am not able to get familiar with intricacies of weechat.  Here I am listing some settings that I’m using to do a basic makeover.

My fascination with WeeChat started after I read fhackdroid’s blog on WeeChat and tmux.  The client looked amazing.  And then I couldn’t help myself but try it.

For starters I just followed the getting started guide on WeeChat’s official website.  And after using it for some time I wanted it to change how somethings looked.

The first thing that bugged me was the huge size of channel list. Initially I thought if it was possible to do a resize like that in tmux, but I wasn’t able to come accross any such option.  Then I came across a command window. I tried to do resize, split, merge, but I cam across other interesting features than the channel list.

Even if I found out how to change the size, there must be more configurations to be played with. So to figure out how to see, tinker with current settings.  I don’t remember how, but I eventually stumbled upon this great command set, and now it was like weechat screamed to me.  Customize all you can, here I am!  Ah, the painstakingly long list was lovely and at them same time intimidating.

While I was trying combinations of keywords window, weechat, resize et al.  I went to the official documentation a lot.  And in the official documentation, I found my temporary abode.  It too was exhaustive, but I was starting to love it.  I eventually found where to resize the channel list in the screen layout option.  Here the first thing I saw was, it’s not called a channel list here, it’s a buflist!  Now with set and buflist and a shortcut ctrl + r that too I found in the documentation, I was ready to attack the large set of options now, to change the size of channel list buflist!

Then while searching I found the setting:

weechat.bar.buflist.size

I don’t remember the initial value, but as soon as I changed the value to, say 20. Buflist shrunk. And that was my first victory!

From there on started another quest.  To list separate servers separately. That is, channels under different servers should appear differently.

By the way, this was because, while lurking in #dgplug, I came to know about wee-slack, it is a WeeChat alternative, to the infamous, ram gulping, slack.  I tried it out in a local slack group of college friends, and it too turned out to be amazing! (Though I had to remove some unused DMs and channels to make it more clutter free). A big big thanks to sayan and j605 who mentioned it.  I didn’t knew what it was, so I couldn’t thank them then.

So while searching for separate channel list, based on servers, I came across weechat wiki on Github. And there I found this.  Amazing configurations for buflist appearance!

For a starters, I tried out one or two of them, but then I grew more interested in modifying them. As I liked some features of one, some of another.  Initially I was copying whole script by a single user from wiki just to try it out. Later I started to pick up lines from the config to try and see their effect. And a few minutes later, I was editing the one I liked the most 😛 (The first one on the wiki).  I liked how it used a bullet symbol for servers and the color scheme it used, but from another theme I liked the tree like structure. So I copied the selected lines and made a new mix.  It worked. But I wanted a little more. I wanted that, the current channel should be highlighted with a background, not just change in the color of the text.  So I started comparing the different combinations.  Which had this feature and which didn’t.  Later I was able to narrow down to one thing that was responsible for this background.  It was a , Yup, just a comma. Followed by the color of background.

Initial
${color:lightblue}

After change
${color:,lightblue}

More intrigued, I entered a colour name behind the comma.  I had a sense of what it might do, and it did exactly the same! It changed the color of text in the highlight.

Next came the nick list.  I don’t know how, but I remember as if it was there in the beginning, but now it wasn’t.  This was easy fix. I just changed

weechat.bar.nicklist.hidden = off

It said that the default was on, I must’ve confused my mind with the Hexchat nicklist. The nicklist was on!

The naming of the variables in the set command’s menu was just great.  It was easy to relate your thoughts with the settings.  Like, indent in buflist determines how you want to specify the indent. (This was the one I modified to get the branches connecting to channels)

Another setting I changed was:

irc.server_default.away_check

I’ve set it to 1 currently.  Compared with Hexchat, it’s too low.  But since it’s in minutes, I don’t expect it to add any latency (Though I could be wrong as I am not aware of the innards)

Currently I am trying to find how to modify the hotlist variable to only display message count, not low priority count like joins, quits etc.  I’ve found some settings that change the hotlist_low parameter’s colours.

This is the buflist.conf that I am currently using. Don’t copy it to .weechat . As it is mentioned in the file, use /set to change the settings.  Issues are welcome 🙂

This is just the experience of configuring a terminal chat client, by a naive.  So please point out the errors if you find any.  Suggestions are always welcome!

Ping me on irc: storymode7 at freenode.  Let’s see what client I am using when you ping me up!

 

See you next time.  Till then keep customizing 🙂

storymode7

by storymode7 at July 08, 2018 10:20 PM

Siddhant N Trivedi

Day 1 of code

Couldn’t do much programming today.Was stuck in preps of the Model United Nations going to be organized today in school.But still,today I came to know that free software and open source are different.Not fully,but somewhat.

Credits to this article by RMS:

https://www.gnu.org/philosophy/open-source-misses-the-point.html

Will try to do more coding tomorrow.

Good night.

by The Little Aspirant at July 08, 2018 06:22 PM

Manank Patni

Day 9

Got back to learning python. Read tutorials about different types of tests in python and also a tutorial related to PyQt4. Will write a long post on both of them explaining these in detail.

by manankpatni at July 08, 2018 06:19 PM

July 07, 2018

Neeraj Kumar Arya (InquiridorTechie)

Summer Training

Hello, Friends

Sea_Summer_Sky_Beach_487898

Now days, Mr. Sun seems very dedicated to his work. It is constantly showering its scorching heat upon us. Well, at least he is doing his job.

But, “What am I doing this summer?”, is the question that comes to the mind of every college student as soon as the summer vacations start. Most of us are either doing an internship or thinking to learn some new technology. Well that’s good! We must utilize our time.

Here,  I would like to share what I am doing these vacations. My fellow mates asked me the same question that I asked you above. My reply was “I want to learn at least one technology these vacations”. But there are few questions which are constantly bugging my mind! Which technology? Where to start? How to start? My fellow mates came with a single answer to all these questions. They told me about DGPLUG. If you are reading this carefully, then you are eager to know what is DGPLUG, aren’t you? I know some of you are familiar with this word, but those who aren’t, I am here to do the explanation, so read on…..

What is DGPLUG?

Cool Text - dgplug 292301575800291

DGPLUG stands for Durgapur Linux User Group. It is a good platform to learn things for beginners who are Open Source enthusiasts. It is a spark for those who are stuck in the darkness of these questions (Which? How? Where?).

DGPLUG conducts online summer training every year. It has been providing online training for the last 10 years. DGPLUG announced its 11th edition of summer training this year. In this training programme, we learn the ethics of programming and gain more technical knowledge. It helps us to become an upstream contributor in the open source line and get us acquainted with the amazing experiences of various open source enthusiasts across the world.  The most important thing, it’s “Completely Free”. All you have to do is just spend your time and interest.

Some Pre-requisites required for this training:

  1. A computer with any recent GNU/Linux distribution installed.
  2. A decent Internet connection.
  3. IRC account (I will explain about IRC in my coming blogs)
  4. Attitude to learn.

My Experience till now.

As a student and tutor, my timings didn’t quite match with the training’s timing. But there is another advantage of this training, that is, they provide daily logs. Hence I read those logs daily and whenever I get time I join the training. It is important to join online rather than reading logs because in the session time you learn how to communicate on the IRC, how to communicate with the developers, how to ask questions, make new friends etc etc. It has been two weeks since I joined in this training programme.

I will list the stuff I have learnt by joining this training:

  1. The very first thing that I learnt are soft skills (online communication)
  2. Mailing-list etiquette (like use always bottom posting rather than top posting)
  3. How to ask a smart question. It is needed to do your homework first before asking anything. And if you ask for help, then give proper details of your problem.
  4. Difference between the term “Hackers” and “Cracker”, which most people today seem to have mistaken. Initially, I thought that hackers are those who have a bad intention and they break into your system to steal valuable information. That’s not true, though. My thinking got rectified in this training programme that hacker is any skilled computer expert who uses his/her technical knowledge to overcome a problem. The one who breaks into the system is called a Cracker.
  5. Here I got to know the importance of privacy. After watching some documentaries, I switched my search engine to duckduckgo and started using tor browser. To know the reason click here
  6. Learnt the Linux commands from LYM (Linux command line for You and Me).

Why blogging is important? This helps us in improving both, our reading skills and writing skills. It is not necessary to write a blog on what you have learnt or learning, you can also write a blog on your life experiences.

Guest Session

Hitherto, we have been given 4 guest sessions by Mr. Harish Pillay, Mr. Nicholas H. Tollervey, Mr. Praveen Arimbrathodiyil and Mr. Sukhbir Singh. Each one of them shared their experiences in their respective field, clarified our doubts, gave suggestions to the beginners on how to start and more enlightenment to those who were lost in the darkness of those questions. I really got motivated by their session and learned how to work with a community.

In DGPLUG we have great instructors like Kushal Das, SayanSaptak who guide us during as well as after the session.

In a nutshell, the time for action is now. It’s never too late to do something. If you guys want to join DGPLUG refer this

I would like to end this blog by giving my thanks my fellow-mates who told me about this training programmes and our great instructors on DGPLUG for doing such a great job.

I hope you liked this blog!

See you soon!

Have a good day!

InquiridorTechie.

by inquiridortechie at July 07, 2018 07:37 PM

Manank Patni

Day 8

Took more of those typing lessons. Also fixed a lot of errors while building Mozilla source code on Ubuntu.

by manankpatni at July 07, 2018 06:27 PM

Janifa M(bismi)

DGPLUG – Day 16

Yesterday I missed the class and there was no logs. But luckily, I got homework links from dgplug channel.

by janifanowfal at July 07, 2018 06:19 PM

Prashant Sharma (gutsytechster)

A Beginner’s Guide to Markdown

Howdy fellows!

I hope your learning are going well. Well mine too. If you remember while creating the repository on Github, we have initialized it with a file README.md. We know the actual motive of making this file. The file contains the information and details about our repository or project. But have you focused on the “.md” extension the file has. What does it mean? Why not “.txt” or “.html” or any other? The answer to all these questions lie in the word Markdown. This is only one use case which I mentioned, there are many more.

Markdown is a simple text-to-HTML conversion tool for web writers. The main ideology behind its architecture is to make its syntax more readable unlike in HTML code where it becomes messy with lot of tags. Though one thing to note down here is that Markdown is not a replacement of HTML. It’s not even close to it. It supports only a small subset of HTML tags. HTML is a publishing format while Markdown is a writing format. It is suitable only where the message can be conveyed in a simple plain text. Though one can use HTML tags along-with Markdown. Just make sure that block level elements like <p>, <div>, <table> are surrounded by blank lines and start and end of the tags should not be indented with any spaces or tabs.

I listen, you want to dive more into it. So what are we waiting for, let’s begin.

How to write Markdown

Headers

Markdown provides two styles for headers:

  • Setext: Setext style headers are created for h1 and h2 level of heading by underlining the text by “=” (equal to) and “-“(hyphen)  respectively.
  • atx: atx style headers are created for all levels of heading ie from h1 to h6 by starting the line with respective number of hashes(#). So, if you want to generate a level 2 heading, you must start the text by 2 hashes(#).
This is level 1 heading
=======================

This is level 2 heading
-----------------------

# This is also level 1 heading
## This is also level 2 heading
###### This is a level 6 heading

Make sure to give a space after each #.

Blockquotes

The blockquotes can be produced by writing the text after an angle bracket “>”. These can be nested one inside another. Just don’t forget to give a space after each angle bracket before start writing the text.

> This is a blockquote
>> This is a nested blockquote
>

Lists

Lists can be categorized into two categories ie

  • Unordered list: These lists use the asterisks(*), pluses(+), hyphens(-) as list markers. We can use any one of these. For nested lists we need to indent the line with either 4 spaces or a tab.

Note:-Dots before the list markers are used to show the number of spaces.

* Vegetables
* Fruits
....* Apple
....* Mango
+ Grocery
....- Milk
....- Spices
  • Ordered list: These lists use regular numbers followed by periods as list markers. These can also be nested with same rule applied.
1. Red
2. Yellow
98. Blue
....1. Skyblue
....2. Darkblue
4. White

In above example, the third list marker is a random number, but it will be shown in sequence which implies that ordered list are independent of number we give at the time of writing Markdown.

Links

Markdown supports three styles for creating links which are as follows:

  • Inline links: In Inline links parentheses are used to enclose the link just after the link text which is delimited inside the square brackets. We also may include the title attribute in the link. For eg
This is a [link text](https://www.example.com "title")
  • Reference links: These links allow us to refer to actual links by names, which we can define anywhere throughout our document. The same pattern is used here to delimit the link text ie we enclose it in square brackets. These links are often used when we want to refer to a local resource.
This link corresponds to [Google][1] and this to [Yahoo][2]
[1]: https://www.google.com "title1"
[2]: https://www.yahoo.com "title2"

As we can see, we can give title in this case also after the link. Also, the link name we give can contain numbers, letters or spaces but they are case insensitive which means that [Google]≡[google].

  • Automatic links: If we want to give the link as the text also. Then we enclose it in angular brackets(< >).
<https://www.google.com>

Images

Markdown image syntax is very similar to that of links. The only difference which distinguishes it from links is the exclamation mark (!) which we give at the very beginning of the syntax. Here also we have two different syntax to insert images:

  • Inline Style
  • Reference Style

These are same as links, an example would be sufficient to understand the difference.

![alt-text](path/to/image "Title")

![alt-text][id]
[id]: path/to/image "Title"

Here alt-text is short for alternative text which appears only when the image is unable to load itself.

Code

Many times we need to insert the code of a particular language as it is. This can be inline or a block of code. Markdown provides an elegant way to deal with both the cases.

To put the code inline, wrap the corresponding text in backticks (` `).

This is an example of `inline` code

To specify a block of code, indent every line of code with four spaces or one tab.

....for i in range(1,4):
....    for j in range(4,i):
....        print("*")
....    print()

In both inline and block of code, the special characters get escaped automatically.

We can put a block of code surrounded by three backticks, which would do syntax highlighting also. So, above example can also be written as:

```for i in range(1,4):
        for j in range(4,i):
             print("*")
        print()```

Text-Formatting

Very often we require to format a piece of text according to requirement, for eg sometimes we need to emphasize a word or a sentence. So to achieve such things, Markdown has an easy and simple method.

  • To emphasize a word or a group of words, surround the text by double asterisks or underscores.
  • To italicize a word or group of words, surround the text by single asterisks or underscores.
  • To get both the emphasized and italicized format, surround the text with triple asterisks or underscores.
  • To get a strike-through pattern, wrap the text with two tildes(~) and to highlight the text use double equal to sign(=) around the word.
*I am italicized*
**I am bold or emphasized**
***I am both bold and italicized***
~~Strike through~~
==I am highlighted==

Note:- Strike-through and highlight are the extended features of Markdown. They might not work in some Markdown editors.

Horizontal Lines

To get a horizontal line using Markdown syntax, we place three or more either hyphens, asterisks or underscores in a blank line.

***

Above syntax would produce a straight horizontal line on your page.

Escaping

To escape special letters or characters, we use a backslash(\) before it. So for eg if you want to print something like this:

2010. The Earth destroys

But if you write the exact same text, this would not give the desired output. Can you guess why? It’s because, the number “2010.” would be treated as an ordered list marker which would make it a list element. So to get desired output, we need to escape the period. We would need to write something like this

2010\. The Earth destroys

Tables

Though tables are not the core features of Markdown. But we can build tables using Markdown.

Name | Enrollment No. | Section
--- | --- | --- 
Prashant Sharma | 04415603116 | S9
Shiva Saxena | 05815603116 | T19

In above example, we have used pipe(|) symbol to seperate the columns. There must be atleast three dashes seperating each header cell. Though it might not look like the actual table now, but it would show a proper table structure.

Note:- This might not work in some Markdown editors like ReText, since it is an extended feature of Markdown.

Footnotes

This is another extended feature of Markdown. We can give footnotes to any word as:

Today's #dgplug session was mentored by mbuf[^1] and kushal[^2]

[^1]:https://github.com/shakthimaan/
[^2]:https://kushaldas.in/

Insertion of <br> tag

When we want to give a line break in HTML, we use a <br> tag. When we give a blank line in between two items, that is not read as line break instead it is taken as a <p> tag. So to give line break using Markdown, we end a line with two or more spaces and then we hit enter.

References:-

  1.  https://daringfireball.net/projects/markdown/

As far as I know, these will be enough for a novice to start with Markdown. Though rest depends on your curiosity. Let’s meet in next blog with some new topic. Till then, goodbye.

Be curious and keep learning!

 

by gutsytechster at July 07, 2018 12:27 PM

Siddharth Sahoo

THE DARKNESS INSIDE ME IS GROWING.

I am very brave and ambitious towards my career. I am putting decent efforts to achieve every possible goal which can lead me towards my objective. But in this chase I found myself getting harsh on me and to my dismay, I found myself afraid of the feeling that I am alone when there are people around me. I am afraid of the feeling that I don’t have enough when I have everything. I am afraid of being less loved when people around me love. I am afraid of the feeling that I lost all my friends when I didn’t.

Most days, I get up and I go through the routines with no passion. Searching for something to keep me distracted from the growing emptiness inside me. Sometimes, that emptiness begins to show on the outside, and I hope people to ask me if I’m all right. Even If they do ask. I assure them that I am alright and I put on a better mask. I wonder how long I can keep going like this while the darkness inside of me grows. Why do I fear pain when there is none?

So far I’ve been chasing myself and trying to keep distracted from the fact that I’m failing constantly. I have to act like I’m getting smarter and better and I don’t have any complaints. So that I don’t feel sad.But what If I feel worse than ever? Damn you!

Just when doors are being shut, everyone expects me to give up, I’m going to do the opposite. I’m planning on winning this harsh times. I will not break. I will go through this.I will grow through this.Nothing will break me, because I’m choosing to win. Thank you for being there for me and trying to help knowingly unknowingly.

 

by CodedWorm at July 07, 2018 10:05 AM

Gajendra Saraswat(Sarques)

Let’s see the Flashback at EOD

Assume the time to be midnight between 6th and 7th of July, 2018. This is a very common thing in the lives of students or learners that they spent their whole day working on this and that and feel like they are doing really well and are very busy and at the EOD, when they … Continue reading Let’s see the Flashback at EOD

by Sarques at July 07, 2018 09:51 AM

July 06, 2018

Anu Kumari Gupta (ann)

Hello Git!

Want to host your project on sites like GitHub using git and at the same time wish to do it with command line interface instead of graphical user interface? or, Looking for a quick reference to Git? or maybe you don’t wish to read the lengthy documentation to follow a fixed number of steps? or you wish to introduce yourself to git world?  Worry not, this blog will cover all that you need for hosting your projects on a platform like GitHub and say hello to git. Do you want me not to blabber anymore? OK, without wasting much of your time, let’s quickly get into this.

Without actually moving to the steps (because it is essential to know a little about it before following blindly), I want you to have an idea of what the terms mean and refer to. I am trying myself in explaining this to you with simple, layman words. However, if you do not find convincing, you may click on them to know more, from where they are taken and re-framed. Also for those who are new to Git, I should consider them, by saying that, you need to know the terms before moving onto following steps. Make yourself clear about the analogies and terms (Note: I am limiting the terms to what is required in the steps, there are many more) used in the steps before we proceed. And here I go:

VCS – Version Control System, is the management of the projects that you build, helps you to track your process in doing any kind of project and it allows you to use this system by a numerous tools. One such is Git. That means, if you ever want to look back to your own code and revert some changes, using the tools provided by VCS helps a lot. Obviously, you won’t be willing to make several folders, subdirectories to track each changes that you make while building a project.

Repository – A place where your project resides is repository. So, a local repository means a place where your own files are in the system. Remote repositories are versions of your project that are hosted on the Internet or network somewhere.

Branch – GitHub is a place where developers do collaborative projects. It becomes very essential that their work is separated from others, to avoid confusion and maintain clarity. Working on core code might be one such task, implementing features or fixing bugs might be another. The developers branch their work to obtain different versions. The main branch is your origin/master.

commit –  Whenever you want to make changes to your repository, you commit. And after you commit using commands from git, your changes in the project are reflected onto your system. You can add short messages as well.

push – After that you have done commit using commit, you would like this changes made onto a remote server or platform, like, one as GitHub. To make those changes available to your  GitHub repositories, you push the changes.

clone – Whenever you wish to make a copy of a remote repository, you clone it. In other words, you download it to your local system so that you can amend changes, update, etc.

Now one more useful thing to add after understanding some selected terms (you may always refer for more). When you are on the way to host your project on GitHub, you need to understand the levels it is going through. By levels I mean, the performing areas that it passes through. Suppose, you have created several files that constitute your project, in a directory. Now, this is your working directory i.e, the directory where you have started all the work. These files are untracked files (i.e, they are not known by git yet). To make git track your files, you add them so that it can be ready or be prepared to make the final changes. The moment you add them, you send your files to the staging area. You may take the word staging, as laying down the stage to perform something big. Here also, you are preparing your files before commit. At this stage, if you modify any file, you need to again add it. I hope till now you are fine with it. You have reached the staging area. Now, your task is to finally commit (or, make it happen). When you commit, you now have your local repository created, with all the files of your project.

Not to mention, I have a story told to me by Sayan, that could make things clear to you all the more:

You create a new character, Tux. Tux wants to be photographer, who has just bought a new DSLR. Tux plans to be the next travel photographer, who would take the best picture from the top of Mt. Everest. But Tux is a newbie, so Tux starts watching for YouTube tutorials for learning to post process the images. Tux creates a directory named *working* to put all un-processed images. Then, fires up DarkTable to process the images. Every time after a set of similar operations (like crop & rotate, shadows & highlights, etc), Tux creates a copy of the *working* directory and names it `snapshot-{n}. After a couple of operations, Tux stands having “snapshot-1”, “snapshot-2”, “snapshot-3”, …. , “snapshot-100” directories. This directories is history of how Tux developed the image over time. At any point, Tux can go back to a given snapshot and build again on top of it. It’s been a month now, Tux have learned a lot on post-processing images. Tux now mixes and matches multiple images file to create a snapshot directory. One day, Tux while processing the images, goes into experimental mode. and only after a while realized that the changes should be going into two different snapshot directories (`snapshot-139` & `snapshot-140`). Smart Tux quickly thought of an idea, creates a new staging directory. A staging directory works as an intermediate between the working directory and the snapshot directory. So, Tux now works on working directory, and one Tux is happy with the changes
Tux moves all changed files into staging directory, and then creates a copy of the staging directory as new snapshot directory.

Thanking Sayan for the awesome analogy which he mentioned here. Nice story, isn’t? Got cleared? OK, let’s move on to apply Git. Fire your terminal and go to the directory in which you have all the projects. Time to say Hello to Git. Skipping the installation of git in your OS, with the hope that you can follow this. Moving on to the steps:

1. Configure git settings.

You need to configure git, that is, you need to introduce yourself to git by giving your name and email. Perform as below by providing your name in the place of “Your Name” and email id in place of “Your email”:
git config --global user.name "Your Name"
git config --global user.email "Your email id"

Say, you are presently in a directory named git_demo, and you have files as hello.txt, gitfun.txt.

2. To make your current directory as git repository, you have to initiate git by:
git init

An empty repository is initialized, as you can see what it says.

3. Check your status. You will see the terminal mentioning of some untracked files (as I told you about the untracked files earlier). You can always perform this step whenever you wish to know the tracked and untracked files in the directory.
git status

Initially, you will see all the files as untracked.

4. To make git track your file, do
git add hello.txt

After performing this, your file directly goes into the staging area. Now, if you perform step 3 again, i.e, run git status, you will see that hello.txt comes under “Changes to be committed” and gitfun.txt comes under the heading “Untracked files”. Things are getting cleared, what I mentioned above, isn’t it?

If you wish to make changes to hello.txt, no problem, you can create changes.

5. To see the changes that are made to your file (i.e., what is deleted and what is inserted), do
git diff

Note: If you are modifying your file, you need to add it again (step 4) and you can check the status then (step 3).

6. You can also see the difference created in the staging area by
git diff --staged

7. At any point of time, if you feel that you want to unstage it, you may do this:
git reset --filename

7. Now that you are done with adding, be ready to commit. You add a short message along with it, so that, it helps you to comprehend the actual changes or the reason to change, etc.
git commit -m "Your message"

“Your message” can be “Created a new file” if you are committing for the first time. It may be “Updated the contents”, if you are updating the contents. You can simply mention anything you want.

8. To see the committed changes, you ought to do
git log

Now this will give you the information of the author (i.e, you if you have provided your own name and email id while git configuration), message which is committed, timestamp, commit ID.

You have successfully created your local repository. Now you would be willing to host it to GitHub. You should create an empty repository in GitHub before doing this. Say, you have created a repository named as project. After creating, you will see a URL under quick setup. Copy the URL

9. Add your files to the GitHub, perform as below. “Your URL” is the copied URL that you enter.
git remote add origin "Your URL"

To add a new remote Git repository as a shortname you can reference the URL easily (by default its origin). You can alternatively use any shortname in place of origin, but you have to use the same in the next step as well.

10. Push the files to the GitHub. This will require you to enter your GitHub handle and password.
git push origin master

This means that you are pushing your files to the master branch of your created repository.

Hooray! Successfully hosted your first ever project on GitHub!
Do make out time to follow ProGit or GitMagic for more detailed knowledge on Git.

by anuGupta at July 06, 2018 07:58 PM

Janifa M(bismi)

DGPLUG – Day 15

Day 15 was a session about Tor project by Sukhbir Singh, a developer of Tor project. It was a very interactive session.

by janifanowfal at July 06, 2018 05:47 PM

Manank Patni

Day 7

Couldn’t do anything today regarding programming. Was out somewhere. Also missed the #dgplug session because of it. Going to recover the time lost this weekend.

by manankpatni at July 06, 2018 04:29 PM

Siddhant N Trivedi

My Daily Programming Series.

Hey friends,I am an open source enthusiast and very vividly follow the progress of F/OSS.In order to increase my skill set,I am aiming to learn Ruby on Rails and do some Competitive Programming which will help me further in developing web applications.

Presently,I have come to understand that I have wasted a hell lot of my time in useless stuff and thus,from now I am gonna focus and am gonna learn Ruby ,then Rails ,some Front-end stuff from Freecodecamp and simultaneously do some Competitive programming in a really efficiently and productive way.I may also post some blogs about Linux or F/OSS since I am learning them too bit by bit.

Thus,from now,I would be blogging every night about the work or the stuff I learned on that day.

by The Little Aspirant at July 06, 2018 07:11 AM

July 05, 2018

Jagannathan Tiruvallur Eachambadi

Encrypting /home in place

Raison d’être

When I first installed this system, I was oblivious to disk encryption and didn’t factor it in. This resulted in a non-LVM system with some haphazard partitions from subsequent resizing and nuking of Windows in the past few years. One good decision I took when installing was to separate / and /home so this turned out to be easier than I thought.

Preparation

I was apprehensive of ending up with a dead system before today’s DGPLUG session, so I managed to get weechat up and running inside tmux in a virtual console. Next I had the wiki article opened on elinks, a TUI browser. I don’t want to repeat any commands that are already available in the wiki. I would like to make a more cogent story mentioning some caveats in the process. First the resize2fs command to shrink /home took some time. This was done to make space for LUKS header which would be written during encryption. I wish there was warning in the wiki about how long this would take. At least I could’ve enabled the progress option for resize2fs 😀

Encrypting the disk device

After resize2fs completes we can start encrypting the partition. It is interesting to note that cryptsetup-reencrypt is quite recent and I found another project that was developed in parallel; luiksipc, which as the name suggests does luks in-place. But since this functionality is available upstream I didn’t explore the alternative.

cryptsetup-reencrypt doesn’t emit any warnings like the wiki alludes to and this gives me hope that the functionality was stabilized recently. For the passphrase I took Kushal’s suggestion to use XKCD style passwords. gopass includes an option to do it quite easily and it generated a strong yet easy to remember password.

password comic from xkcd.com

This step took more than 4 hours, but I was attending the class and doing something productive in the meantime. The next steps were to grow the filesystem again and then test it out.

Encrypted swap

Since swap holds the data when hibernating the system we have to secure this as well. A swapfile is the easiest approach in my case. Follow the wiki article to create swap but do it under /home since that is what we have encrypted.

Integrating it with Systemd and Syslinux

I would like to skip all the mistakes and go straight to the wonderful solution. The mistakes in this case would only confuse the reader. Thanks to Khorne from #archlinux-newbie I was able to recover quickly after a few reboots.

Add the appropriate hooks

I assume you are using a systemd based initramfs, if not switch to it for the fancy systemd-analyze output.

HOOKS=(systemd autodetect keyboard sd-vconsole modconf block sd-encrypt sd-lvm2 resume filesystems fsck)

Things to lookout for:

  1. keyboard for early userspace functionality to enter the password.
  2. sd-vconsole for different keymaps and fonts which is the systemd equivalent for the keymap hook.
  3. sd-encrpyt and sd-lvm2 are the respective equivalents for encrpyt and lvm2. The former is what prompts for password when booting early on.

Modify kernel parameters in syslinux.cfg

This should be boot loader agnostic but I just like syslinux better after being scarred by grub-mkconfig. If you use grub, I highly suggest using your own grub.cfg like so which was taken from #archlinux. Append the following to kernel parameters,

rd.luks.name=UIID=home resume=/dev/mapper/home resume_offset=OFFSET

resume_offset is obtained from

$ sudo filefrag -v /home/swapfile | awk '{if($1=="0:"){print $4}}'

taken from the wiki article on swap encryption.

fstab changes

The previous section will add the device /dev/mapper/home which we will use in /etc/fstab.

# mounting home
/dev/mapper/home  /home       ext4        rw,relatime,lazytime,data=ordered,nodev,nosuid  0 2

# swapfile
/home/swapfile    none        swap        defaults                                        0 0

Most of these settings are opinionated, so I would suggest looking at fstab(5) and ext4(5) for explanations. This completes the loop to mount the encrypted device opened by sd-encrypt hook. Like most other things systemd takes care of dependencies and generates appropriate .mount and .device files.

Last step

Generate initramfs, reboot and rejoice!

In Arch Linux,

$ sudo mkinitcpio -P

to get initramfs and initrd.

At the end I would say my understanding of all the different systems made it difficult to get it running quickly. Systemd probably made some of this bearable by integrating disparate systems and providing much-needed dependency tracking.

July 05, 2018 06:55 PM

Janifa M(bismi)

DGPLUG – Day 14

I couldn’t attend Day 14 (yesterday’s session) of dgplug because I wasn’t well. Even I couldn’t inform this before the session started in the channel. I was tired that much(didn’t have the energy even to take my laptop). And today, I read the logs and came to know that it was an introduction to git by Sayan Chowdhury, and followed the steps in the log.

by janifanowfal at July 05, 2018 03:17 PM

Kuntal Majumder (hellozee)

Languages are just tools, you idiot

Note: Don’t take the title onto your ego For sake of clarity, I would like to make some terms used in the post clear, it may mean something other to you but for the simplicity of the post, I would be using them in a particular way:

July 05, 2018 01:57 PM

Kumar Vipin Yadav (kvy)

Jump Statements In C

Jump Statements In C :-

Before moving on function problems let’s read about jump statements.

Jump Statements are the Statements those shift the control of execution.
IN c language we have 5 jump Statements.

1. Break
2. Continue
3. Exit
4. Goto
5. Return

Let’s read about return statement first.

Return:-

A function may or may not return a value. A return statement returns a value to the calling function,
and assigns to the variable in the left side of the calling function.
If a function does not return a value, the return type in the function definition and declaration,
is specified as void.

Break Statements :-

The break statement is a jump instruction and can be used inside a switch construct, for loop, while loop and do-while loop.

The execution of break statement causes immediate exit from
concern construct and control is transfers to the statement following the loop.
In the loop construct the execution of break statement terminate loop and further execution the program
is reserved with the statement following the body of the loop. The following program illustrates the use of break statement.

This program illustrates the use of break statement.

It will print number if it is positive else it print,
Entered number is Negative hence breaking the program.

#include<stdio.h>
int main()
{
    int n = 1;
    printf("Enter a number : \n");
    scanf("%d",&n);
    if ( n < 0 )
      {
         printf("Entered number is Negative hence breaking the program.");
         break;
      }
     else
 
    printf("Entered number is %d.",n);
    return 0;
}

Output :-

Enter a number :
-10
Entered number is Negative hence breaking the program.

Continue:-

Continue statement can be used only inside for loop, while loop and do-while.
execution of these statement does not cause an exit from the loop but it suspend
the execution of loop for that iteration and transfer flow of control back to loop
for next iteration.

The following program illustrates the use of Continue statement.

It will read 10 positive number and display there sum.

#include<stdio.h>
int main()
{
 int a,i,sum;

 for ( i = 1 , sum = 0 ; i <= 10 ; i++ )
   {
       printf("Enter a number \n");
       scanf("%d",&a);
       if(a<0)
        {
          i--;
          printf("Please enter a positive number");
          continue;
        }
      else
      sum=sum+a;
   }
    printf("%d \n",sum);
    return 0;
}

Output:-

  Enter a numbers : 
  12
  34
  57
  -898
  Please enter a positive number : 46
  345
  546
  56
  345
  3
  -645
  Please enter a positive number : 2234
  3678

Exit:-

exit is an inbuilt function from stdlib.h  header file. This function is used to terminate the program.
This function require an integer argument, If it is zero then program will terminate with successful status,

if it is non-zero then program will terminate with unsuccessful status.

Try to understand this program.

#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a,i,sum;

   for ( i = 1 , sum = 0 ; i <= 10 ; i++ )
  {
      printf("Enter a positive number \n");
      scanf("%d",&a);
      if(a<0)
        exit(0);
      else
        sum=sum+a;
 }
   printf("%d",sum);
   return 0;
}

Output:-

Enter a positive number 
12
Enter a positive number 
23
Enter a positive number 
34
Enter a positive number 
45
Enter a positive number 
-78

Goto :-

In C programming goto statement is used for alterating the normal sequence of program execution
by transfering control to some other part of program.Syntex of goto statement
goto lable;
……
…….
……..
lable:
statements;

In this Syntex lable is an identifire when the control of program reaches to goto statement, the
control of the program will jump to the lable: and execut the code below lable.

Example :-

#include<stdio.h>
int main()
{
    int i=0;
     Vipin: // the lable
    printf("%d \n",i);
       i++;
    if(i<=10)
    goto Vipin; 
     // It will flow controle back to Vipin
  return 0;
}

Output :-
 1
 2
 3
 4
 5
 6
 7 
 8
 9
 10
NOTE :- We genrealy avoid Goto statement in programming.

Reason to avoid goto statement :-

Thought goto statement give power to jump to any part of the program complex and
tangled. In modern programming, goto statement is considerd a harmful construct and a bad
programming practic.

The goto statement can be replaced in most of C program with the use of break and continue
statements, in fact any program in C programming can be written without goto.
It does not have any predefined work.

by kumar vipin yadav at July 05, 2018 12:10 PM

Shiva Saxena (shiva)

DJango startup commands

Hi! I have been learning django these days. I came across some basic commands that every beginner should know about. 

Whenever I work on a python project I prefer (and recommend) to work in a virtual environment. For virtual environment you may either use virtualenv, virtualenvwrapper, but I prefer pipenv. More detail about all three of them is available here.

To start a project in django first make a directory say “project” and change directory into it.

$ mkdir project && cd project

Now install django through “pipenv”:

$ pipenv install django

After django is installed, start the virtual environment with:

$ pipenv shell

Then start the project:

$ django-admin startproject newsite

The output of “tree” in the project directory would be like:

$ tree
.
├── newsite
│   ├── manage.py
│   └── newsite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── Pipfile
└── Pipfile.lock

2 directories, 7 files

Now get into the “newsite” directory just created:

$ cd newsite

Now populate the basic database with:

$ python manage.py migrate

or as manage.py is executable you may go with

$ ./manage.py migrate

A new database (db.sqlite3) file in the directory would be created.

Now run the web app with:

$ python manage.py runserver

You may go to your localhost IP to check your empty django project working.

To make an app inside your project, you must be inside “newsite” directory (where manage.py is present). To create an app use:

$ python manage.py startapp newsite_app1

If you’ll make some models inside your “newsite_app1” and want to create corresponding database tables inside your django project database, then you’ll need to makemigrations and migrate your models with:

$ python manage.py makemigrations $ python manage.py migrate

If you’ll have to go to the admin panel of your django app by appending “/admin” in the localhost URL (i.e 127.0.0.1.8000/admin). Here you’ll need a username and password to log in. For this, first create a superuser (admin) for mysite.

$ python manage.py createsuperuser
Username (leave blank to use 'shiva'): 
Email address: shiva@example.com
Password: 
Password (again): 
Superuser created successfully.

I’m keeping this post short. For any query and suggestions to improve this post with more django commands and usage of manage.py, please feel free to write in the comments section below.

Thanks for reading!

 

by Shiva Saxena at July 05, 2018 06:18 AM

Manank Patni

Day 6

Todays Story:-

Didn’t do much programming today. Had a typing lesson to improve my typing skills. Solved a HTML/CSS for college quiz. Also had a session about Tor Project on the #dgplug session.

by manankpatni at July 05, 2018 05:35 AM

July 04, 2018

Anu Kumari Gupta (ann)

‘Turtle’: Python

If you are well-versed with Python Programming language, you must be knowing the beauty of it. You know we have so many modules out there in Python, some of them are such that you might not even know that they exist. We have a lot in Python and so is its functionality. If you play around with the help of Python modules, you will see how much fun it is!  And not only the modules, Python as a whole is fun. It’s simple to use and highly flexible. From simple, sweet functionalities to modules that handle complex computational problems, Python is considered a boon. There’s a lot to discuss about Python and its use cases, application areas, etc. But here, we will discuss about one of the graphic object model support that is in Python.

Turtle is one such module from Python that helps you create a data object called turtle that can be used to draw pictures, design according to your desire. There are several others that is used for graphic designing. Imagine speaking to a turtle, to which, you can instruct to design beautiful, elegant designs on your screen. Now, just imagine what possible instructions should run in your head to give to the turtle, if you have to instruct the turtle to design? Maybe you want the turtle to move ‘accordingly’ such that an impression is made onto the screen? And what do you think what should be that ‘accordingly’ directions given by you? Maybe, to move forward and backward, or left and right! Right? You order and turtle is ready for you to work. Still wondering, how is it actually going to take place? But you already said the answer. It is as simple as to say. Set your mind with curiosity and follow along!

First import turtle module:
import turtle

Set-up a graphics window (This is basically your canvas or design area):
win = turtle.Screen()

Create your turtle and Name it:
tort = turtle.Turtle()

Now, order your turtle to move:
To move forward with 50 pixels(say) in direction it is pointed to :
tort.forward(50)
To move backwards with 50 pixels pointing to same direction:
tort.backward(50)

To change the directions in which turtle is pointing:
Rotate the pointer clockwise by 25(say) degrees :
tort.right(25)
Right the pointer anticlockwise by 25 degrees :
tort.left(25)

Now that we know how to start off, let’s create our first program in Python( I’ll be showing you in Python 3) using turtle:

Lets draw a square (200 X 200):

>>> import turtle
>>> win = turtle.Screen()
>>> tort = turtle.Turtle()
>>> for moves in range(4):
...     tort.forward(200)
...     tort.right(90)

When you try this out, you will see something like this:

Screenshot from 2018-07-04 21-58-39.png

Wooh! Congratulations on your first basic program (HelloWorld of graphics with turtle in Python).

You can try out some similar shapes and get the feel of it. The above looks very plain and uninteresting. Isn’t it? What is missing? Yes, colors! Let’s add color to it and give it a feel. Also, we have some more functionalities like you can instruct turtle to pick up its tail so as not to draw anything at the moment( this is useful in cases of drawing on screen at different places using the same turtle), change the shape, etc. Let’s discuss:

To set the background color:
win.bgcolor("green")

To set the color of the pointer( or our turtle ):
tort.color("blue")

To set the width of the impression on the screen (say, width = 15):
tort.pensize(10)

To pick up the turtle tail so that it doesn’t create impression on the screen:
tort.up()

To create impression on the screen at the current location:
tort.stamp()

The above returns a stamp_id for that stamp, which can be used to delete it by calling clearstamp(stamp_id)

To set the turtle’s speed to an integer value in the range 0 to 10 (If no argument is given, current speed is returned):
tort.speed()   #returns the speed
tort.speed(9)  #sets the speed

To draw a circle using turtle( say, radius = 25):
tort.circle(25)

To undo the last action performed by turtle (Number of available undo actions is determined by the size of the undobuffer):
tort.undo()

To return the current position:
tort.position()

To goto a certain (x, y) point:
tort.goto(50, 50)

To indicate the starting point of a filled polygon:
tort.begin_fill()

To close the polygon and fill with the current fill color:
tort.end_fill()

To change the shape of the pointer, you have options among ‘arrow’, ‘classic’, ‘turtle’, ‘circle’ or ‘square’:
tort.shape('turtle')

Till now, we have discovered just basic steps but you can try out several designs by experimenting. For example, try this out:

Screenshot from 2018-07-04 23-48-05.png

I have used here a small code as:

>>> import turtle
>>> win = turtle.Screen()
>>> win.bgcolor('green')
>>> tort = turtle.Turtle()
>>> tort.color('blue')
>>> tort.shape('turtle')
>>> tort.up()
>>> for size in range(5, 200, 2):
...      tort.stamp()
...      tort.forward(size)
...      tort.right(50)

Here, I have used a background color of green and with the blue turtle shaped object tort, I made the turtle leave an impression, making it move forward, and rotating it each time so that it can form a circular pattern, on an interval.

You can try out something like this:

Screenshot from 2018-07-05 02-17-57.png

The code for the above:
>>> import turtle
>>> win = turtle.Screen()
>>> win.bgcolor('black')
>>> color = ['red', 'blue', 'yellow', 'green', 'lightblue', 'orange','lightgreen']
>>> tort = turtle.Turtle()
>>> for itr in range(360):
...      tort.color(color[itr%7])
...      tort.forward(itr)
...      tort.left(62)

Here, I am taking a list and keeping some colors in it and using in the iteration to change the colors each time. The code is intuitive to understand the actual flow occurring.  You make the turtle move forward with continuously increasing values used in the loop and turn the turtle by 62 degrees each time. Other portion of code remains same, that is, importing turtle module, setting up the display, etc.

So, now that you have started designing so much, paint out your imagination on screen! You can also use two or more turtles combined. Combined turtles can be used to make much more impressive and beautiful designs. For more info, you can refer the original documentary.

Happy coding:)

by anuGupta at July 04, 2018 09:49 PM

Manank Patni

Day 5

Things done today:-

  • Learned about Git and Github in #dgplug training.
  • Uploaded some of my old projects to GitHub.
  • Customized the blog.

by manankpatni at July 04, 2018 05:46 PM

Abdul Raheem (ABD)

Linux And My Experience

Well, I Started Using Linux Since Last 5-6 Months And Am Becoming Hooked To It, I Have Used Ubuntu And Fedora With Windows 7 (dual boot) And After Some Days I Was Enjoying Using Fedora And I Dual booted it On my Desktop As it Provides Many Useful Tools Like LibreOffice Draw, Calc, Impress, Writer, Etc…

I Am Just A Beginner In Using Linux Operating System, I Was Not Very Much Familiar With Terminal, In One of Our Classes We Were Given A Book To Go Through  LYM (Linux Command line for You and Me) I Started Reading The Book And Now I Am Familiar With The Basic Commands Am Enjoying Using And Now Am Thinking That There Is No Use Of Mouse To Our Computers Because We Can Do Almost Every Thing Using Command, Am  Looking Forward To Learning Many More Things During These Sessions ;).

 

What Is Linux Operating System:

The Linux open-source operating system, or Linux OS, is a freely distributable, cross-platform operating system based on Unix that can be installed on PCs, laptops, servers, supercomputers and more.

The Linux Command Line:

For quite some time I was thinking of learning The Linux Command Line. Thanks to dgplug Summer Training, I have taken the first step to Learn the Linux Command line. We are using the LYM (Linux Command line for You and Me) book in our sessions to learn the basic Linux commands and to understand the GNU/Linux system.

A Short Note On CLI And GUI:

A CLI (Command Line Interface) is a text-based representation in which the user types the commands to operate the Computer.

A GUI (Graphic User Interface) is a graphical representation in which the users can interact with Computer.

by abdulraheemme at July 04, 2018 12:15 PM

sahil

My CLI Journey …..

In this article, I will be sharing my journey of using the terminal and also b giving the reason why you should use it too. It’s fun, powerful and elegant too earlier I was also skeptic too about it. man… I was way too addicted to GUI that I was really scared to first time trying too as in GUI everything is very easy and reliable too but after trying CLI for few months I have to say that CLI is way too easy than GUI and more reliable too, So lets get started.

What the heck is CLI …..?

So here CLI stands for Command Line Interface. Command Line Interface is a text-based interface that is used to operate software and operating systems while allowing users to respond to visual prompts by typing single commands into the interface and receiving a reply in same way .

CLI is quite different from the graphical user interface that is presently being used in the latest operating systems.

CLI is an older method for interacting with application and operating systems still i find it more fascinating to use CLI more that GUI.

Brief History

CLI was introduced with the teletypewriter machine. This system was based on batched processing. Modern computers support CLI although. Another feature of CLI is a command prompt, which is employed as a sequence of characters in the user interface, or shell .

MS-DOS is the best example of CLI.

Why Should You Use It?

The Terminal in unix is a wonderful, powerful tool. When transitioning from the world of windows it is hard to appreciate this because of the Windows (CMD) shell is rather, how do I nicely say, lacking, Most unix default shells have several advantages.

  1. It is standardized through POSIX and the Single Unix Specification, so a script you write for one computer will likely work on all POSIX compliant machines (assuming you restrict yourself to standard commands, of which there are lots). Microsoft has a habit of including tools in some versions and not in others, making batch programming very hit or miss
  2. Because Unix was built from the terminal up, most everything is configurable from the command line. Windows was like this up to a point, but they opted to drop the 16-bit subsystem and DOS with it. Now the GUI is the only way to change some things in Windows.
  3. Because it is so flexible. Commands can be piped together (ls | grep filename), they can be captured (gcc program.c > ./standard_out 2> ./standard_error), and can be substituted (ls /home/`whoami` or ls /home/$(whoami))
  4. Because UNIX utilities are designed to do one thing, and do it well. Just look into awk,grep,sedwget or a host of others. By themselves they achieve a single task, but given #3 and #2 they can be built into powerful expressions.
  5. Because of the ability to automate tasks. cron and bash scripts allow long, complicated, and/or repetitive tasks to either be simplified or automated completely.
  6. Because humans are prone to error. Relatively short shell scripts can be used to change settings in a consistent manner. Safety checks can be built into the scripts, rather than relying on users to know which commands are safe to run in different circumstances.

My journey …

As I said above I was first scared that I was unable to understand the bash commands but after watching few tutorials i started feeling confident and was amazed to explore the power of CLI how fool was I that I was fully reliable on Windows. Started my journey with bash which came pre-installed in Ubuntu and after learning bash i switched my editor from sublime text to Vim it has a learning curve but i would highly recommend you to use it rather than using heavy editors although my journey is not that exciting but in simple words I would recommend that start using terminal even for small tasks like installing software of even for shutting down the computer.

 

 

by straystream at July 04, 2018 10:38 AM

Kumar Vipin Yadav (kvy)

Function In C

Modular programming:

Modular programming is programming concept. This concept allow us to divide a large solution
into several small modules. Each module is devloped independently and act is a solution of small problem.

Need/Advantages of modular programming :

1. A module developed once and reuse several times in a program.
2. Due to readability, A problem will have less no of instruction.
3. A problem has less numbers of instruction has less number of errors.
4. program is easily maintainable .
5. program is easily extendable.

In C language to apply modular programming we use function or structures.

Function:-

A function is an individual unit of small set of instruction to solve a specific task.
Function may be inbuilt or user Define.

User define function:-
If a function not exist in language, it can be devloped by the user.
The development of a function has 3 steps.
1. Function declaration ( Prototype )
2. Function calling
3. Function definition

Function declaration:-

Function declaration is a statement that declare a user define function, It describe the name of function,
and return type of a function. The definition of a function must be placed out of other function
in C language.

e.g.

Function

Argument :-

Argument can be value or variable which given to a function during it’s calling.

Function calling :-

This is a statement where we call a function by using it’s name. During calling a function we have
to pass all the Argument to the function.we can call a function several times.

Function Definition:-

Function Definition is the body of function (set of instruction). this body will execute when we call
a function.The defection begin from header row. This header row contain return type,name of function and Argument variable of a function. A function definition may/may not return a value.

Defection of a function can not be placed within another function. Definition must be placed in globle scope of program.

A simple Function who calculate average of 4 integers :

#include<stdio.h>
void main()
{
    int A,B,C;
    float res;
       // here we are declaring a function
    float average ( int , int , int , int );
    A = 12, B = 23 , C = 34;
       //now i am calling my function
    res = average(A, B, C, 45 );
       // see how to pass Arguments
    printf("Result is %.2f \n",res);
       // here %.2f will allow 2 values printing after decimel
}
      // now i am defining my function
      // here you have to give names to argument 
      // here you can give names to argument what ever you want
   float average ( int num1 , int num2 , int num3 , int num4 )
     // here value of A copy in num1
     // here value of B copy in num2
     // here value of C copy in num3
     // here value of 45 copy in num4
{
     float z;
     z = num1 + num2 + num3 + num4 ;
     z = z/4;
     return z;
        // we use return keyword to return a value back to main 
       //function
}

 

 

by kumar vipin yadav at July 04, 2018 10:26 AM

Prashant Sharma (gutsytechster)

A short note to CLI

CLI(Command Line Interface) has always been a prodigy to developers and to all who knows how to use it. In our last session of #dgplug, we all were told to write a short experience with CLI.  I was introduced to CLI by my friend geekyshacklebolt at first. He was already using it at the time and wrote a short blog on it. So, I have started with his blog and as soon as I reached its end, my curiosity leads me to explore more and more. I started hunting for the topic on google and read many tutorials and gone through a lot of links. I started using it for my regular tasks. The very first thing I do when I start my computer is to press three magical keys on my keyboard which are Ctrl + Alt + T. This is the shortcut to open the terminal in Ubuntu.

As soon as I commanded over basic commands and functions which we can perform using CLI, I wrote an introductory blog on it. You can see that here. It was always nice using it. At that time, I was also working on my keyboarding speed. Well, once you get command on touch typing, using terminal becomes fascinating. I have learned a bit more and get to know about the use of Filters and wildcards which when used with regular expressions can make wonders in few seconds.

It’s true that it may be hard to use CLI for a beginner, but we’re not going to be the beginner always. We grow, do mistakes(sometimes blunder mistakes) but we learn from them. CLI always tempts you to get the best of it. There are a lot of options to do one thing and once you start using it, you try to explore it more and more. It doesn’t mean that if you are using CLI, you have to ditch GUI(Graphical User Interface). As I have said earlier also, choose the one which suits your job.

If I have to point out some major benefits of using CLI, then those would be:

  • Faster working speed as it interacts directly with the shell.
  • Use of shell scripts can make your regular tasks done in seconds.
  • Aliases prove much beneficial for long commands and much useful for novices.
  • They have a wonderful collection of man pages just write –help after a command and you would get all its uses and options.
  • Every command has a number of command line options which shows the versatility of CLI.
  • Use of Piping and Redirections can help you managing the outputs of different commands.
  • Once you get familiar with CLI, you can configure different tools by yourself. The configuration files won’t be aliens for you then.
  • There are shortcut keys available to ease your tasks. Features like tab completion and the ability of up-down keys to use the previous commands prove to be very helpful.

These are very few of the many. But as I said these are the major ones, which I have experienced. As everything has some minuses, CLI also have. Tasks like video editing, net surfing which requires the use of GUI can’t be done efficiently by CLI. But I feel that CLI hasn’t made for this. It has been made to do more complex tasks. Many of you might have a different point of view. Though we can all agree to disagree.

That’s all for now. If you have any view regarding this post, feel free to share your thoughts in the comment section below.

Be curious and keep learning!

by gutsytechster at July 04, 2018 09:35 AM

Kumar Vipin Yadav (kvy)

Linux And My Experience

Well, I start using Linux since last 2 years and i became hooked,
I haven’t try too many Linux distros But I like Fedora,
Many things have drawn me to Linux.
I am constantly amazed at the large selection of high quality distros available to people for free.
And I found stability and security which is on-par or even superior to that of Mac OS X.
It is fun to became the super-user, It’s like having power to do anything,

It provide a lots of useful tools like LibreOffice Draw, LibreOffice Impress, LibreOffice Writer,
Boxes, Maps, Software, Calculator, Calendar, Cheese etc. inbuilt to make your work easier.

As a result of using Linux, I have become an open source software enthusiast,
who admires the work of true (beneficial) hackers.
Probably to most people, the term “hacker” has negative connotations,
which is largely the result of the misuse of this term. A “true” hacker is not someone who tries to break in to other people’s computers,
and steal things or commit other criminal acts. Instead, true hackers work to do good things with their talents,
such as to create and improve open source software,
like Linux for example. In short, true hackers build rather than destroy and give rather than steal.

Hope you will start using Linux as soon as possible. 😉

by kumar vipin yadav at July 04, 2018 06:08 AM

Ananya Maiti

Understanding the Linux Command Line

For quite some time I was thinking of learning Bash scripting. Thanks to dgplug Summer Training I have taken the first step to Learn the Linux Command line. We are using the LYM (Linux Command line for You and Me) book in the classes to learn the basic Linux commands and understand the GNU/Linux system.

Why should you learn command line ?

  • The command line is a very powerful tool for a GNU/Linux system. You can do anything from the command line starting from editing a text file to shutting down your system.
  • Anyone who wants to understand the GNU/Linux system must have a understanding of the command line.
  • Automating day to day to day stuff becomes easier if you know command line. This is especially indispensable for Sys Admins and Network Managers.

There has been already few classes in dgplug Summer Training where we were asked to read few chapters from the book and ask doubts regarding it. I use Fedora 28 as my Linux distribution where I use the gnome-terminal for running the shell commands.

I have learnt quite many things till now. I am on the seventh chapter of the book now which is “Linux Services“. Slowly I have been sinking all the commands to my mind and I hope to make use use of them to make my life easier with my Linux machine. The book is well written for a beginner who is just starting with Linux command line on the other hand it has also references to some important topics like FHS .

Thanks to the authors for their efforts to write this. I  hope I can contribute to it at some point 🙂

by ananyomaiti at July 04, 2018 01:51 AM

July 03, 2018

Vishal Singh Kushwaha (vishalIRC)

Linux Shell is Fun

Every once in a while a developer needs to find his way through CLI. Where the GUI gives you a good looking interface, it abstracts away the powerful tools behind the scenes. Sometimes you just need raw power, that is what you get with the Shell CLI.

Terminal -vs- Shell

A terminal is a Hardware device which helps users input data into the computer and also display or print the output.  Back in the early 70’s Digital Equipment Corporation (DEC) released its VT50, a clunky piece of hardware with 12 rows 80 columns for uppercase letters as its display.  Today we use terminal emulators in our Operating Systems, commonly known as terminals.

A shell on the other hand is a User Interface which let’s you access Operating System’s services.  The shell can be GUI or CLI.  GUI shells are meant for people new to computers and lower the bar for entry.  Since GUI shells also have disadvantages, they often come with CLI shells.

A Script to Clean Up a Messy Desktop

Peace out!

Vishal K.

by vishyboy at July 03, 2018 09:59 PM

Priyanka Saggu

A Snapshot to my Command Line Experience.

I remember the time when I was just running away from even installing Ubuntu in my Laptop. And now, right from the day, I have dual booted it, there is no looking back at Windows. Though command line was a part of my curriculum, I used it on Windows also using a Unix look-alike terminal–Git Bash. The use was not extensive but I can say it was just my beginning with CLI. Finally, moving onto Ubuntu, there is no denying the fact that the real essence of the command line comes here only. Using CLI is in itself a satisfying thing for somebody transitioning from Windows to Linux. And I was a newbie, so same was my case too. Command line seems to be the lifeline of every task we perform on Linux distros and I enjoy doing all my work through it. Afterall, for every new command we try, there comes a new chapter of Linux to learn and implement. Command line seems to be never-ending, though more fascinating than any GUI platform.

I just wanna say to all my friends and readers, that as soon as it is possible, switch your OS to some open source OS, to experience the real zeal of learning computer science. That would surely prove to be the real Game-changer.

by techps2k17 at July 03, 2018 09:29 PM

Mayank Singhal (storymode7)

CLI-MAX! (Spoiler: Unrelated to movies)

GUI (Graphical User Interface) have been amazingly popular, but CLIs? If you want to know which one is powerful, just think that GUI can be made using CLI!

CLI(Command Line Interface) is the hidden power. I started realizing it when I switched to Ubuntu from Windows 7.  Initially I used the GUI in the Ubuntu, but I didn’t let that conquer me. I knew CLIs are amazing.  So to learn CLIs I decided to do everything using terminal.  Slowly I learned about various commands.  Then I started to look in their --help portion.  Gradually my fascination was increasing. And now, I didn’t have to make myself use the terminal, but I wanted to use it more and more and more!

Anything and everything that I was able to do using GUI was more configurable if done via CLI.  But just singing  songs of victory of command line interfaces won’t motivate you unless you’ve had your share of irritable & Whoa! moments with it.

Now came touch typing.  Last year when I was reading DGPLUG’s logs, I came across touch typing.  Now I knew I wanted to learn it.  I practiced it daily, diligently.  Initially, the fingers started hurting and nothing serious was observable.  But within a few weeks I started typing without seeing at the keyboard, though slow.  But I continued practicing.  And the speed improved.  And since then I’ve always wished not to leave the keyboard!

Next big push towards cli was Vim (Text Editor).  I had always used softwares like word, wordpad, notepad, gedit and so on.  But then I came to know about Vim (again from DGPLUG’s logs), initially I just used it for some days to get the hang of it.  And boy, I just fell in love with it!  Now I always search for Vim keybindings everywhere.  But nothing is permanent.  I’m going to learn Emacs too.  Who knows which one wins the war!

Bash, zsh, csh, fish a lot of shells are there, but currently I am using Bash.  I have seen lot of folks using zsh, and fish.  But for now I am comfortable with how bash treats me.  To me it’s a perfect recipe, with right amount of user friendliness and right amount of bling.  I haven’t experimented with it a lot, but yeah powerline looks great on it.I plan to customize the tools I use daily, if you have any suggestions, do comment!

See you all again soon! Till then don’t CLIng to one tool, try others too 🙂

 

storymode7

by storymode7 at July 03, 2018 07:19 PM

Karan Pratap Singh (kps)

The Linux Command Line

This is my first blog post and I am glad it is about one of the best things I ever came across: The Linux command line. It has been almost a year since I started using it and I feel like it is the most enjoyable thing I ever came across. This started with my delight regarding the hacker culture in my college first year. Command line to me means, absolute transparency of what the system does and complete dominion over it. I personally despise GUI for any task, even in cases where it may be more efficient than command line.

It is a really vast subject to dive in and has a lot to it. I have loved it since the day I started using it and I believe this love will be retained for the rest of my life as an engineer.

 

by kpsonline8273 at July 03, 2018 06:44 PM

Shiva Saxena (shiva)

My experience with Linux CLI

Hey! With this post, I am sharing my experience with Linux command line interface.

Before I learned about what is Linux and what is CLI, I couldn’t imagine myself working on a computer without any mouse and GUI. But, when I started learning Linux about a year ago, then CLI was something that sought my attention and I started to learn it.

Command by command my interest to operate a computer without any mouse and GUI was increasing rapidly, and I started feeling to learn more. It used to give me a geeky feeling, than using the GUI. I was learning gradually (still doing) to operate all those tasks via Terminal on Linux.

The first source I used to learn CLI was this.

And my first blog about CLI is available here.

I can say that working on CLI is really interesting and also enhances your production speed. I feel it as fun and like it. Gradually, I’m enhancing my skills to learn shell scripting and what is the difference between different shells their commands and all.

I encourage you to learn Linux CLI, if becoming a developer is your dream 🙂

Thanks for reading!

by Shiva Saxena at July 03, 2018 06:29 PM

Naman Sharma (cypher01)

Command Line:​ A tool to ‘truly’ command your machine

Have you ever tried to perform some tasks but denied by the system in the process of doing so? Well, doesn’t it makes you seem like aliens rather than owners of your own computers? So, to balance this difference of control we have terminals to our rescue.
We are full of options as to choose which Linux based OS we would like to choose. Some of the popular Linux based OS are Ubuntu, Fedora, SUSE and many more. Each has its own features and tools but common to all and the strongest of all tools is the terminal.

bash-161382_960_720

Terminal – What is this?

It is a tool available to enter commands which on execution talks to the shell. Now, what the hell this “shell” is? Well, this not hell rather it is heaven for developers. This is the piece of software which interacts with computer hardware after interpreting the commands in the terminal. One of the most popular shell is “Bash”.

How was my experience using terminal?

Well, at first it seemed like a total waste of time and effort as there was nothing fancy about the command line, just like any novice user there was nothing peculiar that peeked my interest. But as developers, we are supposed to interact with the command line and it was asked by our instructor during the training at #dgplug so I decided to give it a try.
After getting a little understanding about the commands and syntax I was able to perform many actions with commands of few words. Then after unraveling the more advanced features like piping command line really peaked my interest. All you have to do is type a bunch of commands in the terminal and make the computer do your bidding. These features help in combining various highly specified commands and club them together using piping operator and forge a command which lets us perform a task of any difficulty easily.

The ability of command line to manipulate computer as per user’s will makes it the crown application present in our PC. Also, the advanced features are like the gems of this crown(shining brightly, having its own glory).

Not only it makes any task possible but also fast. Once you get your hands on the terminal you would be able to perform any task more easily and lightning fast.

Only gain, no pain 🙂

So if there are so many features of the terminal than why not use it. The more you use it, the more connection you would feel with the machine and then only it will seem like you truly own the machine.

With this, I bid goodbye. See you soon seekers.

by Cypher at July 03, 2018 06:18 PM

Sehenaz Parvin

A new timeline

“Cut , copy ,paste. This step that step do this step in that case and bla bla bla” – so sick and tired of these same and boring flow of steps and procedures for every function to carry out successfully . Tried hard of finding a new window out of this same old stumbling windows functioning. Thanks to Linux system for providing such a user friendly environment.

I heard about Linux from my brother for the first time and I really liked the idea of it. But there was no proper guidance or responses available here. Slowly it disappeared and I had to deal with the same old techniques again.

After four years, I met Kushal Das , the founder of dgplug. He gave me the first idea of Linux again and from then a new timeline has started in my academic background. The commands are so easy and interesting and with a lot of exciting features and excellent security services.

To gather further information about this the joined the summer camp of Linux training and its the best experience ever . I got to know not only about Linux system but a very detailed information about the open source community and the needs and ethics of software privacy. It has been a few weeks that I have started this and I have gained the knowledge of basic concepts and commands like cat, cp , cd , sudo , creating soft links , hard links, file storage, creating directories and many more to list.

Linux commands are easy to remember and learn it. Actually it doesn’t needs to be remembered. Practising daily makes it easier and friendly version more. I hope I will be completing all the basic chapters of Linux soon and get away with new and more exciting features of it. Till then practice , practice and lots of practice!

by potters6 at July 03, 2018 06:15 PM

Manank Patni

The Linux CLI

The Linux Operating System can be easily used and operated by anyone using GUI provided by various desktops environments like KDE, GNOME etc, but the real power of linux can be felt and harnessed only by using it through the command line interface which looks like a black screen with a username and a cursor and is called Terminal. The terminal is the interface through which we make the linux machine do things. Like this :-

But in order to do so we need to know the right set of commands their syntax, the parameters they need etc.

So, as I said earlier we can use the Linux OS via GUI but that is not possible everytime as linux is present in places where a screen or memory to run graphics is not available. For eg:- If you need to access a remote server you cannot use a GUI as the server doesn’t have those features and you have to use the command line interface only.

First Interaction with CLI :-

The first interaction that I had with Linux cli was during the school days when i used to install it on my PC just for fun and also learning purposes. I knew all the basic commands like to copy, move, list files make files, edit files etc. But the knowledge was limited to very basics only.

Learning Advanced Topics:-

While I was in the first year of my college I joined a training organised by the college for RHCSA. So there I got to learn more about advanced topics like adding users, managing users, services, package installers, managing group, permissions etc. The training was of about 10 days and 4 hours daily which gave me a pretty solid base of linux CLI.

Another encounter with CLI :-

Also during the summer trianing of the #dgplug 2018 we are given a site from where we have to learn the CLI. The topics covered are great and give a very broad knowledge of various commands. By learning here I am able to revise all that I had previously learned along with learning a lot of new things.

So, we learn from the site and try commands on our systems and then if any doubt we can ask at our tge IRC channel. Though I haven’t asked many questions till now but I will be doing so in future. The site is created by our trainers Kushal Das and Jason Braganza. The book is great and is very handy for having a quick look whenever needed.

So, I still haven’t completed all the chapters but I am on it and will try completing them this week.

In the end, All of us know that having the knowledge of linux is very essential for a programmer and hence I will be working hard in excelling it.

by manankpatni at July 03, 2018 06:10 PM

Day 4

Today’s Summary :-

  • Installed coala and got assigned to a newcomer issue.
  • Read mbuf 3rd class logs from #dgplug logs archive about various tools used in programming
  • Learned about creating a flask website


Refrences :-

  1. https://dgplug.org/irclogs/mbuf_3rdclass.log
  2. https://docs.coala.io/en/latest/Users/Tutorial.html
  3. https://github.com/coala/corobo/issues/531

by manankpatni at July 03, 2018 05:53 PM

Gajendra Saraswat(Sarques)

Linux Progressing:1

I had just a beginner knowledge of Linux which is just not enough to understand this grand majestic thing, so now i am training in linux with dgplug and i am willing to be a part of the community for coming forward years! This will be a matter of proud for me to be a … Continue reading Linux Progressing:1

by Sarques at July 03, 2018 05:40 PM

Vivek Shukla

The Art of Cinematography : Chivo

When you’re shooting with long lenses, even if you’re shooting a close-up, you feel the air, the distance between the camera and the subject.
– Emmanuel Lubezki

Cinematography has been a keen aspect of filmmaking . The way we see , perceive and admire the aesthetics of any movie is lead on the foremaking ground of cinematography   It’s a tool which can change your whole experience of a film withought even noticing it . There has been many great cinematographer each with their own class one that stood most to me is three times in a row academy award winning cinematographer Emmanuel Lubezki .

THE REVENANT

There is some sort of charm and surrealism in his work i just admire with all my heart . The way he deal handheld shots is pinnacle of raw beauty captured in equisite manner . His handheld work at ace can be seen in Children of Men and The Revenant .

THE REVENANT

While he achieved a remarkable feat in Birdman . The whole film look like a immaculate long shot , of course it’s not but continuous long shots are also one of the speciality of Emmanuel Lubezki . You can almost find it in most of his work .  Birdman is just a peculiar case .

5441302aaa8ef57e139fa061_birdman-cinematography

Now comes the best part which i saved for the last , Wide angle lenses . Well focal length of  wide angle lens is usually smaller than the focal length of normal lens used in filmmaking . This allows cinematographer to seize more of the subject or scene . It mainly focus on size between objects in the background and in the forefront. Thus the  objects that are near appear comparetively large. This is the reason why Tree of life is one of the most beautifully shot movie ever , You can find use of wide angle lenses in all of  the Terrence Malick and Emmanuel Lubezki projects like Song to song , Knight of Cups , To the wonder and above all Tree of LIfe .

Finally i’ll leave you with some bits

  • Tree of Life 

the-tree-of-life-terrence-malick-jessica-chastain-movie-brad-pitt-1200x520

  • To the Wonder To_the_Wonder_Terrence_Malick_41-1132x509

 

 

 

  • Gravity 

89eea431309c4b1b6aea2e59f907ae3b

  • A Little Princess 

MV5BM2M3YjhkNzctN2I2NS00YTQ1LThhNmMtMWEwMjFlOTQyZTQ3XkEyXkFqcGdeQXVyNjkxMjM5Nzc@._V1_

  • Children of Men 

theoguernica

  • Y tu Mama Tambien 

Y-Tu-Mama-Tambien

  • Song to Song 

song_to_song_2

That’s all .  

by vivekshuklai at July 03, 2018 05:21 PM

Janifa M(bismi)

DGPLUG – Day 13

Today’s homework is this – Blog about  my experience with Linux command line.

I only used command line earlier for ‘sudo apt-get install ___’ and to check system and OS configurations. Now, I installed Tor browser by extracting tar files through command line (first time, this way). I also started using Vim editor, after reading it in lym.  That’s about command line.

I completed making this bag out of old jeans, which I started yesterday watching this  video.

bag

 

by janifanowfal at July 03, 2018 04:58 PM

Aman Verma (nightwarriorxxx)

An awesome first year

Life is a just like a game .You can only win it if you are optimistic and positive.In this way I started my first year.Soon after the college started I came to know about various aspects of programming and cultural activities.As a beginner programming was completely new to me but as soon as I started understanding things it becomes interesting for me .

                                                              Programming is fun

College circular was a little bit hectic because beside coding you have to study other subjects also.Most of the subjects of were like understanding concepts .If your concepts are good then you are good.I followed the same .I started building my concepts from early because it was very important.I studies various things in my first year .But the things that I learned are as follows:-

Semester1

  • C programming language :-People says that this language is best for building logic’s .So I followed it .
  • Python Basics:- Understanding python was easy as it ease your every problem from syntax error to shortening of code.
  • HTML:- In this world full of  web technologies every one should know how web works.So I started with basics of web i.e HTML.
  • SQL:-Eager to know how data is saved ,I guess it was good to start with it.

 

Semester2

  •  C++:-A very interesting language and widely used in competitive coding .It was fun to learn about data structures and algorithms.
  • TFCS:- It is acronym of Theoretical foundation of Computer Science, a subject where you will learn all theoretical concepts and algorithms.

 

First year was to much fun .It is difficult to describe all the activities and fun I did in my first year.

At last I would love to say

                                                            HAPPY HACKING

 

 

by nightwarriorxxx at July 03, 2018 04:53 PM

Anu Kumari Gupta (ann)

Fedora->Ubuntu : Journey Unexpected – II

You read me telling about all the mess ups which took place when I tried to shrink partitions and make up space for my Fedora. Unfortunately, that could not happen. I messed up all and I had to reinstall a new OS. So, as I told you that a thought of using Ubuntu came in my mind before all this happened. It was the right time to switch to what I desired to use. So, using that live Fedora 27 OS, I had to take another pen drive to make live Ubuntu on it. At that time, newest version available was Ubuntu 17, but the official site clearly mentioned that there was a bug and it had affected many  Lenovo laptops and anyone can download and use it at their own risk. At that point of time, after so much frustration, I couldn’t have afforded to face one another problem. So, I downloaded Ubuntu 16.04 LTS. Used the third pen drive to install Ubuntu as the main distro (one pen drive had live Fedora 27 in it, another had all my files, third was this). I decided that I should finally forget Windows and that was the decision I never regretted afterwards XD.  This was the happy picture when Ubuntu was installed without any dual boot:

IMG_20171223_215429.jpg

Following the official site for Ubuntu downloads, I followed the steps of installing it on my desktop. Everything was fine. The view, the sound, the moment until I came to know that Internet was not working. Imagine the situation of me, who only have desktop and for any fixes on desktop required Internet connection on it. Moreover, I wasn’t able to tether my mobile onto the P.C. LAN connection was perfect, because had it not been perfect, I wouldn’t have been able to download the ISO file of Ubuntu. It was becoming very terrible once again. I tried several steps and all possible solutions given in Stack Overflow, Quora, etc. None solved my problem. I tried pinging from my terminal through IP address and it was successfully pinging but when I pinged by using the actual names, it wasn’t pinging. I was unable to access Internet through browser(only had Firefox pre-installed). Could not have downloaded another browser without Internet. I had correctly configured the IPv4 and DNS settings in the Network Manager for the LAN connection( did similar settings as I had done in live Fedora ). The top right corner showed that I was connected, but somehow I was not able to understand what was the problem.

img-20171226-wa0066-e1530623814822.jpeg

The above is the proof that it did show that I was connected. It’s just that I was unable to load pages in my browser.  I had a  thought that may be there is a problem in browser settings or may be a firewall is activated. I went through each of them ( the browser settings ), but couldn’t find anything that could help me.

There are some pictures for the evidence of the fact that network status was active and the /network/interfaces file consisted of all that it should contain. However, I tried manually changing the file for appending address, netmask, gateway under the default network name, which was ens33 in my case( tried both as static and dhcp ) manually and then restart the networking but then I reverted the changes once it did not solve my problem.

 

After numerous searches from here and there, hanging around in several forums, I finally managed to solve my problem by creating a symbolic link that was missing. This was when I found that there was no /etc/resolv.conf :

1.png

It was very probable that it was a DNS issue because it was successfully pinging with IP address and not by their names. I found that I did not have /etc/resolv.conf file. The file was missing. Without Internet connection, it was useless to perform reinstallation of resolvconf. I created the file inside   /etc/ as resolv.confin which I kept similar contents as /run/resolvconf/resolv.conf. Also, I created /etc/resolvconf/resolv.conf.d/base (I don’t remember exactly why) and added nameservers onto the base as:

nameserver 8.8.8.8
nameserver 8.8.4.4

Then, I created the symbolic link following  like this:

Move the file to /run/resolvconf/

sudo mv /etc/resolv.conf /run/resolvconf/resolv.conf

Then create the symlink Using command:

sudo ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf

Then Restart the Network using

sudo /etc/init.d/networking restart

Or there is a Alternative way

sudo dpkg-reconfigure resolvconf

I checked the symbolic link by performing ls -al command. The link was established. And so was the Internet restored, DNS( Domain Name Server) to be precise. Special thanks to Linux User’s group on Facebook (the only reason I like Facebook for having groups of people like them to help out, from all over the world). There were many suggestions to me: some suggested me to check drivers, some suggested me to check firewall and many such things.

These all experiments took one more week of my semester break. Phew! At least, it worked at last. I took an inspiration from this, that I shouldn’t run away from my problem until I chase it enough to solve it however. I still remember one of my friend telling me that Ubuntu has a lot of bugs and so I should change my Linux distro. Well, this wasn’t a solution and I ignored( just like the way you need to ignore some people’s views). Another said that, I should reinstall Ubuntu as it might have not finished its installation properly and some packages would have been missing. Ignored! Anyways, I solved it and am happy to share with you:) All’s well that ends well.

 

 

by anuGupta at July 03, 2018 03:50 PM

Abdul Raheem (ABD)

My journey to dgplug summer training 2018.

This Year I Decided To Join Dgplug Summer Training (https://dgplug.org/summertraining18/) Conducted By Durgapur Linux User Group (https://dgplug.org/). I Didn’t Blog Till Now It’s My First Time That I Am Blogging, In One Of Our Classes We Had A Class On Blogging And It Really Motivated Me To Start Blogging :).

I Have Been Willing To join This Training When I Heard It From My Elder Brother. Then I Came Across A Tweet From Kushal (https://twitter.com/kushaldas/status/984271706410881026).

My First Class.

The session started, everyone greeted each other. Then Kushal started with some basic rules for the class. There was an interesting way to ask questions during the class. We had to type a “!” and a bot named “batul” would keep queuing those and we had to wait until our turn came and batul prompted us to ask our question. The teacher could take the questions by typing “next”. I had a slow internet connection and Riot took time to sync the messages. But I managed to follow along. Kushal said to read the FAQs for the training and ask questions in case we have any doubt. Then we were asked to introduce ourselves by raising hands using a “!”. We were then guided by the rules for every class and asked to read How to ask smart questions. I realized this is something which should actually be taught in every community so that we ask meaningful questions. Then they were open for questions. At the end of the session, we were asked to read some links that were given as homework. The next session would happen the next day.

This was like the format of each session and mind it was totally conducted on IRC which enabled really fast communication in low bandwidth. Though the entire communication was text-based it really felt as if I was in a real class. There is Roll Call at the beginning and end of class, I had to raise a hand for asking the question, had to wait for my turn to ask my question and was given homework that was not at all overburdening. It is just the right amount given till now and I could get time to read through the reading materials provided after the class and was also able to manage it between my Office schedule.

The best part of the training so far was that we were made to think and come out of our comfort zone in order to do a task. We had to think and search even before asking a question. I believe that is a good practice for everything we have a question.

Already 2 weeks of the training session is complete and I learned a lot of things in the way.

First Week.

There was a class on Free Software Communication guidelines which was taken by Shakthi Kannan (aka mbuf) where we were taught about mailing list etiquette and other communication guidelines. The slide on mailing list etiquette and Communication will really help me in the long run.

Then there was a class on Linux Command line by Jason Braganza which taught us to get started with Basic Linux commands. The LYM (Linux for You and Me) book is a  good book for newcomers and I really find it easy to follow. It is being used in all our Linux command line sessions and we are asked to read few chapters at a time and then we have doubt sessions where we can ask questions.

On Friday, 21st June we had our first guest session by Harish Pillay. The session was very informative. He told us about the time of Internet when it had just started and was known as ARPANET. He told us the importance of contributing to Free Software/Open Source and Red Hat’s Open culture for contributing to Open Source projects. Then there were all sorts of questions he answered on Startups, open source contribution, Licenses, distros etc.

In the weekend we were asked to watch 2 documentaries. One was  The internet’s Own Boy and Citizenfour. I could complete watching the first one. I got to know a lot more about the History of the Internet and Free Software Movement. Also, we were asked to read this article where I got to know how the History of Free Software movement is deeply rooted in the Freedom of Speech and Expression. I got to learn more about The “Free as in Freedom” ideology, the origin of the GNU project and the importance of Free Software. I did a bit more research on GNU/Linux Operating systems and understood what a kernel means with respect to an Operating System and that it requires a lot more things than a kernel to make an OS work.

Second Week.

In the next week, we had a class on Privacy and Opsec from Kushal. He told us how to do a Threat Modelling of our Risks and Good practices to ensure better security. I already installed Tor Browser and have been trying to use it as my browser now. Giving up on Google is hard but I am trying my best to use DuckDuckgo for searches now. I haven’t really switched to using password managers. It will take me some time before I switch over using a password manager since I have to go over its use to get familiar with it.

On Wednesday, 27th June we had a guest session with Nicholas H.Tollervey. He is a classically trained musician, a philosophy graduate, teacher, writer and software developer.  It really inspired me to see if a person loves something he can learn anything from whichever field he/she comes from. He is one of the pioneers of the micro: bit project. He answered questions on open source contribution and best practices for writing software.

On Thursday, 28th June we had a guest session from Pirate Praveen. He is a political activist who uses Free Software Principles in his work and formed the Indian Pirates organization. He is an upstream contributor to Debian and has packaged software like GitLab and Diaspora so that they can be easily setup just by running one command. The motivation for him to contribute to open source projects was because he wanted to solve a problem. He answered questions about his entry into politics, packaging and the way of solving problems.

Then we had a class of blogging taken by Jason Braganza who explained the nitty-gritty of blogging. Over the weekend I completed watching Citizenfour and Nothing to Hide which we were recommended to watch. It made me know a lot of things about Privacy and Surveillance which I  was unaware of. Privacy is a basic right and we should all be aware of how to protect it.

The experience has been good so far and I am hoping to learn a lot more things in the upcoming days. Thanks to the awesome team who has been working hard to make this possible.🙂

Some Important Suggestions were :

In our sessions, we were suggested to use Tor browser and duck duck go search engine (for privacy) and do not keep our laptops open when we are not working on it, for example when we are at a coffee shop or at any other place we should lock the screen and do that particular work 😉.

by abdulraheemme at July 03, 2018 02:50 PM

Vaibhav Kaushik (homuncculus)

Github + Hugo = Beautiful Blogs

I built this blog using Github pages, Hugo and the beautifulhugo theme. The most amazing part is that it’s free, minimalist, uses Markdown and you can get it running in no time! Also Hugo comes with Live-Reload enabled so you can simultaneously see the changes you make in your website. Here’s a short tutorial on how I made this blog. Let’s get started! Note: If you are not interested to do the setup yourself, simply fork my repo and make the changes to include your details.

by Vaibhav Kaushik (vaibhavkaushik@disroot.org) at July 03, 2018 01:13 PM

Kumar Vipin Yadav (kvy)

Some Hard Pattern Printing Programs

Here are some hard pattern printing programs,
and hare is the github link of my this file Some-Hard-Pattern-Printing-Programs.c

Printing :-
*
***
*****
*******
*********

Here value is 5 given by keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number :\n");
	scanf("%d",&n);
       for (i=1;i<=n;i++)
	  {

		  for(j=1;j<= 2*i-1 ;j++)
		    {
		      printf("*");
		    }
		  printf("\n");
	  }
}

Output:-

    Enter a number :
    5
    *
    ***
    *****
    *******
    *********

Printing :-
*
+++
*****
+++++++
*********

Here value is 5 given by keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		{
			for(j=1;j<=2*i-1;j++)
				{
				if(i%2!=0)
				printf("*");
			else
				printf("+");
		}

			printf("\n");
		}
}

Output:-

    Eenter a number :
    5
    *
    +++
    *****
    +++++++
    *********

Printing :-

*********
 *******
  *****
   ***
    *

Here value is 5 given by keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number :\n");
	scanf("%d",&n);
	for(i=n;i>=1;i--)
		{
			for (j=n;j>i;j--)
			  printf(" ");

			for(j=1;j<=2*i-1;j++)
				printf("*");

			printf("\n");
		}
}

Output:-

    Enter a number :
    5
    *********
     *******
      *****
       ***
        *

Printing :-

123454321
1234 4321
123   321
12     21
1       1

Here value is 5 given by keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number :\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		{

		        for(j=1;j<=n-i+1;j++)
			   printf("%d",j);

			for(j=2;j<2*i-1;j++)  		           printf(" ");  			for(j=n-i+1;j>=1;j--)
			{
				if(j!=n)
	         		   printf("%d",j);
			}
			printf("\n");
		}
}

Output:-

    Enter a number :
    5
    123454321
    1234 4321
    123   321
    12     21
    1       1

Printing :-

*********
**** ****
***   ***
**     **
*       *

Here value is 5 given by keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number :\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		{

			for(j=1;j<=n-i+1;j++)
			   printf("*");

			for(j=2;j<2*i-1;j++)  		           printf(" ");  			for(j=n-i+1;j>=1j--)
			{
				if(j!=n)
			   printf("*");
			}
			printf("\n");
		}
}

Output:-

    Enter a number :
    5
    *********
    **** ****
    ***   ***
    **     **
    *       *

by kumar vipin yadav at July 03, 2018 10:52 AM

Siddhant N Trivedi

My dgplug Summer training experience.

Hello,

In this blog post,I am going to share my experience of the dgplug summer training that I am a part of.It has been an incredible learning experience till now and I would recommend everyone who wants to be a better programmer or a better Contributor to surely be a part of it. Here goes my experience-

Firstly,you must have a doubt that – ‘WHAT IS dgplug’?

dglug is an acronym for Durgapur Linux Users Group and it is a community that supports the use of open source softwares like those based on and for Linux/Unix.It organises this summer training every year for the students who want to delve into understanding the open source development from the foundations to the advanced level.

How did I come to know about this summer training?

I got acknowledged with this summer training by my seniors at my college. We have an Open Source Developers Community (OSDC) at our college and I am a new member of this community.Some of my seniors  had been a part of this summer training since the last 2 years and so they guided us(some of my friends are also a part of it) to make it a point to join it.

Now,comes the real part- MY EXPERIENCE

Overall,it has been a great experience till now. I got to learn a lot at an exponential rate which was not possible from elsewhere. Since, the sessions of the summer training take place on IRC(Internet Relay Chat), so the first thing that I got to learn was how to steup the IRC client and IRC’s commands.

Primarily,we were taught the basics of communication guidelines and mailing list etiquettes in an open source community by mbuf (Shakthi Kannan).He also acquanited us to the awesome HowTo articles by Eric S Raymond.I thought the communication and mailing list guidelines to be a rather simple topic but as I read and understood,it had lot to offer. We were asked to watch the documentary ‘Internet’s Own Boy‘ which is based on Aaron Swartz,one of the greatest open source activists. I must say that I understood only the superficial layer of open source software philosophy before I watched this documentary and read this article- Hacker ethic and Free Software Movement .Do read this blog post as well as the documentary to understand what’s the difference between a Hacker and a Cracker and how did the Free Software Movement prevail.

After this,classes were taken by Kushal Das and Jason Braganza and these classes we were asked to read some chapters day by day from the book Linux for You and Me (which we call as LYM) and ask the doubts during the sessions. I read the chapters which were told to be read and asked the doubts if I had them.I really loved and I really appreciate how helpful is the dgplug community.They are always ready to help.We also had some guest sessions in between in which various open source maestros interacted with us and guided us. Some of them are Harish Pillay, Nicholas H. Tollervey and Pirate Praveen.

Next,we were asked to watch CitizenFour and Nothing To Hide documentaries which further helped me understand the need of privacy and the precautions that one must take in order to maintain it since people like Edward Snowden have been fighting for it since a long time.

Now, having understood the foundations of the open source culture and etiquettes,we were asked to maintain a blog so that we can track our progress and can develop a writing habit. And it is because of dgplug that I have made this blog and am writing about my experience.

One can learn stuff about Linux/Development from many sources but the best things that I learned till now from this summer training that I found nowhere are:

  1. We must develop a reading habit in order to learn.Learning is not getting spoon fed,it is reading,understanding and analyzing ourselves.
  2. Patience.It is a must quality which you have to nurture if you want to collaborate to learn something from someone.
  3. Staying humble and curious is the best way to become a good developer.
  4. Hacking is building, cracking is destroying.
  5. Community is everything.

Thus, I must say that dgplug summer training helped me understand the real etiquettes of a learner and applying them to programming,I am looking forward to learn that too to the best from them.

Thanks a lot dgplug for all.

by The Little Aspirant at July 03, 2018 09:30 AM

Muhammad Zeeshan Qazi (mzeeqazi)

Internship at SMVDSB

After our major exam, my university’s TPO informed us about 2-4 summer intern positions at Shri Mata Vaishno Devi Shrine Board Katra. Since I don’t have any internship position at my hand, I gave it a try and appeared for the interview.
It was around 5-minute interview, where for most of the time I disagree with one of our faculty member, who is there with the officials of the shrine board. It is quite good experience as this is my first interview and being an INTP, I do feel it difficult to face people. I was listed among student who were selected for the internship.

I joined Shrine Board on May 21, 2018 for 2 months for IT related stuff. On the First day, we were introduced with different departments and sections of the shrine board. Next day tasks were allotted and we were made to work in different teams. I and Arjun Gupta were told to pick up the skill for Android development to understand and improve the pre-existing Android app of Shrine Board. For a week we build small apps to get hands on the general workflow of the android development.

Second week, the source code of the app was made available to us and we tried to understand it and get the notion of workflow for this app. Then we are asked to survey newly build Tarakote Marg, and add relevant entries in the database of the app and made changes in the app where ever required. So we surveyed Tarakote Marg and updated the app at play store. As we are newbies to Android development, we have one known bug in the updated app. That database was fine with the freshly installed app but if we update, new entries were missing from the database. This bug was not known to us for around a week or so, but now we have fixed it and will be again updating our app by next week with few more modifications.

Along with this we are asked to develop a web app for the employee management system specifically for automating the leave management of the shrine board. So for this, I collected all the rules related to leaves and analyzing this to write protocol for leave system.

We are also designing a website for the sports complex of Shrine Board at Katra.

Only three weeks are left of our internship period and we need to do many things. I hope by end of this internship, we will complete all assigned tasks.

by Zeeshan at July 03, 2018 08:36 AM

Kumar Vipin Yadav (kvy)

Some Easy Printing Star Problems

Printing:-
*
**
***
****
*****

Here n is 5 taken from keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for (i=1;i<=n;i++)
	  {

		  for(j=1;j<=i ;j++)
		    {
		      printf("*");
		    }
		  printf("\n");
	  }
}
Output :
    Enter a number : 
    5
    *
    **
    ***
    ****
    *****

Printing:-
*
* *
* * *
* * * *
* * * * *

Here n is 5 taken from keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for (i=1;i<=n;i++)
	  {

		  for(j=1;j<=i ;j++)
		    {
		      printf("* ");
		    }
		  printf("\n");
	  }
}
Output :- 
    Enter a number : 
    5
    * 
    * * 
    * * * 
    * * * * 
    * * * * * 

Printing :-
*****
****
***
**
*

Here n is 5 taken from keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for ( i = n ; i >= 1 ; i-- )
	  {

		  for(j = 1 ; j <= i ; j++ )
		    {
		      printf("*");
		    }
		  printf("\n");
	  }
}

Output:-
    Enter a number : 
    5
    *****
    ****
    ***
    **
    *

Printing:-

*
++
***
++++
*****

Here n is 5 taken from keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for ( i = 1 ; i <= n ; i++ )
	  {

		  for(j = 1 ; j <= i ; j++ )
		    {
			if ( i%2 != 0 )
		      	    printf("*");
			else
			     printf("+");
		    }
		  printf("\n");
	  }
}

Output:-
    Enter a number : 
    5
    *
    ++
    ***
    ++++
    *****

Printing:-

*
* *
* * *
* * * *
* * * * *

Here n is 5 taken from keyboard.

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for ( i = 1 ; i <= n ; i++ )
 	  {
 		for (j = n-i ; j >= 1 ; j--)
			printf(" ");

		 for(j = 1 ; j <= i ; j++ )
		      	printf("* ");

		  printf("\n");
	  }
}

Output:-
    Enter a number : 
    5
        * 
       * * 
      * * * 
     * * * * 
    * * * * * 

 

To download file click here Some-Easy-Printing-Star-Problems.c

by kumar vipin yadav at July 03, 2018 07:48 AM

Shiva Saxena (shiva)

Useful Development Practices

Let’s suppose you are contributing a feature to a project, tell me how can you evidently prove to the project maintainer that your code is working without actually running the code? Or how will you count the efficiency of a web application while developing it step by step? Let’s explore some useful development practices below.

Let’s say you are willing to start with one of your projects from scratch and you are already ready with a plan. With what approaches will you proceed and practice while developing it? Let’s have a look.

1. Documentation

A must for any application is the “documentation”. You need to write proper docs of your project to make it more user-friendly and for other developers who are interested to contribute in your project. For example our Readme.md on GitHub represents the page where you write the documentation of your project. Let’s see what points your documentation may cover.

Project documentation:

a) What the project is all about?

Here you may discuss your project objective and why was it needed and how it solves that problem. Many users just go through this part to see how much appealing idea your project is made up for. It can be as precise as one-liner at times

b) Fulfilling pre requisites and how to install the project?

Here you may discuss how to install your project and its dependencies (if any) on users/contributors machine, once s/he have downloaded the code.
Installation steps include how to build your code, and step-by-step commands need to be executed in order to develop a working code of your project.

c) How others can contribute to this project?

Different organizations and projects have different guidelines to follow while you are contributing to them. So, in this section you elaborate those guidelines, like how would you like your commit messages, what all things should be done before sending a pull requests to your repository, you need test cases, how to run existing test cases, how to report bugs in this project, what bug tracker you use, what code of conduct your organization follow, what are the pre requisites to contribute in this project, etc, etc.

d) Under what license your project is available?

Open source projects have a couple of licenses like MIT, GNU General Public License v3.0, etc. Which elaborates the permissions given to the one who takes this project in use.

e) Links?

If your project is big enough and you want to keep documentation like “developer’s guide” and “simple troubleshooting” apart from this Readme file, then you should give the links to all those docs here.
You may also add links to project website (if any), project blogs, contributors profiles, etc.

f) Description of folder structure?

If you want to explicitly define your project directory structure and usage of different files available in it, then you may describe it here.

Note: You may add more points and remove above points in your project documentation as per your need, like adding “solution of common problems faced in working of ‘X’ feature”, and removing “description of folder structure”, etc.

Code documentation:

a) Comments

Documenting your code with proper comments is really important. Because even if you are the only contributor of your code, after months when you would go back to see what you were trying to do with “x” code block, that would seem confusing. Therefore, it is highly recommended that you should give proper comments to inform the objective of complex parts of codes that otherwise seems not clear.

b) Docstrings

In python we write function docstrings, there are not comments as we discussed above. But docstrings are special comments that self-document the purpose of a function. Suppose in python you wanna explore the usage of function “x”, what can we do is to go in its “help” documentation. That “help” documentation is nothing but that function’s docstring.

c) Keywords

Giving proper names for keywords and functions such that they seem to be self-explanatory is vital to enhance the code readability.

d) Commit messages and description

If you are using a DVCS like git for your project, then giving proper commit messages and description is useful to describe the code you added/modified. Commit messages should be short, precise and upto the point only, such that it clearly shows what has changed with this code. And commit description is the place where you may describe in detail that
* Why was this change necessary?
* How does it address the problem?
* Are there any side effects?

Changelog

This is yet another important part of documentation known as changelog. Changelog as the name suggest is a log of changes made in the project. Organizations maintain the changelog of new features added in successive versions of their product e.i see the Changelog of Oppia.

Or if you are making your personal project you may also maintain the daily changelog, where you describe what changes you are doing in your project daily.

Change log are not commit messages. Suppose you are adding a feature “x” in your project and did 10 commits to implement that feature. Now, your this “addition of feature” should be appended to your changelog not all the 10 commits. We can say that changelog keeps the log of all notable changes.

2. Test Cases

Whenever you add a feature to your project, there are possible ways that your feature could be used for. Here, for all those possibilities of use cases we write “test cases”. These tests checks the proper functioning of our code. For python beginners check out unit testing here.

I am attending DGPLUG summer training this year. And on 27th of June we had a guest session by Nicholas H. Tollervey also go by ntol. About test cases he said as follows.

Tests fulfil several purposes:
* They check the code we write is working how we expect (always a good thing to know)
* They provide examples for others about how to use our code.
* They quickly give us confidence that nothing is broken (running the test suite should take seconds)
* Most importantly, they allow us to make changes with confidence. If I update feature X, then run the test suite, I know I’ve not inadvertently broken anything else… 😉

It is always preferable to write test cases in a separatere folder called “tests”

3. Continuos Integration

When you develop a project, you don’t write the complete code in one shot. Instead we develop it feature by feature. How can we make sure that adding one feature is not doing any harm for the existing code? Yes, test suit is the one way. But think about a repository where hundreds of contibutors are contributing, they might have adding new features, or might be fixing some bugs, etc.

While they all can be sure using there individual test cases that locally there code is not harming the actual project, but how can a code maintaner make sure that after merging the feature of one contributor, will get sync with other contributors’ work without breaking the project?

Now comes what we call continuos integration. At a time one feature get merge with the code base and an automated tool will run test cases, not just test cases but also checks if the deployment of the project would be successfull after merging this commit or not and take care of all the background work (as it is configured) like environment setup, operating systems, etc. One of the easiest tool for continuous integration I used on GitHub is Travis-CI. Learn to use TravisCI with this getting started guide.

Know more about continuous integration essentials.

4. Making a good Pull Request

There is reason why some pull request get merge sooner than others. Because there is way of making a good pull request.

First and most important make sure that you are following contribution guidelines of the organisation to which you are contributing and sending your PR (pull request).

Your PR should include the following:

  • Your Code patch (of cource, if it is not a pure documentation contribution)
  • Documentation updates (if a new feature is added that needed to be documented in project’s docs, then please update the documentation)
    • It also includes good commit messages, description, docstrings, commented code, changelog, etc.
  • Test Cases (you must include test cases of whatever feature you are sending pull request to, which makes sure to the maintaner that your code is working)
  • Update continuos integration file (i.e travis.yml if needed)

5. Get your Pull Request reviewed

Most important part of all. Once you make your PR make sure you get it reviewed by your mentor or any other developer.

At the time of review these expirienced developers will let you know the wrong practices you are following while writing the code. And that’s how you’ll learn. They’ll also suggest you various ways and tools you may use to improve your code.

Doesn’t matter even if your complete code of a feature get in trash after the review, always take that code critisism positively, after all they critize your code not you 🙂

Conclusion

Working on a project is pure fun for me! It brings you learning, make you confortable with the technology you work on. You learn to get hands on the following practices that are being used in development of real softwares.

I’ll keep updating this post will more development practices I’ll get to know. If you know more good practices that we should follow while working on projects, then please feel free to write in the comments section below 🙂

Thanks for reading.

by Shiva Saxena at July 03, 2018 07:05 AM

July 02, 2018

Anu Kumari Gupta (ann)

Fedora->Ubuntu : Journey Unexpected-I

Hello,

Here I wish to share my personal experience and would like to tell you about my beautiful but bitter journey from Fedora to Ubuntu. Yes, an unexpected one too.

I was an avid user of  Fedora 24 since June 2017 until December 2017. It was that time of the year when I started using Linux as my main distro on my own desktop apart from Windows(dual-boot system). Before that, I never happened to use Linux other than compiling and running programs in my college. Now, when I discovered that Linux is much more to it, I found that there are so many distributions of Linux (just like you have different flavors of ice-cream :P). Now, when it comes to flavors of your favorite thing, you would wish to taste each of them or try it once in a lifetime, right? Similar thing happened to me. I desired to use all the different distributions of Linux and so I prepared my mindset to use Ubuntu. Trying Ubuntu was just a one time thought which never came afterwards. Be hold! that was not a mere thought. That was a sign that its really the time to change distro. See, What happened to me! After some days, my Fedora was running out of space and it turned my desktop too slow to use. Also, I was unable to perform anything. This is what was troubling me, each time I was doing my work peacefully.

IMG-20171217-WA0015

The coming rest of the days of this trouble were some of the worst days of my life, or I can say, that it was for some good(But frankly, I am not that optimistic). What I did to solve the problem was something I should not have done. This is a picture of the space I had in my desktop. Before this(what the picture says), I tried resizing the disk from windows and the unallocated space  in the picture is the result of that.

IMG-20171217-WA0017

You can infer from this, that I have 250 GB hard disk only (old P.C you know :/ ). The unallocated space was showing in two different sections. I wanted to make those unallocated space as a single unallocated section. So, it seemed obvious that I needed to shift those partitions( I still don’t if it is wright or wrong). Here, the occupied space were: /dev/sda1(50.07 GB) : this was for C:/ drive of Windows; /dev/sda2(28.45 GB): this was  for D:/ drive of Windows; /dev/sda4(69.51 GB): was for Fedora. Yes, I reserved 70GB at the time of installation of Fedora, as far as I remember.

Following some steps(I don’t know which one), I made GParted live on USB stick with the help of Unetbootin.

IMG_20171218_121128

Followed by this, I had the GParted again, showing me all the spaces and partitions. This time I was in a state to shift the partitions which I thought was correct, but it wasn’t. I shifted according to my own wish and deleted which I felt was not needed. I accidentally erased the Linux-swap while shifting the partition in making up space, after reading somewhere that it is something not mandatory to have( I wish I had the source to show you. For that, I would need to search a lot. May be someday later, I will attach them). If you ever wish to shift the partitions, remember my word of caution: It is too risky. And even if you follow some googled solutions, it may so happen that solution is not meant for your P.C/ laptop. You just can’t afford to follow( may be I am wrong, but I feel so ). Following some steps from google, I used gparted to shift the partition. Here is the screenshot which I took with the impression in my mind that may be I could blog this to help people while shifting partitions. Unfortunately, that couldn’t happen because I couldn’t help even myself 😦

IMG_20171219_123505

It was taking some time and I thought finally everything would be alright. But, whenever you expect that everything is going to be alright, just then something happens that comes to disturb you all the more! ( Relatable na? This is Life). This was what happened next. The biggest nightmare.

IMG-20171219-WA0009

I tried several things following all sort of stuffs, asked several forums, written several commands in the grub-rescue menu, but it was all in vain. Trying ls command gave me these:

 

Nothing happened. Both Windows and Linux were gone it seemed. I somehow managed to enter the grub window from the grub-rescue window where I tried out different commands.

img-20171219-wa0021.jpeg

This was the point where I could only recover my files and do nothing else. Windows and Fedora were still dislocated. Grub seemed to be irreparable. I tried recovering Fedora and Windows by following these commands (Reference: devsks) : insmod chain, insmod ntfs, set root=(hd0,1), chainloader +1. I tried for each of the partitions by changing as root=(hd0,2), root=(hd0,6) after being able to check the files in each of them using ls. This time I did not face “no partition found” or “filesystem is unknown”. I was able to see the folders.

IMG-20171219-WA0032

A bit relief after seeing the files there and able to somehow start windows using the above mentioned commands(that is setting the root). This Windows which started was not permanent and there was denial access, after I tried entering the E:/ drive. However, Files from C:/  was accessible. What I did next was, I downloaded the ISO file of Fedora 27(just to recover files) and created a live USB stick containing Fedora 27. I booted and clicked on “try Fedora” option. From there, I tried mounting onto the partitions and get hold of all my files. Initially, I found denial access even there. After numerous trials, I somehow managed to get all the files both from windows and Fedora( by mounting ). Here is the pictures that shows that shows how I mounted the partition onto a folder and quickly copied to an empty pen drive:

IMG-20171220-WA0037

After all the pains, I only could recover files( thankfully, atleast files were not lost). Thanks to my senior devsks for that. He helped me a lot in this process.

Being optimistic, yes it was fruitful in some ways, but on the same time, it did waste more than two weeks(my whole semester break, when I should be doing some projects or learn something). This was not the end. There were some another days wasted to find solution to another big problem. Keeping this blog short, What I did next will be covered in my next blog post.

by anuGupta at July 02, 2018 08:29 PM

Janifa M(bismi)

DGPLUG – Day 12

It was the review of a log in DGPLUG, yesterday.

After the session, I started making a bag out of my old jeans inspired by this video. I stitched instead of using glue gun. It’s almost finished.

by janifanowfal at July 02, 2018 06:55 PM

Manank Patni

Day 3

Today’s work :-

  • Learned about kwargs and args in python
  • Tried to create a feature request in GSSoC couldn’t implemet the feature.
  • Read about Django models and serializers.
  • Registered for Rajasthan Hackathon 5.0
  • Learned about Here-Places API

References :-

  1. https://change.rajasthan.gov.in/events/#desc_1
  2. https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/
  3. https://developer.here.com/documentation/places/topics/quick-start-find-text-string.html
  4. https://docs.djangoproject.com/en/2.0/topics/db/models/
  5. http://www.django-rest-framework.org/api-guide/serializers/

by manankpatni at July 02, 2018 06:17 PM

Priyanka Sharma

That is why they Learn Faster !

“If you can’t explain it simply, you don’t understand it well enough.”

-Albert Einstein

Feynman Technique

Today, you woke up with some specific goals, say you learnt some concept, if you want to understand it well, try to explain it simply. At first, may be this seems to be easy but actually changing your learning habits is not that easy !

This is the idea behind Feynman Technique.

How to use the Feynman Technique:

Since this technique involves explaining the concept, it can be done in many ways.

  • Definitely we all have friends, whatever concept you learnt, try to explain in front of them. But, they may not be available for you at some particular time, so try the other way.
  • Take out a sheet of paper. Whatever concept you have learnt, write the name of the concept on the top and explaine those.
  • You can create a virtual class by yourself, yes you can !                                                                       Whenever you are in a room, and don’t have any one to listen to you or you aren’t willing to write things on a sheet of paper explaining them, assume that you are teaching it to someone else, may be your classmates or may be you are standing on stage in front of so many people to explain.

Whenever I learn something new, most of the time I began to explain it as if I were explaining it to someone else. Once you will try, you will get to know the impact of this technique. But it is also true that changing your learning habits is not that easy but if you will try once you will see the difference of your understanding.

It boosts your ability to express yourself and more than this, the concept will last longer – Why – Because you understood it well.

Applying the Feynman Technique:

The Pythagorean Theorem

 

IMG-20180702-WA0010

Happy Learning : )

by priyanka8121 at July 02, 2018 05:55 PM

Siddhant N Trivedi

Life is about making choices.

Robert Frost said-

Two roads diverged in the woods,

And I took the less travelled by,

And that has made all the difference.

Similarly,in life too sometimes its very difficult to make choices. You may un away from them or ignore them. But one day,you have to face them and make a decision as to where you want to go.You can’t stand for long.

by The Little Aspirant at July 02, 2018 05:33 PM

Siddharth Sahoo

WHY TO LEARN ANDROID DEVELOPMENT ONLINE?

by CodedWorm at July 02, 2018 05:24 PM

swechha jha (sweksha)

Little sweet, little salty

We all love heights, don’t we? But in order to get there, we need to use all the algorithms and data structures like linked lists, dynamic programming ;p wait, what? Just kidding.

My name is Swechha, I like when people pronounce it as Sweksha. Let’s not get into the statistics of my name,  it would take time.

I’m an engineering student and dream of going to the moon and back.

Good company in a journey makes the way seem shorter. — Izaak Walton

IMG_20170224_094712

by swechha jha at July 02, 2018 05:01 PM

Naman Sharma (cypher01)

THE BEGINNING OF A NEW JOURNEY

You all must be wondering about what journey am I taking about ?Well its a journey of change.Always heard that change is the law of the nature and thus we all need to change over time.Some changes are positive and others are not,Its upon us to decide.

With each passing day we must strive to change , be better , be alive.Sure these things are good to hear (or read!) but how do we determine what change is positive or negative .Well the answer to this is not simple but I will try.From what I have heard I will simply say :Anything that makes you a better person than yesterday is a positive change.simple!

Are you satisfied yet ?I would be not .Change holds a deeper meaning actually.

Learning with past mistakes, using that experience

by Cypher at July 02, 2018 03:01 PM

Kumar Vipin Yadav (kvy)

Some Programs On Nesting Of For Loops

Here are some programs on nesting of for loops.

Printing
1
1,2
1,2,3
1,2,3,4
1,2,3,4,5 …n

where value of n is 5 taken from keyboard by me

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for (i=1;i<=n;i++)
	  {

		  for(j=1;j<=i ;j++)
		    {
		      printf("%d",j);
		    }
		  printf("\n");
	  }
}

Printing
1
2,2
3,3,3
4,4,4,4
5,5,5,5,5 …n

where value of n is 5 taken from keyboard by me

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for (i=1;i<=n;i++)
	  {

		  for(j=1;j<=i ;j++)
		    {
		      printf("%d",i);
		    }
		  printf("\n");
	  }
}

Printing
5
4,5
3,4,5
2,3,4,5
1,2,3,4,5

where value of n is 5 taken from keyboard by me

#include<stdio.h>
void main()
{
	int i,j,n;
	printf("Enter a number : \n");
	scanf("%d",&n);
       for ( i = n ; i >= 1 ; i-- )
	  {

		  for( j = i ; j <= n ; j++ )
		    {
		      printf("%d",j);
		    }
		  printf("\n");
	  }
}

 

by kumar vipin yadav at July 02, 2018 12:08 PM

Basic Intro. Before Starting Python

What Is Programming?

    Television shows and films often show programmers furiously typing cryptic
streams of 1s and 0s on glowing screens, but modern programming isn’t
that mysterious. Programming is simply the act of instructions for
the computer to perform. These instructions might crunch some numbers,
modify text, look up information in files.
All programs use basic instructions as building blocks like,
“Do this then do that.”
“If this condition is true, perform this action; otherwise, do that action.”
“Do this action that number of times.”
“Keep doing that until this condition is true.”

What Is Python?

    Python refers to the Python programming language  and the

Python interpreter software that reads source code  and
per-forms its instructions.
The Python interpreter is free to download from http://python.org/.
and there are versions for Linux, OS X, and Windows.

Programmers Don’t Need to Know Much Math

The most common anxiety I hear about learning to program is that people
think it requires a lot of math. Actually, most programming doesn’t require
math beyond basic arithmetic. In fact, being good at programming isn’t
that different from being good at solving Sudoku puzzles.

by kumar vipin yadav at July 02, 2018 08:45 AM

Basic Intro. Before Starting Python

What Is Programming?

    Television shows and films often show programmers furiously typing cryptic
streams of 1s and 0s on glowing screens, but modern programming isn’t
that mysterious. Programming is simply the act of instructions for
the computer to perform. These instructions might crunch some numbers,
modify text, look up information in files.
All programs use basic instructions as building blocks like,
“Do this then do that.”
“If this condition is true, perform this action; otherwise, do that action.”
“Do this action that number of times.”
“Keep doing that until this condition is true.”

What Is Python?

    Python refers to the Python programming language  and the

Python interpreter software that reads source code  and
per-forms its instructions.
The Python interpreter is free to download from http://python.org/.
and there are versions for Linux, OS X, and Windows.

Programmers Don’t Need to Know Much Math

The most common anxiety I hear about learning to program is that people
think it requires a lot of math. Actually, most programming doesn’t require
math beyond basic arithmetic. In fact, being good at programming isn’t
that different from being good at solving Sudoku puzzles.

by kumar vipin yadav at July 02, 2018 07:42 AM

July 01, 2018

Muhammad Zeeshan Qazi (mzeeqazi)

Summer Training with #DGPLUG

Am now a final year engineering student. All my early years I want to contribute to the open source world, but something is holding me back. I guess it’s my attitude. I have my GitHub account since my fresher year and I have contributed in some projects mostly in website content. I contribute by studying the earlier structure of the website and add a new item in a drop-down list and link it to some file or something like that. This is my all contribution. But I want to contribute to the real code, which will benefit people.

For this, I tried to learn few languages, done some courses but whenever I look at the code of some organization it scares me. I don’t know where to look at and how to start.  But somewhere in back of my mind, I have the feeling I will on someday contribute to some real software.

So, one day while scrolling my twitter feed I find a tweet related to summer training and as it is the requirement in our college to do either internship or some training in the summer, this tweet attracts me. I checked the link and thought of giving it a try. And  I joined this summer training.

Till now my journey was quite good, I missed two sessions one because of no electricity in college other because of some connectivity issue. But I have read class logs of both the sessions.

This Summer Training by DGPLUG is very unique in its own way. Here training is done on IRC channel #dgplug and it is text-based, we are given home-tasks as well. Here training is started by introducing us to communication guidelines rather than how to write Hello, World. We were made to watch made to watch at least 3  documentaries related to privacy of data. What, how, and from whom we need to protect our data. We are taught Linux File Hierarchy System. This is just started 2 weeks ago but they managed to have 3 guest sessions. Everything about the training is nice.

I guess this is enough for this blog, will share more in future blogs.

by Zeeshan at July 01, 2018 10:39 PM

Manank Patni

Day 2

Today summary:-

  • Learned how to contribute to Mozilla,Joined the IRC’s, Got my first bug to work on.
  • Learned how to write a GSOC propsal and read some examples.

by manankpatni at July 01, 2018 06:00 PM

Gajendra Saraswat(Sarques)

A step towards Right to Privacy

I am on “Signal” provided by Open Whisper Systems. And one more thing, Edward Snowden advises it. Win-Win ^_^ 🙂

by Sarques at July 01, 2018 05:01 PM

Janifa M(bismi)

DGPLUG – Documentation

DGPLUG has a very good documentation.

Reading the docs is increasing my knowledge and also my reading habit.

by janifanowfal at July 01, 2018 02:09 PM

Jaydeep Borkar(jaydeep)

Prashant Sharma (gutsytechster)

“I know what you’re going to do this summer 18”- DGPLUG

Hey buddies! How’s everything going? Hope you are enjoying your summer. Well, I wanna share how my summer is going on. You might have some doubt about the title like what is this DGPLUG? or something like this. Well, have some patience and carry on reading.

Unveiling the suspense

So have you ever heard of DGPLUG. No worries, if you haven’t I am here to tell you. Every nerd who is fascinated by the world of open source, wants to learn upstream contribution and get acquainted with the F/OSS world. Open source contains within it a large ocean of different technologies and methodologies which takes time to learn. In the end we come across so many things which we never heard of.

So, for us who are just beginner in open source and looking for a reliable source to learn open source contribution, DGPLUG comes out to be that source. DGPLUG stands for DurGaPur Linux Users’ Group. This year it has brought its 11th edition. It’s been providing online training for last 10 years. The training is of about three months and you know what? It’s totally free. I get to know about this training from my fellow-mates. DGPLUG conducts its training on IRC(Internet Relay Chat) in #dgplug channel.

My learnings till now

I was unaware of IRC earlier, so as soon as I get to know that the training is going to be held on IRC, I get familiar with it and registered my nick on it. This year the training has begun on 17 June 2018 and it’s been two weeks since then.

In only two weeks, I have learned a bunch of new things and unlearned a bunch of old things and learned them again. What? Did I say unlearn? Well yes, to clear the anonymity of some topics, sometimes we need to forget what we have learned. I was also unaware of mailing lists, so I get to know about them and subscribed to DGPLUG mailing list. Regular sessions are conducted on different topics everyday. Till now, we have learned:

  • Communication guidelines and mailing list etiquette

We have been introduced to basic communication guidelines, how one should speak in professional communication. One shouldn’t use SMS language and should do homework before asking any question and much more. Also, on the mailing list one should do the bottom posting and not the top posting.

  • Basic introduction to GNU/Linux and FHS(File Hierarchy  System)

We have been taught the basic terminologies of Linux systems and concepts of FHS, mainly from LYM(Linux command line for You and Me).

  • Taking our privacy seriously

One should not be careless while concerning to his/her privacy.  We understood the importance of privacy and watched some related documentaries:

  1. The Internet’s Own Boy: The Story of Aaron Swartz

  2. Citizenfour

  3. NOTHING TO HIDE

Each of them has wonderfully depicted its message. We learned how to make threat-model and use of password managers and password generating tools such as diceware.

  • The importance of blogging

This was my favorite session, where we were taught the importance of blogging and how blogging affects your way of learning. Not only you should write about what you are learning but also your experiences, your aspects about something. It doesn’t build only your technical profile but it also becomes your identity on the web.

For blog, you must read. This is something which takes time but as soon as one gets into the habit of reading, it becomes much easier to write.

  • Experiences of renowned open-source enthusiasts

While there were regular sessions, we also get opportunity to listen to some industry people in guest sessions. There have been three guest sessions till now with Harish Pillay, Nicholas H. Tollervey and Praveen Arimbrathodiyil. Each of them has shared some valuable thoughts. We also got opportunity to ask our questions and get their descent views on them.

Well, I just tried to summarize the learning of two weeks in a few points only. There is more to each of them. You can join the training any time you want. Just go register yourself on IRC and join #dgplug channel anytime. The session usually starts at 7 pm. Though go through the IRC logs of these two weeks so that you can catch up with all of us. You will find two links for each day, one with the textual format and one with the HTML format. You can go with anyone whichever you find suitable.

I am thankful to all the mentors who take out their valuable time and guide newbies like us. That’s it for this blog post! Meet you in the next one or maybe in #dgplug.

Till then, Be curious and keep learning!

 

by gutsytechster at July 01, 2018 12:36 PM

Vaibhav Kaushik (homuncculus)

About Me

I am Vaibhav Kaushik, a third-year student in JIIT, Noida. I am interested in system administration, distributed systems and Linux. I like programming in Go, C++, C and Python. This blog is used not only to catalogue projects that I worked on but also to serve as a journal for my more long-form thoughts on FLOSS culture.

by Vaibhav Kaushik (vaibhavkaushik@disroot.org) at July 01, 2018 12:27 PM

Anu Kumari Gupta (ann)

2FA

In my previous blog post, I mentioned about the needs of Privacy and why should we take precautions for maintaining privacy. Now, you must be wondering, why am I referring to the previous blog post? Is 2FA something related to it? And even before that there could be a question in your mind, What is 2FA? sounds as if its a rifle like AK47. (Haha, kidding:P) Well, no, it’s not a rifle, but, it could be a major tool to protect yourself. A major weapon indeed. A weapon? sounds interesting? Let’s quickly get into this without wasting much of your time.

What is 2FA?

2FA is two-factor Authentication. So, as the name suggests, 2FA is a two layered protection given to any services/online accounts, i.e, It works by requiring you to use two identity to access your accounts, or use the services. One is definitely your password (which, of course needs to be strong for better security. You can use long phrases which is actually strong to keep). Second is, use of a token, which includes hardware components like key fobs , smart cards, YubiKey, etc. or a software based programs, which includes a built-in camera that can be used for verifying biometrics, as in facial recognition or iris scanning, might be GPS that can verify location as an additional factor, might be Voice or Short Message Service (SMS) or can be third-party applications like Google Authenticator, FreeOTP,  Authy, etc.

Normally, whenever you use a website, you only enter your password. Just think about what possible calamity can hover on you if someone gets to know your password. Now that you can imagine the fact that simply knowing the passwords could pose a threat to your account. So, a double check has to be there. This double check is provided by 2FA. 2FA comes in many forms but here I would be focusing on mobile authentication. Now, as I mentioned, SMS(Short message service) could be a type of 2FA Authentication but you should avoid using it. Here’s why:

Why not SMS?

SMS-based 2FA would appear to you as simple, easy to use and you might like the way of getting a simple message without doing anything and you think: ‘Oh Yeah! I use 2FA!’, but my dear friend, despite its simplicity, SMS-based 2FA is prone to attack and vulnerable to use. To mention what Margaret Rouse said :

… In fact, the National Institute of Standards and Technology (NIST) deprecated use of SMS in 2FA services, in Special Publication 800-63-3: Digital Authentication Guidelines. NIST concluded one-time passwords sent via SMS are too vulnerable due to mobile phone number portability, attacks like the Signaling System 7 hack against the mobile phone network, and malware like Eurograbber that can intercept or redirect text messages.

Now that you know, SMS based 2FA is dangerous to use, you could question what is the better alternative then? A better alternative is: Third-party mobile Applications.

How to use?

Wondering which mobile applications are there to use? There are many like FreeOTP, Authy, etc. Before that, to know which services uses 2FA? Check this. Now, since I use Authy, I will show you how you can use. So, here’s the step how you could use: 1. Install Authy. Enter your number. Verify using SMS or Phone Call; 2. Search for your application or web services in which you want to have 2FA; 3. Down there you see the guide for each of them, like you have for Gmail, Facebook, etc. If you wish to see the exact steps, comment down which website you want me to show the detailed steps of verification. But before that, do check which websites offer 2FA in this link, as only limited applications have started to use it. 4. Follow the steps if you wish to follow the guide provided by Authy and you are done. Authy generates 6 digit number that remains valid for the next 30 secs. After 30 secs, a new code is generated. Now, that you are using Authy for that, you would require entering this 6 digit number along with your password.  You can also go for FreeOTP. It is open source application and yes, it is good 🙂

Is 2FA secure?

After feeding you with this information, it is mandatory that you know, 2FA improves security. The above only portrays the precautionary measures you can take. It does not ensures total security. “The account-recovery process itself can also be subverted when it is used to defeat two-factor authentication, because it often resets a user’s current password and emails a temporary password to allow the user to log in again, bypassing the 2FA process. The business Gmail accounts of the chief executive of Cloudflare were hacked in this way. “- Margaret Rouse in her article.

 

by anuGupta at July 01, 2018 08:54 AM