text:
import os
import re
import sys
import json
import uuid
import time, datetime
import ConfigParser
import oauth2 as oauth
import urllib2 as urllib
from time import sleep
from threading import Thread

# Tkinter
try:
    import Tkinter as tk     ## Python 2.x
except ImportError:
    import tkinter as tk     ## Python 3.x

import ttk
import tkMessageBox
from ttk import Frame, Style

# Tkintertable
from tkintertable.Tables import TableCanvas
from tkintertable.TableModels import TableModel

__author__ = "Jasdev Singh"
__copyright__ = "Copyright (C) 2014 Jasdev Singh"
__credits__ = ["Jasdev Singh"]
__license__ = "MIT"
__version__ = "1.0"
__maintainer__ = "Jasdev Singh"
__email__ = "jasdev@singh.am"
__status__ = "Production"

class TweetimentFrame(tk.Frame):
    """
        This is the base class for the program.
    """

    # window count
    count = 0

    # window status flags
    twitterAuthOpenedFlag = False
    tweetSentimentOpenedFlag = False
    termFrequenciesOpenedFlag = False
    happiestStateOpenedFlag = False

    # is authenticated flag
    twitterAuthCompletedFlag = False

    twitterStreamUpdatedFlag = False

    # file paths
    TwitterKeysFile = "Twitter_API_Keys"
    ConfigFile = "config.json"
    AFINNFile = "word_scores/AFINN-111.txt"
    TwitterStreamFile = "TwitterStream.txt"

    # dictionary for storing configuration data
    config = {}

    def __init__(self, parent):
        """
            Initialize the parent Frame
        """

        tk.Frame.__init__(self, parent)
        self.parent = parent
        self.initUI()

    def initUI(self):
        """
            Method for initializing the root window elements.

            All root level buttons and labels are initialized here.
        """

        self.parent.title("Tweetiment: Easy Twitter Sentiment Analysis")
        self.pack(fill=tk.BOTH, expand=1)

        # canvas for logo
        TweetimentCanvas = tk.Canvas(self.parent, height=130, width=600)
        TweetimentCanvas.create_text(300, 50, font=("Purisa", 40), text = "TWEETIMENT")
        TweetimentCanvas.create_text(300, 100, font=("Purisa", 20), text = "Twitter Sentiment Analysis")
        TweetimentCanvas.place(x = 100, y = 40, width = 600, height = 130)

        # button for twitter credentials window
        global TwitterAuthButton
        if not os.path.isfile(self.TwitterKeysFile):
            TwitterAuthButton = tk.Button(self.parent, text = "Set Twitter Credentials", command = self.setTwitterAuth, bg="blue", fg="white")
            TwitterAuthButton.place(x = 160, y = 220, width = 200, height = 30)
        else:
            TwitterAuthButton = tk.Button(self.parent, text = "Update Twitter Credentials", command = self.updateTwitterAuth, bg="gray", fg="white")
            TwitterAuthButton.place(x = 160, y = 220, width = 200, height = 30)

        self.var = tk.StringVar()

        # logic for downloading / updating twitter stream
        if os.path.isfile(self.ConfigFile):

            with open(self.ConfigFile, 'r') as f:
                cfg = json.load(f)
            try:
                updated = cfg['TwitterStreamLastUpdated']
            except:
                updated = None

            if updated:
                self.var.set("Stream last updated on: " + updated)

                TwitterStreamStatusLabel = tk.Label(self.parent, textvariable = self.var, justify = tk.LEFT, wraplength = 400)
                TwitterStreamStatusLabel.place(x = 180, y = 270, width = 400, height = 30)

                global UpdateTwitterStreamButton
                UpdateTwitterStreamButton = tk.Button(self.parent, text = "Update Twitter Stream", command = self.updateTwitterStream, bg="gray", fg="white")
                UpdateTwitterStreamButton.place(x = 420, y = 220, width = 200, height = 30)

        else:
            self.var.set("Download Required")

            TwitterStreamStatusLabel = tk.Label(self.parent, textvariable = self.var, justify = tk.LEFT, wraplength = 400)
            TwitterStreamStatusLabel.place(x = 180, y = 270, width = 400, height = 30)

            DownloadTwitterStreamButton = tk.Button(self.parent, text = "Download Twitter Stream", command = self.updateTwitterStream, bg="blue", fg="white")
            DownloadTwitterStreamButton.place(x = 420, y = 220, width = 200, height = 30)

##        global TweetSentimentTermEntry
##        TweetSentimentTermEntry = tk.Entry(self.parent, bd =5)
##        TweetSentimentTermEntry.place(x = 400, y = 150, width = 200, height = 30)
##        TweetSentimentTermEntry.focus()

        # button for running tweet sentiment
        RunTweetSentimentButton = tk.Button(self.parent, text = "Run Tweet Sentiment", command = self.findTweetSentiment, bg="blue", fg="white")
        RunTweetSentimentButton.place(x = 50, y = 320, width = 200, height = 30)

        # button for showing term frequencies
        TermFrequencyButton = tk.Button(self.parent, text = "Show Term Frequencies", command = self.findTermFrequencies, bg="blue", fg="white")
        TermFrequencyButton.place(x = 300, y = 320, width = 200, height = 30)

        # button for showing happiest state in the US
        HappiestStateButton = tk.Button(self.parent, text = "Show Happiest State", command = self.findHappiestState, bg="blue", fg="white")
        HappiestStateButton.place(x = 550, y = 320, width = 200, height = 30)

    def setTwitterAuth(self):
        """
            Method for initializing and displaying the Twitter credentials window.
        """

        self.count += 1

        if self.twitterAuthOpenedFlag == False:
            # set window opened
            self.twitterAuthOpenedFlag = True

            # initialize window
            global TwitterKeysWindow
            TwitterKeysWindow = tk.Toplevel(self)
            TwitterKeysWindow.minsize(600, 500)
            TwitterKeysWindow.geometry("600x500+100+100")
            TwitterKeysWindow.title("Twitter API Authentication Details")
            TwitterKeysWindow.config(bd=5)
            L0 = tk.Label(TwitterKeysWindow, justify = tk.LEFT, wraplength = 500, text="""Help:\n\n1. Create a twitter account if you do not already have one.\n2. Go to https://dev.twitter.com/apps and log in with your twitter credentials.\n3. Click "Create New App"\n4. Fill out the form and agree to the terms. Put in a dummy website if you don't have one you want to use.\n5. On the next page, click the "API Keys" tab along the top, then scroll all the way down until you see the section "Your Access Token". Click the button "Create My Access Token" \n6. Copy the four values into the provided space. These values are your "API Key", your "API secret", your "Access token" and your "Access token secret". """)

            # initialize labels
            L1 = tk.Label(TwitterKeysWindow, text="api_key")
            L2 = tk.Label(TwitterKeysWindow, text="api_secret")
            L3 = tk.Label(TwitterKeysWindow, text="access_token_key")
            L4 = tk.Label(TwitterKeysWindow, text="access_token_secret")
            L0.place(x=10, y=10, width=550, height=200)
            L1.place(x=50, y=250, width=150, height=30)
            L2.place(x=50, y=300, width=150, height=30)
            L3.place(x=50, y=350, width=150, height=30)
            L4.place(x=50, y=400, width=150, height=30)

            # initialize entry fields
            global E1, E2, E3, E4
            E1 = tk.Entry(TwitterKeysWindow, bd =5)
            E2 = tk.Entry(TwitterKeysWindow, bd =5)
            E3 = tk.Entry(TwitterKeysWindow, bd =5)
            E4 = tk.Entry(TwitterKeysWindow, bd =5)
            E1.place(x=250, y=250, width=300, height=30)
            E2.place(x=250, y=300, width=300, height=30)
            E3.place(x=250, y=350, width=300, height=30)
            E4.place(x=250, y=400, width=300, height=30)

            # focus on the first entry field
            E1.focus()

            TwitterKeysWindow.update()
            self.parent.update()
            self.parent.update_idletasks()

            # button for saving entered data and closing credentials window
            TwitterVerifyButton = tk.Button(TwitterKeysWindow, text ="Save and Close", command = self.validateTwitterAuth, bg="blue", fg="white")
            TwitterVerifyButton.place(x=250, y=450, width=200, height=30)

            # button for closing credentials window
            TwitterKeysCloseButton = tk.Button(TwitterKeysWindow, text ="Cancel", command = lambda: TwitterKeysWindow.withdraw(), bg="blue", fg="white")
            TwitterKeysCloseButton.place(x=480, y=450, width=70, height=30)

        else:
            # if window already opened then bring it to front
            TwitterKeysWindow.deiconify()

    def updateTwitterAuth(self):
        """
            Method for displaying the Twitter credentials window for the case when Twitter
            credentials have already been entered previously, and need to be updated now.
        """

        self.count += 1

        if self.twitterAuthOpenedFlag == False:
            # set window opened
            self.twitterAuthOpenedFlag = True

            # initialize window
            global TwitterKeysWindow
            TwitterKeysWindow = tk.Toplevel(self)
            TwitterKeysWindow.minsize(600, 500)
            #TwitterKeysWindow.overrideredirect(True)
            TwitterKeysWindow.geometry("600x500+100+100")
            TwitterKeysWindow.title("Twitter API Authentication Details")
            TwitterKeysWindow.config(bd=5)
            L0 = tk.Label(TwitterKeysWindow, justify = tk.LEFT, wraplength = 500, text="""Help:\n\n1. Create a twitter account if you do not already have one.\n2. Go to https://dev.twitter.com/apps and log in with your twitter credentials.\n3. Click "Create New App"\n4. Fill out the form and agree to the terms. Put in a dummy website if you don't have one you want to use.\n5. On the next page, click the "API Keys" tab along the top, then scroll all the way down until you see the section "Your Access Token". Click the button "Create My Access Token" \n6. Copy the four values into the provided space. These values are your "API Key", your "API secret", your "Access token" and your "Access token secret". """)

            # initialize labels
            L1 = tk.Label(TwitterKeysWindow, text="api_key")
            L2 = tk.Label(TwitterKeysWindow, text="api_secret")
            L3 = tk.Label(TwitterKeysWindow, text="access_token_key")
            L4 = tk.Label(TwitterKeysWindow, text="access_token_secret")
            L0.place(x=10, y=10, width=550, height=200)
            L1.place(x=50, y=250, width=150, height=30)
            L2.place(x=50, y=300, width=150, height=30)
            L3.place(x=50, y=350, width=150, height=30)
            L4.place(x=50, y=400, width=150, height=30)

            # initialize entry fields
            global E1, E2, E3, E4
            E1 = tk.Entry(TwitterKeysWindow, bd =5)
            E2 = tk.Entry(TwitterKeysWindow, bd =5)
            E3 = tk.Entry(TwitterKeysWindow, bd =5)
            E4 = tk.Entry(TwitterKeysWindow, bd =5)
            E1.place(x=250, y=250, width=300, height=30)
            E2.place(x=250, y=300, width=300, height=30)
            E3.place(x=250, y=350, width=300, height=30)
            E4.place(x=250, y=400, width=300, height=30)

            # pre-populate entry fields with stored Twitter credentials
            with open("Twitter_API_Keys", "r") as twitter_keys_file:
                twitter_keys = twitter_keys_file.read().split("|")
                print twitter_keys
                E1.insert(0, twitter_keys[0])
                E2.insert(0, twitter_keys[1])
                E3.insert(0, twitter_keys[2])
                E4.insert(0, twitter_keys[3])

            # focus on the first entry field
            E1.focus()

            TwitterKeysWindow.update()
            self.parent.update()
            self.parent.update_idletasks()

            # button for updating data
            TwitterVerifyButton = tk.Button(TwitterKeysWindow, text ="Update and Close", command = self.validateTwitterAuth, bg="blue", fg="white")
            TwitterVerifyButton.place(x=250, y=450, width=200, height=30)

            # button for closing window# if window already opened then bring it to front
            TwitterKeysCloseButton = tk.Button(TwitterKeysWindow, text ="Cancel", command = lambda: TwitterKeysWindow.withdraw(), bg="blue", fg="white")
            TwitterKeysCloseButton.place(x=480, y=450, width=70, height=30)

        else:
            # if window already opened then bring it to front
            TwitterKeysWindow.deiconify()

    def validateTwitterAuth(self):
        """
            Method for validating the entered Twitter credentials.
        """

        # get data from the entry fields
        E1_text = E1.get()
        E2_text = E2.get()
        E3_text = E3.get()
        E4_text = E4.get()

        # validate not null
        if (E1_text == "" or E2_text == "" or E3_text == "" or E4_text == ""):
            tkMessageBox.showerror("ERROR", "Please fill all the fields", parent = TwitterKeysWindow)

        else:
            E1_text = E1.get()
            E2_text = E2.get()
            E3_text = E3.get()
            E4_text = E4.get()
            # store credentials in local file
            with open( self.TwitterKeysFile, "w" ) as twitter_keys_file:
                twitter_keys_file.write(E1_text + "|" + E2_text + "|" + E3_text + "|" + E4_text)

            self.twitterAuthOpenedFlag = False
            self.twitterAuthCompletedFlag = True

            # write meta-data to config file
            if os.path.isfile(self.ConfigFile):
                cfg = {}
                with open('config.json', 'r') as f:
                    cfg = json.load(f)
                cfg['twitterAuthCompletedFlag'] = True
                st = datetime.datetime.fromtimestamp(time.time()).strftime('%d-%m-%Y %H:%M:%S')
                cfg['twitterAuthLastUpdated'] = st
                with open('config.json', 'w') as f:
                    json.dump(cfg, f)

            else:
                cfg = {}
                cfg['twitterAuthCompletedFlag'] = True
                st = datetime.datetime.fromtimestamp(time.time()).strftime('%d-%m-%Y %H:%M:%S')
                cfg['twitterAuthLastUpdated'] = st
                with open('config.json', 'w') as f:
                    json.dump(cfg, f)

            self.initUI()
            TwitterKeysWindow.destroy()

    def updateTwitterStream(self):
        """
            Method for updating / downloading the Twitter data stream.
        """
        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.", parent = self.parent)
            return

        with open('config.json', 'r') as f:
            cfg = json.load(f)

        # if authenticated
        if cfg['twitterAuthCompletedFlag'] == True:

            print "twitterAuthCompletedFlag = True"

            # initialize and start progress bar
            self.pb = ttk.Progressbar(self.parent, orient=tk.HORIZONTAL, mode='indeterminate', length = 200)
            self.pb.pack(side = tk.BOTTOM, fill = tk.BOTH)
            self.pb.start()

            self.var.set("Updating stream ... This operation takes 1-2 minutes to complete. Please wait ...")

            # start a new Thread to download Twitter stream in the background
            t= Thread(target=self.threadedTwitterRequest)
            t.start()

            # store update timestamp in config
            st = datetime.datetime.fromtimestamp(time.time()).strftime('%d-%m-%Y %H:%M:%S')
            if os.path.isfile(self.ConfigFile):
                cfg = {}
                with open('config.json', 'r') as f:
                    cfg = json.load(f)
                cfg['TwitterStreamLastUpdated'] = st
                with open('config.json', 'w') as f:
                    json.dump(cfg, f)
            else:
                cfg = {}
                cfg['TwitterStreamLastUpdated'] = st
                with open('config.json', 'w') as f:
                    json.dump(cfg, f)

            self.initUI()

        else:
            # else, show not authenticated error
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled.", parent = self.parent)

    def threadedTwitterRequest(self):
        """
            Method for downloading Twitter stream data in a new Thread.
        """
        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.", parent = self.parent)
            return

        # note starting time
        start_time = time.time()

        #search_term = TweetSentimentTermEntry.get()

        # read Twitter credentials
        with open("Twitter_API_Keys", "r") as twitter_keys_file:
            twitter_keys = twitter_keys_file.read().split("|")
            #print twitter_keys

        api_key = twitter_keys[0]
        api_secret = twitter_keys[1]
        access_token_key = twitter_keys[2]
        access_token_secret = twitter_keys[3]

        try:
            _debug = 0

            # oauth token objects
            oauth_token    = oauth.Token(key=access_token_key, secret=access_token_secret)
            oauth_consumer = oauth.Consumer(key=api_key, secret=api_secret)

            signature_method_hmac_sha1 = oauth.SignatureMethod_HMAC_SHA1()

            # method = GET
            http_method = "GET"

            # handlers for HTTP and HTTPS
            http_handler  = urllib.HTTPHandler(debuglevel=_debug)
            https_handler = urllib.HTTPSHandler(debuglevel=_debug)

##            if search_term == "":
##                url = "https://stream.twitter.com/1/statuses/sample.json"
##            else:
##                url = "https://api.twitter.com/1.1/search/tweets.json?q="
##                url += search_term.strip().split()[0]
##            print search_term

            # API URL
            url = "https://stream.twitter.com/1/statuses/sample.json"
            print url

            # optional parameters
            parameters = []

            # make the request object
            req = oauth.Request.from_consumer_and_token(oauth_consumer,
                                                         token=oauth_token,
                                                         http_method=http_method,
                                                         http_url=url,
                                                         parameters=parameters)

            # sign the request
            req.sign_request(signature_method_hmac_sha1, oauth_consumer, oauth_token)

            # get request headers
            headers = req.to_header()

            if http_method == "POST":
                encoded_post_data = req.to_postdata()
            else:
                encoded_post_data = None
                url = req.to_url()

            # initialize stream opener
            opener = urllib.OpenerDirector()
            opener.add_handler(http_handler)
            opener.add_handler(https_handler)

            # remove old cached Twitter stream
            if os.path.isfile(self.TwitterStreamFile):
                os.remove(self.TwitterStreamFile)

            # make the request
            response = opener.open(url, encoded_post_data)

            print "Updating Twitter Stream ..."

            # write response to cache file
            for line in response:
                self.var.set("Updating... This process takes 1-2 minutes to complete. Please wait ...")

                # update for some time
                if abs(time.time() - start_time) >= 60:
                    self.pb.pack_forget()
                    self.var.set("Update complete.")
                    return

                with open(self.TwitterStreamFile, "a") as twitter_stream_file:
                    twitter_stream_file.write(line.strip()  + os.linesep)
        except:
            print "EXCEPTION"

    def findTweetSentiment(self):
        """
            Method for calculating the sentiment of each tweet.
        """

        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.", parent = self.parent)
            return

        self.count += 1
        if self.tweetSentimentOpenedFlag == False:
            # set window opened
            self.tweetSentimentOpenedFlag = True

            # initialize window
            global TweetSentimentWindow
            def toggleFlag():
                self.tweetSentimentOpenedFlag = False
                TweetSentimentWindow.destroy()

            TweetSentimentWindow = tk.Toplevel(self)
            TweetSentimentWindow.minsize(600, 500)
            #TwitterKeysWindow.overrideredirect(True)
            TweetSentimentWindow.geometry("1000x500+100+100")
            TweetSentimentWindow.title("Tweet Sentiments (Zero values omitted)")
            TweetSentimentWindow.config(bd=5)
            TweetSentimentWindow.protocol("WM_DELETE_WINDOW", toggleFlag)

            # create a new TableModel for table data
            model = TableModel()

            # create a new TableCanvas for showing the table
            table = TableCanvas(TweetSentimentWindow, model=model,
                                 editable=False)
            table.createTableFrame()

            # dictionary for storing table data
            tableData = {}

            # calculate sentiments
            afinnfile = open(self.AFINNFile)
            scores = {}
            for line in afinnfile:
                    term, score  = line.split("\t")
                    scores[term] = int(score)

            #print scores.items()
            positive = 0.0
            negative = 0.0

            outfile = open(self.TwitterStreamFile)
            for line in outfile:
                    json_obj = json.loads(line)
                    sentiment = 0
                    try:
                        text = json_obj['text'].decode('utf-8')
                        # clean the text
                        text = ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)","",text).split())
                        text = re.sub(r'^https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)
                        text = re.sub(r'RT', '', text, flags=re.MULTILINE)
                        #print text
                        text_list = text.split(' ')
                        for char in text_list:
                            if char in scores:
                                    sentiment += scores[char]

                        if sentiment != 0:
                            # add items to table data dictionary
                            tableData[uuid.uuid4()] = {'Tweet': text, 'Score': str(sentiment)}
                            if sentiment > 0:
                                positive += 1
                            elif sentiment < 0:
                                negative += 1
                            #print text + "   " + str(sentiment) + "\n\n"

                    except:
                        #print "passed"
                        pass

            # calculate ratio
            if positive > 0 and negative > 0:
                ratio = round(float(positive) / float(negative), 2)

            # insert and sort data in the table
            model.importDict(tableData)
            table.resizeColumn(0, 850)
            table.resizeColumn(1, 50)
            table.sortTable(columnName='Score')
            table.redrawTable()

            if positive > negative:
                extra = "The overall sentiment is POSITIVE."
            else:
                extra = "The overall sentiment is NEGATIVE."

            # show info box about the overall result
            tkMessageBox.showinfo("Score Ratio", "The ratio of positive vs. negative tweets is " + str(ratio) + ". " + extra, parent = TweetSentimentWindow)

    def findTermFrequencies(self):
        """
            Method for calculating the frequencies of each term in the tweets.
        """

        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.", parent = self.parent)
            return

        self.count += 1
        if self.termFrequenciesOpenedFlag == False:
            # set window opened
            self.termFrequenciesOpenedFlag = True

            # initialize window
            global TermFrequenciesWindow
            def toggleFlag():
                self.termFrequenciesOpenedFlag = False
                TermFrequenciesWindow.destroy()

            TermFrequenciesWindow = tk.Toplevel(self)
            TermFrequenciesWindow.minsize(500, 500)
            #TwitterKeysWindow.overrideredirect(True)
            TermFrequenciesWindow.geometry("500x500+100+100")
            TermFrequenciesWindow.title("Term Frequencies (only > 0.5%)")
            TermFrequenciesWindow.config(bd=5)
            TermFrequenciesWindow.protocol("WM_DELETE_WINDOW", toggleFlag)

            # create a new TableModel for table data
            model = TableModel()

            # create a new TableCanvas for showing the table
            table = TableCanvas(TermFrequenciesWindow, model=model,
                                 editable=False)
            table.createTableFrame()

            # dictionary for storing table data
            tableData = {}

            # calculate frequencies
            freqs = {}
            total = 0
            outfile = open(self.TwitterStreamFile)
            for line in outfile:
                json_obj = json.loads(line)
                try:
                    text = json_obj['text'].decode('utf-8')
                    # clean the text
                    text = ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)","",text).split())
                    text = re.sub(r'^https?:\/\/.*[\r\n]*', '', text, flags=re.MULTILINE)
                    text = re.sub(r'RT', '', text, flags=re.MULTILINE)
                    #print text
                    text_list = text.split(' ')
                    for char in text_list:
                        if char.isalnum():
                            if char not in freqs:
                                freqs[char] = 1
                            else:
                                freqs[char] += 1
                            total += 1

                except:
                    #print "passed"
                    pass

            for key in freqs.keys():
                if freqs[key]/float(total) > 0.005:
                    # insert frequencies into the table dictionary
                    tableData[uuid.uuid4()] = {'Term': key, 'Frequency (%)': str(round((freqs[key]/float(total))*100, 2))}
                #print key + " " + str(freqs[key]/float(total))

            # insert and sort data in the table
            model.importDict(tableData)
            #sort in descending order
            model.setSortOrder(columnIndex = 1, reverse = 1)
            table.adjustColumnWidths()
            table.resizeColumn(0, 200)
            table.resizeColumn(1, 200)
            table.redrawTable()

    def findHappiestState(self):
        """
            Method for findint the happiest state in the US based on positive tweets per region.
        """

        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror("ERROR", "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.", parent = self.parent)
            return

        # dictionary of US states
        states = {
            'AK': 'Alaska',
            'AL': 'Alabama',
            'AR': 'Arkansas',
            'AS': 'American Samoa',
            'AZ': 'Arizona',
            'CA': 'California',
            'CO': 'Colorado',
            'CT': 'Connecticut',
            'DC': 'District of Columbia',
            'DE': 'Delaware',
            'FL': 'Florida',
            'GA': 'Georgia',
            'GU': 'Guam',
            'HI': 'Hawaii',
            'IA': 'Iowa',
            'ID': 'Idaho',
            'IL': 'Illinois',
            'IN': 'Indiana',
            'KS': 'Kansas',
            'KY': 'Kentucky',
            'LA': 'Louisiana',
            'MA': 'Massachusetts',
            'MD': 'Maryland',
            'ME': 'Maine',
            'MI': 'Michigan',
            'MN': 'Minnesota',
            'MO': 'Missouri',
            'MP': 'Northern Mariana Islands',
            'MS': 'Mississippi',
            'MT': 'Montana',
            'NA': 'National',
            'NC': 'North Carolina',
            'ND': 'North Dakota',
            'NE': 'Nebraska',
            'NH': 'New Hampshire',
            'NJ': 'New Jersey',
            'NM': 'New Mexico',
            'NV': 'Nevada',
            'NY': 'New York',
            'OH': 'Ohio',
            'OK': 'Oklahoma',
            'OR': 'Oregon',
            'PA': 'Pennsylvania',
            'PR': 'Puerto Rico',
            'RI': 'Rhode Island',
            'SC': 'South Carolina',
            'SD': 'South Dakota',
            'TN': 'Tennessee',
            'TX': 'Texas',
            'UT': 'Utah',
            'VA': 'Virginia',
            'VI': 'Virgin Islands',
            'VT': 'Vermont',
            'WA': 'Washington',
            'WI': 'Wisconsin',
            'WV': 'West Virginia',
            'WY': 'Wyoming'
        }

        # find the happiest state in the US
        happy_locations = {}
        full_states = states.values()

        afinnfile = open(self.AFINNFile)
        scores = {} # initialize an empty dictionary
        for line in afinnfile:
            term, score  = line.split("\t")
            scores[term] = int(score)  # Convert the score to an integer.

        outfile = open(self.TwitterStreamFile)
        for line in outfile:
            json_obj = json.loads(line)
            try:
                user = json_obj['user'] # extract user
                location = user['location'].decode('utf-8') # extract user's location
                if location != "":
                    if location in states.values():
                        #print location
                        sentiment = 0
                        text = json_obj['text'].decode('utf-8')
                        text_list = text.split(' ')
                        for char in text_list:
                            if char in scores:
                                sentiment += scores[char]

                        if location not in happy_locations:
                            happy_locations[location] = sentiment
                        else:
                            happy_locations[location] += sentiment
            except:
                pass

        # sort the sentiment values in decreasing order, and pick the first one
        slist = [(k, happy_locations[k]) for k in sorted(happy_locations, key=happy_locations.get, reverse=True)]
        happiest_state = ""
        for k, v in states.iteritems():
            if v == slist[0][0]:
                happiest_state = v

        # show info box with the name of the happiest state in the US
        tkMessageBox.showinfo("Happiest State", "The happiest state in the US is " + str(happiest_state) + ".\n\n(Based on positive sentiments per state)", parent = self.parent)

def main():
    """
        The main function.
        This function sets up the root Tkinter window.
    """

    # initialize root frame and run the app
    global root
    root = tk.Tk()
    root.geometry("800x400+100+100")
    app = TweetimentFrame(root)
    root.mainloop()

if __name__ == '__main__':
    main()


text:
Washington: School of 80,000 Cancels Classes Over "Hate Speech" on Yik Yak
Andrew Anglin November 28, 2015
Blacks are feeling a feeling. Shut the whole place down, now.
Black campus madness continues.
Washington Western University, a school with 80,000 students, canceled classes due to "hate speech" on the semi-anonymous chat app Yik Yak.
The Seattle Times:
Western Washington University's (WWU) president sent a 2,685-word email to the school community Friday night explaining why he canceled classes this week following racist threats posted on social media.
In the email, also posted on the university's site, President Bruce Shepard offered a timeline for how he dealt with the hate speech posted on the anonymous social-media phone application Yik Yak
The letter comes two days after a packed news conference in Bellingham, where student and community activists expressed disappointment in the president's actions after the threats surfaced. Among other things, they say he should have sent out a campuswide alert.
The crude comments and racially-charged threats reportedly were to all students of color, though many messages threatened specific students. According to Shepard's email, the students included WWU student government President Belina Seare and student Vice President for Diversity Abby Ramos.
"Holding aside those for whom a specific threat had been made, the general campus was safe from a law enforcement perspective," he wrote. "However, with talk of lynching, nooses and such, there were absolutely concrete reasons for many of our students to fear coming on our campus."
He says Ramos and Seare worked with school officials after the posts came to light to discuss safety. School officials called Seare Tuesday to offer to relocate her and provide round-the-clock police protection, if necessary. She did not return officials' calls, according to the email. Attempts by The Seattle Times to reach her for comment Friday night were unsuccessful.
The source of the threats on Yik Yak remain anonymous. Investigators are waiting to get more information from the site to determine the poster's identity, according to the email.
Probably, they remained anonymous because there was no actual "threat," it was merely people complaining and/or joking about the Blacks, and so the police have refused to investigate it.
Saying mean things or joking on the internet is not yet a crime in America.
This is Exploitable
If I was a Nazi Troll, I would be all up on this.
If they are shutting down schools over statements on Yik Yak, I would totally start making statements on Yik Yak. No threats, of course. They can presumably trace you relatively easily (which is why I am suspicious of the above claim that they are still looking for the people who made the posts).
The app is good for within five miles of the location you are at. So, if you are within five miles of a university, it might be jolly good fun to alert Yik Yak of the presence of Grand Wizard Sam Hyde on campus.
The news is reporting that KKK leader Sam Hyde is staging a demonstration on campus. Why won't the administrators stop it?
The KKK is back on campus for the second time this month, and the President has said they have "free speech," smdh
The KKK is out front of the student union and just put up a banner reading "Black lives don't matter" smdh
smdh I can't believe the KKK is burning crosses on campus in 2015
White supremacists are driving around campus in blue pick-up trucks, yelling th n-word at Black students
I'm at Black student, and the KKK just drove by in a blue pick-up truck and spit on me
The White Student Union just invited Sam Hyde, the leader of the KKK, to give a speech on campus, the President says it's free speech smdh
Sam Hyde is marching through campus with hundreds of White supremacists chanting "Heil Hitler" and "Black lives don't matter" smdh
And so on. You won't get tracked for anything along those lines. It will cause teh lulz.
Also, if anyone with tech knowledge can figure out a way to mass spam these university Yik Yaks remotely, please do that. The same messages could be carried across dozens of universities at the same time.
If they shut down one university because someone said something mean on Yik Yak, they will shut down more.
Black Lives Matter Black People Campus Trolling Trolls University Washington Washington Western University Yik Yak	2015-11-28
For Those About to Heal: We Salute You!
Washington's 2021 Lockdown is a Lot More Extreme Than Beijing's 1989 Lockdown

redpajama_set_name: RedPajamaCommonCrawl


I called back number (08) 8254 6266 spoke to a guy who said company name is Auto Masters.
Do you have a comment about Smithfield Plains Primary or (08) 8254 6266?
74.1% of persons usually resident in SMITHFIELD PLAINS stated they were born in Australia. Other common responses within SMITHFIELD PLAINS were: England 12.3%, Scotland 1.8%, New Zealand 0.5%, Netherlands 0.5% and Germany 0.5%.
50.3% of persons aged 15 years and over usually resident in SMITHFIELD PLAINS were married, 34.0% never married, 12.0% separated or divorced and 3.7% widowed.
The most common responses for religious affiliation for persons usually resident in SMITHFIELD PLAINS were No Religion 32.2%, Anglican 17.0%, Catholic 15.8%, Uniting Church 6.5% and Lutheran 2.9%.


text:
A student-run publication of German news and culture
Books, TV and Film
Germany in the UK
Science, Tech & Environment
Germany and Brexit: October 2019
By Tom Carson
After the government's programming motion was rejected by the House of Commons, the UK government awaits the EU's decision over the possible Brexit extension on Monday. It is expected that the EU will grant the UK a 3-month extension, to 31st January 2020, providing time either for a General Election or a 2nd Referendum. However, Johnson's announcement that he intends to hold a General Election on the 12thDecember may influence the EU's decision. If Johnson is able to MPs to vote for an election, the EU may grant a three extension; if an election is not approved by the house, the EU may reconsider and offer a shorter extension in the hope that Johnson's WAB passes. It is understood that Macron prefers a shorter extension. Germany's preference, the three-month extension, is more likely to transpire. Read more on the French-German power struggle here, as Macron seeks to seize the political initiative in Europe away from Merkel.
Germany extends national lockdown as it struggles to contain COVID-19
Germany reacts to UK-EU Brexit deal
Germany's daily coronavirus death toll hits new record as lockdown restrictions tighten
Subscribe to our weekly news bulletin
© 2020 by Moment.de


text:
Back to N1
Parents of murdered children demand construction of memorial
NEWS Author:N1 Sarajevo31.05.2018 15:14
Source: Fena
More than 500 parents of murdered children from Prijedor and activists from the non-governmental organisation "Jer me se tice" (Because it concerns me) marked the White Ribbon Day at the main square in Prijedor marking the expulsion and murder of 3,176 Prijedor residents, among whom were 102 children.
One of the organizers of this year's marking was Nikola Kuridza who said the gathered residents are demanding the Prijedor authorities build a memorial to the Prijedor children murdered in 1992.
"We suggested three locations to the city authorities, but they told us they can't change the regulatory plan because of this," Kuridza said. He added they even have an alternative. They suggested the bridge between the old town and the city centre be reconstructed into a memorial bridge for the murdered children.
'White ribbon day' to commemorate the 3,176 Prijedor victims
The parents of the murdered children have been demanding that the city authorities build a memorial site for all the murdered children, but the authorities have never agreed to their proposals.
One other member of this NGO Goran Zoric told N1 that the city authorities are doing everything in their power to avoid the construction of the memorial. He said that a false information has been repeatedly told to the public and the media that parents want to build the memorial in the centre of Prijedor.
"None of the City officials with a Serb last name ever came to this marking. On the other hand, Bosniak representatives who are not originally from Prijedor regularly come to mark this day. During the years we realized that politicians are our political enemies and we must make them do their job and act according to the basic democratic principles and in accordance with the principles of law and justice," Zoric.said.
Zoric also confirmed the numerous attempts at discrediting their NGO and their cause. The city authorities, he said, learned not to be as explicit in their intentions.
Survivors of the wartime killing of non-Serbs in the northwestern town of Prijedor are commemorating May 31, 1992, the day when they were ordered to put white ribbons on their arms to mark themselves as non-Serbs.
The wartime campaign to eliminate all non-Serbs from the Prijedor area took 3,176 lives, mainly at the start of the 1992-1995 war. The victims include 102 children, and this years' commemoration was focused on them. When Bosnian Serb forces took exclusive control of Prijedor in 1992, they ordered the non-Serb population to wear white ribbons around their arms and put white sheets in their windows.
The portions militarily controlled by the Serb forced remained part of Bosnia but were turned into a semi-autonomous entity called Republika Srpska.
Prijedor is now in the Republika Srpska and non-Serbs who survived and returned to Prijedor are focusing this year's commemoration on their attempts to build a monument to the children killed in this town, an idea the Serb city authorities reject.
prijedor ENG
Serbian PM accuses N1 of undermining vaccination efforts
16. 02. 2021 0
EU military operation: France to conduct fast-jet training flight over Bosnia
Russian missile-system equipment arrives in Turkey
Head of Serbian gas industry group warns of imminent price hikes for Russian gas
BiH Presidency Chair sends telegram of condolence after attack in Jerusalem
Bosnian taking his pilgrimage to Mecca on foot from Austria is now in Serbia
Antifascists mark 81st anniversary WWII Igman March (PHOTO)
BiH Council of Ministers Chair sends telegram of condolence to Israeli PM


text:
\section{The first radio-jet X-ray binary}

A very unusual star received great attention at the end of 1970s which showed peculiar
H$\alpha$ emission lines: SS433, an eclipsing binary system that had counterparts
in the X-ray and radio domain as well. The spectral lines showed high and variable
Doppler-shifts between -30000 and 50000 km/s, and these were soon interpreted as
signatures of jets precessing with a period of about 164 days [for an early review,
see \pos{1}]. High resolution radio observation in 1979 with MERLIN indeed showed an
elongated structure on arcsecond scale [\pos{2}], and the same year, compact structure
on milliarcsecond scales was reported following the first VLBI detection with a 3-station
array of Effelsberg, Onsala, and the Westerbork Synthesis Radio Telescope [\pos{3}].
Just in 1979, a dozen of Nature papers were published on the source, and the excitement
about this fascinating object certainly played a great role in the forming of the
European VLBI Network (EVN) in 1980.

And there was a lot to discover. The highest angular resolution images of the precessing
radio beams allowed an accurate measurement of the source distance to 5$\pm$0.3~kpc
[e.g. \pos{4}]\footnote{Note that measuring the distances of transient Galactic radio sources
remains a big challenge to date; the uncertain distances and jet viewing angles still limit
our ability to determine the jet Lorentz-factors accurately in black hole XRB.}
Due to the variable jet viewing angle and mildly relativistic speeds of 0.26c, it became
possible to test the Doppler-beaming paradigm for relativistic jets as well [\pos{5}].
The source showed flaring episodes every $\sim$400~days. There were two types of flares
identified, one showing a delay with observing frequency, typical of synchrotron self-absorbed
ejecta, the other peaked simultaneously at all frequencies --the origin of the flares
were not known [\pos{6}]. Besides, there was a drop in flux density observed before the flares.
There were two VLBI monitoring campaigns organized in 1985 and
1987, both lasting 6 days, with 2 day separation in between the observations. These were
really monster VLBI campaigns at the time, using practically the whole supplies of
EVN recording tapes, weighing over a tonne. But the results were spectacular. There were
a series of moving ejecta detected that originated in an elongated core, and later
brightened up at an angular distance of 40--60 mas (a brightening zone) -- these two regions
were responsible for the two different types of flares. The 1987 campaign coincided with
a major flare by chance, and a series of spectacular images were produced. The Doppler-beaming
effect was confirmed both in the permanent core, as well as the in the moving ejecta, in
agreement with the measured proper motion of 0.26c [\pos{7}].

   \begin{figure*}
   \centering
   \vspace{20pt}
   \includegraphics[bb=33 295 582 550,clip,angle=0,width=13cm]{innerjet_18cm.ps}
   \includegraphics[bb=33 295 582 550,clip,angle=0,width=13cm]{innerjet_6cm.ps}
   \includegraphics[bb=33 260 582 550,clip,angle=0,width=13cm]{innerjet_2cm.ps}

   \caption{\label{compactjet} VLBA 1.6~GHz (top), 5~GHz (bottom) and 15~GHz (bottom) maps of
   of SS433 on the same scale, demonstrating the multifrequency properties of the self-absorbed
   compact jets.
   The compact object is
   located near the centre of these maps (found by fitting the kinematic model to the ejecta).
   The gap between the observed "radio cores" closes at higher frequencies, this effect is
   known in AGN as frequency dependent core-shift. The brightness assymetry at 1.6~GHz is
   consistent with Doppler-beaming; the increasing assymetry at higher frequencies is likely
   due to additional free-free absorption close to the central engine.
   }
    \end{figure*}

\section{The compact jets}

Multifrequency imaging with the VLBA provided new insights to the nature of the
core region [\pos{8}]. The brightest peaks in the approaching and receding jets
have increasingly larger separation at lower frequencies. This is due to a change
in synchrotron opacity: the distance of the $\tau\sim1$ optical depth surface to
the central engine is inversely proportional to the observing frequency in a
self-absorbed compact jet. In active galactic nuclei (AGN) this is known as
frequency dependent core-shift [\pos{9}]. Indeed, the compact object in SS433 lies
about midway between the eastern and western peaks of emission at 1.6~GHz (in the
centre of images in Fig.\ref{compactjet}), not in the brightest "radio core" component.
This was established by fitting the kinematic model to the moving ejecta in the system.
While this core-jet region has been observed most of the time in the system, there is
evidence for supression of the inner jet during (at least in some of the) flares [\pos{10}];
the temporal disappearance of the continuous jets before the flaring episode starts
can be therefore the cause of the flux density dips mentioned above (see Fig.\ref{nocore}).

Compact jets are now frequently observed in microquasars in the low-hard X-ray state,
although resolved VLBI images are only available for a few of these. The activity cycle
of black hole XRB is understood as follows [\pos{11}]. The X-rays originate in a
comptonized corona at the jet base in the hard state. The accretion rate is a few percent
Eddington, the jet Lorentz-factor is small ($<2$). As the accretion rate increases we
see an increasing level of hard X-rays and increasing radio emission. The X-rays later
get gradually softer and the jet is suppressed (radio quenching). As the system enters
to the soft state (at which point most of the X-ray emission is thermal and dominated
by the accretion disc), discrete radio ejecta form that are likely to be caused by shocks as
either the jet Lorentz factor or the mass flow rate increases. All of this had been
observed in SS433 in the radio
before this unified picture for black hole XRB was established: the steady compact jets,
radio quenching, and the formation of discrete ejecta. However, in case of SS433 the
X-ray emission from the accretion is not seen because it is almost completely hidden from
us due to absorption and scattering by a dense circumstellar envelope.
Another difference is that in SS433 the accretion rate is highly super-Eddington all
of the time; still the similarities in the radio behaviour are remarkable. We have to
note that the assumption of increasing Lorentz-factor during outbursts is certainly
not seen in SS433: the discrete, bright ejecta follow the usual kinematic model
with 0.26c.

   \begin{figure*}
   \centering
   \vspace{20pt}
   \includegraphics[bb=55 28 468 767,clip,angle=-90,width=15cm]{nocore.ps}

   \caption{\label{nocore} 5~GHz VLBA map of SS433 during a strong flare on 18 April 1998.
   The core-region faded below detection, indicating that the continuous inner jets were
   suppressed at the beginning of the flaring event. Quenching of radio emission from
   the jets is now frequenctly observed in microquasars during accretion state transitions,
   when they enter into a soft-state, where the emission is dominated by the accretion disc.
   In SS433 there are no such accretion state changes observed, simply because the accretion
   disc emission is hidden from us in the X-rays.
   }
    \end{figure*}

\section{The equatorial outflow in SS433 and other black holes: driven by an accretion disk wind?}

Besides the steady inner jets and moving ejecta, there was another type of emission
seen in deep radio images, mainly at 1.6~GHz. This emitting region surrounds the
central source within $\sim$100 mas: some parts are occasionally detected as distinct
features in VLBI images [\pos{8}], while adding shorter spacings reveals its more
diffuse nature [\pos{12}]. Comparing multi-epoch detections there is evidence for
proper motion in this region outwards from the centre, indicating an equatorial
outflow [\pos{13}]. Similar outflows in microquasars and AGN were not known at the
time. However, there is now evidence in the X-ray observations for accretion disc driven ultra-fast
outflows in both radio-loud [\pos{14}] and radio-quiet [\pos{15}] AGN. These may have
significant contribution to the AGN feedback. In stellar-mass black holes similar
outflows were found in the soft states [\pos{16}]; these winds may carry sufficient
mass and energy to quench the jet radio emission as observed during state transitions.
The massive equatorial outflow in SS433 may help us to understand another phenomenon
as well. In 2001 it was proposed that X-ray emission in the supercritical accretion
disc is channeled towards to the polar regions. When looked at face-on, SS433-like systems
may appear as ultra-luminous X-ray sources (ULX) in nearby galaxies [\pos{17}]. Recently,
new evidence was found for highly scattered supercritical disc funnel radiation [\pos{18}].

\section{Transients and the e-EVN}

During the last 8 years, the real-time e-VLBI developments made the EVN more capable of
observing transient radio sources. This is because observations are no longer limited by
recording media, the performance of the telescopes can be checked immediately in ad-hoc
observations, and the scheduling has become more flexible as well. Responses to flaring
activity is now possible in dedicated target of opportunity observations. For example,
e-EVN ToO observations of SS433 [\pos{19}] further confirm that discrete ejecta during
flares travel with the same speed as measured in the regular jet, therefore there is
no sign of an increasing Lorentz-factor in the jet during accretion disc state transitions.
The e-EVN has provided rapid imaging results on several well-known microquasars and
other variable or transient sources in recent years. It has proven to be especially
useful to combine the e-EVN and VLBA for denser monitoring observations, in which the
former can provide initial detections, improved coordinates for new transients, and
pre-select nearby secondary calibrator sources for more reliable imaging [e.g. \pos{20}].
Most recent results include the identification of a new gamma-ray binary stellar system
[\pos{21}], and the possible localization of the origin of gamma-ray flaring activity
in the Crab Nebula [\pos{22}].

The EVN and MERLIN played an important role in the very beginning of black hole XRB and
transient research with the observations of SS433 at the end of 1970s and in the 1980s,
and this is the case still today. With the electronic upgrades to e-EVN and e-MERLIN,
new opportunities arise: a combination of these two networks will provide a unique range
of uv-spacings to image transient sources from mas to arcsecond scales as they expand.
In the next few years a great number of new transients will likely be detected by SKA
pathfinder instruments and precursors like LOFAR or WSRT APERTIF. The great sensitivity
and high resolving power provided by the EVN will be essential to localize and image
these at milliarcsecond resolution.

redpajama_set_name: RedPajamaArXiv


text:
Amsterdam to Buy Young Adults' Debts to Gain Higher Education and Jobs
A program is expected to start in February in Amsterdam which will purchase the debts of young people and help them obtain higher education and employment.
Fake Credentials Lead to 6-Year Job for Fake Engineer, But He's Not Alone
Faking credentials and experience can only take you so far but these people tried, with some initial success, but paid a steep price.
House Dems Pass Bill to Restore Employee Rights Gutted by Supreme Court
More than half of private-sector workers who don't belong to a union are subject to some sort of mandatory arbitration provision, according to the Economic Policy Institute.
Trump Trade War Escalation Could Cost 800,000 Jobs, Trigger Deep Recession
There is a 35 percent chance that President Donald Trump escalates his trade war with China and others, Moody's Analytics says.
Convenience Store Worker Reportedly Kept Robbing Stores on First Day on Job
The suspect is accused of hitting at least 30 different marts and pilfering as much as $12,000 during his one and only shift.
Employment for Disabled Workers at Near Historic High, But For How Long?
The unemployment rate for disabled workers (currently at 8 percent) is still higher than unemployment for non-disabled workers (3.7 percent), but employment of disabled workers has seen steady growth.
Elementary School Principal Says She's Being Fired Because She's White
An elementary school principal in Ann Arbor, Michigan is suing her district to get reinstated in the school she argues she was forced out of because she's white.
Catholic School Fires Gay Teacher to Avoid Being Removed from Archdiocese
Days after Indianapolis's Brebeuf Jesuit Preparatory School refused to axe a gay teacher, Cathedral High School fired an LGBT instructor rather than lose its status as a Catholic institution.
Wanted: Cautious Grads Seeking Adventure
Gen Zs look for meaning
Where Do Gen Z Employees Want to Work?
Gen Z marks the newest wave of employees entering the workforce, kick-starting their careers in 2019.
The Private Sector Should be Enlisted to Help Students
Our educational system is not set up to provide students with enough opportunities to learn the skills a 21st-century economy demands.
10 Ways to Crush Your First Conference
Essential conference tips from how to dress and whether to party to how to maximize networking and Q&A best practices.
Proposed Trump Rule Could Cost Americans $1.3 billion
The rule change would make it nearly impossible for those employees to engage in collective bargaining, and could cost them up to $1.3 billion each year, an Economic Policy Institute study found.
Chick-fil-A Customers Love More than the Waffle Fries
"Hey, you left your money here." Whole corners of the Internet are devoted to stories about Chick-fil-A's feats of service.
You Will Be Replaced. Here's How
Economists were skeptical that robots could permanently displace humans on a large scale. But look at what's happening to retail jobs: The economists were wrong.
Trump Jokes About Women's Unemployment Rate
President Donald Trump jokingly apologized for having let women "down again" as he boasted that the women's unemployment rate "recently reached only the lowest rate in 65 years."
Michigan to Cut Food Aid for Unemployed Adults
The policy change will affect 67,000 people.
CEO Pay Soars Under Trump: New Analysis
Chief executives earned 312 times more than the average employee during Trump's first year in office.
White House Sorry for False Comment on Black Employment
The White House press secretary was attempting to pull attention away from claims by Omarosa Manigault Newman that Trump had used the n-word.
Tattoos No Longer Impede Getting A Job, Study Finds
In fact, they could even help someone get hired.
Artificial Intelligence Will Be a Human Jobs Creator
The fear that robots will put millions out of work has it all wrong. Data is the new oil, fueling a boom that is churning up new investors, new industries and thousands of new jobs.
Trump Thinks He Has Helped Black Americans
President Trump thinks he's responsible for the low unemployment rate among black and Hispanic people in the U.S.
Here's How to Be Happy: Shorten Your Work Commute
People who use public transportation to get to and from work tend to feel the least fulfilled in life.
Old People Dying Will Make U.S. Employment Soar
Overall employment is projected to increase by 11.5 million over the 2016-26 decade, an increase from 156.1 million to 167.6 million, the U.S. Bureau of Labor Statistics reported today.
Being Beautiful Can Hurt Your Chances of Employment
A new study suggests unattractive people are at an advantage when it comes to menial or boring work.
The Future of Employment is Freelancing
A recent study shows that the majority of freelancers are "slashers", meaning that their contract work supplements another part-time or full-time position.
Why Are Google Engineers Mostly White and Asian Men?
A wealth of evidence suggests that biological differences could account for differences in employment patterns.
Why Labor Unions Were Given a Bloody Nose in Canton, MS
Nissan workers earn $25 per hour, thanks to productivity gains, not monopoly power.
Melbourne Café Charges Men a 'Gender Pay Gap' Tax
The money raised via the surcharge is donated to a charity.
Most Smokers Feel Discriminated Against
A recent poll found that 56 percent of adult smokers in the U.S. feel discriminated against in public life or employment.


text:
Pachrophylla margaretae är en fjärilsart som beskrevs av Sperry 1954. Pachrophylla margaretae ingår i släktet Pachrophylla och familjen mätare. Inga underarter finns listade i Catalogue of Life.

Källor

Mätare
margaretae

redpajama_set_name: RedPajamaWikipedia


When will UNIQUE LA Vintage Vibes held?
Sunday April 15th, From 10AM to 3PM.
Vendor move-out begins at 3PM and ends at 4PM. All vendor's must be completely vacated from by 4:00 PM.
Where is Unique LA Mini Market held?
The total is 75 PER VENDOR.
Please mail your check! Payable to UNIQUE INC.
The amount includes a space with an 8 foot white umbrella, or a 10X10 space inside. You can set up your space however you'd like under the umbrella. Please bring whatever can fit to help you sell and be UNIQUE, such as a table, chairs, racks, signage etc. Be sure to be courteous and kind to your neighbors as you will only get the space under the 8ft wide umbrella or inside.
No electricity will be provided.
Yes! You must hold your own insurance and auto-liability.
Do my products have to made in the U.S.A?
No. Our goal is to support American owned, small businesses and designers (which sometimes means some of their products are made elsewhere). The goal of Unique Markets is to showcase goods that are designed, made and sold by the owners themselves. We pride ourselves on getting the community to discover and interact with amazing entrepreneurs.
No, there can only be one vendor per space.
To ensure the vendors are diverse, match the aesthetic of the show, and meet shoppers' expectations, UNIQUE LA is juried. We look for small businesses that are modern and have products that we think our customers would purchase. We also choose businesses that are ready and are at scale to be able to sell at a market our size. Rest assured that we review and consider every single application, and the corresponding website and product images. Your website, social media channels, submitted photos and application are the only things we have to determine whether or not you are accepted.
There will be no cancellations.
Do I need any permits to participate, what taxes do I collect?
No, sellers do not need any temporary permits to participate in Los Angeles, unless you are a food vendor (selling either hot food or packaged food). If you are a food vendor, you will need to obtain a temporary event health permit (which will cost you $71-160) which we will help secure if you are accepted.
Do I have to live in LA to participate?
No, our goal is to get people to buy and support independent design and small business owners, 85% of the vendors reside in California, but we accept people from all over the country and Canada, and love sharing great talent from all around! Remember you must be available all Saturdays of the month!


text:
Siemens commissions state-of-the-art baggage handling system at Guangzhou International Airport
Tray technology and high-performance software for system control
Peak throughput of almost 15,500 pieces of luggage per hour
Suspended early-bag store for substantial space savings
A new baggage handling system from Siemens Postal, Parcel & Airport Logistics (SPPAL) was commissioned right on schedule for the grand opening of Terminal 2 at Guangzhou International Airport in China. It is the first system in China to perform its most important sorting function exclusively with tray technology. To save valuable airport floorspace, Siemens installed for the first time a fully suspended early bag store (EBS) at Guangzhou which, offering storage space for 4,000 bags, is also the largest EBS anywhere in China. Designed for a peak throughput of almost 15,500 pieces of baggage per hour, the Siemens system will contribute decisively to the envisaged expansion of the airport's capacity and to further enhancing passenger convenience. Guangzhou International Airport handled almost 66 million air travelers in 2017, making it one of the world's 20 largest airports.
"With our expert local team and great support from the customer, we managed to implement the baggage handling system in Guangzhou in less than two years – that's a record time," said Michael Reichle, CEO of Siemens Postal, Parcel & Airport Logistics.
Siemens deployed the latest VarioTray generation to transport and sort the baggage. The intelligent construction of the solution ensures energy efficiency which is exemplary in the whole airport industry. The conveyor belts run over rollers to prevent dynamic friction between the belts and conveyors, and the considerably reduced weight of the new trays helps to lower energy costs even further. Siemens uses high-performance software applications to facilitate intelligent process control throughout the entire system.
The heart of the system is a tray-based early bag store offering capacity for 4,000 pieces of baggage in two high-bay warehouses. The Lift & Run system is considerably more flexible and efficient than comparable systems because lifts perform the vertical movements while shuttles perform the horizontal movements. These movements take place simultaneously yet independently of one another. Though the EBS weighs tons, Siemens suspended both of these huge high-bay stores from the ceiling to save substantial volumes of floorspace. Other parts of the baggage handling system are arranged underneath the suspended construction. Long-running tests were first conducted to verify the load-bearing capacity and safety of this technical innovation. The EBS system can be expanded by adding two additional high-bay warehouses to bring the total number of storage spaces up to 6,000.
Siemens implemented state-of-the-art solutions in passenger service areas as well. In the departure hall over 340 modern check-in desks equipped with automated baggage scanners await air travelers. These include 52 self-check-in stations where passengers can also drop off their baggage, making check-in quick and easy and eliminating long waiting times. And in the arrival area there are 21 ergonomically designed baggage carousels to service passengers.
Siemens has already carried out a number of major airport projects in China. Among the most recent successes are the baggage handling system in Terminal 3 of Beijing International Airport, and projects at Wuhan Tianhe and Xi'an Xianyang international airports. Siemens is currently modernizing and expanding the baggage handling system at Shanghai Hongqiao Airport.
Download press release PDF | 13.4 KiB


text:
Why India's better placed to do a huge vaccine roll-out than most other countries, according to Dr Giridhar R Babu
Sandip speaks with epidemiologist Dr Giridhar R Babu about the great vaccine race, and whether millions of COVID-19 infections are being undercounted.
The Wire Talks
IVM Podcasts
Ep. 09: The New Farm Laws Will Finish Off a Way of Life feat. Prof. Pritam Singh
For the past month and a half, thousands of farmers of Punjab and Haryana have been camping near the borders of Delhi to protest against the three new laws passed by the Modi Government. The farmers feel that these laws will favour the big cooperate buyers are these protest only about incomes. On this episode, host Sidharth Bhatia is joined by Dr. Prof. Pritam Singh, Indian Academic, Educationist & Professor of Economics at Oxford Brookes University. The professor gives us an overview of the farmer protest, why the green revolution was passed and how it has affected India in imports and exports, how there will be two laws and two markets working at the same time due to these laws, people from Bollywood also raising their voices for the protest and how many of them have roots in villages, Prime Minister Modi saying that many farmers' delegations from Punjab have met him and have supported the laws and how farmer agitation during colonel rule has been evoked in this current agitation. Tune in for an amazing and informative conversation. Follow Prof. Pritam on LinkedIn: https://www.linkedin.com/in/pritam-singh-78006815 Follow Sidharth Bhatia on Twitter and Instagram @bombaywallah https://twitter.com/bombaywallah and https://instagram.com/bombaywallah You can listen to this show on The Wire's website, the IVM Podcasts website, app on Android: https://ivm.today/android or iOS: https://ivm.today/ios, or any other podcast app.
Know Your Kanoon
S03 E20: In Conversation With Indian Origin Canadian Lawyer Kenya-Jade Pinto
This week, host Amber Rana is in conversation with Indian origin Canadian Lawyer/Filmmaker/Storyteller Kenya-Jade Pinto on the widening of law as a career and the challenges faced by women lawyers. They discuss how law is an enabler which helped her expand her career and grow into different professions, how inclusive the international legal market is and what women can do to break the barrier. Tune in and stay informed. Follow Kenya-Jade on Twitter & Instagram: https://twitter.com/kenyajade and https://instagram.com/kenyajade You can get in touch and ask Amber questions at contact@amranaventures.com You can listen to this show and other awesome shows on the IVM Podcast App on Android: https://goo.gl/tGYdU1 or iOS: https://goo.gl/sZSTU5 You can check out our website at http://www.ivmpodcasts.com/
Newslaundry Conversations
Newslaundry.com
NL Reads: 'Can anyone keep a Brahmin's daughter?': In UP's Sitapur, manhunt for a 'love jihad' couple
The Hindu Yuva Vahini is involved while a former VHP leader plans to do a 'purification' ceremony once the woman is found. See acast.com/privacy for privacy and opt-out information.
The DeshBhakt With Akash Banerjee
The DeshBhakt
Nidhi Razdan & Arnab Goswami - Who got scammed & who scammed others? | SNL with Akash Banerjee
What a week it has been for the news world. On one had Arnab Goswami's chats with former BARC chief Partho Das - got 'leaked' - exposing the rot and connections....on the other hand Nidhi Razdan made a sensational claim that she was the victim of a very systematic and prolonged Phishing attack. ON Saturday Night Livestream we take a look at both this cases and try to make some sense - connect some dots - but the message is clear. Trust no one blindly. (+ tons of your questions as always!) ------------------------------- *** Subscribe to #TheDeshBhakt to unlock Discord / Exclusive Chats / Content *** PATREON MEMBERSHIP - https://www.patreon.com/thedeshbhakt (International Credit Card / Debit Card) JOIN MEMBERSHIP ON YOUTUBE - https://www.youtube.com/thedeshbhakt/JOIN INSTAMOJO - https://imjo.in/XU5arJ (Phone Pe / G Pay / PayTM / BHIM / CC / DC / Netbanking) PAYPAL - https://www.paypal.me/thedeshbhakt ****** Get the New DeshBhakt Merch! ******* India Shipping Only - https://kadakmerch.com/thedeshbhakt *********Follow us on ************ YouTube: - https://youtube.com/thedeshbhakt Twitter :- https://twitter.com/thedeshbhakt Instagram :- https://instagram.com/akashbanerjee.in Facebook :- https://www.facebook.com/akashbanerjee.in SoundCloud :- https://soundcloud.com/thedeshbhakt ********** More DeshBhakt Videos:************ The Deshbhakt Episodes: https://bit.ly/3eLgvLv EMERGENCY: https://bit.ly/3dM4Bj8 Bhakt Banerjee Rocks: https://bit.ly/2VuFQlf B&D Media and the Public: https://bit.ly/389jjzw India explained with TheDeshbhakt: https://bit.ly/2ZjNVKD Akash-Vaani: https://bit.ly/3eKvN3h ************ RESOURCES - ******************* https://www.ndtv.com/blog/how-i-fell-for-a-phishing-attack-my-story-by-nidhi-razdan-2353395 https://twitter.com/gauravsabnis/status/1350414118986121216?s=20 https://scroll.in/latest/984184/three-days-before-balakot-strike-arnab-goswami-said-something-big-will-happen-on-whatsapp-chat https://theprint.in/india/nsa-pmo-hooked-to-republic-arnab-goswami-whatsapp-chats-give-trp-scandal-new-twist/586423/ https://in.news.yahoo.com/arnab-goswami-leaked-whatsapp-chats-113848100.html https://www.thequint.com/news/india/mumbai-police-charge-sheet-whatsapp-chats-arnab-goswami-barc https://thelogicalindian.com/trending/goswami-balakot-air-strikes-26172 --- Send in a voice message: https://anchor.fm/thedeshbhakt/message Support this podcast: https://anchor.fm/thedeshbhakt/support
The Suno India Show
Suno India
Why a Covaxin Controversy in Bhopal is worrying trial participants, activists and experts
Bharat Biotech's Covaxin is one of the two Indian vaccines being administered to healthcare workers as India embarks on the world's largest inoculation drive. Health experts have expressed concerns as hundreds of Bhopal Gas Tragedy survivors say they had been enrolled in the clinical trial for Covaxin without their informed consent. One of the trial participants, Deepak Marabi, passed away on December 21, 2020. Join us on this episode of The Suno India Show, as our reporter Suryatapa Mukherjee explores the alleged violation of the rights of this vulnerable group as well as the alleged misconduct of the clinical trial. These participants say they weren't adequately monitored and their adverse reactions to the vaccine weren't properly recorded. She speaks to Rachna Dhingra, the activist with Bhopal Group of Information and Action who first tweeted about these ethical and legal violations. You will also hear from some of the trial participants, and Anant Bhan, who works in the field of bioethics and global health. Vice Chancellor Dr Rajesh Kapur's statement Bharat Biotech's statement National Ethical Guidelines National Guidelines for Covid-19 Pandemic See sunoindia.in/privacy-policy for privacy information.
Reporters Without Orders
Reporters Without Orders Ep 150: SC committee on farm laws and UP govt's advertorial in TIME magazine
In this episode, the host Snigdha Sharma is joined by Newslaundry's Basant Kumar and Ayush Tiwari. From a buffalo's funeral in Meerut to BJP MP Hema Malini's ignorant comments about the farmers -- the trio share a few laughs talking about the most bizarre news stories they heard during the week. The conversation then moves to the farmer protests. Snigdha shares the latest updates including the Supreme Court-appointed committee to resolve the crisis, which in turn brings her to the objections raised against it. Based on their report, Ayush and Basant highlight how each of the four members of the committee appointed by the apex court have, in the recent past, publicly expressed their support for the three contentious farm laws. Basant also talks about the Bhartiya Kisan Union and its various factions. The trio discuss how the state and a section of TV media has pushed farmers into a corner. Apart from the farmer protests, the panel also discusses Uttar Pradesh government's advertorial in TIME magazine's India edition and how a section of Indian media ran it as a report. In relation to the same, Ayush and Snigdha also discuss the evolving use of press releases over the years. All this and a lot more as they talk about what made news this week, what didn't, and what shouldn't have. Tune in! See acast.com/privacy for privacy and opt-out information.
BIC TALKS
Bangalore International Centre
85. Malik Ambar and African Origin Leaders in India
Historian Omar H Ali talks about African origin leaders and shapers of medieval India on Episode 85 of BIC Talks. Africa and India have a rich history of interaction ranging several millennia, with African origin sailors, merchants, soldiers, scholars, musicians, and explorers finding home in India or contributing significantly to Indian history. Perhaps the greatest among them was Malik Ambar, born in Abyssinia, arriving in India as a slave, and rising to power as the Prime Minister and de-facto ruler of the Ahmednagar Sultanate early in the 17th century. Omar H. Ali is Dean of Lloyd International Honors College and Professor at the University of North Carolina Greensboro. He is an award-winning historian of the global African Diaspora and the author of several books, including on Malik Ambar and This BIC Talks episode is an edited excerpt of Omar's talk that was originally livecast on BIC Streams on December 11, 2020. BIC Talks is brought to you by the Bangalore International Centre. Visit the BIC website for show notes, links and more information about the guests.
Indus Vox Media
BloombergQuint All You Need To Know : All You Need To Know On January 18, 2021
Ep 610: Covid vaccination, farmer protests, and Delhi HC on WhatsApp
Snigdha Sharma brings you the latest news from Delhi, Uttar Pradesh, Bihar, Manipur, and the world See acast.com/privacy for privacy and opt-out information.
The Cārvāka Podcast
Kushal Mehra
UP Conversion Law (The Legal Reality)
The Uttar Pradesh government has recently come up with an ordinance against "Love Jihad". In our previous podcast on this subject, we discussed The Ground Reality with Swati Goel Sharma. In this podcast, we look at the law itself with Nikhil Mehra. Is the law really needed? Is the solution to the problem of systemic grooming going to get solved with a law? Or is this a case of bad law and order in our society? Nikhil will give us clarity on many of these issues in this podcast. Follow Nikhil Mehra: Twitter: @TweetinderKaul #LoveJihad #FraudMarriages #AntiConversionLaws ------------------------------------------------------------ Listen to the podcasts on: SoundCloud: https://soundcloud.com/kushal-mehra-99891819 Spotify: https://open.spotify.com/show/1rVcDV3upgVurMVW1wwoBp Apple Podcasts: https://podcasts.apple.com/us/podcast/the-c%C4%81rv%C4%81ka-podcast/id1445348369 Stitcher: https://www.stitcher.com/show/the-carvaka-podcast ------------------------------------------------------------ Support The Cārvāka Podcast: Become a Member on YouTube: https://www.youtube.com/channel/UCKPxuul6zSLAfKSsm123Vww/join Become a Member on Patreon: https://www.patreon.com/carvaka To buy The Carvaka Podcast Exclusive Merch please visit: http://kushalmehra.com/shop ------------------------------------------------------------ Follow Kushal: Twitter: https://twitter.com/kushal_mehra?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor Facebook: https://www.facebook.com/KushalMehraOfficial/? Inquiries: https://kushalmehra.com/ Feedback: kushalmehra81@gmail.com
NL Hafta
Chhota Hafta 311: Farmer protests, WhatsApp's new privacy policy, and high court judgement on Special Marriage Act
This week on NL Hafta, Newslaundry's Abhinandan Sekhri, Manisha Pande, Mehraj D Lone, and Raman Kirpal are joined by former Newslaundry reporter Rahul Kotiyal, who currently works with Dainik Bhaskar. Starting off with new developments in the farmer protests at the borders of Delhi, Raman talks about how the Supreme Court's order to stay the implementation of the farm laws might impact the protests. The conversation also spans WhatsApp's new privacy policy, the recent stock trading fraud by a CNBC Awaaz anchor, and Donald Trump's impeachment. To listen to the full episode, subscribe to Newslaundry. See acast.com/privacy for privacy and opt-out information.
The Hindu - Home
thehindu
Ramachandra Guha on 'The Commonwealth of Cricket' and his abiding love for the game | The Hindu On Books Podcast
Introducing The Hindu Books podcast, a new weekly initiative which will bring authors, writers, their books, and our discerning readers a bit closer. We start the series with a freewheeling chat with Ramachandra Guha about his latest book The Commonwealth of Cricket. Mr. Guha wears many hats - as a historian, academician, social anthropologist, environmentalist - and above all, an old word lover of cricket in the true sense. His latest book juxtaposes his life with his abiding love for the game and this conversation could not come at a better time with India and Australia in the midst of an enthralling test series. Host: K.C. Vijaya Kumar, Sports Editor, The Hindu Want to get more from The Hindu on books? Subscribe to our weekly newsletter here (Newsletter Subscription News - The Hindu) Write to us with comments and feedback at socmed4@thehindu.co.in
States of Anarchy with Hamsini Hariharan
Ep. 66: QnA Special: What's happening in Taiwan?
In episode 66, Hamsini answers listener questions about global affairs:. How do Taiwanese hold their country against the CCP? What was Taiwan's success story for extensive "economic growth "? What are Tsai Ing-wen's policies? If you have questions about international relations, or foreign policy, send them to us via email ivmstatesofanarchy@gmail.com or DM us on Twitter @HamsiniH (https://twitter.com/omeriHamsini) or on Instagram @statesofanarchy (https://www.instagram.com/statesofanarchy/). Your question can be featured on the new segment of States of Anarchy which appears every fortnight! Read More: 1. Taiwan in 100 Books - John Grant Ross (https://www.amazon.in/Taiwan-Books-John-Grant-Ross/dp/1788691997) * A Thousand Moons on a Thousand Rivers - Hsiao Li–hung (https://www.amazon.in/Thousand-Rivers-Modern-Chinese-Literature/dp/0231117922/) * Political Development in 20th-Century Taiwan: State-Building, Regime Transformation and the Construction of National Identity - Yun-han Chu and Jih-wen Lin (https://www.jstor.org/stable/3451108) * Big Sister, Little Sister, Red Sister: Three Women at the Heart of Twentieth-Century China - Jung Chang (https://www.amazon.in/Big-Sister-Little-Red-Twentieth-Century/dp/191070279X) You can listen to this show and other awesome shows on the IVM Podcasts app on Android: https://ivm.today/android or iOS: https://ivm.today/ios, or any other podcast app.
Mint Lite Morning Shot
Mint - HT Smartcast
167: Mint News |18th January 2021 | Iran's uranium plans shock world | Call for action against sea attack | Nasa's SLS test ends abruptly
European powers have voiced deep concern over Iran's plans to produce uranium metal, Pet food manufacturers witnessed high double-digit growth last year, A critical engine test for Nasa's new "mega-rocket" has ended early & other news updates in your morning shot.
Ep. 76: Manasi Patil
Welcome to Paperback by the Open Library Project Ep. 76 We have as our guest today Manasi Patel. Manasi is the author of the book "Cousins Crime" which we discuss in the first half of the podcast. In the second half, we discuss The Harry Potter series Nancy Drew Series Langdon Series and more... Happy Listening! You can check out Manasi's blogs on these series https://funcreativesparks.blogspot.com/?m=1 To know more about the books we discussed, listen in to the podcast. https://ivmpodcasts.com/paperback-episode-list You can find more details about The Open Library Project on www.openlibrary.in You can listen to this show and other awesome shows on the IVM Podcasts app on Android: https://ivm.today/android or iOS: https://ivm.today/ios, or any other podcast app. You can check out our website at http://www.ivmpodcasts.com/
Bharatvaarta
Bharatvaarta Weekly #24 | Tesla in India, Air Force Procures Tejas Jets, Whatsapp's Privacy...
The Bharatvaarta Weekly is our reaction to the news headlines of the week that was. This week, we'll be talking about the RBI committe on digital lending platforms, the Indian Air Force acquiring Tejas jets, Tesla's subsidiary in India, WhatsApp's privacy issues, and more. If you liked this episode, then don't forget to subscribe to our channel and share this content. You can stay updated with everything at Bharatvaarta by following us on social media: we're @bharatvaarta on Twitter, facebook.com/bharatvaarta.in on Facebook, and @bharatvaarta on Instagram). #Bharatvaarta #BVWeekly
NL Charcha
एनएल चर्चा 150: सुप्रीम कोर्ट की कमेटी, डोनल्ड ट्रंप के खिलाफ महाभियोग और व्हाट्सएप की प्राइवेसी पॉ…
टाइम कोड 01:30 - प्रस्तावना और हेडलाइन 07:46 - कृषि कानून 42:46 - व्हाट्सएप की प्राइवेसी पॉलिसी 56:06 -सलाह और सुझाव एनएल चर्चा का यह 150वां एपिसोड है. इस एपिसोड में कृषि कानून पर सुप्रीम कोर्ट का आदेश और उसके द्वारा बनाई गयी समिति पर विशेष तौर पर बातचीत हुई. इसके साथ ही अमेरिकी राष्ट्रपति डोनल्ड ट्रंप के खिलाफ अमेरिकी संसद के निचली सदन में पास हुआ महाभियोग प्रस्ताव, व्हाट्सएप की नई प्राइवेसी पॉलिसी आदि का भी विशेष जिक्र हुआ. इस बार चर्चा में क्विंट के लीगल एडिटर वकाशा सचदेव और न्यूज़लॉन्ड्री के एसोसिएट एडिटर मेघनाद एस शामिल हुए. चर्चा का संचालन न्यूज़लॉन्ड्री के कार्यकारी संपादक अतुल चौरसिया ने किया. क्या देखा पढ़ा और सुना जाए. मेघनाथ लव जिहाद एक्सपेलेनर फिलोसोफाइस दिस पॉडकास्ट डीप रॉक गैलेक्टिक गेम वकाशा सचदेव दिल्ली दंगो से प्रभावित बच्चों पर वीडियो रिपोर्ट संशोधन सरकार का व्हाट्सएप प्राइवेसी पर लेख फिफटी टू वेबसाइट पर प्रकाशित रिपोर्ट्स डिस्कवरी पर प्रकाशित स्टार ट्रेक सीरीज अतुल चौरसिया सुप्रीम कोर्ट के फैसले पर भानू प्रताप मेहता का लेख संघम् शरणम् गच्छामि किताब - विजय त्रिवेदी See acast.com/privacy for privacy and opt-out information.
Parley by The Hindu
Do we have a grip on disinformation in 2021?
Disinformation, or "fake news" in common parlance, is a malaise born amid the infodemic of the social media age. In the last few years, it has been used as an effective weapon to polarise communities and upset democratic processes. As we begin 2021, we discuss the current state of the malady. Guests: Rasmus Kleis Nielsen, Director of the Reuters Institute for the Study of Journalism and Professor of Political Communication at the University of Oxford; Pratik Sinha, co-founder of Alt News, a fact-checking website. Host: P.J. George, Deputy Internet Editor, The Hindu Read the The Hindu Parley article here. You can now find The Hindu's podcasts on Spotify, Apple Podcasts and Stitcher. Search for Parley by The Hindu. Write to us with comments and feedback at socmed4@thehindu.co.in
The India Explained Podcast
Special Episode: Animal Performers in India
We discuss our memories of seeing animals perform in India, from monkey and bear street actors to elephants in circuses.
If I invest in debt funds now, will my returns be closer to YTM or trailing returns?
The returns may not be as good as what we see in the trailing one-year returns but hopefully, not as low as what the YTM suggests either, says Ashutosh Gupta
More episodes from The Sandip Roy Show
The A to Z of ghosts and monsters of India, with Rakesh Khanna
Rakesh Khanna, the founder of Blaft Publications, talks about his new book which is an encyclopedia of 'Ghosts, Monsters and Demons of India'.
Why the BJP keeps winning, with Vinay Sitapati
Political scientist Dr Vinay Sitapati talks to Sandip about this latest book, Jugalbandi: The BJP before Modi.
Dr Shashi Tharoor on the gap between nationalism and patriotism in India
Dr Shashi Tharoor on who does nationalism really mean in the Indian context, and how it is different from patriotism.


Making your message stick is no joke. But just because what you're saying is serious doesn't mean it should be straight-faced.
When people smile, they're engaged. And it's smiles that get shared. At Twist & Shout, we entertain to inform.
Twist & Shout is like a Secret Society that everybody knows about. We had a secret handshake, but we've forgotten it, so now we have a secret head nod. A crack team of psychiatric experts have deemed us "Unhinged in the best possible way." Which is why we continue to circulate amongst the Normals. Who frighten us. We love and respect The Rules, but, we keep breaking them, oops. We're a humble outfit. In fact, we may be the most humble company ever. Come to think of it, we are absolutely genius when it comes to humility. We'd love to teach the world to sing, but also beat box.
You don't have to have a sense of humour to work here, but an under-developed sense of seriousness helps. Were you tempted to write your CV in crayon? That's a plus.
We despise work and avoid it at all costs. We're just fortunate to have found a hobby that pays. And we're very passionate about our hobby.
Rob serves as the U.S. Creative Director and coordinates North American production. When scripting, he transcribes the voices in his head and hopes they have a good grasp on the message at hand.
Production assistant, what does it even mean? Well. Anything from propmaking to location scouting, filming, editing or teamaking. The boy's got it all.
What do we love more than our clients? Nothing. Maybe icecream. But that's about it. Also, naps. We love naps more than clients. Other than that, nothing. But also snuggly blankets.
Deep down, we care about how companies communicate. We know that whether it's business to business, or business to employee, it's actually person to person. We also believe that visceral connections work better than any other method of communication. That's why I can remember a joke from 20 years ago, or when Kate Starling smiled at me at a 6th form disco.
We also care about creativity, and how it can truly transform businesses. Our founder, Jim Shields, wrote a book to help smaller, creative companies and individuals thrive, and in turn, add real value to larger companies that need their help more than they care to admit.


text:
"Tunnel" Reveals Behind-The-Scenes Stills From Yoon Hyun Min's Epic Fight Scene
by C. Hong
On May 2, OCN's drama "Tunnel" aired some extra stills from the epic fight scene in Episode 11.
In the episode, Yoon Hyun Min and a serial killer (played by Heo Sung Tae) get into a fistfight. The scene, backed up by intense dramatic acting on both sides, lasted three minutes and left a big impression on the viewers.
Along with the stills, "Tunnel" revealed that it had taken 9 hours to film the fight sequence, starting from 8 p.m. and going until 5 a.m. Reportedly the actors kept on filming the scene until their clothes were torn and tattered despite the fact that it was not their first time that week filming through the night.
You can watch the latest episode of "Tunnel" on Viki below!
Yoon Hyun Min
Heo Sung Tae


Veteran sportscaster who has called contests in a wide variety of sports over the course of his career, including sports, Formula Truck and IndyCar series. He has worked for networks like SBT, RedeTV and Fox Sports Brazil.
He started his career as a radio announcer in Goiás, Brazil. He grew up as a supporter of the Goiás Esporte Clube soccer team.
In addition to his sports work, he has served as an announcer for events like the Folklore Festival of Parintins and the Carnival of Brazil.
He married Telma Cristina, with whom he has a son named Alessandro.
He and Gustavo Villani are both known for their work with Fox Sports Brazil.


after ablution i went to temple once you enter in a temple you will notice such marks which proves how ancient the temple is and other paintings and portraiture depicting Mahadev.
after the Darshan of Mahakal i decided to roam around and to as there are many attractions available in Ujjain, for this i took a bus service which offers a visit to all major attractions of Ujjain in 3 hrs at a very nominal price of 60 INRS the booking centers are near to temple only.
any many more places as i named few only precisely you can cover all major attractions of ujjain in one day as i did, in India our gods are our superheros and Mahadev ranks first when it comes to Ujjain or city where the other 12 Jyotirlingas are.
and after visit to all major attractions for my homecoming i took train from Ujjain in the Evening and this is how i covered ujjain in my way in a one day.
Thing which one should take care while planning your trip to ujjain is plan it in a such way that you should be able to attend the (Bhasm Aarti) which starts at around 4 in Morning and for this you must reach ujjain accordingly, because to attend this aarti you have to register your self a day prior and Que starts from 3 at night and i can bet that being evident to bhasm aarti will make you visit again to the Kingdom of Mahakaal.
# Message me for any kind of changes and improvement to my writing and info provided. Suggestions and Critics are loved & hearlty welcomed, and Wishlist it if you liked, as it cheers me to give my thoughts a wings of words.
A Decent and Reasonable Place to stay with basic Amenities.
King Bhartrihari is believed to be lived here and meditated the caves are well maintained and its must visit place if you are in ujjain.
would love to see more of photographs.


text:
Q: IQueryable Query Performance Tuning I would like some suggestions for how to make this simple LINQ code to be as fast and efficient as possible

tbl_WatchList contains 51996 rows
The below test takes 2 secs to run according to VS2012 test explorer

    [TestMethod]
    public void TestRemoveWatch()
    {
        using (var DB = new A4C_2012_devEntities())
        {
            var results = DB.tbl_WatchList.OrderByDescending(x => x.ID).Take(1);
            int WatchID = results.AsEnumerable().First().ID;
            Assert.IsTrue(WatchList.RemoveWatch(WatchID));
        }
    }

A: You don't need to sort whole collection.
int WatchID = DB.tbl_WatchList.Max(wl => wl.ID);

Should be sufficient.

A: To optimize, do the following:

*

*Use a profiling tool (such as SQL profiler) to see what SQL queries are sent to the database and to see what the real performance is of those queries.

*Select the slow performing queries and analyse there query plan manually or use an Index Tuning Advisor to see what indexes you are missing.

*Add the missing indexes.

redpajama_set_name: RedPajamaStackExchange


text:
Scientists Identify the Master Regulator of Cells' Heat Shock Response, Pointing to New Potential Targets for Neurodegenerative Diseases and Cancer
In new research published Sept. 16 in the journal eLife, scientists at NYU Langone Medical Center and elsewhere report for the first time that a protein called translation elongation factor eEF1A1 orchestrates the entire process of the heat shock response. By doing so, eEF1A1 supports overall protein homeostasis inside the cell, ensuring that it functions properly under various internal and external stress conditions. The researchers suggest that this finding could reveal a promising, new drug target for neurodegenerative diseases and cancer.
Researchers say a variety of age-related diseases thrive, depending on how cells respond to heat and other types of stress. Heat shock proteins (HSPs) chaperone other proteins, helping them to fold properly and supporting their function. With neurodegenerative diseases, neurons lack enough protective HSPs that insulate them from protein-damaging stress. A hallmark of most neurodegenerative diseases is protein misfolding. If the heat shock response could be restored to its full capacity in aging neurons, then misfolded proteins might fold properly, potentially avoiding or halting progression of diseases such as Alzheimer's, Parkinson's, or amyotrophic lateral sclerosis (ALS). In contrast, many types of cancer cells rely on HSPs to survive. Because high levels of HSPs enable cancer cells to grow and proliferate, depleting these cells of HSPs could sensitize tumors to chemotherapy and radiation therapies.
"It's a bit early, but we think that eventually we could design small-molecule activators and inhibitors that tweak the heat shock response," says Evgeny Nudler, PhD, the study's senior investigator and the Julie Wilson Anderson Professor of Biochemistry and Molecular Pharmacology at NYU Langone. "eEF1A1 controls every single step of the heat shock response simultaneously."
Nudler, a Howard Hughes Medical Institute investigator, says his team's latest research shows that eEF1A1 activates transcription by recruiting a key transcription factor to heat shock genes. It also stabilizes HSP mRNAs and helps to transport these RNAs outside the cell nucleus and delivers them to the cell's ribosome for protein synthesis. In this way, Nudler says, it orchestrates the entire process of manufacturing HSPs in response to stress. HSPs then bind to other proteins, preventing their toxic aggregation.
The eEF1A protein is expressed in two similar forms, 1 and 2, in different tissues. Nudler and colleagues show, for example, that motor neurons express form 2 (eEF1A2), which does not support the heat shock response. They believe that this is the reason why these specialized cells cannot mount the heat shock response and therefore are particularly vulnerable to stress and diseases such as ALS. The challenge in drug development will be restoring the heat shock response in motor neurons by modulating the activity of eEF1A.
Nudler's laboratory used various human and mouse cell lines in this work. Maria Vera, PhD, a former member of Nudler's laboratory, was the lead study investigator. Other key study participants include Bibhusita Pani, PhD, also from Nudler's lab; Robert Singer, PhD, from Albert Einstein College of Medicine in Bronx, NY; and Cathy Abbott, PhD, from the University of Edinburgh in Scotland.
Support for this research came from the National Institutes of Health NIH R01 AI090110, the Robertson Foundation, the Howard Hughes Medical Institute, and a donor, Timur Artemyev.
http://nudlerlab.info/
http://www.med.nyu.edu/biosketch/nudlee01
www.elifesciences.org/
David March
212 .404.3528│david.march@nyumc.org
MORE FROM Medical Breakthroughs
04/25/2019 Medical Breakthroughs
Researchers discover how eating feeds into the body clock
Discovery of oral cancer biomarkers could save thousands of lives
High-intensity hope for spinal cord patients
04/04/2019 Medical Breakthroughs Cancer Exports Molecular 'Saboteurs' to Remotely Disarm Immune System
VCU researchers demonstrate long-term cognitive benefits of fecal transplantation in cirrhosis patients
The Urgent Necessity of Epidemiology and Advanced Therapy Medicinal Products
Alzheimer's disease: It may be possible to restore memory function, preclinical study finds
Does Work Stress Increase Cancer Risk?
3D Printing in Healthcare
10/11/2018 ALS
Testing new drugs with "ALS-on-a-chip"
Urine test could help monitor bladder cancer treatment
Researchers describe a new regulatory mechanism for salmonella virulence with small RNA fragments
University of Birmingham forms spinout to develop new therapeutic target for rheumatoid arthritis
Stopping exercise can increase symptoms of depression
Researchers rescue embryos from brain defects by re-engineering cellular voltage patterns


text:
Q: why doesn't the keys ` + a give me à? from http://en.wikipedia.org/wiki/Dead_key it says that the keys  ` + a should give me à but apparently its not working. so basically I'm wondering which computer was the wikipedia article targeted at?

A: It depends on the program.
E.g. it works on Wordpad, but not on Notepad. Try the former.

Edit: If you're using XP, try going to Control Panel --> Regional and Language Options --> Advanced and checking Extend support of advanced text services to all programs, and seeing if that helps.

A: It will work on any system that is using a U.S. International keyboard layout. Go into your keyboard settings and choose that layout.