10 February 2014

Creativity Vs Commodity - A Rant

Beware, this might appear as a rant for many :-).

The ability of an individual to do something is very limited unless you automate something. The results produced due to automation is huge because they can run always. But then, they are not fool proof because the automated process do not have common sense. It cannot apply its mind because it doesn't have one. You teach some sense, it learns but it can't apply to different situations - lack of common sense. So, some part of the world is trying every bit to make everyone as a "automated thing" with repeatable, predictable, assured models - skills are commoditized. Automating using computer is not profitable but automating using human is profitable. It's a business here.

Then, it leads to erosion (from people moving out in short term to skill erosion in the whole thing). You don't cherish someone with rare skill neither you feel bad when you lose someone with rare skills. Because you do not need such skills (so you have not used it well) or you have decomposed the skills as models.

But the irony is that you try to find creativity when the skills are commoditized and using the skills that are commoditized. All those recommendations in LinkedIn are worthless when "the creativity" of human is lost. It is sick thing.

By now, you would gotten that this post is not against programming, scripting or building products using software or automating using software.Automation using software is great thing but trying make human as cogs isn't great.


09 February 2014

OpenGyan - Public Workshop on Networking Basics

Computer networks is a fascinating area. I picked up very little of networking or computer networks when i was doing my engineering and most of it came from the place where i m working. Like many folks at my work place, i too started my career with networking and played with routers and switches. Slowly, i was introduced to works of great programmers/teachers/authors like Richard Stevens. 

Many folks who attend my workshops used to ask me - how can i learn networking. If i do CCNA will it be helpful. While the certifications are there for a specific reason, a mere certification will not fetch you a job. It is the knowledge that will get you something. So, my suggestions to all folks who wants to learn networking is to get started with reading/experimenting using the books of Richard Stevens. Unlike other theoritical books, Richard Steven's work are thought provoking and the reader gain knowledge by doing stuff.

Keep this in mind, i am planning to put together a curtain raiser to the fascinating subject - communication of computers. We believe this workshop would help someone to understand various jargon and at a bare minimum will give an exposure on practical aspects of networking. At the end of the course, you will not get everything about networking but you might develop an interest towards networking and will be in a position to take networking knowledge to next level (if you are ready to put the efforts needed).

We are planning to have this workshop somewhere in Nanganallur, Chennai and for logistics reason we need a minimum of 10-15 students committed to attend the workshop. If you would like to take this opportunity, please do fill this form. One of us will get back shortly. This is targeted for students. Here is the registration link


02 February 2014

OpenGyan - First Public Workshop

Today - From colleges to community.

OpenGyan has been conducting workshops in colleges. Today (and for the first time), we conducted our first public workshop in Nanganallur, Chennai. The workshop was on "Resume Writing and Interview skills". It was wonderful experience and all the participants (though number of participants were less) were really charged up. The advantage of conducting such workshops is that you get folks who are really interested to learn and this group of participants were really good. I got a feeling that the day was spent well and we hope that the participants too feel the same.

Our special thanks to Mr. Barani Prasad, Nanganallur, Chennai and the school administration of Jaigopal Garodia Girls Higher Secondary School, Nanganallur, Chennai for helping us giving a class room. Kudos to Ganesh Narayan who was behind organizing this workshop flawlessly and without his dedication this workshop wouldn't have happened.

Glad that we were able to do this today and here is a picture captured.



08 January 2014

Accepting Perceptions

I wanted to write this as my Facebook status. But i failed to make it concise. So, it became a blog post.

In life, we say that "i understand your point". It usually goes like this. You say something, the others perceive it in a way, they say something and you say "i understand your point". As we live we build perceptions and keep building it at a much faster pace. Sometimes the perceptions are wrong because our understanding is wrong. Sometimes we say we understand others perceptions but the reality is we say so due to "diplomacy".

"accepting perceptions" or "understanding others" will not be a true statement if you do not have either the trust on the other side/person or you are very stiff on your own viewpoint. If you are stiff (adamant or arrogant), i believe that you will miss an opportunity to learn something or an opportunity to correct our own perceptions on things (and miss an opportunity to be smarter). And there won't be questions from you to fine your perceptions. It will just be an acting. You will say "i accept" but internally you will "overrule it".

I believe it is very difficult to be truly "accepting perceptions" as requires one to be very bold to accept others. You got to be bold because by accepting others' perceptions, you lose yourself. But the key here is to stop as "losing yourself" and start seeing this as "reinventing yourself".

Accepting perceptions is the way to go about reinventing oneself.

01 January 2014

Wish you a very happy new year

OpenGyan and Unstuck wishes you a very happy new year 2014.

A lot of good stuff happened in OpenGyan and it was mini-turnaround. Few of the colleges wanted to engage with us continuously and we do find that it would be apt to do the same. Instead spreading and scattering our bandwidth, it would be meaningful to focus and invest our energies on few institutes. We are hoping that this year will be fruitful in terms of building longer & strategic partnerships with those institutes. As the days go, you will find more interesting updates on building relationships and sustaining those relationships. Overall, we want to be little intelligent in investing our bandwidth and reach out to more students to help the community.

Our heartfelt thanks to everyone who has supported us. Hope we continue to get your support.

Once again, OpenGyan wishes you a very happy and fantastic new year.

17 November 2013

Wonderful Experience in OpenGyan Workshop

"Those were really fulfilling moments". 

This would be an understatement. The amount of satisfaction and sense of attachment i get out of OpenGyan's workshop can never be said in words. A day's time or sometimes probably lesser than that is required to rejuvenate my morale. The amount of inspiration and motivation i get from the tiny leaders out there in schools is very huge. Many folks think i go to colleges to add value to the students. But usually it is the opposite. I feel that i get a huge benefit and value from those students - a bunch of students who have hope in their eyes and fire in their belly. You never know the magnitude of their fire just by looks. You should really talk to them.

Yesterday, it was once again a great moment unnoticed. I would rather say that it would have gone unnoticed had i been normal, usual. Yesterday was the first time we were in a polytechnic to meet up budding diploma holders. We spent close to three hours to talk about computers, programming and operating systems. Many times during the session, i hit my limits and had to rethink about the way i deliver the session. The questions were spontaneous, direct and cannot/should not be missed. Yet all those had to be answered to curious minds.

It was wonderful session and i sincerely wish all my workshops are like this. If the participants try to shake my understanding of computing, it helps me to understand it better. Yesterday was one such day. Because of intense discussions, we missed to capture the moments through lens but we didnt miss to capture the college along with Paramaraj (alumnus of the college and my co-worker) and the faculty from Dept of Electronics.


Don't miss to visit us in Facebook - OpenGyan @ Facebook (your support means a lot to us)

04 November 2013

Improve Thinking Through Designing Scenarios, Puzzles and Games

As a part of OpenGyan, we have started to roll out videos for the students who want to be in touch with us. The design of topics and boxing them to 7-10 minutes duration is very challenging. When we do in-class workshop, it becomes a lot easier. But in the video we need to complete our session logically within 7-10 minutes.

While doing that i understood the power of analogy, co-relation, quickly building a short
scenario that can be expressed in under a minute. I see that these scenarios, puzzles and games help me to convey the point and i believe it will also help the listeners to have sharp focus on the content.

At the end, we also suggest some exercises. Again these exercises are scenarios, puzzles, coding problems and games. While i am designing the content, i find that my perspective on the topic changes and i tend to refer the text books, online materials to verify my understanding. And in that process, my thinking grows.

Designing our own puzzles, scenarios and games certainly helps to improve our thinking.

Now a bit of shameless branding :-)

To watch our videos, kindly check out our YouTube Channel.

Spread a word around (join us in Facebook and like/criticize us) and get into our hall of fame.

Happy week !

14 October 2013

First Video from Canon 600d

I have been writing posts here in Unstuck for quite sometime and i always wanted to move to next level from writing to something different. The entire world is moving towards video. Recently, i bought a Canon 600d DSLR (in fact it was my wife's negotiation skill that made me to buy this camera. Later i thought, it is worth buying) and captured few videos. Here is one that i captured and published under the banner of OpenGyan. I thought of sharing it with you. Here is the video, watch it and share you comments.


30 September 2013

OpenGyan - Update

Last Saturday (28-Sep-2013) we @ OpenGyan were in Bangalore at KSIT. This is our first workshop in Bangalore. This time we were conducting our workshop on Networking. Originally we planned to conducted Networking and Network Programming. We were not able to touch Network programming due to time. Hopefully we conduct network programming soon.

It was wonderful experience and we should say that the students were brilliant. There were lot of intelligent questions and the students attended the workshop with full enthusiasm. After seeing their enthusiasm, i felt that i should go back to college and learn once again. The hospitality and the interactions with the students and professors we really enriching and rewarding.

Kudos to everyone who made this event and we really looking forward for our workshop in KSIT again. Here are few snaps.

















21 September 2013

OpenGyan - Becoming a Better Programmer

[Alert: Longer post, targeted for students community. Comments are welcome from seasoned software engineers]

Recently we had a couple of OpenGyan's workshops and i happen to scribble my ideas to the students. I hope i will be able to dedicate more time in writing posts like this. Hope this helps the students' community. Though software engineering is a very complex area (is it really that complex?), we are going to focus on the things that are very important for software development of any sort - may it be a lab exercise or a project. The readers are suggested to reflect upon the exercises given at the end of each article for better understanding.

I was reading and reflecting on the short article written by Badhri on Programming languages. Though it was short, it gave a general overview about the programming language. Any programming language is a tool to achieve your imagination. For example, if you are writing a simple program (similar to the ones that is given to you in lab), you do not need to think much. But in reality it isn't the case. To be a programmer, knowing a programming language is secondary because knowing the syntax of the programming language won't make you a good programmer. If knowing programming language is sufficient, then compiler would do the job. Software development is much more than knowing a programming language or few.

Any software is a solution to a given problem. And programming language is just a tool to solve the problem. The solution to the problem is more important than the tool (the programming language). In order to develop a better software one needs to follow certain basic principles in a specific order. The rest of the article discusses the basic principles of software development in a much simplified way.

First, one needs to understand what needs to be done. Because you cannot go on writing program simply for everything. You need to understand that you are writing a program for someone to use it. Remember that you will not always write program to improve your knowledge. So understanding the requirements - what needs to be done plays a crucial part. Understanding the requirements is the first step and if you do not understand the requirements, remember you do not have the second step.

As a second step to writing a program, you need to know how to solve the given problem without employing much of your knowledge on programming languages. For example, if you are writing a game, you need to understand and know how the game is played, how many players are involved, what are their roles etc. In this phase, you will least bother about whether you will use linked list or array. But you will solve the problem at an abstract level. This is called high level design. After high level design, you will decompose the high level design into modules and design each modules. For example, if you are writing a program to validate Palindrome, you need to have input module, processing module and output module. This ability to decompose the problems in sub-problems and solving them with sufficient data structures and algorithms is called low level design. While you are solving the problem, you should also keep in mind about the future problems that may crop up. Your design has to be flexible enough to accommodate future problems (which is quite challenging).

The third skill that is required is to convert the design into product and this is where the programming language comes in. Without the above two steps, the third skill is not worth and in fact not needed. Once you have understood the problem and solved it at a conceptual level, then implementation becomes pretty easier. You do not need to beat around the bush. During the implementation phase, you will implement the entire software module by module and finally integrate the modules to make it bigger whole. Apart from implementing the design, the coding is also about producing maintainable code. When you develop software, you are writing the software which is expected to live more than your lifetime. The program (aka code) can be written with a lot of grace and the code that is well written will live beyond ages (example Unix). The developer needs to understand about other developers who are working with him/her and the people who will be working in future. So programming is not merely following syntax but much more than that. As this point of time, we have discussed about three important qualities of a developer.

The final thing that you need to do as developer is to test your software. The primary focus of testing is to uncover hidden defects. As a developer, you are the best person to know about your code and it makes sense for others to bank on your certificate. So, it is the developers' responsibility to test the software and fix the defects. This is called as unit testing as the developer who develops it ensures that all the code that is written works as expected.

You need to evaluate how much percentage does a programming language play here. May be 40%. But please do not get me wrong. For writing a software, you need a language however for solving problems you need skills like understanding requirements, designing and most importantly testing it. Without these skills, you will not be able to excel as developer. Now would you understand why you have "Algorithm", "Flow Chart", "Hand Calculation" and "Output" section in your lab observation.

When you follow the above software development practices right from the beginning, you become a natural programmer/developer to solve any complex problems. You may want to evaluate your current way of writing programs. First solve the problem and then start writing the program. Though the exercise is short/simple, i am sure there is a lot to learn in terms of processes.

Exercise:
Take any simple program (Palindrome, Fibonacci series) and apply all the concepts you understood from this article (Duration: 3 Hours, Complexity: Medium)
  1. Clearly understand the requirement/problem. For example, what is palindrome or Fibonacci series
  2. Solve the problem by decomposing into modules
  3. Write the software
  4. Finally test

Happy Weekend

15 September 2013

Learning and Rules of Brain

For quite sometime, i have taken up reading quite seriously. All the credits should go to OpenGyan. In order to prepare the content and aid me in delivery of workshops, i tend to read books (most of them are bibles and it needs at least few years to completely understand the content and solve the exercises in the books). For example, when i started to design workshop on Linux, it was mostly my experience along with gathering of information from "man" pages. I later found that a lot of coherency can be brought to the presentation, workshops and its contents if i follow a standard text book. It has couple of advantages. We tend to know ahead of time what can be covered in a days time and helps me in structuring my workshops. The second, sweet and big take away is that i tend to read a lot of material which in turn makes me to know little more. Because of this approach, my learning is incremental and i tend to know how the students will struggle if just dump everything in single shot. So, my effort would be to explain them what is required to understand a topic, do some experiments and give them few case studies. Finally get their feedback to fine tune the content. 

In this process i understood the importance of revision and its short-term and long term-benefits which is outlined in one of the interesting books that i read a while ago - Brain Rules. In order to fix the issues in the content and my understanding, i need to reread the text books and correct my understanding. When i read it again, i tend to get a feeling that my real learning starts today as i would learn something little deeper and the information seems to be wired strongly. This kind of makes me to take the classes at a relative ease (for the ones that i revise and i continue to struggle until i find the resonance ;-)).

There is a scientific way to know how brain works and the efficiency of the brain can be increased (btw, it works for only who has it and who uses it but it can't do any magic if you dont have it or use it, wow what a pun ;-)). Brain Rules makes sense now and if you are interested in developing your brain, check out thisthis and the video below.


Learn the rules of brain, and you won't regret it.

Have a good Sunday or a great week ahead if you are reading this on Monday :-)