Preserving LVM Cache

While there are a lot of examples that describe how to set up a LVM cache on an SSD for a HDD backed storage, they mostly fail to describe an additional step needed to preserve the cache across a reboot on a Ubuntu system. The culprit is that the drivers needed to enable the LVM cache are not built into the kernel, nor available in the initrd. Therefore, these drivers need to be added to the initrd. Additionally, some cache Read more

Week 8: Lessons from Deep Dive Testing

This week I finally experienced what it’s like to turn testing philosophy into practice and then watch it collide with real code. After a long stretch of trial and error with the QR-scanner tests, I was able to step back and see the bigger picture. Mocking Strategy Mocking started out feeling repetitive, so many when calls! But repetition revealed patterns. I created reusable helpers and fixtures, and learned to mock only what truly matters. For example, JWT tests don’t need Read more

Week 7: From Philosophy to Practice

Last week, I learned about building the right mindset for testing, focusing less on “proving success” and more on “finding boundaries.” This week, I finally moved from that philosophy into hands-on practice. My focus was on integration testing in Flutter, especially around the QR scanner journey. Understanding the Testing Layers More Clearly I deepened my understanding of the three main testing layers in Flutter: It became clear that each layer has its role. Unit and widget tests give speed and Read more

Week 6: Testing Mindset and Safer Conventions

After weeks of wrestling with the QR scanner, I’ve managed to get it to a point where I can finally start focusing on testing, which feels like reaching a checkpoint in a marathon I didn’t know I signed up for. It wasn’t easy (many “why isn’t this working” moments), but with Dr. Shawn’s guidance, I slowly pieced it together. With the scanner ready, my focus shifted from implementing features to implementing their tests. That’s where things got interesting. At first, Read more

Week 5: Best Practices in Action

If Week 4 was about understanding why clean code matters, Week 5 was about practicing the how. I noticed a pattern: the more I leaned on best practices, the less time I spent fighting my own code. This week wasn’t about big refactors, but about sharpening the small details that make code reliable, idiomatic, and easier to maintain. Fixing a Hidden Bug This week I ran into a null pointer exception when trying to access a performance’s event during a Read more

Week 4: Cleaner Code, Stronger Architecture

This week was less about adding shiny new features and more about writing clean, maintainable code. I realized that writing code isn’t just about making it work, it’s about making it safe, secure, and sustainable. A single misplaced file, a missing assert, or scattered logic might not break the app immediately, but it creates silent risks that will show up later. Week 4 became a turning point where I learned how to protect code, keep it organized, and respect clean Read more

Week 3: QR Scanner Implementation & Live System Support

Week 3 was where development met real-time pressure. I dove into implementing the QR code scanning workflow, translating an abstract idea into a working feature that users could interact with. At the same time, I stayed on call for live system operations, tackling issues as they surfaced. That constant switch between building and troubleshooting pushed me to think not only about functionality, but also about how resilient features need to be in real-world conditions. Building the QR Scanner Workflow The Read more

Week 2: Refining Features & Optimizing Performance

This week was all about polishing last week’s work, boosting performance, and making sure features weren’t just functional but also aligned with our project’s design and reliability standards. I wrapped up the spell checker, added a debounce system to improve local storage usage, and saw firsthand how small tweaks can make a big impact on both user experience and system efficiency. Refining the Spell Checker Last week’s spell checker worked well, but it still had room for refinement. My focus Read more

Week 1: Hitting the Ground Running

My first week of internship was a hands-on introduction to real-world development and event support. From providing on-site technical support to contributing to production-level development, I quickly transitioned from observation to contribution. I explored the technical stack, upgraded key integrations, and implemented a new AI-powered feature, all while learning how teamwork, code quality, and user experience intersect in a professional environment. Event Support & System Overview My internship began with direct involvement in a live event. I assisted with the Read more

Week Thirteen of Internship

In Week 13 of my internship, my focus shifted heavily toward fixing tricky bugs, ensuring dashboard accuracy, and improving how user-related data is handled in different areas of the admin interface. Unlike the previous week, where most of my attention was on form validations and rendering behavior, this week taught me how deeply connected components and data flow can be and how a small oversight in logic can cause confusing bugs in production. From analyzing bugs that affected filters and Read more

Week Twelve of Internship

In Week 12 of my internship, I dove deep into testing React Admin components using Jest and React Testing Library. This week taught me critical lessons about how to write effective tests that not only check if components render but also verify behavior, data consistency, and user experience. Working specifically on the List page and dashboard, I gained practical insights into testing complex admin interfaces lessons with React Admin and Jest. Test for What Users Actually See and Do Writing Read more