Week04

Part 1: Reflection on In-Class Git Instructions

This exercise comprehensively covered the basic functionalities and workflow of Git, allowing us to experience the power of version control through hands-on practice. Below are my key takeaways from this exercise:

Initialization and Basic Commits

At the beginning of the exercise, we used git init, git add, and git commit to familiarize ourselves with adding files to version control. By repeatedly checking git status and git log, we gained a clear understanding of how each operation affects the repository.

Change Tracking and Differences

After modifying files, we used git diff to compare the differences between commits. This gave me a deep understanding of the importance of version control—not only for recording history but also for precisely identifying changes. This is particularly useful for debugging and tracking modifications.

Understanding Git’s Internal Structure

By using git cat-file -p, we explored the structure of commits, trees, and blobs, which helped me understand how Git efficiently stores data. Gaining insights into these underlying mechanisms enhances our ability to utilize Git’s advanced features effectively.

Branch Operations and Merging Strategies

We created a new branch called potential_jokes in this exercise and added new content in different branches. Switching between branches, observing changes in the working directory, and merging branches highlighted the importance of branching in parallel development. Additionally, we intentionally introduced merge conflicts to learn how to resolve them using git mergetool.

Accidental Deletion and File Recovery (git restore)

This part of the exercise made me realize the importance of git restore, especially in collaborative development where erroneous versions can cause significant issues. In our Web Extension project, we encountered a similar situation—an incorrect version caused the entire project to break. Ultimately, we used git restore to revert to the previous correct version, successfully restoring the project. This experience reinforced the idea that Git is not just a version control tool but also a “lifeline” that allows us to quickly recover from critical issues and maintain a stable development environment.

Squashing Commits

Although the exercise only briefly touched on squashing commits, it provided valuable insight into maintaining a clean commit history. By merging multiple commits into one, we can keep the history concise and organized, making future maintenance and collaboration more manageable.

Overall, this Git exercise gave me a deep understanding of version control in real-world development. From tracking files to managing complex branches, resolving conflicts, and restoring data, every step contributes to a solid foundation for effective collaboration and code management. In particular, git restore proved to be a powerful tool for handling unexpected issues and ensuring project stability. Through these hands-on experiences, I gained a more comprehensive understanding of Git’s workflow and internal mechanisms, preparing me for more advanced project management in the future.


Part 2: Comments on Other Groups’ Presentations and Extensions

All the Web Extensions created by the groups were both practical and interesting, showcasing different creative approaches and functionalities. Below are my thoughts on each project:

Virtual Pet Extensions

Two groups chose to create virtual pet extensions, but their designs and innovations were distinct. One featured a highly interactive UI with adorable visuals, enhancing user engagement. The other cleverly used browser refresh mechanics to display a new cute cat GIF with every refresh, making the experience fun and engaging. Although both fall under the same category, one emphasized interactive engagement, while the other focused on visual appeal, each with its unique charm.

Team 6 - I-Did-That Extension

This extension took a creative approach by incorporating real-world elements, designing a Trump icon that dynamically appears on specific web pages. This integration made the icon more contextually relevant, providing users with an amusing and unique browsing experience. The novelty and innovation in this project stood out.

Team 3 & Team 9 - Time Management Extensions

  • Team 3’s Tomato Clock replicated the classic Pomodoro timer. Although similar extensions and apps already exist, their implementation was well-executed, making it a practical time management tool for users.
  • Team 9’s Website Time Tracker took a more minimalist approach, offering a concise and straightforward solution without unnecessary UI complexity. It is ideal for users who simply want to track time spent on websites efficiently.

GitHelper

This extension had a great concept and could be highly beneficial for developers. However, as I mentioned in class, its current implementation primarily lists common Git commands without additional enhancements. If the commands were categorized and provided with brief explanations, along with a quick-copy function, the usability of this extension would be greatly improved.

Browser Scroller

This project was quite interesting, and I see its primary use case in reading long web pages. For users browsing lengthy articles, research papers, or forum threads, an automatic scrolling feature could provide a smoother reading experience, reducing the need for manual scrolling and improving usability.

Overall, each group demonstrated unique problem-solving approaches and creative implementations. Some emphasized interactivity, others focused on utility, while some explored humorous and fun enhancements. Watching these presentations provided valuable insights into different ways Web Extensions can be designed and improved.


Part 3: Biggest Takeaways

From My Group Work

The biggest takeaway from our group work was learning how to revert Git versions, especially using git restore. This was my first time applying git restore to manage code versions, and it proved invaluable when an incorrect version caused the entire project to break. By restoring a previous correct version, we were able to get the project running again. This experience taught me that Git is not just a tool for committing and managing code but also a crucial “safety net” that helps quickly revert changes and fix errors. In a collaborative setting, version issues are inevitable, and git restore allows for flexible and efficient recovery, preventing unnecessary rework.

From Watching Other Groups

The biggest takeaway from watching other groups was the importance of contribution, discussion, and the code of conduct (CoC) in open-source projects. Some teams put a lot of effort into these areas, ensuring well-defined contribution guidelines, active discussions, and clear CoC policies. This made me realize that these elements are just as critical as the code itself. In the past, I focused more on getting the code to function correctly, neglecting aspects that make a project easier for others to use and contribute to. Observing other groups made me appreciate that:

  • A clear Contribution Guide lowers the barrier for new contributors and improves collaboration efficiency.
  • Effective discussion mechanisms (such as PR reviews and issue tracking) facilitate communication and reduce misunderstandings.
  • A Code of Conduct ensures inclusivity and order in team collaboration, fostering a healthier open-source community.

This reflection made me realize that, in future projects, I should not only focus on the code but also on the surrounding “non-code” aspects, such as writing a well-structured README, providing detailed contribution guidelines, and encouraging meaningful discussions. These elements significantly enhance collaboration and ensure the long-term sustainability of a project.

Expanding on this, this experience deepened my understanding of how the open-source community operates. A successful open-source project is not just about having great code but also about effective communication, clear documentation, and a welcoming collaborative environment. Moving forward, I plan to emphasize these aspects more, improving my skills in teamwork and open-source contributions.

Written before or on February 12, 2025