Single-Responsibility Principle A class should have one and only one reason to change, meaning that a class should have only one job. Open-Closed Principle Objects or entities should be open for extension but closed for modification. Liskov Substitution Principle Let q(x) be a property provable about objects of x of type T. Then q(y) should…
Category: Software Engineering
Authentication vs Authorization
Make it clear once and for all. Authenticate Identity. Authorise Action
What is Web Programming
WHY What can you building or what should you be able to do being a Web programmer. Simple answer is building and publishing a website online. At Entry level you should be able to put up a simple website . Medium level you should be able to make your own page like facebook. Advance level…
To solve the commutation issue in software development
One software developer can build whatever he wants. Two software developer need to communicate their work over. The code is the ultimate truth, but sometimes it is hard to understand even for the developer himself Ideally there should be some block of information that is well defined, easy to comprehensive, effortless to communicate, and quick…
Why function becomes not pure
Pure function is absolute. It gives definite outcome on certain input. Otherwise the function is not pure. A function becomes not pure when its calculation depends on context other than parameters. Then the question rises: why not just pass the context in as parameters? Yes you can, at the level of modelling and core business…
Problem with time and timezone
You may think to yourself, Oh I understand timezone, I fly a lot and timezone is easy to me. Try to think deeper and answer the question that no one can answer: What is time Time is not a thing, it is actually an imaginary system we create to keep track things and collaborate. In…
Big O
http://bigocheatsheet.com/
CppCon 2015: John Farrier “Demystifying Floating Point”
store simtime as unit64_t abd get microsecond precision for 584555 years
Anti-Pattern
Maybe there is no universal truth in software best practises because every problem you trying to solve is different. Best from the comments: My favorite anti-pattern is Resume Driven Development: Using solutions that are not needed for solving a problem that doesn’t exist in order to add experience with a particular technology on your resume.