Skip to main content

ยท 4 min read
Yahya Gilany

As we embark on this exciting journey of learning and discussion in our online course, I want to introduce you to a valuable technique that will enhance the quality of our interactions and take our discussions to a new level. It's called the Warm Cool Hard Protocol, and it's a structured approach to providing feedback that will help us give each other more constructive and insightful responses on the discussion boards. This Protocol was developed by educators affiliated with the "Center for Leadership & Educational Equity" (CLEE) and the "School Reform Initiative" (NSRF) and has been proven to enhance the quality of feedback and discussion in various educational settings.

Understanding the Warm Cool Hard Protocolโ€‹

The Warm Cool Hard Protocol is divided into three response perspectives: Warm, Cool, and Hard. Each perspective serves a unique purpose in guiding our feedback and ensuring that our discussions are both supportive and intellectually stimulating.

Let's break down each perspective:

Warm Perspectiveโ€‹

The Warm perspective focuses on recognizing and highlighting specific strengths in your peers' contributions. It's about acknowledging the excellent aspects of their work and providing positive reinforcement. For instance, you might say, "I see excellent use of..." or "Attention to details...". This type of feedback fosters a sense of accomplishment and boosts confidence in your peers.

Cool Perspectiveโ€‹

The Cool perspective involves analyzing, discerning, and probing the content of the discussion. It encourages critical thinking by offering insights and questions that challenge assumptions and encourage deeper exploration. For example, you might ask, "I wonder if this fits that" or "It looks like you wanted this to do that, but I'm not sure it does." This type of feedback sparks intellectual curiosity and pushes us to refine our thoughts.

Hard Perspectiveโ€‹

The Hard perspective is the most challenging but also the most rewarding. It involves challenging, extending, and asking the "So What?" questions. This type of feedback tests the meaning of the work and provides direction for further development. You might inquire, "Does this do what we value?" or "Will it consistently provide similar results?" This level of feedback requires trust and a readiness for constructive criticism.

Applying the Protocol to Our Discussionsโ€‹

As we engage in our online discussions, you're required to incorporate the Warm Cool Hard Protocol into your feedback. When responding to your peers' posts, consider providing feedback from each of these perspectives. This approach will not only enrich our discussions but also promote a culture of collaboration and growth.

Building a Trusting Learning Communityโ€‹

Lastly, it's important to note that while the Warm and Cool perspectives can be integrated into discussions from the start, the Hard perspective requires a higher level of trust. When receiving or offering Hard feedback, it's imperative that you keep an open mind and to foster and environment that is conductive to honest and constructive critique, and to cultivate an atmosphere of courtesy and respect throughout the process.

Let's embrace the Warm Cool Hard Protocol as a tool to elevate our learning experience. By recognizing strengths, encouraging critical analysis, and embracing challenges, we'll create a vibrant online learning community that thrives on meaningful interaction.

Looking forward to engaging with all of you in our upcoming discussions!

Three Response Perspectivesโ€‹

So What?
"I see excellent use of ..."
"On page 2, I see a good example of..."
"Attention to detail is evident in the following areas..."
"I like the way you..."
"I wonder if this fits that."
"It looks like you wanted this to do that, but I'm not sure it does."
"I can't tell if the student is to do this or that."
"It is hard to tell what the goal was, and what the thinking skills were."
"Does this do what we value?"
"Does the activity meet the stated goal?"
"Will it consistently provide similar results?"
"Who is favored by this and who is penalized?"
This type of feedback highlights the specific areas in which the work is strong.This type of feedback uses critical distance, which means taking a closer look to analyze, probe and discern.This type of feedback challenges and extends what is presented. It will test the meaning of the work and provide direction for development.
This level of feedback requires the least amount of trust, and should always be present.Trust must be present in the group to give cool feedback.The group needs to have a higher level of trust and presenter should ask for this type of feedback.

ยท 2 min read
Yahya Gilany

Purpose of this postโ€‹

If you had issues installing pipenv on your Windows computer, This guide is for you.



  • You have Python 3.11 installed on your computer.
  • You have pip installed on your computer.
  • You're able to access pip from the command line.

Installing PipEnvโ€‹

  • From your command line, run the following command:
pip uninstall virtualenv
pip uninstall pipenv
  • This command will uninstall any existing versions of PipEnv and VirtualEnv that you have installed on your computer.
  • Run the following command:
pip install --user pipenv
  • This command will install PipEnv on your computer.
  • You may get a warning that says that certain scripts and packages are not in your PATH. Copy that PATH and add it to your PATH environment variable.
  • For the terminal to recognize the new PATH, you may need to restart your terminal (close and open).


To confirm that PipEnv is installed, run the following command:

pipenv --version

Using PipEnvโ€‹

For each assignment that you work on, you install its dependencies using the following command:

pipenv install
  • This command will install all the dependencies that are listed in the Pipfile.
  • It will also create a virtual environment for the project.

To learn more about pipenv:

ยท 3 min read
Yahya Gilany

Divide and Conquer


One of the keys to effective critical thinking and problem-solving is the ability to take a large, complex challenge and break it down into smaller, more manageable pieces. When you do this, you can focus your efforts on one aspect of the problem at a time, rather than getting overwhelmed by the entirety of the task. Plus, tackling smaller problems individually can often be more efficient and effective than trying to solve the whole thing at once.

Tips for Breaking Down Problemsโ€‹

But how do you go about breaking down a big problem? Here are a few tips to get you started:


Start by writing down everything that you know about the problem. What are the specific challenges you need to overcome? Are there any dependencies or requirements that you need to consider? This can help you get a better understanding of what you're dealing with and identify potential sub-problems.

Create a list of sub-problemsโ€‹

Once you have a sense of the different challenges you need to tackle, try organizing them into a list of smaller problems that you can work on independently. This can help you prioritize your efforts and focus on one thing at a time.

Use visual toolsโ€‹

Tools like flowcharts and mind maps can be helpful for breaking down a problem into smaller pieces. These visual aids can help you see the relationships between different sub-problems and figure out the most logical order in which to tackle them.

Look for resourcesโ€‹

If you get stuck on a particular sub-problem, don't be afraid to seek out resources that can help you. This might mean doing some online research, asking a colleague for advice, or consulting with an expert.

An Exampleโ€‹

Here's an example of how this process might work in practice. Suppose you have an assignment that requires you to query data from a MS SQL database and visualize the results in a couple of charts. Rather than Googling "How to query data from SQL and visualize it using Python," you could break down the assignment requirements into the following sub-problems:

  1. Clone down the starting files for the project.
  2. Make sure you have all the necessary dependencies and requirements installed.
  3. Connect to the database.
  4. Run a sample query to test your connection.
  5. Store the query results in an appropriate data structure.
  6. Visualize the data using the appropriate charts and tools.

By breaking the problem down into smaller pieces, you can focus on solving one sub-problem at a time, rather than trying to tackle the whole thing all at once. And if you get stuck on any particular sub-problem, you can always do some additional research or seek out resources to help you overcome the challenge.


In conclusion, breaking down big software challenges into smaller, manageable pieces is a key critical thinking skill that can help you solve problems more effectively. So the next time you're facing a big challenge, try breaking it down into smaller pieces and tackling them one by one. You might be surprised by how much more successful you are!

Bonus: Additional Tips for Breaking Down Problemsโ€‹

  • Dividing a problem into smaller tasks that can be tackled independently
  • Focusing on one aspect of the problem at a time
  • Seeking help and advice from others
  • Using tools like flowcharts or mind maps to visualize the problem and its sub-problems