text:
Rappers J. Cole and Noname had a brief beef after Cole criticized Noname's tone when she addressed inactive rappers in his song "Snow on Tha Bluff." Noname fired back with her response "Song 33," criticizing J. Cole. Photos Dreamville / Nyaomi for The Come Up Show.
J. Cole, Let Me Holla At You: Don't Police Noname's Tone About Black Violence
Aliyah Veal
Black Lives Matter activist Oluwatoyin "Toyin" Salau's body, along with Victoria Sims, 75, was discovered on June 15 after she was reported missing. She'd blasted a man on social media for molesting her and taking advantage of her in a time when she was in desperate need of help and protection. Social media was reeling. Hashtags went up. I even came back from a social-media break to post about her.
Then I got right back off and deleted Twitter and Instagram because it seems that every time I get on social media I see more depressing images and stories. Don't get it twisted, I'm still finding ways to stay informed. Social media isn't the only forum to get my news. (In fact, I found out about Toyin on YouTube.)
But Toyin couldn't even have a day before attention was swiftly taken off her. On June 16, a day later, rapper J. Cole posted his song "Snow on Tha Bluff," where he addresses his own feelings of guilt on whether he was doing enough in the wake of Black men and women being killed by police.
J. Cole's new song "Snow on Tha Bluff," which he released June 16, addresses the rapper's guilt and insecurity as to whether he is doing enough in the wake of police killings of black men and women. However, the song caused controversy due to Cole's critique of rapper Noname's tone after a tweet she made calling out rappers for their inactivity.
But in the midst of putting his own insecurities on the track, he manages to subliminally criticize one of his peers. He didn't say her name, and I had to look in the comments to figure out who exactly "she" was. Most guessed he was talking about Chicago rapper Noname, who has been using her platform during these times to educate and be a leader in the movement.
But why would he criticize her?
What Is a Tweet Going to Do?
As I said, I've been off social media, so I'm not privy to all that's been happening. But I quickly caught up. If you're reading this and aren't aware, here's what happened. J. Cole was responding to a tweet in which Noname called out top-selling rappers who profit off the plight of black people, yet can't even so much as tweet in solidarity with the movement.
She tweeted this on May 29 and then deleted it: "poor black folks all over the country are putting their bodies on the line in protest for our collective safety and y'all favorite top selling rappers not even willing to put a tweet up. niggas whole discographies be about black plight and they no where to be found."
Now at first, I thought, what is a tweet going to do? How much is a tweet worth?
Lately, Twitter has been the enemy of celebrities. There are those who get on and speak out of turn, uneducated to the words and thoughts they put out there, i.e. Terry Crews and Shameik Moore. There are those who tweet out hashtags and say they're down for the cause, but have been exposed for being nothing more than oppressors themselves. I'm talking to you, Lea Michele and Mark Wahlberg.
At this point, I don't need a tweet from a celebrity. I'd rather them go out and protest, entrench themselves in those communities, learn their needs, donate, donate, donate.
But I had to really think about it. It's not about what I think is important or necessary. It's about the dissemination of information. Twitter is now the new soapbox. My generation and Generation Z behind us, all we know is social media. Every breaking news story in the past few years that I've ever learned about, I learned about it through social media. We're always on our phones, let my mom's generation tell it. And in a time where we're all stuck at home, everyone is paying attention, and almost everyone is on social media.
Chicago rapper Noname released "Song 33" a day after J. Cole's "Snow on Tha Bluff." In the song, she highlights the death of activist Toyin Salau, George Floyd's murder, and the recent hangings of black people following Floyd's death while also calling out Cole for criticizing her and taking attention away from what is important.
Noname's twitter profile is the perfect example of being a pillar of information. Resources are being retweeted and shared at a faster rate than they would have if it hadn't been tweeted out. People are donating more. People are sharing videos of the activists who came before us and whose words back then still resonate today.
So a tweet, right now, means everything. And at the heart of Noname's tweet, she is simply asking that if you can't go out or won't go out to protest, if you can't or won't donate, the very least you can do is use your influence to educate the masses or pass on any information that can be helpful. Reassure your fan base who are more vulnerable to police and are injuring themselves in the streets for you and your children's future that you hear them, you see them, and you stand in solidarity with them.
No Sidney Poitier, Muhammad Ali or Nina Simone
But celebrities of today aren't of the same mold as the Sidney Piotiers, the Muhammad Alis, the Nina Simones. For them, money, endorsements and partnerships are at risk if they say the wrong things. They're not willing to put it all on the line and defer capitalism for liberation as Noname tweeted for the greater good of everyone. They saw what happened to Colin Kaepernick, and as much as they support him, they don't want that to be them, to lose their careers, money and access. Even Star Wars actor John Boyega expressed that he might not work in Hollywood anymore for being so vocal on social media following George Floyd's death.
Jazz singer Nina Simone was known for her activism during the Civil Rights Movement, which can be reflected in her music with songs like "Mississippi Goddam" and "Four Women."
A tweet only takes a minute, which is a slice of the anti-racism and anti-police-brutality work that those on the front lines are doing. Noname was frustrated when she made that tweet because in a time where we need all hands on deck the most, some of you rappers aren't stepping up to the plate. You can use the pain of black people for dollars, but you can give those dollars back or speak up.
I want her to call these rappers out. I wish she had said names because I'd love to defer my money elsewhere to people actually doing the work and who care about my life, my brother's life, my mother's life, my nephew's life, my best friends' lives.
Here You Come, J. Cole
Then here you come J. Cole, criticizing her frustration when she never said your name. I don't know what you meant, but I'll tell you what it looks like. It looks like you're coddling these men in a similar fashion as how you coddled XXXtentacion, Lil Pump and Tekashi 69, one of whom is an abuser and the other a sex offender. You gave them sympathy and guidance in lieu of criticism. You were patient to them, and I guess in a way, you want Noname to have the same approach.
But who are you to tell someone how their tone should be? Why does her frustration with certain rappers' inactivity affect you so much? Why doesn't Toyin's murder not frustrate you enough to make a song? Why don't the killings of Breonna Taylor, George Floyd, Ahmaud Arbery, Vanita Richardson and Truvenia Campbell, Tony McDade, Dreasjon Reed not frustrate you enough? When you could make a song about everything that's happening, and you have in the past with "Be Free," you decide to police a woman's tone?
Culture writer Aliyah Veal calls out J. Cole for not showing enough frustration over killings of Black people including Ahmaud Arbery (pictured). Two white men shot him as he jogged through a neighborhood in Brunswick, Ga. Photo Facebook.
You say that you're not educated enough and that people shouldn't associate your college degree with being woke. However, you've shown in the past that when the times call for it you can speak out and you can make music that reflects the times. And then you ask Noname to educate when Google is at everyone's disposal to read and watch what you don't know. We are now in a time where we have nothing but time on our hands, so there's no excuse for your ignorance.
That's why you sound like a misogynist (not a hotep despite what some people have said). And in a time where Black women aren't feeling protected by Black men; when I can look on Twitter and see Black men saying disparaging things about Black women as if they don't have Black mothers, sisters, grandmothers; when just a day before Toyin's body was found, you decide to follow up that tragedy with this. There were so many options at your disposal for how you could have handled this, and you chose the wrong one.
Noname handled you well, giving you exactly what you wanted, which was education. A day later, she responded to "Snow on Tha Bluff" with "Song 33," where she circles back to the important issues at hand: George Floyd, Toyin Salau and abolishing the police. She lets you know that there was so much you could have talked about, but you decide to focus on her. She's providing an example of what you should have done, and I hope you enjoyed the lesson.
Don't Tell People How to Protest
Noname, what I will say to you is that just because people aren't tweeting, just because we can't see the donations or don't see photos of them at protests, it doesn't mean work isn't being done. While it would be nice for celebrities to post their donations online and challenge others, it's not fair to tell people how they should protest.
Police shot and killed Breonna Taylor while she was sleeping at home after breaking into the wrong house. Courtesy: Taylor family
I didn't go to any protests, but I'm definitely donating to as many organizations as I can. I haven't tweeted, and I'm rarely on Twitter, but that doesn't mean I'm not having conversations with friends and family about what's happening.
Cole, I'm not canceling you. I'm just disappointed in you because I know you know better. You caused way more dissension than was necessary in an already divisive time. I can respect that you stand firm on your opinion, but I don't respect that your tone on Twitter seemed to come off as dismissive and close-minded when you were criticized for this song.
These are crazy times we are living in. It's been a rough year. But I think what everyone can all learn from this brief "beef" is that we work better together than apart.
So, let's keep it that way.
This MFP Voices essay does not necessarily represent the views of the Mississippi Free Press, its staff or board members. To submit an essay for the MFP Voices section, send up to 1,200 words and factcheck information to [email protected] We welcome a wide variety of viewpoints.
Jackson, Miss., native Aliyah Veal is a proud alumna of Spelman College, where she earned her bachelor's degree in English in 2017. Afterward, she attended the Craig Newmark Graduate School of Journalism in New York, gaining a master's degree in journalism in 2018. After moving back home in 2019, she interned at the Jackson Free Press, covering city council and Jackson neighborhoods before moving up to culture writer. Her interests include tattoos, music and food, really, really good food. She now writes about culture, music and the arts for the Mississippi Free Press.
PrevPrevious'A Glorious Day': Mississippi Lawmakers Approve Bill Changing State Flag
Next'Today, I Hear Their Hurt': Mississippi Governor Signs Bill to Change State FlagNext


Bike of the Week at LCB!
A beautiful bike – perfect for cruising around town, down to the beach, or along the numerous gravel paths surrounding town.
Hurry, this is a limited model and in one size and colour only!
Is this sounding good to you? Call us (08 9758 7671) or visit us at the store at 6/16 Station Road, Margaret River today.


text:
title: "Collect service metrics with Sensu checks"
linkTitle: "Collect Service Metrics"
guide_title: "Collect service metrics with Sensu checks"
type: "guide"
description: "Collect service metrics for an NGINX webserver with a Sensu check and output the metrics data in Nagios Performance Data format."
weight: 180
version: "6.7"
product: "Sensu Go"
platformContent: false
menu:
  sensu-go-6.7:
    parent: observe-schedule
---

{{% notice protip %}}
**PRO TIP**: You can use the HTTP Service Monitoring (Local) integration in the [Sensu Catalog](../../../catalog/sensu-catalog/) to collect service metrics instead of following this guide.
Follow the Catalog prompts to configure the Sensu resources you need and start processing your observability data with a few clicks.
{{% /notice %}}

Sensu checks are commands (or scripts) that the Sensu agent executes that output data and produce an exit code to indicate a state.
If you are unfamiliar with checks, read the [checks reference][1] for details and examples.
You can also learn how to configure monitoring checks in [Monitor server resources][2].

This guide demonstrates how to use a check to extract service metrics for an NGINX webserver, with output in [Nagios Performance Data][3] format.

## Requirements

To follow this guide, [install][13] the Sensu backend, make sure at least one Sensu [agent][16] is running, and install and configure [sensuctl][17].

Before you begin, add the [debug handler][10] to your Sensu instance.
The check in this guide will use it to write metric events to a file for inspection.

## Configure a Sensu entity

Every Sensu agent has a defined set of subscriptions that determine which checks the agent will execute.
For an agent to execute a specific check, you must specify the same subscription in the agent configuration and the check definition.
To run the NGINX webserver check, you'll need a Sensu entity with the subscription `webserver`.

To add the `webserver` subscription to the entity the Sensu agent is observing, first find your agent entity name:

{{< code shell >}}
sensuctl entity list
{{< /code >}}

The `ID` is the name of your entity.

Replace `<ENTITY_NAME>` with the name of your agent entity in the following sensuctl command.
Then, run:

{{< code shell >}}
sensuctl entity update <ENTITY_NAME>
{{< /code >}}

- For `Entity Class`, press enter.
- For `Subscriptions`, type `webserver` and press enter.

Confirm both Sensu services are running:

{{< code shell >}}
systemctl status sensu-backend && systemctl status sensu-agent
{{< /code >}}

The response should indicate `active (running)` for both the Sensu backend and agent.

## Register the dynamic runtime asset

To power the check to collect service metrics, you will use a check in the sensu/http-checks dynamic runtime asset.
Use sensuctl to register the sensu/http-checks dynamic runtime asset:

{{< code shell >}}
sensuctl asset add sensu/http-checks:0.5.0 -r http-checks
{{< /code >}}

The response will indicate that the asset was added:

{{< code text >}}
fetching bonsai asset: sensu/http-checks:0.5.0
added asset: sensu/http-checks:0.5.0

You have successfully added the Sensu asset resource, but the asset will not get downloaded until
it's invoked by another Sensu resource (ex. check). To add this runtime asset to the appropriate
resource, populate the "runtime_assets" field with ["http-checks"].
{{< /code >}}

This example uses the -r (rename) flag to specify a shorter name for the dynamic runtime asset: http-checks.

Use sensuctl to confirm that both the http-checks dynamic runtime asset is ready to use:

{{< code shell >}}
sensuctl asset list
{{< /code >}}

The sensuctl response should list http-checks:

{{< code text >}}
     Name                                       URL                                    Hash
────────────── ───────────────────────────────────────────────────────────────────── ──────────
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_windows_amd64.tar.gz   52ae075
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_darwin_amd64.tar.gz    72d0f15
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_linux_armv7.tar.gz     ef18587
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_linux_arm64.tar.gz     3504ddf
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_linux_386.tar.gz       60b8883
  http-checks   //assets.bonsai.sensu.io/.../http-checks_0.5.0_linux_amd64.tar.gz     1db73a8
{{< /code >}}

## Install and configure NGINX

The webserver check requires a running NGINX service, so you'll need to install and configure NGINX.

{{% notice note %}}
**NOTE**: You may need to install and update the EPEL repository with `sudo yum install epel-release` and `sudo yum update` before you can install NGINX.
{{% /notice %}}

Install NGINX:

{{< code shell >}}
sudo yum install nginx
{{< /code >}}

Enable and start the NGINX service:

{{< code shell >}}
systemctl enable nginx && systemctl start nginx
{{< /code >}}

Verify that NGINX is serving webpages:

{{< code shell >}}
curl -sI http://localhost
{{< /code >}}

The response should include `HTTP/1.1 200 OK` to indicate that NGINX processed your request as expected:

{{< code text >}}
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Tue, 02 Nov 2021 20:15:40 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Connection: keep-alive
ETag: "xxxxxxxx-xxxx"
Accept-Ranges: bytes
{{< /code >}}

With your NGINX service running, you can configure the check to collect service metrics.

## Create a check to collect metrics

Create the `collect-metrics` check with a command that uses the `http-perf` performance check from the http-checks dynamic runtime asset:

{{< code shell >}}
sensuctl check create collect-metrics \
--command 'http-perf --url http://localhost --warning 1s --critical 2s' \
--handlers debug \
--interval 15 \
--subscriptions webserver \
--runtime-assets http-checks \
--output-metric-format nagios_perfdata
{{< /code >}}

This example check specifies a 15-second interval for collecting metrics, a subscription to ensure the check will run on any entity that includes the `webserver` subscription, the name of the dynamic runtime asset the check needs to work properly, and the `nagios_perfdata` output metric format.

You should receive a confirmation response: `Created`.

To view the check resource you just created with sensuctl, run:

{{< language-toggle >}}

{{< code shell "YML" >}}
sensuctl check info collect-metrics --format yaml
{{< /code >}}

{{< code shell "JSON" >}}
sensuctl check info collect-metrics --format wrapped-json
{{< /code >}}

{{< /language-toggle >}}

The sensuctl response will list the complete check resource definition:

{{< language-toggle >}}

{{< code yml >}}
---
type: CheckConfig
api_version: core/v2
metadata:
  created_by: admin
  name: collect-metrics
  namespace: default
spec:
  check_hooks: null
  command: http-perf --url http://localhost --warning 1s --critical 2s
  env_vars: null
  handlers:
  - debug
  high_flap_threshold: 0
  interval: 15
  low_flap_threshold: 0
  output_metric_format: nagios_perfdata
  output_metric_handlers: null
  pipelines: []
  proxy_entity_name: ""
  publish: true
  round_robin: false
  runtime_assets:
  - http-checks
  secrets: null
  stdin: false
  subdue: null
  subscriptions:
  - webserver
  timeout: 0
  ttl: 0
{{< /code >}}

{{< code json >}}
{
  "type": "CheckConfig",
  "api_version": "core/v2",
  "metadata": {
    "created_by": "admin",
    "name": "collect-metrics",
    "namespace": "default"
  },
  "spec": {
    "check_hooks": null,
    "command": "http-perf --url http://localhost --warning 1s --critical 2s",
    "env_vars": null,
    "handlers": [
      "debug"
    ],
    "high_flap_threshold": 0,
    "interval": 15,
    "low_flap_threshold": 0,
    "output_metric_format": "nagios_perfdata",
    "output_metric_handlers": null,
    "pipelines": [
    ],
    "proxy_entity_name": "",
    "publish": true,
    "round_robin": false,
    "runtime_assets": [
      "http-checks"
    ],
    "secrets": null,
    "stdin": false,
    "subdue": null,
    "subscriptions": [
      "webserver"
    ],
    "timeout": 0,
    "ttl": 0
  }
}
{{< /code >}}

{{< /language-toggle >}}

## Confirm that your check is collecting metrics

If the check is collecting metrics correctly according to its `output_metric_format`, the metrics will be extracted in Sensu metric format and passed to the observability pipeline for handling.
The Sensu agent will log errors if it cannot parse the check output.

To confirm that the check extracted metrics, inspect the event passed to the debug handler in the debug-event.json file:

{{< code shell >}}
cat /var/log/sensu/debug-event.json
{{< /code >}}

The event will include a top-level metrics section populated with metrics points arrays if the Sensu agent correctly ingested the metrics, similar to this example:

{{< code text >}}
{
  "check": {
    "command": "http-perf --url http://localhost --warning 1s --critical 2s",
    "handlers": [
      "debug"
    ],
    "high_flap_threshold": 0,
    "interval": 15,
    "low_flap_threshold": 0,
    "publish": true,
    "runtime_assets": [
      "http-checks"
    ],
    "subscriptions": [
      "webserver"
    ],
    "proxy_entity_name": "",
    "check_hooks": null,
    "stdin": false,
    "subdue": null,
    "ttl": 0,
    "timeout": 0,
    "round_robin": false,
    "duration": 0.011235081,
    "executed": 1635886845,
    "history": [
      {
        "status": 0,
        "executed": 1635886785
      },
      {
        "status": 0,
        "executed": 1635886800
      },
      {
        "status": 0,
        "executed": 1635886815
      },
      {
        "status": 0,
        "executed": 1635886830
      },
      {
        "status": 0,
        "executed": 1635886845
      }
    ],
    "issued": 1635886845,
    "output": "http-perf OK: 0.001088s | dns_duration=0.000216, tls_handshake_duration=0.000000, connect_duration=0.000140, first_byte_duration=0.001071, total_request_duration=0.001088\n",
    "state": "passing",
    "status": 0,
    "total_state_change": 0,
    "last_ok": 1635886845,
    "occurrences": 5,
    "occurrences_watermark": 5,
    "output_metric_format": "nagios_perfdata",
    "output_metric_handlers": null,
    "env_vars": null,
    "metadata": {
      "name": "collect-metrics",
      "namespace": "default"
    },
    "secrets": null,
    "is_silenced": false,
    "scheduler": "memory",
    "processed_by": "sensu-centos",
    "pipelines": []
  },
  "metrics": {
    "handlers": null,
    "points": [
      {
        "name": "dns_duration",
        "value": 0.000216,
        "timestamp": 1635886845,
        "tags": null
      },
      {
        "name": "tls_handshake_duration",
        "value": 0,
        "timestamp": 1635886845,
        "tags": null
      },
      {
        "name": "connect_duration",
        "value": 0.00014,
        "timestamp": 1635886845,
        "tags": null
      },
      {
        "name": "first_byte_duration",
        "value": 0.001071,
        "timestamp": 1635886845,
        "tags": null
      },
      {
        "name": "total_request_duration",
        "value": 0.001088,
        "timestamp": 1635886845,
        "tags": null
      }
    ]
  },
  "metadata": {
    "namespace": "default"
  },
  "id": "d19ee7f9-8cc5-447b-9059-895e89e14667",
  "sequence": 146,
  "pipelines": null,
  "timestamp": 1635886845,
  "entity": {
    "entity_class": "agent",
    "system": {
      "hostname": "sensu-centos",
      "os": "linux",
      "platform": "centos",
      "platform_family": "rhel",
      "platform_version": "7.9.2009",
      "network": {
        "interfaces": [
          {
            "name": "lo",
            "addresses": [
              "127.0.0.1/8",
              "::1/128"
            ]
          },
          {
            "name": "eth0",
            "mac": "08:00:27:8b:c9:3f",
            "addresses": [
              "10.0.2.15/24",
              "fe80::20b8:8cea:fa4:2e57/64"
            ]
          },
          {
            "name": "eth1",
            "mac": "08:00:27:40:ab:31",
            "addresses": [
              "192.168.200.95/24",
              "fe80::a00:27ff:fe40:ab31/64"
            ]
          }
        ]
      },
      "arch": "amd64",
      "libc_type": "glibc",
      "vm_system": "vbox",
      "vm_role": "guest",
      "cloud_provider": "",
      "processes": null
    },
    "subscriptions": [
      "webserver",
      "entity:sensu-centos"
    ],
    "last_seen": 1635886845,
    "deregister": false,
    "deregistration": {},
    "user": "agent",
    "redact": [
      "password",
      "passwd",
      "pass",
      "api_key",
      "api_token",
      "access_key",
      "secret_key",
      "private_key",
      "secret"
    ],
    "metadata": {
      "name": "sensu-centos",
      "namespace": "default"
    },
    "sensu_agent_version": "6.5.4"
  }
}
{{< /code >}}

## What's next

Now that you know how to extract metrics from check output, learn to use a metrics handler to [populate service and time-series metrics in InfluxDB][5] or [send data to Sumo Logic][20].

Read [Monitor server resources with checks][2] to learn how to monitor an NGINX webserver rather than collect metrics.
You can also learn to use Sensu to [collect Prometheus metrics][14].

Learn more about the Sensu resources you created in this guide:

- [Checks][1]
- [Dynamic runtime assets][19]
- [Handlers][18] and [pipelines][15]
- [Subscriptions][8]

The events reference includes more information about the [metrics section][11] and [metrics points array][12].

Visit Bonsai, the Sensu asset index, for more information about the [sensu/http-checks][7] dynamic runtime asset's capabilities.

[1]: ../checks/
[2]: ../monitor-server-resources/
[3]: https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/perfdata.html
[4]: https://bonsai.sensu.io/assets/sensu/http-checks#http-perf
[5]: ../../observe-process/populate-metrics-influxdb/
[6]: https://github.com/sensu/catalog/blob/docs-archive/integrations/influxdb/influxdb.yaml
[7]: https://bonsai.sensu.io/assets/sensu/http-checks
[8]: ../subscriptions/
[9]: ../../../operations/monitoring-as-code/
[10]: ../../../operations/maintain-sensu/troubleshoot/#use-a-debug-handler
[11]: ../../observe-events/events/#metrics-attribute
[12]: ../../observe-events/events/#metrics-points
[13]: ../../../operations/deploy-sensu/install-sensu/#install-the-sensu-backend
[14]: ../prometheus-metrics/
[15]: ../../observe-process/pipelines/
[16]: ../../../operations/deploy-sensu/install-sensu/#install-sensu-agents
[17]: ../../../operations/deploy-sensu/install-sensu/#install-sensuctl
[18]: ../../observe-process/handlers/
[19]: ../../../plugins/assets/
[20]: ../../observe-process/send-data-sumo-logic/

redpajama_set_name: RedPajamaGithub


These are some various Math resources that can be used with Classical Conversations or by any family wanting to reinforce some Math concepts at home.
Liquid Measurement Equivalencies: This activity helps with how many cups are in a pint, pints in a gallon, etc. 🙂 I always have to remind myself of these when I'm cooking! You can download the activity here: Liquid Equivalents Activity . Also, visit this post for a couple of different "Mr. Gallon Man" options. My sons loved making their own "Mr. Gallon" man. We have them hanging in our school room, and it is another great visual to reinforce these liquid equivalents.
How Tall, How Short, How Far Away? (David A. Adler)–While you're studying measurements and equivalencies, check out this gem of a book! It is a vibrantly illustrated book that will be a fun way to see these few weeks of Math Grammar come to life. Go here to read a post I wrote about the book last year.
This post is a part of a CC Link up over at Half A Hundred Acre Wood. See more posts here.
Thank you!!! Hope that you are doing well!
Oh great! Thank you so much!!!!
hi suzanne, it think it should be mnemonic device not pneumatic device (for the metric system). Thank your for these wonderful resources!
HAHAHA!!! lovely auto correct. 🙂 thanks for the heads up!
Wow, this lady is SO talented and generous! So glad I met her two years ago!! 🙂 She is a super tutor!!
so glad that you started CC in our community two years ago! what a blessing it has been!!!!!!!!!!!!!!
Hi! I'm trying to understand and respect your privacy policies– do you mean that we can't pin your page on Pinterest? I did already, but then I was looking at your wording and twas thinking that I may have been wrong in doing so. Please tell me and if you don't want it on there, I will take it down right away!!! LOVE your visual aids for CC! Thank you so much!
Hi! I'm trying to understand and respect your privacy policies– do you mean that we can't pin your page on Pinterest? I did already, but then I was looking at your wording and was thinking that I may have been wrong in doing so. Please tell me and if you don't want it on there, I will take it down right away!!! LOVE your visual aids for CC! Thank you so much!