The Canadian Cattle Identification Agency hopes to determine whether RFID technology would provide more benefits than hindrances for Canadian cattle auctions.
Nov 05, 2009—The Canadian Cattle Identification Agency (CCIA), a nonprofit industry-led group established to protect the safety and health of cattle and beef, is testing whether current RFID technology can provide reliable read rates without slowing the operations at cattle auction markets. CCIA's membership consists of trade organizations representing livestock producers and meat processors, as well as related organizations, including the Livestock Marketing Association of Canada (LMAC), which represents the interests of auction markets, and the Canadian Veterinary Medical Association.
The Canadian Food Inspection Agency and the CCIA recommend that the Canadian cattle industry install RFID interrogators at all 250 of the nation's auction marketplaces by the end of 2011, according to Rick Wright, the chairman of the CCIA steering committee for the Auction Market Applied Research Project. Such a deployment, he says, would automate the tracking of each animal's arrival and departure. Before that can happen, however, the industry must be convinced the technology is ready.
The results of the Auction Market Applied Research Project testing will be made available to the public after February 2010.
CCIA will test RFID interrogators that can read 134.2 kHz passive RFID tags complying with the ISO 11784 and 11785 standards. Three vendors have provided readers for the study: Destron Fearing, Aleis International and Allflex USA. While several other vendors offer readers that could have been tested, Wright explains, the group chose only those three because they were able to provide support services, such as consulting assistance with the installations.
The study started in mid-September, when CCIA began equipping eight cattle auction markets across Canada this fall. The organization also brought in three auction markets to the project that already had interrogators in place, in order to test a variety of reader installations at small, midsize and large cattle auctions. Once the study is completed, in mid-December, CCIA hopes to be able to judge whether existing RFID technology offers adequate read rates, yields a reasonable cost-benefit ratio (that is, it offers users a return on investment within several years) and does not hamper operations by slowing down the movement of cattle. CCIA's staff will measure read rates, as well as determine which conditions read rates may increase or decrease. The staff will also measure the rate at which cattle travel through chutes, with and without the technology, thereby determining how much RFID readers may slow down the process.
To launch the program, the Livestock Marketing Association of Canada sent a request for participant volunteers to its members. The 11 selected represent multiple geographic areas (exposed to varying weather conditions) and multiple sizes of operation, as well as different kinds of cattle. The auction sites are located in British Columbia, Saskatchewan, Manitoba and Ontario. The size ranges from sites that can accommodate 20,000 cattle to those with the capacity for more than 100,000.


text:
desc 'bandage' do
  latest = github('rrwick', 'Bandage').first
  version = latest.tag_name.gsub(/^v/, '')
  url = latest.assets.first.browser_download_url
  Latest.new(version: version, url: url)
end

redpajama_set_name: RedPajamaGithub


text:
import sys
import unittest
from test.support import run_unittest, TESTFN, unlink, cpython_only
import pickle
import collections.abc

# Test result of triple loop (too big to inline)
TRIPLETS = [(0, 0, 0), (0, 0, 1), (0, 0, 2),
            (0, 1, 0), (0, 1, 1), (0, 1, 2),
            (0, 2, 0), (0, 2, 1), (0, 2, 2),

            (1, 0, 0), (1, 0, 1), (1, 0, 2),
            (1, 1, 0), (1, 1, 1), (1, 1, 2),
            (1, 2, 0), (1, 2, 1), (1, 2, 2),

            (2, 0, 0), (2, 0, 1), (2, 0, 2),
            (2, 1, 0), (2, 1, 1), (2, 1, 2),
            (2, 2, 0), (2, 2, 1), (2, 2, 2)]

# Helper classes

class BasicIterClass:
    def __init__(self, n):
        self.n = n
        self.i = 0
    def __next__(self):
        res = self.i
        if res >= self.n:
            raise StopIteration
        self.i = res + 1
        return res
    def __iter__(self):
        return self

class IteratingSequenceClass:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        return BasicIterClass(self.n)

class SequenceClass:
    def __init__(self, n):
        self.n = n
    def __getitem__(self, i):
        if 0 <= i < self.n:
            return i
        else:
            raise IndexError

class UnlimitedSequenceClass:
    def __getitem__(self, i):
        return i

# Main test suite

class TestCase(unittest.TestCase):

    # Helper to check that an iterator returns a given sequence
    def check_iterator(self, it, seq, pickle=True):
        if pickle:
            self.check_pickle(it, seq)
        res = []
        while 1:
            try:
                val = next(it)
            except StopIteration:
                break
            res.append(val)
        self.assertEqual(res, seq)

    # Helper to check that a for loop generates a given sequence
    def check_for_loop(self, expr, seq, pickle=True):
        if pickle:
            self.check_pickle(iter(expr), seq)
        res = []
        for val in expr:
            res.append(val)
        self.assertEqual(res, seq)

    # Helper to check picklability
    def check_pickle(self, itorg, seq):
        for proto in range(pickle.HIGHEST_PROTOCOL + 1):
            d = pickle.dumps(itorg, proto)
            it = pickle.loads(d)
            # Cannot assert type equality because dict iterators unpickle as list
            # iterators.
            # self.assertEqual(type(itorg), type(it))
            self.assertTrue(isinstance(it, collections.abc.Iterator))
            self.assertEqual(list(it), seq)

            it = pickle.loads(d)
            try:
                next(it)
            except StopIteration:
                continue
            d = pickle.dumps(it, proto)
            it = pickle.loads(d)
            self.assertEqual(list(it), seq[1:])

    # Test basic use of iter() function
    def test_iter_basic(self):
        self.check_iterator(iter(range(10)), list(range(10)))

    # Test that iter(iter(x)) is the same as iter(x)
    def test_iter_idempotency(self):
        seq = list(range(10))
        it = iter(seq)
        it2 = iter(it)
        self.assertTrue(it is it2)

    # Test that for loops over iterators work
    def test_iter_for_loop(self):
        self.check_for_loop(iter(range(10)), list(range(10)))

    # Test several independent iterators over the same list
    def test_iter_independence(self):
        seq = range(3)
        res = []
        for i in iter(seq):
            for j in iter(seq):
                for k in iter(seq):
                    res.append((i, j, k))
        self.assertEqual(res, TRIPLETS)

    # Test triple list comprehension using iterators
    def test_nested_comprehensions_iter(self):
        seq = range(3)
        res = [(i, j, k)
               for i in iter(seq) for j in iter(seq) for k in iter(seq)]
        self.assertEqual(res, TRIPLETS)

    # Test triple list comprehension without iterators
    def test_nested_comprehensions_for(self):
        seq = range(3)
        res = [(i, j, k) for i in seq for j in seq for k in seq]
        self.assertEqual(res, TRIPLETS)

    # Test a class with __iter__ in a for loop
    def test_iter_class_for(self):
        self.check_for_loop(IteratingSequenceClass(10), list(range(10)))

    # Test a class with __iter__ with explicit iter()
    def test_iter_class_iter(self):
        self.check_iterator(iter(IteratingSequenceClass(10)), list(range(10)))

    # Test for loop on a sequence class without __iter__
    def test_seq_class_for(self):
        self.check_for_loop(SequenceClass(10), list(range(10)))

    # Test iter() on a sequence class without __iter__
    def test_seq_class_iter(self):
        self.check_iterator(iter(SequenceClass(10)), list(range(10)))

    # Test a new_style class with __iter__ but no next() method
    def test_new_style_iter_class(self):
        class IterClass(object):
            def __iter__(self):
                return self
        self.assertRaises(TypeError, iter, IterClass())

    # Test two-argument iter() with callable instance
    def test_iter_callable(self):
        class C:
            def __init__(self):
                self.i = 0
            def __call__(self):
                i = self.i
                self.i = i + 1
                if i > 100:
                    raise IndexError # Emergency stop
                return i
        self.check_iterator(iter(C(), 10), list(range(10)), pickle=False)

    # Test two-argument iter() with function
    def test_iter_function(self):
        def spam(state=[0]):
            i = state[0]
            state[0] = i+1
            return i
        self.check_iterator(iter(spam, 10), list(range(10)), pickle=False)

    # Test two-argument iter() with function that raises StopIteration
    def test_iter_function_stop(self):
        def spam(state=[0]):
            i = state[0]
            if i == 10:
                raise StopIteration
            state[0] = i+1
            return i
        self.check_iterator(iter(spam, 20), list(range(10)), pickle=False)

    # Test exception propagation through function iterator
    def test_exception_function(self):
        def spam(state=[0]):
            i = state[0]
            state[0] = i+1
            if i == 10:
                raise RuntimeError
            return i
        res = []
        try:
            for x in iter(spam, 20):
                res.append(x)
        except RuntimeError:
            self.assertEqual(res, list(range(10)))
        else:
            self.fail("should have raised RuntimeError")

    # Test exception propagation through sequence iterator
    def test_exception_sequence(self):
        class MySequenceClass(SequenceClass):
            def __getitem__(self, i):
                if i == 10:
                    raise RuntimeError
                return SequenceClass.__getitem__(self, i)
        res = []
        try:
            for x in MySequenceClass(20):
                res.append(x)
        except RuntimeError:
            self.assertEqual(res, list(range(10)))
        else:
            self.fail("should have raised RuntimeError")

    # Test for StopIteration from __getitem__
    def test_stop_sequence(self):
        class MySequenceClass(SequenceClass):
            def __getitem__(self, i):
                if i == 10:
                    raise StopIteration
                return SequenceClass.__getitem__(self, i)
        self.check_for_loop(MySequenceClass(20), list(range(10)), pickle=False)

    # Test a big range
    def test_iter_big_range(self):
        self.check_for_loop(iter(range(10000)), list(range(10000)))

    # Test an empty list
    def test_iter_empty(self):
        self.check_for_loop(iter([]), [])

    # Test a tuple
    def test_iter_tuple(self):
        self.check_for_loop(iter((0,1,2,3,4,5,6,7,8,9)), list(range(10)))

    # Test a range
    def test_iter_range(self):
        self.check_for_loop(iter(range(10)), list(range(10)))

    # Test a string
    def test_iter_string(self):
        self.check_for_loop(iter("abcde"), ["a", "b", "c", "d", "e"])

    # Test a directory
    def test_iter_dict(self):
        dict = {}
        for i in range(10):
            dict[i] = None
        self.check_for_loop(dict, list(dict.keys()))

    # Test a file
    def test_iter_file(self):
        f = open(TESTFN, "w")
        try:
            for i in range(5):
                f.write("%d\n" % i)
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.check_for_loop(f, ["0\n", "1\n", "2\n", "3\n", "4\n"], pickle=False)
            self.check_for_loop(f, [], pickle=False)
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test list()'s use of iterators.
    def test_builtin_list(self):
        self.assertEqual(list(SequenceClass(5)), list(range(5)))
        self.assertEqual(list(SequenceClass(0)), [])
        self.assertEqual(list(()), [])

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(list(d), list(d.keys()))

        self.assertRaises(TypeError, list, list)
        self.assertRaises(TypeError, list, 42)

        f = open(TESTFN, "w")
        try:
            for i in range(5):
                f.write("%d\n" % i)
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.assertEqual(list(f), ["0\n", "1\n", "2\n", "3\n", "4\n"])
            f.seek(0, 0)
            self.assertEqual(list(f),
                             ["0\n", "1\n", "2\n", "3\n", "4\n"])
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test tuples()'s use of iterators.
    def test_builtin_tuple(self):
        self.assertEqual(tuple(SequenceClass(5)), (0, 1, 2, 3, 4))
        self.assertEqual(tuple(SequenceClass(0)), ())
        self.assertEqual(tuple([]), ())
        self.assertEqual(tuple(()), ())
        self.assertEqual(tuple("abc"), ("a", "b", "c"))

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(tuple(d), tuple(d.keys()))

        self.assertRaises(TypeError, tuple, list)
        self.assertRaises(TypeError, tuple, 42)

        f = open(TESTFN, "w")
        try:
            for i in range(5):
                f.write("%d\n" % i)
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.assertEqual(tuple(f), ("0\n", "1\n", "2\n", "3\n", "4\n"))
            f.seek(0, 0)
            self.assertEqual(tuple(f),
                             ("0\n", "1\n", "2\n", "3\n", "4\n"))
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test filter()'s use of iterators.
    def test_builtin_filter(self):
        self.assertEqual(list(filter(None, SequenceClass(5))),
                         list(range(1, 5)))
        self.assertEqual(list(filter(None, SequenceClass(0))), [])
        self.assertEqual(list(filter(None, ())), [])
        self.assertEqual(list(filter(None, "abc")), ["a", "b", "c"])

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(list(filter(None, d)), list(d.keys()))

        self.assertRaises(TypeError, filter, None, list)
        self.assertRaises(TypeError, filter, None, 42)

        class Boolean:
            def __init__(self, truth):
                self.truth = truth
            def __bool__(self):
                return self.truth
        bTrue = Boolean(True)
        bFalse = Boolean(False)

        class Seq:
            def __init__(self, *args):
                self.vals = args
            def __iter__(self):
                class SeqIter:
                    def __init__(self, vals):
                        self.vals = vals
                        self.i = 0
                    def __iter__(self):
                        return self
                    def __next__(self):
                        i = self.i
                        self.i = i + 1
                        if i < len(self.vals):
                            return self.vals[i]
                        else:
                            raise StopIteration
                return SeqIter(self.vals)

        seq = Seq(*([bTrue, bFalse] * 25))
        self.assertEqual(list(filter(lambda x: not x, seq)), [bFalse]*25)
        self.assertEqual(list(filter(lambda x: not x, iter(seq))), [bFalse]*25)

    # Test max() and min()'s use of iterators.
    def test_builtin_max_min(self):
        self.assertEqual(max(SequenceClass(5)), 4)
        self.assertEqual(min(SequenceClass(5)), 0)
        self.assertEqual(max(8, -1), 8)
        self.assertEqual(min(8, -1), -1)

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(max(d), "two")
        self.assertEqual(min(d), "one")
        self.assertEqual(max(d.values()), 3)
        self.assertEqual(min(iter(d.values())), 1)

        f = open(TESTFN, "w")
        try:
            f.write("medium line\n")
            f.write("xtra large line\n")
            f.write("itty-bitty line\n")
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.assertEqual(min(f), "itty-bitty line\n")
            f.seek(0, 0)
            self.assertEqual(max(f), "xtra large line\n")
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test map()'s use of iterators.
    def test_builtin_map(self):
        self.assertEqual(list(map(lambda x: x+1, SequenceClass(5))),
                         list(range(1, 6)))

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(list(map(lambda k, d=d: (k, d[k]), d)),
                         list(d.items()))
        dkeys = list(d.keys())
        expected = [(i < len(d) and dkeys[i] or None,
                     i,
                     i < len(d) and dkeys[i] or None)
                    for i in range(3)]

        f = open(TESTFN, "w")
        try:
            for i in range(10):
                f.write("xy" * i + "\n") # line i has len 2*i+1
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.assertEqual(list(map(len, f)), list(range(1, 21, 2)))
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test zip()'s use of iterators.
    def test_builtin_zip(self):
        self.assertEqual(list(zip()), [])
        self.assertEqual(list(zip(*[])), [])
        self.assertEqual(list(zip(*[(1, 2), 'ab'])), [(1, 'a'), (2, 'b')])

        self.assertRaises(TypeError, zip, None)
        self.assertRaises(TypeError, zip, range(10), 42)
        self.assertRaises(TypeError, zip, range(10), zip)

        self.assertEqual(list(zip(IteratingSequenceClass(3))),
                         [(0,), (1,), (2,)])
        self.assertEqual(list(zip(SequenceClass(3))),
                         [(0,), (1,), (2,)])

        d = {"one": 1, "two": 2, "three": 3}
        self.assertEqual(list(d.items()), list(zip(d, d.values())))

        # Generate all ints starting at constructor arg.
        class IntsFrom:
            def __init__(self, start):
                self.i = start

            def __iter__(self):
                return self

            def __next__(self):
                i = self.i
                self.i = i+1
                return i

        f = open(TESTFN, "w")
        try:
            f.write("a\n" "bbb\n" "cc\n")
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            self.assertEqual(list(zip(IntsFrom(0), f, IntsFrom(-100))),
                             [(0, "a\n", -100),
                              (1, "bbb\n", -99),
                              (2, "cc\n", -98)])
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

        self.assertEqual(list(zip(range(5))), [(i,) for i in range(5)])

        # Classes that lie about their lengths.
        class NoGuessLen5:
            def __getitem__(self, i):
                if i >= 5:
                    raise IndexError
                return i

        class Guess3Len5(NoGuessLen5):
            def __len__(self):
                return 3

        class Guess30Len5(NoGuessLen5):
            def __len__(self):
                return 30

        def lzip(*args):
            return list(zip(*args))

        self.assertEqual(len(Guess3Len5()), 3)
        self.assertEqual(len(Guess30Len5()), 30)
        self.assertEqual(lzip(NoGuessLen5()), lzip(range(5)))
        self.assertEqual(lzip(Guess3Len5()), lzip(range(5)))
        self.assertEqual(lzip(Guess30Len5()), lzip(range(5)))

        expected = [(i, i) for i in range(5)]
        for x in NoGuessLen5(), Guess3Len5(), Guess30Len5():
            for y in NoGuessLen5(), Guess3Len5(), Guess30Len5():
                self.assertEqual(lzip(x, y), expected)

    def test_unicode_join_endcase(self):

        # This class inserts a Unicode object into its argument's natural
        # iteration, in the 3rd position.
        class OhPhooey:
            def __init__(self, seq):
                self.it = iter(seq)
                self.i = 0

            def __iter__(self):
                return self

            def __next__(self):
                i = self.i
                self.i = i+1
                if i == 2:
                    return "fooled you!"
                return next(self.it)

        f = open(TESTFN, "w")
        try:
            f.write("a\n" + "b\n" + "c\n")
        finally:
            f.close()

        f = open(TESTFN, "r")
        # Nasty:  string.join(s) can't know whether unicode.join() is needed
        # until it's seen all of s's elements.  But in this case, f's
        # iterator cannot be restarted.  So what we're testing here is
        # whether string.join() can manage to remember everything it's seen
        # and pass that on to unicode.join().
        try:
            got = " - ".join(OhPhooey(f))
            self.assertEqual(got, "a\n - b\n - fooled you! - c\n")
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test iterators with 'x in y' and 'x not in y'.
    def test_in_and_not_in(self):
        for sc5 in IteratingSequenceClass(5), SequenceClass(5):
            for i in range(5):
                self.assertIn(i, sc5)
            for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5:
                self.assertNotIn(i, sc5)

        self.assertRaises(TypeError, lambda: 3 in 12)
        self.assertRaises(TypeError, lambda: 3 not in map)

        d = {"one": 1, "two": 2, "three": 3, 1j: 2j}
        for k in d:
            self.assertIn(k, d)
            self.assertNotIn(k, d.values())
        for v in d.values():
            self.assertIn(v, d.values())
            self.assertNotIn(v, d)
        for k, v in d.items():
            self.assertIn((k, v), d.items())
            self.assertNotIn((v, k), d.items())

        f = open(TESTFN, "w")
        try:
            f.write("a\n" "b\n" "c\n")
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            for chunk in "abc":
                f.seek(0, 0)
                self.assertNotIn(chunk, f)
                f.seek(0, 0)
                self.assertIn((chunk + "\n"), f)
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test iterators with operator.countOf (PySequence_Count).
    def test_countOf(self):
        from operator import countOf
        self.assertEqual(countOf([1,2,2,3,2,5], 2), 3)
        self.assertEqual(countOf((1,2,2,3,2,5), 2), 3)
        self.assertEqual(countOf("122325", "2"), 3)
        self.assertEqual(countOf("122325", "6"), 0)

        self.assertRaises(TypeError, countOf, 42, 1)
        self.assertRaises(TypeError, countOf, countOf, countOf)

        d = {"one": 3, "two": 3, "three": 3, 1j: 2j}
        for k in d:
            self.assertEqual(countOf(d, k), 1)
        self.assertEqual(countOf(d.values(), 3), 3)
        self.assertEqual(countOf(d.values(), 2j), 1)
        self.assertEqual(countOf(d.values(), 1j), 0)

        f = open(TESTFN, "w")
        try:
            f.write("a\n" "b\n" "c\n" "b\n")
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            for letter, count in ("a", 1), ("b", 2), ("c", 1), ("d", 0):
                f.seek(0, 0)
                self.assertEqual(countOf(f, letter + "\n"), count)
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test iterators with operator.indexOf (PySequence_Index).
    def test_indexOf(self):
        from operator import indexOf
        self.assertEqual(indexOf([1,2,2,3,2,5], 1), 0)
        self.assertEqual(indexOf((1,2,2,3,2,5), 2), 1)
        self.assertEqual(indexOf((1,2,2,3,2,5), 3), 3)
        self.assertEqual(indexOf((1,2,2,3,2,5), 5), 5)
        self.assertRaises(ValueError, indexOf, (1,2,2,3,2,5), 0)
        self.assertRaises(ValueError, indexOf, (1,2,2,3,2,5), 6)

        self.assertEqual(indexOf("122325", "2"), 1)
        self.assertEqual(indexOf("122325", "5"), 5)
        self.assertRaises(ValueError, indexOf, "122325", "6")

        self.assertRaises(TypeError, indexOf, 42, 1)
        self.assertRaises(TypeError, indexOf, indexOf, indexOf)

        f = open(TESTFN, "w")
        try:
            f.write("a\n" "b\n" "c\n" "d\n" "e\n")
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            fiter = iter(f)
            self.assertEqual(indexOf(fiter, "b\n"), 1)
            self.assertEqual(indexOf(fiter, "d\n"), 1)
            self.assertEqual(indexOf(fiter, "e\n"), 0)
            self.assertRaises(ValueError, indexOf, fiter, "a\n")
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

        iclass = IteratingSequenceClass(3)
        for i in range(3):
            self.assertEqual(indexOf(iclass, i), i)
        self.assertRaises(ValueError, indexOf, iclass, -1)

    # Test iterators with file.writelines().
    def test_writelines(self):
        f = open(TESTFN, "w")

        try:
            self.assertRaises(TypeError, f.writelines, None)
            self.assertRaises(TypeError, f.writelines, 42)

            f.writelines(["1\n", "2\n"])
            f.writelines(("3\n", "4\n"))
            f.writelines({'5\n': None})
            f.writelines({})

            # Try a big chunk too.
            class Iterator:
                def __init__(self, start, finish):
                    self.start = start
                    self.finish = finish
                    self.i = self.start

                def __next__(self):
                    if self.i >= self.finish:
                        raise StopIteration
                    result = str(self.i) + '\n'
                    self.i += 1
                    return result

                def __iter__(self):
                    return self

            class Whatever:
                def __init__(self, start, finish):
                    self.start = start
                    self.finish = finish

                def __iter__(self):
                    return Iterator(self.start, self.finish)

            f.writelines(Whatever(6, 6+2000))
            f.close()

            f = open(TESTFN)
            expected = [str(i) + "\n" for i in range(1, 2006)]
            self.assertEqual(list(f), expected)

        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

    # Test iterators on RHS of unpacking assignments.
    def test_unpack_iter(self):
        a, b = 1, 2
        self.assertEqual((a, b), (1, 2))

        a, b, c = IteratingSequenceClass(3)
        self.assertEqual((a, b, c), (0, 1, 2))

        try:    # too many values
            a, b = IteratingSequenceClass(3)
        except ValueError:
            pass
        else:
            self.fail("should have raised ValueError")

        try:    # not enough values
            a, b, c = IteratingSequenceClass(2)
        except ValueError:
            pass
        else:
            self.fail("should have raised ValueError")

        try:    # not iterable
            a, b, c = len
        except TypeError:
            pass
        else:
            self.fail("should have raised TypeError")

        a, b, c = {1: 42, 2: 42, 3: 42}.values()
        self.assertEqual((a, b, c), (42, 42, 42))

        f = open(TESTFN, "w")
        lines = ("a\n", "bb\n", "ccc\n")
        try:
            for line in lines:
                f.write(line)
        finally:
            f.close()
        f = open(TESTFN, "r")
        try:
            a, b, c = f
            self.assertEqual((a, b, c), lines)
        finally:
            f.close()
            try:
                unlink(TESTFN)
            except OSError:
                pass

        (a, b), (c,) = IteratingSequenceClass(2), {42: 24}
        self.assertEqual((a, b, c), (0, 1, 42))

    @cpython_only
    def test_ref_counting_behavior(self):
        class C(object):
            count = 0
            def __new__(cls):
                cls.count += 1
                return object.__new__(cls)
            def __del__(self):
                cls = self.__class__
                assert cls.count > 0
                cls.count -= 1
        x = C()
        self.assertEqual(C.count, 1)
        del x
        self.assertEqual(C.count, 0)
        l = [C(), C(), C()]
        self.assertEqual(C.count, 3)
        try:
            a, b = iter(l)
        except ValueError:
            pass
        del l
        self.assertEqual(C.count, 0)

    # Make sure StopIteration is a "sink state".
    # This tests various things that weren't sink states in Python 2.2.1,
    # plus various things that always were fine.

    def test_sinkstate_list(self):
        # This used to fail
        a = list(range(5))
        b = iter(a)
        self.assertEqual(list(b), list(range(5)))
        a.extend(range(5, 10))
        self.assertEqual(list(b), [])

    def test_sinkstate_tuple(self):
        a = (0, 1, 2, 3, 4)
        b = iter(a)
        self.assertEqual(list(b), list(range(5)))
        self.assertEqual(list(b), [])

    def test_sinkstate_string(self):
        a = "abcde"
        b = iter(a)
        self.assertEqual(list(b), ['a', 'b', 'c', 'd', 'e'])
        self.assertEqual(list(b), [])

    def test_sinkstate_sequence(self):
        # This used to fail
        a = SequenceClass(5)
        b = iter(a)
        self.assertEqual(list(b), list(range(5)))
        a.n = 10
        self.assertEqual(list(b), [])

    def test_sinkstate_callable(self):
        # This used to fail
        def spam(state=[0]):
            i = state[0]
            state[0] = i+1
            if i == 10:
                raise AssertionError("shouldn't have gotten this far")
            return i
        b = iter(spam, 5)
        self.assertEqual(list(b), list(range(5)))
        self.assertEqual(list(b), [])

    def test_sinkstate_dict(self):
        # XXX For a more thorough test, see towards the end of:
        # http://mail.python.org/pipermail/python-dev/2002-July/026512.html
        a = {1:1, 2:2, 0:0, 4:4, 3:3}
        for b in iter(a), a.keys(), a.items(), a.values():
            b = iter(a)
            self.assertEqual(len(list(b)), 5)
            self.assertEqual(list(b), [])

    def test_sinkstate_yield(self):
        def gen():
            for i in range(5):
                yield i
        b = gen()
        self.assertEqual(list(b), list(range(5)))
        self.assertEqual(list(b), [])

    def test_sinkstate_range(self):
        a = range(5)
        b = iter(a)
        self.assertEqual(list(b), list(range(5)))
        self.assertEqual(list(b), [])

    def test_sinkstate_enumerate(self):
        a = range(5)
        e = enumerate(a)
        b = iter(e)
        self.assertEqual(list(b), list(zip(range(5), range(5))))
        self.assertEqual(list(b), [])

    def test_3720(self):
        # Avoid a crash, when an iterator deletes its next() method.
        class BadIterator(object):
            def __iter__(self):
                return self
            def __next__(self):
                del BadIterator.__next__
                return 1

        try:
            for i in BadIterator() :
                pass
        except TypeError:
            pass

    def test_extending_list_with_iterator_does_not_segfault(self):
        # The code to extend a list with an iterator has a fair
        # amount of nontrivial logic in terms of guessing how
        # much memory to allocate in advance, "stealing" refs,
        # and then shrinking at the end.  This is a basic smoke
        # test for that scenario.
        def gen():
            for i in range(500):
                yield i
        lst = [0] * 500
        for i in range(240):
            lst.pop(0)
        lst.extend(gen())
        self.assertEqual(len(lst), 760)

    @cpython_only
    def test_iter_overflow(self):
        # Test for the issue 22939
        it = iter(UnlimitedSequenceClass())
        # Manually set `it_index` to PY_SSIZE_T_MAX-2 without a loop
        it.__setstate__(sys.maxsize - 2)
        self.assertEqual(next(it), sys.maxsize - 2)
        self.assertEqual(next(it), sys.maxsize - 1)
        with self.assertRaises(OverflowError):
            next(it)
        # Check that Overflow error is always raised
        with self.assertRaises(OverflowError):
            next(it)

    def test_iter_neg_setstate(self):
        it = iter(UnlimitedSequenceClass())
        it.__setstate__(-42)
        self.assertEqual(next(it), 0)
        self.assertEqual(next(it), 1)

def test_main():
    run_unittest(TestCase)

if __name__ == "__main__":
    test_main()


text:
Q: How do I handle Google DLP rate limiting when using the Java library? At one point when doing some testing with the Google DLP Java library, I got an exception that indicated that I had exceeded the API rate limit. Unfortunately I don't have the stack trace anymore, so I can't give any more detail at this point. However, it made me realize that I'm not handling that situation in the code. What is the recommended way of dealing with this from a Java application? I haven't seen any examples in the GitHub repo that gives any guidance on this. I'm aware of the ability to request quota increases, and I have already put in a request. My question is on how to gracefully handle this in the code, should I run into the quota exceeded situation again. Thanks.

A: It depends greatly on your design and place in which you are making the call from.

*

*Can you afford to retry until it succeeds?

*Are user's waiting on the response and errors are not acceptable?

*Is this a batch pipeline working offline where taking longer is okay?

If you never want to hit the error, you'll need to implement your own client side rate throttling with accompanying monitoring to assure that you know it's time to request more quota.
If you can retry and wait, try retrying using exponential backoff.

redpajama_set_name: RedPajamaStackExchange


Exterior and Interior Common Areas Renovated!
Close to Highway 68, Highway 1 and the Monterey Airport.
Ideally located on the central California coast in beautiful, upscale Monterey, exists a rare opportunity to lease this Single Tenant User/Occupant, upgraded Class A 3-Story Office Building situated in a private, convenient office park location.
The subject property was previously 100% leased to eSteiner Optics (formerly LDI - Laser Device Inc.), for over 15 years.
Upgraded with a first floor R&D (clean room) component, with executive and group offices, as well as conference rooms, offering a flexible build-out for single tenant office and/or partial R&D configuration, with ample parking ratios.
New Exterior Painting and Refurbishing. Recent exterior capital improvements to the parking lot and landscaping. New Roofing system, Water Cooler tower, HVAC, and Solar futures plumbed in and completed. Lobby, bath and kitchen remodels to be completed this summer.
10 Year NNN lease with extension options preferred.
Conveniently located on a private court, across from the Monterey Regional Airport, within the Monterey Airport Business Park, with quick access to Hwy 1 and Hwy 68, providing an excellent location for commuters.
Flexible TI's for a single tenant user, to their configuration needs.


Forbes Editorial Board presented its first own rating of universities. The rating takes into account not only the quality of education, research, international and financial activities, but appraises career prospects for students as well. Among the criteria that formed the basis for the calculations are the average salary of graduates, the presence of billionaires and their heirs among them, successful officials, board members of the largest Russian and international companies.
The data were used as a basis for monitoring the performance of more than 600 institutions of higher education prepared by the Ministry of Education and Science of the Russian Federation. 100 universities formed the final list. MIET took the 21st place, leaving behind Moscow Aviation Institute, National Research University "Moscow Power Engineering Institute", the First Electrotechnical University ETU and Tomsk State University.
In addition, according to the "Quality of Education" parameter, MIET is ranked the 6th among all the universities and the 3d among National Research Universities.


Aluma Tower Company, Inc. proudly offers aluminum guyed and unguyed towers as an efficient solution to meet any of your lightweight telescopic masts requirements. The lower, outer section can be bracketed to a suitable structure rather than guyed.
Our guyed towers are comprised of 2, 3, or 4 telescoping sections and are constructed using lightweight aluminum, extruded 6061-T6 and drawn 6063-T832 tubing. Each tower section is hand welded by certified welders using the TIG (Tungsten Inert Gas) welding process. All towers are rigged to allow the sections to telescope simultaneously, using stainless steel cable and pulleys. All Aluma Tower Company, Inc. towers are designed according to the TIA-222-G Structural Standard for antenna supporting structures and antennas.
Building brackets for attachment to a suitable structure against one side of the tower, providing six inches of standoff (numerous others available to suit requirements).
All tower hardware, including rigging (stainless steel), including cables and pulleys.
Zinc-plated hand crank worm gear winch (electric winches available).
Aluminum masts for easy attachment of antennas or instrumentation.
Safety stop latch to remove tension on cable and eliminate unwanted retraction.
Aluminum rollers to aid in extension and retraction.
The heavy-duty aluminum telescoping antenna tower is designed to accommodate antennas with large wind surface areas of up to 18sq/ft (1.6723m²) and 125lbs.(56kg) of maximum payload capacity, and it is tested for winds up to 70mph (112.65kph).
These models are equipped with a universal rotor plate welded in place to accommodate a large variety of commercially available rotors (such as Yaesu 800-1000). These help to orient a beam or other directional type antenna. These towers include a heavy-duty 8ft. (2.4384m) mast with 2 inch (5.0800cm) diameter and 1/8 inch (0.31750cm) wall, guy ears on each section, heavy-duty building bracket and tilt base.
Maximum Wind Load 18 SQ. FT. 18 SQ. FT. 18 SQ. FT. 18 SQ. FT. 18 SQ. FT.
Extra Heavy Duty Models: T-40XHD; T-50XHD; T-60XHD; T-75XHD.
The extra-heavy-duty aluminum crank-up tower can accommodate antennas with larger surface areas. These towers can handle up to 23sq/ft (2.1368m²) of antenna surface area and 200lbs.(90kg) of maximum payload capacity in winds up to 70mph (112.65kph). This model can handle a large variety of commercially available rotors. These telescoping towers feature a heavy duty 8 foot (2.4384m) mast with 2 inch (5.0800cm) diameter and ¼ inch (0.63500cm) wall, guy ears on each section, heavy-duty building bracket and tilt base.
Maximum Wind Load 23 SQ. FT. 23 SQ. FT. 23 SQ. FT. 23 SQ. FT.
The extra-extra-heavy-duty aluminum crank-up towers are designed to accommodate larger, heavy duty rotators and pedestals. This model is designed for heavier payloads up to 300lbs (136kg) and up to 25sq/ft (2.3226m²) of antenna surface area, tested in winds up to 70mph (112.65kph). The extra-extra-heavy-duty towers are complete with a heavy-duty 2 inch (5.0800cm) diameter, ¼ inch (0.63500cm) wall, guy ears on each section, heavy duty building bracket and tilt base.
Maximum Pay Load 25 SQ. FT. 25 SQ. FT.
Unguyed capabilities up to 50mph winds, guyed capabilities up to 80mph winds.
Payload capacities up to 200lbs.
Maximum Wind Load 18 SQ. FT. 18 SQ. FT.
Beside installing the Tower on a building utilizing our building bracket, Aluma Tower has develop solutions to allow the customer to install the tower in open area with and without the use of concrete. The innovative design of the mount solutions allows the towers to be fully utilized and support the same payload capability.
The Mounting Pole (MP-2) allows the customer to install an Aluma Tower without using a concrete pad. This eliminates the need for bracketing the tower to an existing structure as well as the requirement for a tilting base. The installation requires only a 6ft deep hole and locally-available dirt and gravel. It uses water to compact the soil and stabilize the system. This system has sold hundreds of times over and the current customer list includes NASA and the U.S. military.
Besides the capability of being installed without concrete pads, the MP-2 has a top-pivot that allows the user to tilt the tower from vertical to horizontal positions, eliminating the need for climbers or riggers. The standard is available with a hand crank winch and the MP-2 can be easily upgraded to have an electrical system (AC or DC) on the tilting and hosting systems.
The MP-2 is constructed with hot-dip galvanized steel and weighs approximately 150lbs. It is capable of supporting the standard Aluma Tower models, guyed or unguyed (HD, XHD & XXHD) and the design eliminates the need for a multiple installation setting (concrete pad, base, and bracket). This solves all concerns and time constraints associated with a residential and commercial tower installation.
This new Independent Base design allows the customer to mount any Aluma Tower to an existing concrete pad, eliminating the need for bracketing the tower to an existing structure as well as the requirement for a tilting base and a new concrete pad.
Besides the capability of fitting in multiple configurations of concrete pads, the Independent Base allows the user to tilt the tower from vertical to horizontal —eliminating the need for climbers or riggers. With the standard model available with a hand crank winch, the Independent Base can be easily upgraded to have an electrical system (AC or DC) on the tilting and hosting systems.
The Independent Base is constructed with hot-dip galvanized steel and weighs approximately 350lbs. It is capable of supporting standard Aluma Tower models, guyed or unguyed (T, HD, XHD, XXHD, & TU), and the design eliminates the need for a multiple installation setting (concrete pad, base, bracket). This solves all concerns and time constraints associated with a residential and commercial tower installation.
The deck of the mobile tower unit is about 4ft. wide x 16ft. long and able to carry a small radio cabinet to house equipment for use with the small mobile tower.
Other available accessories for a complete mobile trailer tower include an Aluma coax reel, spare tire, antenna storage tubes, and portable generators.
Small mobile tower options are standard and heavy duty masts, in either 35ft. or 50ft. heights on this mobile tower unit.
As a small mobile tower unit that is extremely lightweight it makes transporting these systems easy by most vehicles having a suitable trailer hitch, including SUVs, vans, trucks, and cars.
Trailer Gross Axle Weight (Gawr) 2,000 LBS.
(Varies With Different Accessories ) 1,400 LBS.
Maximum Wind Load 18 SQ. FT. 18 SQ. FT. 23 SQ. FT. 23 SQ. FT.


text:
"We needed to stop buying things cheaply to fill gaps and find something with good performance that could scale quickly," says Jeffrey Groff, IT Manager at the Campbell Group.
Home»Data Center
Big Data Needs Push Firm to Explore Storage Options
With millions of acres of timberland in its care, a unique investment management firm overhauls back-end systems to create a high-availability infrastructure.
Karen D. Schwartz
Karen Schwartz is a freelance technology writer based in the Washington D.C. area.
The Campbell Group manages more than 3 million acres of timberland — probably not in the way that most people would think though.
The 30-year-old Portland, Ore., company is a management and investment firm that trades in woodlands rather than finances, managing the timber on land owned by its customers — tracking timber portfolios to assure their risk-return payoff stays favorable.
All those acres, and the trees on them, translate into a major data storage challenge for the 300-employee company, which has offices in 30 locations throughout the United States. Currently, the company houses about 15 terabytes of geographic information system (GIS) data.
It maintains thousands upon thousands of discrete data-intensive geospatial files — managed using ESRI ArcGIS and stowed in Microsoft SQL Server and Oracle databases — that contain satellite and aerial images, survey measurements and more.
No slow growth here. The company's data stores keep multiplying, says IT Manager Jeffrey Groff. Why? Because the Campbell Group archives all past data, even as it creates new data. For instance, if a team overseeing a land holding needs to build a new logging road, the data set for that parcel grows. When the company gets a new client, its records expand exponentially. That's why the infrastructure must be flexible enough to scale quickly.
"We get treated like a small business because of our number of employees, but we are an enterprise business in terms of our data requirements," Groff says.
Campbell Group employees must be able to quickly and reliably access the data. But high availability can be tricky with GIS, Groff notes, because GIS images are relatively large and consume a lot of space.
"If they aren't put in the right spot, they will serve up to people across the nation very slowly. We needed to make sure that bottlenecks were as small as possible."
Those were the exact issues the company faced not so long ago, hindering its growth and agility. The storage setup at the time consisted of almost two dozen aging servers connected to an array of disks that had been added piecemeal as the data stores grew. Campbell Group housed most of the servers at its main data center in Portland, with a few located at a second facility in Diboll, Texas. The time and energy required to manage the haphazard and decentralized storage system cut into other IT responsibilities.
"Performance had degraded, we were running out of storage, and there were times when the system simply failed," Groff says. "There were many nights and weekends where I had to come in and get everything back running before morning."
35 terabytes
The increase in the Campbell Group's storage needs (from 5TB to 40TB) over the three years it spent digitizing its archival data
Without the ability to service existing clients effectively and bring on new clients efficiently, Campbell's executives knew the company couldn't grow. Clearly, things had to change.
"We knew we needed to build a foundation that was the right path, and we needed to get away from the Band-Aid approach," Groff says. "We needed to stop buying things cheaply to fill gaps and find something with good performance that could scale quickly and was really solid."
Clearing a Path
After evaluating the existing data store and projecting growth for the next several years, Groff laid out a plan to overhaul the storage infrastructure at the Campbell Group. The new environment, rolled out in December 2010, standardized on EMC gear: a Celerra NS-120 unified storage array that can scale to 120 drives and a Clariion CX4 Series networked storage system.
"We were fortunate because my management was receptive and realistic about what we needed. It wasn't a hard sell to the director of technology," Groff says. "I just laid out what the company needed in terms of performance, storage and growth for the future. They knew it was the only way to address our growing pains."
The NS-120 and Clariion CX 4 environment can be connected to multiple storage networks via network-attached storage (NAS), Fibre Channel storage area networks (SANs) and Celerra Multi-Path File System (MPFS). Groff chose a Fibre Channel SAN because that enables both high availability and quick scalability. It also supports advanced storage functions such as data deduplication and virtual provisioning.
To ready the data center for the SAN implementation, the IT team consolidated 20 servers down to five and virtualized using Citrix XenServer. The servers connect to the SAN, which serves up logical units of storage to the virtual servers.
The Campbell Group experienced immediate results after implementing the new SAN, Groff says. Flexibility and manageability improved dramatically, and performance and uptime were no longer issues.
"We needed to stop buying things cheaply to fill gaps and find something with good performance that could scale quickly and was really solid."
– Jeffrey Groff, IT Manager at The Campbell Group
"We're back to one single source of management," Groff says. "We can provision storage as needed for our virtual environment from one location, and our IT staff can go back to doing the other parts of their jobs." Soon after Groff installed the SAN unit in the main Portland data center, he worked with his CDW account manager, Kim Fiala, to create a disaster recovery site at one of CDW's own data centers in Illinois. A second mirror EMC setup is installed at the disaster recovery center in Chicago, creating full redundancy.
"We are redundant in two different ways now," Groff says. "In the main data center, if one piece of the storage system goes down, we can still maintain performance and uptime because the device has the ability to move itself to another storage processor if it encounters a problem. And if our entire main data center goes down, everything is immediately available via the SAN at the Chicago collocation site."
Groff uses EMC MirrorView to accomplish full redundancy between the two SANs. MirrorView allows synchronous and asynchronous mirroring along with array-based remote replication to copy data to a second site.
The scalability of the new SAN system already has proved its mettle. Even though it's barely a year old, Groff already is preparing to add more drives. "We're confident that this unit will last us 10 years, and that's exactly what the company needed to keep growing."
Although the IT team is confident now in the infrastructure, there were definitely some lessons learned along the way, Groff says. First, before even researching the options, it's critical to determine all the elements of the storage environment that need to be replaced and then to set a vision for the future based on data growth projections.
"You can't buy any type of storage without getting a base of where you are storagewise and where you think you'll be several years out," Groff says. "With a purchase of this size, you want to be as spot-on as possible." That information is necessary not only when determining how much storage capacity to buy but also when setting the project budget.
Don't shortchange training either. Moving to a new storage infrastructure can be jolting for an IT staff used to doing things differently, Groff points out. "Training is well worth the time."
Finally, when it comes to choosing the product, reliability and scalability should be top of mind, Groff says. No matter how much preplanning and analysis the IT team does, it can't foresee every possible future need, he says. "Make sure to get something that can scale without a lot of hassle because changes happen that you can't predict."
To download this story in PDF format, click here.
Robbie McClaran
Digital Transformation Begins with a Modern Data Center
Containers vs. Virtual Machines: What's Best for Your Business?
The Future of IT Bends Toward the Flexible

redpajama_set_name: RedPajamaCommonCrawl


make a splash with this geometric design! hand illustrated and offset printed in saturated color using soy-based ink on a 22" x 28" sheet of luxuriously thick matte paper. fsc certified, 10% pcw. one sheet is large enough to wrap a medium sized shirt box.


Our Wilshire Poster Bedroom Set is is inviting, attractive and versatile. It features an eye-catching turned top rail on the headboard and the footboard and beadboard panels. All the matching case pieces are finished in a antique, distressed, shabby chic white.


In a RGB color space, hex #00d280 is composed of 0% red, 82.4% green and 50.2% blue. Whereas in a CMYK color space, it is composed of 100% cyan, 0% magenta, 39% yellow and 17.6% black. It has a hue angle of 156.6 degrees, a saturation of 100% and a lightness of 41.2%. #00d280 color hex could be obtained by blending #00ffff with #00a501. Closest websafe color is: #00cc99.
● #00d280 color description : Strong cyan - lime green.
The hexadecimal color #00d280 has RGB values of R:0, G:210, B:128 and CMYK values of C:1, M:0, Y:0.39, K:0.18. Its decimal value is 53888.
Below, you can see some colors close to #00d280. Having a set of related colors can be useful if you need an inspirational alternative to your original color choice.
This text has a font color of #00d280.
This paragraph has a background color of #00d280.
This element has a border color of #00d280.
A tone is produced by adding gray to any pure hue. In this case, #61716b is the less saturated color, while #00d280 is the most saturated one.
Below, you can see how #00d280 is perceived by people affected by a color vision deficiency. This can be useful if you need to ensure your color combinations are accessible to color-blind users.


Dragan Karadžić, painter, born in Petnjica, Savnik on April 9th 1950.
He graduated at the Teachers' College (Art Major) in Niksic in 1974. He graduated at the Academy of Fine Arts in Belgrade in 1978, in the class of Professor Radenko Misevic where he also completed his post-graduate studies in 1980. He was given an advanced training scholarship by the French government and at the Academie des Beaux Arts in Paris, under the tutelage of professor Jacques Yankel he completed specialist studies in 1981/1982.
He was on study tours in Italy, Germany, France, Belgium, the Netherlands, Spain, Greece and USA.
In the period from 1971 to 1981 he took part in the process of conserving frescoes in Stara Pavlica, Karan and Arilje.
In the period 1986–1990 he teaches at the Faculty of Philosophy in Niksic (Department for Fine Arts Education, subject-Painting) and from 1990 he starts working at the Faculty of Fine Arts in Cetinje as assistant professor and later on as associate professor. Since 2002 he has been full professor at the University of Montenegro. He was vice dean of the Faculty of Fine Arts in Cetinje in the period 1983–1987 and dean in the period 1994–1996. He was member of the group Generation 9.
He was awarded 22 prizes, among which are: the July 13th Award of the Republic of Montenegro, 1995; the Milunovic, Stijovic, Lubarda Award at the Traditional Exhibition of the Association of Fine Artists of Montenegro in 1997 and 1999; the Distinguished Cultural Creators Charter, 2010.
He was elected associate member of the Montenegrin Academy of Sciences and Arts on December 6th 1996 and became regular member of the Montenegrin Academy of Sciences and Arts on December 12th 2003.
In 1977 he became member of the Association of Fine Artists of Montenegro and was Secretary of this Association in the period 1983–1987.


Enslaved by vampires for her special blood, Ursula has just escaped her captors. She's rescued by a handsome stranger, only to realize that he's a vampire. He claims he wants to help her, but can she trust a vampire who's not only lusting after her body, but also her blood?
Not as good as thé rest, but lets keep them coming!
Vampire erotica. Tina Folsom rocks them both. Fun, exciting and the vampires are good guys.


A text based furry RPG. The player controls a respectable, organized cat named Kattaa who, in realization of her friends' repeatedly rude behavior, creates and coordinates a community help group with little to no purpose apparent to anyone other than herself. All graphics and some music are original to the game.
Cast of characters includes Kattaa's loser fox girlfriend and her strange jungle pet, a foreigner winged dog who really loves basketball, Kattaa's girlfriend's awful roommate, said roommate's online romantic interest who is nothing he says he is, a weird red panda who lives in a trailer in the spooky forest, an old college friend who has become a very successful cow in the business world, and an unsociable dingo whose many adopted sheep siblings will save the player's progress.
The game takes around 30 to 50 minutes to complete.
The art style is a bit reminiscent of MOTHER 3. I already like this game.
This is like Pom Gets Wi-Fi 2!
This game is really cute!
Always good to see games with furry characters. I'm going to give this a shot.
Also... I'm sorry to ask that, but how do I pass through the forest?
I tried many combinations of ways, but none was the right one.
No problem! I should probably set up a guide. Anyway, puzzle spoilers below the hide.
Oh, thank you! And sorry for the trouble, haha.
My biggest disappointment with this project is that it ended.
I would have loved to see further plot and character development, to see where the game went next.
There are so many games I play from RMN that when I beat them, I discover that I didn't uncover all that the game had to offer. Most of the time I've run out of interest to care to go back and find it.
However, You've truly succeeded in making a great game because at the end of it, I was left wanting more!
Please continue this journey and make great games that cherish story line and character development. Remember, if we the viewer/player can witness a character evolve and grow and learn new perspectives of themselves, they become fully fleshed out characters and that's what people love about stories.
Thank you for taking the time to say such sweet things and letting me know you liked the game : ) You've made me blush! I learned so much during the course of this project and it feels wonderful to have made something that someone enjoyed.
The download link appears to be down. I wouldn't mind giving this a shot, it looks adorable.


October 19th – November 15th, 2013.
The Fejer County's Fall Exhibition with tradition of more than half a century's, is staged every other year in Szekesfehervar or Dunaujvaros- this year it's the latter's turn. This fine- and applied arts salon is the most important meeting point of the county's artists and professionals. As for the audience, it is the most grandiose opportunity to orient, as there isn't anything else which would give as all-round perspective of the county's art world's current state.


text:
<?php

namespace Magento\Tax\Api\Data;

interface OrderTaxDetailsInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
    const KEY_APPLIED_TAXES = 'applied_taxes';

    const KEY_ITEMS = 'items';

    /**
     * Get applied taxes at order level
     *
     * @return \Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface[] | null
     */
    public function getAppliedTaxes();

    /**
     * Get order item tax details
     *
     * @return \Magento\Tax\Api\Data\OrderTaxDetailsItemInterface[] | null
     */
    public function getItems();
}


More flop sweat—Politico is starting to worry that the House of Representatives will stop the Amnesty steamroller.
After years of false starts, Washington finally appears to be on the path to rewriting the nation's immigration laws.
The Senate Gang of Eight bill is holding its own in committee and is expected to hit the Senate floor in June. And in the House this week, members of a bipartisan group agreed "in principle" on a big bill to be revealed in June.
But in this case, looks are deceiving. There are still major hurdles before immigration reform can reach President Barack Obama's desk. The biggest one is the GOP-controlled House.
Right now, the Senate bill has no chance of making it to the House floor. Key senators such as Chuck Schumer (D-N.Y.) and John McCain (R-Ariz.) have stressed that their bill would need upwards of 70 Senate votes in order to enact pressure on the House. But House GOP negotiators flatly say the margin of votes in the Senate — no matter how big — won't matter.
Members of the House are more resistant to Amnesty than the Senate. They have to face the voters more often, and are less likely to be multi-millionaires. See, from a previous amnesty season, Is GOP House Leadership the new Third Party? By Patrick Cleburne on September 7, 2006.


text:
package com.haxademic.demo.draw.shapes;

import com.haxademic.core.app.P;
import com.haxademic.core.app.PAppletHax;
import com.haxademic.core.draw.context.PG;
import com.haxademic.core.draw.shapes.PShapeUtil;
import com.haxademic.core.media.DemoAssets;

import processing.core.PShape;

public class Demo_PShapeUtil_setMaterialColor
extends PAppletHax {
	public static void main(String args[]) { arguments = args; PAppletHax.main(Thread.currentThread().getStackTrace()[1].getClassName()); }

	protected PShape obj;
	protected float modelHeight;

	protected void firstFrame() {
		// build obj PShape and scale to window
		obj = DemoAssets.objSkullRealistic();
		float objHeight = p.height * 0.7f;
		PShapeUtil.centerShape(obj);
		PShapeUtil.scaleShapeToHeight(obj, objHeight);
	}

	protected void drawApp() {
		background(0);
		p.translate(p.width/2f, p.height/2f, 0);
		p.rotateX(P.map(p.mouseY, 0, p.height, P.PI, -P.PI));
		p.rotateY(P.map(p.mouseX, 0, p.width, 0, P.TWO_PI * 2));
		PG.setBetterLights(p);
//		p.lights();

		PShapeUtil.setWireframeColor(obj,
				p.color(50 + 50 * P.sin(p.frameCount * 0.03f), 50 + 50 * P.sin(p.frameCount * 0.02f), 50 + 50 * P.sin(p.frameCount * 0.015f)),
				p.color(127 + 127 * P.sin(p.frameCount * 0.02f), 127 + 127 * P.sin(p.frameCount * 0.01f), 127 + 127 * P.sin(p.frameCount * 0.005f))
				);

		// draw mesh
		p.shape(obj);
	}

}


Chocolate, espresso, cinnamon and chipotle combine to create Mexican Brownies that are hard to resist!
This Chocolate Brownies Recipe combines the flavors of chocolate, with warm spices to create a memorable Mexican-inspired brownie.
If you love your chocolate warmed and kicked up with a bit of spice, you will want to give these Chocolate-Chipotle Brownies a try!
They are a perfect gift for all your chocolate and chile loving friends and especially appropriate if you live in the southwest, where chipotle chiles flourish.
For those unfamiliar, the chipotle is a smoke-dried jalapeno, used primarily in Mexican, Mexican-American, Tex-Mex, and New Mexican cooking.
It is a relatively mild chile that provides an earthy spiciness to recipes.
Once you decide to bake a batch of these delightfully spicy chocolate brownies, take a few minutes to gather your ingredients and tools and make sure you have everything you need before beginning.
There is nothing more frustrating than getting part way into mixing brownie batter only to discover you are one egg short or don't have the right kind of cocoa powder.
You should be able to find ground chipotle powder on the spice shelf of a well-stocked grocery store. If not, you can order Ground Chipotle Powder here.
Preheat your oven to 325F degrees. Line a 9x13-inch baking pan with foil that extends beyond the pans edges. Lightly coat the foil with nonstick cooking spray and set aside.
In a small saucepan, melt the chocolate and butter over low heat, stirring until smooth. Set aside to cool slightly.
In a small bowl, combine the flour and cocoa powder; set aside.
In a large bowl, combine sugar, espresso coffee powder, cinnamon, and chipotle powder with a whisk until well blended.
Add the melted chocolate mixture and beat with an electric mixer on medium speed for 1 minute, scraping bowl as necessary to make sure ingredients are well blended.
Add eggs, one at a time, beating on low speed after each addition, just until incorporated then beat on medium speed for 1 more minute.
Spread the chocolte brownies batter evenly into the prepared baking pan.
Bake in the preheated oven for 35 to 40 minutes or until edges begin to pull away from the sides of the pan. Don't overbake or your brownies will be dry.
Cool the pan of brownies on a wire rack and then lift the uncut slab of brownies from the pan, using the foil.
Sprinkle the brownies with unsweetened cocoa powder. Cut into desired shape and size. Try cutting your Mexican brownies into triangles or diamonds for a unique change of pace.
This 9x13-inch pan yields approximately 32 Mexican brownies.
This Mexican brownies recipe is adapted from Christmas Cookies: 101 Heavenly Recipes, a Better Homes and Gardens Special Interest Pulication.


Los Angeles, CA, November 2012- Los Angeles hip hop recording artist B!zness has just given music enthusiasts another reason to look forward to a Friday night. The rapper, who has worked with heavy weights such as Problem and Kurupt, has collaborated with international celebrity DJ VIP on what's sure to be the next big viral music segment entitled Mic Check Fridays.
Mic Check Fridays, which is set to debut November 16th, will feature the hottest most current released songs out as B!zness remixes them with his own personal spin. Here he takes your favorite songs to a whole new level stamping them with his lyrical talents and smooth demeanor. As far as the duo is concerned, no record is safe and no popular track will go untouched.
Listeners can tune into Mic Check Fridays at www.djviponline.com | For more information on B!zness including music, photos, and events check out his website at www.blockstarbizness.com. To get more news and information on DJ VIP refer to his site at www.djviponline.com.


The Trial Smile can be created during their initial consultation. Dr. Hagood makes temporary composite veneers and lays them on the teeth to show the effect of veneer treatment. Based on how the smile looks with temporary veneers, Dr. Hagood and the patient decide together how many veneers will provide the look the patient wants. All this is done before the patient decides to invest in actual veneer treatment.
When you smile wide, you want all your teeth to match and look good. For many people, this will mean having eight veneers on their upper teeth. For other people, ten or twelve might be needed. And for others, only one to four veneers will meet their goal of masking imperfect teeth.
Often patients assume they will need veneers on both upper and lower teeth for a matched set of teeth, but this isn't always necessary. It depends on how many of the lower teeth are exposed, and every face and lip line is unique to the individual. Small esthetic changes might be made with cosmetic bonding on some lower teeth instead of treatment with more expensive veneers.
Dr. Johnson Hagood is one of the nation's few providers of a Trial Smile, and one of the nation's most credentialed dentists for veneer treatment. Learn more about the temporary Trial Smile procedure here, and give us a call to schedule a veneers consultation. Learn what is possible for you and just how affordable veneer treatment can be.
Note: Veneers are so thin, teeth are barely modified, especially in the case of no-prep veneers. Veneers protect and strengthen teeth, in addition to making cosmetic improvements. They are one of the most conservative and low-cost ways to achieve an amazing naturally beautiful smile.


text:
The Salvation Army Brings Help and Hope to Albany, GA Enclave
October 17, 2018 /in Disaster Response /by SalArmySouth
ALBANY, GA (October 17, 2018)— A week after Hurricane Michael swept through the Peach State with the force of a category-three hurricane, the South Georgia landscape is still awash in a sea of toppled trees and littered debris. The harvest-ready cotton fields that dot the southern region are scattered to the wind, blown away like a tornado focused on a dandelion. Farmers quickly try to salvage what is left, leaving large, white circular bales wrapped round with pink and yellow plastic scattered across the plains.
Earlier, dedicated emergency crews from the north, east and west rallied to work feverishly in the hardest-hit South Georgia regions to restore power and free trapped residents as quickly and safely as possible. But, Hurricane Michael took a powerful upper-cut punch to South Georgia and the devastation is spread wide and far. It will take months to get back to any semblance of normalcy. In some cases, things will never return to the way they were before the ravaging storm stuck.
The panorama of tragic scenery is an abrupt contradiction to the calm, brilliant sunny days that often follow a hurricane.
It was on such a day, five days after Hurricane Michael struck, that Terry Lightheart, a mother to three grown children and three still at home, was driving northwest on highway 82 north of Albany, Georgia when her eyes were drawn like a magnet to an odd and dire sight 100 yards to the east a few miles outside of town. A nameless enclave of 60 thin-walled trailer-homes lay mangled by large, toppled pine and live oak trees like soda cans crushed underfoot.
In the buzz and chaos of disaster activity in the surrounding cities and counties, it was eerily quiet here — a little island of destruction secluded all by itself. No bulldozers or backhoes removing trees, no large bucket trucks restoring power, and no emergency vehicles accompanied by personnel directing traffic were on scene. There was only a little movement here and there as lonely residents braved to come out and face the massive destruction that was now their corral.
Moved by compassion for what Terry could only imagine would be found in the rubble, she resolved to find a way to bring hope and help these unnoted people.
And she was just the person to do it.
Terry was there, in Albany, Georgia, on a two-week assignment as the Planning Chief for The Salvation Army's Hurricane Michael Emergency Disaster Incident Management Team. Her compassion for people is one of the reasons Terry does what she does so well. She is in Georgia to help people in need alongside The Salvation Army of Georgia. But, in her normal job, Terry serves as the Emergency Services Director for the entire Salvation Army Alabama-Louisiana-Mississippi Division (ALM).
Years of training and purposeful mission have honed Terry's skills and given her a sixth-sense of what to do to help people in their time of need. She turns back to the disaster response Incident Command located at The Salvation Army's Albany, Georgia Corps chapel, where she marshals the needed support and resources and alerts others to the small community's plight.
Terry is soon back on the road in her Salvation Army branded Toyota Tundra V-8 SR5 and headed to help the people in the trailer enclave. Following Terry, in an ALM catering truck loaded with food and drinks, are Tyler Hicks and Shyan Campfield, a young couple who attend The Salvation Army's Church in Pascagoula, Mississippi. Tyler and Shyan first met at The Salvation Army's Camp Hidden Lake in Mississippi, and have been dating for two years. This is their first time helping people during a disaster and they are excited to put their faith in action.
As the two-car caravan pulls into their destination, they are met by a car going the other way. The man inside looks suspiciously at the well-meaning intruders. "Hi!" says, Terry cheerfully. "We're here to see if you need any food and water."
"Oh, that would be terrific!" the man says. "We thought we were all alone – nobody has been out here to help us. There are people in here who could really use some food."
Terry, Tyler and Shyan slowly make their way up the little dirt road that meanders throughout the complex past trailer after trailer crushed by massive trees. They stop by a trailer where Destiny, age five, and her brother, Destin, age eight, are playing. Their Aunt, Brandi Robinson, watches from the trailer steps.
"Hi! Do you need any food?" asks Terry with a smile.
Brandi walks over and slowly warms to the new, friendly visitors. "Sure – that would be great," she says without a smile. "We're all just coming back to find all this," she says. "Thankfully most folks waited out the storm elsewhere and the few that remained are safe. It's a miracle that nobody was killed. We're just trying to make sense of all this."
Tyler and Shyan package enough meals for Brandi, Destiny and Devin, and additionally for Brandi's sister and husband – the children's parents. They have all moved into Brandi's sister's undamaged trailer right in front of the catering truck. Brandi's trailer, the yellow one second from the entrance of the enclave, is a total loss – crushed under a massive pine tree. A small American flag proudly stands straight at the side of their mailbox — now dented to half its height by a branch from the pine tree.
A little girl in flip-flops decorated with colored strands and a few rhinestones walks up to the catering truck. "Do you have hot dogs?" she cheerfully asks. She lives in the trailer right beside Brandi's sister. Soon Terry is talking with her parents who have made their way to the truck – now a centralized gathering place.
"We're so glad to see you here," says Cliff Sanspree. "We thought we were on our own. Nobody has come out to help us." Cliff's house was not damaged, but a large pine tree fell on his new Ford truck. "It's a mess," Cliff says, shaking his head. "We took in one of our neighbors who has a bad leg. Can we get a meal for him, too?" he asks.
A young man drives up on a trail-weary, red four-wheeler. "There's an elderly house-bound couple around the corner. Can I take them some meals?" Tyler and Shyan spring into action and he is soon off on his delivery run.
Another man gratefully reflects as he picks up a meal and something to drink, "I thought we were alone, but now we have hope. It's good to see there are good people in this world."
By the next day, electric crews had dropped off a few caissons loaded with telephone poles, and the future for the little trailer-home enclave began to look brighter.
And for Terry, Tyler and Shyan, the people who were nameless, unidentifiable and in much need just a short time ago, are no longer so. Now, they are people they know, and will never forget.
The best way to help survivors and relief workers is to make a financial contribution. Monetary donations allow disaster responders to immediately meet the specific needs of disaster survivors.
Donate By Phone: 1-800-725-2769 (1-800-SAL-ARMY)
Donate By Mail: The Salvation Army PO BOX 1959 Atlanta, GA 30301
Please designate 2018 Hurricanes – Michael on your check
Donate Online: helpsalvationarmy.org
Donate By Text: Text STORM to 51555 to receive a donation link for easy mobile giving
About The Salvation Army
The Salvation Army, established in London in 1865, has been supporting those in need without discrimination for more than 135 years in the U.S. More than 25 million Americans receive assistance from The Salvation Army each year through a range of social services: food for the hungry, relief for disaster victims, assistance for the disabled, outreach to the elderly and ill, clothing and shelter to the homeless, and opportunities for underprivileged children. The Salvation Army tracks the level of need across the country with the Human Needs Index (HumanNeedsIndex.org). The Salvation Army has served survivors of every major national disaster since 1900. The Salvation Army does not place an administrative fee on disaster donations. During emergency disasters, 100 percent of designated gifts are used to support specific relief efforts. For more information, go to www.SalvationArmyUSA.org or follow on Twitter @SalvationArmyUS.
Source: disaster.salvationarmyusa.org
Tags: salvation army, the salvation army
https://i1.wp.com/host3.salvationarmysouth.org/wp-content/uploads/2013/02/eds.png?fit=495%2C300&ssl=1 300 495 SalArmySouth https://host1.salvationarmysouth.org/wp-content/uploads/2016/11/salarmy-logo-1.png SalArmySouth2018-10-17 09:52:002018-10-18 15:07:15The Salvation Army Brings Help and Hope to Albany, GA Enclave
Salvation Army Carolinas Closely Monitoring Dorian Track
The Salvation Army strives to meet demands of COVID-19 crisis
Young adults gather for discipleship, fellowship at 'Kickback' weekend
To Battle We Go: Glad to be here
The Salvation Army to Deploy Teams From Florida to Carolinas Ahead of Florence
Cumberland doll show helps fund The Salvation Army's work
Salvation Army Teams Return from Carolinas & Prepare for Hurricane Michael
The Salvation Army meets human need in a variety of ways
The Salvation Army Helps "Lift the Burden" for Panama City Family Tallahassee Veterinarian Sharing in Salvation Army's Ministry of Comfo...


Why invest your apprenticeship tax at UT1 Capitole?
By investing your apprenticeship tax at UT1 Capitole, you will contribute to the permanent upgrading of professional training. Innovative teaching courses can more adequately meet new business challenges. This financial contribution undoubtedly participates into improving the quality of our students' employability.
What will your apprenticeship tax be used for?
How to pay in your apprenticeship tax to the UT1 Capitole?
Contact the Collecting Body (OCTA) of your choice to get a deposit slip on which you will mention the amount to be paid in to « Toulouse 1 Capitole University ».
If you want to allocate your tax to a specific training program, please, add the exact name of the training program selected and the name of its director to « Toulouse 1 Capitole University ». The list of accredited training programs will help you make your choice.
Do remember to send us back the payment agreement form so that we can contact your OCTA and check that your payment has been made according to your specific requirements.


A patient in the back of a fire department ambulance that collided with another vehicle during transport killing the other driver, has filed suit against the department, two firefighter-paramedics, and the deceased's estate. Robert Cramblit was a patient in a Eugene Springfield Fire Department ambulance on July 31, 2013, when it collided with an SUV driven by Patricia L. Morgan. Morgan was pronounced dead at the scene.


Played 13, won 12, scored 30, conceded six. That's Manchester City's recent record against Crystal Palace, making the 2/9 on Saturday's hosts look like incredibly generous value.
But make no mistake about it, this Eagles side can take something from the Etihad.
Why? Because they've proved on plenty of occasions under Sam Allardyce that this kind of fixture suits them.
Last month Palace travelled to Stamford Bridge and left with three points. They also welcomed Arsenal to Selhurst Park and took three points. They went to Liverpool and (you guessed it) took three points.
In short, if any team outside of the top seven is capable of getting results against the Premier League's high-fliers right now, it's Big Sam's men.
Palace had won just four games and found themselves dangerously close to the relegation zone before Allardyce took over. Had the league have started from his first day in charge, they'd be ninth in the table right now.
The visitors are 10/1 to leave the Etihad with all three points, although we reckon the value is in the 13/4 on Palace/Draw Double Chance.
Christian Benteke has been in fine form of late, netting five goals in his last seven outings. He's 9/1 to open the scoring – and remarkably no less than nine Man City forwards are ahead of him in that market.
It's no surprise to see Sergio Aguero as the frontrunner though at 5/2.
Despite boasting one of the most exciting front lines in the division, City have now gone three games in all competitions without winning.
That's left them some 15 points off league leaders Chelsea, while they'll need to go out and pick up as many points as possible to give themselves a chance of finishing on top in what we're expecting to be a blanket finish to the season.
If it comes down to bottle, Pep Guardiola's men have been in this position before which should stand them in good stead for the remainder of the season.
Our traders reckon they should finish the season in that leading quartet though, with 1/12 on offer for them to do exactly that.
However, they'll need to find a way of breaking down the Crystal Palace wall this weekend to keep those odds from drifting.
Click here for a full list of Man City v Crystal Palace odds.


In 1884 FF Wichard built a special guitar in his shop in Benton, St.Louis. Not an ornate parlour harp guitar; more like a functional to-be-played guitar. It wears the stamp of Wichard on the struts and a long ago penciled notation still legible of "Benton, St. Louis" written on one of the struts as well.
The guitar lives with me today, after having given music to many songs before it came to me. I did some research to find out more about it and even one of the leading harp guitar guru and historians in the USA didn't know this guitar. I did come across a note about a violin that was repaired by FF Wichard in 1902 so I picture a luthier shop at 1422 Benton Street, St. Louis smelling of fine wood shavings and glue where stringed instruments are crafted and brought to life as well as repaired and rescued with care.
The lives my guitar touched as far as I know, took place on a journey from Boston where the wealthy family of a friend had a fine music room and collection of instruments, to a home in Portland, Oregon. The guitar sat in the corner of a gentleman's study in Portland for more than 50 years. I don't know if it was ever played, or was an heirloom tucked in the corner behind the leather wing-back chairs; the patina of its wood glowing softly from the Tiffany lamp above it.
The guitar touched my life when the gentleman in Portland who was a friend of mine passed away and those sending his treasures back out into the world thought I would cherish this one and sent it to me in Canada.
I play guitar and my son plays guitar so my grandson grew up seeing and hearing guitars played. My speciality when he was young was Raffi's "Baby Beluga" that we sang and danced to time after time after time as we do with little 5-year-old boys until they tire.
So as my grandson came skidding around the corner in his socks on the hardwood floor, grabbed me and pulled me to the other room shouting "Gramma, com'ere!!!! You gotta see this! It's a two-headed guitar!" I smile thinking back to the amazement and delight he had in finding this guitar that had come to live in our house.
He was struck with wonder that guitars could be so different from what he knew them to be; that things like this even existed. And his delight was palatable as he took Grampa by the hand, showing him the guitar, chattering about how wonderful it was.


text:
May 26, 2015 4:32 PMPublication: The Southampton Press
Voter Enrollment Leans Toward Independence From Major Parties
> Southampton Town Candidates Campaigns Heating Up Aug 12, 2015 9:37 AM
> Candidates Start Their Engines Aug 11, 2015 6:08 PM
> Southampton Town Ballot Is Shaping Up Jun 3, 2015 10:33 AM
> Democrats Name Southampton Town Candidates; Lofstad, Bouvier Join Schneiderman On Ballot May 29, 2015 9:24 AM
> Democrats See Strong Challenge For Congress With Throne-Holst On Ticket May 27, 2015 12:11 PM
> Throne-Holst To Challenge Zeldin For Congressional Seat May 20, 2015 12:46 PM
> Throne-Holst Departure Scrambles Southampton Political Picture May 20, 2015 11:30 AM
By Michael Wright
As the fall election race begins with this month's nominations of Town Board candidates by the major political parties in East Hampton and Southampton towns, the evolution of the political landscape on the East End, and the role it may play in this year's elections, are being eyed closely.
As has been the trend in the last few election cycles, the role of the third-party endorsement and politically unaffiliated voters appear likely to be deciding factors in the town elections yet again.
In both towns, the registration rolls for the two major parties have fallen compared to 2013, albeit only slightly. At the same time, the number of registered voters with no political affiliation—known as "blanks" in political circles—climbed slightly in both towns.
In East Hampton Town, the number of blanks actually has surpassed the number of registered Republicans to become the second-largest block of voters, behind registered Democrats.
In Southampton Town, there is virtually a three-way dead heat between the two major parties and a third group, those with no affiliation or who are registered with the Independence Party. Even party officials have acknowledged that party enrollment is based to some degree on people who intended to have no affiliation with a party, but were added to the Independence Party numbers when marking their voter registration cards "independent" instead of "no affiliation."
But the Independence Party has established itself as a political force on its own, thanks to the success of its candidates, four of whom hold elected office in Southampton Town. Along with its own candidates, all of whom were cross-endorsed by the Democratic Party in the last election cycle, the party has cross-endorsed candidates from both parties, with significant success.
In East Hampton Town, the Suffolk County Board of Elections enrollment summaries show 6,360 voters registered as Democrats, compared with 3,922 Republicans, as of May 1. Both parties saw slight drops in their overall registration numbers compared to 2013, while the number of unaffiliated voters remained about steady at 4,393. Just over 1,000 are registered with the Independence Party.
In Southampton Town, Republicans maintain a slight edge of 600 registered members over Democrats, 12,251-11,651. There are 10,118 blanks and 2,169 Independence Party registrants.
To what extent blanks and Independence Party voters are actually "swing voters" is the question on the lips of many political observers.
"If you look at the congressional election last year, it was decided by those swing voters," said State Assemblyman Fred W. Thiele Jr., an Independence Party member. "They go back and forth between the parties from one election to the next. The two parties still have the advantages as far as affiliation goes, and even affiliated voters are still accustomed to voting for candidates on one of those top two lines."
And there are some who say that even the major party registration rolls say less about what can be expected on Election Day than they would appear. There have been some hints that the Republican Party is slightly better at getting its members to the polls on the East End, for example.
Analysis of the ballot cards cast by voters through electronic voting machines since 2012 has shown that voters in town elections commonly jump from line to line in casting
their votes.
"The real question is: Is everybody enrolled in a party a dedicated party line voter? And the electronic voting machines have showed us that is often not the case," said Tom Knoble, chairman of the East Hampton Town Republican Committee and the party's nominee to challenge Democratic Supervisor Larry Cantwell this fall. "If you look at East End voters, they are notably independent. For the most part, East End folks have rewarded those [candidates] who have shown independence and their own voice."
Looking forward to the Meet and Greet parties for the Blanks this Season. Buffets, Open bars, Live Music...Mud wrestling?..Should be fun.
By Toma Noku (616), uptown on May 29, 15 10:51 AM
Like Reply Report as inappropriate


Citation: Kondo, T., Gullan, P.J., Miller, D.R. 2004. new hypogeic species of oregmopyga hoy from southern california. Zootaxa. 2004: 784:1-12.
Interpretive Summary: Scale insects cause billions of dollars in damage or control costs each year and are serious threats as invasive species in the U. S. and elsewhere. This paper provides a description of a new species of felt scale that is commonly encountered in California deserts and is a component of the biological diversity of the area. The species will be of particular importance to conservations interested in understanding and saving the diversity of the disappearing desert ecosystems. State and Federal insect identifiers also will find this research important since it provides identification aids for all species of the genus Oregmopyga.
Technical Abstract: A new species of hypogeic eriococcid, Oregmopyga viscosa Kondo & Gullan (Hemiptera: Coccoidea), is described and illustrated based on the adult female and the second-instar male and female. This species is known from Inyo, Kern, Riverside, San Bernardino and San Diego counties in southern California, and it lives just below the soil surface on the crown of its host, probably always on Hymenoclea salsola Torr. & A. Gray (Asteraceae). A revised key to the adult females of all nine species of Oregmopyga is included.


International aid for the starving millions is needed because regional governments don't do enough, says Mike Pflanz.
The drought now blighting the vast, arid basin of land that stretches from northern Kenya through central Somalia and into eastern Ethiopia is among the worst anyone has seen. Some regions are drier than they have been since 1951. No rain at all has fallen for more than a year in some places, and recent showers in others were half what would be expected.
Desperate people stumbling into camps and towns to find help are so malnourished that statistics reported to aid offices in Nairobi were at first not believed. "We sent them back because we thought they were wrong," says one senior aid official in Kenya's capital, the de facto centre of the current drought response.
In some areas of northern Kenya, 37 per cent of the population need emergency feeding. Across the Horn of Africa, levels of 20 per cent, 25 per cent and 30 per cent are being recorded regularly – double the 15 per cent emergency threshold.
"We may not be seeing the same number at risk as earlier in the decade, but those that are affected are in a much worse situation than perhaps at any time since the early 1990s," says Alun McDonald of Oxfam in Nairobi.
But none of this should have been a surprise. Save The Children calls today for £40 million to help save the lives of thousands of Kenyan and Somali children. Similarly urgent appeals for aid to east Africa were made in 2009, 2008 and 2006, and since the efforts of Bob Geldof and friends in 1984, there have been at least 60 major food crises in Africa.
Reacting to these disasters has seen Western spending on emergency aid to Africa rise by 20 per cent a year, to more than £3 billion a year. Why – after all of that expense, on top of huge amounts funnelled into projects designed to protect people from ever-more frequent droughts – is there a crisis again?
Whatever the reason for the failure of this rainy season – climate change, human overpopulation, the La Niña phenomenon or something else – it was predicted long ago. The UN's Food and Agriculture Organisation (FAO) first raised the alert in October. And again in December, and every month since. As did the US-funded Famine Early Warning Systems Network, and many of the aid agencies operating in Nairobi.
The immediate reason why, once again, images of emaciated African children will fill television screens, is simply that there has not been enough rain to fill rivers and to replenish water holes, to turn dustbowl land green with fresh pasture. The people of the region live perpetually on the edge of crisis. They are, for the most part, nomadic livestock herders whose animals are dying and who are being forced to sell whatever assets they have – jewellery, a bicycle, a bucket – to try to buy food.
The soaring prices of staple crops adds to their woes – maize has nearly doubled in price in Kenya, sorghum is 240 per cent dearer today in Somalia than a year ago. Somalia, perhaps worst affected but where figures are hard to pin down, is simply too dysfunctional and mired in war to cope.
The suggestion that up to 12 million people are in urgent need of food, while stark, conceals the fact that taking those affected as a proportion of the total population, the situation is not as severe as it was during the appeals of the early 1990s.
"In Ethiopia, the proportion of people affected by acute malnutrition has halved," says Andrew Mitchell, the International Development Secretary. "That is a sign of the significant progress being made.
"We are acting promptly to mitigate and blunt the effects of two years without rain in some places, something that is no fault of the people affected. But alongside that, there is clear evidence of the progress being made in mitigating the effect of these crises, so that fewer people in the Horn of Africa are affected by them than were before."
But the fact is that there are many more people in these drought-affected areas, living off the same land, with worsening rains. "Over-population, both of people, and of their livestock, is all too often the elephant in the room, something too many people are afraid to talk about," says a senior aid worker in Nairobi.
Increasing amounts of international aid – some of it British – are being spent on projects to give Africa's women the choice of when and whether to have children. More mouths to feed, when there is less food available, is one of the aid world's perpetual maths problems. But appealing for money "to fund a disaster averted, rather than a disaster developing" rarely earns significant attention, one aid official says.
"It is simply very difficult to get money to fund the kinds of projects that will stop these crises developing, rather than being forced to ask for money when they have started," says Cristina Amaral, the FAO's chief of emergency operations.
There are other schemes, large and small, that are intended to help millions of people stay off the food aid register the next time drought hits. In Ethiopia, £90 million of British aid has been spent on a "food for work" scheme, where people who would find no other employment or earnings are hired to work on projects designed to ease the effects of droughts, and paid in food.
In Kenya, Save The Children is giving people vouchers to buy food in local markets. Several other aid groups are piloting similar schemes, some of them simply handing out cash to people who need food, or transferring it to their mobile phones using the country's wildly popular Mpesa mobile money system. At a stroke, this boosts businesses and cuts out the sometimes months-long lag between food aid being bought, shipped and distributed by the big international agencies.
"If you had people needing extra food in the West, you wouldn't give them food parcels, you'd pay money into their bank accounts," says a veteran British aid worker in Nairobi. "The US gives food stamps. Why has it taken so long to come around to the same thinking in Africa?"
Often, the problem with a small, innovative scheme is widening it to cover more people – what aid agencies call "scaling up". The most ambitious scaling up would see governments in countries where drought is an ever-present reality take on these ideas, entrench them in their national policies, and enact them.
It is easy to look at the current situation and blame Western aid for failing to prepare people for the disasters that are now unfolding. But such international assistance is necessary only because Africa's leaders seem unwilling to do the job themselves.
Kenya's and Ethiopia's gross domestic products – albeit reliant on earnings from weather-dependent agriculture and horticulture – are roughly £18 billion each. Diplomatic and humanitarian pressure is increasing on these governments to give a larger share of that pot to the people most affected by drought, despite the fact that they are often politically the most ignored in each of their countries.
Build a new road, and food reaches markets more cheaply. Open a slaughterhouse near where herders walk their camels and goats, and their value instantly increases. "I think that you can see that there has been significant progress in exactly these kinds of approaches, in Kenya and especially in Ethiopia," Mr Mitchell says.
That progress, accelerated and constantly supported, must continue if we are to avoid yet more appeals to feed Africa's perpetually hungry.


This flashy green and black Kawasaki Racing Team (KRT) colour scheme is the only guise in which this bike is available in India. The design features sharp lines and flamboyant graphics, befitting the Ninja's sporty nature, and the front fascia is dominated by those sharp-edged, slant-eyed LED headlights and the ram air intake just above them. A large, stylised 'ZX' runs across the bodywork on the left side of the motorcycle, while the '6R' emblazoned across the right side completes the model designation. The rider's seat has quite some room front to back, allowing differently-sized riders to find their sweet spot, and is at a reasonable 830 mm high.
A plastic seat cowl sits in place of the pillion seat, and Kawasaki India do not provide passenger accommodation or foot pegs with this machine, although these can be bought at extra cost. The slim tail section juts sharply upwards and terminates in an attractive LED tail lamp, while lower down on the right side sits a chrome exhaust canister. Modern exhaust systems have gotten progressively bulkier and uglier, but Kawasaki have managed to keep this unit quite compact, and the use of chrome takes me back to days gone by when shiny exhausts were the norm.
In true Japanese supersport fashion, the ZX-6R is built around a pressed aluminium twin spar perimeter frame, which in turn is suspended on Showa hardware at both ends. The 41-mm inverted Separate Function Fork confines preload adjustability to the left leg, while rebound and compression damping adjustments can be made on the right leg. At the rear, a linkage-mounted gas-charged monoshock with piggyback reservoir also features full adjustability, allowing you to dial in chassis response based on your riding style and road condition.
Out of the box, the suspension seems set up for comfortable street use, smoothly soaking up road undulations; however, upping my pace in the twisties had the rear squatting under hard acceleration, while the soft front end dove sharply on the brakes, and gave me a very disconnected and vague feel when tipping in to corners. A few turns of the rebound and compression adjustment screws at both ends sufficiently stiffened up the ride, unleashing the sharper chassis response I was looking for — and there is still a lot of room for fine tuning if you really want to set this bike up to be ridden hard at the track. This range of adjustability allows the ZX-6R to go from pliant road bike to taut track bike, making it usable in a variety of conditions.