Posterous theme by Cory Watilo

Startup Opportunity targeting College Graduates. Need your suggestions.

Hello Guys,

I am prototyping a small website targeting College graduates in INDIA (specifically). Its more about bridging the gap between Students and Industry through open ways. I want to share my idea and get your feedback about it and as well get suggestions regarding some of the problems I am facing.

Idea:

"Connecting Students and Industry" in "open ways" is what I said right ? By open ways I meant making Student explore the world of academics and opportunities in much more practical and realistic ways, not just through books. To be precise, the site contains features like "Notepad", "Questions & Answers"(Q&A), "Web-Resume".

1)By "Notepad" I meant something to save quickly. It could be used by the Student to save class-room assignment, write a thesis paper, write about a blogpost etc...

2)Q&A is all about asking questions about topics of one's interest and rewarding the community with one's answers. So any Student gets answers directly from an Industry guy, his/her Senior, his/her class-mate etc... It could also be used as a metric to know who serious he is with respect to a particular any field.

3)Web-Resume aggregates all the information the site has about the Student. So Web-Resume will have content like the actual scripts he has written while in college, his writing skills about a topic, topics of interest and expertise in each of them(this is through the questions he raised and answers he has given). How many persons he has helped so far. So I think this is a real way of getting what a Student is genuinely interested in like. So by all means it will beat a typical 2-page word resume which any student prepares in hurry just one day before the interview.

So what do you think ?

Coming to the problem I am facing is I want to crack the Employee-Engagement puzzle. Meaning, Not just Students, Employees also need to signup. Because Students getting help from the Employees is what the whole game is about. So to crack that, how do we make any typical employee signup and do something which is benificial for him and as well community/students ? If I crack this I can use this as a bait to get Student Signups and the whole cycle continues. So long story short, "how do I make Employees signup and benifit others(while getting benifited). Any ideas ?

Freelancing right from the University/College Level(in INDIA). Is it already there ? or Is it possible ?

As daily I get a couple of hours of "Me-Time", I tend to do something productive and wanted to do some freelancing. Its fun, productive, money. So I turned to popular freelancing websites like Freelancer.com, GetACoder.com etc... They are good, but what struck me was something different.

Why there isn't a simple website/platform ? where any person who want to get work done (or  Project submitter) in his/her own area of interest, can connect to any developer/programmer/designer "whose  qualification could range from a 1st Year University/College student to a Project Architect". I want to stress on the qualification part a bit. Because thats the key thing!

I am from a local college ("galli college" as we call in INDIA) and didn't quite get the hang of my Computer Science Degree until I passed out of my college. I was not sure of

  • What are Booming Technologies and on which I can start my career
  • What is a version control system or say, A bug-tracking system ?
  • What is open-source ?
  • What language makes you creative, productive
  • What is designing and how websites are built
  • Whats the real use of learning algorithms. Their applications in real world
  • all the rest

College Education wont really teach you the Industry/Market required things. I have nearly 5 years of experience in programming, developing, designing(to some extent), deploying web applications. This is about me after 5 years of passing out of college. Which means I went through rigorous training process over the years to learn things, knowing my interests. But even now I haven't contributed to a single open source project! (I have written one, but it didn't give me enough kick). Like me many people out there also don't get time to attend the monthly developer meetups. So like this, any developer (particularly in INDIA) lacks many required skills.


"Lack of Exposure"


Why not target this problem ? Assume a website is there where in you can sign in with your university/college/personal/office email address and can search & work on projects which are matching to interests/passion and can get meaning & money out of your valuable time. This concept may sound pretty simple and may even sound that it is no way different from any freelancing website. No! You are wrong. Hold on, let me speak a little more.

One fine day, a HR/Techlead of a big company sees a resume which has got sections like:

Real world experience, while at college:

1)Contributed to an open source project ( Say Django ? Tickets/Commit revisions go here)

2)Worked with a 5 person team (ofcourse offline, I am in college remember ?) in building a web application for a, say, some Fruit Company (Apple ?)

3)Had fun in trying Google App Engine and Firefox extension development and built this Smilometer (Whats this ? a simple firefox extension which will record your state of mind over a given day and makes a video out of it. Click smiley at any point of day and thats the state of your mind then.). Imagine one day, a company measures employee satisfaction just by watching a few videos.

4)etcetra etcetra.....

Wont this stand out from, say "Library Management System for my college" project ? or a "paper presentation on Bluetooth technology" ? Keep in mind, I am talking about 10 million students from normal colleges ("galli colleges"). Thats the key.

There is a "Meaning" to this idea, Because:

  1. Imagine a student gets 1000 rupees a month as his pocket money, just by his own hard work(in his free time ofcourse, I don't mean he should skip classes in college).
  2. He knows the value of money at a very young age and by the time he joins a company he would literally match the talent of a TechLead in a company. Fresher from this website vs Techlead of a company, You make the pick!
  3. No crying that there aren't enough jobs in INDIA
  4. No crying that I got a score of 55% and I cant apply for Companies.
  5. No crying that "Google Interviewer asks all sorts of weird questions on Algorithms and I always thought algorithms are for mentally challenged"

There is a "Money" angle to this idea too:

  1. This is the same first point as the "Meaning" one mentioned above. Sometimes, "Money" by itself is "Meaning"
  2. A tie up can be established between the company and our website, so that company people can have a "practical watch" on student's academic record. 
  3. A company person can ask for an assignment to students and get done. This sounds very similar to a written exam a fresher faces after 4 years of college. And now he gets to crack that right in his 1st or 2nd year.
  4. And many more.

Enough talk, I have two big questions:

  1. Is there a website which already does this and I am not aware of this ? I arose from a typical fresher background. If I don't know that site, I am sure, many of the students don't know that too. May be that site, needs more popularity!
  2. If there isn't site like this, why not somebody start this ? I would like to see good Product Development companies in INDIA.
  3. There is Meaning + Money to this idea Should I build this ?

Update: I have got a lot of questions, which I am thinking for answers and want to get feedback from the open web also. This could be interesting discussion..... Here are the questions

Money related:

  1. Assuming the initial (first 100) signups wont generate money, if you want to scale this to 1000 signups and is expecting money, how do you go about that ? Or in short, How/When do you generate your first rupee ?
  2. Revenue from Companies ? How does it go ? If the candidate is hired, we can expect some commission. But its gonna take time. Its not a immediate one. But you can only attract students by showing company logos in our website, which means, we need to have tie-ups with them already. How do we solve this cyclic problem ?

Site Popularity - Activity related:
  1. Assume the site is ready, how do you seed activity ? Meaning, How do you get the first 100 students/developers signups ? (Empty Restaurant Syndrome ?) and how do you attract the engagement among them ?
    • Answer: To engage a college student, you could go about telling that he/she could:
      • Document all his works in that site
      • Even build a website for his college (if there isn't one already) and that project by itself actually becomes a seeding activity
  2. How do you attract the management of the college/university ? For atleast giving a presentation about our website.
    • Answer: First question's answer would do I guess.
  3. How do you make sure the student/developer enagage more and not stop his engagement after submitting his stupid "library management system" project.
  4. And to get students from colleges I need to do things manually. Meaning, Going to each college (scaling is an issue here!), or even going to each company to get the word out. I want to cut that. Can this be taken as a challenge to get work done in fully an online way ? One answer could be, build a configurable product so that it exactly fits the needs of a typical college and later if it clicks, it can always be scaled.

ZeShare - My Git learnings and How I won't move away from Git, forever!

InShort: This blogpost is about, how I started writing my first opensource project "ZeShare" and how I started learning Git(the right way)

Since I am familiar with( and also passionate about) Django, I started writing the application in Django. Its nothing but a small code-sharing app. Similar to pastebin, djangosnippets or like many ones out there. The main point of building this app, is that code-sharing across peers, teams was not possible in our company, except that, there is a common svn code-base which will host our company project's source code. I cant use this, to share "small-small" code snippets with peers. And also, code-reviews were actually performed, only after I checkin(even faulty code) into the svn repo. To address these needs, I felt like building a small code-sharing application, which is "internal to the company".

I am from the svn world, but I started watching Github long before the thought of "ZeShare" came to my mind. As everyone puts it, there is some social networking element, mixed into this code-hosting platform, which is what attracted me most. So I decided to put my code on github. As opensource is not just about make your application source open, its also about building the community around it, accepting suggestions/patches from the community and letting the application grow along with the community, I felt like Git+Github should be the path I should take.

So I created a repo called zeshare in github and I cloned it from my local laptop and started working on it.

As Git makes somethings happen perfectly! (Local commits & branches). For every small thing I started creating a branch and I worked on it. Many a times if I feel like testing two different approaches for a problem/feature(which by itself is on a branch), I branch out. This was never confusing with git log --graph --pretty=oneline. During the course of learning Git and developing the product, I started noting down a few things for my own benefit and for the benefit of any git/github newbie. Here they are:

1) Never directly work on "master" branch

2) There will only be one "remote master" branch, which has got the "bleeding edge" code(ofcourse stable and no-errors), as people will be cloning the repo and by default will be at "master" branch. So will not expect errors!

3) There will be remote release branches as release-1.0, release-1.0.1(all bugfixes for 1.0), release-1.1(all fixes for 1.0 + atleast one feature addition)

4) There will be corresponding tags for each release as v1.0, v1.0.1, v1.2, ....

5) There can be infinite "local topic branches" which will always be merged into master and to release branches. When merging feature branches to the master, try adding a merge message. No harm!

6) I always hate rebase, as it tampers history and can't be done on the branch which is shared with other devs.

7) Always merge the branches, with --no-ff option, as it explicitly shows the existence of the branch in the repo history. This is really a life-saver. And I think it should be enabled by default. Lets hope that, for some day. As an example, see the network graph below, there is a continuous line of commits starting from Feb 1st to Feb 14th, these commits are actually branch merges.(and the merges were fast-forward merges, so git-log doesn't show the existence of the branches. So I started using git merge --no-ff from then. Now development on the branches started to show up in the way it should be shown :D)

8) Just incase if any immediate fix gets done(on a hotfix branch) and gets merged on to master, then all the feature branches get that change, from master, after merging with master(git checkout openid-feature; git merge --no-commit master;) This is the anti of rebasing. Please tell me if we have a better approach for this. Any approach other than rebasing, for pulling changes from other branches into current branch.

Update: git cherry-pick must be the right option as it will get only that particular commit. On the contrary, git merge --no-commit master will try to get all the other stuff also(besides the hotfix one)
Source: http://stackoverflow.com/questions/2461224/syncing-two-git-branches-that-only-differ-by-a-couple-of-files

9) Prefer to use staging(git add) always. Praise index . It will be really helpful if you want to try to different approaches for a problem, without branching. Meaning, assume one solution gets staged. And then, go ahead and start trying the second one. If you don't like the second one, you can directly commit( keep in mind, you have second solution related files in the working copy), and only the first solution gets committed(as its staged). But say, if you have lot many files regarding a single feature or a single problem and you have a single solution to handle and whatever you want to commit is all of them, then staging wont be really helpful. At that point, we can skip it. Use git commit -a option to commit.

10) As of this moment, no one actually forked my repo. So its just single developer project. So I don't have any experience on pulling from multiple repos(or forks) and how patches are suggested on a continual basis and other multi-player stuff. I'm looking forward to experience them..... Currently I am exploring the tutorials and will update this blogpost soon.

11) Always try to use command line interface(terminal). Never try their GUI(egit) equivalents in Eclipse. Because, CLI is more fun and clear, and I don't want any abstraction/encapsulation, particularly regarding Git, as its like a swiss-army-knife.

These are only a few ones I could remember as of this moment, but will update soon and Here is my project network graph.

Zeshare_github_network

Django Model Default Manager problem

It took me some time to figure out what this is. In the project which I am currently working on, I have a fairly simple models.py

As you can make out, its a normal "Question" model, with corresponding managers. But what struck me was, when I was going through the created objects of Question using Django's admin interface, all the objects with 'visible' flag set to True are only showing up. Meaning only PublicQuestions are only showing, but I defined three managers explicitly(Public, Active, DefaultManager). Even then, I felt django is behaving partially on such manager.

I drilled down to the source code to figure out a variable called model._default_manager. Still I went down further and found the answer to what "_default_manager" is and also to the bizarre problem I had.

Django sets the default_manager(which is used by Django admin in our case) as the first Manager defined. as you can make out, line:32 in mymodels.py(check the gist on top) is the "default manager". In otherwords its the PublicQuestionManager. So I was only seeing only Public objects. I am not sure why such design decision is made(picking first manager as default manager). And I am not sure why such Default manager is required(if more than one managers are defined).

Got an opinion on this. Please comment.

Power of Plugins

Many a times you develop a feature(for a product), which might be useful to some client and not useful to the other. You are not sure! But the feature should be included in the product(as its been already developed, or for some crazy future needs). So its better to have a global on-off functionality which will be enabled for certain clients and disabled for others.

Did you notice anything BIG in this? There is. Read on....

With just one single flag, the whole feature will be treated as a PLUGIN. You dont view your work as Software development. Instead you view it as, a more focused Plugin Development. These days, popular tools like Django, Eclipse, Mozilla and many others are resorting to the same philosophy. Plugin-related development or Loose-Coupling. Because its completely flexible and most importantly makes sense. If you dont like anything(or any component), just turn it off. Its that easy! (ofcourse proper dependancies need to be handled, and is always the case with any code anyway).

Now, lets think about it laterally. From the Open-Source perspective.

Let me give you an example, so its clear. These days I'have been using Wingware(instead of Eclipse) for all my development needs. As you may now, its proprietary and doesn't have any plugins concept. So if I want a good graphical svn merge tool I need to put a request to wingware teams to develop one. If I want a simple search utility to search files in my project using a wildcard expression, again I need to put a request to wingware teams to develop one. I made a list of this. So no plugins, no nothing. Thats the killer feature of Eclipse. Plugin development. You have a whole site dedicated for that and growing

Thats the power of Plugins. Got an opinion on this? Let your voice be heard by leaving a comment.

Login as Any User into a Django website

Note: Just recently I found a thread in one of the popular forums, asking a similar question. So felt like giving this solution(which I developed long back).

So login as any user into a website ?

Hey dont get me wrong! I am not telling a way to hack into Django's authentication system or steal the password of a user on a Django Site.

If you are an admin of a django site and many times it feels to visualize or experience how a normal website user actually sees different pages of your website. So to get this done, we create a normal user (just for testing purposes) and check the same, which is good. But sometimes we need to actually login as the same person to resolve a issue or to trace a particular exception which only one user or a specific set of users are experiencing.

Enough said. So you need to login as "Anybody" to gain access to their account/pages. Ofcourse you are site admin, and for some non-ambigous, quite-healthy purposes, you need a tool to get that done. Here it is. The django authentication module lets that possible.

Usage:login_using_email(request, "example@example.com")

I have mentioned only the helper or core method which is responsible for the actual user "logging-in" simulation. Proper view permissions(remember I mentioned only admins should use this) can be wrapped around it. Any thoughts on improving it? Always invited....

 

QUOTE: Think about the different areas of your life

Quoted by Matt on August 26 2009:

Think about the different areas of your life (career, relationships, spiritual, health, etc.) – and rate your satisfaction in each area from 1 to 10. Go through every area you rated a 5, 6, 7, or 8 – and replace it with a 1! Never settle for “it’s not so bad” – and instead face up to what you really want.

Derek Sivers summarizing a lesson from the book “Personal Development for Smart People” by Steve Pavlina. Come to think of it, this is a pretty good way to rate feature ideas too. Leave in the essential, omit the rest.

Autoposting to Facebook's wall without using Posterous autoposting feature

Objective: Ability to post to my update to the facebook wall without the autoposting feature supplied by Posterous

Steps:

First of all I am a big fan of posterous and I really like the autoposting feature. I normall make a tweet using the autoposting feature. It just simply works and is superb. But still what caught my eye was, I need to supply my credentials to them(posterous) to get the autoposting done. Which is reasonable I agree. But still I dont like it. So I wanted to post the same update to my facebook wall(and get friends to see on their own wall of friend updates), without doing anything.

I figured out a way I can do that. May be most of the people who frequently use facebook are familiar with this approach. But I was not. So please bear with me.

Go to Import notes page available at http://www.facebook.com/home.php#/editnotes.php?import and then put your own website url(say nandakishore.posterous.com) and click on "Start Importing". Thats it. Nothing else.

Next time you post a blog(using email or using web) to your own website, you get the same update on your wall. Ofcourse thats the power of RSS syndication. Thankyou RSS.