30 Nov 2014

Evolution Of Smartphones

Smartphones, they are our every day tool. We cannot live without them. They are now a part of our lives. But how did these smartphones come about? Here's a brief history.

First things first: What is a smartphone? A smartphone is a phone that has the functions of a computer, a touchscreen, internet access and has an operating system capable of running third party applications.

Starting with just phones, Motorola was the first company to invent the mobile phone, and these phones were very big. This is the picture of the Motorola DynaTAC 8000X
(source: Google Images)

Yes, can you imagine putting phones like these in your pockets? Thankfully, our smartphones have evolved over the years.

Many say that the first smartphone was the IBM Simon, but at this point of time (in 1997) and even a decade later, smartphones weren't popular. The smartphone revolution began in 2007, with the release of the iPhone. Dubbed the 'Jesus Phone' due to its passionate launch, it was the first phone to run iOS. Then came the iPhone 3G releasing in July, 2008 with minor improvements and a year later, Apple unveiled the iPhone 3GS (here, the 'S' stands for speed).

Two months later, HTC announced the first Android phone called the HTC Dream or T-Mobile G1 in the United States. Now this phone had a touchscreen and used a QWERTY keypad and it ran on Android 1.6 (Donut). Other features included were a 3.2 inch screen with a resolution of 320x480 giving it a pixel density of 180 ppi. It had 192 MB of RAM and 256 MB of ROM. It used a Qualcomm MSM7201A chipset, a 528 MHz ARM 11 CPU and an Adreno 130 GPU.

The Nexus devices (excluding tablets) released were the HTC Nexus One, Samsung Google Nexus S, The Samsung Galaxy Nexus, Nexus 4, Nexus 5 and the Nexus 6.

Fast-forward 2012, HTC came up with the One X, a smartphone that was to compete with the iPhone 4s and the Samsung Galaxy S III but it did not sell too much as it was not as popular.

Before the smartphone revolution, BlackBerry phones were the most popular. However, after the iOS and Android became more popular over the years, BlackBerry's sales crashed. BlackBerry tried developing a new OS and released the BlackBerry Z10 in January and the Q10 a few months later. However, this was not enough to keep up the sales of BlackBerry and they went tumbling down. BlackBerry now has it's new BlackBerry Passport, a large phone with a big screen and a QWERTY keyboard. It is an Amazon.in exclusive in India and it is being bought my consumers (surprisingly).

Let's go back to the iPhone. Long story short, it was a huge success and it still is. The iPhone 4 was a huge success. It was covered in glass- the front and back with a stainless steel edge as the antennas. Remember "antennagate" ?

The iPhone 4s (here, 's' stands for Siri) was unveiled a day before Steve Jobs' death. This came with an upgraded chip and Siri, Apple's voice assistant.
Then came the iPhone 5, which was much thinner than the 4s and it had a bigger screen. It went from a 3.5 inch screen to a 4 inch screen, only increasing the height. Other differences include an upgraded chip.
The iPhone 5s (here, 's' stands for Sensor) came with a Touch ID and an upgraded chip. A new colour was also unveiled- a champagne gold colour. Apple also unveiled the iPhone 5c ('c' stands for colour), which had the same specs as the iPhone 5 but was available in different colours along with a hard plastic back shell.

The iPhone 6 and 6 Plus came with a change in design, thickness (a funny story), NFC, bigger screens and a better display and Optical Image Stabilization in the Plus. The iPhone 6 has a 4.7 inch screen and the 6 Plus has a 5.5 inch screen. Some iPhone 6 Plus users complained that the iPhone 6 Plus would bend in their pockets and this was termed "bendgate".

2009 was the year when the smartphone uprise began. Samsung announced its Samsung Galaxy S in the same year Apple released their iPhone 3GS. The Samsung Galaxy S used Android 2.1 (later upgradable to 2.3 Gingerbread) and Touchwiz 3.0 and from here on, Samsung ranked second in terms of Smartphone sales, just behind Apple.

I hate to say this, but Android (at least in India) became popular due to the Samsung Galaxy SII. While Samsung has truly "innovated", it has also come up with innumerable gimmicks which the general public somehow seems to love. Remember S Voice, Air View... all leading to one thing LAG.
We have more and more Samsung phones coming out at least once a month- all of them with the same or similar design as the Samsung Galaxy S III. However, they have now began changing their designs... by copying the iPhone. The Samsung Galaxy Alpha is one example. However, Samsung's sales are now falling (thankfully) due to Chinese smartphones and smartphones from brands like Motorola and Asus.

In recent years, Chinese brands like OnePlus and Xiaomi have been known for their smartphones with flagship specs and a low price. Xiaomi's popularity increased when Hugo Barra left Google for Xiaomi.

Indian companies like Micromax are also expanding. The implementation of Android One by Google started in India, producing budget phones that are to receive regular updates for two years.

Since the smartphone revolution, we have seen a huge evolution of this industry. Smartphones started off as having 528 MHz single core processors with 192 MB of RAM and now we have Smartphones with a 2.7 GHz quad core processors with 3 GB of RAM.

Modular phones like Project Ara by Google and Puzzle Phone have been in the news recently, but we will not be seeing them in markets anytime soon. This is a huge step for smartphones as users will be able to replace any part of their phones, making it usable for a long time. They have the option to change the battery, the camera and other components to boost the performance of their phone.

But how would a smartphone look like two years from now? I designed a rough diagram of what a smartphone would be like two years from now. (I apologize for my photoshopping skills not being as good as +Aabharan Hemanth's.)


Major upgrade in specs in two years is what I predict along with new Android versions (first Android 'M' and then 'N') with more or less the same Material Design UI. Dual speakers are now becoming more popular, as we have seen in the HTC One M8  (Boom Sound Speakers) and in the Moto X 2014. Some features I haven't mentioned are gesture controls and voice commands.

So, this is the end of my first post on The KHMD Blog. Feel free to +1, comment (that includes pointing out my mistakes) and or share this post. More content to come.

29 Nov 2014

Electronic Serendipity


Let me start of by telling you how my weird obsession with electronics all started off. Once upon a time, in a land far far away, nothing happened. But simultaneously, in a parallel universe, my house had its doorbell jammed, which was just a matter of scaevity and will of God, I presumed, but my curiosity failed to accept this, it took full control of my body and it got me dismantling it and getting to the bottom of this. I spent that day experimenting with that sad piece of electronics but at the end of the day, I was still nequient about the productivity of the day just when there was a spark. The spark was both in the doorbell and in me. The one in the doorbell caused a burst of excitement and adrenaline for that moment but the spark in me got me working on many many more projects in the future, of course with a bit more success than that doorbell.

That was somewhat how I started working on my projects but before I blew up the next thing in my house, I did read a lot about this field of science and engineering.

I'd like to pass on a condensed version of what I think is required for you to know before you break open or blow up stuff, and finally build something that people will go "Ooooh!" about.

The first thing I'd like to put out for you is      

The difference between  electrical devices and  electronic devices.

Well, the question seems simple until you try to answer it yourselves and when you ponder over those two word-electrical and electronic, the difference seems inexplicably hard to describe in words. Let me save you the effort of doing that and give you the answer. The answer theoretically lies in how devices manipulate electricity to do their work. Electrical devices take the energy of electric current and transform it in simple ways into some other direct form of energy ( most likely light, heat, or motion). The motor in your washing machine, which swirls around your clothes once you get them dirty converts electrical energy to mechanical energy. The heating elements in an iron box turn electrical energy into heat so you can press your clothes once they're done drying.

In contrast, electronic devices do much more. Instead of just converting electrical energy into heat, light, or motion, electronic devices are designed to manipulate the electrical current itself to coax it into doing interesting and useful things.

One of the most common things that electronic devices do is manipulate electric current in a way that adds meaningful information to the current.

What used to be simple electrical devices now often include some electronic components in them. For example, your washing machine may contain auto detergent release mechanism based on time intervals that attempts to keep the clothes clean with the perfect amount of detergent. But yet again, things which may seem complex, for example your mobile phone, has simple electrical units like batteries in them too. This is the primary reason that the distinction between electric and electronic devices is a bit blurry.

Now it may be easier for you to comprehend what we're talking about when the two terms we talked about are mentioned ahead in time. Though for this section, we mainly deal with electronics and electronic devices.

"Other kids went out and beat each other up or played baseball, and I built electronics."


were the exact words of Robert Moog, an American inventor famous for his Moog Synthesizer. The significance of the mention of this quote is not to inspire you to give up sports, or anything for that matter, but rather to give you a bit of an inspiration to explore and admire the implementation of electronics and technology in various fields right from robot boxing to exploring Mars. The scientific amalgamation that has ameliorated situations in history.
 Electronics is everywhere around you, which is precisely why it is required to innovate and invent keeping up with the technological expectations of mankind for which you don't have to be a factotum nor have hypermnesia but just be quite who you are.
The first thing i suggest you do is have an insight on electronics with a bit of "What?" and "How?" after which you can work on your first project to give you the motivation and satisfaction helping you climb up the ladder of success. One more important thing is that, I think you should have an aberrant thought process which will greatly help you in this field of learning.

I suggest you watch this video to get a basic ideas in few concepts you'll need for your projects.





You can also check out this link for more on the same topic.

The next step to build your first project would be to get the required materials you need.
Here's a checklist you may use.
1) 1K ohm - 1/4 Watt resistor
2) 5mm red LED
3) SPST toggle switch
4) 9V battery connector
5) Breadboard

NOTE: To purchase the parts listed above, you can either buy them online at () or at an electronics (not electrical) store. I usually buy my parts at SP Road, Bangalore, where you will find a large number of electronics stores.

If you look at the schematic you will see that the 1K resistor, LED, and switch are all connected in series with the 9V battery. When you build the circuit, you will be able to turn the LED on and off with the switch.

You can look up the color code for a 1K resistor using the graphical resistance calculator. Also, remember that the LED needs to be plugged in the right way (hint - the long leg goes to the positive side of the circuit).

If you decide to use the switch, open and close it to see what happens when you make and break the circuit.
To tell you the truth this wasn't my first project but I wish it were.

At the moment I am working on a small scale IoT project (Internet of things). Here's a short video to give an insight on that.



IoT is one of the most probable near future technologies that is going to run our worlds and everything around us.

For any complex electronic integration system, there always is an amalgamation between software and hardware. The simple projects and electronics basically comes as one part of technology, the hardware section mainly but when you start exploring into technology, coding and programming became a considerable part of your project. One of the main reasons that i started of with programming is electronics. This is exactly how electronics got me learning so much more than the stereotypical boundaries that comes with its name. So I'd like to tell you this, work with electronics regardless of whether you find it interesting or not when you start off, trust me it will trigger a spark in you and at the least, help you navigate to what you love eventually in the field of science and tech.

"DO NOT FLOCCINAUCINIHILIPILIFICATE."


23 Nov 2014

A programmers best friend is "man"!


Yes, it maybe true that a dog is man's best friend, but if you ask a programmer, he will tell you that his best friend is indeed man.


Man? Am I saying that a programmer's best friend is another man, as in another programmer? No, what I am talking about is this nice little utility that comes with most linux distributions ( a good reason for you to switch to it if you're a programmer, not using linux), called "man".

"man" is command-line tool that can be used to access documentation for a wide range of topics, from the linux kernel to programming language reference manuals like the "user-contributed perl documentation" etc.  

By now, I assume that you have guessed that our good friend, "man" is actually short for "manual". So it naturally follows that each of the pages accessible from "man", are called "man pages". 

So this is what wikipedia has to say about "man pages":

man page (short for manual page) is a form of online software documentation usually found on a Unix orUnix-like operating system. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts. A user may invoke a man page by issuing the man command.

Now, what is a man command, and how do we command this "man" to show us documentation?

Well the syntax so to speak, for looking for a "man page" using man, is as simple as typing:
user@linux:~$ man foo
at your terminal and  hitting return, and "man" will run through all its "man pages" and find you the entry for in this case "foo", if it exists. And if it couldn't find it, our "man" will reply with the message: 
No manual entry for foo
Nice! So how does a "man page" look like if we actually ask "man" for something more sensible? Say printf?

man printf

That was the man page entry for printf using man (version 2.6.3)

Great, we now have a tool that helps us find information about printf! Yes, it has documentation for printf, but theres a whole lot more! You can find information about header files in c, or some function in say perl(if the perl-documentation is installed in your system), or you can even find information about man itself!




As a side note, if you have a linux computer, try using man to find the man page for something like stdarg.h (which will reveal the secrets behind printf), or something as simple as time. To do this, all you need to type is man stdarg.h or man time, and you will get some interesting results!

So the next time your coding on linux, and reading some code or maybe writing some, and your not quite sure what a function does, or don't remember its syntax, remember this: "man is your best friend!" and magically you will have all the answers! 

Cheers!

20 Nov 2014

Anybody Can Learn

Programming is, in a way, like writing poetry or music. It is an intellectual activity where one creates structure out of nothing. And the things one creates can have significant value to others.Some people enjoy taking things apart and figuring out how they work. Programming takes this to another level--not only do you figure out how things work, but you can also figure out how to write code to make them do things differently. It is intuitive and results of your work are known instantly. And you are learning new things constantly.If you are bored, you can always inject new life into a problem by trying to abstract it, or otherwise solve a larger problem simultaneously.

This is what got me into web development and here is some stuff that I've created:



See the Pen jEIqg by Sameer Kolhar (@kol123) on CodePen.

Now Go ahead and paint "I know Code!"

See the Pen Oil Paining by Sameer Kolhar (@kol123) on CodePen.

So if I was able to do it! Then you will also be able to it too! The only thing you need is a goal.This goal that you set for yourself and is specific to you and should be achievable in the time that you are willing to devote to it. It can be really fun if you get the hang of it and start to make yourself better at it. Reading and understanding code is very important in making you better programmer. Mathematical skills are required to simplify your programs and make them more efficient. 

The most important of all is that "you DO what you love and love what you do". I know you would've heard it from a lot of people but now it's high time you put it to practice. Just have fun! 


Technology is the building block of the next-generation and which you are going to be a part of and build for. This is your time. This is your canvas.

Go ahead! have fun! :D

I would also recommend you to read the following: How to have fun Programming

To get started with web design, check out our previous Guide to Resources


19 Nov 2014

This is CS50!


"Demanding, but definitely doable. Social, but educational. A focused topic, but broadly applicable skills. CS50 is the quintessential Harvard course."

Those were the words of an ex-CS50 staff member, describing CS50 in a truly apt manner. So what is CS50 really, and why is it on this blog?

CS50, in the words of its instructor David J Malan is "an introductory course to the intellectual enterprises of computer science and programming". Its a course taught to undergraduates at Harvard University, but is in no way limited to an undergraduate audience. It is a course intended for people with no prior programming experience, and has audiences all the way from the age of 8 to 70+.

The course dives into various branches of computer science, covering a wide range of topics like  abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, PHP, and JavaScript plus SQL, CSS, and HTML. Wow, low level programming in C all the way to abstract web programming, and that too all in one package? How can it get better than this?  Well the best way to find out, is to take the course!

For those of you already excited to close this tab, and google cs50, I'll save you the pain of scrolling by  quickly  describing the ways to take CS50 online, at the comfort of your homes!

How does one take up CS50? ( Link )

The course is primarily taught to harvard undergraduates on campus, but it is also offered  online, for free on the edX, platform (A joint initiative by MIT and Harvard, to offer courses from various universities online.). There are two ways to approach this course on edX, either go for an ID verified certificate ( Costs a few dollars, you will get a certificate on completion of the course, which verifies your identity), or go for the Honor - Code certificate ( Free of cost, but they don't verify your identity, but give you a certificate in your name if you successfully complete the course.), or just audit the course (Watch the lectures in your free time, and not really aim at finishing the course as per the deadlines). The on-campus version of the course contains lectures, and other sessions, which are recorded, and put up on edX, for the edX version of the course called CS50x. To use edX,,  you will need to sign-up for an edX account or login through either a google or a facebook account.

Links to CS50x's homepage on edX.
Course's official harvard website: cs50.net

The course will begin on edX in January 2015, with updated content from this year's course iteration at harvard. The current course on edX is based on last year's version of the on-campus course.

I suggest that those of you interested in completing CS50, start from 2015, as the course will contain the latest content.

Note that the course doesn't have any fixed deadline for the problem sets on edX, but the entire course has 1 hard deadline (usually the end of the year), where you will need to submit all the problem sets, and 1 final project.

About the course ( In more detail now)

The course is structured over a period of 12 weeks, each week covering a new topic. Every week contains 2 lectures ( each about an hour in length, taught mostly by the course's instructor Prof. David J Malan, briefly going over the topic for that week ), sections ( A more detailed approach to concepts highlighted in the lecture taught by the course's awesome teaching fellows), and a problem set.

Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for people who want to pursue computer science and those who just want to get to know the field better,  with or without prior programming experience.

The course starts from scratch, diving into the world of computer programming, using a nifty tool from MIT, called Scratch. Scratch is a graphical programming language, allowing one to build interactive, visually rich programs by using puzzle pieces which only fit together, if the order makes sense, akin to real world puzzle pieces.

Then the course transitions from the world of scratch ( which one can get too familiar with, in a matter of hours), to the world of system programming, with C. Various concepts learnt in scratch are easily extendable to C and any other programming language in general, and this course will highlight the similarities across many languages in the domain of programming. The C part of the course which lasts around 6 weeks, will cover all the fundamentals of programming, and also teach you to read, understand and modify code written by others (which is a must when you actually work on projects with lots of people coding). They will also introduce you to programming graphics in C thereby introducing you to the concept of libraries and APIs, that let you create windows like the one you are reading this blog post in.  After C, the course becomes a bit more fast-paced so to speak, moving away from C, to the rich interactive world of web development. The objective of this part of the course, is not so much to teach you web-development, but to teach you how to teach yourself web-development. The course will introduce you to the internet world, and give you an overview of the various methods you can use to create interactive, dynamic web pages, that look stunning.

The climax of the course, is its Final Project. The final project, is where you will be able to put together everything you have learnt from the course, and come out with your own software application. The nature of the project and its implementation details is entirely your choice, and the edX version requires you to only upload a video of yourself, describing and presenting your project.

Though the course might seem a bit overwhelming, especially if you are just starting to understand programming, remember that Google and Wikipedia are your friends, and members of this community will be able to help you out if you get stuck.

As a side note for those who do take up CS50 on edX seriously, ensure you watch the sections thoroughly, even if you feel its a bit long, as they contain the most amount of details on the various topics.  The on-campus version of the course will have quizzes (like a test paper), but the online version omits this part of the course.

For a more in-depth details about the syllabus, click here.

While, the purpose of this article was to introduce you to CS50, and hopefully inspire you to take this course, we also want to create a group for takers of CS50 in this community, this is only to help you guys out if and when you get stuck, and possibly create an opportunity to showcase your final projects, at school during the annual IT fair. To be a part of the cs50 community, just fill in this google form (Link).


Lastly, check out this video of  Prof. Malan, talking about CS50x and what's in store.





Guide to Online Resources

Here are a few links to the best courses and resources available on the internet. I'm sure a few of them will be new to even the most experienced programmers in our community. 

  • Codecademy - Interactive tutorials that teach Python , php , HTML & CSS , JavaScript , Ruby etc.
  • Code.org - Innovative methods of teaching programming. Want an example? This site features a war game that teaches JavaScript and Python!
  • Java for Android - Crash Course - Perfect build up to getting started on Android without having written code before. Skip the first few posts of this course if you have programmed in C++/Java before.
  • Mkyong - Lot's of beginner level Android Tutorials
  • Vogella - Great site to learn Android Development, Java, Version Control software, Web programming, Algorithms and much more in a truly structured manner. 

Blogs

  • Programming in Ecstasy - The Philosophical views of a veteran "psygrammer".
  • Jay Bosamiya's Blog - A blog written by an Alumnus of SKCH. He's currently pursuing Computer Science at IIT-Roorkee.
  • XDA Developers - Not really a programming related site, but a great place for one to get their hand's dirty with Android custom firmware, Open source projects and gaining experience in a world-class forum. You Don't have to be a programmer to be relevant on XDA. And don't forget to register yourself there.


YouTube Channels

TheNewBoston , Mybringback & Derek Banas - Loads and loads of tutorials on just about everything. 

Stay tuned to read the post written by Arjun Rao talking about a Harvard course that you MUST take at least once in your lifetime. 

I'm sure many of you know about a lot of different resources. Please add them in the comments. This post probably just scratches the surface. Stay tuned for detailed posts for getting started with each track. 


And finally something to leave you inspired


KHMD Community Explained

This is the first post, so let's keep it as short as possible shall we?

The Kumaran Hacker Maker Designer Community a.k.a. KHMD Community was started with the objective of tapping into the brilliant talent pool available in SKCH CBSE.

This blog in just a side-kick to the community that we have on Google+

The Community focuses on Programming that is not restricted to just the commonly used languages but focuses more on relatively new developments like Android, Arduino, Web etc and strives to develop a culture that integrates design principles into programming. This approach will hopefully result in a multitude of new, exciting and practical ideas that can be worked upon with the guidance of Seniors and Alumni.

Complete Beginners are welcome as long as they show genuine interest.

"We, as a community are only as strong as our members "


Members will have the opportunity to write articles on this blog or suggest what next you want to read here. The blog is open to everyone and will contain beginner level material.

This blog post was definitely not written by the most creative person you can find in school.

Click here to Join the Community

Here's a link to our very first Event : https://www.youtube.com/watch?v=bNyDTBWiDSk

Lastly, For those of you concerned with the word "Hacker" appearing in the name, I assure you that in this context the word does not signify anything illegal nor does the community encourage any kind of code that breaks other software.

 " The Hacker way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and that nothing is ever complete. "  

 - Mark Zuckerberg 

For a more detailed account on "hacking", Visit http://www.catb.org/esr/faqs/hacker-howto.html