Sunday, 24 November 2013

Post 3: Embedded Systems

Today I want to build an embedded System.

[I'll add a documentation and a step by step description soon]

First we're going to solder the Power LED and the  . Head up: The orientation of the LED is important, since it has got a positive and negative site. Usually the longer leg is the negative site while the shorter leg is the positive site. After that we will add the 1k resistors (it looks like a suckling pig because it's got a cylindric corpus on frame... and looks a little bit pinky too if you ask me). Resistors don't have an orientation, so you shouldn't be worried about that. Next we will solder the two 104nF Capcitor. They're easily recognizeable since they've got "104" on them printed. If you've done it, you should have a result similar to the picture below:

Sunday, 17 November 2013

Post 2: HTML / CSS / JavaScript

Alright that was a busy week. For my Ph.D. project I managed to create a demo and worked on two Papers. As you can imagine there wasn't that much time left for creating a new project. But, I manage to create one nevertheless. It's a modified version of the all loved Pong game.

But mine is cooler. It's called: Action-Pong. You can find it on the site I created in the 1st week. Have fun. I'll deliver the source code later on.

Saturday, 9 November 2013

Post 1: Interactive and AJAX compliant Website

 Setting up a Website with HTML / CSS / JavaScript, MySQL & AJAX

About one week ago I proclaimed publicly for the very first time that I want to become a Software Engineer (SE) intern at Google Munich. I'll apply in March 2014 despite the fact that I'm not a programmer or Computer Scientist neither by craft nor by profession. So, I set myself the goal of gaining the missing knowledge until March 2014. In my second Blog post I made a list of knowledge and skills that is needed for the internship and set up a plan of how to gain this knowledge: Each week I'll publish a small project that will cover the skill set and knowledge that is required to get the internship position. Further more I'll explain my projects in detail so even newbies can do it too. Trust me, if I can do it, so can you.

Today, I'll show you the result of the first self assigned project. It is a Website where you can login or register and after that get access to a game. The project is based on HTML / CSS / JavaScript and AJAX. Further more there's a MySQL-database behind that saves the user datas. I'll explain to you in detail how I used these technologies to build the website.
But I won't stop there. In the following days and weeks I'll work on this project in addition to my other projects. So, expect slight changes along the way.

This is the my website:

It's not finished yet. But the AJAX technology does show in the "Register"-form: If you type in a user name that is already in the database or type nothing in, then the form will display a text that says "false", otherwise "true". If the login is successful, then you'll get to a Pong game you can play on your browser.

If you want to try it out, here are the Username and Password:
Username: test
Password: 123

You can steer the pads with the "W" and "S"-Key and the Arrow-Up and Arrow-Down-Keys.

I'll publish the explanation and a tutorial about everything (Login/ Register form, Checking the login, setting up a database and the implementing the Game) you saw on this site soon, so you can build the very same project from scratch.

Friday, 1 November 2013

Post 0.5: My Plan of Action to get into Google

My Plan of Action to get into Google

Every week I will post one project or discuss one topic that shows I’ve got knowledge in the skills needed. The projects respectively the topics I’m going to cover are derived from the job position. 


Requirements needed

So what are the Google is asking for my desired position:
Requirement 1:
Currently pursuing a PhD in Computer Science or related technical discipline

Requirement 2: 
UI development with AJAX

Requirement 3:
Embedded systems and mobile apps (Android)

Requirement 4: 
Excellent implementation skills (C++, Java, Python).

Requirement 5: 
Experience in systems software or algorithms.

Requirement 6:
Familiarity with TCP / IP and network programming.

Requirement 7:
Knowledge of UNIX/Linux and APIs.

Projects and topics to implement resp. to cover

These are the projects and  topics I’m about to cover to fulfill the quoted requirements:
Regarding 1: 
No, I’m not pursuing a PhD in CS, but a in Mechanical Engineering. The missing technical skill in CS I’ll counter balance with the projects I’ll about to present in this blog.
Regarding 2: 
I’ll explain the core concept of AJAX and implement at least on application (e.g. in HTML/CSS/ JavaScript/ jQuery) that’s based on an AJAX concept.
Regarding 3: 
Realising two projects with Arduino, Raspberry Pi and one Android app
Regarding 4: 
I think this is a top priority Requirement. So, I'll implement not only one but various software in Java and/ or Python and also make it free and opens source for everyone.
Regarding 5: 
Explaining various concepts like Design patterns (MVC, Observer pattern, Factory pattern); Algorithm (especially search algorithms like BubleSort etc.; and complexity of these algorithm, i.e. explaining Big O concept)
Regarding 6: 
I’ll explain the core concept of TCP/ IP and one implementation that involves network programming.
Regarding 7: 
Realize some projects that involves running Linux systems (e.g. Raspberry Pi) and that uses some Webservices. Also implementing a software that uses APIs.

Content and Timeframe of my Projects

I'm currently involved in a project in my PhD studies. This project will last till mid Frebruary 2014. So, if there are no great changes, I'll apply in March 2014 as an intern at the Google Munich Headquarter. From today (1st of November 2013) to 1st of March 2014 there are 16 weeks left. So, if I wanted to make one project resp. cover one topic in each week then I'll have 16 projects resp. topics to cover all of the seven requirements I mentioned abouve.

These will be the concrete content of each week [Head up: some of the Timeplan and project currently don't match because I some things were easier to implement and I thought it would be boring just to present them here, while others were harder to implement and it took me more time to finish. I'll update the Timeframe soon]:
Week 1:
Explaining AJAX and setting up a website that's based on the AJAX concept, i.e. login form, etc. (Requirement 2)

Week 2:
 Also creating a funny game with JavaScript on the website, created in Week 1. (Requirement 2)

Week 3: 
Explaining MVC and Observer Design Pattern for a software that I'll implement in Week 3. (Requirment 5)

Week 4: 
Implement a software to manage students for my colleagues in JAVA and make it downloadable in the website I created in Week 1. (Requirement 4)
Week 5: 
Explaining different search algorithms (prob. BubbleSort) and explaining it's complexity with Big O. (Requirment 5)

Week 6: 
Implementng an Arduino project: A device that can detect an RFID-Tag. If it detects it then a LED light should blink. (Requirement 3)

Week 7:
Implementing another Arduino project. This time it should use sensors like temperatur or light sensors. (Requirement 3)

Week 8:  
Explaining  core concept of TCP/ IP and network programming (Requirement 6)

Week 9: 
Implementing an application that uses the concept of TCP/ IP and network programming (probably in JAVA and with a Raspberry Pi that has Raspian as OS) (Requirment 4, 6, 7)

Week 10:
Presenting a library software that uses RFID to detect books and Google books APIs to retrieve the information of the detected book. (Requirement 7)

Week 11:
Week 16:
Finishing this Blog by completing all the projects and thus covering all of Google's requirements mentioned above. Further more having gained more than 4.500 points on codecademy.

I don't know the specifics of the remaining weeks yet. But so far I would have covered the basics of all (except requirement 1 of course) the needed requirements. So, the remaining two months. I'll probably expand the projects I already created, dive deeper into the topics I already mentioned or will cover other topics. It will depend on what I'm about to learn in the weeks to come until I'll cover requirement 1 eventually.

Post 0: At the outset

Who am I?

My name is T. I was born in Hanoi / Vietnam. Currently I am a Ph.D. student at the TU-Munich at the Mechanical Engineering faculty in Germany. I want to become a Software Engineer (SE) and work for a good Software company - albeit I don’t have a Computer Science background at all.

Why Software Engineer?

As counterproductive as it sounds, being a SE isn’t my ultimate goal, but being involved in programming is. Because programming resonates best with my very nature: I’ve got plenty of weird, funny and useful ideas that are waiting to become reality. Programming skills and technical savvy will help me to realize my ideas. So yeah, I’m doing it for selfish reasons. :P.

Why this public “diary”?

I created this diary to show my enthusiasm for the act of programming but also to make a point that if you put everything of yourself into one goal, then you can reach it; even though you don’t have the best prerequisites at the outset -  like me.

As I said in the very beginning, I don’t have a CS background. Everything I know about programming is self-taught. So, in the following weeks and month I’ll work hard to gain the needed knowledge in CS, in order to get a job at a software comany. The gained knowledge I’ll present here.

Are you crazy, man?!?

Maybe. This video gives me hope though, that it is possible to gain massive knowledge within a very short time. It tells you that learning something for 20 hours, that’s 40 minutes a day for one month, is sufficient to become good at something.

So, each day I'll study for 40 minutes and at the end of the week, I’ll create my own little project and present them here, in order to:
  • Use it as reference material for my job application
  • Track my progress
  • Be an inspiration for others
  •  …. Or as a bad example of how not to do it, if I don’t get accepted for that matter…..-.-
In the following post (here) I’ll show you what topics I want to cover.

See you.