Showing posts with label Internship. Show all posts
Showing posts with label Internship. Show all posts

Tuesday, February 10, 2015

nice -20 technicalCareerProcess

Any guesses what this post will be about ?

Let me give you a hint. The nice command(runs on linux machines) has the same effect on a process's life which a good technical project or an amazing internship can do to your career.

I am sure you must have guessed it by now.
"Nice " command is used to increase the priority of process. Say if I know that a job is really lengthy and requires a lot of resources, I would probably want to decrease the priority so that higher priority jobs can run first.

In this article I am going to list a few resources/internship opportunity which you should not miss in college and these can really help you not only to make a good network with coders and programmers but also to earn a few brownie points for your resume.
1.) Google Summer of Code(GSOC)
The program invites students who meet their eligibility criteria to post applications that detail the software-coding project they wish to perform. These applications are then evaluated by the corresponding mentoring organisation. Every participating organisation must provide mentors for each of the project ideas received, if the organization is of the opinion that the project would benefit from them. The mentors then rank the applications and decide among themselves which proposals to accept. Google then decides how many projects each organization gets, and asks the organizations to mark at most that many projects accordingly.
It is not easy to come up with an idea just like that. You will have to use it and realize that what is missing or which feature/functionality can be added to enhance the usability of the project you have shown your interest in.

2.) Season of KDE (SoK)
KDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Solaris, Microsoft Windows, and OS X systems. It is known for its Plasma Desktop, a desktop environment provided as the default working environment on many Linux distributions
The goal of the community is to provide basic desktop functions and applications for daily needs as well as tools and documentation for developers to write stand-alone applications for the system.Season of KDE (SoK) is a program for people could not get accepted into Google Summer of Code. They will have a mentor from the KDE community to help them if any question arises or if they do not know how to continue.

3.) Anita Borg Scholarship-Only for girls sorry guys ! !
The scholarship is open to students at the Bachelors, Masters and PhD level who have at least one year of their program remaining. The scholarship value is around USD 1500–10000 and is competitively awarded based on essays and interviews. In addition, scholars and finalists usually have a retreat at a local Google office.
The program is run separately in several regions around the world, with local selection committees and retreats. Each program takes applications once per year, typically selecting one postgraduate and one undergraduate scholarship winner from among a group of 10–20 finalists.

4.) Contribute to open source
This is not an internship and neither will it pay you for the contributing to the project. However, it will give you amazing experience, provided you pick up an appropriate project. It not only proves that you are self-motivated to contribute to the open source and to take decisions by yourself but also proves that you have some exposure to real work.

So this is not an exhaustive list of all the internship opportunities or projects you can go for but this will give you good idea about other side projects which you can pursue very early in your career.



Monday, January 12, 2015

InternshipProject = Modify(Start_up_Idea);

Hundreds of start up are set up each day, some with an amazing idea and some with a not so amazing idea. I believe that in the world of technology every project or every success in tech world has two pillars one is the idea and the other is the excellent execution of that idea. Over a million other factors can be classified broadly in either of these two sets.
Some start ups achieve accolades by slightly changing the existing idea but it is the execution of their plan or risk taking appetite which makes them innovators. 
In this post I am going to talk about a few start up ideas which you can modify and implement in you college project itself and get an exposure of various new technologies and research work.
DISCLAIMER : I have selected these idea purely on the basis of their implementation say the functionality of their website or the idea/algorithm which they might be using at the back end. I am not saying that these ideas are too easy that you can set up your own start up and start generating revenue.

This idea is basically a recommendation system. There a lot of research papers which can be obtained form IEEE or Google Scholars website based on recommendation systems. The papers basically add a minor change in a basic structure which one might can think of to make a recommendation. Even though the recommendation system used in sites like Amazon or flipkart are really complex(assuming) but even I worked on a recommendation based research paper for e-governance, where we not only made a recommendation to the users using the web logs but also took care what if the user didn't take our recommendation.

WishPicker is about recommending gifts for your friends and family and allows you to purchase them too, so on the whole it is an eCommerce platform in disguise. You can implement such an algorithm where you first classify each product into a category and add features like age, gender, cost, popularity etc. When a user comes to seek a recommendation of gift with parameter say A,B and C, first find all the products with A, B and C attribute. If that result is less than say 15 then go on to select product with attribute A and B, assuming priority of A>B>C. This idea can be made more attractive with an amazing UI and magazine like structure.

It is a startup which lies in travel and tourism domain. The idea behind this website is that usually when people travel abroad they not only want to see the famous picture but in a way they want to experience the life of a local citizen.  So the idea is that this website provides a platform to local people of the country to post any local event which they might want to organise. For ex if Bob knows how to cook a truly authentic dish or drink of Barcelona, he will post the ad on line so that all those tourists who are visiting Barcelona can attend his class at 'x' cost and specific days and time. This was an example of food category, similar ads can be posted for adventurous games or merely sightseeing.

Important point for such a website is to identify what types of ads can be posted and what is not allowed. For ex how do you stop some one from posting fake deals or deals hosted for illegal agendas. Here basic knowledge of semantic search can be applied. obviously you  need not handle all the cases but if you algorithm can handle or stop  40% of malicious content, it will be more than enough.

3.) Meterup
The idea behind this project was to let the users compare the fares of various cab services. This is another idea which most start ups follow. I call such idea comparator idea. Such start ups access the API offered by various websites and compare the cost and let the parent company/the host company to collect the cost. for ex comparehatke/buyhatke. Now coming back to the MeterUp.

The idea is to access the approx fares returned by APIs of leading cab services and and display the result. The made an app and a website for the same idea. Apart from just showing the fares they also show approx distance and access google map api to know the shortest route. The benefit of implementing such an idea is that you understand how to build an Android app and then you also learn to access various APIs.

The idea is to let people post any idea they have. From ideas like 'give historical facts on a pizza cover' to  'a new way to keep your books'. The founders thought that most of the times people invent simple methods to implement a particular idea but usually they have no one to share it with. Obviously, people can share such creativity with their friends on facebook but it does not amplify the idea. So they thought they can give a platform to people where they can come in and post their thoughts or suggest an idea. The interface is really simple and easy to use.

Once again, you can take this idea and to enhance your skills you can advance it to either domain : 1.) Make use of complied CSS libraries like Bootstrap to create responsive design or 2.) Implement artificial intelligence or data mining at the back-end to gather the data or rough statistics like how many of feedback about XYZ company are positive and how many are negative using the comments not discrete ratings of any form. 3.) Or use ElasticSearch/solr as search library to search efficiently.

Sunday, January 11, 2015

@Test(expected = ComputerEngineeringErrors.class)

You might be wondering about the strange title of this post.
In this post I am going list a few mistakes which I regret doing back in college. I don't know how different my professional life would have been had I not made these mistakes but all I know is that these were "mistakes" which shouldn't have been made and should not be repeated by any one.
Before getting into lessons learnt following is the technical description of the title.

@Test is the Junit annotation to tell the Java compiler that following function is a test.
When we test a function say divide(int a, int b) {return a/b;} and we know if b is equal 0 we will get a "divide by zero", so to tell the test case that we expect an exception thrown we write expected = ErrorExpected.class

MISTAKE 1: Chased internship in a giant technical companies rather than working in a startups or a research based project.
I was so intrigued by the idea of how computer engineers work professionally that I deliberately ruined the opportunity of working in 2 startups during summer vacations via on-campus internship programs. In one of them, the interviewer had known a senior of mine, for whom I had made some
plugin to be used in his website. I didn't know that he(senior) was now working with this startup and even before my interview process, the interviewer told me that he already knew about the plugin which I had made for that website and is really looking forward for the interview and I totally ruined my interview deliberately because I knew that if I take this internship opportunity, I would not get a chance to appear for another internship interview via the college placement cell. To add on to my mistakes, I didn't even made an effort to at least pick a research based project under some professor's guidance so that I could at least do a quality project in the vacations. In the end, no more companies came for the internship process and secondly I thought it would be too dumb to do a research based project and it won't give me a professional exposure.

MISTAKE 2: Underestimated the power of delta change in resume
Through out my engineering life, I continued to skip of small project. Ex, a professor once had a project which was say, 75% done and the professor was looking for students who could test it, continue the development and give the performance number but the research or the scope of that project had already been defined and done. I thought since I had not started on this project, I should not take this task because it won't be 100%  my own research. In my fourth year of engineering I realized that to do a big project one should preferably begin with such smaller things because first of all it is not too much burden all together and secondly, one should not dream of coming up with something big in just first attempt.Most of the owners of successful startups had initially failed bad in their carrier before making it big.
Such delta changes in your resume reflect a lot of change at the end of your engineering life. Rather than waiting for a big day when everything will fall in place it is a lot better to do something small today even if it is as meager as learning a new desktop shortcut .

MISTAKE 3: Ignored some really good ideas
In college, I had a tendency to grade my ideas as "Not good" and ignore them. I don't know why I did that may be because I was afraid of executing/implementing them or may be it was because I didn't believe in my own ideas or I didn't brainstorm on it a lot. A lot of times I ignored the ideas because I felt that there was a technical blocker which I am bound to face in future and didn't know about the right resources or right people to contact. One time I had this idea that there should be a website where students can post some class notes or exam papers. Though this idea may seem to cliche now but back then we didn't have any such website, so it was actually a potential opportunity which I totally missed. A few days later some seniors launched such website using a basic "Wordpress Template" and with just basic functionality to download pdf verison of notes and exam papers. That idea could have been extended to an app on with uploading rights to based on college identity/admission number.
Lesson learnt was never ever ignore your ideas even if you feel they are too basic or not so important. Because you feel that something is missing around your college or locality, it is very much probable someone else is missing it too. All problems are opportunities is disguise and don't fill your eyes with tears if you miss one because it will double the chances of missing another. Important point on which you should work upon is figuring out that whether have you missed an opportunity or not. For ex, when I didn't work on the college website idea, I didn't even recognise it as an opportunity.

I hope that you will not make these mistakes or miss another opportunity.


Friday, January 2, 2015

How to get the perfect internship ? ! ! ?

CONFESSION 

"Getting an internship is sometimes more difficult than getting a Job"
Get an internship specially when you are just a sophomore/third year student is like task equivalent of cutting a Gordian knot.
Issues which a normal student might face while looking for an internships are :-
1.) Most companies do not offer 2 months internship. They offer it for 6 months
2.) Lack of skill set in sophomores or lack of proper guidance like failing to apply on right time.
3.) Zero contacts in industry or no god father in your life to form a platform for you to walk.
4.) Unaware of the fact which field interests you more.

I faced all these issues in at least one year each while pursuing my graduation. And now when I look back I realize that there was hardly any need to get so apprehensive about this entire process of getting an internships.

So following are the ways which might help you to do/learn something meaningful

1.) GETTING AN INTERNSHIP VIA THE CAMPUS ITSELF
Most of the companies which when visit the campus for recruitment session also allow the third year students to appear for the exam too on a different/same day keeping the question paper same. Plus they give some stipend. And if you work really good they might even offer you pre-placement offer (also known as PPO), which is pretty good and saves you from facing the intense competition of the placement session.

2.) DO RESEARCH BASED PROJECT WITH YOUR COLLEGE PROFESSOR
I was lucky that somebody gave me this advice when I was a sophomore but ignorant enough to pay no heed to the suggestion. Because I was dying to know how professionals work.I wanted to experience something new rather than pursuing another project under the guidance of my professor. This was one of the worst mistake of my engineering life. If you realize that you are not getting an internship from the campus itself and there is no chance to get the same because of any reason - lack of preparation etc start looking for professor who might consider to guide you, while you pursue a project under the prof's guidance. If you are not interested in research for an algorithm or if your interests is totally aligned with programming then you can tell your professors the same. Sometimes they have seniors/PHD students working under their guidance who are also looking for programmers because of lack of time to implement the algorithm or it never hurts to have a helping hand.
If your college does not have such provision of promoting the research work you can look for nearby good colleges or contact PHD students of those colleges via linkedin or facebook.

3.) JOIN A STARTUP
This is the best you can do.Your knowledge will increase exponentially. Additionally you will experience how computer engineers work. Now if you are wondering how to contact the right start up, I am going to suggest a few ways via which you can know about the upcoming start up around your area. My favorite is "The Economic Times". Even if you are not a newspaper person or haven't subscribed to the newspaper itself, you can go to their website and look for "Biz & entrepreneurship" section to get a list of new and upcoming start ups. Next you can look for sites like letsintern or hellointern .Go to the respective website of the startups and look for Job or career or Join Us section. You can send them a mail with your resume and a good enough SOP. You will most certainly receive a response. But make sure to have a good command over at least one programming language and send mail to at least 10 startups.

4.) SOLVE A PROBLEM OF YOUR NEIGHBORHOOD/COLLEGE/CLASSMATES
This is the best you can do for your community. This help you improve not only your technical skills but also skills like problem solving and team-management if you can motivate other to work with you as a team for the cause. 
The million dollar question here is how to find an appropriate problem to target. I would just like to give you some ideas like 
  • Say you feel that there can be a portal where students can upload their notes/links/past year question paper etc. You can design a website on similar involve. You might implement the       project using latest technologies like MongoDB and python rather than conventional PHP and MySql.
  • You can make a college app which will enlist the upcoming events/talks or the reminder system of classes.Try to make use of Sencha framework.
  •  Organize a hackathon. If you feel that you can help others than you can pick a topic like C++   library or Python web scrapping library. Organize a meet up where you can first teach these       skills and then see if your batch mates come up with an innovative idea around the same.
  • Last but not the least and this is my favorite too. Make a Chrome or Mozilla extension. Explore APIs of various upcoming products and enhance their functionality by making a chrome       extension.
  • Add a twist in conventional projects. There are numerous sites where the conventional and easy to make projects like online library system, hospital management, car rental or chat server are available. Try to add something new and innovative in these system. For ex: I made a conventional examination system and the students performance was measured not in an absolute manner but with respect to how to peers performed and how to the teacher performed in the same test. And as one of my other internship program I made a Content Management System where not even the header of the website was hard coded. Everything was stored in the database and only the CSS part was written rest everything was retrieved by querying the database and the user interface was such that even a non-technical person could add or delete articles with any prior training.

I hope these points will help you in creating something innovative and out of the box rather than looking for internships which in the first place waste your time to contact the right person and secondly, 90% times are not as good as you expect them to be.