Digital Technology Intern
GE Digital (Aug. 2017 - Aug. 2018)
I interned with GE Digital from August 2017 - August 2018. My team managed a lot of GE’s data and provided APIs to interact with it. I did a variety of backend tasks for my team. I wrote and maintained the tool that is responsible for populating our database with information from the IT software ServiceNow. I created a chatbot that is integrated with Skype and Microsoft Teams that plugs into our data and allows users to ask questions like “What is Laura’s phone number?” and “Who owns server 10.128.255.102?” I created a bunch of API endpoints for other teams as they requested them. I added caching and threading to one of our APIs, which resulted in a 92% increase in performance. I wrote testing files and automation scripts to improve our build/test/deploy process. I got a lot of exposure to new tools like Chef, Scalr, ElasticSearch, Postgres, Kafka, and Redis. I got a large variety of experiences and learned a lot about how to manage large amounts of data. I really feel like I made a difference on this team.
Software Engineering Coop
Siemens PLM Software (Jan. 2015 - May 2017)
For my third rotation with Siemens, I was transferred to the UI/UX team. I was responsible for fixing bug reports and coverity issues. My big project for the semester was to extend our table editor functionality, which was based on QT. We wanted to have a column type “icon”, and we wanted users to be able to hover over the icons and see tooltips. This was my first deep dive into NX’s codebase (which is over a million lines) and it was pretty daunting. The project was very educational though. I learned a lot more about data structures and abstraction from this code than I did in class. Once I got my bearings, adding the “icon” column type and the tooltips was pretty straigtforward. The challenge came when I had to design and implement a method to filter by icon. I decided to display the filter dialog excel-style. There was a list of all the icons that appeared in the table, each with a checkbox next to it. Checked icons would stay, unchecked icons would be filtered out of the view. A cell could have multiple icons so I had to be careful that if a cell contained some checked icons and some unchecked icons I didn’t filter it out. After a lot of drawing it out on paper and trial and error, I got an algorithm that worked! The other big struggle with this was fitting the code into the project structure. Filtering on other column types did not work the same way, so it was difficult to merge this code in without messing up anything else. But by the end of the semester I got it all working and I learned so much in the process.
Applications Engineering Coop
Siemens PLM Software (Aug. 2015 - Aug. 2016)
Other co-ops and me at Siemens PLM Software My first co-op rotation was spent learning how to use Siemens’ CAD software, NX, and understanding the expected behavior of its Drafting-specific tools. I spent a lot of time manually testing the software for bugs. The main aspect of my job was recording autotests to test regression scenarios. This basically meant recording a session of NX in which I manually followed a series of steps which produced an error in a previous version of NX. Then, upon each new release of NX, my tests would be played back to make sure that the error did not occur again. I gained a firm grasp on how to use CAD software to model 3D objects and how to translate those models to 2D drawings.
During my second rotation, the first couple of months was spent continuing my work from the previous semester. One project I did complete in that time was determining whether switching Drafting’s autotests from C++ to Python would be worthwhile. I did this by recording autotests for an entire project solely in Python, then testing to see if they caught the errors they were supposed to. Then I checked to see how the difficulty of debugging the Python errors compared to the difficulty of debugging the C++ errors. Overall I determined that recording the tests in Python would not result in any extra work for those recording the tests, and that debugging them was almost identical to debugging the C++ tests. This lead to the department adopting Python as its new autotest language.
My main project of the second semester, which I worked on during the final 3 weeks of the rotation, was extending the functionality of a tool that allowed users to search for part files based on features they contained. This tool was to be used internally to determine good part files to use for testing purposes. For example, if I was going to test for bugs in editing dimensions, I could use this tool to search a directory for part files containing a specified number of dimensions. My role in this project was to extend the number of different types of Drafting data the tool collected so searches could be more specific. At the end of 3 weeks, I had more than doubled the number of pieces of Drafting information the tool scanned for. When I first got the project, it scanned for 25-30 pieces of Drafting data. In my time of working with it, I increased that number to 55-65 pieces of Drafting data. This tool will save QA analysts a lot of time since they won’t have to manually search through directories to find part files that match their needs.