text:
William Anastasi b. 1933
William Anastasi is a pioneer in the Conceptual, Minimalist, and Process art movements of the 1960s. His interdisciplinary approach to art incorporates drawing, sound, photography, sculpture, and site-specific installations and interventions and is meditative and philosophical in its dealings with everyday life, materials, objects and spaces.
Anastasi was born in Philadelphia in 1933 and attended his first art class at the age of twelve; he says that from his earliest memory, he has been drawing every day. His mother, an immigrant to the United States from Italy by way of Algeria, instilled a daunting challenge in Anastasi at a young age, when she stated that "of course the best thing anyone could be in this world is an artist." Since then, an anxiety around this provocation has spurred his limitless curiosity into the validity of the art object, the creative process and the ego of the artist.
Anastasi moved to New York City in 1962 and promptly began making the work he is perhaps most well-known for and continues to create — his Subway Drawings, in which he blindly lets the movements of the subway car dictate the marks made on the page. These works are at the cornerstone of understanding Anastasi's approach to art making, as they are chance-driven, unbound to traditional aesthetic intent and depend solely upon the present moment.
By 1970, Anastasi was actively showing in prominent galleries in New York, including solo shows, but was not finding the financial success of some of his contemporaries; he has always been considered, reverentially, as "an artist's artist." Following Kierkegaard's principle that "the love of repetition is in fact the only happy one," Anastasi continued to create works in this narrow, yet infinitely expansive mode, saying that "in repetition, things slow up. They get better, more beautiful, with the prospect of what is coming." This maxim of the rewards of repetition can be applied to Anastasi's body of work as a whole, as well as individual works, which deepen as you devote more time and attention to them. In the decades that followed, he continued to make subway drawings, as well as Pocket Drawings, sound works, "unsighted" drawings, and site-specific works with a Duchamp-minded investigation into aesthetic prejudice and the presence of the artist in the work.
Famously, Anastasi played a daily game of chess with his close friend John Cage for many years. Cage once said of Anastasi's work: "It's not psychological; it's physical." Anastasi was awarded the John Cage Award from the Foundation for Contemporary Arts in 2010 and is represented in major collections such as The Museum of Modern Art, New York, the National Gallery of Art, Washington D.C. and the Art Institute of Chicago.
Referring to an adage often leveled at Duchamp – "either he's a genius or a crazy man" – Anastasi says its the "ambivalent feeling between the two that keeps [him] going as an artist...maybe it's insecurity or some sort of anxiety." Despite increasing and long-overdue scholarly and market interest in his work, Anastasi, citing yet another philosopher, identifies with Kant's declaration that "nearly through the whole of my work I have felt doubtful what to do." Anastasi continues to live and make work in New York.
Auction Results William Anastasi
Untitled (two works)
estimate: $2,000–3,000


What is it like to work at Sugarman Health and Wellbeing?
Various opportunities to expand skills and experience in various fields.
Office staff liaise regularly with staff in the field and provide information.
What are people saying about the leadership at Sugarman Health and Wellbeing?
What are people discussing at Sugarman Health and Wellbeing?
How does someone get hired at Sugarman Health and Wellbeing? What are the steps along the way?
Is there a zero hour contract available?
How much does Sugarman Health and Wellbeing pay their employees?
What jobs are available at Sugarman Health and Wellbeing?


PHYSIOLOGICALLY TUNED™ MEAT FIRST, POTATO AND GRAIN FREE PREMIUM FOOD FOR CATS.
Tuna provides complete, high-quality protein and essential amino acids in this flavorful recipe. Low in Saturated Fat, high in Vitamin B6 and Phosphorus, it's an excellent source of Vitamin B12, Omega-3 and Omega-6 fatty acids, and a complete spectrum of vitamins and minerals.
Tuna, Water Sufficient For Processing, Polysaccharide Gum, Sunflower Seed Oil, Tricalcium Phosphate, Choline Chloride, Taurine, Fructooligosaccharides, Zinc Sulfate, Vitamin E Supplement,Thiamine Mononitrate (Vitamin B1), Nicotinic Acid (Vitamin B3), Calcium Pantothenate, Potassium Iodide, Manganese Sulfate, Vitamin A Supplement, RiboflavinSupplement (Vitamin B2), Pyridoxine Hydrochoride (Vitamin B6), Folic Acid, Ferrous Sulfate, Copper Sulfate, Menadione Sodium Bisulfite Complex (source Of Vitamine K3), Vitamin D3 Supplement, Vitamin B12 Supplement.


text:
'Roseanne' Hasn't Changed, But It's Now Radical in a Profoundly Different Way
From The New York Post
Millions of Americans tuned in on Tuesday for the fifth episode of ABC's "Roseanne," the popular reboot of the beloved '90s sitcom starring comedian Roseanne Barr as a working-class mom, which garnered more than 27 million viewers in its premiere late last month. The show, which has been reaching nearly double the viewers of its closest competitors, continues to dominate the ratings heading into its sixth episode.
One of the most interesting aspects of its popularity is that the show hasn't really changed. The popular culture around it, however, has changed quite a bit, such that a show that was considered edgy during its first run is now almost quaint.
When "Roseanne" came on the scene in the late '80s, it broke ground in featuring an "ordinary" American family whose problems — such as under-employment and sibling rivalry — were relatable. Strong family loyalty is a theme in the reboot as well.
"You have this duality, of a family that constantly pokes each other in the back, but the poking stops the minute something gets serious for any member of the family," said Tobe Berkovitz, a professor of advertising, popular culture and television at Boston University.
In an age of ever-increasing cable channels and streaming services, many of today's long-running popular sitcoms focus on singles and feature edgy, urban tribes rather than families — there's Netflix's "Orange is the New Black," about inmates in a women's prison; HBO's "Silicon Valley," about single tech entrepreneurs in a cutthroat industry; and Netflix's "Master of None," featuring an Indian-American singleton looking for love in New York.
And a new genre — including shows like HBO's "Divorce" and ABC's "Splitting Up Together" — has cropped up to offer darkly comic, often racy views of life after divorce.
That stands in stark contrast to "Roseanne." In last Tuesday's episode, the Connors' younger daughter, Darlene, contemplated reuniting with her ex-husband, David. Family patriarch Dan, disinclined to forgive his son-in-law for walking out, offers: "There is no reason to ever leave your family. You may think about it. You may dream about it. You may gas up your bike and make sandwiches. But you don't ever do it."
"Roseanne" — once a challenge to TV's idealized takes on the nuclear family — now seems, ironically, among the more family-focused and traditional. And in 2018, a time of great political turmoil in America, perhaps "Roseanne" is here to remind us that family holds this country together.
This time around, the Connors are facing issues that reflect our time: DJ's military wife is deployed overseas; Becky, a single, childless woman in her 40s, is confronting her waning fertility; and Roseanne, who voted for President Trump, and her sister Jackie, who favored Hillary in the election, have been, like most of the country, at odds over politics.
But while the show's initial episodes portrayed family disagreement, they also made sure to underline the fact that, in their own bumbling, imperfect ways, the Connors have each other's backs.
In the double-episode premiere, Dan gave his grandson Mark — a junior-high-school-age boy with a penchant for wearing feminine clothing — a pocket knife to protect himself at school. Dan might be an old bull whose political and cultural leanings are portrayed as conservative, but he cares more about Mark's safety than debating the highly politicized subject of gender fluidity.
In this, the show reflects an important truth: Only the most hardened partisan would prioritize politics above family. Indeed, the show's premiere gave America a front-row seat to Roseanne and her sister Jackie's political sniping and reconciliation.
This was not well-received by the commentariat on the left. In The New York Times, Roxane Gay declared "we cannot reach people who make dangerous, myopic political choices. We concede, as Jackie does, or we resist, as hopefully the rest of us will."
On the contrary: Perhaps we can take a cue from "Roseanne" that, regardless of what our personal beliefs may be, family (still) comes first.
This entry was written by Heather Robinson and posted on April 23, 2018 at 7:01 pm and filed under Features.

redpajama_set_name: RedPajamaCommonCrawl


Welcome to Katfrog's Corner: Are Great Apes "People", too?
Are Great Apes "People", too?
Growing up, I remember thinking about animals and wondering if they talked to each other, what they thought about, and if they all lived together somewhere in a hidden place with no humans around to kill them. And I LOVED watching "Dr. Doolittle" (the older movie, not the Eddie Murphy one).
As I grew up, my interests changed, but I still like learning about wild animals. I wrote a paper on African elephants; I watched "Mutual of Omaha's Wild Kingdom"; I listened as scientists made discovery after discovery about the amazing abilities of dogs and dolphins.
In the past several years, we've learned that humans are not the only self-aware creatures on this planet. Dogs, dolphins, whales, octopuses, and great apes all recognized themselves in mirrors and act in ways that astound me. Certain types of dogs can remember over 1,000 different toys and then pick out a new toy in the group. An octopus can watch another octopus solve a problem, learning the solution through observation. Bonobos, a type of great ape, can make hot tea using a stove and know how to game the system to get what they want. All great apes can learn to either use sign language or use interpretive devices to "talk" to their human friends. In fact, adult great apes have the same problem that adult humans do - we learn vocabulary but have problems learning new grammatical rules. And baby great apes learn the same way baby humans do, only lacking the necessary throat muscles to make words the way we do.
So why do we still treat animals as if they are dumb? Why do we expect animals to react on instinct alone, as if they don't have the ability to adapt or change? We know better than that, at least for some animals.
Disclaimer: I am not a vegetarian. I eat pig and cow and I think that they are delicious. This is not a ploy to get people to stop eating meat.
Part of the answer is hubris on our part. We, the humans, rose to the top of the food chain through our larger brains. Now we seek to rule all of those below us, even if no one thinks of it that way.
Another part might be legal. Can you imagine what would happen if animals gained legal rights? Not only would all the research facilities have to change how they approach any study that involves animals, but what happens to the zoos and circuses? What about all the parks or tiny wildlife attractions that use animals as a type of bait to get people to visit them?
How would our society have to change if we acknowledged animals as sentient beings with basic human rights?


text:
"""
Brian Tanner: The license above is what matters most. I think you can all
take the comments below as non-binding suggestions ;)

This file was written by Jose Antonio Martin H. for the RL-Glue Extensions project.
you are allowed to use it (and see it) fully but subject to the next conditions

1. to not cause damage to any person
2. to not use it to earn money except when you give me the 50%
3. to use it to produce a state of the art RL agent, if not, think a lot and then come back to write a super agent.

This code is a 'parser' for the RL-Glue 3.0 TaskSpec.
It does not make any duplication of information, that is, what you get is always a view of the original string.
This is not the classic state-machine or automata approach to parsing languages so in particular you will se that
the parser is robust to a big set of taskpec string malformations still getting the right information. blablabla

Last modifed 22-1-2009 by Jose Antonio Martin H.
Added enforced parsing error catching.
"""

import sys
import numpy as np

try:
    import psyco

    psyco.full()
except ImportError:
    pass

class TaskSpec:
    def __init__(self, discount_factor=1.0, reward_range=(-1, 1)):
        self.version = "RL-Glue-3.0"
        self.prob_type = "episodic"
        self._discount_factor = discount_factor
        self._act = {}
        self._obs = {}
        self._act_charcount = 0
        self._obs_charcount = 0
        self._reward_range = reward_range
        self._extras = ""

    def to_taskspec(self):
        ts_list = ["VERSION " + self.version,
                   "PROBLEMTYPE " + self.prob_type,
                   "DISCOUNTFACTOR " + str(self._discount_factor)]

        # Observations
        if len(self._obs.keys()) > 0:
            ts_list += ["OBSERVATIONS"]
            if "INTS" in self._obs:
                ts_list += ["INTS"] + self._obs["INTS"]
            if "DOUBLES" in self._obs:
                ts_list += ["DOUBLES"] + self._obs["DOUBLES"]
            if "CHARCOUNT" in self._obs:
                ts_list += ["CHARCOUNT"] + self._obs["CHARCOUNT"]

        # Actions
        if len(self._act.keys()) > 0:
            ts_list += ["ACTIONS"]
            if "INTS" in self._act:
                ts_list += ["INTS"] + self._act["INTS"]
            if "DOUBLES" in self._act:
                ts_list += ["DOUBLES"] + self._act["DOUBLES"]
            if "CHARCOUNT" in self._act:
                ts_list += ["CHARCOUNT"] + self._act["CHARCOUNT"]

        ts_list += ["REWARDS", "(" + str(self._reward_range[0]) + " " + str(self._reward_range[1]) + ")"]
        if self._extras != "":
            ts_list += ["EXTRAS", self._extras]
        return ' '.join(ts_list)

    def set_discount_factor(self, factor):
        self._discount_factor = factor

    def set_continuing(self):
        self.prob_type = "continuing"

    def set_episodic(self):
        self.prob_type = "episodic"

    def set_problem_type_custom(self, prob_type):
        self.prob_type = prob_type

    def add_act(self, range_, repeat=1, type_="INTS"):
        rept = "" if repeat <= 1 else str(repeat) + " "
        self._act.setdefault(type_, []).append("(" + rept + str(range_[0]) + " " + str(range_[1]) + ")")

    def add_obs(self, range_, repeat=1, type_="INTS"):
        rept = "" if repeat <= 1 else str(repeat) + " "
        self._obs.setdefault(type_, []).append("(" + rept + str(range_[0]) + " " + str(range_[1]) + ")")

    def add_int_act(self, range_, repeat=1):
        self.add_act(map(int, range_), repeat, "INTS")

    def add_int_obs(self, range_, repeat=1):
        self.add_obs(map(int, range_), repeat, "INTS")

    def add_double_act(self, range_, repeat=1):
        self.add_act(range_, repeat, "DOUBLES")

    def add_double_obs(self, range_, repeat=1):
        self.add_obs(range_, repeat, "DOUBLES")

    def set_charcount_act(self, charcount):
        self._act["CHARCOUNT"] = [str(charcount)]

    def set_charcount_obs(self, charcount):
        self._obs["CHARCOUNT"] = [str(charcount)]

    def set_reward_range(self, low, high):
        self._reward_range = (low, high)

    def set_extra(self, extra):
        self._extras = extra

class TaskSpecParser:
    """RL-Glue TaskSpec Sparser V3."""
    _w = ["VERSION", "PROBLEMTYPE", "DISCOUNTFACTOR", "OBSERVATIONS", "ACTIONS", "REWARDS", "EXTRA"]
    _v = ["INTS", "DOUBLES", "CHARCOUNT"]
    expected_version = "RL-Glue-3.0"

    @property
    def valid(self):
        return self._valid

    @property
    def taskspec(self):
        return self._ts

    @property
    def version(self):
        """The task spec version.

        Returns
        -------
        str : The task spec version.

        """
        return self._version

    @property
    def problem_type(self):
        if not self._validate():
            return ""
        return self._problem_type

    @property
    def discount_factor(self):
        if not self._validate():
            return ""
        return self._discount_factor

    def __init__(self, ts):
        self._valid = True
        self._last_error = ""
        self._ts = ts

        self._version = self._get_version()

        if self.expected_version != self._version:
            print "Warning: TaskSpec Version is not " + self.expected_version + " but " + self._version
            self._valid = False

        while self._ts.find("  ") != -1:
            self._ts = self._ts.replace("  ", " ")

        self._problem_type = ""
        self._discount_factor = ""

        self._obs_str = ""
        self._int_obs = []
        self._double_obs = []
        self._charcount_obs = 0

        self._num_int_obs = 0
        self._num_double_obs = 0

        self._act_str = ""
        self._int_act = []
        self._double_act = []
        self._charcount_act = 0

        self._num_int_act = 0
        self._num_double_act = 0

        self._reward_range_str = ""
        self._reward_range = []
        self._extra = ""

        pos = []
        r = []
        w = self._w[1:len(self._w)]
        for i, id_ in enumerate(list(w)):
            try:
                pos.append(ts.index(id_))
            except:
                r.append(id_)
                del w[i]

        if len(r) > 0:
            self._last_error = "could not find the keywords: " + ", ".join(r)
            print "Warning: TaskSpec String is invalid: " + self._last_error
            self._valid = False
            return

        sorted_w = sorted(zip(pos, w))
        w = [s[1] for s in sorted_w]

        for i, id_ in enumerate(w):
            if id_ == 'PROBLEMTYPE':
                self._problem_type = self.get_value(i, ts, w)
            elif id_ == 'DISCOUNTFACTOR':
                val = self.get_value(i, ts, w)
                self._discount_factor = float(val) if self._valid else ""
            elif id_ == 'OBSERVATIONS':
                self._obs_str = self._get_vars_str(i, ts, w)
                self._int_obs = self._get_vars_dims(0, self._obs_str)
                self._double_obs = self._get_vars_dims(1, self._obs_str)
                self._charcount_obs = int(self.get_value(2, self._obs_str, self._v))

                self._num_int_obs = len(self._int_obs)
                self._num_double_obs = len(self._double_obs)
            elif id_ == 'ACTIONS':
                self._act_str = self._get_vars_str(i, ts, w)
                self._int_act = self._get_vars_dims(0, self._act_str)
                self._double_act = self._get_vars_dims(1, self._act_str)
                self._charcount_act = int(self.get_value(2, self._act_str, self._v))

                self._num_int_act = len(self._int_act)
                self._num_double_act = len(self._double_act)
            elif id_ == 'REWARDS':
                self._reward_range_str = self.get_value(i, ts, w)
                self._reward_range = self._get_range(self._reward_range_str)
            elif id_ == 'EXTRA':
                self._extra = self.get_value(i, ts, w)

    def _get_version(self):
        a = len(self._w[0]) + 1
        return self._ts[a:self._ts.find(" ", a)]

    def is_episodic(self):
        if not self._validate():
            return ""
        return self._problem_type == "episodic"

    # noinspection PyMethodMayBeStatic
    def is_special(self, max_or_min):
        if not isinstance(max_or_min, basestring):
            return False
        if max_or_min == "UNSPEC" or max_or_min == "NEGINF" or max_or_min == "POSINF":
            return True
        else:
            return False

    def get_act_str(self):
        return self._act_str

    def get_obs_str(self):
        return self._obs_str

    def get_num_int_act(self):
        return self._num_int_act

    def get_num_int_obs(self):
        return self._num_int_obs

    def get_num_double_act(self):
        return self._num_double_act

    def get_num_double_obs(self):
        return self._num_double_obs

    def get_int_act(self):
        return self._int_act

    def get_int_obs(self):
        return self._int_obs

    def get_double_act(self):
        return self._double_act

    def get_double_obs(self):
        return self._double_obs

    def get_charcount_act(self):
        return self._charcount_act

    def get_charcount_obs(self):
        return self._charcount_obs

    def get_reward_range_str(self):
        return self._reward_range_str

    def get_reward_range(self):
        return self._reward_range

    def get_extra(self):
        return self._extra

    def get_value(self, i, ts, w):
        try:
            a = ts.index(w[i]) + len(w[i]) + 1
        except:  # ValueError:
            # raise AttributeError("Malformed TaskSpec String: could not find the "+w[i]+" keyword")
            self._last_error = "could not find the " + w[i] + " keyword"
            print "Warning: Malformed TaskSpec String: " + self._last_error
            self._valid = False
            return ""
        b = None
        if (i + 1) < len(w):
            try:
                b = ts.index(w[i + 1]) - 1
            except:  # ValueError:
                # raise AttributeError("Malformed TaskSpec String: could not find the "+w[i+1]+" keyword")
                self._last_error = "could not find the " + w[i + 1] + " keyword"
                print "Warning: Malformed TaskSpec String: " + self._last_error
                self._valid = False
                return ""

        return ts[a:b].strip()

    def _validate(self):
        if not self._valid:
            print "Warning: TaskSpec String is invalid: " + self._last_error
            return False
        return True

    def _get_var_value(self, i, str_o):
        if not self._validate():
            return ""
        str_r = self.get_value(i, str_o, self._v)
        str_r = str_r.replace(") (", ")#(")
        # Ok I can parse it but this (there is no space or there is an extra space in ranges)
        # should be checked since this means that the taskspec is malformed
        str_r = str_r.replace("( ", "(")
        str_r = str_r.replace(" )", ")")
        str_r = str_r.replace(")(", ")#(")

        parts = str_r.split("#")
        obs = []
        for p in parts:
            obs.extend(self._get_range(p))
        return obs

    def _get_range(self, str_input):
        if not self._validate():
            return ""
        try:
            str_input = str_input.replace("UNSPEC", "'UNSPEC'")
            str_input = str_input.replace("NEGINF", "'NEGINF'")
            str_input = str_input.replace("POSINF", "'POSINF'")
            str_input = str_input.replace(" ", ",")
            r = eval(str_input)
            r = list(r)
            if len(r) == 2:
                if r[0] == 'NEGINF':
                    r[0] = -np.inf
                if r[1] == 'POSINF':
                    r[1] = np.inf
                return [r]

            if r[1] == 'POSINF' or r[2] == 'NEGINF':
                self._last_error = "error occurred while parsing a Range in " + str_input
                raise ValueError("Warning: Malformed TaskSpec String: " + self._last_error)
            if r[1] == 'NEGINF':
                r[1] = -np.inf
            if r[2] == 'POSINF':
                r[2] = np.inf
            out = r[0] * ([[r[1], r[2]]])
            return out

        except:
            self._last_error = "error occurred while parsing a Range in " + str_input
            print "Warning: Malformed TaskSpec String: " + self._last_error
            print sys.exc_info()
            self._valid = False
            return ""

    def _complete_vars(self, str_in):
        if not self._validate():
            return ""
        # forces the vars to have ints doubles and charcount
        if self._v[0] not in str_in:
            str_in = self._v[0] + " (0 0 0) " + str_in
        if self._v[2] not in str_in:
            str_in = str_in.rstrip() + " " + self._v[2] + " 0 "
        if self._v[1] not in str_in:
            i = str_in.find(self._v[2])
            str_in = str_in[0:i] + self._v[1] + " (0 0 0) " + str_in[i:]

        return str_in

    def _get_var_info_range(self, i, ts, w):
        self._validate()
        a = ts.index(w[i])
        b = ts.index(w[i + 1]) + 1
        return ts[a:b]

    def _get_discount_factor(self):
        value = self.get_value(2, self._ts, self._w)
        if not self._validate():
            return ""
        return float(value)

    def _get_vars_str(self, i, ts, w):
        if not self._validate():
            return ""
        str_o = self.get_value(i, ts, w)
        return self._complete_vars(str_o)

    def _get_vars_dims(self, i, str_in):
        if not self._validate():
            return ""
        return self._get_var_value(i, str_in)

def test():
    # you can cut the taskspec by the main words with new line
    ts = "VERSION RL-Glue-3.0 PROBLEMTYPE episodic DISCOUNTFACTOR .7 OBSERVATIONS INTS (NEGINF 1) ( 2 -5 POSINF )" \
         " DOUBLES (2 -1.2 0.5 )(-.07 .07) (UNSPEC 3.3) (0 100.5) CHARCOUNT 32 ACTIONS INTS (5 0 4)" \
         " DOUBLES (-.5 2) (2 7.8 9) (NEGINF UNSPEC) REWARDS (-5.0 5.0) EXTRA some other stuff goes here"

    print ts
    print
    print

    task_spec = TaskSpecParser(ts)
    if task_spec.valid:
        print "======================================================================================================="
        print "Version: [" + task_spec.version + "]"
        print "ProblemType: [" + task_spec.problem_type + "]"
        print "DiscountFactor: [" + str(task_spec.discount_factor) + "]"
        print "======================================================================================================="
        print "\t \t \t \t Observations"
        print "======================================================================================================="
        print "Observations: [" + task_spec.get_obs_str() + "]"
        print "Integers:", task_spec.get_int_obs()
        print "Doubles: ", task_spec.get_double_obs()
        print "Chars:   ", task_spec.get_charcount_obs()
        print "======================================================================================================="
        print "\t \t \t \t Actions"
        print "======================================================================================================"
        print "Actions: [" + task_spec.get_act_str() + "]"
        print "Integers:", task_spec.get_int_act()
        print "Doubles: ", task_spec.get_double_act()
        print "Chars:   ", task_spec.get_charcount_act()
        print "======================================================================================================="
        print "Reward :[" + task_spec.get_reward_range_str() + "]"
        print "Reward Range:", task_spec.get_reward_range()
        print "Extra: [" + task_spec.get_extra() + "]"
        print "remember that by using len() you get the cardinality of lists!"
        print "Thus:"
        print "len(", task_spec.get_double_obs(), ") ==> ", len(
            task_spec.get_double_obs()), " Double Observations"
        print task_spec.is_special("NEGINF")

if __name__ == "__main__":
    test()

redpajama_set_name: RedPajamaGithub


text:
Joe Raedle—Getty Images
A graduate wears his mortarboard with "Free at Last" written on it during a commencement ceremony in Miami, Florida.
A Chinese Feminist, Made in America
by Nancy Tang
Nancy Tang
Nancy Tang is a Beijing native who now works at a Washington, D.C. think tank.
By Nancy Tang, Beijing native who now works at a Washington, D.C. think tank. This article was first published by Tea Leaf Nation.
In August 2010, two weeks after turning 18, I traveled about 6,700 miles from Beijing, China to attend Amherst, a liberal-arts college in Massachusetts in the northeastern United States. I packed a copy of Harvard economist N. Gregory Mankiw's textbook Principles of Economics in my carry-on luggage to peruse on the plane. Having aced both the Scholastic Aptitude Test and the gaokao, China's college entrance exam, I expected to continue my straightforward path: I would study hard, major in economics, and get good grades. Upon graduation, I'd enter investment banking, a much sought-after and lucrative career option among Chinese students in the United States.
But in May 2014, when I graduated, I did so having completed a degree in political science and a senior thesis on the gender injustice wrought by China's so-called "One-Child Policy." On my flight back home to Beijing, I devoured Americanah by Nigerian author Chimamanda Ngozi Adichie. Even though the novel discusses the Nigerian diaspora rather than my Chinese one, the woman author who titles her talks "The Danger of a Single Story" and "We Should All be Feminists" manages to capture my own experience.
Before coming to the United States, I thought I was already quite Americanized. In fact, I knew very little about this place. Like a typical Chinese middle-class millennial, I had been a consumer of American pop culture—music, TV shows, and Hollywood movies—long before college. My version of the American life was singular: people were affluent, lived in urban places, and looked like the cast of Friends, a 1990s sitcom that's still unbelievably popular in China.
That did not prepare me for life in the United States. Whether it was talking to fellow classmates about their lives in places I had never heard of, or listening to upperclassmen talk about safe sex, the kind of displacement I felt during my college orientation would continue to smash the simple narratives I'd been fed. When I found myself on a school-run trip to the nearby Holyoke, Massachusetts, I encountered pockets of post-industrial poverty that looked nothing like the "America" I had previously watched on How I Met Your Mother or The Big Bang Theory.
I encountered pockets of post-industrial poverty that looked nothing like the "America" I had previously watched on How I Met Your Mother or The Big Bang Theory.
Even though "class struggles" was a ubiquitous jargon in the Marxist-themed textbooks I had read growing up, I had never actually had to think about class before I arrived at Amherst. I am the daughter of two professors and rarely left our middle-class, college-educated neighborhood. Amherst, renowned for its diverse student body, instead taught me about "class" as a lived reality through the socioeconomic disparities manifest among my peers. On the one hand, I was appalled by the wealth, status, and access to power enjoyed by some Amherst students, who would attend debutante balls worthy of a Gossip Girl episode or off-handedly mention "servants" at home. On the other hand, friends who were first-generation college students or hailed from working-class backgrounds amazed and humbled me. While my family is not rich, I had never had to think twice about the cost of a good cup of coffee or a movie ticket. I had never thought I'd be the spoiled middle-class only child—but there I was, comparing myself to peers working to support themselves (and even their families) while undertaking the same course-load as mine. By sophomore year, I'd decided to cross investment banking off my list of career options.
Studying in the United States has complicated my perception of China, and of my own years there. I appreciate the irony that I have learned more about Chinese social inequality and political turmoil while in the U.S. than I ever did at home. Thanks to freer access to information and a heightened awareness of my Chinese identity in a foreign context, I have started to ask questions about urban-rural disparities in China, to think about the migrant workers in my home neighborhood, who used to be invisible to me, and to read about the Great Leap Forward, the Cultural Revolution, Tiananmen, and ethnic injustice that no amount of forced amnesia can erase from history.
I appreciate the irony that I have learned more about Chinese social inequality and political turmoil while in the U.S. than I ever did at home.
I have also come to see my identity as a Chinese woman in a new light. In March 2015, five Chinese feminists were arrested for protesting against sexual harassment on public transportation, which led to domestic rallies and international outcry, which apparently resulted in their release—quite unusual, given the government's usually refractory response to international criticism. I worried anxiously about the feminists, two of whom I met through mutual friends while studying at Amherst. I was frustrated and terrified—though ashamed to feel terrified—when I learned my e-mail and WeChat (a popular Chinese messaging app) were being monitored, since I had been actively involved in calling for the activists' release and translating their words. I am enraged that, rather than addressing prevalent gender injustice, the Chinese government prefers to silence the brave few who dare to speak out about it.
I gradually become a feminist after coming to the United States. It was a natural and empowering process. Having studied feminist theory, co-directed the Amherst rendition of Eve Ensler's Vagina Monologues, and served as a sexual respect advocate on campus, I had obtained the vocabulary and framework to analyze why some of my earlier experiences in China felt wrong. It's because they were wrong, and the manifestations of gender injustice. I could see it in how teachers would openly comment that boys were "superior" to girls at math and science; how my loving father would express his unconscious preference for a son by intending "if only you were a boy" as a compliment; how my female cousins and I were encouraged to stop eating after a while to "keep in shape," while male cousins were left alone at the dinner table; and how my 22-year-old female cousin was set up to go on series of blind dates, while her male counterpart was expected to go to graduate school.
As a result of being vocal about my feminism, I have been repeatedly asked by Chinese acquaintances, "why are you a feminist?" in an accusatory, privy, or pitiful tone. I have occasionally heard another more direct and less polite version of the same inquiry: "have all of you feminists been hurt by men?" The truth is that I was sexually assaulted by a family acquaintance at age seven. Despite experiencing shock, discomfort, and tremendous guilt at the time, I did not know what it was because I had not been taught to recognize it. In 2012, when my former Amherst classmate Angie Epifano's account of sexual assault was published, I had a conversation with a friend about traumatic early experiences, and I named what happened to me as an "assault" to myself for the first time.
I am not defined by my assault, even though I have struggled with internalized shame and guilt. I certainly don't ascribe my experience to bad luck. In a recent Chinese Internet survey of over 17,000 anonymous respondents who self-reported having been sexually assaulted as children, over 94 percent of the victims were female, and respondents identified over 97 percent of the perpetrators as male. Like me, over 82 percent of respondents say they did not recognize their experience as sexual assault at the time, even though many were aware that something was wrong. Over 70 percent of the victims say they have never disclosed their experiences to anyone.
Being a vocal feminist exposes me to unexpected challenges whenever I interact with my Chinese communities in the States and back home in China.
Being a vocal feminist exposes me to unexpected challenges whenever I interact with my Chinese communities in the States and back home in China. I have been told by multiple heterosexual male Chinese friends—many also U.S.-educated, I must add—that "women should keep their grievances private." I have been lectured by a high-school-classmate-turned-popular-blogger that "sexual assault doesn't happen in China; it only happens in promiscuous societies like America." My own family worries about my public identification as a feminist. Women relatives ask me if I can be a feminist "silently," lest I drive all the boys away. Like any topic that could potentially become political in China, apathy and avoidance are the highest hurdles.
Today, feminism constitutes my core identity. Not only has it given me an understanding of my early experiences, it helps me navigate my position as a woman in a male-dominated world. Feminism has also freed me from the fear of becoming a "leftover woman," defined as a single woman over the age of 27 by the state-run All-China Women's Federation. Having researched problematic dating and marriage norms in China and having written about them for an English-language outlet, I can separate love from the pressure to marry in my personal life. I no longer feel guilty about enjoying singlehood.
This fall, I will remain Stateside to study law. I already have a long feminist wish list for the Chinese legal reforms I'd like to see, ranging from formal legislation against gender discrimination in hiring practices, to nation-wide access to temporary restraining orders for victims of domestic violence, to official acknowledgement of LGBTQ rights. Perhaps my ideals result from my immaturity, hubris, and ignorance. But I feel inspired by Chinese peers who are utilizing their privileges to fulfill their social responsibilities.
During her commencement speech to the Wellesley College class of 2015, Adichie reminded graduates of their educational privileges. Having found a role model in novelist Adichie, I believe her when she encourages younger women to at least try to dream big. The transformation I underwent through my elite liberal-arts education is a painful bliss: it entails the loss of simpler narrative and a coming to terms with personal history. But it's also given me tolerance, empathy, and more nuanced ways to situate myself in my world. I am privileged, and grateful.
Education, Law, Media, Politics, Society
Feminism, Women, Women's Rights, Education, Higher Education, Studying Abroad, Gender, Gender Equality


If you're a cryptocurrency trader looking for an edge (and what trader isn't?), you may have heard about algorithmic trading. If you're a relatively new trader, you may have dismissed the idea as being too complex.
Here's the good news: You don't need to be an advanced or even moderately experienced cryptocurrency trader to develop algorithmic trading strategies. Thanks to the introduction of powerful, yet simple to deploy bots, beginning traders have access to the advantages offered by an algorithmic approach.
To help you better understand how it all works, let's take a closer look at the basics of trading with algorithms and the benefits it offers.
Algorithmic trading (sometimes called automated trading) is a process by which computers are used to execute trades according to a predefined set of instructions — or what is known as an algorithm.
By programming computers to execute orders based on trading signals, greater profits can theoretically be generated, as humans cannot trade with the speed, frequency or efficiency of an algorithm. One example: Humans cannot monitor markets around the clock; we need to eat, sleep and work. Algorithms, however, can operate indefinitely, seizing upon market opportunities as they unfold.
Computerization of the U.S. stock market began in the 1970s. By the 1980s, the basics of algorithmic trading were in place with the dawn of early automated "program trading." These first early algorithms allowed traders to realize a profit by triggering a trade once a certain gap developed between the value of equities and futures markets.
As the pace of digitalization increased, algorithmic trading became far more sophisticated. Traders used machines to identify temporary mispricing and compare prices across a large number of markets simultaneously, unlocking enormous profits and establishing algorithmic trading strategies as an essential part of the Wall Street landscape.
Today, these trading strategies are becoming equally entrenched among cryptocurrency traders seeking a competitive edge.
Algorithms are deployed in cryptocurrency markets much the same way they are used in equities markets. By integrating algorithms, it's possible to build a systematic trading framework that offers a lot of market benefits while also reducing the odds of trader error. Trades for coins and tokens are automatically executed according to predetermined conditions.
To do this, cryptocurrency traders run programs called bots. Trading bots are software programs designed to communicate with exchanges and execute trades on your behalf. Bots can directly access an exchange's order books through a simple API and can be designed with specific features and purposes in mind.
For example, an arbitrage trading bot is designed to identify pricing disparities between exchanges; if traders are selling a token for $100 on one exchange and paying $102 for that token on a second exchange, the algorithm can take advantage of this temporary spread.
The removal of emotion and irrationality from trades.
Trades can be executed with greater speed to reduce missed opportunities.
Lowered risk of data errors being entered manually (fat finger mistakes).
Backtesting helps validate the viability of trading strategies.
Around-the-clock trading allows opportunities to be seized whenever they arise.
While there are a wide variety of bots in existence (and, in fact, they are customizable through scripts), choosing the appropriate bot (or bots) to implement a trading strategy is a core challenge for algorithmic crypto traders.
It's important to understand that bots are not all-knowing oracles that can intuitively grasp the right trades to make. Bots are merely tools that allow traders to implement their existing trading strategies more efficiently. Because traders vary widely in their philosophy and approach, bots also vary widely in their design.
Inter-exchange arbitrage bots (for those who use multiple exchanges).
Flash crash bots, which take advantage of temporary crashes in the value of a token or coin.
Basic trade bots, which can be configured to follow all sorts of pre-determined strategies.
Trendline bots, which use basic technical analysis (the trend lines drawn on charts) to execute trades.
Index bots, which help create a diverse portfolio of cryptocurrencies that are managed much like an index fund.
Stop loss bots, which automatically sell at a certain fixed or dynamic price.
It should be noted that not every bot is suited for every trader. While a basic trade bot might be a good choice for a beginner, a customizable script bot or a market-making bot is designed with the advanced trader in mind. Trader sophistication and risk tolerance should be key considerations when choosing the right type of bot to deploy.
Once you've made this assessment, you'll be ready to choose a group of bots well-suited to the execution of your overall trading strategy.
Understanding how insurances, safeties, and technical indicators work is another important part of successful algorithmic trading. Insurances are essential conditions that must be met before a bot executes a trade on an exchange. For example, a bot can be programmed never to sell a coin or token for less than the purchase cost. A bot may also be programmed to avoid trades where exchange fees would lead to unprofitability or to only allow trades that generate at least twice the fee amount in profits.
Safeties, on the other hand, are defined events that will trigger a trade. One example: A safety can follow the price of a coin or token during an upswing, then sell as soon as the reversal begins. Safeties can also automate sells once a certain profit threshold has been reached, or a specified loss has been incurred.
Finally, bots can be programmed to work hand in hand with technical analysis — a process by which variables such as price movement, volume, and historical data are analyzed to identify trading opportunities. Bots can initiate trades based on popular predictive variables such as Relative Strength Indicators, Bollinger bands, candle formations and other chart patterns.
Day trading, whether in stocks or cryptocurrencies, is simply the act of buying or selling assets on the same day in order to take advantage of short-term fluctuations in value. Because cryptocurrency is a maturing asset class, markets tend to be more volatile, something which makes them attractive to many day traders.
In the U.S., the SEC and FINRA require that day traders maintain a minimum of $25,000 equity in their trading account. Cryptocurrencies are not bound by these rules — anyone can day trade. All that's needed is a funded exchange account.
To day-trade successfully, however, it's essential to have some basic market knowledge and the appropriate tools. Algorithmic trading can help both beginning and advanced day traders implement their strategies with more efficiency.
By using the right combination of bots, insurances, and safeties, newcomers can limit their potential risk by establishing tight trading parameters and eliminating emotion and irrationality. Meanwhile, advanced day traders can deploy more sophisticated bots that incorporate high-level technical analysis to uncover market opportunities as they develop.
Much as it transformed equities markets, algorithmic trading has become an indispensable part of the cryptocurrency landscape. The introduction of easy to use yet powerful bots have placed the power of algorithmic trading in the hands of everyone, regardless of skill level or experience.
If you're interested in incorporating algorithmic trading into your approach, explore our features page which shows all of our different bot types available for use.
Haasbot 2.0 has been released!


text:
adam gregory York & gillian jane Lees
Adam York Gregory & Gillian Jane Lees
www.aworkinghypothesis.co.uk
Gillian is a Glasgow based performance practitioner. She makes rigorous attempts to build and control her environment over hours, and sometimes days, by undertaking physically demanding and mentally exhausting durational performances. Gillian's interest lies in the fleeting moment where her will to succeed meets her diminishing physical ability to complete each task.
Adam is a scientist, games designer, typesetter, comic artist, film-maker and visual artist. His practice reflects each of these disciplines, often combining them to create novel areas of exploration, using his background in creating scientific investigations as a starting point for artistic explorations and methodologies.
Together, their internationally awarded practice seeks to explore the notion of 'the imagined ideal' through subjective performance, objective experimentation, documentation and observation.
Their work has been shown at Buzzcut (Glasgow), Tramway (Glasgow) BALTIC as part of GIFT (Gateshead), Rapid Pulse (Chicago), Mobius (Boston), Rosekill (New York) Tempting Failure (Bristol/London), The Lowry (Manchester) and Z-Arts (Manchester) and has been supported by The British Council, Arts Council England, Testbeds Luton, Lancaster Arts, Light Up Lancaster, and The Heritage Lottery Fund.
"Their performances produce tensions, a play of force and resistance: resistance in the spring of a trap, tension in the hand that sets it; or between the whiteness of the sheet, the blackness of the ink. In this tension there emerges a sense of risk. Risk, like resistance, may be primarily symbolic; neither resistance nor risk ought be dismissed as merely symbolic. The tensions are not simply either real or imagined. The work is care." "
— O. Husch, Something Other (www.somethingother.blog)
CURRENT WORK:
EX VIVO
A performative film and book form the results of a year long collaboration with the Institute of biomedical Science and Technology in Luton, looking at the ways in which art and science collaborate, and fail to collaborate.
The film addresses appropriation and true collaboration in a representative space whilst considering if the mediated view of science is intentionally misrepresenting the role of science and the people behind it.
In a totally dark room, Gillian will attempt to construct 40 electrical lights in 4 hours using only match light as she connects bulbs, wires and plugs.
When each light is finished it is plugged into a socket that is operated by an electrical timer switch. After four hours the switch will activate and the space will be illuminated. The illumination correlates to the performers success and ability to perform the task.
Darkness denotes a failure of the task.
Gillian moves through the space carefully setting several hundred conventional wooden mouse traps on the floor. Her hands and feet are bare and vulnerable, close to the trap mechanisms. She continues until she is backed into a corner… We are looking to create a cumulative physical tension through the spring loaded traps and observe if it equates to a growing sense of emotional tension in anyone witnessing the piece – whether the repetition of a task that contains an inherent physical danger becomes more tense when performed repeatedly.
FULL STOP.
Two parallel lines of white tape create a running track that ends abruptly at a wall. Next to the wall is a speed radar. Gillian repeatedly runs towards the wall, trying to record ever-higher numbers on the display.
We are exploring personal risk in relation to performance. The faster she runs, the harder the impact, the higher the risk and the greater the cost.
Tangent is a task-based performance that assesses the perfection of a circle drawn by hand, using geometric processes to create a graphical representation of error. Gillian's ability to perform perfectly is inextricably bound to the perfection of the circles she draws. Each circle is geometrically assessed, creating a graphical display of any deviation from perfection, both in terms of the circle and Gillian's ability to perform.
Inspired by the development of Third Angel's 9 Billion Miles from Home and A Perfect Circle by Christopher Hall, Gillian Lees and Alexander Kelly, Tangent is an ongoing inquiry as to the nature of perfection in performance.
With each run we learn more about how Gillian mitigates the risk of pain through technique and through tempering her performance.
Or, perhaps, injury and pain are the cost of success.
The White Lund Commemoration
One hundred years ago an explosion rocked Lancashire. The munitions depot at White Lund in Morecambe exploded with a force that could be heard as far away as Burnley. Due to the secretive nature of the factory, press reports were suppressed at the time and the incident was buried in all but the memories of the people involved.
The film is a commemoration on the centenary of the event.
We invited a group of local women aged 20–75, to document a series of choreographic movements generated by the women themselves, and which focus on their own working experiences, revealing, and preserving the story by drawing parallels between the mostly women workers of the depot and their modern counterparts through performance and film.
Time/Distance
Time/Distance is a durational performance that measures itself by itself. Gillian transports sand a grain at a time across a defined space, much like sand falling within an hourglass. Just as a microscope is used to examine tiny things visually by making them appear large, we attempt to use the space to expand time beyond fractions of a second to examine it in more detail.
We wish to consider the slowing down of time, and how this enables us to be aware of it in greater detail by creating a rhythmical, meditative space. Much like a scientific experiment, the simple, repeated actions of the performer allow us to examine them in greater detail.
A Working Hypothesis
An experiment, a film, exploring the notion of an imagined ideal. A glass is picked up, and put back down again, repeatedly, until the ideal action is witnessed. This process sought to explore how a simple instruction given to a performer might differ through repetition; the result may never be exactly what was hoped for, but those results might be things that could never have been imagined. As a basis for collaboration, we considered how a simple, repeatable task, such as picking up and setting down a glass of water might be performed. Furthermore, at what point would the task be finished?


We recently held our annual Customer Advisory Board (CAB) event here in Portland, Oregon. This year, the proceedings featured a hosted panel session with executives from three of our strategic technology partners: Cisco Systems, Microsoft and IBM.
2018 featured tremendous growth for Smarsh in terms of our market share and the set of capabilities we are delivering to our customers. With the API-driven extensibility of our platform, technology partnerships are proving increasingly important to our customers who are leveraging them for added business value in conjunction with the solutions we provide directly to them.
To kick off 2019, we are excited to share the video recorded discussion that took place during the CAB partner-focused session mentioned above so you can see and hear what our partners perspectives are directly from them.
Hosted by Smarsh compliance subject matter expert Robert Cruz and Smarsh CTO Anthony West, these videos unpack key topics that critically impact the ability to implement our partner's productivity-enhancing solutions for your workforce while maintaining proper governance and mitigating the inherent risks.
The first of these three videos covers the technology trends and drivers that are shaping new offerings from our partners in the areas of collaboration, artificial intelligence, behavioral analytics and emerging digital communication channels. Also discussed are the compliance and legal challenges to overcome when implementing them inside a heavily regulated organization.
We hope you enjoy watching this first video and benefit from the information shared in it. Keep a lookout for Part 2 (coming soon), as we continue the conversation with an in-depth discussion on the topics of privacy, security and compliance in advanced supervision environments.
Mike Pagani is a seasoned IT professional and recognized subject matter expert in the areas of mobility, identity and access management, network security and virtualization. Prior to joining Smarsh in November 2014, Mike held executive-level corporate and technology leadership/spokesperson roles for Stay-Linked, Quest Software, NComputing, Dell Software and others.


On Saturday, I found myself in heaven on earth, surrounded by thousands of wagging tails and wet noses; a heaven I can visit every year, right before Thanksgiving. While The National Dog Show is broadcast on Thanksgiving Day, it actually takes place the weekend before, just outside of Philadelphia. Do you think I'd miss such an epic gathering of pooches? Does a Golden shed? Does a St. Bernard drool?
What better way to usher in Thanksgiving week than with dogs, dogs and more dogs? After all, our canine friends model a gratitude that leads to true happiness. They are enormously grateful for the little things, all wiggling butts and wagging tails over your arrival home, or an old toy. They don't compare what they have to others, thankful instead for every kibble and belly rub they receive, not expecting more or worrying about what's to come.
As thoughts turn to gratitude this time of the year, we feel especially thankful for our family and friends. But as I wandered through the convention center filled with dogs of every size, shape and color, I was reminded of the variety of people who bring all sorts of blessings into our lives. The dogs in the show are organized into groups according to their purpose and I couldn't help but be struck that those groups can remind us of the many people who bless our lives every day.
We are all familiar with the collies and sheepdogs that keep livestock in the herd where they belong, but they also remind us to be thankful for those who bring us together. You know, the people who organize birthday outings, throw annual neighborhood block parties and are the first with a casserole for new parents or the bereaved. They are the community builders and their gregarious nature helps those of us more "socially-challenged" connect.
Good things come in small packages, right? These adorable pint-sized pooches bred for companionship bring to mind the folks that enrich our lives simply by making us smile. What would life be without the entertainers, the artists, even the class clowns, who bring beauty to the world and a little relief from the daily grind?
These dogs are driven. Often hard-headed, they have a single minded nose for their prey and they won't stop til they succeed. And don't we need those people in our life who kick us in the tush, who tenaciously encourage us to keep our standards high and achieve our goals? They might bark a lot, but they push us to great things—and do it with an infectious joy!
These are an inscrutable bunch, all outsized ears and noses, the better for seeing and smelling. They remind us to be thankful for those in the world who feel more, see more. These are the saints among us, religious or lay, who see suffering in the world more acutely and work to relieve it. These are the spiritual leaders and the poets, those who's often quiet demeanor belies a depth of understanding out of the reach of most of us.
Heaven is a flock of Goldens!
What would we do without police dogs sniffing out bombs and bad guys or St. Bernards rescuing stranded hikers (carrying brandy, no less)? From our earliest days, we have been blessed by canine companions whose assistance has enabled us to work beyond our human abilities. And likewise we are blessed by the people in our world who labor to keep us safe. We give thanks for those who run into burning buildings, who patrol our streets and who wear the uniform of the US armed forces. Like the canines that kept watch while ancient man slept around the fire, these brave souls maintain the vigilance that keeps the wolf from our door.
The oddballs of the dog world. This is where the hairless Xoloitzcuintli and the Standard Poodle with a ridiculous haircut coexist. And we need oddballs, too. Whether it's Uncle Bob with his conspiracy theories, the off-beat girl who wears a tutu to class or those with special challenges, these are the people whose differences grow our empathy, and sometimes our patience. And, like a dog without hair, they just make the world more interesting.
It takes a lot of work . . .
To look this, uh, beautiful?
Whether retriever or pointer or spaniel, these dogs will be at your side in the field tirelessly, in any weather, then happily snore next to you on the couch as their muzzles fade to grey. These steadfast companions remind us to thank God for those loyal friends who have been at our side through life's treats and life's trials. Those who stood beside us at the altar as we married and stood behind us at our parents' graves. The ones who know us as well as we know ourselves.
And so I am grateful for you, my dear golden retriever of a friend, blond and loyal, for being at my side for all these years.
Have a blessed (and fur-filled) Thanksgiving!


MIZUDASHI Cold brew method - HARIO Co., Ltd.
Time draws out the flavor.
MIZUDASHI is a cold-brew method, in which water is used from the beginning instead of hot water. As the brewing slowly takes place over time, the flavor intrinsic to tea leaves and coffee beans comes out.
Tannin and caffeine, which cause bitterness and astringency, comes out when tea is brewed with hot water. When it is brewed slowly at low temperature, theanine and amino acids, which offer a sweet taste and umami respectively, are extracted. Vitamin C is also extracted without being damaged by high temperature. This is the reason why cold-brew tea offers a mild, good flavor unique to tea leaves with little bitterness or astringency.
Oxidization by high temperature is prevented. Tannin and caffeine, which cause bitterness and astringency, are contained. Therefore, a milder flavor is produced. Enjoy coffee with a smooth and sweet flavor intrinsic to the beans.
It is also gentle on your palate.


text:
The gens Didia, or Deidia, as the name is spelled on coins, was a plebeian family at ancient Rome, which first appears in history during the final century of the Republic.  According to Cicero, they were .  Titus Didius obtained the consulship in 98 BC, a dignity shared by no other Didii until imperial times.

Origin
The nomen Didius or Deidius is of uncertain origin.  It resembles a class of gentilicia formed from cognomina ending in -idus, but might be derived from a cognomen Dida.  Chase classifies it among those gentilicia that either originated at Rome, or cannot be shown to have come from anywhere else. Anthony Birley suggests they came from eastern Italy, "specifically from the coastal town of Histonium." Olli Salomies has documented several examples of Diidiis used as a family name amongst the Oscans.

Praenomina
The earlier Didii used the praenomina Sextus, Titus, and Gaius, to which later members of the family added Quintus, Aulus, and Lucius.  All of these were common throughout Roman history.

Branches and cognomina
None of the Didii mentioned during the Republic is known to have borne a cognomen.  A number of surnames are found under the Empire, of which the only one that appears to be a family name is Gallus.  This cognomen, referring to a cockerel, belongs to an abundant class of cognomina derived from the names of everyday objects and animals.  The same surname could also refer to a Gaul, indicating someone of Gaulish descent, or whose appearance or character resembled that of a Gaul.

Members

 Sextus Didius, the grandfather of Titus Didius, the consul of 98 BC.
 Titus Didius Sex. f., tribune of the plebs in 143 BC, was probably the author of the sumptuary law, lex Didia, which was binding on all of Italy, in contrast with the lex Fannia of 161, which had no power except in the city of Rome.  He is probably the same Titus Didius who was sent as praetor against the revolted slaves in Sicily, about 138.
 Gaius Didius C. f., a senator in 129 BC.
 Titus Didius T. f. Sex. n., as praetor in 100 BC, triumphed over the Scordisci; consul in 98, he and his colleague passed the lex Caecilia Didia.  Afterwards proconsul in Spain, he triumphed over the Celtiberians.  Didius fell during the Social War, in the spring of 89.
 Titus Didius (T. f. T. n.),  in 113 or 112 BC, and tribune of the plebs in 95.  He and his colleague, Lucius Aurelius Cotta, were forced from the tribunal hearing the disputes arising from the accusation brought against Caepio.
 Gaius Didius, legate of Caesar in 46 BC. In command of Caesar's fleet during Caesar's 46 BC Spanish campaign. He won a naval victory over Publius Attius Varus. After the Battle of Munda Didius pursued Gnaeus Pompeius's fleet escaping from Carteia, capturing or destroying his ships. After the death of Gnaeus, Didius was attacked and slain by his quarry's Lusitanian soldiers.
 Quintus Didius, governor of Syria in 31 BC.  Although probably appointed by Marcus Antonius, he went over to Octavian after the Battle of Actium, and persuaded the Arabs to burn a fleet that Antonius had built in the Red Sea.
 Aulus Didius Postumus, proconsul of Cyprus during the reign of Augustus.
 Aulus Didius Gallus consul suffectus in AD 39, and subsequently governor of Britain.
 Didius Scaeva, one of the generals of Vitellius, who was slain at the taking of the Capitol in AD 69.
 Aulus Didius Gallus Fabricius Veiento, praetor during the reign of Nero, he was banished for publishing a number of libels, and for supposedly selling the honours granted by the emperor.  He subsequently returned to Rome, and was consul at least twice, the second time under Titus in AD 80.  Aurelius Victor reports that he was a favourite of Domitian, under whom he was consul.
 Gaius Pomponius Gallus Didius Rufus, proconsul of Crete and Cyrenaica in 88/89.
 Titus Didius Secundus, consul suffectus under Trajan in AD 102.
 Lucius Didius Marinus, the second husband of Annia Cornificia Faustina Minor, daughter of the emperor Marcus Aurelius.
 Quintus Petronius Didius Q. f. Severus, father of the emperor Didius Julianus.
 Marcus Didius Q. f. Q. n. Severus Julianus, consul in AD 175 and 179, and Roman emperor for nine weeks in AD 193.
 Didius Q. f. Q. n. Proculus, brother of the emperor Didius Julianus.
 Didius Q. f. Q. n. Nummius Albinus, brother of the emperor Didius Julianus.
 Didia M. f. Q. n. Clara, daughter and only child of Didius Julianus.

See also
 List of Roman gentes

References

Bibliography
 Marcus Tullius Cicero, De Domo Sua, De Oratore, In Pisonem, Philippicae, Pro Murena, Pro Plancio, Pro Sestio.
 Gaius Julius Caesar, De Bello Hispaniensis (On the War in Spain, attributed).
 Publius Ovidius Naso (Ovid), Fasti.
 Marcus Velleius Paterculus, Compendium of Roman History.
 Lucius Annaeus Florus, Epitome de T. Livio Bellorum Omnium Annorum DCC (Epitome of Livy: All the Wars of Seven Hundred Years).
 Appianus Alexandrinus (Appian), Hispanica (The Spanish Wars), Bellum Civile (The Civil War).
 Aulus Gellius, Noctes Atticae (Attic Nights).
 Lucius Cassius Dio Cocceianus (Cassius Dio), Roman History.
 Eusebius of Caesarea, Chronicon.
 Ammianus Marcellinus, Res Gestae.
 Ambrosius Theodosius Macrobius, Saturnalia.
 Scholia Bobiensia (Bobbio Scholiast), In Ciceronis Pro Sestio (Commentary on Cicero's Oration Pro Sestio).
 Dictionary of Greek and Roman Biography and Mythology, William Smith, ed., Little, Brown and Company, Boston (1849).
 René Cagnat et alii, L'Année épigraphique (The Year in Epigraphy, abbreviated AE), Presses Universitaires de France (1888–present).
 George Davis Chase, "The Origin of Roman Praenomina", in Harvard Studies in Classical Philology, vol. VIII, pp. 103–184 (1897).
 Robert K. Sherk, "The Text of the Senatus Consultum De Agro Pergameno", in Greek, Roman, and Byzantine Studies, vol. 7, pp. 361–369 (1966).
Michael Crawford, Roman Republican Coinage, Cambridge University Press (1974, 2001).
Paul A. Gallivan, "The Fasti for A.D. 70–96", in Classical Quarterly, vol. 31, pp. 186–220 (1981).
 John C. Traupman, The New College Latin & English Dictionary, Bantam Books, New York (1995).
 Olli Salomies, "The Nomina of the Samnites. A Checklist", in Arctos, vol. 46, pp. 137–185 (2012).

Roman gentes

redpajama_set_name: RedPajamaWikipedia


Welcome to Firestorm! 56 Artists, 175 Microgames each in 4 seconds or less. Developers from over 20 different countries participated in this massive game collaboration, becoming one of the largest Flash games ever produced. It's like Wariowares, same style gaming and genre.
Being the last of its kind, this final part of the Four Second series takes you beyond the keyboard, and includes over 60 mouse-based games in it's own entire Mouse mode, giving Four Second Firestorm a powerful boost in gameplay. If you are a traditionalist, there are still over 100 original keyboard games to keep you happy. Get to the boss, and win.
Thanks to everyone for making this game series as fun and exciting to produce as it has been to play, and thanks to the other 55 developers who were on this project. Check out their bios for more information about each developer!


The Verona is one of our most popular collections which has been extended for 2019 due to it's unwavering popularity.
The half round grey tonal rattan gives the appearance of tradition wicker with all the benefits of having all weather PE resin rattan that requires minimal maintenance for years of enjoyment.
The charcoal grey olefin cushions offsets the tonal grey rattan perfectly and the deep filled seat and back cushions have been designed for paramount comfort.
The set is designed for al fresco dining and entertaining and ensures a relaxed atmosphere. The sofa and chairs combination is a modernisation of the traditional dining setting that promotes comfort and relaxation. Whether dinner with your friends as the summer sun begins to set around you, or breakfast with family in the relaxed mornings of the summer holidays - the Verona dining set is sure to be a focal part of your summer.
This set can be left outdoors all year round but the cushions will need to be stored during winter months and heavy periods of rain.


text:
Faith in the Age of Science
Mark Silversides
~ Religion in the twenty-first century
I Wish I'd Done More Philosophy
Posted by Mark Silversides in Philosophy, Science and Religion
Brian Cox, philosophy, science
Donald Rumsfeld, former US Defence Secretary, said there are things we know we know, and things we know we don't know. "But there are also unknown unknowns – the ones we don't know we don't know."
The issue of how we know things keeps me awake at night, especially the idea that in some areas we don't even know what the questions are, let alone the answers. Rumsfeld was echoing the famous remark of J B S Haldane in the 1920s: "My own suspicion is that the universe is not only queerer than we suppose, but queerer than we can suppose."
I wish I'd done more philosophy, because the question of knowledge is one of its key themes (aka epistemology) down the centuries. What I do know is that the diverse figures of Rumsfeld and Haldane are not alone in their questioning.
The sense of ultimate mystery is, of course, part of religion. If we think we have all the answers through science (or will have them all pretty soon) then there is no motivation to think about anything else. Unfortunately, a lot of the popular presentation of science gives the impression that with just one more push we will understand everything. A notable exception is Brian Cox, who acknowledges that even with recent advances in physics there will always be other things over the horizon. Although I believe he is an atheist, he also shows a sense of wonder about things that is at least half way religious.
Hardcore sceptics will now cry "God of the Gaps", but that is not what I advocate at all. There is a crucial Rumsfeldian distinction between the unanswered questions we know about (the known unknowns) and the sense of mystery concerning what lies beyond them (the unknown unknowns). The mystery is most obvious I think in quantum theory, closely followed by cosmology.
Once we grasp that mystery is not just about what we don't know, but about what we cannot know through science, perhaps we can free our minds to other sorts of knowledge, not contrary to science but standing alongside it as an equal partner in the great human enterprise. Otherwise, we may find that as regards the major issues for our world, issues that become ever more challenging, we have no answers at all.
Mark Silversides is author of Faith in the Age of Science, and comments on atheism and religion.
More about Mark...
@MarkSilversides on Twitter
'Faith in the Age of Science' Revisited
Should we Shackle the Internet?
Towards a Progressive Faith?
Proof of the Existence of God
The Intellectual Weakness of New Atheism
Taxing Questions
An Atheism that Faces Reality
The Nature of Evidence
The Fickle Finger of Fate
Could Atheists Please Clarify What They Mean?
Mark on Twitter
RT @HuffPostRelig: RT this if you believe that faith and reason don't have to oppose one another. 7 years ago
Giveaway on Goodreads of Faith in the Age of Science by yours truly. goodreads.com/giveaway/show/… 7 years ago
Does it get much worse? NB role of internet as usual. guardian.co.uk/uk/2013/apr/28… 7 years ago
Follow @MarkSilversides
atheism Baggini Bible Brian Cox Bryan Appleyard DannyBoyle Dawkins Dennett ethics Grayling Hawking Hitchens humanism Michael Ruse morality mystery New Scientist pascal philosophy P Z Myers Quentin Smith religion Sam Harris science Stenger Susan Greenfield theology Thomas Nagel
Ambit New Media
Buy "Faith in the Age of Science"
Sacristy Press


text:
Q: How to get OkHttp3 redirected URL? Is there a way to get the final URL of a request? I know that I can disable redirections and to this myself, but is there a way to get the current URL I'm loading? Like, if I requested a.com and got redirected to b.com, is there a way to get the name of the url b.com?

A: The OkHttp.Builder has NetworkInterceptor provided.Here is an example:
        OkHttpClient httpClient = new OkHttpClient.Builder()
            .addNetworkInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    System.out.println("url: " + chain.request().url());
                    return chain.proceed(chain.request());
                }
            })
            .build();
    System.out.println(httpClient.newCall(new Request.Builder().url("http://google.com").build()).execute());

OkHttp3 wiki: Interceptors

A: The response object provides a chain of the requests and responses which were used to obtain it.
To obtain the final URL, call request() on the Response for the final Request which then provides the url() you desire.
You can follow the entire response chain by calling priorResponse() and looking at each Response's associated Request.

A: You can use "Location" from response header (see topic https://stackoverflow.com/a/41539846/9843623). Example:
{
{
    okHttpClient = new OkHttpClient.Builder()
        .addNetworkInterceptor(new LoggingInterceptor())
        .build();
}

private class LoggingInterceptor implements Interceptor {
    @Override public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);

        utils.log("LoggingInterceptor", "isRedirect=" + response.isRedirect());
        utils.log("LoggingInterceptor", "responseCode=" + response.code());
        utils.log("LoggingInterceptor", "redirectUri=" + response.header("Location"));

        return response;
    }
}

redpajama_set_name: RedPajamaStackExchange


I finally went through all 20 of the One Room Challenge Spring 2018 Reveals and there are some really great transformations this time around. It's always so interesting to see how designers tackle each space and how creative they can be. I love learning about new sources and overall just gathering design inspiration. I will also be posting on my favorite reveals from the guest participants (there are over 200!) hopefully this week.
To start I wanted to share Michelle Gage's master bedroom transformation. The photo above was my favorite vignette! I just adore the blues, the mirror and the shape of that stool. Perfection!
This space by Linda Holt Creative is a fun and colorful transformation. I love how she made a huge loft space feel cozy and intimate. There is tons more to see I just chose my fave shots.
I'm obsessed with this boys room by Stephanie Kraus Designs. This room is for her lucky 8 year old son. I just love the shibori style wallpaper with the best choice in headboard fabric for contrast. See the rest of the room here.
This colorful den by The English Room is playful and vibrant to say the least. I always love discovering new artists in her reveals because she has such a great eye. If you love bold spaces you will enjoy this transformation.
This attic space by Angela from The Painted House is so chic! I love the modern and classic mix of styles and her color combinations are always the best. I love Angela's very original point of view.
This project is another bold and interesting one designed by Shannon Claire Interiors. The project name? #ProjectSexyCoffin. Well, it's ultra feminine, dramatic with a touch of wild. Not sure what that looks like? Take the whole tour.
I love this big boy bedroom by Nancy from Marcus Designs. I love Nancy's style and have been following her for years. My favorite part of this room is the blue trim and built-in combined with grasscloth wallpaper. Heaven!
Jen from Rambling Renovators transformed her master bedroom into an inviting clean and bright space. I love that it's classic and warm.
Nicole from Sketch 42 redesigned her boys rooms in their summer home. The original home was designed by renowned decorator in the 80s and 90s so she wanted to keep the same kind of vibe but more refreshed. I love the outcome!
Isn't it amazing how designs can be so different from one another and yet be so attractive and inspiring at the same time? Creativity is the limit! If you have time please see all the One Room Challenge reveals....All the spaces are unique and wonderful in their own way!


text:
U.S. Stock Futures Rise; BioCryst Jumps in Premarket
On April 8, 2013, in dow jones futures news report, by Infinity Trading
Dow Jones Futures – U.S. stock-index futures advanced as investors awaited Alcoa Inc. (AA)'s financial release to mark the beginning of the latest earnings-reporting season.
BioCryst Pharmaceuticals Inc. (BCRX), the developer of anti- influenza drug Peramivir, surged 18 percent in early New York trading as China expedited the approval of the medicine. Lufkin Industries Inc., a maker of oil-well pumps, jumped 38 percent as General Electric Co. (GE) agreed to buy the company.
Futures on the Standard & Poor's 500 Index expiring in June advanced 0.4 percent to 1,551.5 at 7:24 a.m. in New York. Contracts on the Dow Jones Industrial Average climbed 39 points, or 0.3 percent, to 14,523. The S&P 500 fell 1 percent last week, for the biggest decline so far this year, as payrolls data missed economists' estimates.
"Investors may be taking this opportunity selectively to buy on this dip," Richard Hunter, head of U.K. equities at Hargreaves Lansdown Plc (HL/) in London, wrote in an e-mail. "The imminent first-quarter reporting season, which Alcoa will kick off today in the U.S., will now take on extra significance."
Alcoa Inc., the first Dow Jones Industrial Average member to publish results each quarter, was unchanged in early New York trading. Alcoa will report an 8-cent a share profit today, according to the average of 18 analysts' estimates compiled by Bloomberg. That would be two cents less than the earnings it posted in the first quarters of 2010 and 2012.
BioCryst Rallies
BioCryst Pharmaceuticals Inc. surged 18 percent to $2 in early New York trading. The stock had jumped 29 percent on April 5. China's Food and Drug Administration said it expedited the approval of Peramivir as authorities reported three more infections of the deadly H7N9 virus that has killed six people in the country since March.
Lufkin soared 38 percent to $87.97 in premarket trading in New York. General Electric, the world's biggest provider of power-generation equipment and services, said it will acquire Lufkin for about $3.3 billion or $88.50 per share.
Chuy's Holdings Inc. (CHUY), a restaurant-chain operator, may move after reporting first-quarter preliminary revenue of $46.7 million, exceeding analyst estimates of $45.2 million. Separately, Chuy's Holdings said it is offering 3 million shares on behalf of holders.
- Jonathan Morgan in Frankfurt at Bloomberg.
Tagged with: Commodity Blog • commodity charts • commodity futures • Commodity futures brokers • commodity futures news • commodity investing 101 • commodity investors blog • commodity trading platforms • discount dow futures • discount futures brokers • dow futures • dow futures blog • dow futures brokers • dow futures chart • Dow futures investing • dow futures news • dow futures prices • dow options • fain shaffer • futures quotes • futures trading platform blog • futures trading platforms


text:
Q: Python: printing the products of an element in an array I'm trying to print the product of all elements of an array with len(array) - 1. e.g. array = ['1','10','11']; so 10*11 since 10 and 11 have a length = 2.
I've written the following code but can't seem to find the issue (I keep receiving a 'None').
import numpy
def fun(array):
    length = len(array) - 1; " find length of the array "
    for i in range(0,length+1):
        if len(array[i]) == length:
            """find elements in array with len == length"""
            new_array = []
            new_array.append(array[i])
            "add these elements into a new array"
            for j in range(0,len(new_array)):
                return numpy.prod(int(new_array[j]))
                "find the product of these elements and return them"
            else: break
        else: break

Any help will be appreciated.

A: There are many issues with your code:

*

*You're re-defining new_array = [] each time inside the loop, so the previous appended items are lost.

*You should append integers instead of simple strings.

*numpy.prod can be applied to the whole array, no need of the second loop.

*The inner loop is not properly indented.

*Though this is not wrong, but in python you can iterate over the items of the array/list itself instead of using the indexes.
Working version:
import numpy
def fun(array):
    length = len(array) - 1; " find length of the array "
    new_array = []
    #iterate over the list itself.
    for item in array:
        if len(item) == length:
            new_array.append(int(item))
    return numpy.prod(new_array)

print fun(['1','10','11'])

Pure python version:
>>> from operator import mul
>>> arr =  ['1','10','11']
>>> reduce(mul, (int(x) for x in arr if len(x) == len(arr)-1))
110

A: Your first issue is that, in python, functions with no explicit return, return None. You have a return in your code, but you're getting None because the code path is not reaching the return statement (see the next issue for more on this). For example the following bad_abs function will return None if a > 0. You can fix this by making sure that there is a return statement for every code path:
def bad_abs(a):
    if a < 0:
        return -a

def good_abs(a):
    if a < 0:
        a = -a
    return a

Second, you have a break statement in the else clause of your if statement and the else clause of your inner for loop. Here is an example of how one might use the break statement correctly.
def any(array):
    return_value = False
    for item in array:
        if item == True:
            return_value = True
            break # Exit the loop and go to return
    return return_value

In your code you do not want a break, in fact breaking after the first non-length item in your array is causeing your code to reach the end of your function and return None. It doesn't seem like you need either else clause, so just take them out.
Last, you're creating an empty list, ie [], at every iteration of your loop, this is deleting the values you found in previous iterations. So you want to make sure you create new_array outside the loop (and please give it a better name).
def filter_product(array):
    filtered_array = []
    length = len(array) - 1
    for item in array:
        if len(item) == length:
            filtered_array.append(int(item))
    return numpy.prod(filtered_array)

This can be reduced to a 1 line list comprehension, but I find one liners not particularly useful for learning programming.

A: first of all your code doesn't seems very pythonic, for looping don't use range that way, the ''' are for docstring whereas # is for comments and you use break when you want continue.
In your code the code never hit the return if the first element don't have the right length. and it would have return the wrong value.
A simple solution using numpy would be (in addition to the one of @hcwhsa using mul):
import numpy
def fun(array):
    length = len(array) - 1;  # find length of the array
    return numpy.prod([int(x) for x in array if len(x) == length])

A: numbers = ['1','10','11']
product = 1
for n in numbers:
    if len(n) == 2:
        product *= int(n)
print product


The Reverend Dr. David Ratke has been named as the first Dean of the newly formed College of Theology at Lenoir-Rhyne University. The College has replaced the School of Theology at LRU and encompasses the graduate courses provided at Lutheran Theological Southern Seminary (LTSS).
Dr. Ratke is an ordained minister of the Evangelical Lutheran Church in America (ELCA). He is a distinguished scholar and teacher who specializes in systematic theology. He has been at LRU for 17 years and has held numerous leadership positions at the University and within the church. For the past four years, he has served as acting and then elected Chair of the Faculty. Prior to this appointment, he served as Chair of the School of Humanities and Social Sciences. In 2013, Dr. Ratke was awarded the LR Faculty Scholar Award which is presented annually to the faculty member who has made the greatest contribution to his/her discipline during the academic year.
In addition to his scholarly activity and commitments at LRU, he regularly serves as a supply preacher in the NC Synod. Prior to joining the LRU faculty, Dr. Ratke served parishes in Alaska, North Dakota, and Germany. He is also the author or editor of four books focusing on Lutheran theology as well as numerous other scholarly articles.
"We are pleased to welcome David to this leadership role," said University Provost Dr. Larry Hall. "We are very confident he is right person to continue to guide theological study at Lenoir-Rhyne and the LTSS, fulfilling our commitment to prepare servant leaders for the church and the world."
According to Dr. Hall, the new college is one of five at the University and will serve to strengthen the position of theological education and programming. "Through this reorganization, we are able to more fully integrate our theological programs and the important mission of Lutheran Theological Southern Seminary into the academic life at Lenoir-Rhyne University," Hall added.
For more information about opportunities available through the College of Theology and LTSS, visit lr.edu.


text:
Tetramethylguanidine is an organic compound with the formula HNC(N(CH)).  This colourless liquid is a strong base, as judged by the high pK of it conjugate acid.

It was originally prepared from tetramethylthiourea via S-methylation and amination, but alternative methods start from cyanogen iodide.

Uses
Tetramethylguanidine is mainly used as a strong, non-nucleophilic base for alkylations, often as a substitute for the more expensive DBU and DBN. Since it is highly water-soluble, it is easily removed from mixtures in organic solvents. It is also used as a base-catalyst in the production of polyurethane.

References

Guanidines
Reagents for organic chemistry
Non-nucleophilic bases


text:
package me.rerun.karafcxfcamel.service.base;

import me.rerun.karafcxfcamel.model.AgePhoneResult;

public interface AgePhoneService {

    public AgePhoneResult getAgePhoneResult(String age, String phone);
}


text:
Q: Extracting certain text in python BS4? I am trying to extract certain text in BS4. Sample HTML below.

2
Gonzaga
   1 seed, Elite Eight

current code is:
data = soup.findAll('tr', attrs={"class": "seedrow"})
team_name = item.find('td', class_ = 'teamname')
team_id = team_name.find('a').contents[0]
seed = team_name.find('span').text
print(team_id, seed)

This returns:
Gonzaga, '\xa0\xa0\xa01 seed, Elite Eight'

What I want:
Gonzaga, 1 seed, Elite Eight

A: If I understand you right, you want to extract 3 separated strings. You can use .get_text() with custom separator= character and then split on this character:
from bs4 import BeautifulSoup

txt = '''

2
Gonzaga
   1 seed, Elite Eight

'''

soup = BeautifulSoup(txt, 'html.parser')
data = soup.findAll('tr', attrs={"class": "seedrow"})

for item in data:
    team_name = item.find('td', class_ = 'teamname')

    a, b, c = team_name.get_text(strip=True, separator='|').split('|')

    print(a)
    print(b.strip(','))
    print(c)

Prints:
Gonzaga
1 seed
Elite Eight


text:
Nicaea
Nicaea (Νίκαια, modern İznik), a Bithynian city located on Lake Ascanius, was one of the most important Byzantine cities. It served as the capital of the empire in exile and was the seat of two ecumenical councils.
It prospered from its location on major trade and military routes and its control of a fertile region. In late antiquity, it was a large, powerfully fortified city filled with civic and private buildings laid out on a regular plan. It was a major military base—site of the proclamation of Valens as emperor and of the revolt of Prokopios - and seat of an imperial treasury where tax revenues were deposited. Earthquakes in 363 and 368 combined with the growth of Constantinople provoked decline, but were later rebuilt by Justinian I. During these centuries, the church of Nicaea flourished: Valens made it a metropolis independent of its ancient rival Nicomedia, conflicts between the two sees flared at the Council of Chalcedon, originally planned to meet in Nicaea. After a period of obscurity, Nicaea frequently appears in the 8th century and later as a powerful fortress. In 715, it was the refuge for Emperor Anastasius II, and in 716 and 727 it resisted Arab attack. It was a major bulwark on the highway that led to Constantinople. Damage from the siege of 727 was compounded by an earthquake in 740. Nicaea, base for the revolt of Artabasdos, became capital of Opsician theme in the 8th C. In the 10th C., Nicaea was a center of administration and trade, with a Jewish community and an imperial xenodocheion. Rebels sought to control it as a strong point near Constantinople: Bardas Skleros, Isaac I Komnenos, Nikephoros III Botaneiates and Nikephoros Melissenos all fought in and around Nicaea. When Melissenos joined Alexios I in the West in 1081, he left Nicaea to his Turkish allies, who soon assumed control. Nicaea was thus capital of the first Turkish state in Asia Minor until the First Crusade captured it in 1097 after a long siege, their first victory in Asia and the only time in history that Nicaea succumbed to direct assault rather than blockade. Alexios I took control of Nicaea from the reluctant Crusaders and defended it against the Turks. In 1147, Nicaea was the supply base for the abortive Second Crusade and in 1187 unsuccessfully revolted against Andronikos I.
After the fall of Constantinople in 1204, Nicaea at first took an independent position, but recognized Theodore I Laskaris in 1206; he was crowned there in 1208. From that date until 1261 Nicaea served as capital of the empire, although John III Vatatzes resided in Nymphaion and Magnesia; it was also the seat of the patriarch and home of many illustrious refugees, notably Niketas Choniates, Nicholas Mesarites, and Nikephoros Blemmydes. Laskarid Nicaea was the scene of frequent synods, embassies, and imperial weddings and funerals and became a center of education, notably under Theodore II Laskaris, who founded and endowed an imperial school. After the recapture of Constantinople, Nicaea declined in importance and prosperity. Neglect of the eastern frontier provoked a serious revolt in the region in 1262, and in 1265 the whole city panicked on rumor of a Mongol attack. In 1290 Andronikos II arrived on a tour of inspection and restored the walls, but the region remained defenseless against a new foe, Osman. Nicaea held out until 1331, when it fell to the Ottomans after a long blockade. When Gregory Palamas visited Nicaea in 1354, its Christian population was severely depleted.
The well-preserved walls of Nicaea, completed in 270, manifest numerous styles of construction representing constant rebuilding, notably in the 8th, 9th, 12th, and 13th century. Originally a single rampart 5 km long with So towers, built of rubble and brick, the walls were raised and strengthened before being transformed by John III, who added an outer wall and a moat. The most noted of Nicaea's churches was the monastery of Hyakinthos, known in modern times as the Church of Koimesis. A rectangular structure with a cruciform nave surmounted by a dome on massive pillars and separated from the aisles by arcades, it manifests affinities with a group of cross-domed basilicas and appears to date to the late 6th century. The church was decorated with mosaics whose images, replaced by the Iconoclasts, were restored after 843. It was rebuilt and redecorated after the earthquake of 1065 and stood until 1924. The surviving basilica of Hagia Sophia in the center of the city, probably site of the council of 787, preserves traces of its elaborate marble decoration. Most renowned in the 13th century was the Church of St. Tryphon, which possibly was recently discovered. Two 13th-century other churches, known as "Church B" and "Church C", have not been identified. Civic buildings have not been preserved, with the exception of the Roman theater, abandoned and used as a quarry and dump after the 7th century. The 13th-century city is known in some detail, from the enkomia of Theodore Laskaris, delivered before John III ca.1250, and of Theodore Metochites, addressed to Andronikos II in 1290. Although the speeches are filled with extravagant rhetoric, they give an image of the city in its regional context and show that churches, monasteries, charitable institutions, palaces, and houses shared the area within the walls with extensive open spaces.
Walls of Nicaea
Church of Koimesis
Church of St. Tryphon
The Church of St. Tryphon was building in Nicaea (modern İznik) built during the reign of Theodore II Laskaris (1254-1258). St. Tryphon was of special important to Theodore II, who won an important battle on the opposite side of the Dardanelles after the saint appeared to him in a dream. The emperor established a new school there and became an important pilgrimage site at the time. It then vanished from history, until remains of a church were unearthed near the northern gate in 1947. It had cross-in-square plan with four central columns supporting a dome, triple apse, and a narthex. It measured around 12 x 22 m and was constructed of mortared rubble with bands of brick. It has been argued that the adjacent ruins, which suggested that the church had a series of side rooms, belong to the school built during the reign of Theodore II.
Hypothetical plan by Foss
Church B
Church B is located near the Roman theater in Nicaea (modern İznik). The remains only consist of vaulted substructures, but allow for a reconstruction of the church. It was 18x12 m with a single apse and a narthex and probably had a cross-in-square plan. It dates to the Laskarid era (1204-1261).
Plan by Foss
Church C
The ruins of "Church C" are located in Nicaea (modern İznik). The church stood by the main street just north of the southern gate. It was around 22x18 m. It had a large dome, with a narthex, two side aisles, and a triple apse. It dates to the Laskarid era (1204-1261).
Lake Basilica
The remains of a Late Antique basilica were discovered in 2014 in the lake about 20 meters from the shore of modern İznik (ancient Nicaea). It had a narthex and an atrium and was flanked by two rooms, one of which contains a sarcophagus. The basilica, which is surrounded by graves, has tentatively been identified with achurch for St. Neophytus of Nicaea. It was possibly destroyed either in the earthquake of 740 or 1065.
Hadrian Aqueduct
Justinianic Bridge
Constantinople Gate Photo by Paolo Monti (1962)
Photo by Guillaume Berggren (1870s-1880s)
Photo of Constantinople Gate by Guillaume Berggren (1870s-1880s)
Constantinople Gate by Charles Texier (1882)
Lefke Gate by Charles Texier (1882)
Yenişehir Gate by Charles Texier (1882)
General view of Nicaea by Léon de Laborde (1838)
Lefke Gate by Léon de Laborde (1838)
Constantinople Gate by Léon de Laborde (1838)
Nicaea as depicted in the Nuremberg Chronicle (1493)
Nicaea: A Byzantine Capital and Its Praises by Clive Foss
The Archaeology of Byzantine Anatolia: From the End of Late Antiquity until the Coming of the Turks edited by P. Niewohner
Byzantine Architecture by Cyril Mango
Early Christian and Byzantine Architecture by Richard Krautheimer
Oxford Dictionary of Byzantium edited by Alexander Kazhdan
Nicaea Album (Byzantine Legacy Flickr)
Hagia Sophia in Nicaea Album (Byzantine Legacy Flickr)
David Talbot-Rice in Nicaea (BEMA)
The Byzantine Legacy
Byzantine Cities
Çiftesaraylar
Ritzion
Created by David Hendrix Copyright 2016


Last night, the Sacramento County Young Democrats (SCYD) held 2015 executive board elections.
SCYD meetings are held on the first Wednesday of each month at 6:00 pm at SEIU California, located at 1130 K Street, Suite 300.
The Sacramento County Young Democrats (SCYD) have endorsed Ali Cooper for Sacramento City Council District 5.
The Sacramento County Young Democrats (SCYD) announced their endorsement of Nancy Chaires for Elk Grove City Council District 4.
Nancy, a graduate of Whittier College and Harvard University, became the youngest person and first woman ever appointed to the Elk Grove Planning Commission in 2008. She maintains an active role in the Elk Grove community, serving as a member of the Community Advisory Committee at Franklin High School, as a Lector at St. Joseph's Church, and on various boards dedicated to youth development and women's leadership. Nancy resides in Elk Grove with her husband and son.
For more information, please visit http://nancychaires.com/.


Buy a wall scroll with Libby in Chinese or Japanese.
We've carefully transliterated the name Libby into Mandarin Chinese and Japanese Katakana. Click a button below to see many custom calligraphy artwork options for Libby.
Libby in Chinese Characters / Symbols / Letters / Words / Glyphs This is the transliteration to Mandarin Chinese for the name Libby. All of our calligraphy is completely done by hand in the ancient way.
Libby : The Meaning of The Name Libby The meaning of the baby name Libby is Diminutive of Elizabeth.
"Libby" in Chinese, calligraphy, pronunciation. Your name in English, Chinese character, Pinyin pronunciation and Calligraphy.
MO Libertarian Party Seeks to Gain Statue of Liberty Ballot ... The symbol replaces "Libby Belle", our Missouri mule, which had served while Missouri Democrats used their "Goddess of Liberty" as their symbol.
Scooter Libby: Best Samaritan Ever | The American Prospect ... symbol identifies content for paid subscribers only.