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.
0 Comments
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! For externship and this summer I have a paid internship at The Dini Group. "Located in La Jolla, California, The Dini Group is a professional hardware and software engineering firm specializing in high performance digital circuit design and application development." The Dini Group designs and sells FPGA based products. Field Programable Gate Arrays (FPGA) is an integrated circuit designed to be configured by a costumer or a designer after manufacturing. FPGAS contain an array of programmable logic blocks, and a hierarch of reconfigurable interconnects that allow the blocks to be "wired together," like many logic gates that can be inter-wired in different configurations. Logic blocks can be configured to perform complex combinational functions, or merely simple logic gates like AND and XOR. My mentor will be Neal Harder, who is the lead engineer at The Dini Group. I know I will be coding, but at this point in time it is unclear the exact project he will have me working on.
|