expansive libraries • Plenty of open and free APIs Why This is Easier Than it’s Ever Been Cheap Computing • VPS providers offer cheap, easy-to-use Linux servers • Raspberry Pi/other SBCs Pre-built Frontends • Chat bots make for easy interfaces • Lots of web tools (wikis, dashboards like Kibana, etc.)
• Where will you put the measured bandwidth? ◦ Storing lots of numbers (timeseries data) is its own can of worms ◦ tl;dr whatever works for you graphite, ganglia, elasticsearch, kairosdb, influxdb, prometheus, hawkular, etc….
• How will you view your bandwidth? ◦ Largely dependent on where you store your bandwidth ◦ Tried and true solutions like Kibana/Grafana are good options
some plumbing: from pyspeedtest import SpeedTest from elasticsearch import Elasticsearch tester = SpeedTest() es = Elasticsearch() while sleep(900): es.index(index=’bw’, type=’bw’, body={‘down’:tester.download()})
interface for anything you can come up with: require 'slack-ruby-bot' class MyBot < SlackRubyBot::Bot command ‘day’ do |client, data, match| client.say(text: Time.now.strftime('%A'), channel: data.channel) end end MyBot.run
Insert DVD, remove DVD after ~1 hour ◦ Media handling is another system (NAS + Kodi) • In total, maybe 50 lines of code and config files ◦ Just shell scripts + systemd configs • Custom format, compression, subtitles, etc. • Event flow is easy to grok with systemd
high-level languages with powerful libraries • Run it on Linux? ◦ Easy scheduling ◦ Cheap servers ◦ Strongest tooling Considerations: • What do I use? • How do I write it? • Where do I run it?
command line) • At least an editor (vim/emacs/atom) • IDEs can be extra helpful (PyCharm/Rubymine/ Eclipse/etc.) Considerations: • What do I use? • How do I write it? • Where do I run it?
write it? • Where do I run it? • One time? ◦ Just run it locally • All the time? ◦ Any computer that runs all the time • All-in? ◦ Little Linux server ◦ (this is easier and safer than you think) ◦ Or, just buy a VPS • Self-hosting is now sub-$25
Get started with a tutorial about $x • Looking for something to solve? ◦ Pick something annoying • Can’t figure out how to solve it? ◦ Lucky you, you’re at SELF • Solved something cool? ◦ Blog about it and tell us!