Day 3 to 6 – Make my first iPhone app in 16 weeks (C Programming in depth via online resources)

This is part of “Make my first iPhone app in 16 weeks” series.

Over the last few days, I watched 19 video lectures on Programming Paradigm by Gerald Cain, professor at Stanford. Though the entire lecture series is composed of 27 videos, the last 8 of them are on Scheme and Python. Since my goal is to master C and I already have a working knowledge of Python, I chose not to watch the last 8. Even after watching the videos, I didn’t feel like I know everything I want to know about C. So I found this wonderful book online that is published free of charge on a university website:

http://www.iu.hio.no/~mark/CTutorial/CTutorial.html#Preface

If you know enough of C to be dangerous, I think reading this book online will help solidify and fill the gaps in your knowledge of C.

Once done reading this book, I’ll go ahead and do a few coding assignments to really test my skills in C. Then, I’ll feel at least semi-prepared to plan an assault on Objective-C! Here are some websites I found to contain bite-size projects.

http://www.programmingsimplified.com/c-program-examples

http://www.programiz.com/c-programming/examples

http://www.codeincodeblock.com/2012/04/list-of-top-ten-college-mini-projects.html

Day 2 – Make my first iPhone app in 16 weeks (Better foundation in C via free online resources)

This is part of “Make my first iPhone app in 16 weeks” series.

My day started with finishing up CodeSchool tutorial. It takes several hours to finish it but I will go through it one more time. I learn by repeating.

I got an advice yesterday from a seasoned engineer, schooled in Computer Science, that it is a good idea to have better foundation on C and not go head first into Objective C. Objective C is built on C and knowing C better will save me a lot of trouble down the road. So I decided to spend more days really diving into C, while learning Objective C at the same time.

I found this Stanford iTunesU course on Programming Paradigms, which introduces different languages including C. I’ll give this lecture series a try.

 

Day 1 – Make my first iPhone app in 16 weeks (Let’s learn C online for free)

This is part of “Make my first iPhone app in 16 weeks” series.

There are so many tutorials online that I can take advantage of. I decided to go with the following one:
http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/#pointers

Not only the syntax is a world apart from other languages I know, C introduces me to more in-depth concepts that I didn’t have to worry about with higher level languages. So now I have to worry about allocating space in heap for the data I wish to store for later use. Also i need to deallocate that space after intended use in order to prevent heap overflow. Heap overflow can potentially harm the operating system that’s running on your machine. This is probably a lot more than what I need to know to get started on Objective C, but it won’t hurt to have deeper knowledge in how a lower level language like C operates.

Whoa! My head is on fire but I went through the tutorial today. I also went through a few more tutorials online on C to get understanding of some of the hard concepts like “pointers” from multiple perspectives.

http://www.learn-c.org/

http://en.wikibooks.org/wiki/C_Programming

When I finished a few tutorials on C, I went ahead and started on an interactive Obj-C tutorial online (CodeSchool). I understand I don’t understand the ins and outs of C yet. But the focus here is for me to learn Objective-C and not necessarily dig deep into the language C. As I take baby steps in learning Obj-C, I will feel the need to go back to C tutorials from time to time to strengthen my understanding.

Make my first iPhone app in 16 weeks

This is part of “Make my first iOS app in 16 weeks” series.

Should there be one thing that I’m fairly good at, that’d be learning and making. I love learning new things and making something, utilizing that knowledge. I have taught myself Visual Basics, Javascript, and Python. So I hereby embark upon conquering another language: Objective-C!! This will enable me to make an iOS app and in fact I’ll make my first app as I learn the language. Getting my hands dirty and actually making something is the best way for me to learn.

iOS 7 UI

image courtesy of osxdaily.com

Study Plan Week 1 – Get basic understanding of C first as Objective C is based on C

Study Plan Week 2

Study Plan Week 3

Study Plan Week 4

  • Solidify the app idea

Study Plan Week 5

  • Make the wireframe

Study Plan Week 6

  • Make the UI

Study Plan Week 7 – 8

  • Make the first feature of the app

Study Plan Week 9

  • User test & fix

Study Plan Week 10 – 11

  • Make the second feature of the app

Study Plan 12

  • User test & fix

Study Plan 13 – 14

  • Make the third feature of the app

Study Plan 15

  • User test & fix

Study Plan 16

  • Make the icon & submit to iTunes

 

Silicon Valley vs Silicon Hills

Silicon valley vs Silicon hills – It’s a hairy question

Silicon hills

Photo courtesy of Silicon Maps, Inc.

So I’ve lived in Austin (aka. Silicon Hills along with San Antonio) for about 10 years before I moved to San Francisco. I have to admit Austin has grown so much for the last decade due to the influx of people moving from California. Thanks to SXSW, the charming little city gained its fame for its tech savviness, entrepreneurship and small business friendly environment. Not only are people coming to Austin but also companies relocate their headquarters to Austin – no State tax is probably the most contributing factor here and the close second being highly educated population thanks to Univ. of Texas at Austin. Also the living expense is half that of SF.

So by now it sounds like I made the biggest mistake by moving to SF. But no. Since I moved to San Francisco, I realized Austin still has so much room to grow. The startup community in Austin still is fledgling and more cliquish than in San Francisco. Almost everyone I met in SF so far is either working at a startup, owns one him/herself or working on one on the side. Everyone’s life is in one way or another intertwined with the startup spirit in this city. That’s not the vibe you would get in Austin, unless you try to actively seek out those special groups. This will change of course in the future, but as of now the support system in SF for young entrepreneurs is just unrivaled best.

Dreamer, Doubter and Doer

It’s been months since I quit my day time job as a financial analyst. Though I don’t particularly miss staring at Excel all day long, I learned some of the most valuable lessons there about teamwork. The company I worked for is a global multibillion dollar company with traditional management structure. Its traditional command-and-control management method was conducive to avoidance of taking risks and fear of changes. My coworkers would talk about the company’s heydays and people who left the company because of the cultural misfit. I wonder to myself “Then who are these people that are still working for this company after 30 years?”

This is my grand theory.

There are three types of people: Dreamers, Doubters and Doers

Dreamers are people who are creative and propose strategic plans for the company’s future. They are risk takers. They think long-term rather than short-term. However, they often fall in the trap of getting emotionally attached to their ideas and coming up with seemingly unachievable goals.

Doubters are people who can foresee the obstacles in the future. They are your brutally honest friends that will tell you millions of reasons why your new idea sucks. They are often mistaken as a pessimist or a doomsayer. If utilized correctly, they will ground a dreamer’s dream and make it more realistic and foolproof.

Doers are people who can make tactical plans. They see a gold nugget at the peak of the mountain 300 miles ahead of them and can plan the exact route it takes to get to it. They motivate other team members to partake in the workload it takes to get there and make sure the work gets done.

The balance between all three types are VITAL in a successful team.

Often the personality types of those three people will clash and end up in an unresolvable difference in opinion. However, if they learn to work with each other and respect each other’s opinion, the team will be bulletproof and be able to lead the company to long-term success.

So back to my last job. I noticed that most of my coworkers fall in the category of Doubters. Some Doers – though, scarce resource. Very few Dreamers.

 

Startup and Partners

So you got a good idea/s. You want to see if this can work and secretly you believe it will. You run that idea by your spouse, friends, family and some random strangers who have time to hear you. The more people you talk to the more you realize how much work would be involved in this endeavor. A bit daunting… But you are not a quitter! You will make it happen but will need a few helping hands.

Photo courtesy of Zazzle.com

Photo courtesy of Zazzle.com

This is when you make a mistake of taking someone’s helping hands without carefully examining whether that person is a good fit for a partner. You may think in your mind I have a technical partner who has a CS degree from a reputable college that can make the website I’ve been dreaming of for me. He or she may have the necessary skills to carry out the task you have in mind but you still don’t know if he or she is a partner material. I recently learned that lesson the hard way and am resolved not to dish out equity for a task I could’ve outsourced to a contractor for payment. What makes someone a good partner is not only the skill level they possess but their tenacity, commitment to the project, persistence, personal characteristics, financial stability and willingness to do and learn anything to make the startup take off the ground.

If I have a choice of someone who meets all the criteria of a good partner but lacks technical skills I need from that person, I’d rather pick the former and trust that he or she learns the necessary skills on his or her own. I am an Accountant/Financial Analyst turned self-taught front-end web designer and programmer. Anyone can learn and master anything, as long as he or she is not afraid of stepping out of his or her comfort zone to learn new skills and spend time doing so.

Meeting the right partner is as hard as meeting someone whom you can spend the rest of your life with. But when you meet that right person, you know your business will survive even if it goes through multiple changes of idea.