This resource explains how to install Raspbian operating system and setup a Raspberry Pi. You will need another computer with an SD (or MicroSD) card reader to install the image. Install Raspbian Download the Image Raspbian is the Raspberry Foundation’s official supported operating system and can be download from Raspberry Pi website Downloads page. After downloading the .zip file, unzip it to get the image file (.img) for writing to your SD card. And you can write this image to SD card with the help of Win32 Disk Imager in Windows. Setup for HDMI Output Once the write is complete, edit config.txt in boot partition as following for HDMI output. Once you’ve steps above, place the SD card into your Raspberry…

## Internet Protocol v6

Internet Protocol version 6 (IPv6) is the most recent version of the Internet Protocol (IP) which was developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion. IPv6 is intended to replace IPv4. IPv6 uses a 128-bit address, theoretically allowing 2128, or approximately 3.4×1038 addresses. The actual number is slightly smaller, as multiple ranges are reserved for special use or completely excluded from use. The total number of possible IPv6 address is more than 7.9×1028 times as many as IPv4, which uses 32-bit addresses and provides approximately 4.3 billion addresses. The two protocols are not designed to be interoperable, complicating the transition to IPv6. However, several IPv6 transition mechanisms have been devised to…

Introduction This tutorial is a HowTo for setting up IPv6 NAT on OpenWRT router. The information of the environment is listed below. Network Environment: China Education and Research Network Center with dual stack IPv6 Network Device: NETGEAR R6100 (128M RAM) Firmware Version: OpenWrt Chaos Calmer 15.05 Install Dependencies for OpenWRT Login to OpenWRT router via SSH and run following commands: Setup IPv6 for Local-area Network Edit /etc/config/network, and add following lines in config interface 'lan': Remove following lines if exists: Edit /etc/config/dhcp, and change the content in  config dhcp 'lan' as follows: Setup Gateway for IPv6 Network Add following lines to /etc/firewall.user for forwarding IPv6 traffic: Setup up IPv6 gateway by creating file in /etc/hotplug.d/iface/90-ipv6 and adding following lines to the file: Then, add execute permission to…

Introduction Note: This guide was tested using Ubuntu Server 14.04.4 LTS. This is a HowTo for setting up Upside-Down-Ternet on Ubuntu. Basically, when a user browses the web, all the images are flipped upside-down. While it's not useful, it's quite a good April Fool's prank. The process uses a transparent proxy, web server, and script to flip the images. Web traffic is routed to the proxy, instead of the default gateway, which is intercepted by the proxy which then downloads and modifies the images and then serves them back to the client browser. Setting up the Proxy The proxy used in this guide is Squid v3.3.8. The IP of this server is 192.168.113.253. Installation Configuration Edit the configuration file located in…

Git is cryptographically secure, but it’s not foolproof. If you’re taking work from others on the internet and want to verify that commits are actually from a trusted source, Git has a few ways to sign and verify work using GPG. Introduction to GPG First of all, if you want to sign anything you need to get GPG configured and your personal key installed. If you don’t have a key installed, you can generate one with gpg --gen-key. Once you have a private key to sign with, you can configure Git to use it for signing things by setting the user.signingkey config setting. Now Git will use your key by default to sign tags and commits if you want. Add…

## Random Projection

Introduction In mathematics and statistics, random projection is a technique used to reduce the dimensionality of a set of points which lie in Euclidean space. Random projection methods are powerful methods known for their simplicity and less erroneous output compared with other methods. According to experimental results, random projection preserve distances well, but empirical results are sparse. Consider a problem as follows: We have a set of n points in a high-dimensional Euclidean space $\mathbf{R}^d$. We want to project the points onto a space of low dimension $\mathbf{R}^k$ in such a way that pairwise distances of the points are approximately the same as before. Formally, we are looking for a map f:$\mathbf{R}^d\rightarrow\mathbf{R}^k$ such that for any pair of original points u,v,$\|f(u)-f(v)\|$