# Graph Theory in Javascript

I’ve been a speaker to a London Algorithms Meetup and the subject was Graph Theory.

Here there is the link to the repository: https://github.com/LondonAlgorithms/graph_theory with the javascript code.

I have created a pairing exercise with specs to guide through the creation of an undirect Graph by using an adjacency list. After all the vertices and edges have been added to the Graph, the exercise requires to visit a Graph with a Breadth First Search Algorithm. In the repo I have written some Javascript tests to follow during the code development. You can run tests by opening SpecRunner.html.

In the repo there are two branches: master and solution.
As you might expect, solution branch contains the complete javascript code.

After a brief introduction to what is a Graph and which are the use cases, I’ve explained how to build a graph with an Adjacency List and then I’ve shown which are the Graph Traversal Algorithms: Depth First Search and Breadth First Search.

## What is a Graph

Graph is a non linear data structure, it contains a set of points known as nodes (or vertices) and set of linkes known as edges (or Arcs) which connects the vertices.

# An agile coding game for your engineering team: Extreme Carpaccio

On the 11th of January, I attended to a London meetup organized by London Software Crafsmanship and hosted by Pivotal (office based in Old Street).

After reading the meetup title, I decided to attend. The meetup title was “Hands-on Session: Extreme Carpaccio: slice thin, code fast“.

• Let’s say that I’m a foodie, then I’m Italian and finally a passionate software engineer.
• Let’s say that Carpaccio is a typical dish based on raw fish and meat thinly sliced and served as starter or appetizer.
• Let’s say that the meat Carpaccio is typical from Piedmont, that is the region where I come from.
• Let’s say that I’m interested to improve my agile software developments skills using extreme programming.

This was the perfect occasion!

## What is Extreme Carpaccio?

Extreme Carpaccio is a coding game in which teams should slice a given problem and then implement the solution based on their slicing strategy. During an Extreme Carpaccio session a server sends requests to participant’s laptops. Participants should then implement their solution following their slicing strategy in order to satisfy the server.

# An Introduction about Ember JS

Yesterday I’ve done a presentation about front-end development with javascript and I’ve introduced the Ember JS framework.

It was an amazing evening, I really enjoyed it! Thank you Geek Girls Carrot UK for organizing this event.

Geek Girls Carrots is an organisation that promotes women in IT industry and tries to encourage more females to think about career in tech.

# Business Intelligence: decision making with a decision tree

Are you looking for a needle in a haystack?

Data mining allows to explore and analyze a wide quantity of data stored in a database with the goal to extract precious and unknown informations which are implied on data and they might be useful for making strategic decisions.

Data mining techniques are used to discover correlations between data (assosacition rules), to create classifier for predicting a variable’s value (decision tree, neural networks) or to organize unknown data in groups with similar features (clustering).

# How to create a single page app with AngularJS thanks to the help of Yeoman

Yeoman (http://yeoman.io/) is an awesome tool that helps you to easily scaffolding a web application using best practice; in short words with yeoman you get rid doing manual configuration and set up of a project from the scratch.

Yeoman has a bunch of generators, for instance there is a generator for creating an angularJS app, an other one for creating a backbone app and so on. You can find a complete list of the generators on this link: http://yeoman.io/generators/official.html

In this small tutorial we are going to use the yeoman angular generator for generating all the boilerplate that a developer needs to get started with an angular app. You can find more informations about the angular generator at the following link: https://github.com/yeoman/generator-angular.
Continue reading “How to create a single page app with AngularJS thanks to the help of Yeoman”

# An introduction to AngularJS

If you wanna talk about AngularJS you’ve to explain the concept of: Directive, Controller, Expressions, Two way Data Biding and Modules.

AngularJS is a javascript framework maintaned by Google who helps developer to build awesome Single Page App. It is born especially to build web app after a user has logged in, so for all the apps that doesn’t need to be indexed by search engines likes CRM, ERP, Social Network and so on. You can compare angular as a new HTML compiler which allows you to create your own domain specific language in HTML, by attaching your own behavior to any HTML element, attribute or text. In AngularJS the term “compile the HTML” means attaching event listeners to the HTML to make it interactive. It follows a declarative approach in order to infer behaviour on your html page.

# Test Driven Development with Javascript

## Why should I write Test before Source Code?

Writing Tests is not only a technique to validate your code. Tests give you the specifications of how the code should behave. Writing tests before source code implies that you must know exactly the detailed behavior of your code, as observed from outside the code itself. This is the basic idea of Test Driven Development.

Wikipedia gives us this definition:

Test driven development is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initial failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.

# An introduction to Backbone

Thanks to the large diffusions of mobile devices such as tablet and smartphone, nowadays when a developer has to create a web application, the first requirement he has to satisfy is designing a web applications that can be delivered via a desktop browser or a mobile device (iPhone App, Android App and so on).
The first question a developer has to answer is: how to organize the code between server and client side?

If the client side is rendered completly from server side code, the developer has to write different code for each device. So it could be complicated. A better approach is writing the server side code in a manner that it just returns a jSON response with all data of the application; then the client side javascript library will read and process this jSON response in order to create the required DOM elements. With this approach, the developer can use same server code for any device and when the developer make changes on the client side, the server side code does not need to change.