What did you do this past week?
This week I worked on the IDB project with my team for my SWE class. I also worked on the Darwin project for my OOP class.
What's in your way?
I have been putting off work recently and as a result I have fallen a bit behind.
What will you do next week?
Since I have fallen a bit behind, this week I will work towards finishing my work, including the IDB project for SWE and the Darwin project for OOP.
What did you think of Paper #9. The Dependency Inversion Principle?
The Dependency Inversion Principle (DIP) is crucial in software engineering as it promotes loose coupling and high cohesion within systems, thereby increasing maintainability, scalability, and flexibility. By following the DIP, code depend on abstractions rather than concrete implementations, allowing for easier modification and extension without affecting the entire system. This principle fosters modular design, enabling components to be developed and tested independently, facilitating parallel development efforts within teams. DIP also facilitates the integration of third-party libraries or frameworks seamlessly, as it abstracts dependencies behind interfaces, shielding higher-level modules from changes in lower-level implementations. Overall, the Dependency Inversion Principle serves as a cornerstone for building robust, adaptable, and easily maintainable software systems in the ever-evolving landscape of software development.
What did you think of instance methods, static methods, class methods, select, and project?
- Instance Methods: Instance methods operate on an instance of the class and have access to instance variables. Instance methods can modify instance attributes and are typically used to encapsulate behavior related to a specific instance of the class.
- Static Methods: Static methods are defined using the
@staticmethoddecorator and do not have access to the instance or class variables. They behave like regular functions but are defined within the class's namespace for organizational purposes. Static methods are useful when a method doesn't require access to instance or class attributes. - Class Methods: Class methods are defined using the
@classmethoddecorator and take the class itself as the first parameter, conventionally namedcls. Class methods have access to the class variables and can be used for operations that involve the class itself rather than specific instances. - Select:
Selectis the operation of retrieving specific data from a dataset based on certain criteria. - Project:
Projectrefers to the operation of selecting a subset of columns from a dataset.
What made you happy this week?
This week, my friends and I met together to cook some Indian food, which was delicious and a very enjoyable experience.
What’s your pick-of-the-week or tip-of-the-week?
This week, researchers published a paper releasing their discovery of an unpatchable vulnerability in Apple's M-series chips that can leak secret encryption keys. The vulnerability is caused by the chips' data memory-dependent prefetcher (DMP), which predicts and preloads data into the CPU cache for improved performance. However, the DMP sometimes treats encrypted data values as memory addresses, prefetching data from those "addresses" and leaking information through the CPU cache side channel. While difficult to exploit, this could allow attackers to extract encryption keys over time from cryptographic operations run on the same CPU cluster. Fixing the issue would likely degrade cryptographic performance on M-series chips. Ars Technica — Unpatchable vulnerability in Apple chip leaks secret encryption keys