Interning at The Dini Group has truly been an amazing experience for me. It has given me confidence in my programming skills, which in turn has allowed me to enjoy coding more. Programming is like a complex puzzle that needs solving. I first took a programming class, in Matlab, at UCSD the summer after my freshman year. I liked it but never felt convinced in my abilities. Last year when I interned at Qualcomm Thinkabit Lab this interested sparked again when I saw the passion that my mentor had for it. At this internship I worked on a painting robot that paints the user's portrait using a stippling technique. I designed it in CAD and started building it the following summer. This project got me back into coding and I taught my self a bit of Python in the process. I was not intimidated by programming anymore and decided I needed a better foundation to continue my painting robot as well as a prosthetic hand project I had started. So last semester I took Engineering Programming at USD, where I learned C. It gave me a glimpse at the endless possibilities of coding and this internship, at the Dini Group, has made that glimpse a bit bigger. Anytime I learn something new I realize how much I don't know about the subject. This is the case about programming for me and I appreciate that there is still so much for me to learn. I am excited to continue this internship over the summer and continue my studies in college in the coming fall. Life would be so dull if there was nothing to learn. I am now curious about developing my own user interface QT program or the processes of designing schematics for electronic boards or applications of FPGAs. I have endless amounts of questions about the world because I am learning so much. Everyday after work I feel so tired because my brain is stretched with so much new information...it's great! I still don't know what I am planning on doing after my undergraduate maybe I'll get a phd or go into industry or who knows maybe I'll start my own company. I am excited to learn and see where life takes me. Below are a few pictures of me in my college gear which is a metaphor for my current state in life. A nervous smile but excited for the unknown. That is how I felt on the first day of working at the Dini Group and that is how I now feel as I venture off to college. Just like my experience at the Dini Group I know college will be challenging but rewarding!
0 Comments
My project during externship was to finish modifying the bom_diff program so that the parsing of the master bom files was more logically coded with more error messages explaining why things weren't working like they were suppose to. Throughout the entire externship I worked under Neal, my mentor, who helped me understand the existing program and come up with ways to make the flow of it nicer and easier to read. I measured my success day to day by how much I learned and how focussed I was, which in turn determined how much I got done. On a whole my success was measured by if I actually got the program working and modified to Neal's standards...which I accomplished. In life it's great to be rewarded on how hard you work, but that's not always the reality. Usually you are judged if you get the job done and how well you got that job done. I am proud of the meaningful contribution I made to the Dini Group and how the new and improved program I wrote allows them to catch mistakes in their schematic and bill of materials before they start the manufacturing process.
The work that I have done at the Dini Group is extremely helpful to my education and world outside of high school. Not only am I able to say that I had a paid engineering internship on my resume, but I also was able to learn from my mentor (and the internet) and grow my programming skills. I learned an entire new language which will certainly come in handy in the future whether that be for school or a robot I decide to build in my free time! I feel so inspired to work on my own projects after this internship and continue coding. This internship has shown me that even in unknown territory I can succeed and push through challenges. To the left is my mentor Neal. When talking to him I found out he went to UCSD and studied Computer Science Engineering. The Dini Group was recruiting students out of UCSD and he got invited to an interview. He started out as an intern, just like me, when he was a junior in college. Then out of college in 1998, he started working for The Dini Group full time. Working at The Dini Group has given me confidence in my programming skills and it has gotten me excited about some of the work and projects I will do in college. I am still planning on majoring in Robotics Engineering at WPI in the coming fall. My major in college has not changed because of this internship, but solidified. I feel more prepared to conquer college and am excited about taking classes that I am interested in. Everyday, after grabbing some tea or coffee, I start work by signing into my computer and looking at where I left off the day before. After work, I purposely try to forget what coding problems I struggled with or else I'll be up all night trying to think of ways to solve them (and that's not healthy). In the morning I'll get myself re familiar with the code and then get to work attacking the problems. Usually this entails a lot of online research because I'm still fairly new at programming. Neal, my mentor, also occasionally sends me emails to help get the functionality and structure of the program correct. Below are a few pictures of the online resources I'm using, the notes I'm taking, and one of the emails Neal sent me recently. Unfortunately, I'm not allowed to post photos of the code I am writing, but in all honesty that is what I work on 24/7 at work. Advocacy for myself is a huge part of how I've been able to grow and learn during my externship at The Dini Group. Although I have had some coding experience before this internship, everyday when I get home I feel like my head is going to explode from all the new information I've learned. I have been educating myself on a lot of topics by reading tons of online sources. Neal my mentor has also been super helpful through this entire internship. Whenever I am stuck on a problem or have a question he is happy to help me. When I first started the internship I had to prep myself mentally because sometimes I feels intimidated to ask questions or for help in fear that the questions or help that I need is dumb or super simple. I doubt myself a lot in this processes and end up being too nervous to ask. This was an important step for me to get over because now I have been able to learn and accomplish more. I have also realized that my questions are never actually dumb because I can, or the internet can, usually answer the dumb questions. Below are some silly pictures of how I look as a "self advocate" or "selfie advocate." One of the many things that make me happy at The Dini Group is seeing the colorful murals in the hallways. Bellow are a few: With a cup of delicious coffee (pictured below), every morning I start my work day eager to tackle challenging problems. I am very glad I decided to have an internship at The Dini Group. I am learning so much and know the skills I am developing here will help me in college and the "real world." At high tech we talk a lot about the "real world" which always felt like an abstract concept of the future. Although I knew I was doing meaningful work at high tech I never quite grasped the connection it had to my future. I saw the skills I was developing as important, but couldn't relate it to the working world, because quite frankly I had never been in the working world. Even last year, during my internship I didn't make that connection because I was still around my peers and in a working environment that was pretty flexible.
Although I love the project that they have me on, I find working a 9am to 5pm engineering job, 5 days a week, is pretty strenuous and takes up all my energy. I am used to studying long hours at a time, but am not used to the focus that it takes to sit and code all day. The work is rewarding and I feel like I am really making a contribution to the company. I keep getting stuck on issues in the program, but after learning more about the topic I am able to fix them. Overall I feel confident I'll be able to get my project done before externship is over. Day three, and I'm beginning to feel in the flow and comfortable with my work. My project is getting pretty exciting and is definitely becoming more approachable and understandable. I know I explained briefly what my project is in one of my last posts, but I am going to explain it in more in depth.
My project is modifying the Bill of Materials Difference Finder (bom_diff). This program runs through Qt, which is a cross-platform application framework used for developing application software. bom_diff asks the user to enter two files, the Master Bill of Materials (Master BOM) and the Schematic, then compares the Part ID and References to see if they are all the same. Every component on the electronic boards designed at The Dini Group has a Part ID (PID) that lets The Dini Group and Manufacture know what the component is. For example the green LED on one of their boards has a PID of 1928, which tells them the exact green LED they are referring to. All components will also have a Reference which is where on the boards that component is found. The reference is kind of like a index of all the parts of the board. For the most part this program works really well but some of the assumptions made when parsing the BOM Master excel file makes the program break. The parsing of the Schematic works basically perfectly so when modifying the program I just need to worry about the process_mbom_input function which parses through the Master BOM. To get started on this, yesterday, Neal had me find the place in the bom_diff_controller code where the Master BOM excel format spreadsheet gets converted into the comma separated value file (csv). I wanted to see how the program converts the excel file to a csv file so I commented out the section of the program that deletes the Master BOM csv file after the data is extracted. Then Neal had me run the program on a bunch of the excel bom files, so that we could have a good sample size of input files to look at. Once I had a good sample size Neal helped me come up with better assumptions that I could make when coding. After the program converts the excel file into a csv, it opens it and skips the first two lines (which is the header). Instead of assuming that the header will only be two lines long I am going to modify the code to skip all lines that don't have a number in the first term in a line. All data lines start with a number so this will allow for a more flexible input excel file. Today, I continued trying to understand the existing code. I made a list of all the functions used that I didn't know and took notes on them in my notebook. The basic way the program parses the csv file is using a function called strtok which spilts a giant string into token by using a delimiter. In C, strings are nothing more than a character array followed by a '\0' character. strtok is a string tokenizer, which, like fgets, is general functionality provided in some way by pretty much every programming language. The idea is that you tell the tokenizer what string you want to split up and by what delimiters you want it split up, and it will give you each token. There were several new vocabulary words in that sentence, so let me give you a concrete example. "This is a sentence, and I want to read only the words from this sentence.\n" In the above case, the delimiters are spaces, commas, periods, and \n. In the above case, the tokens are "This", "is", "a", "sentence", etc. Each word is a token. So the job of the string tokenizer is to, given the knowledge that you want it to split by commands, periods, spaces, and \n, give you, in sequence, the different words. In the case of the program I am working on, the delimiter is commas, which makes perfect sense because the file being read is a csv, comma separated value file, which means after every comma there is a new term that can be read separate to the term before. Tomorrow I am planning on actually modifying the code! After signing a bunch of papers yesterday about proprietary information I was unclear what I was allowed to take photos of for my blog. Now that I have that cleared up I thought I would share some photos of my workspace. I have been very nervous and excited about this paid internship at The Dini Group since the moment it was confirmed. As today approached, I doubted my abilities more and more, but finally being at the Dini Group, amongst other engineers, confirmed my passions and desire for software engineering.
My mom and I arrived really early so we took a little walk in the surrounding La Jolla area. She tried to give me a pep talk, but being a teenager, I only listened with half an ear. I anxiously smiled as she took my picture in front of the Dini Group building. I said good bye and she was gone. I was alone with another new opportunity facing me. I have always said yes to passing by opportunities, which I attribute a lot of my success to, but this also means that I have thrown myself into a lot of unfamiliar experiences. As I walked up the stairs into the Dini Group I found myself becoming calmer. It was weird and I don't know quite how to explain it, but I was happy to be at the Dini group. I was back to my normal self: ready to say yes to opportunities, being okay with not knowing information, and enthusiastic about asking questions. I knew the work that they would be giving me was hard... but I like a challenge! As I walked through the halls to Neal's office, I felt comfortable. I had already been to the Dini Group building once for a sight visit and the bright colorful paintings felt familiar. Ann was the first person to say "Hi" to me when I got their. I hadn't met her on my sight visit, but she immediately made me feel very comfortable. She had me read and sign a ton of paper work. I had never had a real job, so it felt like a very adult-ish thing to do. Once I was finally done signing a million papers, I met with Neal. I was eager to start working on something engineering related, at that point. He spent most of the day getting me set up on the computer, setting my email up ([email protected]), explaining how they save and edit files at the Dini Group, explaining the processes the Dini Group goes through to make electronic boards, then lastly explaining my project. My project is modifying another interns existing program that takes the schematic of an electronics board and compares it to the bill of materials that is being sent to the manufacture. This program is used to make sure all the components on the bill of materials (BOM) match those on the schematic before sending the pieces off to be manufactured. They are currently using this program, but it is a bit finicky so my job is to add to the existing code and make it more robust. I started by trying to understand the code which took me the rest of the day and probably tomorrow as well. By the end of the day my brain felt like it was going to explode from everything I learned, which is always a fun feeling in my opinion. In the middle of learning with Neal, we took a lunch break. The entire company (12 employees total) had a pizza lunch in my honor so I could meet everyone and feel apart of the team. Everyone treated me like an adult which I really enjoyed. They were genuinely interested in me, this made a great first impression, obviously. Can't wait to continue for the rest of the month and the summer! |