In the next two lections of JUSTICE you dive into the intriguing debates on military conscription, personal choice, and patriotism. Then explore the ethical dilemmas of surrogacy, consent, and commodification in the riveting. Uncover the limits of government power and the complexities of reproductive technology in these captivating discussions. I am sharing my mind-map from the lectures as usual: Download full mind map (PDF) Summary of the lectures: Lecture 9.
We are continuing to study an interesting book about Google’s culture and practices: Chapter 2 covers: Working in isolation vs working in a team. Amount of time that you and your team spend communicating and in interpersonal conflict. How a small investment in understanding personalities and working styles of yourself and others can go a long way toward improving productivity. If you want to work effectively with a team or a large organization, be aware of your preferred working style and that of others.
Next two lectures uncover the intricacies of John Locke’s theories on NATURAL RIGHTS and CONSENT. Quite an interesting turn in Philosophy of Justice. However, the problem with John Locke is that borders in his ideas are a bit fuzzy. I am sharing my mind-map from the lectures as usual: Download full mind map (PDF) Summary of the lectures: Lecture 7. John Locke: Property Rights (NATURAL RIGHTS) In this lecture, the speaker discusses John Locke’s beliefs on individual rights, which include the natural rights to life, liberty, and property.
These “Justice” lectures are covering my favorite topic - Libertarianism. If I need to define my political views in one word, it would be Libertarianism. HOWEVER, when I am talking with my Libertarian acquaintances, I can call myself a “Pro-states man.” ;-) For me, it is very clear why Libertarianism is not so popular: most of the people who promote it are fanatics they try to see the world in “black and white” and close their eyes to fundamental problems.
I continue overviewing lectures about Justice and sharing my mind-maps. This time I’m sharing my mind-map from the lectures on Utilitarianism. Download full mind map (PDF) Summary of the lectures: Lecture 3: Utilitarianism - Jeremy Bentham In this lecture, the speaker discusses Jeremy Bentham’s version of utilitarianism, which aims to maximize general welfare by balancing pleasure and pain, and the application of utilitarianism in cost-benefit analysis used by companies and governments.
I have started a repeat of Harvard’s course Justice by Professor Michael J. Sandel. This course is about philosophy and discusses what is good and what is bad, and how these ideas have evolved over time. The course is especially important in today’s world as AI will soon be making decisions about WHO SHOULD LIVE AND WHO SHOULD DIE (being an IT specialist, I am interested in the patterns of falling into the first category, as you may guess ;-)
Our IT books club has started reading new book - about Software Engineering at Google - processes, culture, and tools that help Google create and maintain high-quality software. First chapter is about Software Engineering in general: What is Software Engineering vs Software Development/Programming? Three principles Google consider: Time and Change Scale and Growth Trade-offs and Costs How these three principles are applied to Software Engineering and how it is different from Software Development/Programming Interesting opening chapter of the book:
The previous chapters have described the underlying technologies such as consistent hashing, ID generator, and now using these techniques we can develop a URL shortener that can generate 100 million URLs per day. Design consists of the following elements: API endpoints URL redirecting URL shortening Data model Hash functions: Hash + collision resolution vs Base-62 conversion Additional topics to consider: Rate limiter Web server scaling Database scaling Analytics Availability, consistency, and reliability These items are disclosed in a very interesting Chapter 8 of the book:
Generating unique ID seems to be a simple task, but it is not in a high-load distributed systems! This topic consists of: Understanding the requirements and why it is a complicated task Possible solutions: Multi-master replication Universally unique identifier (UUID) Ticket server Twitter SNOWFLAKE approach (seems to be the best one!) Details: Timestamp Sequence number Other issues Clock synchronization Section length tuning High availability These items are disclosed in a very interesting Chapter 7 of the book:
Key-Value stores are the most basic but widely used data storages. Design of key-value store consists of understanding the following topics: What do we want from key-value store? Single server key-value store DISTRIBUTED key-value store: CAP theorem Real-world trade-offs for distributed systems System components: Data partition Data replication Consistency Inconsistency resolution: Versioning Handling all types of failures: Failure detection, Handling TEMPORARY failures, Handling PERMANENT failures, Handling data center outage System architecture diagram Write path Read path These items are disclosed in a very interesting Chapter 6 of the book: