CS 373 Fall 2021: Amogh Dambal

CS373: Software Engineering at the University of Texas at Austin. Just because it’s required writing doesn’t mean it has to be boring! :D

Blog Post 13: November 21, 2021

This past week, I mostly spent time recovering from my illness and working to finish up a lot of assignments and things that were due in various classes. Since my group and I have finished IDB Phase 3, we decided to re-group and figure out exactly what is needed for us to work on Phase 4 once we start working on it again. Additionally, I spent some time working on recruiting things and have some online assessments and interviews lined up that I need to work on completing.

The biggest thing in my way is my own time management. I need to work on managing my executive dysfunction to continue to grind out recruiting tasks like continuing to apply to jobs, complete online assessments and technical interviews, and apply to jobs so that I make sure I have an offer lined up for after I graduate.

Next week, I will try to use the time off to get caught up on all the previously pending assignments and work hard to make sure I keep going through the recruiting process and secure an offer for my post-graduation plans.

I read the paper and I really liked it! I believe that I have read it previously when I took OOP (CS 371P) with Prof. Downing in Fall 2020, so it was a good method of getting a refresher. I was able to understand many of the facets of this paper due to the simple examples that were given; I was also able to relate a lot of the Java-based examples to similar items or concepts utilized by the C++ STL.

I liked learning about SQL! It was a little difficult to complete the exercise on Friday, as a lot of the syntax was relatively confusing. However, I appreciate the power that SQL has in managing a relational database and I think it’s a very valuable tool to have in your developer kit. It’s important to know when and how to organize data into a relational database and write queries to maximize the efficiency of reading from/writing to these databases.

My organization (Natural Sciences Council) had a lot of fun events this week! We got to play Broomball at Chaparral Ice and had our internal Friendsgiving Social this week, so it was a good time to spend with friends and relax a bit before break.

My tip-of-the-week is Python Tutor. It allows you to visualize your code graphically and see exactly what’s happening. I highly recommend it if you’re learning either a new language or practicing implementing a tricky data structure.

Blog Post 12, November 14, 2021

I was pretty sick (not COVID though!) for most of the week, so I spent most of my time in bed trying to recover. I know that many of my friends and people that I knew had also come down with a mysterious non-COVID illness as well, so I think that everyone was just going through a time and struggling in terms of staying healthy. When I was healthy, I spent my time working on Phase 3 of IDB with my group members.

My physical health is in my way. Hopefully I can get a lot of rest and complete all of my tasks for my classes and for my TAing responsibilities and catch up after being ill for the past week. Being sick always creates a backlog that you have to work to catch up on, and I am trying to get well as fast as I can so I don’t fall even further behind.

Next week, I will finish Phase 3 of the IDB project with my group. I will also finish my final project for my CS 363D (Data Mining) course and work on recruiting — preparing for interviews and submitting job applications. I also have work for the course that I TA for that I am behind on, so I need to work on that as well.

I read it and I liked it! I have read it previously when I took OOP in Fall 2020. I liked the explanations it gave for why we should utilize certain patterns. However, I did recognize that many of the examples were pretty dated, and a lot of the Java Swing code was incredibly verbose, which made it hard to follow at times.

I think I understood SQL pretty well, and the more specific details of relational algebra made some sense to me as I have taken courses previously that also covered the same topics. However, because I was sick, I missed a couple of days of class, so I missed those lectures.

My friend’s 21st birthday was this weekend, so we planned a surprise party for her and it went very well!

The NFL NGS (NextGen Stats) team uses AWS to power some very interesting data collection; they are pioneering NFL analytics. They have an API with data that you can view in Python using pandas DataFrame objects.

Blog Post 11, November 7, 2021

I wasn’t able to do much of anything this week, and I’m not quite sure why. I think I’ve just not been doing well mentally, which hasn’t helped with my ability to focus on working on Phase 3 of IDB.

I think my own mental health and routine(s) are in my way. For whatever reason, I can’t seem to get myself to do anything. I suspect that I may just have been super burnt out the past week, and so I needed a bit of time to pull myself together and recover before the next week. However, I worry that I may not be able to recover from burnout and that the effects might be more permanent.

Next week I will simply try to establish a routine. I will try to do something every day. I don’t think I have anything major due next week, so that should allow me to spend time in doing a little bit each day so that I can re-establish myself and my mental health. I will spend some time in setting up my organizational skills again, use my calendar, and try to pull myself together.

I read it! It’s one of my favorite papers; I read it for the first time when I took CS 371P — Object Oriented Programming with Prof. Downing in Fall 2020. I think it’s been very influential in the way that I approach designing and writing software since I read it then; it was good to get a comprehensive review of the topic. Even in the classes that I have TA’d (CS 371G, CS 371P), I have found that I am using that paper and the ones it inspired to guide other students.

My experience of the topics was relatively light, given that I don’t think I was very focused in class this week either. I think that the best thing I can do for my in-class work is to just work on getting caught up over the course of the week.

I was able to emcee a benefit show for one of my friend’s dance teams this weekend, which was really fun! It was a series of Indian classical/fusion dance performances, along with some acapella teams, all from UT! It was a great time.

My pick of the week is Open Source Football. I’m very interested in football analytics, and there’s a lot of very interesting work being done in the field right now. For anyone interested in statistics, modeling, or anything similar, I would highly recommend checking it out and even contributing if you’re interested! I have a couple of articles I have been working on (that have stalled out due to the semester) that I have wanted to publish as well.

Blog Post 10, October 31, 2021

This past week I managed to work with my group to finish Phase 2 of IDB. This involved finishing up most of the frontend code and fixing some bugs in the CI pipeline and the testing suites, as well as making sure the documentation for all of our tests and written reports was completed. Additionally, I managed to work on some assignments for other classes and start slowly get back into applying for more jobs.

I think a mindset is in my way. I need to get into a more active mindset and start leaving my room more often, forcing myself to break out of any unhealthy routines and catalyze myself into actually doing things. This, I believe, will be helpful in forcing me to do something every week so that I can break tasks down into more manageable chunks.

Next week, I will get started on Phase 3 of IDB with my group. I will also work on homework assignments for Data Mining (CS 363D) and Neural Nets (CS 342). The main focus for the next few weeks will be recruiting for a full time position after graduation. I need to buckle down and apply rigorously and practice for technical interviews in a dedicated manner.

I actually liked the DIP paper a lot more than the other past papers that we had read. I think that this paper provided examples that were a lot clearer and easier to understand, and I was able to make connections between the concepts expressed in the paper and other concepts that I already knew about, like read() and write() system calls in UNIX, the STL algorithms such as std::copy , std::fill , std::accumulate , and std::transform to more clearly figure out the idea of eliminating dependency.

I don’t know if I entirely understood the =, *, ** , and regular expressions conversations we had in class this week. I had a lot of trouble focusing in class due to a lot of stress and other personal issues, so I will definitely have to go back and figure out exactly what we talked about. I know a little bit about argument unpacking and function argument precedence from previous Python experience, especially with **kwargs , but nothing more than the basics.

Halloween! It’s my favorite holiday, and it was a lot of fun to hang out with friends this weekend and de-stress. It was also a close friend’s birthday this weekend, so I’m glad that I got to hang out with him.

My pick-of-the-week is the Rockstar programming language. It allows you to write code that looks like the lyrics to bad 1980’s heavy metal music. It’s an interesting exploration in writing compilers and parsers; I have been thinking about writing a C++ compiler for it as a side project whenever I get the chance.

Blog Post 9, October 24, 2021

I mostly worked with my group to finish Phase 2 of the IDB project. This involved collecting and scraping data from various APIs and gluing them together, initializing and managing our PostgreSQL database using AWS RDS, implementing a backend API in Python using Flask and SQLAlchemy, handling various backend deployment using Docker and AWS Elastic Beanstalk, and implementing the frontend server using React. We also worked on writing unit tests, documenting our API using Postman, and writing all the various reports and user stories.

The biggest thing in my way is an understanding of a design and also a propensity to distract myself. I need to buckle down and work on one thing at a time and trust in the fact that taking this approach will allow me and my group to get to our goal. I tend to worry about extraneous steps at the wrong time, which doesn’t help in staying on task.

My group and I will finish and submit Phase 2 of IDB and then get started on Phase 3. I will also dive heavily into recruiting season. I know that I have put it off and am starting quite late, but I need to work a lot harder in order to obtain a post-graduate position somewhere.

I read it, but I didn’t necessarily enjoy it because I thought that the examples were far too opaque to be understood clearly. I also think that the article may be a little outdated; I would love to have more recent/relevant examples of the ISP. Additionally, I think it would be good to have links to supplementary material discussing the general consensus on these patterns after they’ve been used in industry for a while.

I thought that functions were relatively simple; I have some previous Python experience so that was easier to understand. I liked learning about the machinery behind decorators — I had used Flask and other frameworks that utilized decorators without understanding what was going on behind the scenes, so it was nice to get a deeper understanding. I may have to review closures a bit further.

I got to attend a friend’s birthday party at the end of the week, which was fun!

My pick-of-the-week is git hooks. They can be very useful, especially in larger prod environments. It’s always helpful to automate some part of your Git workflow and add DevOps into the process.

Blog Post 8, October 17, 2021

I mostly continued to work on the DevOps and backend for IDB Phase #2, which includes things like deployment to AWS, setting up our PostgreSQL database using AWS RDS, and scraping data and building a coherent DB and object model so we can properly serve an API with our Flask backend.

The biggest thing in my way is a lack of perspective and a lack of direction. It can be hard to start from nothing and work towards developing a solid database design. I am also suffering from this lack of perspective when working on my assignments for other classes, especially CS342 (Neural Nets). Not understanding the concepts and perspectives in that class are holding me back in understanding the material in that class.

Next week I will work with my group to implement the backend API and then implement the frontend server that consumes this API. We will also complete all the other various parts of the IDB project, including the User Stories and the various documentation portions.

I read the paper! I thought it was relatively interesting, if not slightly outdated and/or confusing by the wording and examples that were given. I would love to see an updated version of these principles in terms of how they apply to more modern code, like C++20 or Java 15 or Python 3.10.

I enjoyed learning about comprehensions and generators! I think that it’s a very interesting aspect of the Python language that can make your code beautiful, elegant, and efficient. However, the yield concept confused me slightly. I attribute this to the fact that I was unable to fully participate in lecture that day due to an NSC event, but I am hopeful that I’ll be able to figure it out.

I was able to go garba! It was an Indian dance celebration that was held Friday evening, and I had never been to one at UT. It was a fantastic time and I’m glad I was able to take time out of my schedule and go.

My pick of the week is the Git Book. Published by the official maintainers of git , I think that it can be very helpful to understand the machinations behind git and develop your version control skills.

Blog Post 7, October 10, 2021

I got started with my group on Phase II of IDB. We mostly worked to setup our backend using Docker and Flask, and are trying to figure out how to setup and populate our database using PostgreSQL. Additionally, I spent time working on various recruiting things (although not nearly enough).

I think that fear is in my way. Fear in terms of recruiting (overcoming random bouts of impostor syndrome) and insecurities about my skills and ability to secure a full-time position after graduation. Fear of success in this and other classes, as I think burnout is starting to hit harder than ever. Fear of failing to meet either the expectations of others or myself. I think that grappling with that fear in a healthy way is something that I have always struggled with.

I think that next week I will dive into learning as much about the backend and developing an API as possible. I will also work with my group to come up with a solid design for our models and sites so we can put together a frontend server that consumes the API we build. I will also have to work to overcome my fears regarding recruiting and get things done.

I liked it! I had read it before in OOP, so it was a good rehash. I am interested to find out how C programmers, for example, who do not have access to things like built-in inheritance functionality in the language handle these kinds of design questions.

I liked learning about them. After having learned C++ and Java, I think it’s interesting and useful to go in-depth into why Python differs and why Python is, in some ways, the same. I think it’s helpful in understanding why certain languages were designed the way they were.

The Cowboys won again! (4–1)! Other than that, I think that getting prepared for all of our events for Natural Sciences Council for NS Week next week made me happy!

My pick of the week is the nflfastR API to scrape play-by-play data in R! Useful if you are interested in sports analytics!

Blog Post 6, October 3, 2021

This past week I mostly worked on formalizing and finishing various parts of IDB Phase I. I think that it was pretty tricky at times to configure things like AWS and GitLab, especially when working in a large group, but I think that my group and I have developed a good workflow. I also spent time working on planning out various portions of Phase I, like data scraping and compiling various things to help us in future phases.

I think the biggest thing in my way is time management and design. I say time management because the future phases of these projects are going to increase in difficulty very quickly, and I will need to be on top of my schedule to ensure that I am able to keep track of everything.

Furthermore, I think that designing the various models and their instances and attributes is a tricky task that can get in our group’s way if we aren’t careful.

I think that next week I will continue to work on Phase II of IDB and work on getting back into recruiting, as I am graduating next Spring and have to figure out what I will do after that. Additionally, I will work to setup the backend of our project and its deployment while also working to keep track of all of the issues and statuses of the various parts of the project.

I read the SRP paper and found it mildly interesting. I thought that a lot of the axioms and definitions could get a bit circular, and I was left feeling like there could have been more concrete examples of use-cases that would have helped more strongly motivate using this particular design pattern.

I had a good experience with factorial , reduce , and operators. I had learned a bit about functional programming and the map/reduce/etc. school of programming in previous classes, but it was good to get a refresher and learn about how that style of programming can clean up your code. Furthermore, I didn’t know a lot of the information we learned about the specifics of Python’s iteration abilities and possibilities. I also liked the flexibility that overloading operators provides. I appreciate that about C++ and Python and regret that Java doesn’t have that feature, although I can also see how it can be misused to make life hell for maintainers.

Just the little things! Seeing friends, trying restaurants (Leftwing Chicken is fantastic), and just being fortunate enough to be able to experience the joy in the smaller moments was fulfilling for me this week.

My pick-of-the-week would be UNIX command line utilities. It’s not very usual, but I think that having a decent grasp of things like grep , sed , basic shell scripting, and other Linux/UNIX utilities can make you a much more powerful programmer.

Blog Post 5: September 26, 2021

This past week, I worked on formalizing our project idea with my project group. I also worked on event planning for my student organization and submitting all the various assignments over all my classes. I think that I spent most of my time planning various things, as I know that the coming weeks will require a lot more implementation. I also continued my TA duties.

The primary thing in my way is abstraction. What I mean by abstraction — to steal blatantly from a piece by Joel Spolsky — is the ability to think about problems at multiple levels. I need to be able to simultaneously consider various parts of the problems at different scope(s) including planning and implementation.

I will work with my group to fully implement Phase I of the IDB project. We have our concept relatively finalized, so we need to work on data collection and model design. Furthermore, I will continue working on homework assignments for other classes. My organization also is planning several events (open to CNS students!) in a couple of weeks, so I will likely be very busy with planning those events.

I read it! I had previously read in when I took OOP, so I think that it was a good refresher for re-learning a lot of the material. One thing I am very interested in is studying whether the benefits of pair programming transfer when collaborating remotely. A lot of the stated benefits seemed to be derived from or inherent to the physical act of sitting next to another person; that shared physical space drove the chemistry, the connection, and ultimately the “jell” that seemed critical to the success of the team and the code.

I enjoyed learning about the various properties of different data structures and programming models in Python! I think there are some interesting and significant differences from how they are implemented in other languages (C++ and Java, primarily). Furthermore, I believe that choosing the right data structures is incredibly critical to the success of any piece of software. Therefore, I think that being familiar with the properties of list , tuple, set, dict, and iterators can help you figure out what exactly you need to choose.

Natural Sciences Council had our new member retreat this weekend! It was a great way to end our recruitment season by getting to meet all of our newbies for the Fall 2021 class. They were all so excited :)

This meme representing StackOverflow had me in stitches

I think that my tip/pick of the week would be Coding Horror, a blog written by Jeff Atwood. He is the co-founder of the Stack Overflow and Stack Exchange platforms, and has a lot of insights onto all things CS-related.

Blog Post 4: September 19, 2021

I mostly worked on things for my org. We just finished up recruitment this week, so we had to conduct interviews and hold deliberations. I also am continuing to try and make sure that I am doing enough for recruitment for post-grad opportunities, so I went to the Career Fair as well. However, I feel that the virtual nature of said Fair made it a,,,less than enjoyable experience.

I think right now I have to load balance all of my various tasks. I also think that as the semester continues to keep moving forward, the stress of the upcoming tasks increases. I’ve noticed that I’ve started to fall victim to a lot of stress-related illnesses (stomachaches, headaches, ulcers [?], etc.) so I think I need to minimize the total amount of stress I am under.

Next week, I will continue to recruit for post-grad full time SWE opportunities and work on Project #2: IDB 1.

I read it, and though I have read it before in OOP in Fall 2020, it was still quite harrowing to read. I hate how there are so many such stories of women and other marginalized groups facing harassment and discrimination in the field. I think that it’s awful how this pervasive culture that often excludes women and certain ethnoracial minorities results in a form of brain drain that causes many individuals to leave the field entirely.

I liked Collatz! I had done it in OOP before, so it was a good experience to do it in Python as well, as there were certain small tricks I had to use to get the algorithm(s) to work in Python as opposed to C++14. I also enjoyed learning about Python exceptions, as they seem overall to function similarly to exceptions in C++. I liked exploring the difference between RAII in C++ and the finally keyword in Python as different language mechanisms for writing exception-safe code. Finally, I thought that it was interesting to learn about mechanisms to enforce slightly more clean (at least statically) types in Python.

The Cowboys won! 20–17 against the Chargers, which pretty much always sets the emotional tone for the week ahead. 😃

My tip of the week is this article about the myth of “the loner genius nerd” that is pervasive throughout the tech industry. I think that everyone should read it just to ensure that we’re breaking down our biases about the skills that workers in tech should have.

Blog Post 3: September 12, 2021

I mostly finished the Collatz project and worked on finishing up recruitment for Natural Sciences Council. Additionally, I worked on completing a few small homework assignments for other classes.

Right now, I think I have to manage the slowly increasing load of work that continues to mount as the semester gets into gear. The assignments are starting to increase in difficulty, and so I have to make sure to stay on top of them while also making sure to stay on top of recruitment for post-grad work.

I think I will throw myself into recruitment and interview preparation, while also attending the Career Fair virtually on September 15. Furthermore, I will work on breaking down the big assignments for my classes into smaller chunks.

I liked reading about CI! It was an interesting look into how things have changed so much in just under 15 years since the paper came out and how much Git played a role in popularizing those philosophies.

I liked learning about them! It was still a review from OOP, but it was good to make sure that I was confident in those topics.

I got to read applications and deliberate as the first part of recruitment finished! I always love reading about other people’s stories and perspectives and I feel so privileged to have the chance to have people share parts of themselves with me.

This particular site that showcases “Curious Perversions in Information Technology” is not only hilarious with some of the code it makes fun of, but it’s also kind of helpful in learning exactly what not to do. I highly recommend checking it out if you want a good laugh.

Blog Post 2: September 5, 2021

I mostly worked on Project #1: Collatz and setup a few tools for development (like my IDE, GitLab, directories, etc.) that’ll help me immensely for future projects. It’s also recruitment season for my organization, the Natural Sciences Council (if you’re interested in joining, check it out at utnsc.org/apply)! As an officer, that means lots of fun but time-consuming recruitment events

I think that time balance is in my way. I have to handle recruiting for post-grad things, recruitment for NSC (fortunately not the same thing), TAing, and then also my own classes. I can’t (as much as I would like to) forget about any of them.

I think that I will fix the final bug in Collatz and submit it. After that, I will finish up recruitment for NSC and keep preparing for interviews and applying for jobs since I’m graduating in the Spring.

I liked it! I’ve taken OOP with Prof. Downing previously, so the makefile was incredibly similar. There were a lot of fun new tools I got to learn about like black and pydoc .

Since I’ve taken OOP, it was mostly review, but it was good to refresh the fundamental philosophy behind why we like assertions for some things and unit tests for others. I liked learning about coverage, and I really think I should integrate it into my own projects.

I loved going to my recruitment events and getting to talk to people about joining NSC. It’s my favorite org on campus, and it’s an amazing place full of amazing people. If you’re interested in getting involved in the college, if you want a cohort of fantastic people to be with throughout your time on campus, even if you’ve ever just thought, “Hey, this doesn’t seem right — someone should do something about it”, consider joining NSC! Go to utnsc.org/apply if you want to learn more!

The blog Joel on Software by Joel Spolsky, one of the founders of StackOverflow. He has some fantastic articles across a wide variety of topics including recruiting, interviewing, software design, writing good code, writing good docs and spec, and much more! I don’t necessarily agree with all of his writing, but he’s funny and writes well.

Blog Post 1: August 29, 2021

This is the first post on this blog, and it’s pretty much going to serve as an “About Me”, because 1) that’s the prompt we were given and 2) because I think everyone needs to know about me.

I mostly grew up in Austin, TX, where I moved when I was about 8 years old. I then attended Westwood High School in Austin for my first 2 high school years, and then attended TAMS (Texas Academy of Math and Science) for my junior and senior years. Throughout high school, my favorite extracurricular had to be Speech and Debate because of the people I met while competing and the ways the activity forced me to grow and develop speaking and research skills.

I came to UT because it was a big school, and so I believed it was a place filled with a rich variety of people. I decided to major in computer science because I’ve liked solving problems for as long as I can remember, and the fulfillment and satisfaction I get from fixing even the smallest bug is what got me hooked. I took this class not only because I had heard rave reviews about the instructors and the content, but also because I wanted to dive into the development process and methodology more formally than I would if I were developing a project on my own. I’ve never been able to quantify expectations very well, but I think I want to come out of this course being able to better understand how to apply various design patterns and best practices to problems in a scalable, maintainable, and beautiful way. I feel pretty proficient with Python and comfortable with JavaScript, and I have the least experience with SQL. I’ve used various web frameworks like ReactJS, Angular, and VueJS in personal projects but I am excited to learn more about various aspects of web programming and web development.

Before taking this course, I had heard that Dr. Downing used a method of lecturing that involves cold-calling students in order to then have a guided discussion with them about certain pieces of code. Though I was initially unsure about how this would work in practice, I now find it incredibly unique and effective in engaging my attention with the course topics, especially because the class environment is very comfortable and I don’t feel the pressure to be correct all the time.

My pick-of-the-week is this post I found on Reddit, where someone has done an incredibly detailed analysis of the simplest possible C++ program. I thought it was very interesting to skim the article to see how much work happens with compilation and linking to get from a source .cpp file to an executable.