31 August 2013

The Learning Path - Linux@OpenGyan

If you are an engineering student still in college, you may want to spend time in reading through this post. This is little longer and it may change the way you program (of course with your efforts). If you are a professional, i still feel that you have a bit to learn here :-)

I wanted to write this post for past few months and i had to think about designing a series of workshops that would take a newbie of Linux to expert in Linux. What are various areas in Linux that would make you a good programmer in Linux. While you have many programming languages like Python, Perl, Java, C, C++ and many languages, is there a way in which i can pick one or two programming languages and yet become good in Linux.

If you are a computer science student, you would learn "C" programming language. When you complete your second year of engineering, you would have completed probably a theory and a lab on C programming and you will be fluent enough to solve simple to medium complexity problems in C. If you know "C" and wish to become an expert, here are something that we offer from OpenGyan (yep, we are in Facebook too). Once you follow this path, though it is little difficult, you should be good enough to call yourself as budding system programmer.

I have made these in few easy steps so that you can take these as a capsule and set a milestone. All these steps should take you one to two years of consistent efforts and a strong will power. What you sow is what you reap.

Step #1 - Linux Basics and Commands
This workshop will be a curtain raiser for you and it should give you various inputs on why you should be spending time in Linux. You should be able to understand what is Linux, its architecture, why it is successful, Open Source, Linux's history and basic commands to play around with Linux. After this workshop you need to spend some time in playing with Linux like watching movies, playing music, browsing Internet in Linux, chatting with your friends and do whatever you want. Just be a user of Linux.

Step #2: - Linux Shell Scripting
After spending sometime in Linux, this is the baby step of being a little programmer on Linux. If are typing series of commands and by now you should feel it is boring or tedious and you want to automate it. Shell Scripting will help you to automate tasks and don't think it just automates. Shell scripting can be powerful tool when you want to do stuff when you have slept. This is sure first step towards becoming Linux programmer and don't miss to practice. Do couple of mini-projects before moving on to next phase.

Step #3 - Linux Programming (Part 1)
Linux are based on processes and files. In this first and most important part, you will go through series of topics on Linux API. These APIs are the ways to get things done. You will learn how to create a process, how to run a program, manage the process, learn about memory allocation, learn basic operations of File. If Shell scripting was exciting, this one will be more exciting. Again, spend time here and practice with couple of mini-projects. Do all your data strcutures exercise here to learn how to handle memory. This is the time you should write code that causes segmentation fault and when you go to next stage your code should hardly core

Step #5 - Linux Programming (Part 2)
Human beings talk to each other and so are processes. Do not think you will write standalone processes. Think about the scenarios where the processes wants to interact. In this stage, you should learn various ways of inter process communication and understand how processes in a machine interact with each other. Once you acquire the concepts/skills at this level, your journey from here will be very easy and little faster.

Step #4 - Multi-Thread Programming in Linux
Your mobile is quad core now. And everywhere it is multicore. Multi-threaded programming lets you to write high performance and concurrent systems. You will learn what is thread, how to create and make them to execute a task, synchronize them so that they don't block each other's work. If you are good programmer, multi-threading should make you a great programmer (of course with a lot of practice)

Step #6 - TCP/IP Fundamentals
Today, Internet reached everyone's home. Facebook, Yahoo, Google and many other websites/webservices are reality only because of TCP/IP stack. If you want to program network applications or design network elements, it is very much essential for you to understand how TCP/IP works. Whether you want to write a simple chat server/client or complex web application like Facebook, this is where you should start.

Step #7 - Network Programming in Linux 
This stage is very interesting as you will learn how to write your own network applications using APIs provided by Linux. It should take a while for you to master this. In this stage, you will understand what is socket and what are various different ways of communication. Once you are done with this, you will be regarded as full blown application developer on Linux and most likely you will be an expert in "C".

Step #8 - Linux Kernel Module Programming
If you are system programmer or want to become one, after acquiring above skills, i bet the next thing you would like is writing your own LKM. It gives you an opportunity to play with famous kernel - Linux. You will write modules which is part of Kernel. You will compile Linux kernel and be a true hacker. This will surely quench your thirst of becoming a great programmer and highly sought after.

How much time do you think it will take to accomplish the above training path.
If you are second year or have two more years to complete your degree, you have ample time. With your consistent efforts, it should be really a doable task.

Happy Learning

Watch out the space on how can you build same expertise in Java world.

24 August 2013

OpenGyan @ SRM University

OpenGyan had its first workshop in Chennai at SRM University. In a sense it is breakthrough as we are conducting our first workshop in Chennai (officially under the banner of OpenGyan). Today (24-Aug-2013), we met bunch of students in SRM University in their campus and conducted workshop on "Data Structures (and applications)".

Again, it was wonderful experience meeting the students' community and personally i have learnt a lot during the session. Many of the students were posting interesting questions and i had to recollect the basics i learnt to give them an answer. Apart from the questions, i really liked the way in which the students adapted to the situation. They organized themselves so well that we could overcome unavailability of Linux systems. If we had few Linux systems, the workshop would have been more successful. During the course of the workshop, we discussed (and learnt) many interesting data structures, wrote code, fine tune the code that was written, discussed about career, discussed about doing pet projects. Wow, we thoroughly enjoyed.

Kudos to the students, professors and everyone for organizing wonderful workshop.

Without a doubt, it was one of the most productive days in life :-)

Couple of snaps from workshop






18 August 2013

OpenGyan - Update

We will be conducting around four workshops in Aug/Sept and we are discussing with few colleges in Bangalore and Coimbatore for couple more workshops in Oct 2013. We happen to have discussion with HOD of an engineering college in Bangalore and they were interested to have series of workshops in their institute (based on our workshop flowchart). Glad to see interest in OpenGyan. With your support, we believe that OpenGyan and its cause will grow in coming years. 

We are also planning to add more initiatives and we are thinking about few initiatives that can be delivered over web (like forums or emails) and it also helps students across colleges to collaborate using Internet. The rolling out of new initiatives will take little more time as we need to work on planning and how to cater the needs of the students. Watch out this space for more updates.

Kudos/Credits
Many thanks to supporters and "word-of-mouth" ambassadors of OpenGyan. All those likes/shares, tweets and casual chit chats really helps OpenGyan in a very long way.

Your help helps us in a long way: Support us in Facebook and Twitter 

For first time viewers: OpenGyan is a non-profit initiative that helps the students community to improve their exposure in information technology, computers, programming and problem solving. As a side effect, you get to know about Open Source Software. More information - http://www.opengyan.com

09 August 2013

Participation Vs participation

There are at least two meanings for Participation and it is most often misunderstood (again, most of the times at work)

Participation - Participate in decision making, take part in making something better and be part of some effort, take part in the learning process and try to make some meaningful contribution.

Participation - Claim ownership and be part of the results.

When we see more "Participation " than "Participation", then it is definite time to be vocal/bold. If you do not sow a seed or if you don't water/protect the plant, don't expect a fruit.


08 August 2013

Support Growing for OpenGyan

A couple of days back there was post here on OpenGyan's first media visibility.

I got calls from 10+ folks from my neighborhood appreciating/wishing that we are doing a good job and we had couple of parents visiting me to help/counsell their kids. It is very heartening to see that people around us wish and want us to be successful. A couple of folks wanted to join us and wanted to contribute towards OpenGyan and its mission. Glad to see that support for OpenGyan is growing.

We are very thankful to all kind hearted human beings who are giving us morale strength and whole-hearted support. It is that strength that makes us to continue the journey and reinforces us that we are doing something worthwhile and meaningful. On the other side, we
feel little nervous and fearful and i am pretty sure that we will overcome that fear. The fear is equipping ourselves to step up our contribution/work. We have plenty of plans for that and soon you should witness couple of initiatives.

Expect an announcement soon.

Thank you for the wonderful support, wishes and suggestions.

Help Needed

Help us to help your alma-mater: If you still have contact in your alma-mater, request you to discuss with the students/professors. We will be glad to talk to them and try to contribute there as well. If you need a brochure, we have one. Please reach out to us at "ping@opengyan.com". 

06 August 2013

Recognition for OpenGyan and our work to students community

OpenGyan received its first recognition in media. Nanganallur Talk is a neighborhood weekly in Chennai circulated to 42000+ homes. OpenGyan and our work to the students' community was covered in last week's stories. Our sincere thanks to Nanganallur Talk team for writing about us. Special thanks for Mr. Sreedhar Srinivasan who asked us lots of interesting questions during the interview. Here is the our first media article about us.

Nanganallur Talk (click on the image to enlarge)

I wish and hope that we live up to the words.

Many Thanks to everyone (students, professors, institutions and supporters) who supported us and taking us here

You can join our facebook page and support us - http://www.facebook.com/opengyan (a word of mouth really helps us and more importantly it helps the students out there)

04 August 2013

Trust

Trust.

Trust has become a commodity and found a place in vocabulary (more in workplace and little lesser in personal lives). Particularly the workplace has become more talkative about this "trust" and sometimes they appear as mere ploy. Many times and many of us speak about trust and say we are trustworthy (or try to prove by words to someone that we are trustworthy). 

Trust isn't a commodity. Trust is understood best when we don't talk about it or even think about it. Trust comes as a natural output of a fruitful, selfless and longer relationship.

Look at the picture, the kid never said that he trusted his father and father never asked his kid to trust him. The trust like this is an outcome of a fruitful relationship. If you don't have one, don't expect the trust.