March 4, 2018 Night

Good evening! Snow showers and 31 degrees in Delmar, NY. ❄ There is a northwest breeze at 14 mph. 🍃. Things will start to thaw out at tomorrow around 9 am.💥

Heading back from my parents house, the roads were a bit slippery with snow coming down pretty hard at spots. ❄Not deep snow like on Friday but still with the wind it made driving a bit risky. For a while I took it slow, as I didn’t want to risk hitting black ice or sliding on the glaze of snow that had fallen. It’s better to take longer at your trip than slide off the road. 🚗

Tonight will have a slight chance of snow showers. Mostly cloudy, with a low of 26 degrees at 5am. ☁Four degrees above normal. Maximum wind chill around 19 at 12am; Northwest wind 11 to 14 mph. Chance of precipitation is 20%. In 2017, we had clear skies. It got down to 5 degrees. The record low of -12 occurred back in 1948.

Tonight will have a Waning Gibbous Moon 🌜 with 88% illuminated.The moon will set tomorrow at 8:36 am. The Last Quarter Moon is on Thursday night with snow is likely. The Blue Moon 🌝 is on Friday, March 30th. The sun will rise at 6:24 am with the first light at 5:56 am, which is one minute and 40 seconds earlier than yesterday. 🌄 Tonight will have 12 hours and 33 minutes of darkness, a decrease of 2 minutes and 53 seconds over last night.

Next weekend at this time, it will only be a little after nine as Daylight Savings Time gets underway. βŒ›I like having that extra hour of light in the evening after I come home from work, otherwise even in June it would get dark at 7:30-8 o’clock rather than 8:30-9.🌐⌚ I guess if you live in the western part of a time zone you might feel differently. πŸ™„

Tomorrow will have a slight chance of snow showers before 9am. Mostly cloudy, with a high of 39 degrees at 2pm. ☁One degrees below normal. North wind around 13 mph. Chance of precipitation is 20%. A year ago, we had partly cloudy skies. The high last year was 30 degrees. The record high of 71 was set in 1964. 8.6 inches of snow fell back in 1917.❄

Next weekend looks like it might be perfect weather-wise. 😎 Next Saturday, partly sunny, with a high near 38. Next Sunday, partly sunny, with a high near 42. Typical average high for the weekend is 42 degrees. It looks like there might actually be quite a bit of snow for skiing🎿 especially in the Heldebergs as we might get hit with another round of snow Wednesday into Thursday. β›„

This weekend I was mostly busy with family stuff, and I must admit that it was pretty cold on Sunday so I stayed home. ❄Finished up some essays I’ve been working on, some Arduino code and also kind of took it easy as I feel a bit congested, sore and tired. I thought about driving out to Partridge Run to see how much snow they got in Berne, but with the wind whipping around and it being so cold I decided against that. Got to save miles and gas money for the nice weather of summer. 🚤🌌

In four weeks on Easter,🐰 April 1 the sun will be setting at 7:22 pm (Daylight Savings Time),🌄 which is one hour, 32 minutes and 38 seconds later then tonight. In 2017 on that day, we had rain, drizzle, snow, sleet, mist, cloudy skies and temperatures between 44 and 33 degrees. Typically, you have temperatures between 52 and 32 degrees. The record high of 77 degrees was set back in 1986.

Looking ahead, Daylight Savings Time Begins 🌅 in 1 week, April Fools Day and Easter 🐰 is in 4 weeks, 8 PM Sunset 🌇 is in 2 months, Mothers Day 👩‍ is in 10 weeks, Fathers Day 👨 is in 15 weeks, Independence Day 🇺🇸 is in 4 months, Daylight Savings Time Ends 💥 is in 8 months, Veterans Day (Sunday) 🇺🇸 is in 36 weeks and First Sunday of Advent ✝️ is in 39 weeks.

🇺🇸🦅Only 81 days remain until the start of Memorial Day Weekend!🦅🇺🇸

More Government Data is Needed on Murder and Suicides

The other day I was listening to the podcast, 99 percent Invisible, titled “287 – The Nut Behind the Wheel“. While close to 99 percent of the podcast was an interesting overview of automobile safety and the fight over increased regulation of auto makers to include safety feature, one thing of interest they noted was the lack of detailed statistics relating to gun violence, although I would argue we should not look at gun violence per se, but collect more detailed data on murder and suicide by all methods. It ultimately doesn’t matter how a person dies from suicide or murder, it matters that they are dying prematurely.

There are two primary sources that policy makers, activist groups, and members of the public use to get data on murder and suicide. There is the Center for Disease Control’s (CDC) WONDER database which contains mortality data broken down by county, age, sex and cause of the generalized cause of death. There also is the Unified Crime Reporting (UCR) System that focuses on crime reported to police, in which murder statistics are reported, with a breakdown of victims and criminals by location, by race, by gender, by generalized murder weapon type (rifle, shotgun, hands, or object), and a few other specifications.

The problem is we know many people are being murdered and commit suicide, but details on actual suicides and murders are not collected in a comprehensive and standardized matter. This is much different then a fatal car crash, where a detailed report is created and except for personal information, the detailed report is made available to the public as part of FARS (Fatality Analysis Reporting System). FARS is very detailed, it shows how the cars collided, what object was hit, and how the person died.

Murder and suicide statistics could be greatly improved if police agencies were required to investigate and report on murders and suicides the same way they report on fatal car crashes. If we had the data, we could have an informed debate on topics like murder and suicide prevention eventually leading to sensible changes to public policy and firearms that could save lives. Not government reports driven by ideology but by actual data, recognizing that every policy has pros and cons that we the public must seriously consider.

Here is some of the data I think is worthwhile to collect and make public about suicide and murders that isn’t already collected in the Unified Crime Reporting System or the CDC’s Wonder Database:

How exactly a person died. Was it a shot to head, the lungs, the heart, the brain? Did they fall and crack open their head? If they drowned, how long where they in the river before that happened? What role did lead poisoning lead to their death? WONDER gives broad categories, but unlike a fatal car collision, there is no data collected on how exactly the person died – just broad categories of death. Again, it would be useful to know the caliber of weapon was when it happened.

What firearms, including make, model and caliber are being used for suicide and murder. For murder, the UCR gives us broad categories like shotgun, rifle, handgun, hand/feet, object. But it would be useful to know if particular guns are used for particularly high number of suicides and murders. For example statistics might show a Remington 870 12-guage shotguns used for certain types of suicides, while Glock might be used for murder. We don’t know until the data is collected and publicly shared.

What type of facility where are murders and suicides are occurring. Certain Bridges? Tall buildings? School grounds or malls? Farms or business places? In the woods, in the barn? Homes or apartments? Alleyway? Tenement buildings? Government office buildings? Parks? Sidewalks? Bathrooms? This would inform the debate on which places are most dangerous, and may deserve more policing and better lighting – or possibly changes in their design.

What kind of weather is occurring when suicides and murders occur. Is it hot outside, raining, or snowing? We have data currently on time of day and year from WONDER and UCR, but not the environmental conditions. If the statistics suggest it, on warm clear summer nights, maybe we need more policing on such nights in certain neighborhoods.

– Most law enforcement these days has access to criminal records files and to a certain extent mental health records. Any suicide or murder report should include information both for the victim and perpetrator whether or not they have or had a criminal record or known mental health issue. It would be very useful to know if murdered individuals were convicted of certain crimes or if their perpetrator of the crime had a criminal record or known mental health issue. This would better inform the debate over mental health in our country, and let us decide if we need to change our nation’s incarceration policies to ensure dangerous people are not allowed on the street.

Information on what gangs the perpetrator and victim are known to be associated with. There are some statistics on gang membership, but there is no universal reporting of which gangs are causing which murders, and how and when they are operate.

Does the perpetrator or the victim have permits to carry firearms concealed or possess the firearms in case of a state like New York? This would help better inform the debate over concealed and open carry. It also would provide an evaluation of the effectiveness of gun registration laws. If gun registration laws don’t actually work, it could help build the case for repealing them.

What is the source of the weapon used? Is it a stolen firearm? Is it a legally registered or unregistered gun? This data is usually investigated in murders but less in suicides but is not centrally compiled into a database. They’re is a lot of talk about illegal guns used in crime, but that data is not widely available to the public.

These are all good ideas, but why don’t they happen?

Murder and suicide are intentional acts, and there is a view that providing the public with data on how they occur are likely to provide an instruction manual on how to murder or commit suicide.

For example, if it’s released that the Tappan Zee Bridge in New York State is the most popular one for people to commit suicide on, it may encourage suicidal individuals to drive over to that bridge and jump off of that one, knowing they have a good likelihood of dying. If it is shown that a particular brand of firearm is more effective at murdering people, or that a lung shot is the best way to kill a person, murders are more likely to purchase that firearm or go for a lung shot.

As fatal car crashes for the most part are β€œunintentional” in nature, few people bar insurance fraudsters or those wishing to take their life in an automobile could benefit from studying the FARS database. And how many insurance fraudsters are suicidal, working to crash a car in a way that they die? There isn’t much of a public safety hazard to releasing detailed information on fatal car crashes. The same can’t necessarily be said about detailed murder and suicide methodology and statistics.

Reading and Writing an External I2C 24LC256 EEPROM

This code demonstrates how to read and write any data type, such as strings to an external I2C EEPROM. I am sharing this code as I wasn’t happy with the other examples I found on the Internet, which I found to be too complicated.

#include <Wire.h>
#include "i2ceeprom.h"

// struct containing a text array for storage in the EEPROM
struct text_t {
    char text[100];
};

int address = 0;

void setup() {
  Wire.begin();
  Serial.begin(115200);
}

void loop() {

  text_t input;

  while (Serial.available() < 1) {
    delay(100);
  }

 // obtain array of characters from Serial port
  uint8_t i = 0;
  while (Serial.available() > 0) {
    input.text[i++] = (char) Serial.read();
  }
  input.text[i++] = '\0';

// Write the input object (which contains a text array)
// to the i2C EEPROM. This does not work with an array directly
// as the array must be within a struct.
  address += eeWrite(address, input);
  config.count++;
  eeWrite(0, config);

  // loop through all of the output text
  unsigned int output_address = config.start;
  text_t output;
  
  while (output_address < config.start+(sizeof(output)*config.count)) {  
    Serial.print(output_address);
    Serial.print(" ");
    output_address += eeRead(output_address, output);
    Serial.print(output.text);
  }  
}

Here is the header file to include that includes the related functions.

#include <Arduino.h>  // for type definitions
#define DEVICE 0x50 

// Read one byte
byte eeReadByte(unsigned int address) {
  byte read_data = 0xFF;

  Wire.beginTransmission(DEVICE);
  Wire.write((int)(address >> 8));   // MSB
  Wire.write((int)(address & 0xFF)); // LSB
  Wire.endTransmission();

  // Request 1 byte from device
  Wire.requestFrom(DEVICE, 1);

  // if successful return
  if (Wire.available()) read_data = Wire.read();

  return read_data;
}

// Write one byte (could be made faster by using page write)
// but I've decided not to implement this as speed is not a consideration
// for my projects (I can wait for the data to be written while I do other things)
void eeWriteByte(unsigned int address, byte data) {
  
  if (data == eeReadByte(address)) return; // minimize data writes for speed
                                           // and wear on memory

  Wire.beginTransmission(DEVICE);
  Wire.write((int)(address >> 8));   // MSB
  Wire.write((int)(address & 0xFF)); // LSB
  Wire.write(data);                  // Write byte
  Wire.endTransmission();

  // Writing in I2C DEVICE takes ~5ms (even if I2C writing already done)
  delay(5);
}

// eeWrite is the user function that converts an object into
// a byte stream and then calls eeWriteByte to write the data
//
// int ee = Address to write
// const T& = Any type of object (EXCEPT ARRAY) to write, such as
//            byte, int, char, struct. If you want to save
//            an array of any type such as a character array, 
//            you should put the array within in a struct
//            or use another non-array type like the string class.

template <class T> int eeWrite(int ee, const T& obj) {
    // cast object to a void then to a byte
    const byte* p = (const byte*)(const void*)&obj;

    // for each byte, write it
    for (unsigned int i = 0; i < sizeof(obj); i++)
          eeWriteByte(ee++, *p++);

    // return the size of data written so we can increment
    // our address variable to know the location of the next address
    return sizeof(obj);
}

// eeRead is the user function that converts an object into
// a byte stream and then calls eeReadByte to write the data
//
// int ee = Address to start of reading
// const T& = Any type of object (EXCEPT ARRAY) to read, such as
//            byte, int, char, struct. That number of bytes will 
//            be fetched from the eeprom, with data converted back
//            into the proper data type.

template <class T> int eeRead(int ee, T& obj) {
    byte* p = (byte*)(void*)&obj;

    for (unsigned int i = 0; i < sizeof(obj); i++)
          *p++ = eeReadByte(ee++);
          
    return sizeof(obj);
}

Some useful code examples that I created for writing and reading simply and reliably any object or data type with a 24LC256 EEPROM chip hooked up to an Arudino.