Software Engineering Project Blog

Mike Zeng.

Blog for 2025 Software Engineering Project @UIowa.


Note: This blog hour count excludes all the meeting time count. The meeting minutes baseline is about:

15 * 5 (75 min) for daily standup, 60 minutes for whiteboarding + retrospective, so add 1.2h per week.



[Friday, Jan 24 | 0.5h]

  • Discussed with prof about value from course.
  • My thoughts are that "you get out what you put in". I think if I make a long commitment and work hard over the sprints, I can get as much value as everyone else. If I have to make the jump from "only being ready for interns" -> "ready for FTE", I'm williing to make the leap since I have to do it sometime in the future anyways.
  • Recruited for team for DevOps tasks such as CI/CD, Kubernetes deployment, Django work. Someone reached out to me within 5 minutes, so I must have been somewhat marketable.

[Sunday, Jan 26 | 2h]

  • Team member is not fully certain about requirements, but the deployment is simple with a backend, frontend, and database.
  • PM specified to deploy on kubernetes, but I'm not fully sure if we need to scale such a huge deployment
  • Waiting on Github before jumping to setup CI/CD.
  • Waiting on platforms for database.
  • Building together proposal for monitoring systems (such as sentry + grafana or newrelic).
  • Playing around with some Angular
  • Building some deployment diagrams for deployment proposal.

[Monday, Jan 27 | 2h]

  • Discussed about project scope & requirements.
  • Consulted with team on application testing (Django unit tests, jasmine, postman)
  • Reviewed whiteboard for application flowchart
  • CI/CD Task with PM
  • Awaiting repository to be created.

[Tuesday, Jan 28 | 1h]

  • Finished CI/CD diagram, approved by PM.
  • Self-assigned wiki task.
  • Reviewed team's ER diagram
  • Studied Django unit tests & code coverage.
  • Preparing PR templates for the repository. Approved by team.
  • Waiting for repository to be created.

[Wednesday, Jan 29 | 2h]

  • Preparing integrations with Github
  • Discussed PR requirements with PM.
  • Made a PR for contributing documentation as well as PR templates.
  • Ran the initial instance and got it up, as well as passing the tests.
  • Waiting for admin approval on some connector apps (Jira & Teams)

[Thursday, Jan 30 | 4h]

  • Merged PR template after approval
  • Played around with dockerfiles, docker compose, as well as pre-scripting in case CI/CD happens.
  • Scheduled a Sunday meet up with PM for CI/CD implementation.
  • Played with terraform via docker to get a good understanding of how CD is going to work.

[Monday, Feb 3 | 2h]

  • Meetup to discuss deployment strategies
  • Deployed K3 and Postgres on PM's sever.
  • Setting up docker images for a combined django angular.

[Tuesday, Feb 4 | 2h]

  • Setup MVC for Django, getting ready PR for tommorow
  • Ran through with team on slides for presentation tommorow. Practiced speaking about deployment technologies listed.
  • Finalized pipeline for serving compiled HTML + JS with Django.

[Wednesday, Feb 5 | 1h]

  • Merged the PR.
  • Did code review for Alex's CSRF fix for Django
  • Finalized combined docker image
  • Presented project to class. Feedback on justification of Azure + AWS; can't just be for learning.

[Thursday, Feb 6 | 1h]

  • Made a PR with the docker image.
  • Code review Alex's login frontend code.
  • Testing methods to auto push to cluster.

[Monday, Feb 10 | 1h]

  • Wrote terraform file, testing terraform apply + terraform init.
  • Pushed the file to a new branch, waiting for testing.

[Tuesday, Feb 11 | 3h]

  • Discovered issue with deploying K3S on a VM.
  • A long time playing with network configurations to solve it. 
  • Taking track of notes on what/why the issue was occuring.

[Wednesday, Feb 12 | 4h]

  • Finally fixed issue with a K3S + Proxmox.
  • Issue: K3s Flannel was causing problems with the IP pool of main device; this resulted in loss of connectivity between nodes.
  • This was resolved by creating another network interface and setting Flannel to tha that interface, as described by [https://github.com/ehlesp/smallab-k8s-pve-guide/blob/main/G025 - K3s cluster setup 08 ~ K3s Kubernetes cluster setup.md]
  • Kubectl on remote hosts now work.
  • terraform apply + terraform init now works.
  • Waiting for tommorow for PR finalization.

[Thursday, Feb 13 | 3h]

  • Testing on Linode to ensure it works in a cloud environment. Test kubectl and web applications, recorded demo for PR.
  • Setting up connections to dockerhub + helmcharts.
  • Finalized PR, sending it in tommorow.
  • Reflection: Automated deployment was challenging + long hours of debugging, since I had to make a lot of inferences about the infrastructure of the team. There was a lot of learning I had to do since I don't have full control of the infrastructure as I do in my projects so I have to learn to actually fix issues with terraform instead of just switching providers or technology.

[Friday, Feb 14 | 3h]

  • Put together services for K8 to expose ports to global public IP. Implemented secrets in terraform file to send to containerd.
  • Implemented pipeline for direct docker2containerd transfer without the use of a public service such as dockerhub.
  • During testing, it was noted that rollouts go awfully due to django containers not shutting down properly. More research will be done to figure out a way around this.
  • Committed template & static folders to make sure django serves them properly; previous streamline.sh file that moved compiled angular would silently fail if the folders didn't exist.

[Tuesday, Feb 18 | 2h]

  • Wire pipeline docker2containerd transfer inside terraform to manage auto-deps.
  • Implemented lifecycle create-delete resources to recreate resources.
  • Finally achieved a relatively stable deployment process with TF; waiting to see how long before it breaks.
  • Looked at issues to add on since deployment is taking so long.

[Monday, Feb 24 | 1h]

  • Reviewed some more pull requests.
  • Talked with team about retrospectives.
  • Super busy for today-tommorow due to being at Iowa State for JSHS, as well as long hours for tutoring.

[Tuesday, Feb 25 | 2h]

  • Initiated azure devops pipeline file
  • Setup environment inside devops with secret kube config, environment variables.
  • Basic sketch of the pipeline file.

[Wednesday, Feb 26 | 4h]

  • Pull request regarding deployment, awaiting approval.
  • Patched & bugfixed all sketches of stage; all ready for production now
  • Testing of the pipeline against deployment
  • Seperated kube config to a secret file inside pipeline
  • Custom domain + SSL termination

[Thursday, Feb 27 | 2h]

  • Didn't do too much. Was really busy for tutoring.
  • Thought more about domain+SSL, as well as looked over issues to see.

[Friday, Feb 28 | 1h]

  • Implement domain + SSL through cloudflare tunnel.
  • Met with Stewart to support dev environment deployment.
  • Working on finalizing deployment.

[March 3 | 4h]

  • Reading + QA about backend to understand the Django
  • Review the deployment, get ready for finalization.
  • Started making slides for book report.
  • A lot of reading on error tracking + review of older projects.

[March 4 | 3h]

  • Finished sildes for book report.
  • Practice run-through of slide with WC3 (West Computing Club).
  • Reading more on backend, started playing around with database.

[March 7 | 3h]

  • Review Alex's PR and added approval.
  • Fixing security issue with pipeline by removing terraform, SSH, and utilizing dockerhub.
  • Learning how to use postman and swagger UI testing on django.

[March 13 | 3h]

  • Learning how to use angular on frontend. Playing around with components to understand what needs to get done.
  • Started work on quotes API backend.
  • Didn't get as much done this week due to a lot of midterms and book reports.
  • Spring break is next week, and our team decided to leave it be.

[Saturday, March 22 | 2h]

  • More throughout Postman testing, found issue on Tans' PR component.
  • Wrote the Create API for subscriptions.

[Monday, March 24 | 4h]

  • Discussed with Tan about Quotes and Job relationship.
  • Completed the organization API + tests.
  • Helped Alex fix regression issue from changing of config.
  • Planned out features for MVP demo.
  • Assigned subscriptions + quotes tasks; TBD before MVP.
  • Started working on frontend for organizations

[Tuesday, March 25 | 2h]

  • Reviewed and approved Tan's jobs pull request.
  • Alex had an issue due to Stewart force-pushing without approval to main branch. This took quite a lot of time to fix, but we ended up finding the issue and resolving it. Seems pretty concerned with how Stewart does things.
  • Won't be available for the rest of this week due to high school competition (State Science and Technology Fair of Iowa).
  • Waiting for T10 university decisions, so probably not much work for the next week or so.

[Wednesday, April 1 | 1h]

  • So currently, there is a large roadblock because we met with the customer, and the customer informed us that a lot of the way the application was currently working was not what he wanted.
  • This is extremely problematic as it is blocking the entire team from working on features as the backend needs to rewrite.
  • Also happening to be crashing out from college decisions (waitlisted/rejected from everything regular decision), so my work will probably be tanked for the next week or so.
  • Another contest coming up this weekend, so availability will suffer.

[Tuesday, April 7 | 2h]

  • Didn't do much since last follow up due to contest + crashout. Though it seems I'm fine now, so I can go back to doing work.
  • Team discussed about new changes about the model. I think its somewhat finalized?
  • We had the live demo yesterday, but for some reason Stewart pushed a unstable build and broke the devserver. I suggested to use the main server, but I don't know why we didn't.
  • There's a new 2K LoC PR patch from Stewart.... and Alex and I seem particularly concerned why there is such an enourmous PR. We decided to work on a seperate branch, and then merge it later.

[Thursday, April 10 | 3h]

  • Met with Joslin about current team progress. Overall, seems like we are fine; just need keep in check and work through project + commit more hours.
  • We finalized the ER diagrams, and I started working on the quotes PDF generation, a new feature suggested by customer.
  • I think Alex is worried about completion of the project. Stewart doesn't seem to realize how far it is lacking behind, Tan seems to think that we can complete it in time as long as we don't implement all the features.
  • Personally, I think we can implement everything. I feel like I just haven't been performing as well as I do on my personal projects, because I know I'm capable of dropping 3+ features over a single night, let alone 3 weeks. If I can lock in, I think our project can not only just easily finish on time, but also achieve an extremely nice feature set that no other team can really match.
  • Again though, it is a bit problematic as the process for that isn't really good. But as long as the tests are written, as long as the PRs are approved, I think we can get a good demo in the future.

[Thursday, April 17 | 5h]

  • Wrote frontend tests for quote PDF and submitted that PR. Recorded demo of that feature.
  • Met with Stewart to discuss about state of migrations: he admits that it is blocking and said it was going to be done before daily standup, but it wasn't; he said that it was going to be done... weeks ago.
  • Ran through a fake alpha demo; on his site the jobs onboarding is broken. However, I tested the dev branch state and it currently works fine.
  • About Stewart; I think it is a pretty large issue at this point. I don't get a lot of his decisions (the team doesn't either), but he goes ahead without asking for feedback and makes huge changes.
  • What I think might have happened was that he just didn't ever care about the codebase back then when he was working on CICD. But now that he has to work on the code, he suddenly dislikes how things are being coded and the team coding style; he should've brought this issue up when like... February. 
  • Alex is out, he is stressed out about the management and has "given up". I think it's fine given how much work he has put in to the project over the past few months. His ideal is for someone else to "take lead" over Stewart.
  • I think our project is still very doable. We have 6 features left, 3 weeks before modern marvels. Assuming 3 people take about 4 days to complete a feature, we would be able to complete 9 features, which is well over whats left (leaves us room to write more interesting features).
  • The problem is with Stewart; the migrations he made 

[Sunday, April 20 | 2h]

  • Helped Tan and Alex out with the bookings integration. 
  • PR was merged, deployed the new update to linode + cloudflare for the alpha presentation. I had to spend some time updating env vars and pipelines, so it took an extra bit longer.
  • Everything seems to be stable. I was hoping the booking PR was going to be in tonight, but unfortunately it is not.
  • Reviewed the slides for alpha presentation with Stewart and team for tommorow.

[Monday, April 21 | 3h]

  • Presented to class about alpha demo. Got some concerns from professor about scope creep.
  • Discussed with Alex and Tan about the situation with Stewart. I have concerns about his refactoring and his behavior, and also the licensing situation.

[Tuesday, April 22 | 1h]

  • Consulted with Alex and Stewart about requests for iframe feature, updated the request models.
  • Met with Professor to discuss about Stewart. Got told to talk it out with him. We scheduled a meeting to discuss with Stewart.

[Thursday, April 24 | 4h]

  • Discovered a licensing loophole (MIT, closed source) problem with Stewart. This doesn't feel very good, because one of the biggest pitch that Stewart made was that this project was going to be open sourced. I can tolerate not so great performance; I don't really tolerate lying about that.
  • Completed the proof of concept for the iframe model, sent a draft PR in github to talk about this. 

[Friday, April 25 | 3h]

  • Created tests for iframe model, starting to work on quotes.
  • Talked to Stewart about licensing. He doesn't seem to agree fully with the AGPL, however, he did agree to drop the refactoring if it wasn't done after Saturday.
  • I did see Alex mention about the story points and how I only got 16 points. He's not too concerned because he thinks I have value outside of raw code contributions. I do think its a bit funny, because while I admit that maybe I am not doing as much work as I could, we are still the only team with a working kubernetes deployment while others have tried AND failed.

[Monday, April 28 | 2h]

  • Discussed the licensing issue with Alex as well as Stewart. Stewart said he was going to drop the refactoring, but he still hasn't.
  • Made pull request for iframe feature. Finalized plan moving forward for the next 2 weeks, looks pretty doable.

[Tuesday, April 29 | 3h]

  • Started working on s3 quotes. Tested pin signature format, got feedback to utilize JWT instead. 
  • Tests are hard to write since the functionality is so complex. Tan sent message to look and see if code coverage on frontend is fixable.
  • Our application looks like its going fine. I want to finish the s3quote feature as I think it is will end up being one of the most complex features if not the most complex feature in this project/class due to how intricate the testing flow is.
  • Alex is still concerned about the license. Personally, I'm not too concerned about the license, but I do think Alex has a strong point, and I want to help him get a good ending.

[Wednesday, April 30 | 3h]

  • Tan still has not sent the request dashboard in... he's on vacation and did do good work through the semester, so I'm fine with that.
  • Alex hasn't been contributing on the codebase much since he is working on other classes. I'm personally fine with that because he already has done quite a bit of work. I would not like him to be punished for that since I do think its reasonable that he's crashing out from licensing + his work.
  • Finished the s3 quote functionality, as well all the web flows. Still working on tests, because the tests are really hard to write. I'll see how that goes.

[Friday, May 2 | 2h]

  • Worked more on s3 quotes. I did tell the team that it would get done by Thurs, but the testing was a lot harder than I expected.
  • Met with professor to discuss about the future of this product. The feedback that we got was that this product is about the average he has seen. Which is fine by me, certainly our application is not something groundbreaking.
  • It isn't groundbreaking, but I think there is still a lot of headroom to make our application impressive. Alex seems to have recovered from the trouble with Stewart, and now our team is running at good effeciency. We might actually complete more with our team dynamic patched than our team has ever -- maybe this "incident" between Alex, me, Tan, and Stewart is actually worth it in the end.

[Monday, May 5 | 3h]

  • Made a live deployment of the production server.
  • Finished the remainder system, added Reddis.
  • Talked to Alex and decided to work ahead of the invoicing Stewart has to expetite the process.
  • Alex and I are making a good chunk of the work this sprint.

[Tuesday, May 6 | 2h]

  • Reviewed Alex's PR about the invoices, talked to Stewart about the QR.
  • Got ready the deployment.
  • Feeling good about the presentation tommorow, I think our product is very complete. Now, we just have some stability testing.
  • We did have some hiccups (Stewart), but I'm glad our team pulled through. Our product is not bad, and I think after stability work, we are nothing but ready for modern marvels!

[Reflection | May 7 Final]


We had a pretty good presentation. Every question was answered pretty well, with no significant holes in feature expectations. As the class ends, I want to reflect on process, engineering, and my own thoughts.


In terms of pure technology skills, I learned quite a lot. I finally got to play with Redis and Celery rather than just studying their materials. I learned quite a bit of angular, as well as test writing. There are a lot of places that I didn't learn, but.


I actually think its funny to try to describe what I learned outside of pure technology stack, since its hard to put into words.


"What did I learn in this class?"


I can say things like "I learned how to deal with teammates", "I learned how to make contributions", "I.......". Certainly, maybe they aren't lies. 


I do remember in SELT last semester, when I didn't make as much contributions as I wanted to, when I didn't talk to the people in my team as much as I wanted to. When I look at my time in SELT, the last month or two when I got to get to know my team mates (Alex and Tan) a lot better because of Stewart, and work harder from the issues that arose that we solved together, I think its amazing.


I always had these dreams of being a "carry" on a team, actually putting in work and getting a stellar product. In SELT, I failed to do that -even at the last week. In SEP, not only was I able to work hard the last 3 weeks and get our product to a great one, I also got to know and learn a lot about my teammates and made connections.


Certainly, I think that was quite a meaningful gain for me, even if it isn't very quantifiable. I did enjoy this class especially the last 3 weeks, and I look forward to giving a stellar presentation at modern marvels with the friends I made along the way.