Google Summer of Code 2013 - The Freenet Project

Working for open-source organization, The Freenet Project which aims to build a decentralized, anonymous and secure alternative to internet while being censorship resistant. This evoled from the idea of freedom of communication. It achieves this by decentralizing the content(freesites - websites over freenet,files,flogs - blogs over freenet etc.) and thus making the source of information irrelevant.

An important mode of freenet is darknet where a node only connects to a peer, if either a) the owner of the node knows and trusts the peer or b) if some existing friend or friend of friend or ... knows and trusts this peer. This builds a web of trust and provides more security when compared to its sister mode - opennet. You can read more about this project and probably contribute to it in your free time if you subscribe to the ideas of free speech, anti-NSA, anti-snooping sentiments etc.

My contribution to the project is to provide an easy and secure way to exchange darknet node-references with trusted peers. This involves publicizing the node on local network by repeated multicast DNS packets (signed) which is received by a previously paired smartphone. The phone receives this packet and authenticates the node based on the SSL certificate presented. Then it downloads the node reference. This can be exchanged with a peer using our android application by Bluetooth, Wi-Fi Direct or NFC

Throughout the project, I've received valuable advice from nextgens - my mentor, toad_ - the chief developer and a lot of others on IRC.

Codebase: Fred Extension, MDNS Plugin Extension, Android App

More Info: Final Report,The Freenet Project, Official Freenet IRC channel: #freenet on

Robert Bosch Engineering and Business Solutions Ltd.

This project involved building a robot that can avoid obstacles, detect a target and pick it up.

A raspberry pi along with a USB Wi-Fi adapter is used for communication. The user communicates with the server using his android application. This command is sent to the robot through the home internet connection. An alternative has also been implemented which involves attaching a GSM module to pi and receiving SMS based commands.

The raspberry pi then processes this command and activates its camera module (monocular vision - no depth sensor involved). It captures an image and detects the floor right ahead of it by Noise removal followed by Canny followed by heuristics. Subsequently, it detects the object and plans a path towards it by BFS. It then proceeds towards the object before it is interrupted by next iteration.

One notable accomplishment through the course of this project is the ability to be able to find distances without using a depth sensor. This was done by taking advantage of the regularity in the size of tiles on the floor. A tile far away from the camera will look substantially smaller than a tile right ahead of robot. But we know all tiles are of same dimensions. This reduction in size of tile gives a sense of depth in a 2D image.

No photos or algorithms can be shared because of the privacy policy :/