Alcoholic soda was a $116 million business in 2015
Who needs plain ol’ soda when you can have one with a boozy kick? That’s become the mantra of many beverage marketers (and, in turn, many thirsty adults). Yes, hard soda is a thing — a $116 million thing, in fact: That’s the rough sales total for this emerging category in 2015, according to market researcher IRI.
The trend started primarily with alcoholic root beers — specifically, a craft-brewery brand called Not Your Father’s Root Beer, which dominated the category last year (it accounted for $92 million of the $116 million in sales). But it’s now spreading to the major players in the beverage world. Anheuser-Busch InBev has its Best Damn Root Beer brand. And earlier this year, MillerCoors launched Henry’s Hard Soda, a brand that takes as its inspiration one Henry Weinhard, a 19th-century brewer who made a name for himself in Portland, Ore., and who once suggested running beer through the city’s drinking fountains. In other words, Henry liked to have a good time.
Trigger Warning: This content is too spicy for SoylentNews.
Georgetown Law Professors Say Students Are “Traumatized” by Criticisms of Scalia, Demand “Remedies”
On the day the death of Justice Antonin Scalia was announced, Georgetown Law School issued an official statement and press release headlined “Georgetown Law Mourns the Loss of U.S. Supreme Court Justice Antonin Scalia.” It quoted the school’s dean, William M. Treanor, heaping unqualified praise on the highly controversial justice.
“Scalia was a giant in the history of the law, a brilliant jurist whose opinions and scholarship profoundly transformed the law,” Dean Treanor pronounced. “Like countless academics, I learned a great deal from his opinions and his scholarship. In the history of the Court, few justices have had such influence on the way in which the law is understood.” Moreover, “he cared passionately about the profession, about the law and about the future. … We will all miss him.” It went on and on in that vein.
[...] Two Georgetown law professors, Mike Seidman and Gary Peller, disagreed with Dean Treanor’s glowing assessment of Scalia and said so. That night, Seidman posted a brief email to the dean and faculty noting: “Our norms of civility preclude criticizing public figures immediately after their death.” As a result, said Seidman, “all I’ll say is that I disagree with these sentiments and that expressions attributed to the ‘Georgetown Community’ in the press release issued this evening do not reflect the views of the entire community.”
A full two days after Scalia’s death, Professor Peller wrote an email — first to the dean and the faculty, and thereafter to the entire law school — explaining his dissent from the dean’s praise. Like a huge number of Americans generally, and legal professionals particularly, Professor Peller viewed Scalia’s role on the Supreme Court as toxic in the extreme, and he explained why.
Professor Peller wrote that he was “put off” by the official statement praising Scalia, and that he “imagine[s] many other faculty, students, and staff, particularly people of color, women, and sexual minorities, cringed at [the] headline and at the unmitigated praise with which the press release described a jurist that many of us believe was a defender of privilege, oppression, and bigotry, one whose intellectual positions were not brilliant but simplistic and formalistic.” He added that Scalia “was not a legal figure to be lionized or emulated by our students. He bullied lawyers, trafficked in personal humiliation of advocates, and openly sided with the party of intolerance in the ‘culture wars’ he often invoked. In my mind, he was not a ‘giant’ in any good sense.”
So far, so good: right? The Georgetown dean lionized Scalia as a “brilliant jurist” from whom we all learned so very much and whom we will “all miss,” while a law professor objected to that view and argued that Scalia was actually a destructive presence on the Court. That sounds to me like exactly the sort of debate that one should find at a major U.S. law school, the sort of debate thinking adults have on a daily basis. Vehement criticisms of Scalia have long been, and still are, commonplace; The New Yorker’s Jeffrey Toobin this week wrote that Scalia “devoted his professional life to making the United States a less fair, less tolerant, and less admirable democracy.”
But two conservative law professors on the Georgetown faculty are indignant that this debate took place at all. The right-wing duo, Randy Barnett and Nick Rosenkranz (a senior Rubio adviser), sent their own email denouncing Peller’s anti-Scalia statement: not on substantive grounds that he was wrong on the merits about Scalia, but insisting that he had no right to criticize Scalia at all.
They began with an incredibly petty accusation that Professor Peller broke the law school’s rules in posting his statement; it was, they said, “in violation of the stated policies governing such emails.” By contrast, the two professors boasted, they “sought and received permission to post this response in an attempt to remedy the harm caused by the initial breach of our norms.”
After they each recounted fond personal memories they shared with Justice Scalia (“We had lunch together at his favorite pizza place, AV Ristorante. … We once sang a song together, believe it or not: Oh, Danny Boy”), they jointly moved to the crux of their grievance: It was “simply cruel beyond words” to subject these two professors to criticisms of their beloved hero. They literally said that:
To hear from one’s colleagues, within hours of the death of a hero, mentor, and friend, that they resent any implication that they might mourn his death — that, in effect, they are glad he is dead — is simply cruel beyond words.
They added, “But, though the insult and cruelty of our colleagues was grievous, at least only two of us had to bear it.” We had to bear it.
[...] For some reason, national pundits who love to denounce “PC” campus censorship and parade around as free speech crusaders obsessively focus on left-wing censorship while ignoring other kinds of campus viewpoint-suppression that are far more common. As I’ve documented repeatedly, the most common form of campus censorship — punishment and other official limitations imposed on activists working against Israeli occupation of Palestine — is almost always completely ignored in this pundit debate.
Indeed, it’s common for those seeking to suppress left-wing views on college campuses to invoke exactly the same “safe space” rhetoric. As we noted last week in reporting on the growing criminalization of the BDS movement, the University of Illinois student who led the campaign to have Steven Salaita fired for his pro-Gaza tweets, himself a former AIPAC intern, told the New York Times when justifying this campaign: “Hate speech is never acceptable for those applying for a tenured position; incitement to violence is never acceptable. … There must be a relationship between free speech and civility.” Another “pro-Israel” student demanding Salaita’s firing said, “It’s about feeling safe on campus.” This is seen over and over: “PC” censorship is almost always depicted as a left-wing phenomenon even though it is directed at least as commonly at the Left as it is wielded by them.
Read the rest!
Medical Marijuana Users in Canada Can Legally Grow Their Own Weed Now
Medical marijuana patients in Canada are free to grow their own plants after a Federal Court judge ruled the current laws forbidding that are unconstitutional.
Under former prime minister Stephen Harper, the Conservative government banned cannabis patients from growing their own supply, forcing them to purchase weed from licensed producers. Previously, patients were permitted to grow under the Marihuana Medical Access Regulations (MMAR) program.
The restrictions were challenged by four British Columbia residents, who claimed they were a violation of Charter rights. On Wednesday, Judge Michael Phelan sided with the plaintiffs in a Vancouver courtroom. He has suspended his decision for six months to give the Liberal government time to create new legislation. In the meantime, Canadians with licenses to produce marijuana under the MMAR can continue to do so.
Ontario patient Kyle Morrison, 36, who suffers from arthritis and herniated discs stemming from a workplace injury, told VICE he's relieved to hear the news. Morrison has had an MMAR license for the last five years allowing him to be in possession of 15 plants. He wants to continue to grow his own pot. "I [raise] my own poultry... I hunt. I basically don't buy meat from a grocery store, and I don't want to smoke grocery store cannabis," he said. Morrison, who also suffers from mental health issues, said he wanted his children to be free to grow medical marijuana should they require it in the future.
Longtime pot activist and patient Tracy Curley told VICE the news was "really, really good," but she suspects the Crown prosecutor will appeal the decision.
http://deadline.com/2016/02/deadpool-risen-the-witch-race-weekend-box-office-1201705730/
“It’s a Deadpool world and we’re just living in it,” beamed 20th Century Fox distribution chief Chris Aronson this morning. The Marvel anti-hero movie hasn’t calmed down with weekend 2 of $55M and a 10-day total of $235.4M, with a big assist from star Ryan Reynolds, who continues promoting. Yesterday, his satirical Deadpool Kanye-esque rant against Saturday Night Live exec producer Lorne Michaels went viral, clocking 2.4M YouTube views.
[...] Could Deadpool topple The Passion Of The Christ ($370.8M) to become the top-grossing R-rated film of all-time? The Tim Miller-directed superhero movie thru Sunday will be running 11% ahead of Mel Gibson’s New Testament title through its second weekend. Yeah, it’s an apples to oranges comparison given the discrepancy between the two titles’ crowds. Passion reaped seven weekends of double-digit million dollar grosses from the Lenten faithful back in 2004. A Friday Imax matinee at Edwards Valencia Cinema, 30 minutes north of Hollywood, drew mostly couples to the raunchy Marvel film. But there’s a lot of back-to-back franchise competition this spring. Just look at what’s standing in Deadpool‘s way: London Has Fallen, 10 Cloverfield Lane, The Divergent Series: Allegiant and Batman v. Superman. With all these brand titles, you’d think it was summer. Many in the business feel $350M is within reach for Deadpool, which would put it nose-to-nose with American Sniper, the second highest grossing R-rated film at the domestic B.O.
// ==UserScript==
// @name Soylent Upgrade
// @version 11.0
// @match http://soylentnews.org/*article.pl*
// @match http://*.soylentnews.org/*article.pl*
// @match https://soylentnews.org/*article.pl*
// @match https://*.soylentnews.org/*article.pl*// @match http://soylentnews.org/*submit.pl*
// @match http://*.soylentnews.org/*submit.pl*
// @match https://soylentnews.org/*submit.pl*
// @match https://*.soylentnews.org/*submit.pl*// @match http://soylentnews.org/*admin.pl*
// @match http://*.soylentnews.org/*admin.pl*
// @match https://soylentnews.org/*admin.pl*
// @match https://*.soylentnews.org/*admin.pl*// @match http://soylentnews.org/*comments.pl*
// @match http://*.soylentnews.org/*comments.pl*
// @match https://soylentnews.org/*comments.pl*
// @match https://*.soylentnews.org/*comments.pl*// @match http://soylentnews.org/*journal.pl*
// @match http://*.soylentnews.org/*journal.pl*
// @match https://soylentnews.org/*journal.pl*
// @match https://*.soylentnews.org/*journal.pl*
// ==/UserScript==// User Options:
var simplifyChars = true; // Change to false if you don't want stylized quotation marks, ellipses, etc. to be replaced
var stripEmail = false; // Remove auto-filled email from submission
var doiChecker = true; // Add Crossref search to DOIs in the summary// End User Options
/* ! http://mths.be/fromcodepoint v0.1.0 by @mathias */
if (!String.fromCodePoint) { (function() { var defineProperty = (function() { try { var object = {}; var $defineProperty = Object.defineProperty; var result = $defineProperty(object, object, object) && $defineProperty; } catch(error) {} return result; }()); var stringFromCharCode = String.fromCharCode; var floor = Math.floor; var fromCodePoint = function() { var MAX_SIZE = 0x4000; var codeUnits = []; var highSurrogate; var lowSurrogate; var index = -1; var length = arguments.length; if (!length) { return ''; } var result = ''; while (++index < length) { var codePoint = Number(arguments[index]); if ( !isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || floor(codePoint) != codePoint ) { throw RangeError('Invalid code point: ' + codePoint); } if (codePoint <= 0xFFFF) { codeUnits.push(codePoint); } else { codePoint -= 0x10000; highSurrogate = (codePoint >> 10) + 0xD800; lowSurrogate = (codePoint % 0x400) + 0xDC00; codeUnits.push(highSurrogate, lowSurrogate); } if (index + 1 == length || codeUnits.length > MAX_SIZE) { result += stringFromCharCode.apply(null, codeUnits); codeUnits.length = 0; } } return result; }; if (defineProperty) { defineProperty(String, 'fromCodePoint', { 'value': fromCodePoint, 'configurable': true, 'writable': true }); } else { String.fromCodePoint = fromCodePoint; } }()); }// Add "Quote This" buttons to all initially visible comments
var spans = document.getElementsByTagName("span");
for (var x=0; x<spans.length; x++)
{
if (spans[x].id.indexOf("reply_link_")==0)
{
var button = document.createElement("span");
button.setAttribute("class","nbutton");
var p = document.createElement("p");
var b = document.createElement("b");
var a = document.createElement("a");
// Set the href of the "Quote This" button to the href of the "Reply to This" button, with the escaped contents of the post added to URL and any [domain.names] following links in the post cut out:
a.setAttribute("href",spans[x].getElementsByTagName("a")[0].href.replace("#post_comment","&postercomment="+escape("<blockquote>"+document.getElementById("comment_body_"+spans[x].id.replace("reply_link_","")).innerHTML.replace(/<\/a>\s\[.*?\..*?\]/g,"<\/a>")+"<\/blockquote>\n\n")+"#post_comment"));
// To Do: Shorten URLs longer than 2000 characters
a.appendChild(document.createTextNode("Quote This"));
b.appendChild(a);
p.appendChild(b);
button.appendChild(p);
spans[x].parentNode.insertBefore(button, spans[x].nextSibling);
spans[x].parentNode.insertBefore(document.createTextNode(" "), spans[x].nextSibling); // Divider
}
}// DOI checker in the summary
if (doiChecker && window.location.href.search(/https?\:\/\/.*soylentnews\.org.*?\/article\.pl/)!=-1)
{
var summary = document.getElementById("articles").getElementsByClassName("intro")[0];
summary.innerHTML = summary.innerHTML.replace(/(\(|\[)DOI: (10[^\)]*?)(\)|\])/gi,"$1DOI: <a href='http://search.crossref.org/?q=$2' target='_blank'>$2</a>$3");
summary.innerHTML = summary.innerHTML.replace(/(\(|\[)open, DOI: (10[^\)]*?)(\)|\])/gi,"$1open, DOI: <a href='http://search.crossref.org/?q=$2' target='_blank'>$2</a>$3");
}// Empty email input area, but only on submission page
if (stripEmail && window.location.href.search(/https?\:\/\/.*soylentnews\.org.*?\/submit\.pl/)!=-1)
{
var boxes = document.getElementsByTagName("input");
for (var x=0; x<boxes.length; x++)
{
if (boxes[x].name == "email")
{
boxes[x].value = "";
}
}
}// Add title case button next to title/subj field on Story Submissions, Submission Preview, and Story Preview
if (window.location.href.search(/https?\:\/\/.*soylentnews\.org.*?\/(submit|admin)\.pl/)!=-1)
{
var boxes = document.getElementsByTagName("input");
for (var x=0; x<boxes.length; x++)
{
if (boxes[x].name == "title" || boxes[x].name == "subj")
{
boxes[x].id = "storyTitle";
var button = document.createElement("input");
button.setAttribute("type","button");
button.setAttribute("value","Title Case");
button.setAttribute("title","Convert title to title case.");
button.setAttribute("onclick","document.getElementById('storyTitle').value=document.getElementById('storyTitle').value.replace(/^\\s/gi,'').replace(/\\b([a-z])/gi,function(m, p1){return p1.toUpperCase();}).replace(/\\b(at|of|is|and|to|in|by|as|its|be|the|on|a|an|but|or|for)\\b/gi,function(m, p1){return p1.toLowerCase();}).replace(/^([a-z])/gi,function(m, p1){return p1.toUpperCase();}).replace(/:\\s([a-z])/gi,function(m, p1){return ': '+p1.toUpperCase();}).replace(/([a-z])['\u2019]([a-z])/gi,function(m, p1, p2){return p1+'\\''+p2.toLowerCase();}).replace(/\\bx(86|64)\\b/gi,'x$1').replace(/\\s$/gi,'');");
boxes[x].parentNode.insertBefore(button, boxes[x].nextSibling);
if (window.location.href.search(/https?\:\/\/.*soylentnews\.org.*?\/admin\.pl/)!=-1 || boxes[x].name == "subj")
{
boxes[x].parentNode.insertBefore(document.createElement("br"), boxes[x].nextSibling);
}
else
{
boxes[x].parentNode.insertBefore(document.createTextNode(" "), boxes[x].nextSibling);
}
}
}
}// Add warning for creating a story in the past
if (window.location.href.search(/https?\:\/\/.*soylentnews\.org.*?\/admin\.pl/)!=-1)
{
var boxes = document.getElementsByTagName("input");
for (var x=0; x<boxes.length; x++)
{
if (boxes[x].name == "op" && (boxes[x].value == "save"))
{
// New onclick extracts the post date, compares to the current date, and only submits if the post date is in the future or the user overrides the warning:
boxes[x].setAttribute("onclick","var d = new Date(document.getElementById('slashstoryform').elements['time'].value.replace(/\\s/,'T')); var a = true; if (d < Date.now()){a = confirm('Are you sure you want to post a story '+(Math.round((Date.now()-d)/60000))+' minutes in the past?');} if (a) {st_submit(this);}");
}
}
}var boxes = document.getElementsByTagName("textarea");
for (var x=0; x<boxes.length; x++)
{
if (boxes[x].name == "introtext" || boxes[x].name == "bodytext" || boxes[x].name == "story")
{
var temp = boxes[x].value; // Retrieve textarea contents
temp = temp.replace(/<\/p><p>/g,"<\/p>\n\n<p>"); // Add newlines between paragraphs
temp = temp.replace(/<br>\s?<br>/g,"<\/p>\n\n<p>"); // Convert double break tags to paragraph tags
temp = temp.replace(/<\/blockquote><p>/g,"<\/blockquote>\n\n<p>"); // Add newlines after blockquotes
temp = temp.replace(/<\/p><blockquote>/g,"<\/p>\n\n<blockquote>"); // Add newlines before blockquotes
temp = temp.replace(/<blockquote><div><p>/g,"<blockquote><div>\n\n<p>"); // Add newlines within start of blockquotes
temp = temp.replace(/<\/p><\/div><\/blockquote>/g,"<\/p>\n\n<\/div><\/blockquote>"); // Add newlines within end of blockquotes
temp = temp.replace(/<\/blockquote><blockquote>/g,"<\/blockquote>\n\n<blockquote>"); // Add newlines between two blockquotes
temp = temp.replace(/<p class="byline">\s/i,"<p class=\"byline\">"); // Remove extra space from byline
temp = temp.replace(/<p>\s/g,"<p>"); // Remove extra space from start of paragraph
temp = temp.replace(/\s<\/p>/g,"<\/p>"); // Remove extra space from end of paragraph
temp = temp.replace(/<\/li><li>/g,"<\/li>\n<li>"); // Add newlines between list items
temp = temp.replace(/(<\/li>)(<\/[u|o]l>)/g,'$1\n$2'); // Add newline after last list item
temp = temp.replace(/(<\/p>)(<[u|o]l>)/g,'$1\n$2'); // Add newlines before lists
temp = temp.replace(/<p>\[...\]/g,"<p>[...] "); // Add space within beginning of foreshortened paragraph
while (temp.indexOf(" ")!=-1)
{
temp = temp.replace(/ /g," "); // Replace double spaces with single spaces
}
if (simplifyChars)
{
temp = temp.replace(/\u2018/g,"'"); // 'LEFT SINGLE QUOTATION MARK' (U+2018) to (U+0027)
temp = temp.replace(/\u2019/g,"'"); // 'RIGHT SINGLE QUOTATION MARK' (U+2019) to (U+0027)
temp = temp.replace(/\u201C/g,"\""); // 'LEFT DOUBLE QUOTATION MARK' (U+201C) to (U+0022)
temp = temp.replace(/\u201D/g,"\""); // 'RIGHT DOUBLE QUOTATION MARK' (U+201D) to (U+0022)
temp = temp.replace(/\u2026/g,"..."); // 'HORIZONTAL ELLIPSIS' (U+2026) to (U+002E) x3
}
boxes[x].value = temp;
boxes[x].rows = 32; // Expand textarea height to 32 rows
}
var toolbar = document.createElement("div");// Blockquote button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","Blockquote");
tempbutton.setAttribute("title","Wrap \u003Cblockquote\u003E tags around the selected text.");
tempbutton.setAttribute("onclick","addBlockquote(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Paragraph and Line break buttons
var tempspan = document.createElement("span");
tempspan.setAttribute("id","htmlFormatButtons");
if (document.getElementById("posttype") && document.getElementById("posttype").selectedIndex == 0)
{
tempspan.setAttribute("style","display:none;"); // Hide if initial post type option is "Plain Old Text"
}
if (document.getElementById("posttype"))
{
document.getElementById("posttype").addEventListener("change", function() {if (document.getElementById('posttype').selectedIndex == 0) {document.getElementById('htmlFormatButtons').style.display = 'none'} else {document.getElementById('htmlFormatButtons').style.display = 'inline'}}); // Change visibility of these buttons based on value of post type
}
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","P");
tempbutton.setAttribute("title","Wrap \u003Cp\u003E tags around the selected text.");
tempbutton.setAttribute("onclick","addPara(document.getElementsByTagName('textarea')["+x+"]);");
tempspan.appendChild(tempbutton);
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","BR");
tempbutton.setAttribute("title","Insert a line break.");
tempbutton.setAttribute("onclick","addBreak(document.getElementsByTagName('textarea')["+x+"]);");
tempspan.appendChild(tempbutton);
toolbar.appendChild(tempspan);// HR button, if editing a story
if (boxes[x].name == "introtext" || boxes[x].name == "bodytext" || boxes[x].name == "story")
{
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","HR");
tempbutton.setAttribute("title","Insert a horizontal rule.");
tempbutton.setAttribute("style","text-decoration:underline overline;");
tempbutton.setAttribute("onclick","addHRule(document.getElementsByTagName('textarea')["+x+"]);");
tempspan.appendChild(tempbutton);
toolbar.appendChild(tempspan);
}// URL button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","URL");
tempbutton.setAttribute("title","Create a hyperlink around the selected text.");
tempbutton.setAttribute("style","text-decoration:underline;");
tempbutton.setAttribute("onclick","addHyperlink(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);
toolbar.appendChild(document.createTextNode(" "));// Bold button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","B");
tempbutton.setAttribute("title","Bold");
tempbutton.setAttribute("style","font-weight:bold;");
tempbutton.setAttribute("onclick","addBold(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Italic button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","I");
tempbutton.setAttribute("title","Italic");
tempbutton.setAttribute("style","font-style:italic;");
tempbutton.setAttribute("onclick","addItalic(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Strike button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","S");
tempbutton.setAttribute("title","Strikethrough");
tempbutton.setAttribute("style","text-decoration:line-through;");
tempbutton.setAttribute("onclick","addStrike(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);toolbar.appendChild(document.createTextNode(" ")); // Divider
// Code button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","Code");
tempbutton.setAttribute("title","Wrap \u003Cecode\u003E tags around the selected text.");
tempbutton.setAttribute("style","font-family:monospace;");
tempbutton.setAttribute("onclick","addEcode(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Teletype button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","TT");
tempbutton.setAttribute("title","Wrap \u003Ctt\u003E (teletype, i.e. monospace) tags around the selected text.");
tempbutton.setAttribute("style","font-family:monospace;");
tempbutton.setAttribute("onclick","addTT(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Small button, if editing a story
if (boxes[x].name == "introtext" || boxes[x].name == "bodytext" || boxes[x].name == "story")
{
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","\u0073\u1D0D\u1D00\u029F\u029F");
tempbutton.setAttribute("title","Wrap \u003Csmall\u003E tags around the selected text.");
// tempbutton.setAttribute("style","font-size:75%;");
tempbutton.setAttribute("onclick","addSmall(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);
}toolbar.appendChild(document.createTextNode(" ")); // Divider
// Superscript button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","x\u00B2");
tempbutton.setAttribute("title","Superscript");
tempbutton.setAttribute("style","font-family:monospace;");
tempbutton.setAttribute("onclick","addSuper(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Subscript button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","x\u2082");
tempbutton.setAttribute("title","Subscript");
tempbutton.setAttribute("style","font-family:monospace;");
tempbutton.setAttribute("onclick","addSubsc(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);toolbar.appendChild(document.createTextNode(" ")); // Divider
// Ordered list button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","1. List");
tempbutton.setAttribute("title","Insert an ordered list or convert newline-separated text into an ordered list.");
tempbutton.setAttribute("onclick","addOrdlist(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Unordered list button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","\u2022 List");
tempbutton.setAttribute("title","Insert an unordered list or convert newline-separated text into an unordered list.");
tempbutton.setAttribute("onclick","addUnordlist(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);toolbar.appendChild(document.createElement("br")); // Divider
// Create 7 macro buttons
for (var i=1; i<=7; i++)
{
// Create macros if they don't exist
if(!localStorage.getItem("soymacro"+i))
{
localStorage.setItem("soymacro"+i,JSON.stringify(["M"+i,"string","Sample Text"]));
//localStorage.setItem("soymacro"+i,JSON.stringify(["M"+i,"regexp","/a/gi","b"]));
}
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("id","soymacros"+x+"button"+i);
tempbutton.setAttribute("value",JSON.parse(localStorage.getItem("soymacro"+i))[0]);
if (JSON.parse(localStorage.getItem("soymacro"+i))[1]=="string")
{
if (JSON.parse(localStorage.getItem("soymacro"+i))[2].length < 40)
{
tempbutton.setAttribute("title","Insert or replace selected text with: " + JSON.parse(localStorage.getItem("soymacro"+i))[2]);
}
else
{
tempbutton.setAttribute("title","Insert or replace selected text with: " + JSON.parse(localStorage.getItem("soymacro"+i))[2].substring(0,40)+"...");
}
tempbutton.setAttribute("onclick","macroChoose(document.getElementsByTagName('textarea')["+x+"],"+i+");");
}
else
{
tempbutton.setAttribute("title","Replace text matched by the regular expression: " + JSON.parse(localStorage.getItem("soymacro"+i))[2] + " with: " + JSON.parse(localStorage.getItem("soymacro"+i))[3]);
tempbutton.setAttribute("onclick","macroChoose(document.getElementsByTagName('textarea')["+x+"],"+i+");");
}
toolbar.appendChild(tempbutton);
}
// Create macros edit button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","Edit");
tempbutton.setAttribute("title","Configure user macros or discard changes.");
tempbutton.setAttribute("onclick","if (document.getElementById('macrobar"+x+"').style.display == 'none') {document.getElementById('macrobar"+x+"').style.display = 'block'; macrobarInit("+x+");} else {document.getElementById('macrobar"+x+"').style.display = 'none'; if (p = document.getElementById('postercomment')) { var x = p.offsetTop; while (p = p.offsetParent) {x += p.offsetLeft;} window.scrollTo(0,x-75);}}");
toolbar.appendChild(tempbutton);toolbar.appendChild(document.createElement("br")); // Divider
// Despace button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value","Despace");
tempbutton.setAttribute("title","Delete newlines within the selection.");
tempbutton.setAttribute("onclick","despace(document.getElementsByTagName('textarea')["+x+"]);");
toolbar.appendChild(tempbutton);// Symbol button
var tempbutton = document.createElement("input");
tempbutton.setAttribute("type","button");
tempbutton.setAttribute("value",":-)");
tempbutton.setAttribute("title","Insert a symbol.");
tempbutton.setAttribute("onclick","if (document.getElementById('smilebar"+x+"').style.display == 'none') {document.getElementById('smilebar"+x+"').style.display = 'block'} else {document.getElementById('smilebar"+x+"').style.display = 'none'; if (p = document.getElementById('postercomment')) { var x = p.offsetTop; while (p = p.offsetParent) {x += p.offsetLeft;} window.scrollTo(0,x-75); } }");
toolbar.appendChild(tempbutton);
boxes[x].parentNode.insertBefore(toolbar, boxes[x].nextSibling);// Symbol list
var smilebar = document.createElement("div");
smilebar.setAttribute("style","-moz-user-select:none; -webkit-user-select:none; display:none; font-size:16pt; max-height:240px; overflow:auto; padding:0.5em;");
smilebar.setAttribute("id","smilebar"+x);
var smiles = ["\u0026amp;","\u0026lt;","\u0026gt;"];var codes = [[161,169],[171,172],[174],[176,177],[180,183],[187,191],[215],[224,255],[402],[629],[632],[916],[920],[931],[934],[937],[945,946],[956],[960],[963],[8216,8221],[8226],[8230],[8251],[8364],[8478],[8482],[8528,8542],[8585],[8592,8652],[8712,8716],[8721],[8730],[8733,8734],[8736],[8743,8749],[8756,8757],[8773],[8776],[8800,8805],[8834,8837],[8984],[9760],[9762,9765],[9770],[9773,9775],[9784,9794],[9812,9831],[9833,9842],[9850],[9855,9861],[9874,9877],[9882,9885],[9888,9893],[9913],[9940],[9962],[9971],[9981],[9992,10087],[65533],[127744,127756],[127759],[127775,127776],[127797],[127801],[127804,127812],[127817],[127820,127822],[127828,127831],[127838,127839],[127843],[127849],[127855],[127860,127867],[127891],[127904,127911],[127918],[127939],[127942],[127977],[128025],[128074,128078],[128123,128131],[128137,128142],[128148,128150],[128152],[128158],[128161,128164],[128168,128170],[128172],[128176,128177],[128187],[128189,128190],[128193,128194],[128197],[128203,128204],[128206],[128214],[128225,128227],[128231,128233],[128241],[128244],[128246],[128250,128252],[128259],[128266,128270],[128273,128276],[128278,128280],[128286],[128293,128299],[128302,128303],[128509,128565],[128659],[128684,128685]];
for (var i=0; i<codes.length; i++) { if (codes[i].length > 1) { for (var j=codes[i][0]; j<=codes[i][1]; j++) { smiles[smiles.length] = String.fromCodePoint(j); } } else { smiles[smiles.length] = String.fromCodePoint(codes[i][0]); } } // Populate smiles array with code ranges converted to individual characters
smiles = smiles.concat(["xD",":-)",":^)","(^_^;)","(\u00A0\u0361\u00B0\u00A0\u035C\u0296\u00A0\u0361\u00B0)","(\u00A0\u0361\u007E\u00A0\u035C\u0296\u00A0\u0361\u00B0)\uFEFF","\u00AF\u005C\u005F(\u30C4)\u005F\u002F\u00AF","(\u256F\u00B0\u25A1\u00B0\uFF09\u256F\uFE35\u00A0\u253B\u2501\u253B","(\u30CE\u0CA0\u76CA\u0CA0)\u30CE\u5F61\u253B\u2501\u253B","(\u0060\uFF65\u03C9\uFF65\u00B4)","\u0CA0_\u0CA0","\u0295\u2022\u1D25\u2022\u0294","(\u3065\uFFE3\u00A0\u00B3\uFFE3)\u3065","\u0669(\u204E\u275B\u1D17\u275B\u204E)\u06F6","\u30FD\u0F3C\u0E88\u0644\u035C\u0E88\u0F3D\uFF89","(\uB208\u2038\uB208)","\u006F(\u3003\uFF3E\u25BD\uFF3E\u3003)\u006F","\u0028\u0028\u30FE\u0028\u2267\u76BF\u2266\uFF1B\u0029\u30CE\uFF3F\u0029\u0029","\u30FD\u0028\u002A\u2312\u2207\u2312\u002A\u0029\uFF89","\u0028\u2267\u2207\u2266\u0029\u002F"]); // Add in arbitrary emoticons
for (var i=0; i<smiles.length; i++)
{
var smile = document.createElement("span");
smile.setAttribute("style","cursor:pointer; padding:2px; white-space:nowrap;");
smile.setAttribute("onclick","addSmile(document.getElementsByTagName('textarea')["+x+"],'"+smiles[i].replace("\u005C","\u005C\u005C")+"');");
smile.appendChild(document.createTextNode(smiles[i]));
smilebar.appendChild(smile);
if (i+1<smiles.length)
{
smilebar.appendChild(document.createTextNode(" "));
}
}
toolbar.parentNode.insertBefore(smilebar, toolbar.nextSibling);// Create macro configuration interface
var macrobar = document.createElement("div");
macrobar.setAttribute("style","display:none; padding:0.5em;");
macrobar.setAttribute("id","macrobar"+x);
var table = document.createElement("table");
var tr = document.createElement("tr");
var th = document.createElement("th");
th.appendChild(document.createTextNode("Name"));
tr.appendChild(th);
var th = document.createElement("th");
th.appendChild(document.createTextNode("Type"));
tr.appendChild(th);
var th = document.createElement("th");
th.appendChild(document.createTextNode("String | Expression"));
tr.appendChild(th);
var th = document.createElement("th");
th.setAttribute("title","Only used with expressions. Parenthesized substring matches (e.g. '$1') can be used.");
th.setAttribute("style","cursor:help;");
th.appendChild(document.createTextNode("Expression Replace"));
tr.appendChild(th);
table.appendChild(tr);
for (var i=1; i<=7; i++)
{
var tr = document.createElement("tr");// Macro name
var td = document.createElement("td");
var name = document.createElement("input");
name.setAttribute("type","text");
name.setAttribute("id","soymacros"+x+"name"+i);
td.appendChild(name);
tr.appendChild(td);// Macro type
var td = document.createElement("td");
var rad = document.createElement("input");
rad.setAttribute("type","radio");
rad.setAttribute("name","soymacros"+x+"type"+i);
rad.setAttribute("id","soymacros"+x+"type"+i+"S");
td.appendChild(rad);
td.appendChild(document.createTextNode(" String "));
var rad = document.createElement("input");
rad.setAttribute("type","radio");
rad.setAttribute("name","soymacros"+x+"type"+i);
rad.setAttribute("id","soymacros"+x+"type"+i+"E");
td.appendChild(rad);
td.appendChild(document.createTextNode(" Expression "));
tr.appendChild(td);// Field A
var td = document.createElement("td");
var f1 = document.createElement("input");
f1.setAttribute("type","text");
f1.setAttribute("id","soymacros"+x+"fieldA"+i);
td.appendChild(f1);
tr.appendChild(td);// Field B
var td = document.createElement("td");
var f1 = document.createElement("input");
f1.setAttribute("type","text");
f1.setAttribute("id","soymacros"+x+"fieldB"+i);
td.appendChild(f1);
tr.appendChild(td);table.appendChild(tr);
}
macrobar.appendChild(table);var p = document.createElement("p");
var save = document.createElement("input");
save.setAttribute("type","button");
save.setAttribute("value","Save");
save.setAttribute("title","Save any edits to the macro configuration.");
save.setAttribute("onclick","macrobarSave("+x+");");
p.appendChild(save);
p.appendChild(document.createTextNode(" "));
var guide = document.createElement("a");
guide.setAttribute("href","https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions");
guide.setAttribute("target","_blank");
guide.appendChild(document.createTextNode("Regexp Guide"));
p.appendChild(guide);
macrobar.appendChild(p);toolbar.parentNode.insertBefore(macrobar, toolbar.nextSibling);
}var temp = document.createElement("script");
// Add selection handling function
temp.appendChild(document.createTextNode("function getSelection(textarea) { if ('selectionStart' in textarea) { if (textarea.selectionStart != textarea.selectionEnd) { return [textarea.selectionStart,textarea.selectionEnd]; } } } "));// Add comment formatting buttons
temp.appendChild(document.createTextNode("function addBlockquote(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<blockquote>'+area.value.substring(sel[0],sel[1])+'<\/blockquote>' + area.value.substring(sel[1]); } } function addPara(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<p>'+area.value.substring(sel[0],sel[1])+'<\/p>' + area.value.substring(sel[1]); } } function addBreak(area) { if ('selectionStart' in area) { var pos = area.selectionStart; area.value = area.value.substring(0,area.selectionStart) + '<br>' + area.value.substring(pos); area.focus(); area.setSelectionRange(pos+4,pos+4) } } function addHRule(area) { if ('selectionStart' in area) { var pos = area.selectionStart; area.value = area.value.substring(0,area.selectionStart) + '<hr>' + area.value.substring(pos); area.focus(); area.setSelectionRange(pos+4,pos+4) } } function addHyperlink(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { url = prompt('URL:', 'https://'); area.value = area.value.substring(0,sel[0]) + '<a href=\"'+url+'\">'+area.value.substring(sel[0],sel[1])+'<\/a>' + area.value.substring(sel[1]); } } function addBold(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<b>'+area.value.substring(sel[0],sel[1])+'<\/b>' + area.value.substring(sel[1]); } } function addItalic(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<em>'+area.value.substring(sel[0],sel[1])+'<\/em>' + area.value.substring(sel[1]); } } function addStrike(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<strike>'+area.value.substring(sel[0],sel[1])+'<\/strike>' + area.value.substring(sel[1]); } } function addEcode(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<ecode>'+area.value.substring(sel[0],sel[1])+'<\/ecode>' + area.value.substring(sel[1]); } } function addTT(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<tt>'+area.value.substring(sel[0],sel[1])+'<\/tt>' + area.value.substring(sel[1]); } } function addSmall(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<small>'+area.value.substring(sel[0],sel[1])+'<\/small>' + area.value.substring(sel[1]); } } function addSuper(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<sup>'+area.value.substring(sel[0],sel[1])+'<\/sup>' + area.value.substring(sel[1]); } } function addSubsc(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + '<sub>'+area.value.substring(sel[0],sel[1])+'<\/sub>' + area.value.substring(sel[1]); } } "));// Add list creation functions
temp.appendChild(document.createTextNode("function addOrdlist(area) { if ('selectionStart' in area) { if (area.selectionStart != area.selectionEnd) { area.value = area.value.substring(0,area.selectionStart) + '<ol><li>' + area.value.substring(area.selectionStart,area.selectionEnd).replace(/\\n/g,'<\/li>\\n<li>').replace(/\\n<li><\\/li>/g,'') + '<\/li><\/ol>' + area.value.substring(area.selectionEnd); } else { temp = '<ol>'; while(listitem = prompt('Enter a list item. Leave the box empty or press Cancel to complete the list:', '')) { temp += '<li>' + listitem + '<\/li>\\n'; } area.value = area.value.substring(0,area.selectionStart) + temp.substring(0,temp.length-1) + '<\/ol>' + area.value.substring(area.selectionStart); } } } function addUnordlist(area) { if ('selectionStart' in area) { if (area.selectionStart != area.selectionEnd) { area.value = area.value.substring(0,area.selectionStart) + '<ul><li>' + area.value.substring(area.selectionStart,area.selectionEnd).replace(/\\n/g,'<\/li>\\n<li>').replace(/\\n<li><\\/li>/g,'') + '<\/li><\/ul>' + area.value.substring(area.selectionEnd); } else { temp = '<ul>'; while(listitem = prompt('Enter a list item. Leave the box empty or press Cancel to complete the list:', '')) { temp += '<li>' + listitem + '<\/li>\\n'; } area.value = area.value.substring(0,area.selectionStart) + temp.substring(0,temp.length-1) + '<\/ul>' + area.value.substring(area.selectionStart); } } }"));// Add macro functions
temp.appendChild(document.createTextNode("function macroChoose(area,x) { if (JSON.parse(localStorage.getItem('soymacro'+x))[1]=='string') { macroString(area,x); } else { macroRegexp(area,x); } }"));
temp.appendChild(document.createTextNode("function macroString(area,x) { var sel = getSelection(area); if (sel && sel[0] != sel[1]) { area.value = area.value.substring(0,sel[0]) + JSON.parse(localStorage.getItem('soymacro'+x))[2] + area.value.substring(sel[1]); } else if ('selectionStart' in area) { var pos = area.selectionStart; area.value = area.value.substring(0,area.selectionStart) + JSON.parse(localStorage.getItem('soymacro'+x))[2] + area.value.substring(pos); area.focus(); area.setSelectionRange(pos+JSON.parse(localStorage.getItem('soymacro'+x))[2].length,pos+JSON.parse(localStorage.getItem('soymacro'+x))[2].length); } }"));
temp.appendChild(document.createTextNode("function macroRegexp(area,x) { var sel = getSelection(area); if (sel && sel[0] != sel[1]) { var reg = JSON.parse(localStorage.getItem('soymacro'+x))[2]; area.value = area.value.substring(0,sel[0]) + area.value.substring(sel[0],sel[1]).replace(new RegExp(reg.substring(reg.indexOf('/')+1,reg.lastIndexOf('/')), reg.substring(reg.lastIndexOf('/')+1)),JSON.parse(localStorage.getItem('soymacro'+x))[3]) + area.value.substring(sel[1]); } }"));
temp.appendChild(document.createTextNode("function macrobarInit(x) { for (var y=1; y<=7; y++) { document.getElementById('soymacros'+x+'name'+y).value = JSON.parse(localStorage.getItem('soymacro'+y))[0]; if (JSON.parse(localStorage.getItem('soymacro'+y))[1]=='string') { document.getElementById('soymacros'+x+'type'+y+'S').checked = true; } else { document.getElementById('soymacros'+x+'type'+y+'E').checked = true; } document.getElementById('soymacros'+x+'fieldA'+y).value = JSON.parse(localStorage.getItem('soymacro'+y))[2]; if (JSON.parse(localStorage.getItem('soymacro'+y))[1]!='string') { document.getElementById('soymacros'+x+'fieldB'+y).value = JSON.parse(localStorage.getItem('soymacro'+y))[3]; } else { document.getElementById('soymacros'+x+'fieldB'+y).value = ''; } } }"));
temp.appendChild(document.createTextNode("function macrobarSave(x) { for (var y=1; y<=7; y++) { if (document.getElementById('soymacros'+x+'type'+y+'S').checked == true) { localStorage.setItem('soymacro'+y,JSON.stringify([document.getElementById('soymacros'+x+'name'+y).value,'string',document.getElementById('soymacros'+x+'fieldA'+y).value])); } else { localStorage.setItem('soymacro'+y,JSON.stringify([document.getElementById('soymacros'+x+'name'+y).value,'regexp',document.getElementById('soymacros'+x+'fieldA'+y).value,document.getElementById('soymacros'+x+'fieldB'+y).value])); } } document.getElementById('macrobar'+x).style.display = 'none'; var boxes = document.getElementsByTagName('textarea'); for (var z=0; z<boxes.length; z++) { for (var y=1; y<=7; y++) { document.getElementById('soymacros'+z+'button'+y).value = JSON.parse(localStorage.getItem('soymacro'+y))[0]; if (JSON.parse(localStorage.getItem('soymacro'+y))[1]=='string') { if (JSON.parse(localStorage.getItem('soymacro'+y))[2].length < 40) { document.getElementById('soymacros'+z+'button'+y).title = 'Insert or replace selected text with: ' + JSON.parse(localStorage.getItem('soymacro'+y))[2]; } else { document.getElementById('soymacros'+z+'button'+y).title = 'Insert or replace selected text with: ' + JSON.parse(localStorage.getItem('soymacro'+y))[2].substring(0,40)+'...'; } } else { document.getElementById('soymacros'+z+'button'+y).title = 'Replace text matched by the regular expression: ' + JSON.parse(localStorage.getItem('soymacro'+y))[2] + ' with: ' + JSON.parse(localStorage.getItem('soymacro'+y))[3]; } } } }"));// Add despace function
temp.appendChild(document.createTextNode("function despace(area) { var sel = getSelection(area); if (!(sel[0] == 0 && sel[1] == 0)) { area.value = area.value.substring(0,sel[0]) + area.value.substring(sel[0],sel[1]).replace(/\\r/g,' ').replace(/\\n/g,' ').replace(/\\s\\s/g,' ').replace(/\\s\\s/g,' ').replace(/\\s\\s/g,' ').replace(/\\s\\s/g,' ').replace(/\\s\\s/g,' ') + area.value.substring(sel[1]); } }"));// Add unicode insertion function
temp.appendChild(document.createTextNode("function addSmile(area, smile) { if ('selectionStart' in area) { var pos = area.selectionStart; area.value = area.value.substring(0,pos) + smile + area.value.substring(pos); area.focus(); area.setSelectionRange(pos+smile.length,pos+smile.length) } }"));document.getElementsByTagName('head')[0].appendChild(temp); // Add script to page
Following the discussion in https://soylentnews.org/meta/article.pl?sid=16/02/16/1210215 I thought there should be a way even without code changes to have private messages. Well, actually it's easy. Not user-friendly, but not complicated either. So, here is a gpg public key in case you want to send a message for my eyes only. Import the key and post your message as a reply to this journal entry.
Warning: I tend to lose my gpg keys once in a while. If I do, I will update the one in this journal entry.
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFbENecBCADR4M3vJRAiH0tieDqiNlwRo93SAZm6bqKS9W2XCJfHo4jL+Qoi
r/vKhcoqcyUdravnuNwZeCa+YEm3rhp5OzTinUiQ0UjGsax4ju9yb8JvCLMN2f7D
DNv+2uG7QoE0A9yBZieSqz8ApGDQzQeMs/h56h2gCVpsnVP4GQkoYxIG73WpcmZE
2WVDKCIt3OOqbYss+/q0s3BLUN8Irv/0IaMMltsb3+b7n1ZHIm6DCmxPsJ6193Kb
vJfGonKN5KTCF2PWUDExM6zIAWYQIdAYtIktXZLQ6BtHPHOXVu0TK19MezBLeSQ3
/ePpGfP0xv9t7Uvu3VHYNpMbLs9+2LUqo/ylABEBAAG0KVEgS29udGludXVtIDxx
LmtvbnRpbnV1bUBzb3lsZW50bmV3cy5vcmc+iQE4BBMBAgAiBQJWxDXnAhsDBgsJ
CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDcwM82d2/d0rw2CADC+fM+IMML9M9g
3nM3DTYzFvm1LdaDLvQK3nWVJftlyy2pT3Y490oYeOEK0VtLFpRGL04ONqVVfW2U
eQz6ImdGQYNipZmE9HHLhti2vqLR1HnATlDFkkMWbDzSzTl0kKjljW/jaBAdK7h8
ZByWBVr9pOTka0r8E3Illr2YXjGl6ZTqbOkeCCj91QDJHJ9QSU20byJ8miw+r921
T20VtuZl5o8BEwVqWdiFcKmNo7kZjBR7Kj57phGlLh9A9jgrdhOlky+PBWh0OxgI
/Na66pnL5D0HEZ/+xU4q50wHHPN6ofGk16E//gcyEou+Li3rZE5wBIDOexUHJY0e
YElshp8YuQENBFbENecBCACopGX0nFArqjGT4lN2Ups0CzOVTE63G+gofDYcwIsa
JS/aFg4r2DZ5GLVDMmHhGh6df2U/ZnND1IMHrH1ww245VPablYVQvXAZ/qleHE8+
NOuhnKTb7YvIzx3amySMfQGxFpFaVJqx+Gfl0OkK3MV8/ltIV/bWH8U3AMrCkUpf
WoL+b32wUkuZyH9uC1fVxS35LQ5xeHBkfQUw+2aDd3CS6xkGL+kCt9oicKj3lppM
rCSuu0KWlDH74GlgCu+VCMCnmkqYQWtk9R/+R+PgoD8AGiFmjC+QsLPTmI4G1/2d
BJkP9r/nrYxxmhK3X+mlv7nf33P3HRlpHXydnnXTWIdLABEBAAGJAR8EGAECAAkF
AlbENecCGwwACgkQ3MDPNndv3dIDfAgAom610F+0/i9xZeEhRbc3Hl7QCW4xJIox
x71BPvYQpij+SIRNimz0Ewi88gB8uhutzWwk8JUYelrhfCLMeuYNj9VjDlziTA2E
lyAsPoJK9iCM0+kJ7z6OeRB/H3suKkfqYHmCZo0EWn7hJtycxS2Pthc/wm+wzcaZ
rgu+7uSiiFyqA+5Qmbz39a1WiUcmv/M+G3yki5FkZYqcXHAutK7YE3RfKkejuipB
iJMQFxKcnSX33Kp1fVOI2cyDK1XNy63JLOsGoSJUoqgJJ71CUQfo5eB+GHCexd9r
57kPAYOhau8QlrLfENtOBO+vYapXXwl7L5wlSMVACOP4ewagTWkwdA==
=u25j
-----END PGP PUBLIC KEY BLOCK-----
Kanye West wants $1 billion from Facebook’s Mark Zuckerberg
He’s “this generation’s Disney” and technology leaders like Mark Zuckerberg would be doing the world a favor by investing a cool $1 billion in his musical ambitions.
That was the gist of an early Monday tweetstorm by rapper Kanye West, hours after he raised questions about his personal finances with this tweet that hinted he has $53 million worth of debt:
I write this to you my brothers while still 53 million dollars in personal debt... Please pray we overcome... This is my true heart...
— KANYE WEST (@kanyewest) February 14, 2016In a fresh crop of posts, West made direct pleas to Zuckerberg, chief executive of Facebook Inc., and Larry Page, Alphabet Inc.’s CEO and the co-founder of Google, asking that they funnel some cash into his ideas:
Mark Zuckerberg invest 1 billion dollars into Kanye West ideas
— KANYE WEST (@kanyewest) February 14, 2016Mark Zuckerberg I know it’s your bday but can you please call me by 2mrw…
— KANYE WEST (@kanyewest) February 15, 2016World, please tweet, FaceTime, Facebook, instagram, whatever you gotta do to get Mark to support me…
— KANYE WEST (@kanyewest) February 15, 2016Mark, I am publicly asking you for help…
— KANYE WEST (@kanyewest) February 15, 2016hey Larry Page I’m down for your help too …
— KANYE WEST (@kanyewest) February 15, 2016West insinuated that Silicon Valley was full of hypocrites — executives who want to look cool listening to rap, yet never did anything to further growth in the music industry:
All you dudes in San Fran play rap music in your homes but never help the real artists…
— KANYE WEST (@kanyewest) February 15, 2016The rapper made a thinly veiled reference to Zuckerberg’s education philanthropy — he is part of an investment group that aims to bring cheap, private education to millions of children across Africa and Asia. Frankly, said West, the money could be better spent helping him with his creative efforts, as he claimed to be the “Jordan and Steph Curry of music, meaning I’m the best of 2 generations”
I've taken the liberty of setting up a folding@home team for Soylent News. In case you aren't familiar with folding@home, it's a distributed computing project that simulates protein folding in an attempt to better understand diseases such as Alzheimer’s and Huntington's.
There is more information on the project here, which explains it much better than I could.
Clients are available for Linux, OSX, and even Windows (if you swing that way), so come join our botnet!
That Other Site's team is ranked at 1817, so we've got some catching up to do.
On a personal note, my Dad carries the gene markers for Huntington's disease, and will eventually succumb to it. Research like this is very helpful for understanding, and hopefully developing treatments for it.
tl;dr Our Soylent News team ID is 230319
Wait, what?
Alex Jones: Banning order for fan who tweeted he loved presenter
A fan who bombarded the BBC's Alex Jones with tweets declaring he was in love with her has been banned from any contact with the Welsh TV presenter.
Shane Goldsmith sent the 38-year-old One Show star a string of messages for 17 months and waited outside the BBC's headquarters to tell her he loved her.
A judge imposed a restraining order which also bars him from the BBC's New Broadcasting House in central London.
Mr Goldsmith, 44, was formally cleared of a single charge of harassment.
'Armani Communist' divides China
When Liu Bo attended a regional communist party event as the official ambassador of local students it wasn't his youthful demeanour which made the biggest impression.
Nor was it the remarks which the 14-year-old made to the Shenzhen People's Political Consultative Conference, calling for the greater use of non-exam based assessments in the Chinese education system.
What made people stare, and what rapidly become a major topic of conversation as photos of Liu spread across Chinese social media this week, was what he was wearing.Around his neck was a red scarf of the type worn by Chairman Mao's Red Guards during the Cultural Revolution and now standard issue wear for the Communist Party Youth League. But Liu had paired that with what was taken to be an Armani suit, because of the lapel badge he was wearing with the distinctive logo of the Italian luxury brand.
In the eyes of many Chinese observers this was not so much a wardrobe malfunction as a clash of ideologies in a single outfit. Some on China's micro blogging platform Weibo dubbed Liu the "Armani Youngster" and attacked his choice of clothing.
PM left red nosed by censorship protest
When Malaysian police warned activist and graphic designer Fahmi Reza that his Twitter account was under surveillance after he posted an image of the prime minister, Najib Razak, as a clown, they probably hoped such behaviour would stop.
But then members of an art collective, Grupa posted even more clownish images of the premier to express their solidarity with him and to champion the ideal of free speech.
The pictures have spread across social media with the hashtag #KitaSemuaPenghasut which translates as "we are all seditious".
Fahmi's mockery of the prime minister was part of a wider reaction to news last week, when the country's attorney-general cleared Mr Najib of any corruption relating to a long-running financial scandal.