How to simplify your life

We’re living in a well connected world with a faster change in life in all areas. Everyday, our life is becoming more complex than before. We have increasing expectations at work, in personal life, and in society. In addition to it, many of us are hankering to get more results and happiness from our life. Many of us wish to be increasingly more productive everyday, to get more things done within a least amount of time and effort. But the reality is that we all have limited time (just 24 hours) in a day.

At work, there is a constant need to continuously learn and perform. For example, if you’re a computer programmer, there is a need to continuously improve your development skills. It’s similar for any role in the technology industry. Technologies are changing on a faster pace with the continuous innovation. Also, as we grow in our career, we have expectations of more advanced skills at work, that needs acquiring skills beyond the current knowledge base. For example, a senior developer may be expected to learn more about company’s overall technical architecture. On one hand, new technologies are ever more complex. On the other hand, businesses have a need to continuously innovate, to stay relevant and dynamic in the market.

In personal life, we all have expectations from each other in the family, friends, or society. For example, if you’re a father of a 3-year old kid, you may desire to spend as much as possible with your kid. When you spend less time, you may feel guilty of not doing enough. Similarly, if the society expects you to participate in a social cause and you’re unable to spend enough time, you may again feel guilty of not doing your part for the society. In addition to expectations of others, many of us have high expectations from ourselves, with an eagerness to be more productive, to increase our self-worth.

Question is, how we manage our life with so many expectations, needs, and desires? An initial step to simplifying life is to define your focus areas, goals, actions, and avoid distractions.

Define your focus areas:

Define what’s important for you to live a wholehearted complete life. Ask yourself what are all things you want to do in your life. In the beginning, it may be a long list of items to do. By spending more time to reflect on it, you may categorize them into areas. Your selected focus areas must include all aspects of your life, to live a wholehearted life. For example, you may want to earn money for your living, spend time with your family, and take care of your health. Deciding our focus areas help us to assess the priority in the moment and say no to anything else. When we’re overwhelmed with many things to do, we can take a step back, and remind ourselves about our focus areas. Defining focus areas bring the clarity of actions. It also help us to understand how much time we can spend in each focus areas, in the order of importance. For example, below are my focus areas:

  • Spiritualism: it defines who I am, what I want to do in my life, and how will I do it. It is to understand what are my personal mission, vision, and values. For example, my core value is service. I want to serve others, to add value to their lives. To link all focus area together, let’s use the analogy of a tripod stool, with a base and its three essential legs. Spiritualism is the base of my tripod stool analogy.
  • Fitness: it includes my physical health, mental health, and a well-balanced diet. Without fitness, I can’t perform my desired activities. In the analogy of a tripod, fitness is the first essential leg.
  • Family and friends: it is to gain and provide the support from and to my family and friends. As Aristotle said, “Man is by nature a social animal.” We all want to love others and being loved by others. We all want a support system of people. In my tripod analogy, this is the second essential leg.
  • Finance: it’s critical to plan for financial needs. For me, money is not the end goal; it’s a means to fulfill the needs of my life. In my tripod analogy, this is the third essential leg. To earn money in a meaningful way, we must find out what we are good at doing naturally. For example, if you’re good in understanding technologies, defining technology vision, and working with people, you may wish to get a job as an engineering leader.

Blend all-together when possible: Try to blend your focus areas with each other, as much as possible because blending it makes it easier to follow and relate it to your complete life experience. It’s like keeping a tripod stool as one wooden product, with its essential legs linked strongly with its base. For example, this is how I have my focus areas blended. In spiritualism area, I practice my core value, service. In all focus areas, I intend to serve. For finance, I work as a technology leader. As a technology leader, I am contributing to people’s lives, by creating technical solutions to their problems. I contribute to the family and friends by taking care of them, by sharing what I know, and help them succeed in their lives. By focusing on my fitness, I am helping myself, my family, and friends. Without staying fit, I won’t be able to serve anyone.

Let’s take another example. Suppose your focus areas are family, society, finance, and fitness. Suppose you have a family owned business of yoga classes. Then, all your focus areas are well-blended. In this business, you’re spending more time together as a family. You contribute to the society by training others on yoga classes. You earn your living with this business of yoga classes. You stay fit by doing yoga, while training others on it.

Define goals:

We defined focus areas. Next, we want to define goals for each defined focus areas. To make progress on your focus areas, define your life-time, long-term (5-year), 1-year, 1-month, 1-week, and even a 1-day goals for each focus area. For example, for finance area, you may find below questions valuable for your time-bound goals:

  • Life-time: for my life-time, how much money your family and you need, for all expenses like retirement, kids education, vacation plans, housing expenses, etc? Define what’s your life expectancy? Define when do you expect major expenses and how much money is required for each such expense?
  • 5-year: what are upcoming expenses in 5-year roadmap and how much money you need for it? Find out how a 5-year roadmap makes a difference to a life-time financial need. How do you plan to earn and save to reach this milestone? Is your current earning plan enough to meet the needs? If not, what changes you plan to make, to meet your financial needs? Some examples of changes could be to increase your business, to get a higher salary job, or to plan for a side hustle.
  • 1-year: how much earnings and savings are required in this year to achieve your 5-year milestones?
  • 1-month: how much you need to earn and save this month, to achieve the yearly goal?
  • 1-week: how much you need to earn and save this week, to achieve the monthly savings goal?
  • 1-day (today): what actions today will help achieve my weekly savings goal? For example, should I avoid having at least one meal outside and cook at home, to save money just for today’s goal?

Plan for actions with a schedule:

So far, we identified our focus areas and long-term & short-term roadmaps to work on tasks on focus areas. Next, it’s the time to think about a more focused time window, to actually perform actions. For some tasks, an yearly or a monthly time period makes more sense. For example, you may want to plan for a yearly long-distance vacation, three mid-distance quarterly vacations, and a weekly short-distance vacation (on weekends). Though, for some tasks, a year or a month is a good time duration, a week is still a good timeframe to plan for and validate tasks in all focus areas. To achieve anything in life in the future (tomorrow), it’s critical to define what actions you will perform today and at what time. For example, here is a sample time allocation for my focus areas for a week, with the planned actions for today and at expected time:

  • Spiritualism: I try to focus 15 minutes daily on meditation when I wake up. During the day, I try to be aware of my spirituality, whenever possible. That helps me to focus on my life and it helps me to avoid moments of slipping in the grip of ego. On weekends, specially on Sundays, I prefer more time on this area (like read books, visit places, etc.), to strengthen my belief and continuously discover who I am.
  • Fitness: I try to spend about 30 minutes every day on fitness. During weekdays, it’s after the work. During weekends, it’s afternoon. For the type of fitness activities, I try to follow the weekly CDC health guideline of doing 150 minutes of moderate-intensity physical activities and 2 days of muscle strengthening activities.
  • Family and friends: I try spending around 2 hours everyday with my family. It’s planned in the morning and after the work hours. On a weekly basis, I attempt to call or meet my friends and extended family members, to know how they’re doing, and how we can help each other in anyway possible. An example of a help could be to just listen to someone’s problems with empathy and without judgement.
  • Finance: Define how much time you want to allocate to this area. Defining the time window helps to avoid working on it more than required. To be productive and relevant at work, define how you will spend your day at work. Thinking to act on more than one item at a time doesn’t work; it could cause anxiety and restlessness. So, work on one task at a time in the order of importance. For example, my friend, who’s a programmer, allocates 9 hours every weekday for the work. In these 9 hours in the weekday, he plans to work on his assigned tasks with the order of business priority. In addition to it, he always seeks opportunities to build relationships. He also tries to attend at least one training every year, to upgrade his skills. If that training needs a commitment for an entire week, he plans to take time off from work activities, so that he’s not working after work hours because that may negatively impact other focus areas.

Plan for unplanned: There is a possibility that something may show up unplanned. Planning for unplanned tasks is equally important. Plan for a few hours in the week for the unplanned tasks. For example, reserving 5 hours on weekends help to mitigate the risk of managing an unplanned task. If unplanned tasks doesn’t show up in the week, you may utilize those 5 hours for a waiting to-do list item, or use it as a free-will time.

Plan for ad-hoc needs: Also, on ad-hoc basis, you may need additional time to focus more on one activity within your focus area. It could be a weekly meditation plan or a need to learn a new skill that needs complete weekly 40 hours. Can you fit those within your busy week? The brief answer is No. You can’t “find” time on a regular weekday because it doesn’t exist. Accepting this reality of time limitation helps avoiding stress and anxiety. If you plan to find time for one outstanding task, other areas could be impacted, which is not good for the wholehearted living. If you need more time in a week for a particular area, find alternatives. For example, to join a week-long full 5-days meditation program, take time off from work.

Avoid distractions:

Now as we defined our focus areas of life, we need to stay focused on these, by avoiding distractions. Clarity in life helps to focus on right things at the right time. Many times, we wish for many things, but those are different from our needs. Many of us dream to become “something bigger” or “uniquely famous.” Whenever your mind wanders and distracts you from your already defined focus areas, question yourself to assess your thinking. Whenever you have a need or a wish for a new task, assess if it fits within your defined focus areas and defined goals. Assess a new want against your mission, vision, and core values.

Here are some examples of some common desires categories that needs a constant assessment:

  • Money: You may want to become the world’s richest person. Assess this desire with your mission, vision, and core values. Assess how it fits within our focus areas and goals. If you have a focus area of finance, you have already decided how much money you need for your financial needs for the lifetime. Assess how earning more than required helps in any of your defined areas. If not, it seems like a desire of ego to become something bigger or someone special, without a reality.
  • Fame: You may want to become famous. Assess this desire with your mission, vision, and core values. Assess how it fits within our focus areas and goals. For example, if you like writing and want to contribute in the world, to help others, assess the impact of people’s life with your writing, instead of becoming famous with 10K followers on social media. The desire to becoming a top follower is ego’s drama. Whereas, creating and sharing best articles of your life could be related to a focus area, to help others.
  • Respect: You may want to be most respected person in the world. Assess this desire with your mission, vision, and core values. Assess how it fits within our focus areas and goals. Instead of becoming the most respected person in the world, you want to ensure an environment of mutual respect for each other.

To know more deeper about human life, learn about body, mind, and ego. Learn why mind wanders, why it compares, and how to deal with it. In addition to unlimited desires, we may also be trapped in demands by others. Before saying yes to any request from anyone, assess how it fits your focus areas. If it doesn’t fit, say no. If required, read trustworthy books about how to say no to others, when you don’t want to say yes.

What’s next:

Simplifying the life is an important key skill, to avoid being overwhelmed, and living a wholehearted life. It’s the skill that takes time to learn and practice. Bringing clarity in life helps to plan for tasks that are feasible within the given limited lifetime. Decide what’s important for you in the life and act on it, with careful planning and actions. While making the progress, plan to reflect on the journey. You may decide a periodic self-reflections of weeks, months, quarters, and the year. In addition to it, getting feedback from others on your journey is equally valuable. It needs a continuous self-discovery and a desire to get feedback from others about yourself. Refer to the Johari window about knowing yourself. As you learn and grow, make required corrections to the journey.

AWS Cloud practitioner basics

Introduction:

  • Cloud practitioner overview is for non-technical roles. It helps taking business decisions of choosing a cloud solution. Cloud is a pay as you need solution.
  • On premises deployment is also known as a private cloud deployment.
  • Hybrid deployment: Hybrid environment has both, on premises and cloud deployments. Maybe for some applications, it makes sense to use on premises solution and for some, it makes sense to use a cloud deployment.
  • Amazon Athena: It is a query service to query S3 data, using standard SQL.
  • Cloud search: It is a search service that can be implemented for an application.
  • Container orchestration tools: ECS and EKS. Both use dockers for containers.
  • AWS Fargate: It is a serverless compute platform for ECS or EKS. In ECS and EKS, we need to manage servers. In Fargate, servers are managed by Amazon.

Global Infrastructure and Reliability:

  • Regions: AWS has multiple regions. No data goes to another region by design. There are ways to allow data access across regions. Four factors to choose a right region: compliance, proximity, feature availability, and pricing.
  • Availability zones: Regions contains Availability Zones. Regions are not at one location. Each region is made of multiple data centers. Ann availability zone has a single or group of data centers.
  • To maintain fault tolerance, it’s recommended to run applications with at least two availability zones in a region.
  • Edge locations: Edge locations run Amazon Cloudfronts. Amazon Cloudfronts these are global Content Delivery Networks (CDNs) of Amazon. It uses edge locations to accelerate content deliveries. We can use these to cache the data closed to customers locations. Edge locations also run DNS services called Amazon route 53.
  • AWS Outposts: These are isolated infrastructures within a company’s building.

Ways to interact with AWS:

  • AWS management console, AWS Command Line Interface (CLI), AWS Software Development Kits (SDKs), and other tools (like Cloud formation).
  • AWS management console are good for beginners.
  • AWS Command Line Interface (CLI) are better for production environment. using CLI, we can invoke commands to interact with terminal instances and automate processes.
  • AWS Software Development Kits (SDKs) allow to interact using various programming languages.
  • Other tools:
    • AWS Beanstalk allows us to let AWS create the desired infrastructure.
    • CloudFormation: allows us to manage infrastructure as code, to define configurations of the infrastructure.

Networking:

  • Amazon Virtual Private Cloud (VPC). Public subnet: an area that is open to public. Private subnet is not open to public. Internet gateway is kind of a door that allows selected network to be inside the network. VPC allows the private traffic to get inside the network. It doesn’t allow public network to get inside the network. AWS Direct Connect provides a direct connection to your network.
  • Public subnets contain resources that should be accessible by the public. Private subnets contain resources that must be accessible only through the private network, like a database.
  • Access Control List (ACLs) protect the subnet.
  • Security groups protect the individual server instances as security groups are at a server instance level.
  • Security group is stateful. It remembers who is allowed to enter into a server instance. ACLs are stateless.
  • DNS Route service: it helps to provide an IP address of a website.

Storage and databases:

  • Instance stores and Amazon Elastic Block Store (EBS): Block stores are blocks to store files. Hard drive of the computer is an example of a block store. With EBS, we can create virtual hard drives. Incremental backups on EBS are called snapshots.
  • Amazon Simple Storage Service (S3): At S3, we can store files. We store files in buckets. 5TB is the maximum size of a file/object. S3 standard provides very high availability. It stores data at least three facilities. S3 Standard infrequent (S3 IA) is suitable to store files that needs less frequently. S3 glacier can be used to store archives that are rarely to be accessed. AWS supports more S3 types for the various types of data storage needs.
  • EBS versus S3:
    • S3 is serverless. We don’t need any EC2 or another instance, to manage S3 buckets/storage.
    • If we need multiple updates, EBS is a better choice. If we’re changing complete objects, S3 is a better choice.
  • Amazon Elastic File Systems (EFS): With EFS, we can keep existing file systems.
  • EBS versus EFS: EBS volumes are attached to EBS instance. EFS can have multiple instances used at the same time. EBS stores data in a single availability zone. EFS is a regional resource.
  • Amazon Relational Database Service (RDS): It supports a variety of databases.
  • Amazon Aurora: it is compatible with MySQL and PostgreSQL at a 1/10th of the cost.
  • Amazon DynamoDB: It is a serverless and a non-relational NoSQL key-value database.
  • RDS versus DynamoDB: For complex relational joins for analytics, use RDS. For single table types data, key-value is a good choice.
  • Amazon Redshift: It is a data warehousing service that can be used for big data analytics.
  • AWS Database Migration Service (AWS DMS): This service helps to migrate databases on a one time or a continuous migrations models. For example, this service can help to migrate a MySQL database to an Amazon Aurora database. This service can also help to consolidate multiple databases to a single database.
  • Additional Database Services: There are other database services supported by AWS. For example:
    • Amazon Neptune is a graph database.
    • Amazon Document DB for document databases that supports MongoDB workloads.
    • Amazon Quantum Ledger database (QLDB) is a ledger database. For example, QLDB can help to review a history of all changes made to an application data.
    • Amazon Managed Blockchain to create and manage blockchain networks.
    • Amazon ElastiCache to add caching layers on top of a database, to improve the read activities.
    • Amazon DynamoDB Accelerator (DAX) is an in-memory cache for DynamoDB.

Security:

  • Shared responsibility model: Both, AWS and AWS developers are responsible for the security.
  • User permission and access:
    • Root user: A root user is an owner that can not be restricted anywhere where they are owners.
    • IAM User: A user can not login by default. A user needs explicit access to any resources. We need to attach an IAM policy to a user, to provide an access to a resource.
    • Role: roles allow or deny the access to a resource.
    • IAM policy: An IAM policy is a document that allows or denies permissions to AWS resources.
    • IAM groups: An IAM group is a collection of IAM users.
  • Compliance: AWS provides ways to be compliant as per the needs within the country or the region of the business.
  • Distributed Denial of Service (DDoS): AWS security features help avoid DDoS attacks.

Monitoring & Analytics:

  • CloudWatch: CloudWatch can helps in monitoring in many ways. For example, we can generate alerts based on some logs.
  • CloudTrail: It’s an API auditing tool. It helps to log user actions entries, to analyze who did what and when.
  • Trusted Advisor: It’s a service that will utilize your applications/resource about cost optimization, performance, security, fault tolerance, and service limits.

Pricing and Support:

  • Free Tier: 12 months free.
  • Billing Dashboard: This is useful to know about the cost of running your AWS infrastructure.
  • Consolidated billing: it allows to view all costs of multiple accounts at one place.
  • AWS Budgets: we can define a budget amount so that we get an alert when budget is reached.
  • Cost Explorer: it shows where are we spending more money so we can track it over time.
  • Support Plans: Basic Support is free. Business support plan includes all AWS trusted advisor checks at a low cost.
  • Five pillars of the well-architected framework: operational excellent, security, reliability, performance efficient, and cost optimization.
  • Marketplace: Here, we can find click and go services.

Migration and Innovation:

  • Cloud Adoption Framework (CAF): CAF can help to migrate resources to AWS.
  • Migration strategies: Six Rs for migration are six possible options for the migration. Six Rs are:
    • Rehosting: Lift and shift.
    • Replatforming: Lift, minor changes, and shift. No code changes.
    • Retire: Do not migrate.
    • Retain: These are applications that maybe about to go end of life. Do not migrate these and plan to decommission these.
    • Repurchasing: Applicable to business who are looking to repurchase new vendor softwares.
    • Refactoring: Write new code. Driven by strong business needs, to write new code. This has highest initial cost.
  • Snow Family: Three sizes below in the order of lower to a higher capacity:
    • Snowcone: contains edge computing. This is used to ship TBs of data to AWS to backup at AWS.
    • Snowball Edge: They fit into existing servers.
    • Snowmobile: Ideal for larger migrations. Up to 100 Petabyte data.
  • Innovations with AWS:
    • VMWare cloud on AWS: We can migrate VMWare based infrastructure on prime can be moved to AWS.
    • SageMaker: It builds and trains ML models using popular open sourced frameworks.
    • Augmented AI: It is for AI solutions.
    • Lex: It is the technology for Alexia.
    • Textract: To extract text and data.
    • DeepRacer: Experiment reinforced learning.
    • Internet Of Things
    • Ground Station

Cloud Journey:

  • Three tier architecture: Load Balancer, EC2, and Databases. Pillars of a well-architected framework:
    • Operational excellence
    • Security
    • Reliability
    • Performance Effienciency
    • Cost Optimization
  • We can use a well architected tool to suggest where are gaps in an application at AWS.
  • Benefits of AWS Cloud: Six main benefits of using AWS cloud:
    • Trade fix expense for variable expense: assess cost for: Physical space, Hardware, Staff for racking & stacking, Overhead of keeping data center running, and Fixed cost.
    • Benefit from massive economies of scale
    • Stop guessing capacity
    • Increase speed and agility
    • Stop spending money running and maintaining data centers
    • Go global in minutes

Reference:

  • AWS Cloud Practitioner Essentials course.
  • AWS documentations.

Finding and doing the work we love

In this article, we’ll discuss how to find and do the work that is more joyful to us.

Why to find the work we love:

When we do the work we love, work is more enjoyable. The best work is possible when we find the joy in doing it. To find the joy in what we do, it’s important to be who we are. That’s when we can be the best at what we do. If someone likes playing a sport and is completely engaged in it, playing that sport does not seem to be the task that needs efforts. Finding the joy is important to succeed in what we do.

“Choose a job you love, and you will never have to work a day in your life.” – Confucius

Why not to be driven by goals:

“When you want to arrive at your goal more than you want to be doing what you’re doing, you become stressed.” – Eckhart Tolle

As Eckhart Tolle suggests, the real joy is being in the present moment. When we’re chasing a goal, we’re waiting for the next moment in that we wish to be happier. That next moment of happiness may be in the next moment. And waiting for the next step may continue. It doesn’t mean we shouldn’t plan. If we love doing something, we live in that moment to do the best work of our lives. Future is built today and in this moment. If we’re driven to achieve the next career position, we’re bound to assess our efforts required to achieve that next position. On the other hand, if we’re inspired with doing our job well, we experience the joy of doing it. For example, I have a friend who is driven from getting a promotion at work. As his next promotion is delayed, he’s upset and feels less valued. He feels that his efforts are not appreciated. And perhaps it may demotivate him to do the best work when his goals and ambitions of getting a promotion are not fulfilled. I’ve another friend who is driven from doing the task for the joy of doing it. She loves mentoring people to perform their jobs to the best they can. She loves taking initiatives. She is not concerned about the next promotion at work. Even when she’s not at work, she loves improving her leadership skills because that’s what she loves to do. She works with the integrity, not because someone is watching her doing the right thing. She does it because doing the leadership work is natural to her. She does it because that’s what she believes she is born to do.

How to find the work we love:

To find out the work we enjoy, find out what we’d do if we’re not paid for it? What is it that’s not the “work” for us? For example, if you like writing, would you still write even if no one reads it, no one appreciates it, and no one pays for it? It may sound very challenging to accept. The deep meaning here is to seek internal happiness in doing the tasks for the joy of doing it. When you do that task, are you in the present moment? Continue searching the natural flow of the tasks you find effortless and natural to you. It may not happen soon. If you already know it, you would know the value of it. If you don’t, it’s a journey to search that natural joyful work for us. For example, someone may like delivering presentations. It may seem easy and natural to this person. The same task could be daunting to another person who feels writing code is natural to him or her. Here are a few steps that may help finding the work you enjoy:

  • Make a journal of your daily activities at work.
  • Is there anything that you wish to do and not getting an opportunity to do it?
  • Is there any task that you enjoy more than other?
  • Would you like to do more of what you enjoy?
  • Would you like to do more what you love even if you’re not paid for it? For example would you like to volunteer doing the task you love?
  • Can you try creating space and opportunities to increase the enjoyable tasks?
  • Step by step, move your career towards the tasks you love.

Next, doing the work we love:

If found what we love, the next step is to detach ourselves from the results of it. Why is it important? When we feel attached to a task that we do well, there is a probability to create ego. It can also create a spiral of actions and reactions. A higher level of consciousness could be to consider ourselves as the actor who’s performing the tasks for the sake of doing it, as if we are born to do it. A flower’s nature is to blossom, without any expectation in the return. In the longer term, such a natural approach helps to stay out of judgement, comparisons, and external motivations. For example, if a Leader loves to inspire others doing the great work, he or she is always finding ways to influence others doing the best work of their lives. No expectation doesn’t mean not demanding the right salary or value of the skills. The meaning here is to excel beyond the monetary benefits, without compromise on demanding the right value.

“Find out what you like doing best, and get someone to pay you for it.” – Katharine Whitehorn

When we love what we do, work is a joy. If we don’t yet know what we truly love, it’s a pleasant journey to search for it. This journey is worth spending time. Take a little step today to know what you love the most out of all the tasks at work. Step by step, find the way to do more of what you love. At the time of retirement, when you look back, you’d love yourself for this journey.

“Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do.” – Steve Jobs

Other programming terms

Program, Process, and Thread:

  • A program is an executable file. It is stored on the hard disk. For example, MS word software is an executable file.
  • A process is an execution of a software that uses RAM. For example, creating a page on an MS word document is a process.
  • A thread is a part of a process. A thread is an execution of a task within a process. A process can have multiple threads for multiple tasks. For example, On an opened page on an MS word, a thread could be to write the page. On the same page, another thread could be to check the spellings. These two threads could run in parallel within the same process of adding words in a page.

Zookeeper basics

  • It is an open-source coordination service for distributed applications. Zookeeper is used to manage configurations in distributed systems.
  • Leader node is responsible to manage the load across follower nodes.
  • It is a service similar to DNS for nodes.
  • Zookeeper is not a replacement for a Load Balancer.

References:

GraphQL

Introduction: GraphQL is a query language for APIs. In addition to REST APIs, this is another way to query the data via APIs. Refer to the reference material for more details about GraphQL. It’s not an alternative to REST. It’s an additional option, in addition to RPC.

References:

Event sourcing

Event sourcing is a pattern for storing data as events in an append-only log.

Here are important terms about event sourcing:

Command: A command is an action by a user or a system. Commands are usually stored in FIFO queue.

Event: An event can be defined as a change in state. The result of a command is an event. Event is represented as a past tense. Order of event must follow order of command. So, we store events in FIFO queue. Example of events are: order placed, books purchased, etc.

State: State is a change after an event is completed.

State machine: State machine drives the event process. It validates commands and apply events to update the state.

CQRS (Command Query Responsibility Segregation): It is the segregation of commands and queries for a system. As per CQRS, there is one (single) state machine for the write operations. And, there could be multiple state machines for read-only operations.

References:

Server architecture styles

Below are popular architecture styles:

  • Monolithic architectures: It’s an old way of creating physical servers within single blocks.
  • Service oriented architectures: Similar kind of services are deployed at one location.
  • Micro-service architectures: Services in this architecture are more loosely coupled.

References:

How to make current job more fulfilling

Are you losing interest in your current job? Do you feel perhaps changing it will bring more happiness? Before you go further with stronger steps, what if you re-evaluate your situation? Is it really the job you less like or something else within the job that needs adjustments? Let’s review some steps on how we can make our current job more meaningful:

  • Know why behind the job you’re in: Understand why you’re in this job. Is it your financial responsibility that’s bringing you to the work every day? Why did you choose this line of work? Does it relate to your interests?
  • Is there anything that is lacking in the current job? Evaluate reasons what can increase the engagement at work. What growth perspective you’d like to focus on? Is it more salary? Is it the increase in the impact to the people or business you support? Is it the technology/skills you use at work? Here’s a quick trick to evaluate. Would you prefer to continue doing the work you do, if:
    • You’re offered 2 times the current salary or
    • You’re offered a promotion or
    • You’re offered to increase your business impact or
    • You’re offered to work with more people or
    • You’re offered to switch to use different technology/skills
  • Evaluating it would help to increase the engagement. If we find out that we should move for a better option, we should plan for it. Sometimes, we find out that we’re already in a great environment. For example, a friend of mine was not engaged at work. After the analysis, he realized that given two times the salary, he’d continue working at the same place with the same set of people, supporting the same business. So, there was nothing wrong in his current job except a low pay situation. He decided to explore if he’s really paid low. The reality was that he’s reasonably paid. His comparison of low-pay was also somewhat unreasonable. Sometimes, it’s our comparison, judgement, and other such inner-enemies that cause us distress. Sometimes some people have a feeling that we’re not doing enough or we’re simply not happy where we are. After the realization, he’s now focusing on his current job with a desire to increase his impact. Another person in a similar situation found out that he can get a better salary outside. He planned to move to a better paying job.
  • What’s the minimum required from you at work: Make a list of minimum required expectations from you at work. How knowing the minimum required expectations help? Many times, we’re overwhelmed and lost with many demands at work. Sometimes, it becomes confusing to navigate the day at work successfully. Making a list of minimum required tasks provides us the clarity of expectations. For example, if someone is a software developer at work, they can write minimum required tasks as:
    • Prime tasks like driving projects A, B, and, C. Write down what’s the minimum required expectation for each project.
    • Supporting tasks: update on progress every week, month, and quarter. What does it means? How much times does it require every week?
    • Trainings: are there any mandatory trainings that you have to attend?
  • After making a list of minimum required tasks, plan your time at work to first address these tasks. In my experience, I noticed that many times, ambiguous situations and confusions take up a lot of time. Without the clarity of minimum required tasks, we maybe wasting time. After a certain time, we start being overwhelmed with many things undone.
  • Look at the bigger picture of your current job. Let’s look at three areas to evaluate it:
    • People: how are your work relationships with people? Do you feel connected with people at work? Can you make friends at work to share your life and listen to their life situations? Connecting with people at work can make the work more interesting. Also, knowing that you’re not alone in life’s common challenges can help to find mentor support. For example, a friend found that his colleague also has interest in writing. What if he and his colleague can find moments in the day to share their writing content?
    • Business: what business does your job supports? What’s the bigger picture of it? For example, are you in an IT development job? What social cause your company support? If it’s a public company, what is the sector of your company’s stock? How your work impacts the society? When we relate our work with a larger cause, it could help in bringing the engagement.
    • Technology/Skills: What skills do you need, to perform your current job? What are your areas of expertise? How valuable are those skills in the outside market? Is there any skill that other would like to learn from you? If you’re interested in mentoring others, would you like to mentor someone at work? Is there any particular skill you’d like to learn more at work?
  • Plan for periodic leaves. Sometimes, we feel that we have no choice other than going to the same work every week. Taking leaves helps us to reflect upon life. If it’s feasible, plan for a longer leave, like a week. If you’re free without any work tasks, what do you feel to do? For example, my one friend likes learning about technologies even when he’s out of the work. He’s naturally inclined towards technologies. By taking leaves, he realized that even if he doesn’t need a job for his financial needs, he’d like to write programs in his free time. He realized that it’s not the work type that he wants to change. Sometimes, he’s overwhelmed at work. So, the solution is to find out how can he prioritize his work so he can set the right expectations.
  • Plan for continuous evaluations: Plan for a periodic evaluation to assess where you’re. If you’re interested in something else, keep pivoting from the current situations. For example, after a decade of experience in a technical skills set, if you’re interested in moving to a new skills set, start planning for a steady move.

I’d love to know yours feedback on it. Thank you.

Some System Design basics

Below are system design basics for software development:

  • How CDN works: CDN stands for Content Delivery Networks. CDN is a network of servers that distributes the content from original server to multiple locations by caching the content closest to the users’ locations.
  • Protecting passwords in a database: we should never store passwords directly into a database. These can be seen by database users. Also, these can be hacked. We should convert passwords into has values. To convert passwords into has values, we should use randomly generated salt values with each password. Salt is used to generate a unique hash.
  • Bare metal infrastructure: this is a term used for legacy physical server infrastructure. When an application needs the highest level of security, bare metals could be the most appropriate solution.
  • Virtual machines: This uses a hardware that is shared for multiple virtual servers. We use a hypervisor underneath guest OSs. The downside is that these could be vulnerable by noisy neighbor problems.
  • Containers: it’s a light weight stand alone package. We use a hardware and host OS. On top of it, a container engine is installed. On top of container engine, multiple containers are deployed. Containers are scalable and portable. Containers are less secured. They are vulnerable to security issues at OS level. To avoid security issues, we can run containers inside virtual machines.
  • How HTTP works: A user hits a URL on the browser. We use either http or https protocol. Second is a domain (like http://www.abc.com). We use a DNS (Domain Name Service) lookup to look for an IP for a domain. DNS information is generally cached. To look for a DNS, we have DNS servers. Finally a browser has the IP address of the server. Next, the browser get a TCP connection with the server. Browser sends a request to the server. Server sends an http response to the browser. Browser parses the responds and shows the response to the user on the browser.

References: