Today I attended my first ever hack, set up by our good friends in the neteng team in Facebook Dublin. And it was great geeky fun, very well organized, 10/10 will hack again!
Being a one day affair, there was a fair bit of prep work done beforehand, with a nice long list of ideas ready to go for Saturday morning's post-breakfast 10am start. This and letting people self-organize turned out to be a perfect match for the netengs in attendance, as we had 4 teams quickly get together and start hacking after the kick-off with not much wasted time.
Among things worked on, we had yact (yet another cli tool), a command line script that pulls information from network devices based on an inventory, stores it as structured data and presents it in various formats (tabulated text, markdown and html). Heavily used an awesome library called NAPALM and as a bonus I learned a bit about the validation functionality it offers which I already have some use cases for.
An automatic remediation tool was another very interesting hack, what they did was listen for syslog messages coming from devices and build a rather fancy message queue system around it to react to bad stuff happening with an action and alert.
The dynamic mapping effort took a traffic engineering enabled topology, yanked its link state database via BGP-LS and OpenDaylight then built an API driven SPF engine that would calculate the shortest path between two nodes based on a given constraint (available bandwidth in this case). Very cool.
Network troubleshooting saw some love with a python script that had some pre-built tests and, if they failed, gathered data from relevant devices (interface status, OSPF neighbors, routing) to assist the engineer find and fix the problem. Impressive effort given the hacker had no previous python knowledge.
The idea that I originally suggested then abandoned on the day for other temptations actually saw some love from Donal (and a funky website to boot) - I called it Pocket-Internet and it's pretty much meant to be an infinitely scalable teaching tool for BGP and automation, done with as much virtualization as possible to simulate a big mesh of ISP-style PODs.
After about 8-9 hours of crazy work, the gang assembled to demo what they've been working on. Proof that code quality was top notch is that most problems came from laptop video output connectors and font sizes.
"Did you plug the black thing in the white thing?" "Yes, I'm trained now. I can also make your font bigger."
So said our senior (or shall I say señor) experienced font-embiggener Jose.
When questioned about code quality and unit tests by one of the audience members, the presenters promptly shared what's widely accepted as the industry best practice:
"Do you have unit tests?" "No, we will sell it first, then get paid to fix the problems."
I really wanted to win that viking helm. Turns out it wasn't in the raffle and I wouldn't be allowed to smuggle it out of the building either. Oh well.
Major thanks to Brendan, Jose and the other support staff who made it such a nice and comfy experience! We also had some really slick remote lab infrastructure provided by network.toCode(), with plenty of vEOS and vMX machines to run our scripts against.
I met a bunch of great people yesterday, saw some neat ideas take shape (which I'd love to see get more development in the future)... which means the big question is: when's the next one?
And, as always, thanks for reading.