Sunday, February 1, 2015

The nature of disruption

An idea is an experience. The experiences and their sum is what makes a life worth reverberating the universe. The great ideas of the world are thousands or God knows even millions of years old. Ideas are same. They haven’t changed much. Ideas aren't created. Ideas aren't invented. Ideas aren't good. Ideas aren't bad either. Neither they disrupt. They are discovered, they are experienced and they are the reasons. Not the results.

Go take a task and imagine what a world would look like in coming 20 years. Not much has changed in past 20 years except for the conversations. The rate of physical development isn't that incredible. But imagination of people, it has already reached the edge of the world and seen the beginning and the end of time.

That clues that this world is lead by a thought, is a thought, well thought. An idea. An imagination. A few hundreds characters or can be just a single word. A color speaks an idea. A small noise has a meaning. Even a semicolon gives someone a reason. That thought is like a small light of candle coming from a old house at high villages of Tumlingtar. That light that you can see from tens of kilometers away. That light that drags you towards it. That guides. That keeps you moving up the road, towards itself.

Each idea and in turn each life behind is a meaning. Living to change the world is one way to live. Living to understand the world is another. Living to eat good healthy food, another. Living to have fun another. There are labels and as such as others there are professions. These experiences are the generators of those ideas, cumulatively inspiring and leading the world towards innovation.

Start by solving problems or start by creating a problem, it’s a choice to make. The problem is an idea. The solution is also an idea. There are goals, ideas as well. The more in sync the choices at the beginning are to the goals set, the better and the successful the journey becomes.

The sync comes from thoughts. Thoughts run. Thoughts float.
Shut down your noise producing device. Activate your input devices.
Keep calm. Look at the sky. Listen to the nature and let the thoughts settle.
Let the ideas flow. Let them first gain the speed of the universe.

There are the discoveries.

Friday, September 6, 2013

नेपाली नलेख्ने नेपालीहरु

संदेश दाजु काठमाडौंको पपुलर स्कूलमा नेपाली पढाउनु हुन्छ l एकपल्ट दाजुले फेसबुक स्टाटस लेखी पोस्ट बटन दाबेर आफ्नो पोस्ट देखिएला भन्दै न्युज फिड हेरिरा बेला माथीबाट लुत्रुक्क एन.एस.ए सर्भिलेन्स सम्बन्धि पोस्ट झरेछ l संदेश दाजुको कम्पारो तात्यो l आफ्ना साथीले हेरुन भनेर लेखेको पोस्ट फेसबूक मार्फत घुमी फिरी कहाँ कहाँ पुग्दो रहेछ अनी त्यसमा अनेक थरिका मेसिनरी प्रोसेसिंग भएर स्टाटस लेख्नेको बारेमा बकाइदा अमेरिकी सरकारी निकाएबाट जासूसी मोनिटरिङ भैरहेको हुदों रैछ l आफ्नो सूचना र गोपनियताको हक खै ? संदेश दाजुले मलाई कल गर्नुभो – "के हो  बाबु यस्तो ? "

संदेश दाजु पि.सी.एल. गरेका मान्छे l आफू अंग्रेजीमा अली कमजोर भएको स्विकार्ने मान्छे l अंग्रेजी फाट्ट फुट्ट लेख्ने अनी साधारण अंग्रेजी बुझ्नेका लागि भनेर लेखिएका समाचारहरु कनीकुथी अर्थ लाउन जान्ने l टुटे फुटेको अंग्रेजीमा पोस्ट लेख्दा अनी आफूले लेखेको अंग्रेजी मिठासको प्रसंसा गर्ने फेसबुकका लाइकेहरु देखेर दाजुलाई मजा लाग्दो हो l एक लाइकमा एक मजा हुन्छ अरे l

"अनलाईनमा लेख्ने सबै कुरा नेपालीमा लेख्नु संदेश दाजु - नेपाली भाषा बुझेर अर्थ लाउने जान्ने मेसिनहरु संसारमा अहिले सम्म बनेका छैनन्", मैले सारा नेपाली प्राबिधिक क्षेत्रको ज्ञाताले जसरि कन्फिडेन्स साथ भने l "ए हो त है !" संदेश दाजुले फोन राखे l उनि मेरा गफ चाडै बुज्छन्, खै कसरी हो ? कुनै बेला प्रविधि बिकाश नहुनुले थोरै भएनी डिजिटल सुचना सम्बन्धि आफ्नो गोपनीयताको हक संरक्षण गर्न सक्छ भन्ने अस्थाई निचोड थियो यो हाम्रो कफी गफको l

दाजुले त्यो दिन देखी आजसम्म आफ्नो फेसबुकमा अंग्रेजीमा पोस्ट लेखेको मैले देखेको छैन l संदेश दाजुलाई आफ्नो लेखाई माथिको सर्भिलेन्स मन नपर्नुको अनेक कारण होलान, तर म आफ्नो सुझाब त्यो हदसम्म लागू भएको देखेर दुई चार दिन निदाईन l छटपटी यो थिएन कि मैले गलत बोले - बरु यो थियोकी मैले आफूले अनलाईनमा त्यो रुपमा नेपाली भाषामा लेख्ने प्रतिबद्दता कहिलै गर्न सकेको थिएन l नेपाली नबुझ्ने साथीभाइसंग अंग्रेजीमा संचार्नु आफ्नो ठाउँमा छ तर जानी नजानी आफूले नेपाली भाषाको अपहेलना गरेको अनुभव भयो ! नेपाली अक्षरहरुमा लेख्नुलाई नेपाली लेख्नु मान्छु म, व्याकरणको सुद्द्ता हाम्रा मास्टरले राम्रो संग सिकाए जस्तो मान्दिन l

म नेपाली भाषा रुचाउने मान्छे l फाट्टफुट्ट आफ्नो भाषामा आफूले छानेका शब्दहरु कोरेर स्पस्ट संग आफ्नो मन मस्तिस्कमा लागेका कुरा बाढ्नुको मजा भोगेको मान्छे l पाँच छ बर्ष अघि नेपाली युनिकोड प्रचलनमा नहुदाँ इन्टरनेटमा बलियो नेपालीपन झल्काउनेगरी आफ्ना वेबसाइट तथा ब्लगको उपस्थिति दर्साउनु सम्भव थिएन l तर अहिले इन्टरनेटमा, कम्प्युटर सफ्टवेयरमा जता ततै नेपाली युनिकोडमा लेख्ने प्रविधिहरु बिकाश भएका छन् l नेपाली संस्था मदन पुरस्कार पुस्तकालय तथा गूगल, माइक्रोसफ्ट जस्ता कम्पनीले नेपाली भाषाको प्रबिधिकरणमा काम गरेका छन् l मदन पुरस्कार तथा गूगलले आ-आफ्नै नेपाली इनपुट मेथड निकालेको छ l माइक्रोसफ्टले बिंग नेपाली अनुबादक निकालेको छ, अनुबाद हास्यास्पद भएपनी प्रयास राम्रो मान्नु पर्छ l सबै आधुनिक इन्टरनेट ब्राउजर हरुले नेपाली भाषामा लेखेका कुरा बिना हिचकिच देखाउन सक्छन l यो बिकाश आफ्नै आँखा अघि हिजो, आज गर्दै हुँदा पनी मैले अनलाईनमा नेपालीमा लेख्ने स्पस्ट प्रेरणा भेटिन l तर आज दुई पल्ट यो बिसयमा सोचेर बस्ने हिम्मत जुटेको छ, प्रेरणा मिलेको छ l

हाम्रा बा-आमाले नेपाली भाषामा लेखेको स्पस्ट पढ्न, बुझ्न र बुझाउन सक्नु हुन्छ l तर म बारम्बार आफ्नो मोबाइल, ल्यापटप वा पि.सी. अघि बसेर फटर-फटर अंग्रेजी हेरेको र लेखेको वहाँहरुलाई जमेन l बुझ्न सिक्न चासो नदेखाउनु भएको हैन - बुबाले अंग्रेजी लेखेको लहै-लहै बुझ्नु हुन्छ तर हामीले चलाउने कुनै पनी इलेक्ट्रोनिक डिभाइस नेपालीले चलाउन भनेर बनाइएका छैनन् l नत हामीले चलाउने कुनै सफ्टवेयरको झलक नेपालीमा देखिन्छ l यो भाषाको कुरो हामी दुई चार जनालाई समस्या नहोला l कतिनै छौं र हामी जो इन्टरनेटमा अंग्रेजी बुज्छौ - नेपाली जनसंख्याको दश प्रतीशत ? पन्ध्र प्रतीशत ? आमा सिधा-सिधा भन्नु हुन्छ - यो गाई खाने भाषाले गर्नु गर्यो ! नौ-दश बर्ष अघि सम्म मैले बुझ्दिनथें त्यो के भनेको हो भनेर l आजकल स्पस्ट सुनिन्छ l

त्यसो हो भने हामीले गर्ने के त ? सबैलाई अंग्रेजी सिकाउने ? की सबै डिजिटल सुचना नेपालीकरण गर्ने ? ल जे गरम्ला तर त्यो कसले गर्दिने हो ?

समस्या हाम्रो हो l समाधानको जिम्मेबारी हामीले लिन सक्नुपर्छ l हामी सफ्टवेयर बनाउनेहरुलाई नेपालीको लागि सफ्टवेयर बनाउन आउदैन l हामी बिदेशीका निम्ति सफ्टवेयर बनाउदा र कोड लेख्दा यति पोख्त भईसकेउँ नेपालीको लागि सफ्टवेयर बनाउनु हाम्रो प्राथमिकतामा पर्दैन l हामी ग्लोबलाइजेसनका कुरा फ्याक्छौं कफी खाँदै, तर आफ्नो भाषा र संस्कार मेटिएको हामीलाई चासो लाग्दैन l हामी कस्ता भने - कुरो बिग्रेपछि ए हो त बिग्रेछ भन्न पोख्त l बेद पुराण लाई कक्षा एक देखी दश सम्मको पाठ्यक्रममा सम-सामयिक तरिकाले परिमार्जन गर्दै पढाएको भए पहिलो एरोप्लेन बनाउने नेपाली हुन्थ्यो होला l हामीले अहिले चचच गर्छौं, सबैले पुराण बिर्सेपछि, अनी पुजा पाठ गर्दा गुरु नभेटे पछी l ग्रन्थ हराउँदा मौलिकता यसरि हराउछ l भाषा बिर्सिदा संस्कार यसरीनै लोप हुनेछ l

करिब डेढ बर्ष अघि गूगलको आधिकारिक नेपाल भ्रमणमा गूगलले नेपाली भाषामा चासो राखेको र आन्तरिक रुपमा नेपाली भाषामा काम भईरहेको कुरा गूगलका कर्मचारीले नेपाली प्रविधि क्षत्रसंग बाँडेर गए l हाम्रो भाषामा मल्टीनेसनल कम्पनीले चासो राख्नु हाम्रो लागि गर्बको कुरो थियो l हामी आशे भएम - आश गरेर बसेम l

गूगलले नेपाली भाषालाई सजिलै अंग्रेजीमा र अंग्रेजी भाषालाई नेपालीमा अनुबाद गर्न सक्ने मेसिन ट्रान्सलेटर बनाउन खोजेको थियो l त्यो बन्यो भने नेपाली - अंग्रेजी भाषाको अनुबादलाई आधार बनाएर बिश्वका पैसट्ठी भाषामा लेखेका कुरालाई हामीले एक क्लिक को भरमा नेपालीमा पढ्न सक्छौ l नेपालीमा लेखेका लेखलाई हामीले ती बिश्वका भाषामा सहज रुपमा उल्था गर्न सक्छौ l गूगलले सकेन l कसरी सकोस जब नेपाली र अंग्रेजीमा एउटै अर्थ लाग्ने लेखहरु हामी संग छदै छैनन् l पल्पसा क्याफे जसरि सबै पुस्तक नेपाली र अंग्रेजीमा निस्कने भए ? भाषा अनुबाद गर्न सक्ने मेसिन बनेका छन्, बनेर के गर्नु ? चामल र भुस निकाल्न धान चाहियो नी ? हामी नेपाली प्रविधिमा लाग्नेले नत धान फलाएम न त प्रसस्त नेपाली शब्दहरु नै सिर्जना गर्न सकेम l जसले नेपालीमात्र बुज्छन् र लेख्न रुचाउँछन् उनीहरु प्रविधिको पहुँचमा पुग्दा धेरै ढिलो भइसक्नेछ l यो अवस्थामा गूगलले अनुबादक बनायो भने पनी माइक्रोसफ्ट बिंग को अनुबादक जस्तो जोकको बिषय बन्ने छ l गूगलमा काम गर्ने संसारका सर्वोत्कृष्ट इन्जिनियरहरुले  बनाएको नेपाली इनपुट मेथड प्रयोग गरेर लेखेको लेखहरुलाई उनीहरुलै बनाएको अर्को भाषा डिटेक्टर सफ्टवेयरले हिन्दी लेख भनेर ठोकुवा गर्छ त्यस्तै - अनुबाद पनी हिन्दी टोनमा निकाल्न के बेर ? हामीले हेलचेक्र्याइँ गरेकोले हाम्रो भाषा र हाम्रा कखराको आज मजाक बनेको छ l

हामी सफ्टवेयरको झलकलाई म्यानुअल तरिकाले नेपालीमा अनुबाद गर्न लागिपर्छौ l अनी यस्तो अनुबाद गर्छौं त्यो न त सिकारुले सिकेर प्रोफेसनल बन्न सक्ला न त हामी जो अली अली कम्प्युटर जानेका छौं हामीहरुले नै चलाउन सकौंला l भाषा प्रबिधिकरण गर्न हामीसँग शब्द अभाब छ l शब्द अभाब कसरी नहोस जब कम्प्युटरमा लेख्न जान्ने सबैले अंग्रेजीमा लेख्छन ?

माइक्रोसफ्टले आफ्नो पपुलर अपरेटिंग सिस्टम नेपाली भाषामा उल्था गर्ने प्रयत्न गर्यो l मेनु लाई पर्दा भनेर लेखेको सफ्टवेयर मैले चलाउन सकिन l इन्टर लाई घुसाउनुहोस् लेख्नेहरु एक पल्ट त पक्का हाँसे होलान l

नेपालमै लिनक्स ओपन सोर्स अपरेटिंग सिस्टमको नेपाली अनुबाद नेपालीनक्स बन्यो l त्यो किन बन्यो र अहिले कहाँ छ बनाउनेलाई चाहिँ थाहा होला l काठमाडौं बिश्वबिध्यालयमा दोभासे नाम गरेको नेपाली अंग्रेजी अनुबादक सफ्टवेयरमा गहन रिसर्च र अध्ययन भयो - त्यो पनी शब्द अभाबले अघि बढ्न सकिरहेको छैन l

नेपाली शब्द कहाँ छन् त ? यी यहिँ छन्, फेसबुक चलाउने बिसलाख नेपालीमाझ l तर ति नेपालीका सोचहरु अनी बिचारहरु नेपाली शब्दका रुपमा झरेनन l नेपालीको हातहरु कीबोर्डमा चल्दा अंग्रेजी अक्षर झर्छन् l अनी त्यहाँबाट सुरु हुन्छ सम्पूर्ण नेपाली भाषा सम्बन्धि प्राबिधिक कठिनाईहरु l

बिसलाख नेपालीले हरेक दिन बिसलाख ओटा वाक्य नेपाली भाषामा लेखे भने एक वर्षमा कति शब्द जम्मा होलान ? अनी कति नयाँ सजिला शब्द जन्मेलान l भाषा मेटिनु भन्दा आगन्तुक शब्दहरु थपिउन बरु l

जुकर्बरले नबुझ्ने भाषा उसको अफिसको फेसबुक वोर्ल्ड मनिटरिङ सफ्टवेयरमा बट्टा बट्टा त नदेखाउला नी? ल्यारी पेज ले विकासशील मुलुक हरुको त्रैमासिक प्रविधि ग्रोथको ट्रेन्ड हेर्दा हुन् l नेपाली अक्षरहरु उनको दृश्यमा पर्ने कहिले ? इभान विलियमले नेपाली बोल्ने मान्छे छन् र भन्दा हुन् l कसरी भनुन - हामी इन्टरनेट चलाउने नेपालीहरुले नेपाली भाषा बिर्सेपछी l

अनुवादको नाममा एउटा साधारण नेपालीले सपनामा नी नसोच्ने शब्द बनाएर भासिक रुपमा अप्ठ्यारा नेपाली अनुवादित सफ्टवेयर निकाल्नुको आफ्नै मत होला तर त्यो तरिकाले काम गरेन भन्ने कुरा हामीले भोगेको अवस्था हो l त्यो दोहोरिनु आफ्नै खुट्टामा बन्चरो हान्नु हो l समय पछिल्तिर चल्छ र ? नेपाल प्रविधिमा छिट्टै फड्को मार्दै छ - सुरुबाट सुरु गर्ने अवस्था अब रहेन l

नेपाली भाषाको प्राबिधिक बिकाशमा बिर्को लागेको छ l नेपाली इन्जिनियरिङ पढ्ने बिध्यार्थीले आफ्नो लागि प्रोजेक्ट भेट्दैनन, नेपालमा खोजे पो भेटिन्थ्यो, हेरे पो देखिन्थ्यो l नेपाली सफ्टवेयर कम्पनी र नेपाली सफ्टवेयर डेभलपर्सहरुले नेपाली भाषामा सफ्टवेयर बनाउने कहिले ? नेपाली भाषा सम्बन्धि प्रबिधिमा गर्न सक्ने काम धेर-थोर भइरहेको छ तर भएको देखिएन l

यो शब्द अभाब हामीले सिर्जना गरेको हो l यसको पूर्ति हामीले गर्नुपर्छ l भाषाको सम्बन्ध संस्कार र राष्ट्रिय एकता संग जोडिएको हुन्छ l बिगत पन्ध्र वर्ष कम्प्युटर साइन्स पढेर मैले नेपाली भाषामा लेख्न बिर्सें l म कुत्तुवा गरेर भन्न सक्छु म संगै पढाई सुरु गर्ने सत्तरी प्रतीशत नेपालीहरुले इन्टरनेटमा नेपाली भाषामा लेख्न रुचाउदैनन l जान्दैनन भन्न खोजेको हैन l

सुन्छु, बैज्ञानिक थेसिस अंग्रेजीमा लेख्नु पर्छ l कम्प्युटर चलाउन सिकाउने कुरा अंग्रेजीमा लेख्नु पर्छ l बिदेशीले लेखेको पढेर सिकेर त्यहि कुरो अंग्रेजीमै कपि पेस्ट गर्दा कहाँको मान्छेले गन्ला र ? कमसेकम आफूले पढेर बुझेको कुरो एक दुई हजार नेपाली शब्दमा लेख्दा - अंग्रेजी भाषा अप्ठेरो मान्ने नेपालीहरुलाई त काम लाग्ला !

फेसबूक को स्टाटस अंग्रेजीमा लेख्नु पर्छ अरे l ट्वीट अंग्रेजीमा नलेखे ट्वीटेको के मजा l यी ढोंग हुन् l आफ्नो भाषालाई जानी जानी रेट्ने यसरि हो l लेखाई भाषामा हुदैन l लेखमा हुन्छ l राम्रो लेख संसारमा हरेक भाषामा अनुवादित हुन्छ l म आफूलाई नेपाली भन्छु भने मैले आफूले कम्प्युटरको किबोर्ड थिचेर नेपाली युनिकोडमा अक्षर झर्दा गर्व गर्न सक्नु पर्छ l जसरि हामीलाई नेपाली भाषामा बोल्न हिचकिच छैन त्यसरी लेख्न पनी हिचकिच हुनु हुन्न l बोलेको कुरो हावामा उड्छ भन्छन - यसरि नेपाली भाषामा लेख्न छाड्ने हो भने - हाम्रो भाषिक अस्तित्व मेटिने छ l हामी नेपाली बोल्ने अंग्रेज हुनेछौं l

संदेश दाजुले जस्तो अटोठ गर्न नसके पनी मैले कोशिश गर्नेछु, अबका हरेक दिनहरु जब म लेख्न बस्छु कम्प्युटरमा मैले नेपाली अक्षरहरुमा लेख्ने छु l प्राबिधिक रुपमा र शत प्रतीशत भाषिक सुद्दतामा कन्ट्रीब्युसन गर्न नसके पनी - एउटा लेख्न रुचाउने नेपालीको हैसियतले मैले आफूले सके जति नेपाली शब्द इन्टरनेटमा छर्ने छु l एन. एस. ए. ले नेपाली नबुझुन्जेल - अर्को तिरको मन्द मन शान्ति छँदैछ l

माइसंसारमा मन परे हरियो मन नपरे रातो भनेको जस्तो यो लेख मन परे फेसबूक, ट्विटर, गूगल प्लस आदिमा सेयर गरिदिनु होला /
 
(यो पोस्टको ड्राफ्ट हेरिदिने साथी भुवन पोखरेलमा आभार)

Thursday, May 16, 2013

Met the social media personality #fotosoto

Starting this post i'm going to share some of the moments captured through my camera. Will be using the label #fotosoto so share similar posts. If you know the persons in picture, feel free to add an awesome comment which will delight both of us : )


The person in this photo is a internet spammer, yeah people use that term when there is no word coined to describe exceptional online social media presence and management skills, he is the man who ignited interest in me to learn about social media.  Glad to meet the one man virality machine who can drive your mid sized website down in a minute.

Wednesday, May 1, 2013

Those Four Years in College

Note: When you read technology or tech: read it as software development , programming or apps development in general. This post is my second attempt to look at the four years of computer science / engineering education in Nepal. First one was more about "education and the course itself" and this one is more about thinking college education as career building opportunity since day one.

How old are you ?

Split that into blocks of four. Let's discuss about the 5th and the 6th block. Yes the pre and the early twenties. Did you choose a career or at least made up your mind about what you'll do as a professional in life on your 5th block ? Or on 6th one ? Or still are undecided about future on late twenties ?

I am. Running out of twenties too quickly and still feeling short of long term thoughts about what am I supposed to do in coming days. But I realized somehow during my school years that I am going to dig into technology as far as I can, as deep as I can and until I can.

Is it that bad ? Not really. No one ever could tell about the future. The best thing one could do now is prepare. Think. Plan. Execute a hope. I'm doing the same. But it would have been a lot easier with the knowledge of how "technology business" works in real life while I was starting. No one taught that aspect really. It's very tough experience that you learn yourself by repeated failures, extensive research and dedicated learning on the subject.

A decade and half went through since school struggling with ideas, rises and falls and I have built a small habit of caring less about non tech stuffs in my life. That's because nobody from family to local newspapers ever cared about tech, but it's what I care about most. Allow me to write about what I would have done differently in my early twenties to build a career in tech not considering those and their views who never cared. Here follows some of my observation running a software company for few years after college. Some experiences. Some lessons learnt from attending and observing Silicon Valley's startup ecosystem:

Know why you're going to study Computer Science

I studied what's known as Computer Engineering. I had thought they will teach how to write software that I can sell to Nepalese and earn money. I had thought they will teach to write awesome software and web applications. Instead they taught about heat, molecules and science of electrochemical reaction. And how uncertain universe is. I only remember the lecture about that uncertain thing, its damn true. I had set wrong expectations out of college education. It changed everything and I now understand why I bunked classes to research how to build a website or how to run a robot from a computer.

Computer Science course doesn't teach about writing software for enterprise or for a bank but it exposes you infinitesimally to the beginning and theoretical aspects of how to write softwares, focusing more on mathematical and fundamentals aspects of computer and how they work together in a computer system. I wanted to look upwards to the world of real life software development, but college course wanted me to look down and go deep inside the computer, its microprocessor, RAM, ROM and the silicon chips. I did. But I couldn't bear the thermonuclear reactions !

That knowledge didn't hurt. The course did its job. It is always wrong expectation out of the course that will put you under pressure. I have a feeling that I could have turned better professional or a business guy if I'd have joined a year or two long software development or professional programming certification course. Followed by a business development study. What I wanted to learn was to build beautiful websites and mobile applications. Or may be I should have joined an art and design course, I envy a career of a professional designer. They are the real creators.

To engineering students I'd suggest to talk with seniors, trusted teachers and mentors have clear picture of what to expect from computer science course. Research as far as practicable for you before you make a decision to join a college to spend four most energetic and foundational years of your career and life.
You don't need to get a degree in computer science to write software that makes business. That could earn you a living. I mean, you could do an Arts or Music major and still write awesome software and application for living.

Respect Teachers. Learn as much as possible from them. They can be your life long mentors

Teachers don't know everything but they are never wrong on facts ! If they don't know they'll let you know after they confirm it or learn from their trusted re/sources. I understood this after I started teaching. Being a teacher is by far a hardest job. It's very hard to transfer one's skills, knowledge to a fresher. But feels very rewarding when one of the twenty students standing in front of you raises her hand to answer your query. I now know why the teacher's job gets so respect in our society.

Teacher comes to teach you under the scope of his / her course. But it's your job to ask more in-turn teach them as well. I mean, push them forward or learn as much as you can from them. It's win win for both of you. If you do well, excel then your teacher will be the happiest person to hear about it.

Build a trust relationship with few teachers, could be your favorite subject teacher or could be a senior professor. Consider them as your life long mentors. On study and on your professional career.

Identify Your Mentors. Let them know.

Life decisions, business decisions and professional decisions made alone can be costly. Having someone to go for consultation when in need of suggestion is very good thing. College years are perfect time to identify few people who you'd consider worth getting ideas and feedback from.

Consult your mentors before you are hit by an idea to do something, to build some software products. It's always better to ask early then later.

The tough part is to figure who listens to you, who could give you valuable feedback and in need could assist you all possible ways.

Keep networking with people but know why and how

College life is a wonderful place to build all sort of soft skills in you. Make new friends who share your passion. Participate in ECA . Build presentation skills. Speak in front of audience. Attend meeting with college management. Learn about dynamics of different sets of meeting and events you attend. Understand how they add perspectives to your day to day life. Know who are your true friends (read : trusted). Raise your right hand and count five friends in your fingers that you trust most and share your passion, dreams and ideas with them, let them know you care. Know what's your favorite teacher. Who's the most annoying person in your college. Who is trust worthy. Who's near, close or far to you in personal level. Talk more with people and less with computer during college hours.

Networking is easy. Go show up and speak when someone asks in public to raise hand . But networking done bad could ruin you, your study and your career as a whole. It did hurt me badly. You won't have a time called "your time" to work on "ideas" and study on "exams". You won't know who are "your friends" and how many of them consider you "their friend". The best thing is to identify what kind of activities, friends and people will gear you up towards your goal of joining the college in first place and stick to that with full horse power, for four years. Yes.
College life turns beautiful because of your passion, your friends and your teachers. A conscious decision on choosing and limiting yourself to them won't hurt.

Define Passion. Build Hobbies. That's where Ideas come from.

The more you network with people, the more you open up, share ideas and your skills to other – more you discover about yourself and your specialties and limitations. It's good to identify our likes and dislikes early on.

I used to tell others "I'm passionate about programming". Programming is my hobby. But later I realize I can't just make business and make a living out of it if only thing I enjoy doing is write code. There is a saying that when you enjoy your work you won't have to work a single day in your life. It's true being passionate about your profession is wonderful experience, but it's not sufficient if we ought to establish a business out of it. If we plan to build a product, earn its market share – we need more skills and hobbies then just programming. It's just one aspect of the whole software development lifecycle.
We join computer science more or less to build a career in technology sector. Growing yourself as a programmer is one option. And enjoyable too. But, identifying your hobbies, different things you are passionate about and having in depth knowledge of the different domains opens up you to wide varieties of ideas and problems that you can solve with programming.

One idea identified, solved, built, and sold well will change yours and your customer's life forever.

Priorities Exams

I handled exams badly. I couldn't figure out how to handle tough subjects. I enjoyed building robots when everyone else went off the team to prepare for exams. I couldn't figure out whom of the 400 friends I thought I had was ready to help me help him. And most of all I didn't ask for assistance, I didn't attend the classes of tough subjects, thought they were boring, they weren't but slowly began to appear tougher. I couldn't do well in most of the tough subjects.

Handle exams well, especially those which you figure out tough. Split the whole subjects into two sets – easy for you vs. tough for you. Now focus fully on "tough for you subjects". Consult friends, teachers, internet, do all things you can to make those short listed tough subjects shift to your easy list. Easy subjects are easy because you already know enough basics to get started on your own.

One more thing is learn to prioritize exams. Put them labeled number one on your to-do list. If it's exam time – nothing else comes under your hand. Stick to the rule.
If you are planning for graduation or a P.H.D good marks will unlock lots of achievements. Only few will care about your grades when you have skills. But if you like me couldn't figure out ahead about what to expect from college – remember that we need to show certificate as a fresher for jobs in Nepal. Unless you yourself or your friends run a company.

Get ready for work, career and if you win – your business

Let me explain it. If computer engineering education in Nepal were a software product you would have three exits, it's a pattern shown by current Computer Science and Engineering graduates.

Exit 1 (Most) : Start a job as fresher / intern, six month / one year.

Exit 2 (Handful) : Become a freelance software engineer/developer


Exit 3 (Few) : You start a software company or your friends start a software company and you join them as a team / employee (read: start a outsourcing company, that's what is available for reference when we look for what others / other software companies are doing in Nepal and their business)
But If I were to re-start my college life, I'd consider Exit 4, which is a new kind of practice happening in current tech scene around the world:

Exit 4 (Rare in Nepal) : Find one idea. Find customer for your idea in Nepal or worldwide (don't think about writing code / developing product before you have someone ready to pay for your to be built product) . Build a team of your friends to cover – engineering, marketing, business aspect of the product. Build the minimal functional product. Launch the product before you graduate. Until your first paying customer doesn't ask for a VAT / TAX payment receipt or investors want to see legal papers of your product don't ever think to register a software company (coz: it's a waste of money even before you have it. Why invest if the idea itself have no value for customers and your future ?)

I'd try for Exit 4 i.e Sell my own idea. Learn. Iterate. Build skill sets. If I couldn't sell / build / launch the product then only I'd rather go for Exit 1 that is join other companies and gain skills that sells. After years, will think about Exit 2 i.e freelancing. Then only consider Exit 3 (start service company). But if Exit 4 worked, I'd never look at other options. And work on my product for years and years. 

We should try to build one awesome product and sell that product as long as possible. Exit 4 is a mystery that our Nepali Engineers have yet to figure out.

Eg. See how Mark Zukeberger's Facebook worked well for last 8+ years. Watch him on video interviews saying he started Facebook with just USD 85. World's top engineers are working on facebook.com for last 8 years. On a single product ? What are they doing there ? How facebook is making profit if all it's services are free of cost for the users ?

Eg. See how two graduates built the multinational company Google out of a search product ? How Google earns ?

Search in internet for many small ventures and startups that are started from college students and are really doing good business. It's doable.


When I was in 4th semester in my college, I thought I had an awesome idea – "I wanted to start a software company". I did. Never had a second thought about how will I make business on top of the idea ? Doing business was never the idea, starting a company was.

I had put good effort to learn and build programming skills that were selling well in Nepalese software companies at that time. I was more affirmative about my skills sets but I never thought about "doing business writing code". I was wrong with the idea of "starting a company". Now if I were in college, I won't pass starting a software company even as an idea. It's a commitment to invest time / money not knowing before what you're going in for. It's a complete waste of time if done without proper understanding of how things works on software business world.

A company is not about college projects. Toy projects. Your passionate project. Fun project. Hobby project. Or about how much talented programmer you are. It's more about building something that people will pay for (product turned company – Exit 4). Selling it. Making money out of it and earn a living. It's more about having skills and team which could address / solve other people's automation / software needs and problems (a service company / outsourcing company).
Now I realized I had no clue at that time about "business aspect" of my then thought awesome company. Every x or y company were doing good, I would too, It was more of a gut feeling, an intuition. But business needs customers and look around in Kathmandu valley I still don't see enough customers (who'd pay enough for our Made in Nepal apps / softwares).

Target Customers : Local or Global ?

I'm suggesting you to consider Exit 4. So let's say you want to invest those most energetic and awesome four years of your life for Exit 4 along with your college education, but which market or customer base should you target ? Local customers or Global customers ?

Would local customers pay for our product ?


Our (local) customers / users are clueless about how much time and effort a team of engineers have to dedicate to build a functional software that provides a value or suits their business needs. I realized that when one of my first few customers asked me to build a website for NRs. 2K. I still see such requests. Let me tell you something about customer point of view on that low valuation –

"the website was less priority for their business, they have no idea why they are investing on website but they wanted to have a online presence anyway, everyone is doing it, it looks cool to have an email address and your own domain name, a cheap bargain".
Why on earth that would make them think that a website can be developed under such low cost ? That's not our problem, neither theirs. Our to be customers are addicted to smoke and booze but they don't have a clue about what a website or software is worth. What a website can do to their business ? Nothing. So why pay more ?

Our customers do not see "value" in technology. In Nepal we haven't shown or built anything in tech sector that have given a real value in people's life or changed people's life for better. But we're all set up with a software company and cursing people for underestimating our talents. That's a wrong way of doing business. Or a wrong target customers. Either you join a team of outsourcing fellows. Or build something that's targeted to world (where people have a habit of paying for software) and solve one problem with your programming skills which they'd thankfully pay for.

The problem is we don't have a market yet. We don't have a product yet which tried to establish a market. Conscious Customers – rare.

It's all about creating value in people's life. If use or implementation of technology doesn't create value in people's life – why they'd consider it worth the money ? Or even time ? We should build product that'd create value for our local customers. People in Nepal are buying and selling goods and stuffs. On how many of those "money flowing" sector can you try capturing the market share with your product ?
Would you target those people as your first customer ? A small subset of tech customers exists in Nepal but you do market research for your product. When targeting Nepali market from your service company treat your to be customer as your student. Teach them A, B, C, D of what is a website, a mobile app or a software, why it takes a considerable amount of time to build, what they could achieve from the investment, tell them how they can grow their business using technology and why you are asking for a little high pay. Explain them.

For specific products, keep in mind from the beginning to expand to global market. Paying customers for your product could live outside of Nepal. However, while starting target a small subset of users eg. teachers, students, photographers, parents, kids etc. Build product for few customers and expand on that user base.
I built a product called Online Baghchal, I built it without even considering how I'd make money out of it. Me and my team invested our two years of time and effort on the product but where's the profit ? We executed the tech aspect of the product well but never thought about it's business aspect. Which was a completely wrong way of investing our time and money.


How to find an idea to spend most significant years of your life

Most ideas are already developed. Or floating around internet or coffee shops. Before you start writing even one line of code – you should validate your idea. By validate I mean, you should know that there are people who will buy your product. Follow these simple steps to find an idea to invest your valuable years of life:

Step 1: Find what you are passionate about. Eg. I'm passionate about writing code is too vague.
Rather I'm passionate about "cooking food" sounds more like a passion.

Step 2: Find one problem or idea that exists in the domain of your passionate area. Eg. I want to make a web app to allow people to prepare recipe online and will deliver the cooked food to their home. I will charge for food / delivery.

Step 3: Find customer for your idea. Don't even write a single line of code yet. Talk with people, small set of target customers, most probably they'll share the same passion as you do since your product is about what you're passionate about. Find how many people will pay to buy the product. 10 ? How much would they pay ?

Step 4: Confirm that your idea (to be product) has value for customers, have customers and can make sustainable business for you. Calculate profits / expenses etc.

Step 5: Does your going to be product have paying customers ? Can be profitable ?
If yes: Goto Step 6
If no: Goto Setp 1. Start with next idea or next thing you're passionate about. Forget that idea if it doesn't has market / paying customers.

Step 6: Build minimal functional product and launch it.

Step7: Ask your first 10 customers to use the product. And Build the product for them onwards.
Step8: Continue developing. Hacking. Improving. Marketing. Selling. Growing.

FAQs

1. Which programming language do you recommend ?
-> Any language will work. How depth or breadth could you go ? That's important.
Most popular language in Nepal are PHP, C#.NET, JAVA, Python and Ruby. If you want to work with me on my company, I like PHP / MySQL, Javascript on front and backend (SSJS / Nodejs / MongoDB) and JAVA for Android.

2. We don't have payment system in Nepal. It's a problem we can't charge customers.
-> It's not your first problem. People in Nepal are paying money, we have traditional ways – if your products does good, you'll yourself figure out why payment system is not a problem. Focus on building awesome product.

If your target customers are global, it's easy. Provide free service for Nepali user base and charge global customers the money. Don't ever think payment system or gateways are your number one barrier. They are mere an excuse for not starting to work on your idea.

3. We don't have investors to invest money in our ideas.
-> Who is investing on you so far ? How did you join the college and are paying the college fee ? It's not a problem. We don't need investors to work on ideas we need paying customers since "idea day", count yourself as customer number 1.

4. I just joined college. What can I do ?
-> Read this post 5 times. If you don't have time for that – build your programming skills and soft skills. Remember, these four years in college could be the most enjoyable, most energetic and most productive years of your life.

Everything I've talked above has got inspirations from learning, attending and observing technology scene in Nepal and US / EU for last few years. Internet knows these small ideas turned products as Startup. A company is only legally established when your product sees a viable business. A company can be built out of only one well executed product. We have enough service / outsourcing companies in Nepal but not even a single successful product company. The process to find ideas, validate them before writing code is well known as Lean Startup Concept. Go search internet and learn more on the topics. We need more products in Nepal than ever in our history of technology adoption. The time is now. It all starts with our college students.

Tuesday, April 30, 2013

Social Network Status Updates – Database Schema

Here's a simple database schema which can be used in cases where you want to take user status input. The entities available are users, updates, comments & likes. Additional entities can be added as required. Also, for simple user registration and status updates it will be more than enough.  Schema derived by studying popular social networks like Facebook / Twitter / Google+ Status Updates mechanism. The schema uses MySql.

Schema Diagram:updatebox

MySQL Create Script:
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 03, 2013 at 09:56 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `updatebox`
--
-- --------------------------------------------------------
--
-- Table structure for table `comments`
--
CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text CHARACTER SET utf8 NOT NULL,
  `created_at` int(11) NOT NULL,
  `update_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `comments`
--

-- --------------------------------------------------------
--
-- Table structure for table `likes`
--
CREATE TABLE IF NOT EXISTS `likes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `update_id` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  `dislike_user_id` int(11) DEFAULT NULL,
  `like_user_id` int(11) DEFAULT NULL,
  `comment_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `likes`
--

-- --------------------------------------------------------
--
-- Table structure for table `updates`
--
CREATE TABLE IF NOT EXISTS `updates` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text CHARACTER SET utf8 NOT NULL,
  `picture` varchar(255) DEFAULT NULL,
  `location` varchar(255) DEFAULT NULL,
  `created _at` int(11) NOT NULL,
  `video` varchar(255) DEFAULT NULL,
  `tags` varchar(255) DEFAULT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `updates`
--

-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) NOT NULL,
  `mid_name` varchar(255) DEFAULT NULL,
  `last_name` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `dob` int(11) NOT NULL,
  `about` text NOT NULL,
  `user_type` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `users`
--

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Saturday, April 27, 2013

Online Shopping System–Database Design

Database design of Online Shopping System. Schema represents minimal information required to store information of a shop and products to sell. Cart information can be stored in session or if wishlist / watchlist is needed, the schema can be simply extended. Enjoy.

Entities:

users – shop admin, owner and customers
products – products to sell
categories - category of products. eg. laptops, phones etc
orders – customer placed a order
order_details – order always won't have a single item. store details here.
sales – order is sold.
contact – when customers / visitors contact shop owner
smartshop
MySQL Create Script / phpMyAdmin dump:
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 03, 2013 at 07:51 AM
-- Server version: 5.1.37
-- PHP Version: 5.3.0
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `smartshop`
--
-- --------------------------------------------------------
--
-- Table structure for table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `details` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `name`, `details`) VALUES
(1, 'laptops', 'laptops lorem ipsum'),
(2, 'phones', 'phones details'),
(3, 'tablets', 'tablets details');
-- --------------------------------------------------------
--
-- Table structure for table `contact`
--
CREATE TABLE IF NOT EXISTS `contact` (
  `contact_id` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(255) NOT NULL,
  `middlename` varchar(255) DEFAULT NULL,
  `lastname` varchar(255) NOT NULL,
  `emai` varchar(255) NOT NULL,
  `message` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`contact_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `contact`
--

-- --------------------------------------------------------
--
-- Table structure for table `orders`
--
CREATE TABLE IF NOT EXISTS `orders` (
  `order_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `shiping_address` varchar(255) DEFAULT NULL,
  `shiping_date` int(11) DEFAULT NULL,
  `shipping_status` varchar(255) DEFAULT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`order_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `orders`
--

-- --------------------------------------------------------
--
-- Table structure for table `order_details`
--
CREATE TABLE IF NOT EXISTS `order_details` (
  `order_details_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  PRIMARY KEY (`order_details_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `order_details`
--

-- --------------------------------------------------------
--
-- Table structure for table `products`
--
CREATE TABLE IF NOT EXISTS `products` (
  `product_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `image` varchar(255) NOT NULL,
  `category_id` int(11) NOT NULL,
  `quantity` varchar(255) NOT NULL,
  `brand` varchar(255) DEFAULT NULL,
  `model` varchar(255) DEFAULT NULL,
  `configuration` varchar(255) DEFAULT NULL,
  `price` varchar(255) NOT NULL,
  `featured` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `products`
--

-- --------------------------------------------------------
--
-- Table structure for table `sales`
--
CREATE TABLE IF NOT EXISTS `sales` (
  `sales_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `sales_amount` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`sales_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `sales`
--

-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(255) NOT NULL,
  `middlename` varchar(255) DEFAULT NULL,
  `lastname` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Dumping data for table `users`
--

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Friday, April 26, 2013

Quiz System–Database Schema Design

MySQL Database Schema design for quiz system.

Schema Diagram:

quiz

MySQL Create Script:

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 01, 2013 at 08:27 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `quiz`
--

-- --------------------------------------------------------

--
-- Table structure for table `category`
--

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `slug` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `category`
--


-- --------------------------------------------------------

--
-- Table structure for table `level`
--

CREATE TABLE IF NOT EXISTS `level` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `level`
--


-- --------------------------------------------------------

--
-- Table structure for table `questions`
--

CREATE TABLE IF NOT EXISTS `questions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question` text CHARACTER SET utf8 NOT NULL,
  `option1` varchar(255) NOT NULL,
  `option2` varchar(255) NOT NULL,
  `option3` varchar(255) NOT NULL,
  `option4` varchar(255) NOT NULL,
  `answer` varchar(255) NOT NULL,
  `category_id` int(11) NOT NULL,
  `level_id` int(11) NOT NULL,
  `image` varchar(255) DEFAULT NULL,
  `status` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `questions`
--


-- --------------------------------------------------------

--
-- Table structure for table `score`
--

CREATE TABLE IF NOT EXISTS `score` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `question_id` int(11) NOT NULL,
  `category_id` int(11) NOT NULL,
  `level_id` int(11) NOT NULL,
  `user_answer` varchar(255) NOT NULL,
  `is_correct` int(11) NOT NULL,
  `points` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `score`
--


-- --------------------------------------------------------

--
-- Table structure for table `settings`
--

CREATE TABLE IF NOT EXISTS `settings` (
  `points_per_question` int(11) NOT NULL,
  `site_name` varchar(255) NOT NULL,
  `site_slogan` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `settings`
--


-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  `image` varchar(255) DEFAULT NULL,
  `about` text CHARACTER SET utf8,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=73 ;

--
-- Dumping data for table `users`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Photo Video Gallery–Database Design

Database design for photo video gallery website / app. Enjoy.

Schema Diagram:

pvgallery
MySQL Create script:

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 03, 2013 at 10:25 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `pvgallery`
--

-- --------------------------------------------------------

--
-- Table structure for table `category`
--

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `details` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `category`
--


-- --------------------------------------------------------

--
-- Table structure for table `comments`
--

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `media_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `comment_text` text CHARACTER SET utf8 NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `comments`
--


-- --------------------------------------------------------

--
-- Table structure for table `media`
--

CREATE TABLE IF NOT EXISTS `media` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `description` text CHARACTER SET utf8 NOT NULL,
  `file` varchar(255) NOT NULL,
  `size` int(11) NOT NULL,
  `likes` int(11) DEFAULT NULL,
  `views` int(11) DEFAULT NULL,
  `downloads` int(11) DEFAULT NULL,
  `category_id` int(11) DEFAULT NULL,
  `user_id` int(11) NOT NULL,
  `media_type_id` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `media`
--


-- --------------------------------------------------------

--
-- Table structure for table `media_type`
--

CREATE TABLE IF NOT EXISTS `media_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `media_type`
--

INSERT INTO `media_type` (`id`, `name`, `slug`) VALUES
(1, 'Videos', 'videos'),
(2, 'Photos', 'photo'),
(3, 'Music', 'music');

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `type` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `users`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Wednesday, April 24, 2013

Marksheet Generation System–Database Design

Schema for Marksheet Generation System useful for school, colleges and institutes to store student's information, exam marks etc. Extend at your will.

Schema Diagram:

online_marksheet

MySQL Create Script phpMyAdminDump:

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 02, 2013 at 07:28 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `online_marksheet`
--

-- --------------------------------------------------------

--
-- Table structure for table `faculties`
--

CREATE TABLE IF NOT EXISTS `faculties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Dumping data for table `faculties`
--

INSERT INTO `faculties` (`id`, `name`) VALUES
(1, 'BSC-CSIT'),
(2, 'BBA'),
(3, 'BBS');

-- --------------------------------------------------------

--
-- Table structure for table `feedback`
--

CREATE TABLE IF NOT EXISTS `feedback` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` int(11) NOT NULL,
  `comment` text CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `feedback`
--


-- --------------------------------------------------------

--
-- Table structure for table `institutions`
--

CREATE TABLE IF NOT EXISTS `institutions` (
  `id` int(50) NOT NULL,
  `name` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `fax` varchar(255) NOT NULL,
  `website` varchar(255) NOT NULL,
  `affiliated_to` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `institutions`
--


-- --------------------------------------------------------

--
-- Table structure for table `marks`
--

CREATE TABLE IF NOT EXISTS `marks` (
  `id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL,
  `mark_assessment` int(11) NOT NULL,
  `mark_semester` int(11) NOT NULL,
  `total_marks` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `marks`
--


-- --------------------------------------------------------

--
-- Table structure for table `results`
--

CREATE TABLE IF NOT EXISTS `results` (
  `id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL,
  `total_marks` int(11) NOT NULL,
  `result` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table `results`
--


-- --------------------------------------------------------

--
-- Table structure for table `students`
--

CREATE TABLE IF NOT EXISTS `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) NOT NULL,
  `mid_name` varchar(255) NOT NULL,
  `last_name` text NOT NULL,
  `symbol_no` varchar(255) NOT NULL,
  `date_of_birth` datetime NOT NULL,
  `regd_no` varchar(255) NOT NULL,
  `faculty_id` varchar(255) NOT NULL,
  `year` varchar(255) NOT NULL,
  `semester` varchar(255) DEFAULT NULL,
  `institutions_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `students`
--


-- --------------------------------------------------------

--
-- Table structure for table `subjects`
--

CREATE TABLE IF NOT EXISTS `subjects` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `course_no` varchar(255) NOT NULL,
  `course_hours` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `fm_assessment` int(11) NOT NULL,
  `fm_semester` int(11) NOT NULL,
  `fm_total` int(11) NOT NULL,
  `pm_assessment` int(11) NOT NULL,
  `pm_semester` int(11) NOT NULL,
  `pm_total` int(11) NOT NULL,
  `type` varchar(255) NOT NULL COMMENT 'theory or practical',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `subjects`
--


-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(222) NOT NULL,
  `email` varchar(222) NOT NULL,
  `password` varchar(222) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `users`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Friday, April 19, 2013

Simple CMS (Content Management System) – database design

Schema design of simple content management system. Schema and tables itself speak about the type of information indented to be stored by the system.

Schema Diagram:

cms-v1.0
MySQL Create Script phpMyAdmin dump:

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Mar 30, 2013 at 10:20 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `cms`
--

-- --------------------------------------------------------

--
-- Table structure for table `comments`
--

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `post_id` int(11) NOT NULL,
  `author` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `author_email` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `author_url` varchar(255) DEFAULT NULL,
  `content` text NOT NULL,
  `approved` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `comments`
--


-- --------------------------------------------------------

--
-- Table structure for table `gallery`
--

CREATE TABLE IF NOT EXISTS `gallery` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `path` varchar(255) NOT NULL,
  `caption` varchar(255) CHARACTER SET utf8 NOT NULL,
  `status` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `gallery`
--


-- --------------------------------------------------------

--
-- Table structure for table `navigations`
--

CREATE TABLE IF NOT EXISTS `navigations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `link_text` varchar(255) CHARACTER SET utf8 NOT NULL,
  `url` varchar(255) NOT NULL,
  `description` varchar(255) CHARACTER SET utf8 NOT NULL,
  `group_id` int(11) NOT NULL,
  `click_count` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `navigations`
--


-- --------------------------------------------------------

--
-- Table structure for table `navigation_groups`
--

CREATE TABLE IF NOT EXISTS `navigation_groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `slug` varchar(255) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `navigation_groups`
--


-- --------------------------------------------------------

--
-- Table structure for table `post`
--

CREATE TABLE IF NOT EXISTS `post` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) CHARACTER SET utf8 NOT NULL,
  `content` text CHARACTER SET utf8 NOT NULL,
  `category` int(11) DEFAULT NULL,
  `image` varchar(255) DEFAULT NULL,
  `created_at` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `post`
--


-- --------------------------------------------------------

--
-- Table structure for table `post_categories`
--

CREATE TABLE IF NOT EXISTS `post_categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `slug` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `post_categories`
--


-- --------------------------------------------------------

--
-- Table structure for table `settings`
--

CREATE TABLE IF NOT EXISTS `settings` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `site_name` varchar(255) CHARACTER SET utf8 NOT NULL,
  `site_slogan` varchar(255) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `settings`
--


-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  `image` varchar(255) DEFAULT NULL,
  `about` text CHARACTER SET utf8,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=73 ;

--
-- Dumping data for table `users`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Friday, April 5, 2013

Online Vehicle Ticketing System Database Design Sample

Online Bus/Vehicle Ticketing System Database Design Sample – MySQL. With minor modifications or further generalization this database schema can be used to implement any kind of ticket booking system. eg. movie ticket booking system, events/show ticket booking etc. 

Entities:

users – user details
user_type – type of users in system
vendors – providers' information, in this case vehicle owner
vehicles – particular vehicle information
schedules – schedules of vehicles
routes – information of vehicle routes
vehicle_seats – vehicle seats information
tickets – actual ticket booking status etc stored here
media – images/videos etc related to particular vehicle stored here.
onlineticket

MySQL Create Script:

-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Apr 04, 2013 at 10:18 PM
-- Server version: 5.1.37
-- PHP Version: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `onlineticket`
--

-- --------------------------------------------------------

--
-- Table structure for table `media`
--

CREATE TABLE IF NOT EXISTS `media` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `path` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='table for storing images, video etc about vehicles' AUTO_INCREMENT=1 ;

--
-- Dumping data for table `media`
--


-- --------------------------------------------------------

--
-- Table structure for table `routes`
--

CREATE TABLE IF NOT EXISTS `routes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `source` varchar(255) NOT NULL,
  `destination` varchar(255) NOT NULL,
  `distance` varchar(255) NOT NULL,
  `travel_time` varchar(255) NOT NULL,
  `stops` text NOT NULL,
  `fare` varchar(255) NOT NULL,
  `other_info` text,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `routes`
--


-- --------------------------------------------------------

--
-- Table structure for table `schedules`
--

CREATE TABLE IF NOT EXISTS `schedules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_id` int(11) NOT NULL,
  `departure_time` varchar(255) NOT NULL,
  `arrival_time` varchar(255) NOT NULL,
  `status` int(11) NOT NULL COMMENT 'schedule confirmed, delayed, cancelled',
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `schedules`
--


-- --------------------------------------------------------

--
-- Table structure for table `tickets`
--

CREATE TABLE IF NOT EXISTS `tickets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_no` varchar(255) NOT NULL,
  `schedule_id` int(11) NOT NULL,
  `seat_id` int(11) NOT NULL,
  `vehicle_id` int(11) NOT NULL,
  `route_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `tickets`
--


-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `type_id` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `users`
--


-- --------------------------------------------------------

--
-- Table structure for table `user_type`
--

CREATE TABLE IF NOT EXISTS `user_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `user_type`
--


-- --------------------------------------------------------

--
-- Table structure for table `vehicles`
--

CREATE TABLE IF NOT EXISTS `vehicles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vendor_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `vehicle_info` text NOT NULL,
  `number` varchar(255) NOT NULL,
  `seats` int(11) NOT NULL,
  `driver` varchar(255) NOT NULL,
  `driver_phone` varchar(255) NOT NULL,
  `route_id` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `vehicles`
--


-- --------------------------------------------------------

--
-- Table structure for table `vehicle_seats`
--

CREATE TABLE IF NOT EXISTS `vehicle_seats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  `remark` varchar(255) NOT NULL,
  `vehicle_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `vehicle_seats`
--


-- --------------------------------------------------------

--
-- Table structure for table `vendors`
--

CREATE TABLE IF NOT EXISTS `vendors` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `logo` varchar(255) DEFAULT NULL,
  `address` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `website` varchar(255) NOT NULL,
  `user_id` int(11) NOT NULL,
  `created_at` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `vendors`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Saturday, December 31, 2011

2012 MW

A geek is that someguy or somegirl who enjoys sitting in front of computer all day/eve to find out about what’s happening in Information Technology world, to solve computation problems or to build apps or websites for fun or for their clients. Everyone else, include your in-laws or your neighbor who sit in front of computer all day/night and like/comment or re-tweet were never geeks or will never be geeks. To all those geeks and non geeks out there – Happy New Year 2012.

Everyone and her dog is in internet these days. Subtracts half of them - give them a t-shirt printed with Facebook or Twitter logo, they would happily wear it without a second thought. My mom talks about seeing her (this is how they arrange marriage these days) in Facebook. My neighbor knows a to x about Steve Jobs. Our friends have a new excuse line for we weren’t invited to their birthday party – “i have posted it on faceook” ? or “i have tweeted that buddy, didn’t you see it ?” And your girlfriend finds time to update facebook but doesn’t find time to respond to your text or call turned missed call.

Information Technology is most neglected sector in our country by the Government. Yet, this is one of the most developed sector. Carefully drawing a growth curve would reveal the fact that – this sector is self developing, is consumer supported and is most accepted lately in our society. What about Government ? They recently shut down High Level Commission for Information Technology (HLCIT) with non-public reasons which will be buried under the piles of Nepali paper at Ministry of Science and Technology.  Did anyone care ? I would have, I didn’t, why would I ?

Go to New Road. Search for latest ICS Android set. Or search for iProducts they are waiting to be bought. Google’s cache server at NTC gave us seamless YouTube video streaming – this is just wow ! We heard somewhere that IBM is collaborating with Nepali government and investing in IT Park at Banepa. Thosebody who work there know about that – everyone else, include me are busy tweeting what’s happening in our head. This won’t happen but – our government should tweet or invest on new twitter for us.

I don’t want to learn about technology in year 2012. Why care about that when at the time of implementing lessons learned we are supposed to check load shedding pdf ? Somewhile ago i thought about buying a TV set to enjoy those Hindi serials my mom always talks about – but i won’t because of that power cut. I don’t want to buy a TV set to watch its LCD screen off all the time. Who can imagine a future in technology where there was and will be 16 hours electricity cut off per day ? I can’t. It is better given up then selling one vote in national election in a false hope that some guy who haven’t even passed SLC would bring in more electricity someday. Those are all false assumptions we are supposed to rely on. I won’t on 2012.

Out of randomness scattered around this post, what I am trying to do is find few things to do for celebrating the year 2012. I think all the rant is over now, let’s focus:

1) Give more time to family, friends and acquaintances than to solving problems in computer
2) Build apps or websites as self sustainable products and not as a service for them who don’t understand the value of hard work we put on the product development.
3) Never miss another 3D Animated movie at QFX.
4) Always find time to participate in our EOM (End of Month) gathering.
5) Know more about why there is IT crew in Government of Nepal.
6) Contribute to local communities of developers, actively participate/organize meetups. Start an Open Source project.
7) Find out the song name for the .ogg i have in my pc since last 3 years.
8) Never say sorry without knowing what went wrong in my part.
9) Marriage.. hmm not sure.. should validate with coin toss ;)
10) Join MBA.
11) Join cooking class.
12) Iterate on writings.

(p.s. these are not in ASC/ DESC. Forget the numbering.)

That 2012 MW is the New Year Resolution I thought for the Nepal Electricity Authority. I don’t think they will have electricity to check out this post during this whole year.

Thanks for reading this far.
Happy New Year.

Wednesday, November 16, 2011

Should I study Computer Engineering?

Should I study Computer Engineering in Nepal ?

Other landing questions could be:
Where can I study Computer Engineering in Nepal ?
What is course structure of Computer Engineering from TU ?
Why there are so many unrelated subject in TU Computer Engineering (BCT) curriculum ?
What jobs are available for Computer Engineers in Nepal ?
How to understand Programming in Engineering Course ?

If you landed at this post searching for question in title and are in confusion whether to join computer engineering course or not – I would happily say go join in. Get enrolled in some colleges from TU, KU, PU etc..
Or if, if you landed at this post by other means I would guess either you are already studying computer engineering, or you are working on fields other than computer related. I’m talking about different aspects of computer engineering education in Nepal that I got to experience during my college life. If this is not the subject of your interest – I won’t mind if you stopped reading this post from here. Or if you will, I hope you’d be able to give freshers few ideas about whether to pursue higher education in computer engineering or not.

The Seeds


For me, studying computer as an academic course and pursuing a carrier in field of computers was one of childhood dream. I got to touch a computer loaded with DOS which showed some FATAL ERROR ! at the first run. Professionally Windows’s 95 / 98 was out in the market and there was Win 3.1 being taught at schools, with some Logo in primary level and Qbasic programming in secondary level.

From my friends to my computer teacher in school all were quite confident that I will end up studying Computer Engineering in higher studies (Since this is the only/reputed option available in Nepal for higher studies in Computer science). Yes, I did it. It has been two years now I’m working in software/web application development after college.

I had found some interest for staying around computers since 6th grade. Friends and family would ask me to solve their pc related problems. I was fascinated by electronics circuits. With that FATAL ERROR ! box in hand to repair I started searching for Linux OS that fits in a floppy or I would build some GUI to manage my Low End Box in Qbasic. Those were just stuffs that kept me interested in computers.

Later on I was introduced to Google by my brothers. The motivation for me to study computer engineering was all of the resources available in the internet. It was back in 2000 when I typed “how to build softwares” in Google. From that day on, I was always reading online university courses from universities around the world, papers and blogs shared by others tech people, blogs by students like me. The thing that excited me was – the culture of technology users. They share so much of information that – you can get into computer field starting from any given day and land up in a nice paying job within 6 months of time, with some serious effort.

Bill Gates: Forget university, the web is the future for education. #

All of the these practically implemented resources shared in the internet sometimes will give a feel that University courses are impractical, and they teach us practically minimal things that will support us professionally. With this practical side of resources available online, once during my course – I had a feeling that “I could get a job without university course too ” and would be able to pursue a nice career of my interest - programming. Or build a company of my own solely dedicated to software development. But, the whole purpose of joining a college “was” different – it is best seen now after college than at the time of actually doing the metal works at Workshop lab or Drawing unwanted stuffs on Engineering Drawing classes. But, to be true my realization after computer engineering course was If i had only followed what they taught us in University – I don’t think I would have been able to work professionally from the next day I finished my college.
So here comes this post.

Few things, I did my college from Tribhuvan University and subject details below  are referenced from TU course but choice of university would matter less at the end, what matters is “how much you could grasp out of the course and how skillful you become after completing the course”.

University Vs. Professional Practice


TU or KU will not teach us that way that after four 365 days we will graduate and get a job as a software engineer or as sys admin in an Internet Service Provider. They teach us the fundamentals of Computer Science. If you want to get skills that sells or gives you job after graduation it is up-to you to prepare for them. Consider yourself lucky if your university/college cares about providing you trainings/internships to help you get jobs later. But, if you are smart enough, you could get hired even before graduation. This is one of the most awesome thing we get to see in computer engineering field. Skills are choices.

University education will prepare us for higher education with knowledge of computer science fundamentals. However, professionals would expect in us skills related to our field that sells, that could help build softwares, that could manage a network or which could administer a server system of a bank.

Also, a university education (especially in Computer Science) will introduce you to a lot of people and opportunities in your field, will expand your technical horizon, and will force you to learn things you wouldn't have otherwise learnt on your own. School will open doors for you, it's up to you to pick which one to walk through. #

University course will help understand most of the basic concepts to the point where you would understand how computers actually work at a fundamental level, and you’d know how to get through the "abstraction" layers that so many people seem to have issues with. If you understand how a transistor works, it'll give you a better understanding of why writing to a flash device is different from other memories. If you understand how flash devices work, then it'll give you a better understanding of why you need different file systems to support it. If you understand how the file systems work, it'll give you a better understanding of why, for instance, opening a file with a million small files might be slow in some systems... and so on and so forth. I think one of the biggest thing that I got out of the school was 4 years of just learning and thinking about the concepts are all inter-related, so that when something fails, you have the required tools and knowledge to actually dig into it and figure out what's underneath all that abstraction that everyone takes for granted. #

I know this is little bit long winded, but I'm of the opinion that the 4 years spent in college will not be a waste. If you find a right college, just the people you're going to meet and befriend I think is worth it all by itself. It's really going to be what you make out of it. And most of it, I loved my college life, I loved my friends, and I wouldn't trade it for anything in the world. # 

But, career learning is not an option in university, you learn it more from on-job training, reading blogs and connecting with industry professionals.
University teaching is based on measuring units, quantifying experiences and not giving people the room to grow as artists. In the market, you can't quantify everything, we are training too many scientist and not enough artists.

The important thing is to get out there and do stuff. Instead of waiting to be taught, go out and learn. – Paul Graham on “What You'll Wish You'd Known”

Point is : You’d have to learn what you want to learn by yourself. Engineering course is designed to help us understand fundamentals of that learning curve.
Don't pick a college based on name brand recognition, pick one with a solid course structure with rich technical resources. Join in. Hack the course in/out, get max from the four years of your life.

Course : Computer Engineering, TU


To see the brief description of what is being taught in the course refer to this post
http://tu-ioe-bct.blogspot.com/2008/11/bachelors-degree-in-computer.html of project blogging.
project-logo
1.0 Mathematics – I
2.0 Physics physics
3.0 Computer Programming – I (C)
4.0 Communication - I (English)
5.0 Engineering Drawing – I
6.0 Workshop Technology
7.0 Applied Mechanics
8.0 Thermodynamics, Heat and Mass Transfer
9.0 Mathematics – II
10.0 Chemistry chemistry
11.0 Electrical Engineering Materials
12.0 Electric Circuits – I
13.0 Engineering Drawing – II
14.0 Mathematics – III
15.0 Computer Progrmming – II (C++)
16.0 Electric Circuits – II
17.0 Semiconductor Devices
18.0 Logic Circuits
19.0 Basic Computer Concepts (BCC)
20.0 Applied Mathematics
21.0 Instrumentation
22.0 Electronic Circuit – I
23.0 Microprocessor
24.0 Electrical Machines
25.0 Electromagnetics (EM)
26.0 Numerical Methods(NM)
27.0 Communication - II (English)
28.0 Data Structure and Algorithm (DSA)
29.0 Theory of Computation (TOC)
30.0 Computer Architecture & Design (CAD)
31.0 Microprocessor Based Instrumentation (MBI)
32.0 Control System
33.0 Engineering Economics
34.0 Probability and Statistics
35.0 Computer Graphics (CG)
36.0 Communication System
37.0 Operating System (OS)
38.0 Database Management System (DBMS)
39.0 Minor Project project
40.0 Project Engineering
41.0 Organization & Management
42.0 Computer Network
43.0 Software Engineering
44.0 Artificial Intelligence (AI)
45.0 Elective
46.0 Engineering Professional Practice (EPP)
47.0 Technology Environment & Society (TES)
48.0 Digital Signal Processing (DSP)
49.0 Simulation and Modeling
50.0 Information System (IS)
51.0 Major Project
52.0 Elective – II
Course
The above list will eat up four most energetic and valuable years of your life. If you did it well – there are lot of possibilities.

Scenario : This needs to be changed 

  • Teacher
    • Theory focus
    • No senior lecturers available (almost all of them left country for higher education)
    • Weak at practical implementation of the course
    • Teach to earn mindset
    • Can teach anything.. any subject to any faculty (ridiculous)
    • Knows everything in theory
    • Lack of subject domain expertise
  • Student
    • Theory Focus
    • Lack of seriousness in course study
    • Lack of knowledge about scope of course
    • Lack of practical application of theory
    • Takes projects as burden
    • Exam centric study
    • No interest in self learning
    • Stressed of unnecessary Electrical/Electronics subjects
    • No idea of Collaborative Development
    • No Interest in professional latest happenings

This list reflects those who do a irresponsible teaching and the students who loose their interest in study in the middle of the course. Writing these as an outsider – there came these points needed to be managed during college life. These scenario needs to be changed. We need to inherit the sharing, caring and collaborating culture from the history of world’s technical developments.

After course : Career options


Most of the Computer Engineering graduate are working in one of the following positions in Kathmandu.
  • Programmer (Software Engineer)
    • Desktop Applications Developer
    • Web Applications Developer
    • Mobile Applications Developer
  • Network Admin
  • Sys Admin
  • DBA (Database Administrator)
  • Web/UI Designer
  • Q/A  (Quality Assurance)
  • 3D Animator / Modeler
  • System/Project Management
  • Information Architecture (System Designer)
We are being taught C/C++ for basic programming/ software development concepts but professionally “PHP, Javascript, JAVA, C#, Python” are of the popular programming languages used in Nepal. Ref: Popular Programming Languages in Nepal.

Computer Engineer
So any student who learns these industry standard software development platforms on her/his own effort will sure hold better chance of working as “Software Engineer.”  This applies to all other jobs mentioned above too. What this means to a engineering student is you should give some time to find out what’s your actual interest is in – and direct the knowledge you get out of course study to the practical implementation in that field with all your energy.  It is up to the students to chose a career of their interest, that they are passionate about.

Subjects : Relations


Let’s take a different look at the above subjects. Let’s group related subjects together. This grouping will give one a clear idea of how the subject being studied are related to each other.

Math

1.0 Mathematics – I
9.0 Mathematics – II
14.0 Mathematics – III
20.0 Applied Mathematics
34.0 Probability and Statistics
33.0 Engineering Economics

English

4.0 Communication - I (English)
27.0 Communication - II (English)

Drawing / Metal Works

5.0 Engineering Drawing – I
13.0 Engineering Drawing – II
6.0 Workshop Technology

Physics / Chemistry

2.0 Physics
8.0 Thermodynamics, Heat and Mass Transfer
10.0 Chemistry

Mechanical/Electrical/Electronics

7.0 Applied Mechanics
11.0 Electrical Engineering
12.0 Electric Circuits – I
16.0 Electric Circuits – II
21.0 Instrumentation
22.0 Electronic Circuit – I
24.0 Electrical Machines
25.0 Electromagnetic (EM)
32.0 Control System
36.0 Communication System
48.0 Digital Signal Processing (DSP)

(I still find these subjects useless for a computer engineering student. Bite me.)

Digital Electronics Basic
(Computer Hardware)

17.0 Semiconductor Devices
18.0 Logic Circuits
Basic of Digital Logic, and how electronic components like Diode, Transistors help one formulate devices with computing “logic”.

How Computers are made (Computer Hardware)

23.0 Microprocessor
30.0 Computer Architecture & Design (CAD)
31.0 Microprocessor Based Instrumentation (MBI)

How computer processes “instruction” (eg. calculations, input, output etc) is studied from ground up in these subjects. Concept of Embedded System designs (eg. Robots, Computer Controlled devices, Digital home appliances).

General Information about Computer & Computer Engineering as Profession

19.0 Basic Computer Concepts (BCC)
46.0 Engineering Professional Practice (EPP)
47.0 Technology Environment & Society (TES)

Every Computer Engineer needs to understand the basic building blocks of computing devices. How computer systems affect overall society in terms of advancements (TES). State of Computer engineering profession in Nepal is studied in EPP.

Project/Software System Design / Management

40.0 Project Engineering
41.0 Organization & Management
43.0 Software Engineering
50.0 Information System (IS)

These subjects are most important subjects from management point of view. Any engineer would some day get involved into project management,  software/system design/modeling and Information Architect career. Anyone who ends up working in any of the development, networking, DBA or SYS Admin field will benefit from having the idea of project, people and software system design/management.

Programming the Computer / Algorithms

3.0 Computer Progrmming – I (C) – Procedural Programming
15.0 Computer Progrmming – II (C++) – Object Oriented Programming
Assembly / Microprocessor, Prolog for AI, MATLAB, Computer Graphics Algorithms
Data Structures / Algorithms, Numerical Methods, Weka / Data Mining
SQL / MySQL / Oracle

However it's not going to matter what programming courses you get to learn - you really learn programming once (not a trivial task) for me I started with Qbasic on 9/10th grade, and from there you can pick up whichever languages (PHP, Javascript, C#, JAVA, Python, Ruby, Lisp ) you need (a comparatively trivial task). Most importantly, you should learn outside the classroom -- make your own projects/applications/websites or contribute to existing projects. I did. This helps in a lot of aspects -- it trains your motivation, improves your skills in programming, can be used as resume fodder, and so on.

Advanced Computation

26.0 Numerical Methods(NM)
28.0 Data Structure and Algorithm (DSA)
29.0 Theory of Computation (TOC)
35.0 Computer Graphics (CG)
44.0 Artificial Intelligence (AI)
49.0 Simulation and Modeling

NM – is for advance mathematical calculations.
DSA is the subject that will give heavy focus on algorithmic implementation of numerous real world problems with computer.
TOC is highly theoretical subject and is best studied for language design, compiler design.
CG – if done well can inspire one to get in to Game development, 3D modeling, Computer Vision etc.
AI – Useful in Games, Robotics and automation, expert systems.
Simulation - Modeling and simulating high end computing systems.

Computer System, Storage, Networking

37.0 Operating System (OS)
38.0 Database Management System (DBMS)
42.0 Computer Network

One should be familiar with how the computer “actually works”. This is where Operating System is dissected to depth.
Every application in the world will need some storage to store data/information. No software engineer could work without writing database queries.
Anyone interested to work as Network Administrator take Computer Network seriously.
Subject of your choice 

45.0 Elective – I (Image Processing, Optical Fiber, Mobile Communication etc)
52.0 Elective – II (IPv6, Biomedical, Data Mining etc.)

You can chose for “easiness” or for “interest”. Normally, choosing for interest is a tough choice. And a better choice.

Projects is where you get to show your Software design, development, project management skills studies so far.

39.0 Minor Project project
51.0 Major Project
Hierarchy of subjects with their relative hardness:

Math > Physics > Electrical/Electronics > Fundamental Computer Science > Software Engineering > Information Systems > Management > English > Art

Master from the root. Other will follow naturally.

For career in software development


First year of engineering education will be more about "learning how to learn" than anything else. Once you get into track, understand what is your real interest is in – after that its time to focus and be determined to dive into it. At this point you should be sure whether you want to be an pure academic (teaching) or a pure industry engineer (career options above). It’s again up-to you. Since I was more interested in software field – here’s what I think you may find interesting to focus on during college life for the same.

Focus On
  • One computer subject one project
  • Projects for fun
  • Build Unique Apps / Projects
  • Don't repeat yourself while coding
  • Don't build what is already built
  • Build with awesome Interface/UI/UX/Design
  • Build apps to launch
  • Unit Tests / Testing / Automation
  • Share your code or part of it
  • Use open source to the max
  • Document your project well
  • Always share your learning experience
  • Always work in groups
  • Collaborate as much as possible
  • Ask someone to mentor you
  • Maintain a regular blog from day one at university.
  • Learn where any subject under discussion will help professionally.
  • This is all about connecting the dots, as Steve Jobs said



Project Ideas (< a month projects)


Project Ideas
  • Nepali Chat Bots
  • Nepali Language Parsers
  • Local Games 2d/3d
  • Nepali Social Network Models
  • RSS-to-SMS
  • MIS as Web Apps
  • Inventory Management Web Apps
  • Online Multiplayer Games
  • Language Converters
  • Nepali Calendar
  • AI in Games
  • OCRs that recognize Nepali Text
  • Extensible Content Management Systems
  • Data Backup Systems
  • Multimedia Players
  • Road Simulators
  • Electricity Flow Simulation
  • Location Based Social Web Apps
  • Real-time Online News Systems
  • Real Time Online Discussion Forums
  • Online Payment Get-ways
  • Mobile Games
  • Quiz Softwares
  • Event Management Apps
  • To-do list manager
  • Bookmark Managers
  • Browser Extensions
  • Plug-in/Extension to your favorite softwares
  • Web Scrappers
  • Report/Chart/Analysis Libraries
  • Personal Blogs/Websites
  • Work on open issues of Open Source apps


Suggestions


Suggestions to Computer Engineering students
  • Self Study
  • Internet is your library - Search, search and search more
  • Try to understand the concept of programming not syntax
  • Algorithms and Data Structures are everything
  • Projects are portfolio for your first job interview
  • Wikipedia is your teacher
  • Open Source Applications are you Code Gurus
  • Online Discussion Forums are your Communities
  • Organize events, competitions centered around Software development
  • Learn to use Collaboration Tools
  • Be disciplined inside and about your profession
  • Build Skills that sell
  • Join/Follow communities of developers
  • Learn to respect community, get max from it
  • Find what is the BUZZ in tech
  • Learn about Project Management seriously
  • Build products that can solves existing software problems in our community
  • Know about Documentation
  • Learn about software testing / Quality Assurance
  • Do one project by yourself per computer related subject
  • Give others, Take from others
  • Share your project code in the internet
  • No one becomes professional without a hard work
  • Those who are doing good now did their best while studying
  • No one is born talented, its the hard effort that pays later

Regular Reading : Recommendations (Online)


Wikipedia : Once a week  (Start with a tech article, follow all the inside links)
Stackoverflow / Sort questions by vote and read 20 most voted questions in all the subjects of your choice.
Regularly read updates from at least two or three domain experts of the field of your interest.
Join Local Communities of Tech Users. (eg. KtmGTUG, Hackers Chautari, FOSS, BarCamp)
Get a habit of reading blogs, online discussion forums regularly.
Publish your new found knowledge in your blog.
(refer: http://wiki.semicolonvalley.org to find other local resources)