Apprenticeship Week 6

What I’m Learning

This week I had the opportunity of working with various individuals that really expanded a few technical aspects of my life. I was included in a few meetings at NREL in which the main discussion was purchase orders for new equipment and ATO (authority to operate) procedures. This was especially eye-opening because it broadened my view on how important proposals and documentation is when investing time and monetary resources. There are multiple groups working on implementing these new systems over a huge time span, so that’s pretty interesting to see.

On a more technical note, I really immersed myself in the world of dev-ops and end-to-end communication between software stacks. I challenged myself to create a visual representation of one computer pinging another over the network in real-time. Initially, the task seems straight forward and simple, but to have an effective representation of the process takes a bit of technical prowess to complete.

Creating An End-to-End Packet Capture Visualization

I started with a simple TShark network sniffer that listened to all ICMP traffic on my local network. I then dumped all incoming packets into a file. I built a quick bash script that listened for any changes to the packets file so that – using zeromq – I could bind a publisher to a socket and send packet information every time a new packet was received. Using javascript, I configured a zeromq subscriber on the same socket and created a ping event every time the packet was received. I’m still working on the javascript visuals, but at least the hard part was accomplished.

One cool javascript framework that I started playing around with, specifically for visuals, is 3js which is a utility used for simplifying the WebGL framework. Using 3js, I’ve been able to make 3D models in javascript that are interactive and very visually appealing. It even works nicely inside of a React component which is essential for making modern web-applications.

Value Creation

In addition to my various web-dev projects, I’ve engulfed myself in intrusion detection systems (IDS). The main system that I’ve been using is formally known as Bro, but more recently referred to as Zeek. I won’t go too far into detail, however, the main object that I’ve been slaving over for weeks is creating special rules that will filter VERY specific values – not a fun time. Nonetheless, I’m hoping that this seemingly impossible task will lead to a pretty cool publication by the end of my summer internship.

Other than that, I have – of course – been super involved with developing my React web application which is coming along quite nicely. The primary improvements include Heroku deployment, better CSS styling, and cool Material-ui add-ons.

Overall, It’s been a decently productive week. I honestly can’t wait for that juicy paycheck on Friday! Stay tuned for more exciting things to come!