I wrote this example to show how can we program clients to Go JSON RPC servers based on the `net/rpc/jsonrpc` standard package.
Recent Updates
Programming CUDA Using Go
This example on Github shows how to programming CUDA using Go.
Build Go Programs for Raspberry Pi
I tend to do cross compiling with Go >=1.5, so I don’t have to build Go on Raspberry Pi, which is slow.
GOOS=linux GOARCH=arm GOARM=6 go build -a
Please remember to use -a to avoid cached built packages.
Also, please remember to set the correct GOARM version. To get the ARM version, you can run
cat /proc/cpuinfo
On my Raspberry Pi, it outputs
yi@raspberrypi:~ $ cat /proc/cpuinfo processor : 0 model name : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 2.00 Features : half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 000e Serial : 00000000cd23b897
The line model name : ARMv6-compatible processor rev 7 (v6l) tells that it is ARMv6, so I set GOARM=6.
Writing MPI Programs in Go
Raspberry Pi and Arduino
I program and control an Arduino UNO R3 from a Raspberry Pi using C instead of the Processing language.
Development Tools
The official Arduino IDE is Java-based and runs out of my 16GB SD card with Raspbian pre-installed. So I turned to use avr-gcc, which requires me to program using C, instead of the Processing language supported by Arduino IDE. But I like C as it allows me to accurately control my Arduino. To install required development tools:
sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude
A Sample Program
An example program named blink.c can be found in this Wikipage. It simply blinks the LED on Arduino board.
I use the Makefile downloaded from here. I only need to edit the first two lines of this Makefile and specify my program name.
Upload Binary
Above Wikipage shows how to use dmesg to identify the Unix device used to connect Arduino. In my case where I use a USB hub, the device is /dev/ttyACM0. The we use the following command line to upload the program:
avrdude -v -v -v -v -carduino -patmega328 -P/dev/ttyACM0 -U flash:w:blink.hex
Live Demo
I recorded this Youtube video to show you how this works. In the video, you can see the LED on my Arduino blinks.
Connectionist Temporal Classification: A Tutorial with Gritty Details
I maintain this tutorial in Markdown format usingĀ theĀ Github repository. Here is the PDF version.
Install Python and NumPy on Mac OS X
I installed Python using Homebrew:
brew install python brew tap Homebrew/python brew install numpy