This isn't my resume! I'm going to concentrate on projects I've done and the type of work I'm interested in. Unfortunately I can't go into a lot of details on specifics so I will be talking in more detail about older and non-work projects and talking about the technologies I've worked with in less detail. I will talk about leadership, project organization, and teamwork.
This isn't just one project or one programming language. Much of my work in the past 10 years has been in network automation. Sometimes this involves an end user to trigger an event based on shifting needs. Other times it has been to react to events. Automation I've created has been for both system test purposes and live network deployments.
NetBox (now Nautobot) has basic API integrations with Ansible, but some of the work I've done involved cookie-cutter deployments and design. This meant my work with NetBox was more complicated than easily implemented in Ansible. I built a python library to both create our templated configuration and to retrieve a full site's information from NetBox. I also created an Ansible plugin to initiate our template build, given a few parameters as well as an inventory plugin to create automated inventories using information gathered from Netbox.
I often work with Ansible and have set up a standard process with my team to build network automation using a mix of NETCONF/YANG and CLI. Although I am experienced in software, not all of my team was. This made Ansible a good platform for the team with those of us experienced in python providing any features that went beyond using Ansible on its own. I also ran a weekly Python working session to help improve the abilities of all members of our team.
An older project I worked on involved remote sites requiring reconfiguration in response to triggered events. Working with a small development team we created a Java application to interface to and modify the local router and securely request the remote router to make Quality of Service (QoS) changes. I wrote the remote router automation in Tcl.
At my new position I have strong interest in and am looking forward to developing a YANG data model for my networks in order to programmatically deploy configurations and fully automate that process. The benefits of YANG with RESTCONF and/or gNMI is that the automation platform can include performance statistics in the overall data model. This opens up very interesting possibilities in modern automation of on-premise, cloud, and hybrid networks.
Although this is something of a new field for me, my experience with networks and cybersecurity and my ability to attack troubleshooting problems head-on is something that draws me to the field of DesSecOps. This is an area of interest for me and I can personally attest that my interest, once piqued, does not waver until I've mastered the skills involved. Expect more on this here in the future.
DevNetOps is also a new concept, but one I feel I've embodied for most of my career. This concept centers around the need for network engineering and software engineering to meet as part of an integrated team.
1. Tamayo, T. E. (2011). A modular, visual simulator of underwater sensor networks.
Now I have two citations of my work! This was published under an old name. While all documentation of this thesis has long since been updated, the published versions include that name. Don't worry about that; I don't.
My graduate degree was a part time degree from 2007-2011 sponsored by my employer and included evening and midday classes in various engineering disciplines. The program was designed to target Distributed Networked Systems in a cross-discipline Ocean Engineering based Center of Excellence.
It's not just learning new things that I love, it's the projects I do along the way.
My learning was filled with projects. I learned to apply linear algebra in MATLAB to collected data from ocean sensors to track information with error, the fundamental physics of underwater acoustics, researched the domain of Distributed Systems in Computer Science, and learned the chip level basics of switching technologies in Electrical Engineering. Each of these involved writing software in MATLAB, C#, and Python to solve problems quickly.
When you develop a major piece of software as part of a graduate degree, the thesis writes itself.
The software doesn't. We moved from functional programming into object oriented .NET programming. Writing a network simulator was well aimed at object oriented design. The entire project involves tracking stateful events that occur as network messages are sent between nodes.
Every major component could be replaced during run time via compiled DLL's. This allowed a new protocol to be dropped in; it just needed to follow the interface format I specified. It also allowed different physical models to be used, important for SONAR.
An example of my simulator playback
Protocol simulation is essential for the development of new protocols and to evaluate existing protocols. Other simulators available either did not have a visualization component or did not support acoustic protocols. Because of the very slow speed of acoustics, with my software you could view a simulation run in real time.
It was not a real time simulation. The physical models of Underwater Acoustics can take a very long time to run. Instead, the simulator recorded each event and added both simulation events and playback events to a priority queue (a time based queue).
It was a fun project and probably one of the biggest magnitude that I completed by myself.
I've worked using some variation of the Agile process throughout my career. Early on, at Lucent Technologies, I was a System Test & Integration Engineer. Although "Agile" wasn't a specific concept then, many of the Agile processes go back to the early days of software development. Our team would receive software, integrate it into the Lucent Softswitch system (a failed concept to save their 5ESS telephone switch in the internet age) and ensure it passed all the basic tests before we accepted it into System Test. These builds were weekly and each would easily be considered a sprint today.
More recently, I've set up a Jira instance for our project and manage our workflows and views. I break down larger tasks into their smaller components and arrange to work on my tasks. One of the hardest parts about managing this is getting everyone on board to use it.
My prior experience with Agile has been an implicit acceptance of some of its tenets without explicitly moving to Agile based development. Before leaving NUWC, I began working on a new project. I cannot go into technical detail, but our goal is to have a working CI/CD DevSecOps development model that can transition to a CI/CD DevOps deployment model. I was a component lead for this project, but left the organization before the multi-year planned project had gone too far.
One of the biggest challenges we face is overcoming Waterfall embedded organization models to implement Agile models, with the understanding that CI/CD of software is new ground that can be difficult to accept by leadership used to separated development and test cycles.