Apprenticeship Week 8 & 9

Yep… I missed a week. Anxiety hits hard, man. Anyway, here’s the skinny on the past few weeks.

NREL

Frustration. That’s all I can say. I reached a point where I technically should have been a few weeks ago and the build up was frustrating in every sense of the word. Nonetheless, I’ve managed to fine tune my IDS to work in cooperation with my networking environment which will allow me to get the logs that I need. I’ve started documentation for the hopefully forthcoming publication that my cohort and I will be submitting to in the next few weeks. If all goes well, we should have a decent publication submitted to IEEE and a few other conferences for review.

Side note, my internship has been extended for a year’s worth of exciting research in the field of cyber security in power grid systems!

SDS

Development has slowed down a bit for the web application just with everything happening lately. I was, however, able to nail down a few key formatting things that should drastically help me with future page development. Formatting for cross browser and mobile compatible functionality is the suck, to say the least.

It’s been exciting developing in React, though, and to play around with all of the incredible transition libraries is a ton of fun. It’s been a great opportunity working directly with a business’ needs and forming code around it.

Random

If you’re looking for a cool party-trick like programming language, ThreeJS is an incredible graphical java script framework that makes 3D objects super easy to display and interact with. For a quick little example, I made a globe and hosted it on Heroku for others to see. Feel free to play around with it!

Link: https://stormy-gorge-83575.herokuapp.com/
Controls:

R: Reset Globe Orientation
Mouse Drag: Spin globe around
Double Click: Zoom into globe

Let me know what you think!

Apprenticeship Week 7

NREL:

This last week concluded a radical amount of IDS script creation, as well as presentations. I’ve been designing a special tool-set that creates a link between intrusion detection systems and machine learning; a feat that is becoming increasingly more difficult with each iteration.

On another – more colorful – note, I’ve continued my work with Threejs which is an incredible framework for building 3D graphical objects in Javascript. So far I’ve created a globe in space that has moving clouds, textured mountains, and rotates around it’s axis!

SDS:

This week concludes a heavy focus on backend development. I started with building a few API endpoints for both clients and employees that then developed into user authentication with MongoDB supporting the databased users. The users were created by utilizing MongoDB’s document schema to format the name, email, user type (client or employee), and password. The password is salted and hashed using bcrypt, then stored in the user’s databased index. The token generated for navigating secured routes is JWT based. These tokens are passed between frontend and backend to ensure each server request maintains integrity and security.

Praxis Takeaways:

The main thing that I took away from the Praxis discussion this past week was the importance of flat businesses, but only to an extent. My NREL job has been an incredible experience that has offered me with more freedom than any of my previous jobs despite the extremely demanding atmosphere. The only reason that this was made possible, and why companies such as Google become so prosperous, is because of the flat business model within sub-layers of the organization. This is because each layer of NREL presents a highly cooperative environment that motivates individuals to work with other people in the same field. Nevertheless, there is a necessary accountability that these individuals have when reporting to higher-ups.

Let me know if you agree/disagree with my takeaways! Also, if you have any insight into the topics discussed above, I’m always open to suggestions.

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!

Apprenticeship Week 5

This was hands down one the most insane work weeks of my life. Here’s what went down.

Evan’s Quick Weekly Reflection

I have officially started both my internships totaling 60+ hours a week. I
love the long work weeks, so I’m no stranger to the constant hustle. Despite
the somewhat heavy workload that I’ve endured, I’ve never felt better in my life; I’m working on things that I thoroughly enjoy and I’m getting paid for it!

As mentioned before, one of my positions is web development for a small LLC under the name of Self Directing Systems. The newest addition to my career path is a research opportunity at the Nation Renewable Energy Lab (NREL). My emphasis is working with hybrid cyber security systems that detect both cyber and power grid attacks using AI. I’m unsure of how in-depth I can go when discussing my work at NREL, so I’ll have to keep a few technical pieces out of the picture.

Optimally, my position at NREL will result in a research publication which would be huge for me at the age of 18. It’s already an incredible opportunity working in an office filled with more Ph.Ds than I can count. I’m literally working my dream job before starting college. I’m Just gotta keep thanking the big man upstairs!

Weekly Progress

I had a very productive meeting with my manager that established the overall expectations regarding the structure of my web application. There were a few specifics, such as an ‘About us’ page and a few portals for clients and employees, but the rest was up to me. So continuing on my software development journey, I was able to accomplished a very daunting task: graphical creativity. For some gosh-darned reason, I just lack the creativity trait, so getting this far has been a wonderful milestone for me.

With that being said, I completed an initial rough draft for the website landing page that sends users to their respective login portals. In doing so, I utilized React libraries such as Reactstrap (bootstrap for react), React Motion, and lots of CSS to create a visually appealing user interface (at least I think I did). I also focused heavily on mobile device compatibility because no one likes proprietary desktop web apps.

Soon, I’ll be jumping into a very technical aspect of the application regarding application states and storing data across React components. The framework of choice is Redux which stores a state object that cannot be directly modified, only cloned and changed. The overall process is simple to conceptualize, but there are a few boiler-plate processes that make it confusing at times.

Anyway… here is a quick snapshot of the landing page!

There are a few animations here and there, but this is the overall aesthetic of the application. Let me know what you think!

Apprenticeship Week 4

What I’m Learning:

I’ve been dabbling around with a few javascript frameworks lately for the sake of work and pure curiosity. Below are a few examples of what I’ve been working with.

One cool thing I learned at work last week:

The first framework that I’ve been working with is React, Facebook’s reactive development environment. I was able to pick up many of the fundamental functions of React such as component interactions, API calls, and loading child/parent DOMs. The one thing that I’m still trying to grasp is React Redux combination which essentially stores the application state for easy data manipulation. This is incredibly useful for sharing data across multiple React components at a given moment.


One cool thing I learned outside of work last week:

In pursuit of designing a traveling application, I stumbled upon D3js which is perfect for easy graphical work in HTML. With this framework, I’ve learned how to create maps using svg paths and projection, how to scale and translate the maps, and how to track mouse movements/interactions. This is a foreign type of programming for me because I’m used to working with more utility-based applications, so learning this will have a huge impact on my user interface based applications.

What I’m Creating:

One example of how I created value at work last week:

I’ve been fine tuning my full stack development skills for when I start working on my LLC’s public web application. I’ve also expanded my javascript prowess by working with new graphical-related frameworks. This will drastically help my application’s aesthetics and bring a new dimension to my work.


What project I’m currently working on at my BP:

The primary project that I’m working on currently is a website for Self Directing Systems LLC (SDS). The project entails communication between front and back end environments, as well as databases that hold user information. The website will feature two distinct UI paths, one for contractors and one for students/interns; Both of which will need individual interaction with their respective actions. The development stack of choice is the MERN stack which features a Mongo database, an Express back-end API, a React front end, and NodeJS for the underlying functionality. I will most likely incorporate more languages/frameworks into the stack for graphics and additional utility down the line.


What I’m doing to become a better version of myself overall:

Overall, I’ve been heavily involved with developing and fine tuning my software development skills. I’ve enrolled in multiple self-directed courses to enhance my abilities. These courses include Udemy’s Data Science Bootcamp, Udacity’s Data Visualization and D3.js, and MERN stack tutorials on youtube. The resources do not only serve as beneficial tools for my current positions, they also largely benefit future software opportunities due to their wide range of usability in the development field.

Weekly Wednesday Workshop:

The topic was effective writing and the guest speaker was Corey Gwin. Though the topic was quite straight forward, I had a few takeaways that were related more toward idea creation and personal development. Nevertheless, Corey discussed the importance of personal brand and certain techniques in relation to writing. He provided an overview of his application, Blurt, that motivates people to write freely without the distraction of typos and inconsistencies by blurring out sentences as they are typed.

First off, very cool idea. It’s very neat to see simple ideas come to life and yield successful results. I really like the idea that Corey went with by inspiring users to look past their mistakes and let their words flow. It’s definitely a tool that I’d consider to improve my writing.

I also enjoyed exploring the various ways in which my fellow Praxians dealt with their busy schedules. Reflecting on my personal life, I’d like to devote more no-distraction time towards work during my optimal working hours. I also want to improve my resting hours during the time that I’m not working to gaining that better balance.

Week 3

I’ve been slacking on my work…

But that’s okay because I’ve immersed myself in a culture that not many people get to see – at least from the U.S.

As I mentioned last week, my travels have taken me to India and Nepal. I’ve visited a few states including Delhi, Mumbai, Agra, Jaipur, and Kathmandu. All of which have taught me something invaluable.

Instead of engulfing myself in code and and neural networks, I took information from my surroundings and used that as my learning material instead.

My Takeaways

First, I have to address how incredible it is to live in the US. Despite all the political backlash that America receives, it is still an incredible place to flourish in. To put it into perspective, India is an incubator for the caste system which essentially segregates the nation’s inhabitants depending on their heritage. If you were born to a family that lives in the slums (not a great place to be) then you would be expected to stay there despite economical or educational prowess – you’re strongly discouraged from advancing in society.

The caste system was very noticeable once observed. Same caste businesses were all run the same and many of them didn’t provide additional services in comparison to the thousands of other similar businesses. They were essentially replicas of one another which, as you could imagine, does not breed competition in the business world. In seeing this, I really came to realize just how important competition is in industry; obviously it’s important, but seeing this on a national scale was a big wake up call.

Another thing that I noticed was the lack of effective technology use. For example, instead of logging users that come in and out of a tourist location on a computer, they would manually input all of the information. This is a simple example, but you get the point. Technology is crazy useful with the amount of data bouncing around, so utilizing it makes a huge difference.

The last thing that I learned is not to stress too much about traveling because, in most cases, nothing will work as it’s supposed to.

I could go on about my experiences, but I just wanted to give a brief rundown of the incredibly informational journey that I’ve embarked on. I hope this was an enjoyable read!

Week Two Update

This week was the start of my first software development position. I finalized the paperwork and made a game plan. However, there is one caveat to my situation. I’m in India! I’m here for a few weeks so my involvement with my startups will be minimal. Luckily, I have lots of flexibility, so I can take most of my work with me.

With that being said, I worked on a few things during my travels, so here’s the run down.

Rundown of my current projects

AI

AI will be an area that I will be working on in my second internship. It’s also something that I will inevitably use in the future. So I purchased a data science course on Udemy, a course that was referred to me by a fellow Praxian, to continue my exploration of machine learning.

So far I’ve learned the evolution of data analytics and how it ties into business intelligence, data science, traditional methods of analysis, and machine learning.

Software Development

After finalizing my paperwork with the LLC that I’m working with, I was assigned the task of rebuilding their website from scratch. Their original website was created with, what I believe to be, HTML5 and PHP. Given that their website is going to be decently interactive, I decided that the development stack of choice would be React oriented. My typical go-to stack is M.E.R.N – MongoDB, Express API, React, and Nodejs – due to its high level of customization and easy deployment.

I’m currently in the process of learning React Redux which is a centralized state manager that makes it easy to store pieces of information when managing page component. This will become incredibly useful for when I implement client and provider authentication on the web application.

I’m still not entirely hands on with my projects due to my location change, so much of my value creation is in development. Starting June 10th is when my involvement will grow exponentially, so stay tuned for some cool updates!