- If a function does not return a value, then its return type should be void. If a function does not use parameters, then its param-list should contain the keyword void.
- All C programs consist of one or more functions, each of which is named a subroutine that can be called by other parts of the program.
- Functions are the building blocks of C. A statement specifies an action to be performed by the program. In other words, statements are the parts of your program that actually perform operations.
- Although a C program may contain several functions, the only function that it must have is main( ). The main() function is where execution of your program begins. That is, when your program begins running, it starts executing the statements inside main(), beginning with the first statement after the opening curly brace is reached.
- The standard library in C contains functions to perform disk I/O (input / output), string manipulations, mathematical computations, and much more.
- In BASIC or Pascal, operations such as writing to a file or computing a cosine are performed using key words that are built into the language. The advantage C gains by having the as library functions is increased flexibility. Library functions can be enhanced and expanded as needed to accommodate changing circumstances. The C language itself does not need to change. As you will see, virtually all C programs you create will use functions from the C standard library.
- Another component common to most C programs is the header file. In C, information about the standard library functions is found in various files supplied with your compiler. These files all end with a .H extension. The C compiler uses the information in these files to handle the library functions properly. You add these files to your program using the #include preprocessor directive. All C compilers use as their first phase of compilation a preprocessor, which performs various manipulations on your source file before it is compiled.
- Preprocessor directives are not actually part of the C language, but rather instructions from you to the compiler. The #include directive tell the preprocessor to read in another file and include it with your program. Notice that the #include directive does not end with a semicolon. The reason for this is that #include is not a C keyword that can define a statement. Instead, it is an instruction to the C compiler itself.
- A function prototype declares a function before it is used and prior to its definition. A prototype consists of a function's name, its return type, and its parameter list.
- When the return statement is encountered, the function returns immediately. No statements after it will be executed. Thus, a return statement causes a function to return before its closing curly brace is reached.
A place where I meet the world - technology, entrepreneurship, economics, and anything that I find interesting.
Sunday, June 26, 2016
C Programming Notes
Saturday, June 18, 2016
The Rainbox Vision of Graffiti Ten
How cool will it be if the following happens in the future?
- The fact that when you write a short story, if there is an "enough" storyline that your words turn into an animated movie.
- That the main theme of your writing turns into a sketch, an artwork, as if any cartoonist or artist reads your work and depicts it in the art form.
- That the words you write turn out to be expressed by a movie short-clip, found from sifting abundant data fed into the "movie-realm", that depicts the "spirit" of your writing.
- That you can doodle into your text-editor or write how you feel and get to read blurbs of poems that otherwise you'd not be able to find. These poems are knowable unknowables -- the poems that you may find out someday and you may love them but you don't know yet.
Monday, June 06, 2016
Simple and Concise Cover Letter Template from the book - The Google Resume
Dear [Recruiter or Hiring Manager's Name]:
I am interested in the [job title] advertised on [web site or other source]. With a strong background in [list of tangible skills], and [number of] years of experience, I am confident that I can [general problem you can solve].
My qualifications include the following:
I am interested in the [job title] advertised on [web site or other source]. With a strong background in [list of tangible skills], and [number of] years of experience, I am confident that I can [general problem you can solve].
My qualifications include the following:
- [Desired Qualification #1]: [proof that you have qualification]
- [Desired Qualification #2]: [proof that you have qualification]
- [Desired Qualification #3]: [proof that you have qualification]
- [Desired Qualification #4]: [proof that you have qualification]
I would love to discuss this opportunity further. I will follow up within a [time frame] to confirm that my application was received, and to schedule a time to talk further.
Sincerely,
Marjuk [ I love my name, so I use it often ]
The Hallmarks of a Great Cover Letter
Marjuk [ I love my name, so I use it often ]
The Hallmarks of a Great Cover Letter
1. Tailored (addressing directly to the person involved with the job)
2. Supported with evidence ( proof of your qualification)
2. Supported with evidence ( proof of your qualification)
3. Structured and concise
4. Simple, and direct writing
5. Professional
Resume Tips from the book The Google Resume
These are some invaluable resume tips that I collected from the book, The Google Resume. All credit goes to the author, Gayle Laakman McDowell.
The Six Hallmarks of Great Resume
The Six Hallmarks of Great Resume
- Accomplishment Oriented ("gets things done"):
A great resume enlists accomplishments instead of responsibilities. Accomplishments tell the future employer that you can get things done and you are result oriented. A common mistake that many people do is that they list out their responsibilities in the job versus their accomplishments in the job. Doing so does not say much about one's capabilities to the potential employer. An accomplishment centric example is following:
"Led entrance strategy for Foobar product in China, and successfully persuaded CEO to refocus division on the enterprise market, resulting in a 7 percent increase in profit."
The counterpart to accomplishment oriented resume is responsibility oriented resume, which focuses participation rather than accomplishment. Gayle strongly encourages in favor of creating an accomplishment oriented resume as employers look for doers and winners. An example of responsibility oriented resume will look like following:
"Analyzed new markets and explored potential entrance strategies for China division". - Quantifiable Results:
The accomplishments mentioned in the resume should be quantifiable. Quantifiable result provides a concrete context for your success, making your accomplishments more relatable and believable. It also reduces vagueness in your accomplishment claims. If you say, you helped increased sales in the company, but don't say by how much you have increased the sales, there is no context as to how well you have done. An example of resume point that incorporates the strategy of quantifiable results is following:
Original and Vague: "Implemented crash reporter and used results to fix biggest causes of crashes."
This example can be improved in the following way:
Newly quantified version: "Implemented crash reporter and used results to fix three biggest causes of crashes, leading to a 45 percent reduction in customer support calls." - Well Targeted
The resume should not be a one-size-fits-all resume. It should be well targeted for the job or internship that you are applying to and also should be well targeted to the company as well. If you want to tailor your resume for the position and the company need, you need to research about the company and should try to answer the following questions: what are the company's biggest issues and how would my role would impact the biggest issues of the company?
Even if you don't have the experience in solving the exact problems that the biggest issues that the company is facing, you might have skills that will be helpful for the company in solving those biggest issues. - Universally Meaningful
Resume should be universally meaningful in the sense that people outside the domain will be able to understand and relate to the resume contents. Other way to say this is that the resume should not filled with bunch of technical jargons that readers outside the domain might face hard time to relate. If a technical jargon is necessary to convey the meaning, it should accompany an easy explanation as well. - Clean, Professional, Concise
Few points to remember. Fonts ideally 10pt Times New Roman or Arial. 1 inch margin all side. 1 page resume unless you have more than 10 years of experience. Be consistent with style ( number or bullet whatever you pick, be consistent to use it). Take extra-caution to avoid grammar and spelling errors. - Well Structured and Clear
Each time a recruiter takes a look at your resume, she is looking at few things right away. Your education (school, degree, major, and graduation year), your professional experience (companies, titles, and length of employment) and related technical skills ( for software engineering job-- programming languages you know, technology stack, platforms, and projects). You should make sure that your resume is well-structured into these category and is presented clearly.
Saturday, June 04, 2016
What Graffiti Ten Can Become
Graffiti Ten is a personal journal web application that I have co-founded with Reza. Our reason for creating Graffiti Ten was simple. First, we built this product for ourselves. Second, we wanted a private space where we felt we could write without people judging us, as we escape the tyranny of over-sharing that's the feature of this age. Third, we needed confidence that we can build a product. Graffiti Ten seemed to be a project that we can build without breaking much sweat.
In coming product cycles, I want Graffiti Ten to become:
1. The most intimate writing place in the web: It has to become the most personal writing place in the web. The user experience of the service should inspire people to write. The user interface has to be simple and elegant --- well-thought out and catered to user need.
2. A cross-platform writing platform: To make journaling ubiquitous, we need to make Graffiti Ten multi-platform: web (we already have it), mobile (both Android and iPhone), Desktop (it's crucial in the context of offline and online sync) and Apple Watch (market seems ripe given the transition to conversational / audio entry/interaction.
3. An intelligent platform: Graffiti Ten should essentially become a service that understands you, after al it's your personal diary. it should help you to learn more about you. It should show you how you have evolved as a person over the years given that how you have evolved as a person over the years. It should tell you who you write like, what mood you are in when you write.
These are three higher level ideas with Graffiti Ten. The challenge is to break down each of these into more actionable features. It can become so much more than just a personal journal in the web.
In coming product cycles, I want Graffiti Ten to become:
1. The most intimate writing place in the web: It has to become the most personal writing place in the web. The user experience of the service should inspire people to write. The user interface has to be simple and elegant --- well-thought out and catered to user need.
2. A cross-platform writing platform: To make journaling ubiquitous, we need to make Graffiti Ten multi-platform: web (we already have it), mobile (both Android and iPhone), Desktop (it's crucial in the context of offline and online sync) and Apple Watch (market seems ripe given the transition to conversational / audio entry/interaction.
3. An intelligent platform: Graffiti Ten should essentially become a service that understands you, after al it's your personal diary. it should help you to learn more about you. It should show you how you have evolved as a person over the years given that how you have evolved as a person over the years. It should tell you who you write like, what mood you are in when you write.
These are three higher level ideas with Graffiti Ten. The challenge is to break down each of these into more actionable features. It can become so much more than just a personal journal in the web.
Friday, June 03, 2016
Reminder to Self: there is no free will, but inputs influence the trajectory of decision making.
"There's no such thing as free will" ~ The case for a more compassionate world. https://t.co/B7kIhKxZDQ— Marjuk (@marjukahm) June 3, 2016
Thursday, June 02, 2016
Learnings from Marc Andresseen and the Future of Open-Source Game Engines -- What I am Reading Today
The amount of reading that I do each do sometimes astonishes me. I usually do not keep track of what I read. My reading list includes bunch of books from Kindle and iBooks and plenty of blog posts that I find mostly via twitter. I thought it'd be refreshing if I write small summaries of the reading that I do, so when I look back in a day I could use crystallize some of my learnings. Keeping that in mind, I am summarizing from the resources that I have read or listened to:
1. Marc Andreessen's interview on Tim Ferris's podcast:
These are my takeaways from the interview:
1. Marc Andreessen's interview on Tim Ferris's podcast:
These are my takeaways from the interview:
- Smart people should build things.
- "Be so good that they can't ignore you" inspires me and I believe in this.
- Hedge fund managers are not beholden to their ideas as when they are told where they are wrong, they get excited to hear how so.
- Value investing versus technology investing are polar opposite in the type of investing that both do. Value investing bets on the future not changing (e.g. Coca-Cola, Ketchup) whereas venture investing invests in future trend and change (e.g. Google, Uber)
- I should read Steve Martin's memoir Born Standing Up.
2. Saku Panditharatne's blog post on the importance on open-sourcing in Gaming:
Here's what I have learned: In the gaming / graphics world, open-source is not as popular as it is in the tech world. Examples:
Here's what I have learned: In the gaming / graphics world, open-source is not as popular as it is in the tech world. Examples:
- For low level graphics APIs, the proprietary library like DirectX is winning against open-source GL in the gaming world.
- NVIDIA is acting like Microsoft in the early days when MS was against open-source. NVIDIA makes drivers that are required to be reverse engineered by the open source community to make it work.
The argument is laid by Saku is two-fold:
- This practice of not code sharing has to change and the gaming/graphics community should come together to create open standards and protocols if they want to see VR or gaming DIY to flourish much like it happened for the web.
- Without the open-source model, there is a high chance that game engines, which are the OS for the VR, will be too buggy at the absence of the Linus's principle: "given enough eyeballs, all bugs are shallow"
Subscribe to:
Posts (Atom)