Udacity Announcement – Android Developer Nanaodegree

Excited to share the announcement that I received from Udacity Founder and CEO Sebastian Thrun. I will sure take a look at the Android Nano Degree courses, it’s a goldmine of information on developing Mobility apps and solutions.

Hi Suraj,

Since we started Udacity, our goal has been to democratize education. We believe everyone should have the opportunity to reach their full potential, have their dream job and change their life.

Google has always been a wonderful and significant partner on this journey. And today, I’m excited to let you know that we’re taking our partnership to the next level.As was announced during Google I/O, Udacity has officially opened enrollment for a new Nanodegree: Android Developer.

With more than 1 billion active Android users worldwide and 1.5 million devices activated every day, Android development is one of the most promising areas for career opportunities. Even as I write this, there are tens of thousands of job openings for Android developers around the world.

That’s why we’ve been working with Google to create a brand new curriculum focused on developing for the Android platform. It’s a comprehensive set of courses, projects and a certification designed to prepare any qualified student to become a valued contributor in the Android ecosystem.

If you’re ready to transform your career, this Nanodegree is your opportunity to work on interesting projects, get expert feedback and cultivate the skills that companies—including Google—look for when hiring Android developers.

Check out the Nanodegree >>

Keep learning,

Sebastian Thrun
Founder & CEO @ Udacity



Getting started with AJAX and Google Street View


, ,



Sample Code for JS:

function loadData() {

var $body = $(‘body’);
var $wikiElem = $(‘#wikipedia-links’);
var $nytHeaderElem = $(‘#nytimes-header’);
var $nytElem = $(‘#nytimes-articles’);
var $greeting = $(‘#greeting’);

// clear out old data before new request

var streetStr = $(‘#street’).val();
var cityStr = $(‘#city’).val();
var address = streetStr + ‘, ‘ + cityStr;

$greeting.text(‘So, you want to live at ‘ + address + ‘?’);

var streetviewUrl = ‘http://maps.googleapis.com/maps/api/streetview?size=600×400&location=’ + address + ”;
$body.append(‘<img class=”bgimg” src=”‘ + streetviewUrl + ‘”>’);

return false;


Sample Code for HTML:

<!DOCTYPE html>
<html lang=”en”>
<meta charset=”UTF-8″>
<title>Your Moving Companion</title>
<link rel=”stylesheet” href=”css/style.css”>

<form id=”form-container” class=”form-container”>
<label for=”street”>Street: </label><input type=”text” id=”street” value=””>
<label for=”city”>City: </label><input type=”text” id=”city” value=””>
<button id=”submit-btn”>Submit</button>


<h2 id=”greeting” class=”greeting”>Where do you want to live?</h2>
<div class=”wikipedia-container”>
<h3 id=”wikipedia-header”>Relevant Wikipedia Links</h3>
<ul id=”wikipedia-links”>Type in an address above and find relevant Wikipedia articles here!</ul>
<div class=”nytimes-container”>
<h3 id=”nytimes-header”>New York Times Articles</h3>
<ul id=”nytimes-articles” class=”article-list”>What’s going on in your new city? Enter an address and hit submit and the NY Times will tell you here!</div>

<script src=”js/libs/jquery.min.js”></script>
<script src=”js/script.js”></script>


Learning to Crawl the Web



#start by finding all the links on the seed page
#store them in a list
#go through all the links in that list to continue our crawl, and keep going as long as there are more pages to crawl.

### The first step is to define a procedure get_all_links that takes as input a string
### that represents the text on a web page and produces
### as output a list containing all the URLs that are targets of link tags
### on that page.

import urllib

def get_all_links(page):
links = []
while True:
url, endpos = get_next_target(page)
if url:
print url, ‘printing from get_all_links procedure’
page = page[endpos:]
return links

def crawl_web(seed):
tocrawl = [seed]
crawled = []
index = []
print ‘printing tocrawl before while loop’ , tocrawl
while tocrawl:
page = tocrawl.pop()
print ‘printing tocrawl before if statement’ , tocrawl, page
if page not in crawled:
content = get_page(page)
print ‘printing content’ +content
links = get_all_links(get_page(page))
print ‘printing links and to crawl variables’, links , tocrawl
union (tocrawl, get_all_links(get_page(page)))
print tocrawl , ‘after union’
print crawled
return crawled

def union(p, q):
for e in q:
if e not in p:

def get_page(url):
return urllib.urlopen(url).read()
return “”

# return url

def get_next_target(page):
start_link = page.find(‘<a href=’)
start_quote = page.find(‘”‘, start_link)
end_quote = page.find(‘”‘, start_quote + 1)
url = page[start_quote + 1:end_quote]
print ‘printing url’, url, end_quote
return url, end_quote


Fundamentals of Building a Search Engine using Python


Learning to Crawl

Data Structures (Python Lists)


The list data type has some more methods. Here are all of the methods of list objects:

Add an item to the end of the list. Equivalent to a[len(a):] = [x].
Extend the list by appending all the items in the given list. Equivalent to a[len(a):] = L.
list.insert(i, x)
Insert an item at a given position. The first argument is the index of the element before which to insert, so a.insert(0, x) inserts at the front of the list, and a.insert(len(a), x) is equivalent to a.append(x).
Remove the first item from the list whose value is x. It is an error if there is no such item.
Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list. (The square brackets around the i in the method signature denote that the parameter is optional, not that you should type square brackets at that position. You will see this notation frequently in the Python Library Reference.)
Remove all items from the list. Equivalent to del a[:].
Return the index in the list of the first item whose value is x. It is an error if there is no such item.
Return the number of times x appears in the list.
Sort the items of the list in place.
Reverse the elements of the list in place.
Return a shallow copy of the list. Equivalent to a[:].

An example that uses most of the list methods:


>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
>>> a.pop()
>>> a
[-1, 1, 66.25, 333, 333]

You might have noticed that methods like insert, remove or sort that only modify the list have no return value printed – they return the default None.[1] This is a design principle for all mutable data structures in Python.

 Nested Lists

Elements of a list can be any type you want, you can also mix and match different types of elements in a list. For example:
mixed_up = [‘apple’, 3, ‘oranges’, 27, [1, 2, [‘alpha’, ‘beta’]]]
or a more useful example:
beatles = [[‘John’, 1940], [‘Paul’, 1942], [‘George’, 1943], [‘Ringo’, 1940]]
This list provides information about the names of the Beatles band members, as well as when they were born. Try putting this into your interpreter. When you are typing your code into the interpreter and you want to separate data onto two lines, do so after a comma to make it clear to the interpreter that this is still one list.
beatles = [[‘John’, 1940], [‘Paul’, 1942], [‘George’, 1943], [‘Ringo’, 1940]]
print beatles
[[‘John’, 1940], [‘Paul’, 1942], [‘George’, 1943], [‘Ringo’, 1940]] print beatles[3]
[‘Ringo’, 1940]


Lists support mutation. This is the main difference between strings and lists. Lists can be mutated, thus changing the value of an existing list. Here is a list:

p = [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
Mutate a list by modifying the value of its elements:
p[0] = ‘Y’
This expression replaces the value in position 0 of p with the string ‘Y’. After the assignment, the
value of p has changed:
print p
[‘Y’, ‘e’, ‘l’, ‘l’, ‘o’]
p[4] = ‘!’
print p
[‘Y’, ‘e’, ‘l’, ‘l’, ‘!’]

Now that you know how a mutation modifies an existing list object, you will really be able to see how this is differs from strings when you introduce a new variable.
p = [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
p[0] = ‘Y’
q = p
After this assignment, p and q refer to the same list: [‘Y’, ‘e’, ‘l’, ‘l’, ‘o’]. Suppose we use an assignment statement to modify one of the elements of q:

### Aliasing
p = [‘H’, ‘e’, ‘l’, ‘l’, ‘o’]
p[0] = ‘Y’
q = p
q[4] = ‘!’
print p

[‘Y’, ‘e’, ‘l’, ‘l’, ‘!’]

After the q = p assignment, the names p and q refer to the same list, so anything we do that mutates that list changes that value both variables refer to. It is called aliasing when there are two names that refer to the same object.


<list>.index(<value>) → <position> or error
The index method is invoked on a list by passing in a value, and the output is the first position where that value sits in the list.

for Statements

The for statement in Python differs a bit from what you may be used to in C or Pascal. Rather than always iterating over an arithmetic progression of numbers (like in Pascal), or giving the user the ability to define both the iteration step and halting condition (as C), Python’s for statement iterates over the items of any sequence (a list or a string), in the order that they appear in the sequence. For example (no pun intended):


>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
cat 3
window 6
defenestrate 12

If you need to modify the sequence you are iterating over while inside the loop (for example to duplicate selected items), it is recommended that you first make a copy. Iterating over a sequence does not implicitly make a copy.

Continue reading

Industry Skills for Professional Web Development

Intro to Computer Science

PROJECT Create and Analyze a Social Network
Learn key computer science concepts in this introductory Python course. You’ll learn by doing, and will build your own search engine and social network.

Intro to HTML and CSS

PROJECT Portfolio Mock Up to HTML
Learn how to convert digital design mockups into static web pages and how to build a responsive portfolio site to showcase your work.

JavaScript Basics

PROJECT Interactive Resume
Learn JavaScript syntax and coding conventions that web developers use to create interactive and dynamic websites while you create an online résumé for your portfolio.
Learn to use version control, an important tool for any developer. The course will focus on Git, a specific version control system, and GitHub, a collaboration platform.

Programming Foundations with Python

PROJECT Explore Python to Build Your Own Program
Introductory programming class to learn Object-Oriented Programming, a must-have technique to reuse and share code easily. Learn by making projects that spread happiness!
Relational databases are a powerful tool used throughout the industry. Learn the basics of SQL and how to connect your Python code to a relational database.
Learn the fundamentals of back-end web development by creating your own web application from the ground up using the iterative development process.

Built by Amazon Web Services

Learn to implement the OAuth 2.0 framework to allow users to securely and easily login to your web applications.

Responsive Web Design Fundamentals

PROJECT Hometown Site
Learn and practice strategies for developing websites that look great on every device! Made with Google’s Pete LePage.

Built by Google

Go beyond image tags! Learn how to make images a part of your responsive design workflow.

Built by Google

This course will demystify the browser’s rendering pipeline and make it easy for you to build high performance web apps.

Built by Google

You will learn about challenges of building applications that can serve hundreds of thousands of users, and how you can prepare for them as a developer.

Built by Google

JavaScript Design Patterns NEW

PROJECT Neighborhood Map
Learn the importance of code organization and how to implement it with either vanilla JavaScript or an organizational library or framework.
Learn how to iterate on your web applications with confidence using the red-green-refactor workflow cycle and automated testing frameworks.

Web Development

PROJECT Build Your Own Wiki
Starting from the basics of how the web works, you will learn everything you need to know to build your own blog and scale it to support large numbers of users.

Object-Oriented JavaScript

PROJECT Classic Arcade Game Clone
Build a variety of JavaScript objects and explore how their inheritance models affect your app’s in-memory model. Gain simplicity and modularity in your own code.

Built by Hack Reactor

Learn how you can use HTML5 Canvas to create and modify images or even interactive animations.
Learn how to access and modify the DOM with ease using jQuery!
Learn how to perform asynchronous requests as you build a web app with data from Google Street View, the New York Times and Wikipedia!

Intro to Point & Click App Development

PROJECT Create Your Own Salesforce App
In this short class you’ll build powerful apps without writing code. Great if you’re an aspiring developer or someone who wants to learn what programmers do.

Built by Salesforce

Developing Scalable Apps with Java

PROJECT Build Conference Central app
You will learn about challenges of building applications that can serve hundreds of thousands of users, and how you can prepare for them as a developer.

Built by Google

This is an advanced Computer Networking course that delves into the latest concepts and tools used by the CN industry.

Built by Georgia Institute of Technology

In this course, you’ll learn how to build great mobile web experiences. We’ll cover performance issues on mobile, and how to make use of mobile sensors.

Built by Google

Website Performance Optimization

PROJECT Website Optimization
Learn how browsers convert HTML, CSS and JavaScript into websites while you experiment with Chrome Developer Tools to measure and optimize website speed!

Built by Google

Learn how to build high-performance web games with HTML5. We’ll port industry-standard development techniques to the web and use them to create a game.

Built by Google

How to Get Started with MongoDB?



M101J: MongoDB for Java Developers May 26, 2015 Jul 21, 2015 Introductory REGISTER
M101JS: MongoDB for Node.js Developers May 26, 2015 Jul 21, 2015 Introductory REGISTER
M101N: MongoDB for .NET Developers May 26, 2015 Jul 21, 2015 Introductory REGISTER
M101P: MongoDB for Developers May 26, 2015 Jul 21, 2015 Introductory REGISTER
M102: MongoDB for DBAs May 26, 2015 Jul 21, 2015 Introductory REGISTER
M202: MongoDB Advanced Deployment and Operations May 26, 2015 Jul 21, 2015 Advanced REGISTER
Data Wrangling with MongoDB (Udacity) N/A N/A Intermediate REGISTER



26 May 2015 at 17:00 UTC

14 Jul 2015 at 17:00 UTC



Learn everything you need to know to get started building a MongoDB-based app. This course will go over basic installation, JSON, schema design, querying, insertion of data, indexing and working with the Java driver. In the course, you will build a blogging platform, backed by MongoDB.


  • Duration: 7 weeks
  • Each week we release new video lectures and exercises.
  • Each week requires approximately 3-5 hours of your time, depending on your level of preparation.
  • Your final grade for the course will be comprised of weekly assignments which count for half of your grade and a final exam/project which counts for the other half of your grade.
  • You will receive a certificate of completion at the end of the course if you achieve a 65% or above on graded material.


After completing this course, you should have a good understanding as to how applications are built on top of MongoDB using Java. This course should also prepare you to take the C100DEV: MongoDB Certified Developer, Associate Level exam. Register for next exam session to become a MongoDB Certified Professional.


To take this course you should be familiar with Java. Knowledge of relational databases is not required.


Week 1: Introduction and Overview
Week 2: Creating, Reading and Updating Data (CRUD)
Week 3: Schema Design
Week 4: Performance
Week 5: Aggregation Framework
Week 6: Application Engineering
Week 7: Case Studies


Jeff Yemin

Jeff has been programming with Java for over 15 years since landing a job at Sun Microsystems as a Java consultant and educator. His first experience with MongoDB came while at MTV Networks, where he led a project to create a unified Java-based content management system (CMS) with MongoDB as the underlying data repository. Jeff is now an engineering manager at MongoDB, Inc. and the lead maintainer of the MongoDB Java driver.

Andrew Erlichson

Andrew designs and implements the worldwide education efforts around MongoDB. Prior to MongoDB, Inc., Andrew was CEO and founder of Phanfare, an online photo hosting company, now part of Carbonite. Prior to Carbonite, he was founder and CEO of Flashbase, a web service that offered self-service online database forms and analysis tools. Flashbase was acquired by DoubleClick. At DoubleClick, Andrew was Vice President of Technology for the Research and Development group. He has worked at Mips Computer Systems, Silicon Graphics and BlackRock. Andrew received his A.B. from Dartmouth College and his M.S. and Ph.D. in Electrical Engineering from Stanford University.


What is the cost of an online course?

MongoDB University courses are free.

What do I need to take a course?

You will need access to a computer and YouTube. A recent Windows, Mac OS or Linux based machine will work fine.

What do I receive for completing a course?

You will get a certificate of completion from MongoDB, Inc.

Do I need to be available during a certain hour of the day to watch course videos?

No. Each course is composed of pre-recorded lesson videos you may watch at any time during the run of the course. There are weekly deadlines for assignments.

How does the grading work?

You will receive a final grade but the grade won’t be on your certificate of completion. To receive a certificate of completion, you will need to achieve 65% on graded material. There are three different types of assessments within the course: quizzes, weekly assignments and a final exam/project. Quizzes don’t count toward your grade. Quizzes are intended to help you check your own understanding. The weekly assignments will comprise one half of your grade and the final exam/project one half of your grade. Most assignments will be due on Tuesdays. Each week we will release new video lectures and a new assignments. Unfortunately, due to the large number of students and in the interest of fairness, late assignments cannot be accepted.

Will I be able to get help?

Each course has an active online forum where students can help each other. In addition, the instructor(s), teaching assistants and other MongoDB employees will monitor the forums and try to help. Often the fastest answer comes from another student.

A list of Top 20 Free Data Mining Books

Free data mining books

  1. An Introduction to Statistical Learning: with Applications in R
    Overview of statistical learning based on large datasets of information. The exploratory techniques of the data are discussed using the R programming language.
  2. Modeling With Data
    This book focus some processes to solve analytical problems applied to data. In particular explains you the theory to create tools for exploring big datasets of information.
  3. Big Data, Data Mining, and Machine Learning: Value Creation for Bus…
    On this resource the reality of big data is explored, and its benefits, from the marketing point of view. It also explains how to storage these kind of data and algorithms to process it, based on data mining and machine learning.
  4. Data Mining: Practical Machine Learning Tools and Techniques
    Full of real world situations where machine learning tools are applied, this is a practical book which provides you the knowledge and hability to master the whole process of machine learning.
  5. Machine Learning – Wikipedia Guide
    A great resource provided by Wikipedia assembling a lot of machine learning in a simple, yet very useful and complete guide.
  6. Data Mining and Analysis: Fundamental Concepts and AlgorithmsA great cover of the data mimning exploratory algorithms and machine learning processes. These explanations are complemented by some statistical analysis.
  7. Mining the Social Web: Data Mining Facebook, Twitter, LinkedIn, Goo…
    The exploration of social web data is explained on this book. Data capture from the social media apps, it’s manipulation and the final visualization tools are the focus of this resource.
  8. Probabilistic Programming & Bayesian Methods for Hackers
    A book about bayesian networks that provide capabilities to solve very complex problems. Also discusses programming implementations on the Python language.
  9. Data Mining Techniques: For Marketing, Sales, and Customer Relation…
    A data mining book oriented specifically to marketing and business managent. With great case studies in order to understand how to apply these techniques on the real world.
  10. Inductive Logic Programming Techniques and Applications
    An old book about inductive logic programming with great theoretical and practical information, referencing some important tools.
  11. The Elements of Statistical Learning: Data Mining, Inference, and P…
    This is a conceptual book in terms of data mining and prediction with a statistical point of view. Covers many machine learning subjects too.
  12. An Introduction to Data Science
    An introductory level resource developed by a american university with to objective to provide solid opinions and experience about data sciences.
  13. Mining of Massive Datasets
    The focus of this book is provide the necessary tools and knowledge to manage, manipulate and consume large chunks of information into databases.

You can check the full list here.

Top 10 Skills to get that Web Developer Job




HTML is the first of the big three languages you need to learn to make websites—HTML, CSS and JavaScript. HTML isn’t a programming language per se. It describes how elements on a website should be laid out and provides browsers with a list of all the other files, like CSS and JavaScript, that websites need.

2. CSS

CSS, or Cascading Style Sheets, is responsible for the way a website looks. Colors, fonts, and even some animations are all controlled by CSS. Like HTML, CSS isn’t a programming language. It’s a text document that reads like an interior designer’s instructions for making a website look great.

3. JavaScript

JavaScript is the only one that’s an actual programming language. JavaScript controls interactions on a website. For a simple, static website, you won’t need to use much JavaScript. But for a dynamic web app you’ll need an in-depth understanding of the language.

  • Syntax: The general rules defining how a language is typed
  • Data types: The different types of variables the language supports (for example, strings and integers)
  • Functions: A block of code designed to perform a particular task
  • Object Literals: Everything in JavaScript is an object but writing your own object literals can simplify your code
  • Object-Oriented Programming: JavaScript provides a number of ways to implement object-oriented programming including functional, prototypal and pseudoclassical
  • Design Patterns: A design pattern is a reusable solution to a commonly occurring problem
  • AJAX: AJAX provides the ability to asynchronously request data from a web server without requiring a page reload
  • j Query: jQuery is an extremely popular library that makes cross-browser DOM traversal and manipulation, event handling and AJAX much simpler

4. Responsive Web Design

Open a website and make your browser smaller. Did the page content change its layout to fit the new screen? That’s responsive design. People expect modern websites to look great on their phones, tablets and laptops. By diving into responsive design principles, you’ll learn how to make websites that scale and adjust themselves to offer amazing experiences regardless of the device.

  • @ media queries: Media queries let the presentation of content be tailored to a specific range of output devices without having to change the content itself
  • Relative sizing units: CSS provides many other units of measurement than
    just pixels (px), such as em, rem, vw, vh and vmin

5. CSS Frameworks

Bootstrap is a good example of a CSS framework. Frameworks make it easy to structure and build websites. They provide custom CSS classes that simplify laying out content and ensure that your content looks great no matter the device. Frameworks can help you follow industry best practices and modern design principles.

  • Bootstrap: Bootstrap is a CSS framework, originally developed at Twitter, that makes creating responsive designs much simpler.
  • Foundation: Foundation is another CSS framework, developed by Zurb, that
    also makes creating responsive designs easier

6. JavaScript Libraries and Frameworks

JavaScript libraries and frameworks make it easier to write your web application by enforcing various best practices and, often, an organizational pattern for the various files you’ll be working with. They also address the majority of crossbrowser compatibility issues you may experience and include various performance optimizations. Examples are AngularJS, EmberJS and KnockoutJS.

  • AngularJS: features two-way data binding and allows you to extend HTML
    vocabulary to create front-end web applications
  • EmberJS: removes the need for boilerplate code through the use of strict file and object naming conventions
  • KnockoutJS: makes creating data-driven applications easier through its
    declarative binding system

7. Version Control

With complex projects, how do you maintain your code? Version control software like Git helps software developers around the world save and maintain their code, even as projects grow to hundreds of developers and dozens of subprojects.

  • Git: Git is a distributed version control system
  • GitHub: GitHub is a web-based hosting service for Git repositories that offers a number of other features to support collaboration between developers forking pull requests

8. Web Performance

Once you’ve made your website, how will you ensure it’s fast? By understanding a few simple principles of browser rendering, you’ll be able to make sure that you deliver fast, efficient websites to your users.

  • Critical rendering path: The critical rendering path is the process that browsers use to transform your HTML, CSS and JavaScript into actual pixels that are sent to the user’s screen
  • Image optimization: Image optimization is the process of using proper image types for the content of the image as well as removing the extra metadata within an image file
  • JavaScript minification: JavaScript minification is the process of removing
    unnecessary characters from your JavaScript files to reduce their filesize

9. Browser Developer Tools

In building your web applications you are destined to experience bugs in your code, performance issues, or quirks in how your pages are rendered by the browser. The only way to fix these issues is to understand how the browser is actually interpreting your code. Browser developer tools provide all the nitty-gritty details and are your window “under the hood” to test, measure and iterate on your code.

  • E lement inspecting: The elements panel lets you see everything in one DOM tree and allows inspection and on-the-fly editing of DOM elements
  • Network: The network panel records information about each network operation in your application
  • Timeline: The timeline panel lets you record and analyze all the activity in your application as it runs
  • Application profiling: The profiling panel lets you observe the memory usage of your application as it runs
  • Resources: The resources panel lets you inspect resources that are loaded into your application

10. Building and Automation Tools

There’s a lot more to building a web application than just writing code! You have to run test suites, optimize images, adhere to your organization’s code style guides and even prepare your code for deployment on a production server. That’s a lot of extra, repetitive, and often mundane work to be done. Building and Automation Tools like Grunt and Gulp can handle running all of these tasks for you in the background so you can focus on building a great web application.

  • npm: npm is the default package manager for Node.js, which is the framework that most build and automation tools are written in
  • Grunt: Grunt is a task-based command line build tool that interacts with files on your hard disk
  • Gulp: Gulp is a program-based command line build tool reads files on your
    hard disk, then interacts with those files as streams
  • Bower: Bower is a package manager for HTML, CSS and JavaScript libraries that allows you to define, version and retrieve your dependencies
  • Yeoman: Yeoman is a scaffolding application that will automatically generate boilerplate code for a variety of applications based on the frameworks and libraries you define

11. Testing

As your application becomes more complex it become quite easy to introduce bugs or completely break existing functionality. Unit, integration and behavior testing are excellent ways to ensure that you don’t break your application when you are adding new features. Examples of excellent testing frameworks include Mocha and Jasmine.

  • Mocha: Mocha is a JavaScript testing framework that runs in Node.js and the browser making asynchronous testing simple
  • Jasmine: Jasmine is an open source, behavior-driven testing framework for

Get every new post delivered to your Inbox.