text:
"""Test the cursor module."""
import unittest
import random
import warnings
import sys
import itertools
sys.path[0:0] = [""]

from nose.plugins.skip import SkipTest

from bson.code import Code
from pymongo import (ASCENDING,
                     DESCENDING)
from pymongo.cursor import Cursor
from pymongo.database import Database
from pymongo.errors import (InvalidOperation,
                            OperationFailure)
from test.test_connection import get_connection
from test import version

class TestCursor(unittest.TestCase):

    def setUp(self):
        self.db = Database(get_connection(), "pymongo_test")

    def test_explain(self):
        a = self.db.test.find()
        b = a.explain()
        for _ in a:
            break
        c = a.explain()
        del b["millis"]
        b.pop("oldPlan", None)
        del c["millis"]
        c.pop("oldPlan", None)
        self.assertEqual(b, c)
        self.assertTrue("cursor" in b)

    def test_hint(self):
        db = self.db
        self.assertRaises(TypeError, db.test.find().hint, 5.5)
        db.test.drop()

        for i in range(100):
            db.test.insert({"num": i, "foo": i})

        self.assertRaises(OperationFailure,
                          db.test.find({"num": 17, "foo": 17})
                          .hint([("num", ASCENDING)]).explain)
        self.assertRaises(OperationFailure,
                          db.test.find({"num": 17, "foo": 17})
                          .hint([("foo", ASCENDING)]).explain)

        index = db.test.create_index("num")

        spec = [("num", ASCENDING)]
        self.assertEqual(db.test.find({}).explain()["cursor"], "BasicCursor")
        self.assertEqual(db.test.find({}).hint(spec).explain()["cursor"],
                         "BtreeCursor %s" % index)
        self.assertEqual(db.test.find({}).hint(spec).hint(None)
                         .explain()["cursor"],
                         "BasicCursor")
        self.assertRaises(OperationFailure,
                          db.test.find({"num": 17, "foo": 17})
                          .hint([("foo", ASCENDING)]).explain)

        a = db.test.find({"num": 17})
        a.hint(spec)
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.hint, spec)

        self.assertRaises(TypeError, db.test.find().hint, index)

    def test_limit(self):
        db = self.db

        self.assertRaises(TypeError, db.test.find().limit, None)
        self.assertRaises(TypeError, db.test.find().limit, "hello")
        self.assertRaises(TypeError, db.test.find().limit, 5.5)

        db.test.drop()
        for i in range(100):
            db.test.save({"x": i})

        count = 0
        for _ in db.test.find():
            count += 1
        self.assertEqual(count, 100)

        count = 0
        for _ in db.test.find().limit(20):
            count += 1
        self.assertEqual(count, 20)

        count = 0
        for _ in db.test.find().limit(99):
            count += 1
        self.assertEqual(count, 99)

        count = 0
        for _ in db.test.find().limit(1):
            count += 1
        self.assertEqual(count, 1)

        count = 0
        for _ in db.test.find().limit(0):
            count += 1
        self.assertEqual(count, 100)

        count = 0
        for _ in db.test.find().limit(0).limit(50).limit(10):
            count += 1
        self.assertEqual(count, 10)

        a = db.test.find()
        a.limit(10)
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.limit, 5)

    def test_batch_size(self):
        db = self.db
        db.test.drop()
        for x in range(200):
            db.test.save({"x": x})

        self.assertRaises(TypeError, db.test.find().batch_size, None)
        self.assertRaises(TypeError, db.test.find().batch_size, "hello")
        self.assertRaises(TypeError, db.test.find().batch_size, 5.5)
        self.assertRaises(ValueError, db.test.find().batch_size, -1)
        a = db.test.find()
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.batch_size, 5)

        def cursor_count(cursor, expected_count):
            count = 0
            for _ in cursor:
                count += 1
            self.assertEqual(expected_count, count)

        cursor_count(db.test.find().batch_size(0), 200)
        cursor_count(db.test.find().batch_size(1), 200)
        cursor_count(db.test.find().batch_size(2), 200)
        cursor_count(db.test.find().batch_size(5), 200)
        cursor_count(db.test.find().batch_size(100), 200)
        cursor_count(db.test.find().batch_size(500), 200)

        cursor_count(db.test.find().batch_size(0).limit(1), 1)
        cursor_count(db.test.find().batch_size(1).limit(1), 1)
        cursor_count(db.test.find().batch_size(2).limit(1), 1)
        cursor_count(db.test.find().batch_size(5).limit(1), 1)
        cursor_count(db.test.find().batch_size(100).limit(1), 1)
        cursor_count(db.test.find().batch_size(500).limit(1), 1)

        cursor_count(db.test.find().batch_size(0).limit(10), 10)
        cursor_count(db.test.find().batch_size(1).limit(10), 10)
        cursor_count(db.test.find().batch_size(2).limit(10), 10)
        cursor_count(db.test.find().batch_size(5).limit(10), 10)
        cursor_count(db.test.find().batch_size(100).limit(10), 10)
        cursor_count(db.test.find().batch_size(500).limit(10), 10)

    def test_limit_and_batch_size(self):
        db = self.db
        db.test.drop()
        for x in range(500):
            db.test.save({"x": x})

        curs = db.test.find().limit(0).batch_size(10)
        curs.next()
        self.assertEqual(10, curs._Cursor__retrieved)

        curs = db.test.find().limit(-2).batch_size(0)
        curs.next()
        self.assertEqual(2, curs._Cursor__retrieved)

        curs = db.test.find().limit(-4).batch_size(5)
        curs.next()
        self.assertEqual(4, curs._Cursor__retrieved)

        curs = db.test.find().limit(50).batch_size(500)
        curs.next()
        self.assertEqual(50, curs._Cursor__retrieved)

        curs = db.test.find().batch_size(500)
        curs.next()
        self.assertEqual(500, curs._Cursor__retrieved)

        curs = db.test.find().limit(50)
        curs.next()
        self.assertEqual(50, curs._Cursor__retrieved)

        # these two might be shaky, as the default
        # is set by the server. as of 2.0.0-rc0, 101
        # or 1MB (whichever is smaller) is default
        # for queries without ntoreturn
        curs = db.test.find()
        curs.next()
        self.assertEqual(101, curs._Cursor__retrieved)

        curs = db.test.find().limit(0).batch_size(0)
        curs.next()
        self.assertEqual(101, curs._Cursor__retrieved)

    def test_skip(self):
        db = self.db

        self.assertRaises(TypeError, db.test.find().skip, None)
        self.assertRaises(TypeError, db.test.find().skip, "hello")
        self.assertRaises(TypeError, db.test.find().skip, 5.5)

        db.drop_collection("test")

        for i in range(100):
            db.test.save({"x": i})

        for i in db.test.find():
            self.assertEqual(i["x"], 0)
            break

        for i in db.test.find().skip(20):
            self.assertEqual(i["x"], 20)
            break

        for i in db.test.find().skip(99):
            self.assertEqual(i["x"], 99)
            break

        for i in db.test.find().skip(1):
            self.assertEqual(i["x"], 1)
            break

        for i in db.test.find().skip(0):
            self.assertEqual(i["x"], 0)
            break

        for i in db.test.find().skip(0).skip(50).skip(10):
            self.assertEqual(i["x"], 10)
            break

        for i in db.test.find().skip(1000):
            self.fail()

        a = db.test.find()
        a.skip(10)
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.skip, 5)

    def test_sort(self):
        db = self.db

        self.assertRaises(TypeError, db.test.find().sort, 5)
        self.assertRaises(ValueError, db.test.find().sort, [])
        self.assertRaises(TypeError, db.test.find().sort, [], ASCENDING)
        self.assertRaises(TypeError, db.test.find().sort,
                          [("hello", DESCENDING)], DESCENDING)
        self.assertRaises(TypeError, db.test.find().sort, "hello", "world")

        db.test.drop()

        unsort = range(10)
        random.shuffle(unsort)

        for i in unsort:
            db.test.save({"x": i})

        asc = [i["x"] for i in db.test.find().sort("x", ASCENDING)]
        self.assertEqual(asc, range(10))
        asc = [i["x"] for i in db.test.find().sort("x")]
        self.assertEqual(asc, range(10))
        asc = [i["x"] for i in db.test.find().sort([("x", ASCENDING)])]
        self.assertEqual(asc, range(10))

        expect = range(10)
        expect.reverse()
        desc = [i["x"] for i in db.test.find().sort("x", DESCENDING)]
        self.assertEqual(desc, expect)
        desc = [i["x"] for i in db.test.find().sort([("x", DESCENDING)])]
        self.assertEqual(desc, expect)
        desc = [i["x"] for i in
                db.test.find().sort("x", ASCENDING).sort("x", DESCENDING)]
        self.assertEqual(desc, expect)

        expected = [(1, 5), (2, 5), (0, 3), (7, 3), (9, 2), (2, 1), (3, 1)]
        shuffled = list(expected)
        random.shuffle(shuffled)

        db.test.drop()
        for (a, b) in shuffled:
            db.test.save({"a": a, "b": b})

        result = [(i["a"], i["b"]) for i in
                  db.test.find().sort([("b", DESCENDING),
                                       ("a", ASCENDING)])]
        self.assertEqual(result, expected)

        a = db.test.find()
        a.sort("x", ASCENDING)
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.sort, "x", ASCENDING)

    def test_count(self):
        db = self.db
        db.test.drop()

        self.assertEqual(0, db.test.find().count())

        for i in range(10):
            db.test.save({"x": i})

        self.assertEqual(10, db.test.find().count())
        self.assertTrue(isinstance(db.test.find().count(), int))
        self.assertEqual(10, db.test.find().limit(5).count())
        self.assertEqual(10, db.test.find().skip(5).count())

        self.assertEqual(1, db.test.find({"x": 1}).count())
        self.assertEqual(5, db.test.find({"x": {"$lt": 5}}).count())

        a = db.test.find()
        b = a.count()
        for _ in a:
            break
        self.assertEqual(b, a.count())

        self.assertEqual(0, db.test.acollectionthatdoesntexist.find().count())

    def test_where(self):
        db = self.db
        db.test.drop()

        a = db.test.find()
        self.assertRaises(TypeError, a.where, 5)
        self.assertRaises(TypeError, a.where, None)
        self.assertRaises(TypeError, a.where, {})

        for i in range(10):
            db.test.save({"x": i})

        self.assertEqual(3, len(list(db.test.find().where('this.x < 3'))))
        self.assertEqual(3,
                         len(list(db.test.find().where(Code('this.x < 3')))))
        self.assertEqual(3, len(list(db.test.find().where(Code('this.x < i',
                                                               {"i": 3})))))
        self.assertEqual(10, len(list(db.test.find())))

        self.assertEqual(3, db.test.find().where('this.x < 3').count())
        self.assertEqual(10, db.test.find().count())
        self.assertEqual(3, db.test.find().where(u'this.x < 3').count())
        self.assertEqual([0, 1, 2],
                         [a["x"] for a in
                          db.test.find().where('this.x < 3')])
        self.assertEqual([],
                         [a["x"] for a in
                          db.test.find({"x": 5}).where('this.x < 3')])
        self.assertEqual([5],
                         [a["x"] for a in
                          db.test.find({"x": 5}).where('this.x > 3')])

        cursor = db.test.find().where('this.x < 3').where('this.x > 7')
        self.assertEqual([8, 9], [a["x"] for a in cursor])

        a = db.test.find()
        b = a.where('this.x > 3')
        for _ in a:
            break
        self.assertRaises(InvalidOperation, a.where, 'this.x < 3')

    def test_rewind(self):
        self.db.test.save({"x": 1})
        self.db.test.save({"x": 2})
        self.db.test.save({"x": 3})

        cursor = self.db.test.find().limit(2)

        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)

        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(0, count)

        cursor.rewind()
        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)

        cursor.rewind()
        count = 0
        for _ in cursor:
            break
        cursor.rewind()
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)

        self.assertEqual(cursor, cursor.rewind())

    def test_clone(self):
        self.db.test.save({"x": 1})
        self.db.test.save({"x": 2})
        self.db.test.save({"x": 3})

        cursor = self.db.test.find().limit(2)

        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)

        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(0, count)

        cursor = cursor.clone()
        cursor2 = cursor.clone()
        count = 0
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)
        for _ in cursor2:
            count += 1
        self.assertEqual(4, count)

        cursor.rewind()
        count = 0
        for _ in cursor:
            break
        cursor = cursor.clone()
        for _ in cursor:
            count += 1
        self.assertEqual(2, count)

        self.assertNotEqual(cursor, cursor.clone())

        class MyClass(dict):
            pass

        cursor = self.db.test.find(as_class=MyClass)
        for e in cursor:
            self.assertEqual(type(MyClass()), type(e))
        cursor = self.db.test.find(as_class=MyClass)
        self.assertEqual(type(MyClass()), type(cursor[0]))

        # Just test attributes
        cursor = self.db.test.find(skip=1,
                                   timeout=False,
                                   snapshot=True,
                                   tailable=True,
                                   as_class=MyClass,
                                   slave_okay=True,
                                   await_data=True,
                                   partial=True,
                                   manipulate=False).limit(2)
        cursor.add_option(64)

        cursor2 = cursor.clone()
        self.assertEqual(cursor._Cursor__skip, cursor2._Cursor__skip)
        self.assertEqual(cursor._Cursor__limit, cursor2._Cursor__limit)
        self.assertEqual(cursor._Cursor__timeout, cursor2._Cursor__timeout)
        self.assertEqual(cursor._Cursor__snapshot, cursor2._Cursor__snapshot)
        self.assertEqual(cursor._Cursor__tailable, cursor2._Cursor__tailable)
        self.assertEqual(type(cursor._Cursor__as_class),
                         type(cursor2._Cursor__as_class))
        self.assertEqual(cursor._Cursor__slave_okay,
                         cursor2._Cursor__slave_okay)
        self.assertEqual(cursor._Cursor__await_data,
                         cursor2._Cursor__await_data)
        self.assertEqual(cursor._Cursor__partial, cursor2._Cursor__partial)
        self.assertEqual(cursor._Cursor__manipulate,
                         cursor2._Cursor__manipulate)
        self.assertEqual(cursor._Cursor__query_flags,
                         cursor2._Cursor__query_flags)

    def test_add_remove_option(self):
        cursor = self.db.test.find()
        self.assertEqual(0, cursor._Cursor__query_options())
        cursor.add_option(2)
        cursor2 = self.db.test.find(tailable=True)
        self.assertEqual(2, cursor2._Cursor__query_options())
        self.assertEqual(cursor._Cursor__query_options(),
                         cursor2._Cursor__query_options())
        cursor.add_option(32)
        cursor2 = self.db.test.find(tailable=True, await_data=True)
        self.assertEqual(34, cursor2._Cursor__query_options())
        self.assertEqual(cursor._Cursor__query_options(),
                         cursor2._Cursor__query_options())
        cursor.add_option(128)
        cursor2 = self.db.test.find(tailable=True,
                                    await_data=True).add_option(128)
        self.assertEqual(162, cursor2._Cursor__query_options())
        self.assertEqual(cursor._Cursor__query_options(),
                         cursor2._Cursor__query_options())

        self.assertEqual(162, cursor._Cursor__query_options())
        cursor.add_option(128)
        self.assertEqual(162, cursor._Cursor__query_options())

        cursor.remove_option(128)
        cursor2 = self.db.test.find(tailable=True, await_data=True)
        self.assertEqual(34, cursor2._Cursor__query_options())
        self.assertEqual(cursor._Cursor__query_options(),
                         cursor2._Cursor__query_options())
        cursor.remove_option(32)
        cursor2 = self.db.test.find(tailable=True)
        self.assertEqual(2, cursor2._Cursor__query_options())
        self.assertEqual(cursor._Cursor__query_options(),
                         cursor2._Cursor__query_options())

        self.assertEqual(2, cursor._Cursor__query_options())
        cursor.remove_option(32)
        self.assertEqual(2, cursor._Cursor__query_options())

    def test_count_with_fields(self):
        self.db.test.drop()
        self.db.test.save({"x": 1})

        if not version.at_least(self.db.connection, (1, 1, 3, -1)):
            for _ in self.db.test.find({}, ["a"]):
                self.fail()

            self.assertEqual(0, self.db.test.find({}, ["a"]).count())
        else:
            self.assertEqual(1, self.db.test.find({}, ["a"]).count())

    def test_bad_getitem(self):
        self.assertRaises(TypeError, lambda x: self.db.test.find()[x], "hello")
        self.assertRaises(TypeError, lambda x: self.db.test.find()[x], 5.5)
        self.assertRaises(TypeError, lambda x: self.db.test.find()[x], None)

    def test_getitem_slice_index(self):
        self.db.drop_collection("test")
        for i in range(100):
            self.db.test.save({"i": i})

        count = itertools.count

        self.assertRaises(IndexError, lambda: self.db.test.find()[-1:])
        self.assertRaises(IndexError, lambda: self.db.test.find()[1:2:2])

        for a, b in zip(count(0), self.db.test.find()):
            self.assertEqual(a, b['i'])

        self.assertEqual(100, len(list(self.db.test.find()[0:])))
        for a, b in zip(count(0), self.db.test.find()[0:]):
            self.assertEqual(a, b['i'])

        self.assertEqual(80, len(list(self.db.test.find()[20:])))
        for a, b in zip(count(20), self.db.test.find()[20:]):
            self.assertEqual(a, b['i'])

        for a, b in zip(count(99), self.db.test.find()[99:]):
            self.assertEqual(a, b['i'])

        for i in self.db.test.find()[1000:]:
            self.fail()

        self.assertEqual(5, len(list(self.db.test.find()[20:25])))
        self.assertEqual(5, len(list(self.db.test.find()[20L:25L])))
        for a, b in zip(count(20), self.db.test.find()[20:25]):
            self.assertEqual(a, b['i'])

        self.assertEqual(80, len(list(self.db.test.find()[40:45][20:])))
        for a, b in zip(count(20), self.db.test.find()[40:45][20:]):
            self.assertEqual(a, b['i'])

        self.assertEqual(80,
                         len(list(self.db.test.find()[40:45].limit(0).skip(20))
                            )
                        )
        for a, b in zip(count(20),
                         self.db.test.find()[40:45].limit(0).skip(20)):
            self.assertEqual(a, b['i'])

        self.assertEqual(80,
                         len(list(self.db.test.find().limit(10).skip(40)[20:]))
                        )
        for a, b in zip(count(20),
                         self.db.test.find().limit(10).skip(40)[20:]):
            self.assertEqual(a, b['i'])

        self.assertEqual(1, len(list(self.db.test.find()[:1])))
        self.assertEqual(5, len(list(self.db.test.find()[:5])))

        self.assertEqual(1, len(list(self.db.test.find()[99:100])))
        self.assertEqual(1, len(list(self.db.test.find()[99:1000])))
        self.assertEqual(0, len(list(self.db.test.find()[10:10])))
        self.assertEqual(0, len(list(self.db.test.find()[:0])))
        self.assertEqual(80,
                         len(list(self.db.test.find()[10:10].limit(0).skip(20))
                            )
                        )

        self.assertRaises(IndexError, lambda: self.db.test.find()[10:8])

    def test_getitem_numeric_index(self):
        self.db.drop_collection("test")
        for i in range(100):
            self.db.test.save({"i": i})

        self.assertEqual(0, self.db.test.find()[0]['i'])
        self.assertEqual(50, self.db.test.find()[50]['i'])
        self.assertEqual(50, self.db.test.find().skip(50)[0]['i'])
        self.assertEqual(50, self.db.test.find().skip(49)[1]['i'])
        self.assertEqual(50, self.db.test.find()[50L]['i'])
        self.assertEqual(99, self.db.test.find()[99]['i'])

        self.assertRaises(IndexError, lambda x: self.db.test.find()[x], -1)
        self.assertRaises(IndexError, lambda x: self.db.test.find()[x], 100)
        self.assertRaises(IndexError,
                          lambda x: self.db.test.find().skip(50)[x], 50)

    def test_count_with_limit_and_skip(self):
        if not version.at_least(self.db.connection, (1, 1, 4, -1)):
            raise SkipTest()

        def check_len(cursor, length):
            self.assertEqual(len(list(cursor)), cursor.count(True))
            self.assertEqual(length, cursor.count(True))

        self.db.drop_collection("test")
        for i in range(100):
            self.db.test.save({"i": i})

        check_len(self.db.test.find(), 100)

        check_len(self.db.test.find().limit(10), 10)
        check_len(self.db.test.find().limit(110), 100)

        check_len(self.db.test.find().skip(10), 90)
        check_len(self.db.test.find().skip(110), 0)

        check_len(self.db.test.find().limit(10).skip(10), 10)
        check_len(self.db.test.find()[10:20], 10)
        check_len(self.db.test.find().limit(10).skip(95), 5)
        check_len(self.db.test.find()[95:105], 5)

    def test_len(self):
        self.assertRaises(TypeError, len, self.db.test.find())

    def test_properties(self):
        self.assertEqual(self.db.test, self.db.test.find().collection)

        def set_coll():
            self.db.test.find().collection = "hello"

        self.assertRaises(AttributeError, set_coll)

    def test_get_more(self):
        db = self.db
        db.drop_collection("test")
        db.test.insert([{'i': i} for i in range(10)])
        self.assertEqual(10, len(list(db.test.find().batch_size(5))))

    def test_tailable(self):
        db = self.db
        db.drop_collection("test")
        db.create_collection("test", capped=True, size=1000)

        cursor = db.test.find(tailable=True)

        db.test.insert({"x": 1})
        count = 0
        for doc in cursor:
            count += 1
            self.assertEqual(1, doc["x"])
        self.assertEqual(1, count)

        db.test.insert({"x": 2})
        count = 0
        for doc in cursor:
            count += 1
            self.assertEqual(2, doc["x"])
        self.assertEqual(1, count)

        db.test.insert({"x": 3})
        count = 0
        for doc in cursor:
            count += 1
            self.assertEqual(3, doc["x"])
        self.assertEqual(1, count)

        self.assertEqual(3, db.test.count())
        db.drop_collection("test")

    def test_distinct(self):
        if not version.at_least(self.db.connection, (1, 1, 3, 1)):
            raise SkipTest()

        self.db.drop_collection("test")

        self.db.test.save({"a": 1})
        self.db.test.save({"a": 2})
        self.db.test.save({"a": 2})
        self.db.test.save({"a": 2})
        self.db.test.save({"a": 3})

        distinct = self.db.test.find({"a": {"$lt": 3}}).distinct("a")
        distinct.sort()

        self.assertEqual([1, 2], distinct)

        self.db.drop_collection("test")

        self.db.test.save({"a": {"b": "a"}, "c": 12})
        self.db.test.save({"a": {"b": "b"}, "c": 8})
        self.db.test.save({"a": {"b": "c"}, "c": 12})
        self.db.test.save({"a": {"b": "c"}, "c": 8})

        distinct = self.db.test.find({"c": 8}).distinct("a.b")
        distinct.sort()

        self.assertEqual(["b", "c"], distinct)

    def test_max_scan(self):
        if not version.at_least(self.db.connection, (1, 5, 1)):
            raise SkipTest()

        self.db.drop_collection("test")
        for _ in range(100):
            self.db.test.insert({})

        self.assertEqual(100, len(list(self.db.test.find())))
        self.assertEqual(50, len(list(self.db.test.find(max_scan=50))))
        self.assertEqual(50, len(list(self.db.test.find()
                                      .max_scan(90).max_scan(50))))

    def test_with_statement(self):
        if sys.version_info < (2, 6):
            raise SkipTest()

        self.db.drop_collection("test")
        for _ in range(100):
            self.db.test.insert({})

        c1 = self.db.test.find()
        exec """
with self.db.test.find() as c2:
    self.assertTrue(c2.alive)
self.assertFalse(c2.alive)

with self.db.test.find() as c2:
    self.assertEqual(100, len(list(c2)))
self.assertFalse(c2.alive)
"""
        self.assertTrue(c1.alive)

if __name__ == "__main__":
    unittest.main()


text:
The curious case of Chaos Walking
Movies Tue 9 Jul 2019
As I write this it's Tues 9th July and I've just stumbled across a film called Chaos Walking.
This is unusual, not only because the film stars a few actors I quite like, Tom Holland (Spider-man), Daisy Ridley (Star Wars) and Mads Mikkelson (Rogue One, Doctor Strange), and falls under genres I enjoy, sci-fi-action-thriller, but because the film was due out 1st March 2019.
So what's going on? Surely this should be a home run for Lions Gate?
Based on the best selling 'Chaos Walking' trilogy of books by Patrick Ness, the movie tells the story of the first book in the series 'The Knife of Never Letting Go'.
Set in a men-only colony on a distant planet called "New World", everyone can hear the thoughts of every other person and animal, making life a little chaotic, and referred to as the 'Noise'. When one man, Todd Hewitt (Tom Holland), comes across a patch of silence in the world, he discovers a woman Viola Eade (Daisy Ridley). Now believing not everything is as it seems the pair go on the run from the colonies mayor David Prentiss (Mads Mikkelson) in an attempt to discover the truth about the strange planet they inhabit.
Sounds like a solid enough plot, right?
Tom Holland and Daisy Ridley on set in Chaos Walking
Directed by Doug Liman (Jumper, Edge of Tomorrow), the screenplay was written by Charlie Kaufman, Jamie Linden, Patrick Ness, Lindsey Beer, Gary Spinelli and John Lee Hancock. That's six people with writing credits, getting worried yet?
The film shot for four months in late 2017, between August and November, in Canada, Scotland and Iceland, with everything seemingly running pretty smoothly. And with a release date of 1st March 2019, that should've been plenty of time to get visual effects wrapped up and the movie edited ready for general consumption.
A trailer for the movie has still not been released.
According to the Wall Street Journal, buried in an article about issues within Lions Gate, the first cut of the film was such a mess it was branded "unreleasable" by those that saw it. Having already spent around $100 million on this potential new sci-fi trilogy Lions Gate was reluctant to let the efforts go to waste and ordered 3 weeks worth of reshoots to attempt to course correct the movie.
Mads Mikkelson on set in Chaos Walking
These reshoots were announced back in April 2018, but due the huge rise in demand for the two leads scheduling became a nightmare and the pair wouldn't get back in front of the cameras for Chaos Walking until April 2019, almost a year and a half after principal photography originally wrapped. The concern within the studio now is that the two young stars will have aged since originally filming their scenes so cuts between the two sets of footage may become jarring if not handed very carefully.
All this brings us pretty much up to date. The movie has no release date to speak of, but rumours say that Lions Gate may finally attempt some sort of closure by bringing the movie and it's stars to San Diego Comic-Con next week. Maybe a trailer is too much to hope for?
Will we ever see what remains of this movie? I'm now more interested than ever to see how it turns out, and that means they have at least 1 guaranteed ticket on opening day.
mads mikkelson
Video Spider-Man: Far From Home Trailer 2
Beware Endgame spoilers as Spider-Man goes on holiday.
Movies Mon 6 May
Video John Wick Hex Annoucement Trailer
"fight-choreographed chess brought to life as a video game", what more do you need to know?
Games Indie Thu 9 May
John Wick Hex annouced with trailer
The movie assassin gets his own game from Thomas Was Alone and Volume creator.
Article The curious case of Chaos Walking
Quiz Star Wars: Can you name the actor?

redpajama_set_name: RedPajamaCommonCrawl


text:
More pricing options for Virgin Media's TiVo to be revealed soon
Following up on Virgin's pre-registration offer for TiVo, Virgin Media staff member Digital Fanatic posted earlier on Cable Forum that:
There will be more announcements regarding pricing / options in the coming days..... that's all I can say for now....All will be revealed.... We can't say anything, sorry.
Analysis, reaction and a new poll for Virgin's Media's pre-registered offer for TiVo
The initial reaction to Virgin's TiVo offer to pre-registered customers has been met with some disappointment from various customers on-line, with the £40 installation fee in particular not being well received. Others say that for now, TiVo is a luxury product and is priced accordingly.
The email dispatched eariler reveals that acceptance of the offer will invoke a new 12 contract. While the XL TV pack requirement and £3 per month charge has been known for some time, the email also reveals that if you drop down to the M+ or L TV packs after getting TiVoed, the monthly charge increases to £8 per month. TiVo isn't available to TV M pack customers.
So, 'Dean', now the offer for pre-registered customers is out of the bag (£149 for the TiVo + £40 installation + £3 per month on XL), will you take Virgin up on it? That's the question for the new poll, which can be located at the top right of this blog's pages. Voting ends next Friday at 9pm. In the mean time, the PVR Comparison Document will be updated shortly to reflect today's news
Labels: poll, rollout
UPDATED: Virgin Media TiVo pre-sale event begins on April 11th for registered customers
Virgin Media customers who have pre-registered for TiVo have or should get this email (which assumes that all customers are called Dean):
Hello Dean,
Now here's something you don't see everyday. You've got the chance to be one of the first to order our amazing 1TB TiVo® box before everyone else because you're a Virgin Media customer and you pre-registered your interest in our TiVo service.
During the week beginning 11th April, we'll be opening an exclusive pre-sale event just for you, so you can order Virgin Media TV powered by TiVo. We'll email you the details on the day and you can be one of the first to get your hands on our latest kit before it goes on general sale.
Here's the deal:
# 1TB TiVo box
# £149.95 one-off activation fee exclusively for existing customers (everyone else pays £199.95)
# £3 additional monthly fee with TV XL
Our exclusive pre-sale event for the 1TB box is only available to you. Think of it as a little 'thank you' from us for being a Virgin Media customer and for being one of the very first to register your interest in our TiVo service.
We'll email you again during the week of 11th April to tell you more. If you'd like to take another look at what our TiVo service can do, head over to our Discover TiVo site for all the details.
Keep your eyes peeled on your inbox
The Virgin Media team
General: £40 installation fee applies. TiVo box remains property of Virgin Media. New 12-month minimum term contract applies. 1TB TiVo box: you must take, or upgrade to, TV XL to be eligible. If you cease to be an XL TV customer, we reserve the right to charge you the then applicable monthly TiVo charge (currently £8 for TV L or M+). TiVo is not available on TV M. Information about your TiVo use: By having the TiVo service and/or by using it you are providing your consent for us to use your viewing information to personalise your experience of the TiVo service (in addition to the other purposes set out in our privacy policy). We may share with third parties information about your use of the TiVo service in an aggregated form which will not personally identify you. This aggregated data may be used by those third parties for their marketing purposes (e.g. to improve their targeting of advertising based on user preferences).
UPDATED: Virgin have just resent the emails with the correct customer names.
Labels: rollout
BBC iPlayer app now delivers HD Catch-Up content on Virgin Media's TiVo
As reported by TechRadar (and eariler by the Virgin Media High Definition & TiVo Services Blog), the BBC iPlayer app has moved out of beta release and is now ready and willing to deliver HD Catch-Up content.
Other improvements include a much larger range of content (around 1000 hours compared to 350), radio shows, subtitling and signing. Virgin Media told TechRadar that:
The new service will also gain new functionality over time and supersedes the existing BBC iPlayer service on Virgin Media to provide the most complete TV on Demand service possible.
Labels: apps, iPlayer
What Hi-Fi get their hands on a Virgin Media TiVo: "So far, [its] looking good, but we need to spend more time with it before issuing our final verdict."
The latest review - or in this case, hands-on report - of Virgin Media's TiVo, can be located at What Hi-Fi. Reviewer Andy Clough thinks that:
So far, the Virgin TiVo box is looking good, but we need to spend more time with it before issuing our final verdict. We'll have a full review in the June issue of What Hi-Fi? Sound and Vision, on sale from May 10th.
In the meantime, Andy praised the BBC iPlayer app and the Catch-Up EPG, but:
...the biggest improvement is the inclusion of TiVo technology. For those not familiar with it, it's been a big hit in the States but less so (so far) over here.
Essentially TiVo analyses your viewing habits and the box uses smart technology to record automatically shows it thinks you might like. Very nifty. You can help it decide which programmes you like by using the thumbs up/thumbs down button on the remote (see below).
Press the thumbs up button three times and it will record similar genres of programme to the one you've rated highly; give a programme three thumbs down and it will know not to record that type of programming.
Read the full article at What Hi-Fi.
T3 reviews Virgin Media's TiVo: "While the usability issues are annoying, this is a big improvement on the old box."
While the Virgin Media TiVo boxes haven't been flying out as much as the majority of customers would like, at least the reviews are starting to fly in now. T3 is the latest site to take a close look at the next-generation PVR, they (like TechRadar) also gave 4 stars out of 5:
While the usability issues are annoying, this is a big improvement on the old box. The menus are slicker, it's easier to find the shows you want, and the remote is well laid out and simple to use. And the extras, though nice, are far from a deal breaker. The price will be a little high for some, with a £199 one off fee, £26.50 a month for the XL TiVo package of over 160 channels (including a phone line; it's £32.50 a month without), and a £40 installation fee. It's a shame, because if the price came down and the basic usability issues were ironed out, this'd really give Sky HD a run for its money.
TechRadar reviews Virgin Media's TiVo: "With a bit of polish, [this] will become the finest PVR on the market"
TechRadar's review of Virgin Media's TiVo is online now. Awarding the next-generation PVR 4 stars out of 5, TechRadar liked most of what they saw but they wish Virgin would give the whole package a polish:
Will it keep the TiVo fans and television nuts happy? Yes. Is it the most powerful box on the market? Yes. But is it better than Sky's flagship 1TB Sky+ HD box? Not yet. And it won't be until it's given a much needed polish.
We hope that the blips will be quickly wiped out as Virgin Media gathers feedback and improves its product, and we're always impressed by a product that gives you the power to do something seriously cool.
Perhaps the most important point about the TiVo box is that it takes the best points about being on cable – fast internet, instant HD on demand and the capacity to quickly suck in data, and makes them more fun, more usable and more powerful.
Sky's deep pockets, greater range of context and simpler user interface remain a powerful force in British pay-television, but finally we have a challenger with the power and the hardware to genuinely mount a challenge. And with a bit of polish, The Virgin Media powered by TiVo box will become the finest PVR on the market.
Read the full review at TechRadar, and compare Virgin Media TiVo to Sky's HD 1TB box in the PVR Comparison Document.
Labels: pvr comparison, reviews
UPDATED: Virgin Media TiVo 'Special Deal' emails to be sent this week to pre-registered customers; Order online?
As previously reported, Virgin will be dispatching emails this week to all customers who pre-registered for TiVo, all of those emails should be sent by Thursday - however, according this this post and this post by Virgin Media Staff member and Cable Forum poster Digital Fanatic:
A further mail will then be sent to invite you to order online in the following days...(this week's email is) a update email because they said they'd be in touch before the end of March. It's to make sure everyone is aware how the ordering process is going to go.
ElectricPig reviews Virgin Media's TiVo: "One of the best TV innovations we have seen released into the UK market"
ElectricPig.Co.Uk's review of Virgin's Media TiVo is online now, and reviewer Will Moore awarded the next-generation PVR 5 stars out of 5:
The Virgin Media TV powered by TiVo is one of the best TV innovations we have seen released into the UK market, and it easily trumps the Sky+ HD box in both looks and functionality.
At a £199 install price, and only a few pounds more a month, it's comparatively reasonable in price too.
It should be noted that you have to be on the Virgin XL TV pack to be eligible for TiVo at present, but we are sure this will change over time.
If you are already an XL customer, we highly recommend upgrading to the TiVo service – it really will change the way you watch TV forever, and if you are a Sky customer coming to the end of your contract – maybe now is the time to ditch the dish and enter the world of fibre optic.
Note that the £199 price is for new customers. Existing customers (at least, those lucky enough to have received a TiVo) have reported on various forums paying £149 for the box. The 'few pounds more a month' is actually £3 extra per month for both new and existing customers, plus a one-off charge of £40 for installation.
As reported yesterday, existing customers who have pre-registered for TiVo should be receiving emails from Virgin Media this week containing details of a 'special deal' and hopefully, the option to order a TiVo installation online.
In the mean time, you can read the full review of TiVo at ElectricPig.Co.Uk.
PVR Comparison Document updated; Virgin Media's TiVo vs V+ HD vs Sky+ HD 1TB
There's been a few updates to the PVR Comparison Document recently, including updated information on the number of recording hours for TiVo after the recent software updates; Clarification on the Sky HD channels available on the Virgin STBs, and updated Tuner information for TiVo and Sky+ HD.
Labels: pvr comparison
Virgin Media TiVo 'Special Deal' emails to be sent this week to pre-registered customers; Order online?
Virgin Media Staff member and Cable Forum poster Digital Fanatic has revealed that customers who pre-registered for TiVo should be receiving an email in the coming week - this email will contain details of a special deal for TiVo, plus hopefully (as previously reported), details of how to order your TiVo box online.
So, keep an eye on your inbox.
Virgin Media unleash another software update for TiVo
As reported on the TiVo Community Forums, another software update for Virgin Media's TiVo was released in the early hours of this morning. The included bug fixes/additional functionality are below:
New Lx loader to resolve Cisco failure to boot STBs.
SD recording menus default for series link now set for New and reruns.
Recording capacity accuracy improved
In the VOD navigation pane, the "available until" pane is now displayed correctly.
Greying out of channels now recovers when RF is recovered.
Channel logos no longer overlap programme synopsis.
So, what else was in the 3rd Tuner software update for Virgin Media's TiVo?
According to a reported post at the Virgin Media Community Tivo forum, below is the list of bugs fixed in the previous software update for Virgin's TiVo:
3rd Tuner support
Recommendations improved by incorporating customer collaborative Thumbs data into the Discovery bar and recorded recommendations
Box no longer displays 'Channel not authorised' during normal channel changes
Customers no longer PIN challenged on watershed compliant channels
Bookmarks supported in Movies
Trailers now available and working for movies
STB no longer reboots when return path is lost.
Green button now links to catch-up content correctly
Music playlist fixes
Metadata improvements
Quicker to restore TV service after reboot
Medium description utilised in VoD screens (adds rating guidance information)
User presented with choice of HD or SD assets in 'Get from On Demand' screen
Front panel LED's now function when box is in standby
Investment bank estimates cost of TiVo deal for Virgin Media to be £29 million
As the majority of disappointed customers learn that they haven't won Virgin's latest TiVo lottery (hell, I didn't even get an email), an old PaidContent:UK report reveals what the TiVo deal is costing Virgin:
Investment bank Lazard Capital Markets estimates the hookup as a "$48 million deal" (£29 million) for TiVo, saying "the deal is multi-year, substantial, and has minimum guarantees".
From a Tivo SEC filing, some language on the Virgin deal: "The monthly fees, which commence upon delivery, are guaranteed and increase over time. The agreement has a multi-year term with additional limited renewal rights granted to Virgin. The agreement creates a mutually exclusive distribution arrangement under which TiVo will develop software for DVR set top box platforms and non-DVR set top boxes that will be deployed in the future by Virgin in the United Kingdom. Virgin Media will promote the product and will have exclusive rights to use the TiVo brand and technology in the United Kingdom. As part of the agreement, Virgin Media and TiVo have entered into a mutual covenant not to assert with regards to each party's intellectual property."
3rd tuner activated for Virgin Media's TiVo; Record 3 programmes while watching a recording? Yes it can!
Its been promised, and now, its here. In the early hours of this morning, Virgin dispatched a software update for their TiVo boxes to activate the 3rd tuner. Rejoice.
But wait - not only does this allow the TiVo to record 2 programmes while you're watching live TV/VOD content/another recording, but you can record 3 programmes simultaneously! Better yet, you can watch a recording while recording 3 programmes simultaneously! This is a significant upgrade over Virgin's V+ HD (3 tuners) and Sky's HD (2 tuners), which always use 1 tuner to display the current programme/VOD content.
The software update has also improved the calculation used to report available recording hours. Pre-update, the TiVo reported an available 325 hours of Standard-Definition recording and 99 hours of High-Definition recording. Post-update, that's changed to 477 hours of Standard-Definition recording and 121 hours of High-Definition recording.
According to this thread at the TiVo Community Forums, the update doesn't appear to have killed off any reported bugs, but another update (pre-April?) will hopefully take care of those.
Labels: tuners
Today is the last chance to pre-register your interest in Virgin Media's TiVo
The pre-registration form for Virgin Media's TiVo is now requesting that interested customers sign up before tomorrow (March 13th):
Our new TiVo service is launching. We can hardly wait! Enter your details [into the form] before 13th March 2011 to be the first to find out more.
As previously reported, Virgin will be contacting pre-registered customers via email towards the end of March. That email will contain details of how to order your TiVo online. The rollout of TiVo to new customers is expected to start in April.
Sir Richard Branson believes that TiVo is Virgin Media's weapon against Sky
Virgin founder Sir Richard Branson talked to TechRadar about Virgin Media's next-generation PVR, and how its the tip of the spear aimed at Sky:
I think that it is fantastic. There's numerous things one can do and I think that we have finally got a weapon that can give Sky a run for their money.
We may well get thousands of people switching over from Sky to Virgin; it's a weapon that we've got that they can never develop which obviously gives us a bit of an advantage.
The only problem is whether I have to sell my island to move to a place where I can get TiVo, someone suggested that I swap Necker Island for the Isle of Wight so I'm going to have to work out if I go that far or maybe lay an enormous cable from here to the Caribbean; that would be tremendous.
Are Virgin Media preparing to unleash a cheaper TiVo?
Square Eyes has informed the Virgin Media High Definition & TiVo Services Blog that a new version of the TiVo box will be available soon for £49.95 (plus £40 installation fee and £3 per month TiVo fee).
This cheaper version would include a 500Gb hard drive. If the 1TB version is any indication, the 500Gb version would be capable of holding around 162 hours of standard definition recording, or around 50 hours of high-definition recordings.
While there's no official word from Virgin yet on this version of the next-generation PVR, such a version would fit in with previous announced plans to introduce a family of TiVo products for the Digital Cable network, as well as making TiVo an much more attractive (and affordable) option for Virgin Media customers.
Software development and rollout details for Virgin Media's TiVo
TiVO Community Forum Poster Technix has re-posted the following from the Official Virgin Media Forum:
Firstly I hope you are enjoying use of your new Virgin Media TV service powered by Tivo.
I wanted to share some good news which is that we have now launched the BBC iplayer app in our Apps and Games section! Please check it out and let us know your thoughts.
I also wanted to let you know that we are working hard to prepare the product for general commercial availability, which we expect to be in April.
In particular we are in the final stages of creating the the triple tuner functionality (allowing you to record/watch up to 3 channels simultaneously) and we anticipate releasing this software to your boxes around the middle of March. This software will also contain significant bug fixes and other improvements.
I'd also like to address some specific issues which have cropped up quite frequently:
---- Reminders: In "Tivo world" reminders do not exist, because in a world where you have a massive hard disk plus our upcoming three tuners, there is less and less need to watch TV according to reminders. The easiest thing is to simply record programmes if the timing is not convenient for you. We realise this is different to the way some people use our current V+ service but we do believe that "Tivo-type" usage will eventually overtake the use of reminders.
---- Padding: ie giving recordings "leeway" either side to ensure that endings or starts are not missed. We definitely understand the importance of this and is a high priority in our roadmap. Given the cycle of code releases we have with Tivo, this is likely to be available in September.
---- Multitap text entry: Again we understand the importance of this and indeed we do have this on several of our Apps. For core Tivo Search we anticipate this being available in September.
---- Some channels not playing in Picture-in-Graphic (the small video window when you're looking at menus): This is a legal rights-based issue and is the same for our V+ service.
---- Tivo Suggestions in your recordings: Most people are finding these great, while some are finding these more random! Anyway this element of the service should get better and better, especially the more you use Thumbs Up and Down. I would strongly encourage you to use the Thumbs (especially giving more than 2 Thumbs either way!) to allow the system to learn better about you.
---- Finally, regarding our roll out plans, we have deliberately phased the roll-out to non-staff in a VERY tightly controlled way, prior to general commercial availability. We have run 3 promotions - an offer to 1000 of our VIPs (VIPs are our highest spending customers), a prize draw of 1000 Tivo boxes among all XL TV customers who also have Broadband and Telephony from Virgin Media, and a specific promotion to Tivo series 1 users. This has been deliberately done in order to control the roll-out to a very limited numbers of customers. When we move towards general availability we will prioritise those customers who have pre-registered their interest. We realise this has caused some "healthy impatience" in our marketplace but we feel this is right way to manage a controlled release of the product.
Labels: rollout, tuners
Virgin Media to allow pre-registered customers to order TiVo online
Virgin Media Staff member and Cable Forum poster Digital Fanatic has posted updates here and here on how Virgin plan to contact customers who pre-registered for TiVo:
I've been told that pre regs will recieve a special email with ordering details, you will then order online before any other customers.
Once all pre regs have install dates, then it will be opened up to other customers and then new customers after that.
You should get your email towards the end of the month....It's going to be quicker than calling everyone and you should have an install in April.
Telco 2.0 compares Virgin Media's TiVo to other platforms/PVRs
Telco2's analysis of Virgin Media's recent investor day includes comments about how the cable company can use TiVo as a TV differentiator:
We are enormously impressed by the TiVo box, and we have no doubt that this is a better product than either the Sky+ HD box or the forthcoming YouView box.
The User Interface looks great and vastly improves search and discovery. That is before the forthcoming tablet and mobile applications. Our favourite bit is that [Virgin] now has total flexibility between nVOD based on their catch-up service, and user defined record+play through the PVR functionality - and it's all done in a easy to understand way.
....What sets the box apart is that there is an in-built modem with a dedicated 10-meg connection to the Internet on totally separate bandwidth to normal household access. No-one else will be able to match this fire power. There are rumours suggesting that the reason for the dedicated bandwidth is that there is content caching and p2p technology within the box which will further improve experience within cable network segments as penetration increases.
This follows a key principle of network theory - the cheapest and wisest place to put intelligence is at the edge of the network. It relegates BT's Content Connect service to a second rate citizen before it is even launched.
That is before the all the other features and upstream benefits that the TiVo platform offers, especially in the area of audience measurement and advert insertion - which will become more critical as more TV consumption moves from linear to on-demand. In addition, the TiVo box has the ability to add applications, such as games, within a well-known flash-development environment.
The [Virgin] plan that the TiVo box is a product for all their customers is eminently sensible and follows BSkyB's simple-is-better philosophy. There is a 3-to-4 year timeframe to replace their current Liberate platform in all their homes. However, BSkyB definitely have a big head start with most of their c. 3m HD-boxes ready for the on-demand upgrade.
Curbing our enthusiasm, this is currently a strategic advantage, but it is one which is replicable over time. TiVo is a great partner, but whether they can keep up with the rate of industry innovation is another matter.
Pocket-Lint reviews Virgin Media's TiVo
Pocket-Lint's screen-shot packed review is online now, and reviewer Rik Henderson appears to like the next-generation PVR, awarding it 4 and a half stars out of 5, along with 'Hot Product' status:
So there you have it the Virgin Media TV powered by TiVo box – not just an upgrade for the company, but perhaps television per se. At £199, the "activation fee" may seem steep to some, especially when combined with the £40 installation cost and £3 per month extra on the bill, but not only is it cheaper than Sky's initial HD device was when it was launched, it's also a small price to pay for a remarkably powerful slice of technology.
It does suffer from the occasional gltch, after all these are early days and teething troubles are to be expected, but it is undoubtedly the future of TV. And it's here. Now.
Once you've spent some time navigating around the gloriously designed menu structure and search functionality, you may never want to rely on plain old linear TV again. It's all well and good having a billion HD channels, but if you can't choose what to watch when you want to watch it, and in such style to boot, then what's the point. There's never anything good on.
There is on Virgin Media's TiVo box.
TiVo talk from Virgin Media's Earnings Conference Call for Q4 & Full Year 2010
The transcript of Virgin Media's Earnings Conference Call for Q4 & Full Year 2010 is online, below are a few TiVo-related comments from Virgin Media's CEO, Neil Berkett:
The power of our fiber optic network allows us to create long-term sustainable network advantage, it gives us advantage in connectivity. We are now seeing how we can exploit that advantage in application, read TiVo, and you will see increasingly us taking a position in terms of convergence, it is the true digital story, and within that, we've continued to expand our video-on-demand, our HD, clearly we've launched TiVo, we've driven contract mobile through our market and as I've said, we've begun the journey of fixed mobile convergence.
....Clearly, the launch of TiVo, the launch of 100 megabits per second, more video-on-demand, more HD, what we're doing around convergence with mobile credits will continue, and that's what generated our growth to date.
....So it's no coincidence for example, that you've seen us launch our upgrade from 20 to 30 meg and we allowed our 20 meg customers to upgrade to 30 for a good 6 weeks before we launched the 30 meg to the marketplace. Sounds simple, but in the same way as it is only Virgin Media customers that are enjoying TiVo today and then we will launch TiVo to the marketplace in the second quarter.
And it all leverages back to our connectivity advantage, and it's not just about broadband. As we discussed at the Investor Day back in December, we have significant spectrum advantage. On average, 750 megahertz of spectrum into the home and the wonderful thing about technology today, if you need to realign it like shutting down analog channels to be able to run more HD channels or increase your bandwidth for upstream or create another IP pipe for the back of your TiVo box or enhance your video-on-demand capability, it can all be done, not on a dynamic basis but certainly on a planned basis, and that compares to the other fixed network in the country which operates on just over 30 megahertz. And as I often say, if you don't think we're comparing apples with apples, 750 to 30, halve it, you still don't believe me, halve it again. It is a massive, massive competitive advantage.
...It's not just about broadband, it's as much about the separate connection into the back of TiVo, it's as much about reallocating the spectrum to be able to take it where it needs to be. But connectivity is nothing without application, and application is nothing without connectivity. So we are the first major network operator to launch an IP TV platform that will ultimately reside on every one of our customers televisions, PCs, and mobile, it will be our middleware in a few years time, and it will be the glue that brings the TV, the social screen, the PC, the personal screen, the mobile, the remote screen whether that's a tablet or a smartphone altogether.
And it is so important because the application to open content, again a unique position of Virgin Media, we don't run exclusive wall gardens that you must use and you must view when I have it available for you. With TiVo we will be completely open. We have no fears of bringing a blockbuster or a love film on as an application into TiVo. Why? Because the application and content is the key to the wallet but in our case, it is not the wallet, which allows us to be completely open versus our competitors or major competitor in the space that needs to be closed. And you've seen the progress of next generation TV.
....Just a couple of other words on TiVo. I think it is a huge achievement that from the day that we decided that we were going to use TiVo as our middleware to the day that it was working and we launched it was just over 12 months. That is the sign of an organization that knows how to focus and it knows how to actually agree within itself what is right, because we're constantly, constantly facing investment decisions of choosing right from right. That is the hallmark of an organization that is focused, compare and contrast. With IP TV platforms on a global basis, that without exception are running late in terms of delivery.
BBC iPlayer app arrives on Virgin Media TiVo
According to this thread over at the TiVo Community Forums, the BBC iPlayer app has gone live on Virgin Media's TiVo.
Unlike the normal DVB-C app on the V and V+HD boxes, the app on TiVo uses the dedicated broadband connection to stream its content and appears to offer a wider selection of content compared to the app on Virgin's older STBs.
More pricing options for Virgin Media's TiVo to be...
Analysis, reaction and a new poll for Virgin's Med...
UPDATED: Virgin Media TiVo pre-sale event begins o...
BBC iPlayer app now delivers HD Catch-Up content o...
What Hi-Fi get their hands on a Virgin Media TiVo:...
T3 reviews Virgin Media's TiVo: "While the usabili...
TechRadar reviews Virgin Media's TiVo: "With a bit...
UPDATED: Virgin Media TiVo 'Special Deal' emails t...
ElectricPig reviews Virgin Media's TiVo: "One of t...
PVR Comparison Document updated; Virgin Media's Ti...
Virgin Media TiVo 'Special Deal' emails to be sent...
Virgin Media unleash another software update for T...
So, what else was in the 3rd Tuner software update...
Investment bank estimates cost of TiVo deal for Vi...
3rd tuner activated for Virgin Media's TiVo; Recor...
Today is the last chance to pre-register your inte...
Sir Richard Branson believes that TiVo is Virgin M...
Are Virgin Media preparing to unleash a cheaper Ti...
Software development and rollout details for Virgi...
Virgin Media to allow pre-registered customers to ...
Telco 2.0 compares Virgin Media's TiVo to other pl...
TiVo talk from Virgin Media's Earnings Conference ...


The Department of International Relations and International Organisation (IRIO) at the Faculty of Arts of the University of Groningen offers a full-time position for an Assistant Professor on Globalisation Studies and Humanitarian Action. The Department of IRIO is committed to top-tier research combined with high quality education. IRIO, with over 50 staff members, provides world-class, interdisciplinary and international bachelor and master degree programmes. Students and staff are drawn to studying international relations and the role of international organisation in an integrated manner from historical, political, economic and legal angles. The Department provides for an international working environment for an increasing number of foreign students and staff. The bachelor and master degree programmes are taught in English. There are currently about 1,000 students registered for the various IRIO programmes. Additionally, the Department contributes to the Erasmus Mundus 2-year master programme in International Humanitarian Action (NOHA), the research master's in Modern History and International Relations, and the Erasmus Mundus master programme on Euroculture. Research in the Department of IRIO is organised in the Centre for IR Research (CIRR) around five chairs, respectively in: History and Theory of IR; IR and Security Studies; International Political Economy; History and Theory of European Integration; and Globalisation Studies and Humanitarian Action.
The position combines teaching (60%) and research (40%) in the field of International Relations, with an emphasis on globalization and humanitarian action. In teaching, candidates are expected to provide BA and MA level courses as well as support PhD supervision. Depending on disciplinary background, candidates must be able to contribute to basic introductory courses in areas such as IR, international organisation and / or social science research methodologies; as well as specialized courses within the MA trajectory on international humanitarian action with a specific emphasis on the triangular interrelationship between humanitarian action, and conflict and security architecture.
In research the candidate is expected to contribute to, either the theoretical development of humanitarianism, or the development of humanitarian practice with an emphasis on field expertise. Thematically, we are looking for candidates with a specific interest in non-Western perspectives to humanitarianism, the link between humanitarianism and development, or the link between humanitarian ethics and globalization. Interaction and complementarity with other areas of intellectual strength in the group such as management of crisis situations, the reconfiguration of aid gouvernance, and evidence-based humanitarian programming, will be an advantage. The candidate will develop her/his own research projects (both individually and in small teams) and will contribute to wider research initiatives within the University and beyond. If appointed, the candidate is expected to actively contribute to a vibrant research environment by conducting and generating top research in international relations and by pursuing research grants and other forms of external funding.
The candidate will work in an interdisciplinary department. The candidate ideally has a background in International Relations and social sciences and has proven to be a global player vis-à-vis the many stakeholders in the issue areas of interest. We are looking for candidates with field experience and/or a strong theoretical strengths in the field of humanitarianism. The candidate should bring in an area of contacts in the relevant network of gouvernmental, intergouvernmental and non-gouvernmental organisations for future research acquisition purposes. The candidate will be a team player and will have demonstrable teaching experience.
• a plan for research (max. 2000 words) for the coming three years.
You can submit your application until 24 April 23:59pm / before 25 April 2019 Dutch local time by means of the application form (click on "Apply" below on the advertisement on the university website).
The procedure will include a lecture or a presentation as well as an interview. Samples of writing may be requested of shortlisted candidates. Please do not provide them in advance.
Interviews are scheduled for 22 May 2019.


4902 ST. RD. 25 W.
CUSTOM CUTS LAWN CARE INC.
7695 W. DIVISION LINE RD.
4542 S. COUNTY RD. 50 E.
5727 U.S. HIGHWAY 52 S.
5349 E. COLONIAL OAKS DR.
9742 N. CO. RD. 200 E.
JANSSEN LANDSCAPING & MAINTENANCE INC.
SMART LANDSCAPE & HAULING, INC.
SPRINGCREEK LANDSCAPING & NURSERY LLC.
ZEBRA LANDSCAPE & TREE CARE INC.
5411 ST. RD. 26 E.
FACEBOOK ZEBRA LANDSCAPE AND TREE CARE INC.


Welcome to Shipwrecked, the VBS where kids learn that Jesus rescues! Join us for a weeklong adventure that will help kids begin or deepen their faith by discovering that Jesus cares about them personally and rescues in life's toughest circumstances. Participants are in for a week full of fun, incredible music, and a relaxing island-getaway setting that all come together to point them to Jesus.
Our VBS is open to children entering K through 6th grade. Register your kids today and e-mail Nancy at ce@tlumc.org to volunteer as a leader or assistant!


Both physically and virtually, the technology continuously evolves workplaces. In recent years, a trend has been observed that workplaces have started to break down the walls in favor of open environments in order to foster improved collaborations. It is because, cloud-enabled tools are being introduced in the workplaces in order to meet the increasing demands of Next-Gen users and hence further teamwork is developed.
An ideal workplace of the future is the one that saves time and makes tasks simplified. It shall combine all relevant information related to documents, apps, emails, social media, marketing tools and collaboration tools, into one single interface with a single Login or controlled sign on. It shall be device and platform independent. The users shall be able to enhance their work with any kind of tools or new API Integrations into their systems. Furthermore, third party add-ons like file management and document add-ons and other things like social media profiles, digital marketing tools, etc. can also be integrated within the workspace making it a more robust and richer workplace user experience.


text:
Classical relative entropy
In probability theory and information theory, the Kullback-Leibler divergence, or relative entropy, is a quantity which measures the difference between two probability distributions. It is named after Solomon Kullback and Richard Leibler. The term "divergence" is a misnomer; it is not the same as divergence in calculus. One might be tempted to call it a "distance metric", but this would also be a misnomer as the Kullback-Leibler divergence is not symmetric and does not satisfy the triangle inequality.
The Kullback-Leibler divergence between two probability distributions p and q is defined as
$$\mathrm{KL}(p,q) = \sum_x p(x) \log_2 \frac{p(x)}{q(x)} \!$$
for distributions of a discrete variable, and as
$$\mathrm{KL}(p,q) = \int_{-\infty}^{\infty} p(x) \log_2 \frac{p(x)}{q(x)} \; dx \!$$
for distributions of a continuous random variable. The logarithms in these formulae are conventionally taken to base 2, so that the quantity can be interpreted in units of bits; the other important properties of the KL divergence hold irrespective of log base.
It can be seen from the definition that
KL(p, q) = − ∑xp(x)log2q(x) + ∑xp(x)log2p(x) = H(p, q) − H(p)
denoting by H(p,q) the cross entropy of p and q, and by H(p) the entropy of p. As the cross-entropy is always greater than or equal to the entropy, this shows that the Kullback-Leibler divergence is nonnegative, and furthermore KL(p,q) is zero iff p = q, a result known as Gibbs' inequality.
In coding theory, the KL divergence can be interpreted as the needed extra message-length per datum for sending messages distributed as q, if the messages are encoded using a code that is optimal for distribution p.
In Bayesian statistics the KL divergence can be used as a measure of the "distance" between the prior distribution and the posterior distribution. The KL divergence is also the gain in Shannon information involved in going from the prior to the posterior. In Bayesian experimental design a design which is optimised to maximise the KL divergence between the prior and the posterior is said to be Bayes d-optimal.
In quantum information science it is used as a measure of entanglement in a state.
It should be noted that Kullback and Leibler themselves actually defined the divergence as:
KL(p, q) + KL(q, p)
which is symmetric and nonnegative.
S. Kullback and R. A. Leibler. On information and sufficiency. Annals of Mathematical Statistics 22(1):79–86, March 1951.
Category:Classical Information Theory Category:Handbook of Quantum Information Category:Entropy


text:
alternative protein
Pandemic Proof: S2G Ventures on Why Resilient, Sustainable and Healthy Food Systems are More Important Than Ever
S2G Ventures' The Future of Food in the Age of COVID report explores the pandemic's impact on food & agriculture and identifies innovation opportunities.[...]
Toast Raises $400M, Blue Apron Eyes Sale + More
Source: Toast Every week we track the business, tech and investment trends in CPG, retail, restaurants, agriculture, cooking and health, so you don't have to. Here are some of this[...]
2018 U.S. Food & Beverage Startup Investment Report
Our 2018 U.S. Food & Beverage Startup Investment Report finds that over $1.45 billion was invested across 247 deals in 2018.[...]
Impossible Foods Raises $300M, Amex Aquires Resy + More
Rethinking Protein
Alternative proteins are increasingly becoming a staple of modern day diets. Consumer demand for ethical, sustainable and healthy sources of protein has fueled a growth in investme[...]
We are thrilled to partner with Ryan Williams to offer our first U.S. Branded Food Investment Report. A reformed banker, Ryan now leads finance and special projects for RISE Brewin[...]
Hormel's $850M Acquisition, HelloFresh Raises $369M IPO, CircleUp Closes $125M Fund + More
Every week we track the business, tech and investment trends in CPG, retail, restaurants, agriculture, cooking and health, so you don't have to. Here are some of this week's [...]
High-Profit Micro Farm, Weed CSAs, Munchery Losing Millions of Dollars a Month + More
Every week we track the business, tech and investment trends in CPG, retail, restaurants, agriculture, cooking and health, so you don't have to. Last week's top story was unsurpris[...]
Dining on the Future of Protein
The Future of Protein Dinner explores innovations in protein production & consumption from grass-fed & plant-based proteins to insects & cellular agriculture.[...]
Future Food-Tech Summit Comes To NYC May 24-25
Attend Future Food-Tech Summit in New York May 24-25 to connect with investors, startups and big food brands. [...]
Why Cellular Agriculture Is The Next Revolution In Food
Guest post by Isha Datar, CEO of New Harvest. The views expressed are are solely those of the author and do not reflect the views of Food+Tech Connect. At New Harvest, we're [...]
Millennial Food Innovators: C-fu Pioneers Bug Burgers, Beverages & Beyond
Guest post by Lorena Galvan, Thought For Food Ambassador. Millennial food innovators are pioneering a better food future from farm to fork. Our Millennial Innovators Uprooting Our [...]
$950M Pumped into Food Tech in Aug, Chinese Consumer Apps Burn Out: Weekly Top Stories
13 Startups Pioneering the Future of Protein
What does the future of protein hold? Is alternative protein the future of food? It will definitely play a big role, possibly making up one third of the protein market by 2050, acc[...]
HelloFresh Valued at $2.9B, The Business of Alternative Protein + More
Last Week's Top Food Tech & Innovation Stories
Announcing Alternative Protein Meetup with Exo, New Harvest, Sani + More
Are insects, cultured meat and meal replacement powders the key to building a better food future? Decide for yourself at this month's Food+Tech Meetup. We'll hea[...]
Q&A with Hampton Creek on Future of Food Tech, David Chang Launches Food Delivery Startup + More
Last week's top food tech news and innovation stories neatly curated for your viewing pleasure. [...]
2014 Food Trends: Health-Conscious, Female-Focused & Social
Every year, Food+Tech Connect dives into the trends that are transforming the way our food is produced, sold and consumed. Earlier this week, we published a roundup of the yearR[...]
Hacking Meat: "Cultured Beef"
Food+Tech Connect and GRACE Communications Foundation present Hacking Meat, an online conversation exploring how information and technology can be used to hack (or reimagine[...]


Carey joined Bradley Animal Hospital in June 1999. She graduated from Fort Hays State University in 1998 and became a Certified Veterinary Practice Manager in 2010. Carey enjoys the challenges of managing the animal hospital, training and leading the team and helping meet the needs of our clients and patients. When not at BAH, Carey can be found enjoying life with her children Marlon, Bella and Samuel, and dog Oso.
Lauren joined BAH in March 2017. She is attending the University of Kansas.
Miranda joined our crew in July 2017. She transferred from Hutchinson Community College and is attending the University of Kansas.
Lori has been one our nurses for several years. She is wonderful with cats who would really rather be somewhere other than our office! Lori is very dedicated to her job and appreciated by many of our clients.
Jill has worked in the veterinary field since she was 14! She graduated from KSU in 1999 and joined Bradley Animal Hospital in 2000. Jill enjoys all aspects of animal care and has a special interest in animal behavior. Jill lives in Baldwin City with her husband, Steve and 4 children; Maiya, Parker, Marshall and Paisley, her dog Disney and cats Fiona and Mr. Pickles. She enjoys spending time with her family outside, playing basketball, camping, cooking and doing stamp crafts. Jill has trained in all areas of the hospital and is eager to help wherever she is most needed!
Dominick graduated from KU in 2017. He hopes to be accepted to a veterinary school next year.
Abby graduated from KU in 2017. She began the veterinary program at Kansas State University in August 2017.
Molly joined Bradley Animal Hospital in November of 2006. Molly is very in-tune with all of the patients that stay in the hospital or boarding facility. She is very happy to care for your pets and give you updates throughout their stay!
Keri joined our team in June 2017. She is very attentive to the needs of our patients and can offered be overheard speaking gently to them while providing care.
Cherokee has always lived in a home with animals as part of her family and has wanted to work with them since she was three years old. Through an opportunity with Independence, Inc. and Heartland Works Cherokee was able to start her dream job at Bradley Animal Hospital when she was eighteen. "I have been given an opportunity to work with animals even though I have been profoundly deaf since toddlerhood." Cherokee has spent most of her life reading body language and feels she communicates well with the patients.
Casey joined us in December 2014. He jumped right in to help us with boarding through the holidays and we are very glad he did! Casey is happy to help wherever we need him.


text:
Home INDIA Bridging Communal Divide: Initiatives of Peace Centres Solidarity Network
NEHA DABHADE
Bridging Communal Divide: Initiatives of Peace Centres Solidarity Network
Centre for Study of Society and Secularism (CSSS) organised peace centres review meeting in Mumbai on 26th and 27th November 2021.
Peace centres train youth to understand diversity and communal harmony intervene during communal conflicts to build peace, monitor and document communal violence.
NEHA DABHADE | Clarion India
CENTRE for Study of Society and Secularism (CSSS) organised peace centres review meeting in Mumbai on 26th and 27th November 2021. Peace Centres from three regions- Ahmedabad (Hozefa Ujjaini), Bhagalpur (Rahul Rajeev from Paridhi), Kolkata (Subhopratim Roychowdhury, Mohit Ratnadip and Sominder Sarkar from AAMRA) and Saharanpur (Iram Usmani) were represented by peace activists working in the respective regions.
CSSS has been facilitating and supporting the network of peace centres which work with the aim of highlighting cultural diversity and composite culture in their respective areas and act as a bridge between communities. CSSS holds regular review meetings to plan, to strategise and to evaluate the work of the peace centres.
There is a network of peace centres partnering with CSSS which work relentless on the issues of diversity, composite culture, peace building and monitoring of communal violence. These peace centres are situated in regions prone to communal violence. These peace centres are run by team of committed peace workers. They train youth to understand diversity and communal harmony intervene during communal conflicts to build peace, monitor and document communal violence.
The peace centres focus on highlighting cultural diversity and towards this end undertake cultural festival to revisit composite culture through the mediums of dance, poetry and music. Over the years, the peace centres have been successful in highlighting composite culture and mediating in communal conflicts to establish dialogue and peace between communities. They have also been playing an important role filling gaps in data on communal violence by undertaking fact findings and bringing out reports.
The objectives of this meeting were as follows:
1. To understand the achievements, challenges and best practices of the peace centres in the year 2020-21
2. To plan for the future and establish synergy in the programmes of the different peace centres.
The two-day meeting begun with the Prof Indra Munshi addressing the meeting. She emphasised on the significance of diversity and democracy in a plural society like India. Her insights inspired the group. Dr Ram Puniyani addressed the meeting next and laid in front of everyone some of the concerns facing peace work in India. He urged the participants to engage in consolidating peace network and social media.
Each peace centre then reported about the work and processes that have taken place in their peace centres. Their presentation and reports included an overview of their work, their achievements, best practices which yielded good results for them and finally the challenges faced by the peace centres. The exercise of revisiting the desired impact and impact indicators was also undertaken and some relevant changes made in the impact indicators.
In the last two years, during the pandemic, the peace centres contributed immensely to the relief work during the lockdown. They reached out to the most marginalised groups- migrant workers, labourers, students, internally displaced persons, casual workers from the unorganised sector, poor women and riot victims. During this process, some of the peace workers from Kolkata and Ahmedabad contracted Covid. In a glimpse of their indomitable spirit, after recovering from the illness, they resumed relief work. The peace centres are focusing on a range of activities to meet the objectives of the peace centres. The activities range from celebrating festivals with a message of inclusion, observing important days related to constitution, revisiting freedom struggle icons and their ideas, organising poetry and song programmes and organising lectures on relevant topics.
The peace centres exchanged some best practices to learn from each other. The peace centres reported that some practices have worked out best for them to inch towards the desired objectives. For instance, the Ahmedabad peace centre found the poetry programmes – "Shaam-e- Aman" have helped it to reach out to the youth with a medium of expression which they use to build solidarity.
Bringing out reports on the status of communal violence in the state of Gujarat has also provided the peace centre with an opportunity to initiate a discussion and discourse with the necessary data. The Report titled, "Peaceful Gujarat: An Illusion or Truth" got wide media coverage. Bhagalpur peace centre has found benefits of celebrating festivals in an inclusive manner and giving a positive message of solidarity and unity. Kolkata peace centre has organised riot affected women from both Hindu and Muslim communities from Telanipara into self help groups who interact with each other in a positive and meaningful way building peace between both communities post violence. The youth group consisting of both the communities also perform together. All the peace centres felt that fact finding into communal violence and building solidarity networks has helped their work overall.
The peace centres have against all odds worked tirelessly to achieve its objectives. However, there have been some challenges plaguing the peace centres. The biggest challenge has been the Covid pandemic which has posed restrictions on meeting physically. This pandemic has also rendered the vulnerable sections more marginalised due to loss of employment, housing and expensive healthcare.
Thus, they felt need of the community is employment and other livelihood issues and not diversity. Thus, it's getting difficult to mobilise the community for programs on diversity or organising them around the issues related to diversity. The pandemic has equally affected the team members and volunteers of the peace centres who have to fend for their families in the face of loss of employment. The organising of cultural activities has suffered. The dwindling financial resources have also been a concern to scale up the activities of the peace centres. While before the pandemic, the community were contributing towards the activities of the peace centres.
The obstruction of the state in terms of discriminatory laws and institutionalised discrimination has posed a formidable challenge to peace work. These laws have lent legitimacy to discrimination and emboldened vigilante groups to indulge in hate crimes and openly intimidating peace workers and human rights defenders. Another major challenge has been the limited outreach of the peace centres through its activities. One of the ways to increase the outreach is to showcase its objectives and impact through social media. Drawing equal participation of women in the decision making of the peace centres and its leadership also has been a perennial concern.
The peace centres despite the challenges have achieved some remarkable achievements collectively. Firstly, they rose up to the challenge of the pandemic and immense human suffering. They distributed relief material at the cost of their health and safety and gained the confidence of the community. This has earned the peace centres respect of the communities and given the peace centres much needed presence in the communities. AMMRA in particular has been able to form self help groups for peace building. They have been able to form cultural groups who are performing together notwithstanding religious polarisation.
Due to the cultural walk undertaken by Ahmedabad peace centre, youth are getting a perspective on composite culture and heritage sites and intervening positively in conflicts involving reclaiming of sites of composite culture by right wing. This youth also participated in a fact finding and attempted to stop violence. AMMRA and Ahmedabad peace centre have undertaken fact findings in the past two years and created alternative discourse on communal conflicts and bringing facts to light which are not covered by mainstream media.
Future Direction
The second day of the meeting was spent in planning for the future of the peace centres- individually as well as collectively. The peace centres agreed that activities like lecture series on "Idea of India" must continue as before. Additionally, cultural activities must be resumed with emphasis on dance, music, poetry and theatre highlighting composite culture and diversity.
In terms of programmes, it was suggested that peace centres should wherever possible organise cultural festivals involving dance, music poetry, theatre or food and participate in larger cultural festivals. Thus there should be one national level cultural festival every year.
Paridhi in Bhagalpur organises the Nav Varsh Mela on 1st January every year which is attended by nearly 2000 people. It has been very popular over the years.
Similarly, Srijan Mela is organised in the month of February in Allahabad and been a cultural attraction. The peace centres can bring their cultural groups/ troupes to perform at these festivals. Similarly, the peace centres can organize festivals at their state level or district level with the resources- financial and human resources already available. AAMRA is already planning to participate in the Allahabad festival.
AMMRA will also try to organise cultural festivals in three districts of West Bengal.
It was also felt that each region has very rich examples of syncretic traditions and composite culture which bears testimony to the harmonious co-existence and enriching give and take between communities for centuries. These examples should be documented and popularized by publishing them.
Organisationally, the peace centres collectively believed that steadily the number of peace centres should increase across India.
In this direction, Hozefa Ujjaini volunteered to find peace activists in Gujarat who can potentially set up a peace centre.
Similarly, AMMRA will attempt to identify someone from Northern part of the state of West Bengal as well as in Kokrajhar in Assam.
Paridhi and AAMRA volunteered to identify an organisation/ activist in Jharkhand. At state level, Paridhi will attempt to include organizations from five districts of Bihar into the Paridhi peace centre. Similarly it will organize a State level Convention to expand the network of solidarity organizations and identify possibilities of setting up peace centres in other parts of Bihar.
The meeting provided much needed motivation and sense of solidarity to all the peace centres to resume their activities with renewed rigour. All the members appreciated this meeting in person and urged to organise the next one in Bhagalpur.
Neha Dabhade is associated with Centre for Study of Society and Secularism (CSSS), Mumbai. All opinions and views expressed in columns and blogs and comments by readers are those of individual writers and do not necessarily reflect the editorial policy of Clarion India.
Previous articleUS to Announce Diplomatic Boycott of Beijing Olympics
Next articleDespite Being Epicentre of Mandir Politics, Ayodhya Has Not Been A BJP Citadel


text:
Films for Class: Film Portrait
Not simply a nostalgic death-trip into the nooks and crannies of memory, the virtually unknown Jerome Hill's filmic autobiography represents a filmmaker kindling his impending demise into a reason to forage for new refreshment in the untested future of the imagination. Although beset by illness, he tackles previously unexplored currents of the self in the present, specifically the mind's capacity to invent, predict, and propose partial and potential futures for itself. More conventional passages as temporary pause points rather than the overall skeletal framework, Hill largely deposes the rulebook for autobiography and, particularly, the almost infernally dull, antiseptic tone of most cinematic biopics. Whereas many biopics devolve into trials by information or an unceasing march of event rather than a parade of exploration or dangerous cinematic interpretation, Film Portrait does not define life by moments lived so much as moments imagined in the life of the mind. Film Portrait is, one might say, overtaken with death, but in rumination on the past and projection into the future, it reenergizes the cinema of the then-present. It is a film as vital and coursing with life as anything the American New Wave young-bloods like Scorsese could muster at the time.
Hill's film is double-barreled, a wry and wily experiment in motioning toward a kaleidoscopic future, on one hand, and, on the other, not retreading the past but siphoning all of its imaginative potential into teasing out connections in many hues. But Hill's pen is more a helter-skelter scribble than in-the-lines coloring. Although he shows us many images of his younger self, he does not rest on them nor on film's capacity to document the past; he defies the obvious and often unquenchable urge to interpret cinema purely as a sealed window into the past. Instead, Hill throws his past through the gauntlet of his imagination, turning pictures into rubber-bands as he ricochets his images of his own past into one another and enlivens them in a perpetual present.
Any splintering of the film's structure is not a statement to the film's incapability to cogently argue a point so much as a statement to the merit of tracking life not as a coherent through-line but as an unstable, ever-excited escapade flying in many different directions, enlivened by many contradictory present-tenses and moments that exist simultaneously as past, present, and future. Hill's career was ever-adventurous, always excavating new artistic holes and prancing around in many mediums, from painting to music to, of course, film. But even within film, Hill pulls out freeze frames, film negatives, reverse-shots, Eisensteinian montage of opposites, and a general atmosphere of promiscuity with his techniques. Pictures of old may entomb time, preserving a simulacrum of life in suspended animation robbed of temporality or duration. But Hill's imagination pushes these photos into the throngs of a full swing, hot-tempered adventure in time and space. His playful attitude is inscribed almost immediately in an opening montage where he ponders how he might die with the spirit of free-form foolishness.
It must be said: Film Portrait does not fail to notice time – the film's diegetic sequences with Hill at work in a film lab manipulating film suggest quite clearly that Hill is aware his attempt to bring these images to life again is all construction, creation. But with its saucy, discourteous attitude toward cause and effect logic, the film nonetheless refuses to submit to linear time. Perhaps inspired by the imminent demise of all physical representation – the fading of photos, the corruption of memory – Hill's polychromatic (even psychedelic when Hill's mind's eye is in fullest bloom) imagery doesn't reclaim so much as interrupt past memories by wrapping them in the throes of hallucination. His film understands that this is all formal play, but it also argues that formal play – the will to imagine, to create, to tease – is the essence of life. The past is not an imprinted time filed away but active machinery that exerts a push-pull on the present, with memory existing in multiple states of time – past and present – at once. Hill simply pushes back. Since cinema is temporally liminal, visualizing a past yet reintroducing it to a present audience, Hill's work is not only a portrait of lived experience, but a painting of the mind in perpetual motion, refusing to give up working with the materials of time.
Showing it to a class of mine (ok, it was a discussion section, but cut me some slack), the question of "what it is to document" came up, a verbal twist on the old "Is this a documentary?" chestnut. For many students, only the stills from Hill's past – not his imaginative exploits with them – counted as "documentation" since they existed in reference to, hemmed in by, placeable past events. They were external simulacrums of pin-pointable actualities, the rest of the film straying from the safe castle of "documentary" and away from actuality into the realm of possibility. While I would love to romantically proclaim that any and all great works of art exist primarily to stray, I'm not comfortable claiming that Film Portrait truly outs itself form the documentary wheelhouse at all. Watching Hill whimsically project his mind into the future to deduce possible alternatives for his demise, one bright student chimed in that the film was documenting not the exterior life of the body but the interior life of the mind unchained. Cinema, in this sense, is always documentary. The difference between fiction and what we refer to as "documentary" is really a reminder that documentation comes in many forms and takes on many subjects, both those of actuality – of existence – and of potentiality – of the restless mind at work.
This entry was posted in Films for Class, Review on June 9, 2017 by jakewalters98.
← Films for Class: Salesman Films for Class: Mysteries of the Organism →


ZIZ News…Sept 18 2012 — The St. Kitts Electricity Company (SKELEC) has announced that it will no longer accept water payments as of Monday October 1st, 2012.
In a notice to all consumers it stated, water payments should be made to the three designated locations; the main office at Needsmust, Inland Revenue and the General Post Office.
Meanwhile, payment of SKELEC electricity bills will continue being paid at our main Office on Central Street, National Bank and Scotia Bank teller counters and on-line portals.
Online payments via SKELEC website is coming soon.


text:
Q: Creating a geodatabase I am new to GIS .
I would like to create a geodatabase in ArcGIS that stores information about different regions in a country. In each region there are few villages that are selected to monitor their  land cover change by taking images (jpeg) of those sites every 2 years. The database should have all the images taken each two years and different features found in that region such as services ( roads, rivers and villages). It should be able to add new information every two years.

A: This is a very broad question that could really be answered a number of ways, but check out this post from Esri on creating file geodatabases to get your research started. In your case, you will want to use a file geodatabase (.gdb) since you will be attaching photos. Personal geodatabases (.mdb) have a 2GB limit. When you get to the point of determining which feature classes (layers) or tables that you want to attach photos to, be sure to enable attachments on those layers.

redpajama_set_name: RedPajamaStackExchange


text:
HomeMusicOrchestra Miami Free Outdoor Concert
Orchestra Miami Free Outdoor Concert
Miami Art Guide Music, News 0
North Shore Park Bandshell. May 19, 2012. 7:00 p.m.
Orchestra Miami concludes its series of Free Outdoor Concerts, with "Beethoven on the Beach", a celebration of the lives of heroic men. This concert is presented as a gift to the community, and is completely free of charge.
This final outdoor performance will be presented on Saturday, May 19 at 7:00 p.m., at the newly renovated North Shore Park Bandshell (also known as the 73rd Street Bandshell in North Beach. There are bleacher-style seats available, and there is plenty of green space for guests to bring a lawn chair or a blanket. Picnicking is encouraged and beverages will be available for purchase.
The program includes Mozart's "Overture to the Magic Flute", Lee Hoiby's "I Have a Dream" featuring Graham Fandrei as the baritone soloist, and Beethoven's iconic Symphony #5 in c minor, Op. 67. All three performances will be conducted by Orchestra Miami's Artistic Director, Elaine Rinaldi.
This year's theme, "Beethoven on the Beach", makes the connection between Beethoven and Civil Rights through the Age of Enlightenment. "For me, these concerts are about community", says Artistic Director Rinaldi. "It makes me very happy to be able to bring people together to enjoy our gorgeous weather and share in the experience of listening to high quality classical music. This is the perfect opportunity to introduce your children to the excitement of live classical music."
Orchestra Miami at the North Shore Park Bandshell
7250 Collins Avenue
www.orchestramiami.org
Meet Harold Kwalwasser discussing Renewal: Remaking America's Schools for the 21st Century
ArtCenter/South Florida presents Quantum Shift
The Bodyguard, the musical by Riverside Theatre
Apr 14 - May 3, 2020
Giulietta Vigueras Performing Arts, Theaters 0
Multi-Awarded "The Color Purple" comes to SMDCAC for 2-performances-only
Mar 14 - 15, 2020
MAMMA MIA! at Actors' Playhouse
Slow Burn Theatre Co: Groundhog Day The Musical
Editor Performing Arts, Theaters 0
Turning 15 on the Road to Freedom at Miami-Dade County Auditorium
Feb 7, 2020, 8 PM


Typical spacing of the Arbequina, Arbosana and Koroneifki varieties is 10-12 feet between rows and 4-6 feet between trees. Below is a chart that decribes trees per acre at typical spacing.
© 2010 The Burchell Nursery, Inc. All Rights Reserved.


Send this adorable smiley to Facebook to wish all your family and friends a Merry Christmas. Talking smileys add a lot of interest to each post. You can share as many smileys on Facebook as you like. They're free and it only takes a couple seconds to share them. Be sure to scroll through all our talking holiday smileys.


Come in on Saturday, February 23rd to celebrate the great game of hockey and collecting hockey cards. American Legends will be giving out FREE packs of hockey cards produced by Upper Deck specifically for that day! No purchase is necessary to grab your FREE five-card pack. The FREE pack is ONE PER CUSTOMER while supplies last.
As an added bonus, American Legends will also be giving out FREE hot chocolate! Nothing goes better with ice hockey than delicious hot chocolate!
There are 15 cards in this special NHCD set. In order to get the 16th card, which is an exclusive card of Alex Ovechkin raising the Stanley Cup, you will need to make just a $10 purchase on hockey cards that day.
Sorry, you missed National Hockey Card Day 2019 at American Legends.
Demand that American Legends gets added to the next tour!
You missed National Hockey Card Day 2019 at American Legends.
We're generating custom event recommendations for you based on National Hockey Card Day 2019 right now!