North Carolina Electric Cooperatives

2019 Summer Internship

Coding in the Real World

Learning VB.Net from the Ground Up!


During my Junior Year at Shaw University, I applied to over 50 different internship opportunities in the Raleigh-Durham area. I got some positive replies but many more "thanks, but no thanks" emails from the various companies' human resources/hiring departments. As the spring semester was approaching an end, the Computer Science Department Head offered me a chance to work in the University Innovation lab over the summer. I was happy to get the offer but even more thrilled that I received a call from NCEMC HR to come in for an interview on the same day.

I went in for the interview on a Tuesday or Wednesday. I felt confident about my skills in computer science, especially in the wheelhouse of Python and Java programming. When the interview started, I talked about my military background, the different coding practices that I had done, and my web development classes/personal projects. When the interviewers asked me about the technologies they use, and if I had any experience with them, I was honest and precisely remembered the response I gave. "To be honest, I know what the technology is and some of its applications, but I have never had the chance to use it or play around with it." I gave this response to using VB.NET, C#, and Microsoft SQL Server. I thought I blew this interview by being honest. I was wrong. That Friday, I got the call from the HR person that interviewed me and received an offer for the position. I accepted on the spot.

The real effects of my imposter syndrome kicked in on my first few days after the intern onboarding. I sat at my desk and tried to review some of the other codes that members of the software services group had created. I was in well over my head, thinking that I could jump in and start coding. Luckily, someone pulled me aside and set me up for success by loaning me some different books and tutorials for VB.NET. I worked on this at home, at work, and even on lunch breaks.

Within the first three weeks, I had created a couple of simple applications from the books and Microsoft Academy. I felt ready to step into the teams and help out where I could. My supervisor started me out, trying to make an application to communicate with a database and pull a string to access a website/URL. I broke this process up into steps.

The tools helped me better understand how to create an application that the organization could continue to use and not fix. I broke the process into different smaller steps.

  1. Create a stored procedure to curate a table for the needed action.
  2. Pull the URL/String from a certain column.
  3. Check the legitimacy of the string to send over the network to download a file.
  4. Create a directory for each individual downloaded file.

This program started as a stand-alone project but was then incorporated into a much larger API developed by other NCEMC organization members. Succeeding on the downloader project led me to be assigned a follow-on project which used the downloaded file archive(s) and extracts certain file types from them. I worked with outside software to decrypt the archive file and different software to read through the archive directories and obtain the proper records. The data that I was working with allowed the data analysts to track better energy consumption and dispersal throughout the NCEMC member cooperatives and lower costs for residents and local businesses.

My third primary project task was to create an add-on program that would allow for NCEMC to collect extra information from their customers in a fast method using the SQL BulkCopy feature in the .NET framework. I was able to take the structure of the existing code and manipulate it to place the information in a specific database. This program allowed/forced me to work with regular expressions and get better at string manipulation. There are plenty of online resources that helped me to understand the structure better and use it for regular expressions. The bonus of using the SQL Bulk Copy is the amount of time saved by the system. The process with only about 100 lines of data not using the SQL BilkCopy process was longer than the SQL BulkCopy method, processing over 220000 lines of data by more than 3 minutes. The major drawback of using the BulkCopy method for Microsoft SQL Server was the inability to convert data from Strings to ints or other numeric types.

The fourth and final project that I worked on allowed me to work on many different aspects of automating the ability to analyze weather forecasting data to pricing the solar energy added to the grid. I used another established program/snippet to access a designated email account/address and filter through by subject line. The next step was to download an email attachment connected to the email and parse string by line to add to the database table. If the date had already passed, the lines wouldn't be updated, but all others updated/added. I managed to get the values added to the database table but wanted to make sure that the analysts had an easier time working with the numbers and take a step out of their process by converting the string to floating-point numbers.