This week was pretty mundane as far as work goes. That does not mean my work was uninteresting, or that I did not learn anything. I certainly learned more about debugging tools, and investigating bugs. I’m glad these skills are transferable to many jobs, and any programming language. As a TA knowing how to investigate bugs quickly is essential for doing a good job. I’ll be glad to bring this experience with me. I did say this week was mundane, but I will have an interesting announcement to make in the middle of next week. I’ll be sure to write it next week here too.
What I did
Since I finished my user stories for this iteration, I got to work on a bunch of AR’s. Not sure what AR stands for, but it is the way we track product issues. So I got to investigate bugs, and fix issues in the code. It was interesting to look at, but after a while of grinding away at a problem, it stays kind of dull until you make breakthrough, or find a lead.
Logging is essential when triaging, and investigating product issues. The problem with good logging is that it is a retroactive requirement. By the time the issue occurs, the error is identified, and the logs are uploaded, nothing case peer into the system state except maybe a system dump.
Good logs don’t just identify where the issue occurred, they give you a hint at the system stat when the error occurred. In the case of my bug today, it was a concurrency issue that got a system stuck waiting. Without good logs, written by the code of previous developers, I would not have known the system state and would have had a hard time reproducing and fixing the bug.
I’m doing work that really matters. An email update was distributed to a group of over 200 people today announcing the latest DAQ release. In the announcement there was an accompanying features and bug fixes list. Among the items in that list was the work I had done in the weeks prior. I was able to see the fruits of my labor, which is a huge confidence boost.
I feel like a normal developer here, and it is good to see that my work is part of something greater. It is not just a throwaway intern project used to occupy and screen college students.
I learned about core dumps, and how they are used. I’ve always seen system dumps on things like the blue screen of death, but never knew quite what they were or how to use them. Today that changed. I got to work with a core file in gdb to help investigate an issue relating to heap corruption. I haven’t found any good leads, but it is pretty cool that I can view the exact processor / memory state for another program at the time of crashing.
Code structure is very important. Following a certain coding style is very useful for quickly scanning code. It should be pretty apparent, but if everything is properly indented, the blocks are easy to see and understand. It also helps with debugging, if there are properly indented nested if else statements, I can trace which conditions were tripped to get to a certain line
Comments are also a big part of code. I have now realized that many of the comments I made in code written for school are unnecessary. Now that I’ve seen some of the comments, I have a better point of reference for writing my own.
Smaller commits and pull requests are better. Today I was hitting an issue where DAQ would crash whenever a certain option was selected. After some investigation, and team discussion, the crash was blamed on a change made in a 16,000+ line commit/PR. The commit was mostly removing a bunch of old code, but there was a small mistake that would run code when it was not supposed to be run. Unfortunately, the developer, the testing, and both code reviews did not catch the mistake. This was most likely due to the nature of the huge commit. It would take a lot of time to review and test every single change that was made without breaking it down into small commits and pull requests.
My RMA’ed motherboard came in, and my whole personal computer is working great! I am very excited about this. Also I got an email about Dell’s Black Friday in July promotion, and in it an employee coupon was described. I looked further and I get a discount on most items on the dell.com store. I browsed around, and picked up a brand new GTX 1080 for a price you would find on eBay. This was a good week as far as products go. #IWork4Dell