The land where there are more guns than people has five fewer of the latter after a 15-year-old boy armed with the former shot and killed five people in Raleigh, North Carolina, Thursday evening. The killings began when the boy killed two people in his own Hedingham neighborhood, then killed three more along a popular walking trail. He also wounded two more people.
The shootings led to an hours-long search for the boy, with police urging residents in the area to stay inside. The killings took place over a distance of a few miles; 911 callers reported seeing a white teenager dressed in camouflage and carrying a long gun, possibly a shotgun, walking through the streets.
The dead ranged in age from 16 to 53, and included the shooter’s older brother James Thompson, a high school junior — both boys attended the same high school, which postponed its Homecoming football game; Nicole Connors, 53, who lived two doors away from the shooter and whose body was found by her husband on their porch, along with their dog, also dead; Susan Karnatz, 49, whose husband mourned her on Facebook, saying they had “big plans” and “little plans” together and with their three sons; Mary Beth Marshall, 34, a culinary student who planned to study in France and was engaged to be married; and Gabriel Jesús Torres, 29, an off-duty Raleigh police officer who was his way to work. Police Chief Estella Patterson said Torres had not been in uniform or driving a patrol car. He had been with the department just 18 months and had previously been a Marine. Torres was married and had one child.
A second police officer, Casey Clark, was injured in the shooting and released after being treated at a hospital. Another survivor, Marcille Gardner, 59, remains hospitalized.
The 15-year-old shooter, Austin Thompson, was arrested late Thursday night after holing up in a house. He was hospitalized in critical condition, although authorities haven’t yet said how he was injured. If he survives, he’s likely to be charged as an adult.
President Joe Biden issued a statement Friday saying America grieves for “yet another community shaken and shattered as they mourn the loss of friends and neighbors” following a mass shooting.
After thanking law enforcement and first responders and pledging to help state and local officials as needed, Biden said “Enough. We’ve grieved and prayed with too many families who have had to bear the terrible burden of these mass shootings. Too many families have had spouses, parents, and children taken from them forever. This year, and even in just the five months since Buffalo and Uvalde, there are too many mass shootings across America, including ones that don’t even make the national news.”
He called again for passage of a national assault weapons ban.
CNN reports that a handgun and a long gun were recovered following the shooting. No further details on the weapons have yet been released by officials, other than the 911 caller’s description that it might have been a shotgun. If so, that would be a departure from other recent mass shootings where the murders were committed using the favorite tool of mass shooters in the US, an AR-15 style semi-automatic rifle. We’ll update when there’s more definite information on the weapon used.
“We all know the core truth: No neighborhood, no parent, no children, no grandparent — no one — should feel this fear in their communities. No one.” North Carolina Gov. Roy Cooper (D) said during a news conference Friday that while details of the shootings still need to be investigated, adding “As policymakers, we cannot and will not turn away from what has happened here. We must be resolved to make changes and to succeed.
There’s a lot we don’t know yet, particularly how the boy got his hands on the guns he used. We’ll hear the usual arguments again about how no regulations could have prevented this, particularly since North Carolina doesn’t allow anyone younger than 18 to buy a long gun, and federal law restricts handgun sales to those over 21. See? laws are useless!
However, as the News & Observer reports, North Carolina has no age restrictions on the possession of long guns, although handgun possession by someone under 18 is a misdemeanor. (Children under the age of 12 also must have adult supervision, or at least permission, to handle firearms.)
That said, it sure seems like this might have been a case where a law requiring adults keep their firearms safely locked up and out of the reach of children might have done some good. North Carolina does require that adults store firearms in a way that keeps minors from accessing them, but the law has loopholes you could drive a pickup truck with a gun rack through:
The penalty for not doing this is a Class 1 misdemeanor — but only under certain circumstances: if that firearm is obtained without permission and the minor exhibits the weapon in a public place or in a threatening manner, carries it onto an “educational property,” causes injury or death (not in self-defense) or uses it in the commission of a crime.
The statute is long, but specifies that the adult may be responsible if the firearm is stored “in a condition that the firearm can be discharged and in a manner that the person knew or should have known that an unsupervised minor would be able to gain access to the firearm.
Nothing there about actually locking the guns up, of course, because that would be tyranny.
North Carolina doesn’t have a red flag law either, which allows a judge to order temporary seizure of firearms from people who pose a threat to themselves or others. Bills introduced by Democratic members of the General Assembly have gone nowhere in the Republican-controlled body.
Sure, no single law will stop all massacres, so we may as well just accept massacres. Or maybe we could decide not to have so many of the goddamned death machines out there in the first place? Yeah, we think some pretty nutty things sometimes.
[Raleigh News & Observer / AP / News & Observer / CNN / News & Observer/ NYT]
Yr Wonkette is funded entirely by reader donations. If you can, please give $5 or $10 a month so we can keep trying to find new ways to remind you that this country’s gun policies are fucked up beyond words.
window.REBELMOUSE_ACTIVE_TASKS_QUEUE.push(function()
!function(f,b,e,v,n,t,s) if(f.fbq)return;n=f.fbq=function()n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments); if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '482172895483293'); fbq('track', 'PageView');
);
window.REBELMOUSE_ACTIVE_TASKS_QUEUE.push(function(){
/*! getClosest.js | (c) 2017 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/getClosest */ /** * Get the closest parent element that matches a selector. * @param Element elem Starting element * @param String selector Selector to match against * @return Boolean Returns null if not match found */ var getClosest = function(elem, selector)
// Element.matches() polyfill if (!Element.prototype.matches) function(s) this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) return i > -1; ;
// Get closest match for (; elem && elem !== document; elem = elem.parentNode) if (elem.matches(selector)) return elem;
return null;
;
// Vanilla JS
var className="active";
// getting current URL and adding a class on the current menu item
var path = location.pathname.split("https://www.wonkette.com/")[1]; var link = document.querySelectorAll('.menubar a[href="https://www.wonkette.com/" + path + '"]'); if (link[0]) if (link[0].classList) link[0].classList.add(className); else link[0].className += ' ' + className;
// remove class from home-link var home = document.getElementsByClassName('home__item'); if (home[0]) if (home[0].classList) home[0].classList.remove(className); else \\b)' + className.split(' ').join('
// search the closest parent and adding an active class on it too
var closestParent = getClosest(link[0], '.menubar_item-dropdown');
if (closestParent) if (closestParent.classList) closestParent.classList.add(className);
else closestParent.className += ' ' + className;
var socials = document.getElementsByClassName('social-links')[0]; var cloneSocials = socials.cloneNode(true);
var menu = document.getElementById("menubar"); var cloneMenu = menu.cloneNode(true);
var mobileMenu = document.getElementsByClassName('main-menu-wrapper')[0]; var beforeEl = document.getElementsByClassName('menu-global__search-form')[0];
mobileMenu.insertBefore(cloneSocials, beforeEl); mobileMenu.insertBefore(cloneMenu, beforeEl);
if (!document.body.classList.contains('logged-out-user')) var existCondition = setInterval(function() var userLink = document.querySelectorAll('.main-menu-item--my_page .link'); if (userLink.length) clearInterval(existCondition); var membersLink = document.querySelectorAll('#membersLink'); var userUrl = userLink[0].href; Array.prototype.forEach.call(membersLink, function(el) el.href = userUrl; );
if (document.querySelector('.main-menu-item--designer_editor')) document.querySelector('.main-menu-wrapper').classList.add('user-admin');
, 500); else var existCondition = setInterval(function() var userLink = document.querySelector('.main-menu-item--login .link'); if (userLink) clearInterval(existCondition); userLink.href="http://www.wonkette.com/core/users/email_login/";
, 500)
function copyValue(el) var thisVal = el.options[el.selectedIndex].text; var closestForm = getClosest(el, 'form'); var paypalAmount = closestForm.nextSibling.querySelector('.paypal-amount'); paypalAmount.value = thisVal;
document.addEventListener("scroll", createIdleScrollListener(() => if (window.scrollY > 0) document.body.classList.add('page-scrolled'); else document.body.classList.remove('page-scrolled');
));
function createIdleScrollListener(callback) let ticking = false;
return function onScrollIdle() if (ticking) return;
ticking = true; requestAnimationFrame(() => callback(); ticking = false; ); ;
});
window.REBELMOUSE_ACTIVE_TASKS_QUEUE.push(function()
window.addEventListener("scroll", () => if(this.scrollY > 50 ) document.querySelector(".rebelbar.rebelbar--fixed.skin-simple").style.display = 'none'
else document.querySelector(".rebelbar.rebelbar--fixed.skin-simple").style.display = 'block' );
);
window.REBELMOUSE_ACTIVE_TASKS_QUEUE.push(function(){
window.REBELMOUSE_STDLIB.loadExternalScript("https://checkout.stripe.com/checkout.js", function() {
if (!Element.prototype.matches) Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
if (!Element.prototype.closest) Element.prototype.closest = function(s) var el = this; if (!document.documentElement.contains(el)) return null; do el.parentNode; while (el !== null && el.nodeType === 1); return null; ;
function formsHandling() { var formDonate = document.querySelectorAll('.donation-form:not(.processed)');
formDonate.forEach(function(formEl) var formEl = formEl;
formEl.classList.add("processed");
formEl.addEventListener("submit", function(event) event.preventDefault(); );
var donationBtns = formEl.querySelectorAll('.donate-button');
donationBtns.forEach(function(el) el.addEventListener("click", function(event) event.preventDefault(); formProcessing(el) ); );
function formProcessing(el) var btn = el; var payment = btn.getAttribute('data-payment'); var planType = formEl.querySelector('input[name="plan_type"]:checked').value; var checkedOption = formEl.querySelector('input[name="amount"]:checked'); var amount = checkedOption.value * 1; var amountOptional = checkedOption.getAttribute('data-amount'); var dataValue = checkedOption.getAttribute('data-value'); var action;
if ( formEl.contains(formEl.querySelector('.remove-me')) ) formEl.querySelectorAll('.remove-me').forEach(function(el) el.remove() );
if ( payment == "paypal" ) formEl.action = "https://www.paypal.com/cgi-bin/webscr"; formEl.setAttribute('target', '_blank');
addHidden( 'currency_code', 'USD'); addHidden( 'cmd', ''); addHidden( 'return', "https://www.wonkette.com/st/Wonkettes_Hero"); addHidden( 'cancel_return', window.location.href);
if ( planType == "once" ) checkedOption.value = dataValue; formEl.querySelector('input[name="cmd"]').value="_donations"; addHidden( 'business', 'rebecca@wonkette.com'); addHidden( 'item_name', 'Wonkette Donation'); addHidden( 'item_number', 'Just Once');
//add new params addHidden( 'a3', dataValue); addHidden( 'p3', 1); addHidden( 't3', 'D');
else if ( planType == "monthly" ) formEl.querySelector('input[name="cmd"]').value="_xclick-subscriptions"; addHidden( 'business', 'rebecca@wonkette.com'); addHidden( 'item_name', 'Wonkette Recurring Donation'); addHidden( 'item_number', 'wonkette_recurring');
//add new params addHidden( 'a3', dataValue); addHidden( 'p3', 1); addHidden( 't3', 'M'); addHidden( 'src', 1); addHidden( 'srt', 52);
formEl.submit(); else if ( payment == "strip" ) addHidden( 'entity_type', 1); addHidden( 'plan_type', 1); addHidden('entity_id', getSiteId() ); checkedOption.value = dataValue * 100;
if ( planType == "once" ) formEl.action = "/core/payment/single_donation"; addHidden( 'plan_name', 'One Time Donation'); stripInit(amount, 'One Time Donation');
else if ( planType == "monthly" ) formEl.action = "/core/payment/recurring_donation"; addHidden( 'plan_name', 'Monthly Donation'); addHidden( 'plan', 'donation_' + amount); stripInit(amount, 'Monthly Donation');
function addHidden(key, value) // Create a hidden input element, and append it to the form: var input = document.createElement('input'); input.type="hidden"; input.name = key; input.value = value; input.className += 'remove-me'; formEl.appendChild(input);
function stripInit(amount, description) var token = function(res) addHidden('stripeToken', res.id); addHidden('stripeEmail', res.email); formEl.submit(); ;
if (amount) StripeCheckout.open( key: 'pk_live_7dJjNGbMgTkHfEasr9FsLcjF', // real //key: 'pk_test_zbMpaIyMyHJ7TLUEheC7q2iS', //test amount: amount, name: 'Wonkette', image: 'https://assets.rbl.ms/16950638/origin.png', description: description, panelLabel: 'Donate', token: token, locale: 'auto' ); else window.alert('Select donation amount first')
);
function getSiteId() var site_id = null; var inner = document.querySelector('html').innerHTML var str = inner.split('"site_id": '); if( str[1] != undefined ) site_id = str[1].split(',')[0];
return !isNaN(site_id) ? site_id : false;
}
formsHandling();
REBELMOUSE_STDLIB.createElementChangeListener(".show-more.js-expand:not(.processed)", (el) => const keepReading = el; keepReading.classList.add("processed"); keepReading.addEventListener("click", function() setTimeout(formsHandling, 500) ); );
});
});
window.REBELMOUSE_ACTIVE_TASKS_QUEUE.push(function(){
window.disqus_config = function () this.page.identifier = "2658453192", this.page.url = "https://www.wonkette.com/american-exceptionalism-15-year-old-mass-shooter-kills-five-in-raleigh"; ; var disqusCt = document.createElement('div'), disqus_config; disqusCt.id = 'disqus_thread'; (function () d.body).appendChild(s); )();
function loadCountScript(callback) var s = document.createElement('script'); s.type="text/javascript"; s.async = true; s.id = 'dsq-count-scr'; s.src = "//wonkettecom.disqus.com/count.js"; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); s.onload = () => callback(s); document.head.append(s);
loadCountScript(script => /*Add comment Button to all articles*/ REBELMOUSE_STDLIB.createElementChangeListener(".share-panel:not(.js--has-comments)", (el) => let sharesPanel = el; sharesPanel.classList.add('js--has-comments'); if (sharesPanel.closest('.article__shares')) let postId = window.REBELMOUSE_BOOTSTRAP_DATA.post.id, postURL = location.protocol + '//' + location.host + location.pathname; addButton(postURL, postId, sharesPanel); else if (sharesPanel.closest('.widget')) let thisPost = sharesPanel.closest('.widget'), postId = thisPost.getAttribute('elid'), postURL = thisPost.querySelector('.widget__headline-text').getAttribute('href'); addButton(postURL, postId, sharesPanel);
); );
function addButton(url, id, el) var commentBtn = document.createElement('span'); //commentBtn.href = url; commentBtn.classList.add('js--toggleDisqus'); commentBtn.classList.add('disqus-comment-count'); commentBtn.setAttribute('data-disqus-url', url); commentBtn.setAttribute('data-postid', id); //commentBtn.setAttribute('data-disqus-identifier', id); commentBtn.innerText="0"; el.append(commentBtn); DISQUSWIDGETS.getCount( reset: true ); //console.log(url, id);
REBELMOUSE_STDLIB.createElementChangeListener(".js--toggleDisqus:not(.js--callDisqus-processed), .show-more:not(.js--callDisqus-processed)", (el) => { console.log('run callDisqus()'); var timeOut = 10; if (el.classList.contains("show-more")) timeOut = 1000;
el.classList.add('js--callDisqus-processed') el.addEventListener('click', function () setTimeout(function () t.closest('.js-section-loader-feature-container'), postId = t.getAttribute('data-postid'), postURL = t.getAttribute('data-disqus-url'); document.querySelector('#disqus_thread') && document.querySelector('#disqus_thread').remove(); if (t.closest('.article__shares')) let postWrap = document.querySelector('.mobile-post-wrapper'); postWrap.appendChild(disqusCt); else let afterEl = t.closest('.widget'); if (afterEl) afterEl.parentNode.insertBefore(disqusCt, afterEl.nextElementSibling);
console.log('DISQUS.reset', postId, postURL); DISQUS.reset( reload: true, config: function () this.page.identifier = postId; this.page.url = postURL;
); if (t.classList.contains('js--toggleDisqus')) let disqus = document.getElementById("disqus_thread"); // disqus.scrollIntoView();
, timeOut) ); }); // Hide hidden tip-jar, idk why window.REBELMOUSE_STDLIB.createElementChangeListener(".js-keep-reading:not(.js-processed)", (el) => let keepReading = el; keepReading.classList.add('js-processed'); //keepReading.closest('.mb-2').nextElementSibling.style.display='none'; );
});
More Stories
How Political Parties Work
Humane, Orderly Border Policies Needed
Conservatives only care when they’re the ones suffering