Check him out at https://twitter.com/runhedgie
This project is a combination of hardware and software. I'm using a Raspberry Pi, a custom-built wireless node based on Arduino, Python, Redis, and a Go API for data analysis. I wanted to build almost everything from scratch, to really see what's happening in every part of the system, so I've done from PCB design and soldering to struggling with Go HTTP routers (I gave up and used Gorilla).
But it's been fun watching the hedgehog interact with the real world.
Any particular reason you're intermixing Go and Python? For something like this I imagine Python alone would be more than suitable. And if you just wanted to mess with Go and learn it, then you probably could've used Go for the whole thing.
I wanted two things from this project: get it up and running as quickly as possible and learn Go. That's why I programmed an MVP in Python while I finished the backend in Go. I figured that if I waited for the Go code to be finished I may have never shipped it.
I'm still going to use Python for the raspberry Pi, since I don't know any serial port libraries for Golang (well, a quick google search shows me an option: https://code.google.com/p/goserial/) and anyways that part is already working fine.
But if I find the time then yeah, I'd totally rewrite it entirely in Go. But there's many things I'd do before that:
- Live streaming with a Pi NoIR camera (WebRTC + a paid CDN I guess).
- Visualization and data analysis. I'm thinking github-style punchcard for the running activity, and when you click a day you can analyse the minute-by-minute laps.
- Correlation with other sensors. I have temperature, humidity, and ambient light sensors, which could be use to correlate the activity or even predict it.
- Public API.
You're not the first person to tell me that. They always tell me they're kidding, but I guess there's some truth to it :) . Please, could you elaborate on your thoughts?
When Antu came home we had an open space for him, where he could run somehow freely. Then winter came and we had to bring him inside our apartment. After a while, I built a wheel for him (not the same one as he has now) and he ran like crazy. Now when we put him in the open space he prefers to run on the wheel. I always wonder if he really enjoys it or we just messed him up. It seems that it is the former: