I saw a documentary film many years ago about a group of colleagues working in a fish market called Pykes Peak in Seattle. They get up every morning at some really unearthly hour like 3.00am and they work for long hours in a freezing cold, smelly environment. The guys on the film talked about the choice they have to make every day…they could complain about their lot and be miserable all day or they can come to work and enjoy it, so they decide every day to enjoy it.
In Scroll 6 of the Greatest Salesman in the world Og Mandino tells us how not just to make that choice but to make it happen.
If I feel sad I laugh.
If I feel ill I double my labour. If I feel fear I plunge ahead.
If I feel uncertain I speak with a stronger voice.
If I feel poverty I think of wealth to come.
If I feel incompetent I remember past successes.
If I feel insignificant I remember my goals.
After all isn't that what goals are for…it doesn't matter about the size of the problem, my God is bigger and the goal…my Definite Major Purpose is the reason he put me here.
These are all choices…you don't have to sing…sometimes you are almost choking on the words and it would be easier to cry…but choose to sing.
The Fish Guys make similar choices every day and their philosophy affects literally thousands of people. Crowds come to stand and watch them work just to cheer themselves up, it's amazing. Can you imagine a person coming to watch you at work because he is feeling depressed and going back to his own job happy. Man that's a ministry…the Ministry of Fish.
They talk about just 4 things that make their workplace such a joyful place to be every day and the end result is they sell lots and lots of fish, more than they ever would if they all had long faces.
Point 1. PLAY…just have fun, with each other, with the customers, they literally hurl great big fishes and crabs and all sorts of sea creatures across the store and they are pretty good catchers too and as I recall they even get customers in to try and catch a fish sometimes.
2 MAKE THEIR DAY…if you can make someone else happy, if they can go home that night thinking the highlight of the day was meeting you, having some fun with you, laughing with you, wouldn't that make you day too.
3 BE THERE…it means love the one you are with, give that person 100% attention in the moments you are with them, listen to them and let them go away feeling they were the only person in the world that mattered to you at that moment. We could all do that in our daily conversations but how often are we thinking ahead to what we will say while we should just be listening… and worse how often do we think about where else we would rather be when someone needs our total attention. How many conversations take place through the background distraction of the television or some other third party interrupter. Isn't the ultimate KINDNESS just to be there until the person talking to us feels heard and understood.
4 CHOOSE YOUR ATTITUDE. Hopefully this is self explanatory. If you don't think you are in charge of the way you feel, think, talk and act then who is? And you can always use Og's tools from above to help you reinforce the choice.
Mark Januszewski on the MKMMA commencement webinar said something in one short sentence that speaks of exactly the same attitude, he said, as close as I can remember it.
"I talk to everybody that makes eye contact with me. I treat him as if it is his last moment on earth and I want his last moment to be a great moment, I want to be present in his life.
If the six months or so that we have invested in each other during this course if could be condensed into one sentence that would be it.
To be there, and touch people at a heart level, to make their day thinking what if this were their last day is a reflection of what Og Mandino said in the fifth scroll.
What do you want your last day to look like?


text:
Intel Launches Investment Fund For Startups Led By Women And Minorities
The fund aims to invest $125 million over the next five years.
[Photo: Flickr user The iHub]
By J.J. McCorvey 3 minute Read
Intel Corporation, the Silicon Valley chip maker and tech giant, launched today the Intel Capital Diversity Fund, which over the next five years will invest $125 million in businesses led by women and underrepresented minorities.
The fund, which will be run by Intel Capital, the company's investment arm, will vet applicants based on the demographics of their executive team, as well as their overall diversity efforts and their product's strategic fit with Intel.
"Intel Capital invests tens of millions of capital per year into strategic small startups," Intel president Reneé James told Fast Company. "We said, if we're going to make these investments anyway, we should use our money for good, and put a portion of that into businesses led by minorities [that focus on] technology areas we want to invest in. People aren't doing that."
If we're going to make these investments anyway, we should use our money for good.
According to the latest available data, just 1% of venture-backed startups are led by a black founder, while companies with a woman CEO receive 3% of VC dollars.
While it did not specify investment amounts, Intel also unveiled the fund's first four portfolio companies: Venafi, a female-led cyber-security startup; Mark One, best known for its biometric Vessyl cup, whose executive leadership includes an Asian-American CEO and three African-American VP's; CareCloud, a developer of cloud-based health care software founded by a Hispanic male; and Brit + Co., the female-focused DIY blog and platform founded by Google alum Brit Morin.
The new fund comes on the heels of Intel's $300 million diversity initiative announced earlier this year, in which the company pledged to bring its U.S. workforce to "full representation" of the available pool of minority and female talent by 2020. Intel has made strides toward that goal: It reported last month that 41% of its hires this year were of "diverse" backgrounds compared to last year's 32%. Of Intel's senior hires in the first quarter of 2015, 17% were underrepresented minorities and 33% were women (up from 6% and 19% last year, respectively).
Intel also seems to have gone beyond its immediate company-specific goals–as a recent Fast Company feature had hoped it would–to also focus on building a pipeline of minority and female tech talent, in order to have a more expansive impact on the social ecosystem of Silicon Valley. In May, for example, it announced a partnership with the Oakland Unified School District in California, which is 38.5% Latino and 30.8% African-American, through which Intel will invest $5 million over the next five years to develop the computer science curriculum for high school students, with the goal of sending 600 graduates to college to take on STEM-related majors.
Ideally, the diversity fund will have a similar effect: ensuring that women and minorities have access to the same resources and opportunities as the rest of the tech industry, which is well-networked and overwhelmingly white and male. "We're not forcing diverse-led companies to vie with non-diverse led companies for the same dollars for investment," says James. "So not only are we going out and looking for [diverse entrepreneurs] … we've actually said, that $125 million is earmarked for investments in companies that are led in a diverse way."
Lisa Lambert, vice president at Intel Capital and who will also oversee the new fund, believes it represents a new paradigm for the venture-capital industry and how tech investments are made. Lambert's team of investors, for example, is primarily comprised of women and minorities.
"The VC firms that are doing investments today come from a demographic group [in which] their networks look like them, and reflect their values," Lambert says. "That model works for them, so they keep repeating it. The problem is that the model doesn't incorporate the broader society."
J.J. McCorvey is a staff writer for Fast Company, where he covers business and technology.
7 ways the circular economy will grow in 2021
Smart talking points: What happens next with President Trump's impeachment?
It's not your imagination: Wealthy people really do practice more social distancing
Why equitable workplaces depend on your team's makeup (not just outstanding hires)
5 strategies to smoothly handle a workplace confrontation
These are the top-paying remote jobs and how you can land one

redpajama_set_name: RedPajamaCommonCrawl


text:
"""Tests auto-sharding datasets with tf.data service."""

from absl.testing import parameterized

from tensorflow.core.protobuf import data_service_pb2
from tensorflow.python.data.experimental.kernel_tests.service import multi_process_cluster
from tensorflow.python.data.experimental.kernel_tests.service import test_base as data_service_test_base
from tensorflow.python.data.experimental.kernel_tests.service.multi_process_cluster import MultiProcessCluster
from tensorflow.python.data.experimental.ops import distribute
from tensorflow.python.data.experimental.ops.data_service_ops import ShardingPolicy
from tensorflow.python.data.kernel_tests import test_base
from tensorflow.python.data.kernel_tests import tf_record_test_base
from tensorflow.python.data.ops import dataset_ops
from tensorflow.python.data.ops import readers
from tensorflow.python.framework import combinations
from tensorflow.python.framework import errors

def _make_service_cluster(
    num_workers,
    local_shard_index,
    worker_addresses=None,
    deployment_mode=data_service_pb2.DEPLOYMENT_MODE_COLOCATED):
  if worker_addresses is None:
    worker_addresses = ["localhost" for _ in range(num_workers)]

  cluster = MultiProcessCluster(
      num_local_workers=0,
      num_remote_workers=0,
      worker_addresses=worker_addresses,
      deployment_mode=deployment_mode)
  for _ in range(local_shard_index):
    cluster.start_remote_worker()
  cluster.start_local_worker()
  for _ in range(num_workers - local_shard_index - 1):
    cluster.start_remote_worker()
  return cluster

# pylint:disable=g-complex-comprehension
class AutoShardTest(data_service_test_base.TestBase,
                    tf_record_test_base.TFRecordTestBase,
                    parameterized.TestCase):
  """Tests auto-sharding datasets with tf.data service."""

  def setUp(self):
    super(AutoShardTest, self).setUp()
    self._num_files = 10
    self._num_records = 10
    self._filenames = self._createFiles()

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=[
              ShardingPolicy.DATA, ShardingPolicy.FILE_OR_DATA
          ])))
  def testRangeDataset_AutoShard(self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)
    self.assertDatasetProduces(dataset, [1, 6, 11, 16])

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_FileShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE)
    with self.assertRaisesRegex(errors.NotFoundError,
                                "Found an unshardable source dataset"):
      self.getDatasetOutput(dataset)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(worker_index=[distribute.SHARD_HINT, 0, 5])))
  def testRangeDataset_ShardHint(self, worker_index):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    # With HINT sharding, `num_shards` should be `SHARD_HINT`; `index` can be
    # any value.
    dataset = dataset.shard(
        num_shards=distribute.SHARD_HINT, index=worker_index)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)
    self.assertDatasetProduces(dataset, [1, 6, 11, 16])

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_InvalidWorkerIndexUsingShardHint(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    # With HINT sharding, `SHARD_HINT` should be passed to `num_shards`, not
    # `index`.
    with self.assertRaisesRegex(
        errors.InvalidArgumentError,
        r"Index must be between 0 and 4 \(currently index = -1\)."):
      dataset = dataset.shard(num_shards=5, index=distribute.SHARD_HINT)
      dataset = self.make_distributed_dataset(
          dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)
      self.getDatasetOutput(dataset)

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_NoShardHint(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    # No SHARD_HINT is provided. The given sharding arguments will be used.
    dataset = dataset.shard(num_shards=1, index=0)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)
    self.assertDatasetProduces(dataset, list(range(20)))

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(
              sharding_policy=[ShardingPolicy.OFF, ShardingPolicy.FILE_OR_DATA
                              ])))
  def testRangeDataset_ShardHintUsedInWrongShardingPolicy(
      self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    dataset = dataset.shard(distribute.SHARD_HINT, distribute.SHARD_HINT)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)
    with self.assertRaisesRegex(
        errors.FailedPreconditionError, "tf.data service with "
        "`tf.data.experimental.service.ShardingPolicy.HINT` processing mode."):
      self.getDatasetOutput(dataset)

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_NoShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset,
        cluster=cluster,
        processing_mode=ShardingPolicy.OFF,
        target_workers="LOCAL")
    self.assertDatasetProduces(dataset, list(range(20)))

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_OneWorker(self):
    """Makes sure shards from all workers form the complete dataset."""
    cluster = _make_service_cluster(num_workers=1, local_shard_index=0)
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    self.assertDatasetProduces(dataset, list(range(20)))

  @combinations.generate(test_base.default_test_combinations())
  def testRangeDataset_ReadFromAnyWorker(self):
    # When deployment mode is unspecified, the client will read from any worker.
    cluster = _make_service_cluster(
        num_workers=5, local_shard_index=1, deployment_mode=None)
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    self.assertDatasetProduces(
        dataset, list(range(20)), assert_items_equal=True)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=[
              ShardingPolicy.FILE_OR_DATA, ShardingPolicy.FILE
          ])))
  def testTFRecordDataset_AutoShard(self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset,
        cluster=cluster,
        processing_mode=sharding_policy,
        target_workers="LOCAL")

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in (3, 8)
        for record in range(0, 10)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=[
              ShardingPolicy.FILE_OR_DATA, ShardingPolicy.FILE
          ])))
  def testTFRecordDataset_ShuffleFileList(self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=True)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in (3, 8)
        for record in range(0, 10)
    ]
    self.assertDatasetProduces(dataset, expected, assert_items_equal=True)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_DataShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.DATA)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in range(0, 10)
        for record in (3, 8)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_HintDataShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = dataset.shard(distribute.SHARD_HINT, distribute.SHARD_HINT)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in range(0, 10)
        for record in (3, 8)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_HintFileShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.shard(distribute.SHARD_HINT, distribute.SHARD_HINT)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in (3, 8)
        for record in range(0, 10)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_NoShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset,
        cluster=cluster,
        processing_mode=ShardingPolicy.OFF,
        target_workers="LOCAL")

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in range(0, 10)
        for record in range(0, 10)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_ReadFromAnyWorker(self):
    # When deployment mode is unspecified, the client will read from any worker.
    cluster = _make_service_cluster(
        num_workers=5, local_shard_index=3, deployment_mode=None)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in range(0, 10)
        for record in range(0, 10)
    ]
    self.assertDatasetProduces(dataset, expected, assert_items_equal=True)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=[
              ShardingPolicy.FILE_OR_DATA, ShardingPolicy.FILE
          ])))
  def testTFRecordDataset_FewerFilesThanWorkers(self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames[:4], shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)

    with self.assertRaisesRegex(
        errors.InvalidArgumentError,
        "not enough for the required 5 shards/workers."):
      self.getDatasetOutput(dataset)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_FewerFilesThanWorkers_HintShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames[:4], shuffle=False)
    dataset = dataset.shard(distribute.SHARD_HINT, distribute.SHARD_HINT)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.HINT)

    with self.assertRaisesRegex(
        errors.InvalidArgumentError,
        "not enough for the required 5 shards/workers."):
      self.getDatasetOutput(dataset)

  @combinations.generate(test_base.default_test_combinations())
  def testTFRecordDataset_FewerFilesThanWorkers_DataShard(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames[:4], shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.DATA)

    expected = [
        b"Record %d of file %d" % (record, file)
        for file in range(0, 4)
        for record in (3, 8)
    ]
    self.assertDatasetProduces(dataset, expected, assert_items_equal=True)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=[
              ShardingPolicy.FILE_OR_DATA, ShardingPolicy.DATA
          ])))
  def testBatchDataset(self, sharding_policy):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=1)
    dataset = dataset_ops.Dataset.range(20)
    dataset = dataset.batch(batch_size=3, drop_remainder=False)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)
    self.assertDatasetProduces(dataset, [[3, 4, 5], [18, 19]])

  @combinations.generate(test_base.default_test_combinations())
  def testInterleaveDataset(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.interleave(
        readers.TFRecordDataset,
        cycle_length=10,
        num_parallel_calls=dataset_ops.AUTOTUNE)
    dataset = dataset.prefetch(buffer_size=dataset_ops.AUTOTUNE)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    dataset = dataset.prefetch(buffer_size=dataset_ops.AUTOTUNE)

    expected = [
        b"Record %d of file %d" % (record, file)
        for record in range(0, 10)
        for file in (3, 8)
    ]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testZipDataset(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset1 = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset1 = dataset1.interleave(
        readers.TFRecordDataset,
        cycle_length=10,
        num_parallel_calls=dataset_ops.AUTOTUNE)
    dataset2 = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset2 = dataset2.interleave(
        readers.TFRecordDataset,
        cycle_length=10,
        num_parallel_calls=dataset_ops.AUTOTUNE)
    dataset = dataset_ops.Dataset.zip((dataset1, dataset2))
    dataset = dataset.prefetch(buffer_size=dataset_ops.AUTOTUNE)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)

    expected = [(b"Record %d of file %d" % (record, file),
                 b"Record %d of file %d" % (record, file))
                for record in range(0, 10)
                for file in (3, 8)]
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testConcatenateDataset(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset1 = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset1 = dataset1.interleave(
        readers.TFRecordDataset,
        cycle_length=10,
        num_parallel_calls=dataset_ops.AUTOTUNE)
    dataset2 = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset2 = dataset2.interleave(
        readers.TFRecordDataset,
        cycle_length=10,
        num_parallel_calls=dataset_ops.AUTOTUNE)
    dataset = dataset1.concatenate(dataset2)
    dataset = dataset.prefetch(buffer_size=dataset_ops.AUTOTUNE)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)

    expected = [
        b"Record %d of file %d" % (record, file)
        for record in range(0, 10)
        for file in (3, 8)
    ]
    expected += expected
    self.assertDatasetProduces(dataset, expected)

  @combinations.generate(test_base.default_test_combinations())
  def testEmptyDataset(self):
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.range(0)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    self.assertDatasetProduces(dataset, [])

  @combinations.generate(test_base.default_test_combinations())
  def testAnonymousPorts(self):
    cluster = _make_service_cluster(
        num_workers=5,
        local_shard_index=3,
        worker_addresses=["localhost:%port%" for _ in range(5)])
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    self.assertDatasetProduces(dataset, [3, 8, 13, 18])

  @combinations.generate(test_base.default_test_combinations())
  def testNamedPorts(self):
    cluster = _make_service_cluster(
        num_workers=5,
        local_shard_index=3,
        worker_addresses=["localhost:%port_worker%" for _ in range(5)])
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    self.assertDatasetProduces(dataset, [3, 8, 13, 18])

  @combinations.generate(test_base.default_test_combinations())
  def testInvalidPorts(self):
    with self.assertRaisesRegex(RuntimeError,
                                "The worker's address is not configured"):
      _ = _make_service_cluster(
          num_workers=5,
          local_shard_index=0,
          worker_addresses=["localhost:worker" for _ in range(5)])

  @combinations.generate(test_base.default_test_combinations())
  def testEmptyWorkerList(self):
    cluster = _make_service_cluster(
        num_workers=5, local_shard_index=1, worker_addresses=[])
    dataset = dataset_ops.Dataset.range(20)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    with self.assertRaisesRegex(errors.NotFoundError,
                                "Worker .* is not in the workers list."):
      self.getDatasetOutput(dataset)

  @combinations.generate(test_base.default_test_combinations())
  def testWorkerNotFound(self):
    worker_addresses = [f"fake_worker_{i}" for i in range(5)]
    with self.assertRaisesRegex(RuntimeError,
                                "The worker's address is not configured"):
      _ = _make_service_cluster(
          num_workers=5, local_shard_index=0, worker_addresses=worker_addresses)

  @combinations.generate(test_base.default_test_combinations())
  def testMoreWorkersThanConfigured(self):
    worker_addresses = ["localhost:%port%"]
    with self.assertRaisesRegex(
        RuntimeError,
        "other workers are already running at the configured host"):
      _ = _make_service_cluster(
          num_workers=5, local_shard_index=1, worker_addresses=worker_addresses)

  @combinations.generate(test_base.default_test_combinations())
  def testNoLocalWorkers(self):
    cluster = multi_process_cluster.MultiProcessCluster(
        num_local_workers=0, num_remote_workers=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=ShardingPolicy.FILE_OR_DATA)
    with self.assertRaisesRegex(
        errors.InvalidArgumentError,
        "Static sharding policy <FILE_OR_DATA> requires local tf.data workers"):
      self.getDatasetOutput(dataset)

  @combinations.generate(
      combinations.times(
          test_base.default_test_combinations(),
          combinations.combine(sharding_policy=list(ShardingPolicy))))
  def testEnumerateShardingPolicies(self, sharding_policy):
    """Verifies tf.data service handles every sharding policy with no errors."""
    cluster = _make_service_cluster(num_workers=5, local_shard_index=3)
    dataset = dataset_ops.Dataset.list_files(self._filenames, shuffle=False)
    dataset = dataset.flat_map(readers.TFRecordDataset)
    dataset = self.make_distributed_dataset(
        dataset, cluster=cluster, processing_mode=sharding_policy)
    self.getDatasetOutput(dataset)

if __name__ == "__main__":
  multi_process_cluster.test_main()

redpajama_set_name: RedPajamaGithub


UFC star Ben Askren thinks Conor McGregor's most recent retirement announcement is a bunch of BS ... telling TMZ Sports it's either a publicity stunt or a negotiating tactic.
The Notorious appeared to call it quits in a late-night tweet on Monday ... saying "I've decided to retire from the sport formally known as 'Mixed Martial Art' today."
Some people like Dana White truly believe we've seen the end of Conor ... but Askren?? Not so much.
"I think there's no way I'm buying it," Askren says. "This isn't first time he's tweeted out something like this." It's true ... Conor "retired" back in 2016 too.
Askren points out the timing -- right after the negotiations with Donald Cerrone falling apart ... and says it's essentially a big game of chicken between Dana and Conor to see who will cave first.
"If you look at Dana White's response that is a negotiating tactic back. He's saying, 'okay, bye, see ya later, have a great career'. So, it was kinda a negotiating tactic back saying, 'okay, fine have a great retirement.'"
So, if neither side comes to an agreement, have we REALLY seen the last of Conor? Ben says if he was a betting man, "you're probably putting all of your money on the fact that you will see Conor fighting sometime in the future."
"I don't think he's gone at all. I'm not buying that even the slightest bit."


Fragomen is a leading provider of immigration services worldwide. We have more than 3,300 professionals and staff in more than 40 offices located in EMEA, the Americas and Asia Pacific. In total, Fragomen offers support in more than 170 countries. \n\nOur professionals are respected thought leaders in the immigration field, as recognised year after year by Chambers, Forum for Expatriate Management and Who's Who. They contribute to conferences and seminars around the world, and author books and other publications that are relied on as standard references by other immigration professionals. Many of Fragomen's professionals have prior experience working in government agencies, meaning we can provide advance strategies for world-class immigration programme management. \n\nIn Kenya, our Nairobi office was established in 2014 and operates as a consultancy. Our location in Nairobi, allows us to provide comprehensive consultation and strategies for Kenyan immigration to multinational and local clients in East Africa. Our highly professional approach, combined with our dedication to technical excellence, result in effective support for immigration requests and application processing under tight time constraints. Our diverse Kenya team consists of highly-qualified immigration professionals with expansive knowledge of Kenyan immigration procedures and policies. These professionals assist clients in a range of industries including (but not limited to) information technology, tourism, manufacturing, resources extraction, and engineering.\n\nFragomen is structured to support all aspects of immigration, including strategic planning, efficiency, quality management, compliance, government relations, reporting, and case management and processing. These capabilities allow the firm to represent a broad range of companies, organisations and individuals, working in partnership with clients to facilitate the transfer of employees worldwide.


text:
‧Sports
Home / Sports
Sun, Sep 21, 2014 - Page 20 News List
Cross-strait pair snatch victory in Guangzhou
By Dave Carroll / Staff reporter, with reuters, GUANGZHOU, China
Chuang Chia-jung of Taiwan helped grab victory from the jaws of defeat yesterday to capture the Guangzhou International Women's Open doubles title.
Chuang and her partner, China's Liang Chen, lost the first set and then saved a match point at 5-6 in the second, before going on to defeat Alize Cornet of France and Magda Linette of Poland 2-6, 7-6 (7/3), 10-7.
The cross-strait duo saved four of nine break-point chances and converted three of 14 as their opponents served up eight double faults to complete the victory in 1 hour, 50 minutes, despite winning five fewer points.
The victory saw Chuang claim her 20th WTA Tour doubles title, while it was Liang's first WTA Tour title of any kind.
In the singles final, Romanian Monica Niculescu overcame heat and fatigue to beat second seed Alize Cornet for her second WTA career title.
The world No. 60 rallied from 4-2 down in the first set to win 10 games in a row and beat her 22nd ranked French opponent 6-4, 6-0.
"I was so happy to finish in the end because it was very hot and very humid, and I was very, very tired," Niculescu said after her win. "But to finish so strong was amazing for me. I have many emotions right now, but most of it is joy and confidence. It's my second WTA title and that's just an amazing feeling."
Cornet, 24, struggled with her serve and committed 12 double faults against an opponent who had none.
The 26-year-old Niculescu had a great week at the US$500,000 event where she did not drop a set and lost just 17 games in five matches.
"I think it's very tough to play against me because I put many balls back and run a lot and fight for every ball — I think in this heat and humidity it's definitely not easy to play against me," Niculescu said. "I had a good feeling about this tournament when I entered it."
Pan Pacific Open
Reuters, TOKYO
Ana Ivanovic overcame a slow start to beat top seed Angelique Kerber 7-5, 6-3 in the semi-final of the Pan Pacific Open yesterday to set up a title clash with second seed Caroline Wozniacki.
World No. 10 Ivanovic, seeded third in the US$1 million event, was down 5-3 in the opening set, but went on to win 10 of the next 13 games to seal her victory against her eighth ranked German opponent.
"In the beginning it really took me some time to adjust to her game. It wasn't like my previous matches," Ivanovic said. "But once I adjusted and got more aggressive it started to go my way, and I'm really happy with the win today because she's always such a tough and challenging opponent."
The win boosts the former world No. 1's bid to qualify for the season-ending WTA Finals in Singapore as it did for her opponent in today's final.
Wozniacki, also a former top-ranked player, was the first to book her spot for the final after a tough match against an aggressive Garbine Muguruza.
The Danish player saved 19 of the 23 break points she faced in the match, including all nine in the first set, to win 6-4, 2-6, 6-2 against the 20-year-old Spaniard.
Muguruza gave it her all, hitting 53 winners in the match, but was hurt by the 50 unforced errors she committed.
Ivanovic is currently No. 8 in the race for Singapore, ahead of Wozniacki, and both are leading contenders for a spot in the five places left for the event.
AP, SEOUL
Second-seeded Karolina Pliskova of the Czech Republic rallied from a set down yesterday to beat Russia's Maria Kirilenko 4-6, 7-6 (7/5), 6-3 and reach the final of the Korea Open.


text:
Interview with Aaron Brookner
Posted on 9 Jan 2017 10 Jan 2017 by Ian Schultz
Aaron Brooker has saved his uncle Howard Brookner's seminal documentary on William S. Burroughs from being lost forever. He discovered all the rushes in Burrough's infamous bunker and eventually a pristine print at MoMa which is what they used for the restoration. The restored version of Burroughs The Movie was eventually released on Blu-Ray by the prestigious Criterion Collection label.
Simultaneously to restoring the film Aaron was working on a documentary about Howard Brooker. It's a great document of the early '80s New York art scene, the Aids crisis but also a loving tribute to cinema and of course Howard himself. It may end tragically with Howard's death of Aids in 1989 but it doesn't bath in tragedy but celebrates the man's life which is how it should be. Howard would only make two more films after Burroughs The Movie firstly a documentary on the avant-garde theatre director Robert Wilson and finally his only feature Bloodhounds of Broadway. However Howard never lived to finish Bloodhounds of Broadway so it was recut by the studio.
I talked to Aaron about both films during the London Film Festival back in October. The film is now on general release in selected art house theatres and will soon be coming to VOD and Home Video formats sometime this year. Check for local screenings here
What was the hardest thing with the restoration of the Burroughs Movie?
Finding it. (Laughs) Probably.
I'm confused. Does [James] Grauerholz own The Bunker [William Burroughs' apartment] and rent it out to John [Giorno], or does John own it?
No, John owns the bunker.
And he rents it Giorno to keep the archive, basically?
John just keeps the bunker preserved as William Burroughs' museum/meditation space. The agreement was always: it was Burroughs' place, and Burroughs rented it. And then at some point – I don't know when exactly.
It was like '83-ish, '84, I think?
Yeah, and then Burroughs went to Kansas. But at some point…John bought it? But John ended up owning he space, and kept it at Burroughs' place and maybe they paid him something, I'm not quite sure. But it was known as, like, Burroughs' pad in New York when he was in town up until his death which was in '97 and just kept it there. But the film that I was looking for was actually not there in the end. Actually everything but the film, because it was the outtakes but the cut neg that they used to make the film…wasn't there. so what I uncovered there was everything except the one thing I was looking for.
So where was the film eventually?
The negative is still missing, We have no idea.
So you just chopped it together based off an old copy of it, then?
Well, no. What happened was it seemed like there was nothing in New York, and nothing in the archives in the US, in Washington D.C. The closest thing I came was a really bad festival print that had deposited in Australia, the national archives there. I found a print in Berlin, but that had German subtitles burned into it. So the Australia one looked like it was the only thing, only surviving print without subtitles on it, in a really bad state. I was talking to this producer – this is after like a year – who was the partner of Thomas Oman who was one of Howard's investors of 'Burroughs', who died of AIDS. And he said, "You should check in MOMA because I'm sure one was deposited there."
I was like, "MOMA? No, that's impossible." We'd exhausted everything in New York because none of the New York People found anything; why wasn't it in any lab?
And then we found out after a year that, yeah, a brand-new print had been deposited into MOMA by Brad Gooch in like,1990, shortly after Howard died. Brad was Howard's partner. Brad had been involved in the search from the beginning, so it was like, "Brad! You didn't remember that you deposited Howard's print at MOMA??"
He was like, "Oh…! Maybe? Yeah. You know, I was really fucked-up in that period, you know?" Which he was; I mean, from the devastation of the loss of Howard, and that period – he lost a hundred friends. And he had kind of forgotten that period.
So it was right where we thought it was, and it turned out to be a brand-new print that had never been seen through a projector; it was Howard's perfect copy that he deposited there himself. So in the end that's what we went with. It wasn't a neg, but it was a very good print and we were able to work with it. But that year and change of looking was pretty exhausting.
Did you ever get in touch with the BBC? Because obviously they put some money in. And did they have They used clips of it in Howard documentaries that they made.
Yeah, they're very free with using clips of it. I did find the agreement that they had with Howard, which was pretty interesting; it was finishing funds in exchange for the right to broadcast the film twice, which aired in '83 and then in '97.
But I had seen it, I think, online. I think there was a bootleg VHS copy at some point.
Yeah, there had been VHS versions floating around and on YouTube. Which was also part of the impetus for making me want to find it. They never mention Howard Brookner anywhere. I don't want to see this great film reduced to YouTube 10-minute clips; it looks like shit. Didn't seem right.
But no, BBC, their archives, they went through everything; nothing turned up. In fact, the reason why all the negatives and workprints ended up in The Bunker was because they called up Howard after he'd finished editing the film and said, "We want to send you all the stuff back". So he took it in New York and had no place to live at that time; he was doing the Robert Wilson film, travelling around, so he stashed it in The Bunker.
So are you going to restore the Wilson film?
I would love to. It's a bit more complicated than the Burroughs in some ways because there is no perfect workprint first of all; the workprints are good, but they need work. And it has music; once you remaster film, as much as the technical stuff, it's all the clearances and rights. We're talking about a couple of Otis Redding songs in there, and lots of other moving parts. Unfortunately it comes down to money because it ends up costing an awful lot, which is hard for any distributor to say, "Oh yeah, I can make this back." So you're dealing more with art funds and grants and institutions. And the reality is there's just a really long line of great films that deserve proper restoration, and very few people can do it, very few funds for it.
Very few people can do it well.
Exactly. That was actually very scary, when I was looking through the whole process, how few facilities are left who know what they're doing. I mean, I was becoming like a sort of expert in…16mm film and sound and telling, in some cases, people at labs how it should be done. It's not to brag at all; I mean, I'm the last person who knows about it, but just to go to show how few people are educated in it, and how few facilities are left for it. It's really…dire.
So when did Criterion come on board?
We were talking to them from the beginning. They have a long relationship with Jim [Jarmusch]. And Burroughs The Movie – he had been talking about it for a long time, as well as Sara Driver.
So I talked to them in the beginning, and they said, "Look, we're all about: make it as big and beautiful as possible. You find a negative, we want to do it." We didn't find the negative of the film, but they love the movie so much and thought it belonged in their collection. So they came on after I had done the restoration privately, essentially, through Kickstarter and crowdfunding. And they came on board when I had the archive, essentially, out of The Bunker. They were really key, crucial partners in helping all that stuff get digitised and organised; and I think they got very excited obviously, not just about the film, but the outtake potential.
How hard was it to get Jim to do a commentary? Because he never does commentaries.
He never does commentaries, that's right. And he said, "I never do commentaries of my films. But this isn't my film, so I can do it." [Laughs] You know, Howard and Burroughs and the project is…very, very special to Jim. I mean, Jim and Sara in film school called Howard "Uncle Howard". Why, I'm not sure exactly, but that's something about him; he remained
What's the best or most surprising outtake?
There's so much that's incredible. I mean, pick a topic. If you want to go intellectual, there's a 45-minute conversation between Burroughs and Brion Gysin of Gysin Studio in London…about art, time, space, gun control, New York vs LA. You're there with these incredible minds, and the way that…those kinds of thinkers have a discourse…is just really special around that. That's incredible. The NOVA Convention performances.
When I saw your doc, I was like shocked that was even around.
Yeah. And, you know, a couple of people remembered that there had been someone filming, but no one had ever seen footage of it because Howard was the only one who shot it; he shot it like a concert film, with four crews.
One thing I was curious about, because I went through Howard's credits, is he never mentioned his script for Max Headroom.
So what's the story behind that?
He was doing – yeah, it's interesting that you found that. He was doing writing stuff. He had an agent and he did do that. I think he wrote another TV show. He'd have, like, a couple of scripts that he was working on. And then he also wrote 'Fuckles' for William Burroughs which are also available. Somewhere there's a porno book that Howard and William Burroughs wrote. [Note supposedly under the pseudonym of Smokey Mimms]
So what's the story about compiling a recut of Bloodhounds of Broadway?
Well that was really sad, he had come to a director's cut. He was going blind and really sick at the point. He had finished his cut with his editor but they did a test screening. It scored like a 7/10 and the studio came back with a 7 page fax with editorial notes. Howard and his co-producer were totally against it and were like let's make a new workprint. The studio was like we're out of time, out of money and cut the negative and it screened 3 out of 10 for test audiences. The executive were was like the 3rd executive (it had changed 3 times over) and patted Howard's co-producer on the back "I've guess you were right". They put that version out and when it first came out it was missing a reel. That's it the negative is cut and it's impossible nevermind knocking on the doors of a big studio.
What was the most surprising or hardest part of making your doc about Howard?
Well, there was a lot of hard parts. The searching was really difficult because I committed to making it harder for story and the process, but…in reality, it took a long time to find certain things, and commitment or time and money…to something that could produce nothing. So that was really difficult. And also I think it was the most challenging, but also it became a great thing about the film; it was changing all the time. Because at one point it was gonna be, like, "Oh, some Burroughs stuff; and some interviews, maybe, about Howard." But then it's like, "No, we're lucked out, but it might be nothing. It's going in a different direction," and I would go with that. Or new stuff of Howard would appear, like a video diary or film. So it was changing all the time. Which is very difficult to pitch, very difficult to fund, very difficult to plan, get your mind around it. But when you give yourself into that, which I really did, then it's like, "This is a movie about this." And…have to be present with this…journey, capture the journey correctly. So it ended up kind of being its strength, but it really was enormously challenging.
I would hear interviews with people who were making films, talking about how difficult it is working with archive, and I'm – "You wusses! You just went to an archive house and they gave you a tape!" You know, we were making our own archive as we went along. Digitising film, syncing it – no, just syncing…all that stuff from the time. And there are no log notes or any sound rolls, obviously, but – magnetic sound. From the time we took the stuff out of The Bunker, which, mind you, was only one part of Howard's archive, was September 2013. I didn't actually have everything to edit from until April 2015. So it was little pieces here, little pieces there all the time.
I'm very curious because obviously James [Grauerholz] talked to Howard when he had AIDS, but did William [Burroughs] ever talk to him? Obviously William's talked about Howard because, you know, government conspiracy and stuff, which it could have been, we don't know; there's always that possibility that AIDS was partly done by government. But did William ever talk to Howard during the illness?
Speak to him; I'm not sure. He wrote to him. I have some cards from William to Howard. And I know when James found out was at a dinner with Steve Meier and with William, and it hit William very bad; he was very upset. [Note Burroughs does have a small cameo in Bloodhounds of Broadway]
How does James feel about the film now? I mean, obviously William was companion throughout all that time and is now the executor of the estate. To people who don't know the story and don't know about James – who, arguably, doesn't come off that well when he meets Billy [William Burroughs' biological son], when he's saying, "I'm now William's adopted son". Did he [Howard?] ever talk to James about that?
Yeah, extensively. That was one of the reasons – when I didn't know him, when I started this – I was kind of worried about approaching him, because maybe he didn't like how he was portrayed in the movie, because he is kind of intercut as the bad guy.
I've always heard the best thing about him is he's a really stand-up guy.
Yeah. And when I called him up he actually said, "Aaron, I've been waiting for this call for thirty years." Because it meant someone could actually come along and do something with the film again, breathe new life into it, but also the archive and the story. James kind of came to terms with his portrayal of it, and I think time helped because, as more people know the story, it's like, "Well, James is actually being quite honest about his role in it." I think when it's coming from a show-off young guy in the moment, it feels a bit like boasting. But now with the distance of time, it's accurate. He was very happy that his story in a way corrected his portrayal towards the public if you will, because he really was such an important friend to – well, William would have never…
William would have probably been dead in a year or two.
Oh, yeah! I mean, James left to Kansas and wanted to take William because he didn't like the idea of him never writing another book, never doing anything. William would have never finished The Western Lands trilogy; he would never become a painter; all the audience stuff – everything.
He would never have been cool and everything, and that was all James' – there's Punk kids who like his stuff; "Maybe he go do some shows, and get paid some good money for it, because he hasn't made any fucking money!"
Without James, really, most of us would probably not know a whole lot about William Burroughs; and he certainly would have not traversed all the different mediums that he did.
And he's been really good about Billy's stuff as well, making sure that's still out there for people, because there's books…
There's stuff that's not in The Burroughs Movie, but James was really taking care of Billy; I mean, sending money, being on the organisational stuff if you will – that wasn't William's domain at all. James was holding that together.
So, yeah, he was upset by that. But it was really touching that in the 2014 screening at the New York Film Festival of Burroughs The Movie, where a lot of the people were back. James had such a great time, and everyone kind of haves a different opinion now of James. So that was cool; I felt good about that. Because I feel like I was making up for Howard in a way. I know Howard loved James a lot.
So what are you working on now? And why are you in London? Because you've lived here for a while
That's a question I'm asking myself more and more each day.
London is not the best place.
No, I really like where I live; I really like my neighbourhood. But now I really think everything's a bit confusing. I'm not really sure.
And it's too fucking expensive.
Yeah, although the Brexit thing's helping! [Laughter] Probably opposite of what the English thought would happen. It's making me a bit more liberal. Basically I've been here because my wife and I like it. Its proximity to Europe, and London's full of great people and things; to me it's like a quiet New York, a provincial New York City if you will. How long it remains this way, I don't know. I do really love London, and it's sad to see what's going on with the business end of it, because if they remove themselves from Europe –
They're fucked.
And it's also very, very difficult to do films here.
What's the big European film fund you got money from?
Europe Media?
Yeah, Europe Media. If they're out, they're completely screwed.
I mean, Uncle Howard would not have been possible without European funding. And my next film takes place in Berlin. I have US partners and European partners. If the UK is out, it's a very big disaster for the arts and also academically.
You've got roughly a year, maybe two.
Trying to sneak this one in before it explodes. So yeah, my next film is a fiction adaptation of the novel Black Deutschland by Darryl Pinckney, who's in Uncle Howard. Because Pinckney lived in West Berlin in the 80s. This is a novel about a young, gay, addict, African-American from Chicago who goes to live in West Berlin in the 80s. And the book came in early February (of 2016). I read it on the plane back from Sundance and thought, "I can do this. I want to tell this story." So I headed out, optioned the novel, and writing the screenplay.
What was the most surprising bit of the archive for that film?
It was full of surprises. I'll tell you a weird thing: before we actually got the archive out of The Bunker, I had gone to Kansas and gotten Howard's safety sound rolls and digitised that – it's quarter-inch tape, so I could hear it. So my introduction to that world of New York was just 30 hours of the sound. And what struck me was how different New York sounded. Basically now, it's built up along the river edge-to-edge. The sound is very much on top of you. But then it was sort of like – it wasn't built up on the river, and it was kind of bombed-out, so there was a kind of lateral sound-travelling going on, and it just sounded so echo-y and cacophonous. And it started to put me into a. state of almost time travel, going forward through time. And I definitely think that early discovery influenced me as far as how I would approach the film, so that it would offer this journey into the past, and it seemed to fit a lot with William Burroughs' ideas of
Time travel.
and time being a resource. My editor, for example, his favourite cut in the film is between when I first get in The Bunker and very overwhelmed emotionally with the orange chairs and you cut to the film – that's a 30-year cut. Well, it's not often an editor gets to do that. And there's something in that kind of approach that's very much what we were after.
There's that great bit where you and someone else talked about the footage, and it's Burroughs and John – I think both Johns –
Yeah, with Tom DiCillo. That was just like real-time. That was a case of how well, I think, it was thought through with the whole crew. We knew that we wanted it to be serious, and we're dealing with new footage and old footage. The connections are going to be in this middle space of filmmaking, when the camera's moving and things aren't quite set-up, and you're fighting different things. It's uncomfortable to be not behind the camera as a director, but as I was in it, kind of had to have a clear approach that: there are going to be these moments that we need to capture, and that's going to be our point of entry. And the crew is spot-on in that case. Because it's happening in real-time, and it was really important to bring the audience into that journey of our film, to see the physicality of the [film] can, going from smelling it –
That's one of my favourite moments.
to walking it out of The Bunker 30 years later. In that sequence, we're talking about the power of film and preservation and the real kind of magic that can happen from film.
Was there anyone you wanted to talk to who just turned you down?
Well, I kind of had mixed feelings about wanting to talk to Madonna. My producer really wanted her in the film, of course. But I wanted to talk to her, and obviously you can't just pick up the phone and call her. By the time we actually made enough progress to get to someone where it was direct, it was in August, just as we were finishing up the edit, and she was just starting her 'Rebel Heart' tour, locked in through the end of the year, so the timing wasn't good. It would have been good to have her in the film, but creatively there's something I kind of like about all the people through Howard's story are with you, guiding it, but as his Hollywood career never quite solidifies, you don't have someone like Madonna or Matt Dillon in there; in a way I think it kind of works, and I think the film would be a bit different with them – not that it wouldn't be better or worse, I don't know, but it'd have been different. So it would have been nice to talk with Madonna. I would have liked to talk to William, of course, if he was alive.
While we're on Madonna, the film has got a crazy soundtrack.
Yeah. I definitely challenged the music supervisor. As I was telling you about working with the sound at the beginning, early on I was doing like little pieces of experiments with stuff I would shoot, through video and music, just to create feels. And when after in the edit and everything, had the structure, I had this kind of music – the sequences still kind of worked – in my pocket, so it ended up being extremely eclectic. But I worked with Barry Hogan of All Tomorrow's Parties.
How was he? Because I've heard…
Well, he's a really good friend of mine. I know like the business side of things can get complicated.
I've heard both sides, yeah.
You know, they've been putting on independent, amazing festivals for so long. No corporate interference, advertising, anything; I think a lot of people underestimate just how extremely difficult that is.
But anyway, his taste in music and his knowledge in music and musicians is second-to-none. So I worked with him, and it was like: the approach was always just about finding the right thing that fit; there was never like, "I'm gonna find a track from 1982." Or whatever. I remember when we were cutting, Barry was just playing around with something; he was like, "What is that?? That's great! [LAUGHS] That has to stay!"
"Well, I don't know if it'll make sense – "
"No, it works. Just works." That's kind of the beauty of working with so much interesting footage and ideas and sounds that you get these great moments just to experiment like that whole AIDS sequence, overlaying a White Hills track and a Vision Fortune track with newsreel clips, sounds of the cityscape, and footage and old footage of New York kind of in that space that we're playing with.
How do you feel about Kickstarter? Because I'm always a bit on the fence about it.
Mixed. I mean, you're buying into a cause, so there's that. I'm really glad that it exists, but I don't necessarily want to do it again. It's not about the money; this is the thing I think people don't understand. But with 'Burroughs', it was a way to: A) see, "Who's the audience out there? Is there an audience out there for this?" Like, if I'm not going to get the money, there's not an audience. Instead, what happened was all over the world, people were talking about the movie, and it was very good for that. Because the money doesn't make sense. We had myself, my producer, and like three people working with us for 3 months campaigning non-stop for 20 grand; at the end of the day you're making below minimum wage. So it doesn't make sense, maybe, in that regard. So…I'm mixed about it, you know?
I think crowdfunding is a ton of work. You're running like a store for a year or two, and people kind of get angry with you and think you should be on the ball, but you're not a store; you've got a life, you've got different jobs, you're trying to manage this on top –
And you're making the film as well.
Yeah. So it's a ton of work for really very little but I'm glad it's there. It's good that we have it.
Is it Amazon or some big corporation that's a chunk of Kickstarter?
That's also true. I'm sharing my cut with Kickstarter and Amazon. Guys just taking cuts of everything, all over the internet! Alright.
Obviously because Amazon's streaming service is rubbish, how do you feel about the whole Amazon Videos thing?
Well, not that it's rubbish; it's the curation – I don't know if you know the Film Shop that used to be on Church Street, which is round the corner from here; it's like Kim's Video in New York where it's organised by director and nationality, and you can actually go in and do taster videos. I just hate the fact that someone's movie that they made for 10,000 bucks, which is shit, is next to '2001'; it doesn't make sense. But Amazon Studio, they've got a lot of money, and they are making a big point about backing auteurs. From what I hear they've been pretty good to Jim [Jarmusch].
Well, obviously he is very picky about the money.
Jim's very picky about everything with his projects, which is how he's maintained such a great career. And it's a big corporation, and I think they've been pretty respectful, and it's gone well. So I don't know, they're giving Woody Allen a ton of money. I hope that their model works well enough with the auteurs that they could take more risks.
Buy Burroughs The Movie (Blu-Ray)
(and special mention to Josh Merritt for doing the transcription)
Previous Post The Man Between – Blu-Ray Review
Next Post Ian Schultz's Top Ten Films of 2016


text:
Michael Bloomberg Contributes Additional $5.5 Million to United Nations Climate Change Secretariat to Again Fill United States Federal Funding Gap
Apr 22, 2019 1:00 PM ET
.@mikebloomberg contributes additional $5.5 million to United Nations climate change secretariat to again fill United States federal funding gap #earthdaymomentum #climateaction @bloombergdotorg http://bit.ly/2GBWjgG
View on Bloomberg Philanthropies
NEW YORK, April 22, 2019 /3BL Media/ – Today, Michael R. Bloomberg, the United Nations Secretary-General's Special Envoy for Climate Action, announced that for the second year in a row he will make up the funding gap left by the United States federal government and provide $5.5 million to the United Nations Climate Change Secretariat to ensure it can continue its critical work empowering countries to meet the goals outlined in the Paris Agreement. Today's announcement, along with the $4.5 million he contributed last year for the same purpose, brings his support for the United Nations Climate Change Secretariat to a total of $10 million in the past two years.
The former federal administration committed a total of $15 million to the United Nations Climate Change Secretariat for the two year 2018-2019 funding cycle. In 2018 the United States transferred only $2.5 million to the United Nations Climate Change Secretariat and is expected to deliver the same amount this year. Bloomberg's contributions realize his promise from June 2017 to fill the significant gap caused by the current administration's failure to act on the pledges made under the Paris Agreement. Bloomberg will make additional funds available should the U.S. government again fail to pay its share of the UN climate budget in 2020. Due to Bloomberg's leadership, the United States remains on track to uphold its financial commitment.
"The United States made a promise to meet the goals outlined in the Paris Agreement – and if the federal government won't hold up our end of the deal, then the American people must," said Michael R. Bloomberg, UN Secretary-General's Special Envoy for Climate Action, founder of Bloomberg LP and Bloomberg Philanthropies, and three-term mayor of New York City. "As mayors, governors, business leaders, and private citizens across the country work to ensure that we meet our climate targets, our foundation will again cover the difference in federal funding to the United Nations. Together, we're sending a loud, clear message to the rest of the world: regardless of what's happening in Washington, we're in this fight with you."
As the Special Envoy for Climate Action, Bloomberg has been a leading advocate for climate action, both nationally and globally. When the federal government announced its intention to withdraw from the Paris Agreement, Bloomberg launched the "We Are Still In" declaration and created America's Pledge with former California Governor Jerry Brown. By catalyzing climate commitments from thousands of non-federal actors including cities, states, and businesses, and reporting on their progress each year, these efforts have demonstrated that the United States remains committed to the goals outlined under the Paris Agreement, regardless of federal inaction. Thanks to initiatives already taken by cities, states and businesses to reduce carbon emissions, the United States is already almost halfway to meeting its 2025 Paris Agreement goal. To better equip cities in their efforts Bloomberg additionally launched the American Cities Climate Challenge, a $70 million two-year acceleration program designed to empower Mayors to meet and beat their near-term carbon reduction goals in line with the Paris Agreement.
"With the effects of climate change already apparent – and accelerating – we need urgent action now to protect people and the planet," said United Nations Secretary-General António Guterres. "As we look ahead to the September Climate Action Summit in New York, I am grateful to my Special Envoy, Mike Bloomberg, for his support for the United Nations Climate Change secretariat and his work to catalyze the kind of climate solutions we need on both a national and global scale."
"The success of the Paris Agreement and global efforts to address climate change are contingent upon bold action from governments, private sector and civil society," said UN Climate Change Executive Secretary Patricia Espinosa. "UN Climate Change Secretariat thanks Mike Bloomberg for his ongoing support for global climate action and welcomes his generous contribution to better assist countries in realizing their Paris goals."
Bloomberg Philanthropies' continued funding will cover some basic cost of operations at the Secretariat's headquarters in Bonn. With financial support from Bloomberg, the UN will be able to strengthen its efforts to promote climate action among non-states actors such as cities, regions, business and civil society, invest in communications and emerging technology, and continue to ensure that the world makes progress on international carbon reduction goals.
About Bloomberg Philanthropies:
Bloomberg Philanthropies works in 480 cities in more than 120 countries around the world to ensure better, longer lives for the greatest number of people. The organization focuses on five key areas for creating lasting change: Arts, Education, Environment, Government Innovation, and Public Health. Bloomberg Philanthropies encompasses all of Michael R. Bloomberg's charitable activities, including his foundation and his personal giving. In 2018, Bloomberg Philanthropies distributed $767 million. For more information, please visit bloomberg.org or follow us on Facebook, Instagram, YouTube and Twitter.
Events, Conferences & Webinars
Earthday
pars agreement
More from Bloomberg
Ensuring the Green Standard
Jun 25, 2019 3:50 PM ET
Bloomberg New Economy Launches Open Call for Solutions
Bloomberg Celebrates Pride Month in June, Marks 50 Years Since the Stonewall Uprising
Our Next Moonshot: Saving Earth's Climate
Solar, Wind, Batteries To Attract $10 Trillion to 2050, But Curbing Emissions Long-Term Will Require Other Technologies Too


text:
Nostalgia ain't what it used to be
HomeStoriesHistorical documentsLinksAbout
The Road Toward Independence (final part of two)
Date: 15 July, 2010
By: Chief
To read part one.
ello again. Let us pick up where we left off.
Under the quill
What is utterly astounding is not all that many changes were made to the Declaration. Indeed most of the changes Jefferson penned in himself though annotating who suggested the change. Primarily it was Franklin and Adams suggesting changes. Hence, I suspect those changes were done during the Committee of Five editing process. However, I could be very wrong about that.
It appears the biggest deletion was the slavery clause. And the biggest addition was the first part of the Lee resolution. According to Wikipedia:
"Congress made a few changes in wording and deleted nearly a fourth of the text, most notably a passage critical of the slave trade, changes that Jefferson resented. On July 4, 1776, the wording of the Declaration of Independence was approved and sent to the printer for publication."
By its very wording the slavery clause was an indictment against Fat George (King George III) and possibly Parliament itself.
Here is the deleted slavery clause:
"[H]e has waged cruel war against human nature itself, violating it's most sacred rights of life & liberty in the persons of a distant people who never offended him, captivating & carrying them into slavery in another hemisphere, or to incur miserable death in their transportation thither. This piratical warfare, the opprobrium of infidel powers, is the warfare of the CHRISTIAN king of Great Britain. Determined to keep open a market where MEN should be bought & sold, he has prostituted his negative for suppressing every legislative attempt to prohibit or to restrain this execrable commerce: and that this assemblage of horrors might want no fact of distinguished die, he is now exciting those very people to rise in arms among us, and to purchase that liberty of which he has deprived them, & murdering the people upon whom he also obtruded them; thus paying off former crimes committed against the liberties of one people, with crimes which he urges them to commit against the lives of another."
Wow! What an indictment of Fat George himself. "[P]iratical warfare." Jefferson was calling the King of England a pirate. At the time, I believe, to call the king or queen a pirate was cause for arrest, trial (after some torture of course) and subsequent execution for treason.
The right of revolution
To me what makes the Declaration of Independence unique is the right of revolution or right of rebellion clause. It makes clear the point that if a government acts contrary to liberty or to the people's "unalienable Rights," it is the right and the duty of the people to "alter or to abolish it." Here is the entire right of revolution clause as adopted by the Second Continental Congress:
"We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness. That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security."
God I do love that section — especially the final sentence. Truthfully it brings tears to my eyes each and every time I read it.
Signing the Declaration
How weird, but there is ongoing dispute as to the date of the signing of the Declaration of Independence. Some historians believe it was signed on the Fourth of July. Others say nay. It may not have been completely signed until sometime in early to mid September or October
I submit it could not have been signed completely on July the Fourth as some members who did eventually sign the Declaration had not even been elected to the Continental Congress until after July the Fourth. Furthermore some, such Samuel Chase and Richard Henry Lee, were away from Congress on the Fourth.
It is my feeling that John Hancock, President of the Second Continental Congress, did place his decorative signature on the document along with Charles Thomson, Congressional Secretary, as witness (attesting), on July Fourth. Additionally it was this Declaration that was first published (the Dunlap broadside) far and wide.
The reason for Hancock's large signature on the Declaration has also been debated. Quoting Wikipedia:
"According to legend, Hancock signed his name largely and clearly so that King George could read it without his spectacles, but this fanciful story did not appear until many years later."
In truth nobody factually knows why Hancock signed his name the way he did. The signature is almost five inches long. I suspect Hancock did what he did as kind of an "up yours" or "fuck you" to Fat George and possibly General Thomas Gage, who at that time was the Military Royal Governor of Massachusetts as well as the senior commander of the British troops in the Boston area. It was Gage, after the battle at Lexington and Concord, who issued a proclamation granting (quoting Wikipedia):
"[A] general pardon to all who would 'lay down their arms, and return to the duties of peaceable subjects' - with the exceptions of Hancock and Samuel Adams. Singling out Hancock and Adams in this manner only added to their renown among Patriots."
Hence John Hancock was absolutely correct in letting Fat George and General Gage know what he was up to — in a gentlemanly sort of way. Or in the vernacular — 'You can't catch me and furthermore you suck'.
Besides which, if he was caught by the redcoats, he would be hanged. So why not add insult to injury and — flip 'em off? It does show a plethora of spirit.
So when should we celebrate our independence? An interesting question is it not? The actual resolution of independence, the Lee Resolution, was adopted on the Second of July and the Declaration of Independence was adopted on the Fourth of July.
As for me I think We the People should celebrate for three consecutive days. The second, third and the fourth. Why? To honor the founders of this country and far more important-Lee (I couldn't resist), to properly celebrate the birth of this country.
In closing, here are the last three verses from the song "The Egg" sung by Adams, Franklin and Jefferson about the birth of the new nation (from the movie musical 1776):
[Adams:] "The eagle's going to crack the shell of the egg that England laid --
[All:] "Yes, so we can tell, tell, tell on this humid Monday morning in this Congressional incubator --
[Franklin:] "And just as Tom here has written ... though the egg may belong to Great Britain, the eagle inside belongs to us!
[All:] "And just as Tom here has written ... we say to hell with Great Britain! The eagle inside belongs to us!"
Or, if you would prefer, here is the video (You Tube) of "The Egg."
Either way — enjoy.
(Return to the top)
Copyright © 1996 - 2019 The Chief Sez.
The Chief Sez stories are published under a Creative Commons license.


On Charlie Rose Wednesday night, Fox News host Megyn Kelly finally opened up about Donald Trump and the months-long quarrel with the GOP presidential nominee. Kelly seemed to put his past attacks behind her and said her network didn't want "any sort of a war" with Trump. Then in a show of goodwill (or media genius), Kelly said she thinks Trump will return to her show, telling Rose, "I'm sure he'll come back on eventually." It makes you wonder: Is this about moving on or potentially awesome ratings in a few weeks?
The conflict between Trump and the news anchor began at the first Republican debate when she questioned him about his insults of women, which included calling them "fat pigs, dogs, slobs and disgusting animals." Kelly asked him straight-up, "Does that sound to you like the temperament of a man we should elect as president?" Needless to say, Trump was not pleased. After the debate, he accused her of being out to get him, perhaps because she had "blood coming out of her whatever," which some interpreted to mean she was menstruating. He denied that's what he meant, but in the following weeks, he never stopped the attacks. Tweeting at her later in August, he called her "off her game" and then retweeted someone who called her a "bimbo."
On Wednesday night, Rose asked how the network and Fox News CEO and Chairman Roger Ailes had counseled Kelly through the controversy. Rose suggested Fox News may have abandoned Kelly for Trump because of ratings, but Kelly denied the implication.
But that wasn't true. Roger and I spoke every day for over an hour at times. And he wanted to make sure I was OK. He wanted to, you know, touch base on what he was thinking and what was happening on his end. ... Because neither one of us wanted any sort of a war with Donald Trump. You know, and we didn't think that benefited the channel. We didn't think it benefited me. And we don't think it benefited Donald Trump. And I think Donald Trump would say that now.
But Rose's suggestion that ratings may have played into Fox News' priorities makes sense. Just last week Fox News announced Kelly's show The Kelly File finished first in the key ratings demographic of 25- to 54-year-olds from July to September for the first time ever. While definitely a huge accomplishment, the show would have come in second if it were not for its post-debate special on Aug. 6, which drew a large audience given the 24 million-strong lead-in. Trump's performance in that first debate gave all the talking heads plenty to pick apart on Kelly's special and for days to come on the network.
Later in the interview, Rose asked if Kelly wants him back on her show. Notice her answer: "I'm sure he'll come back on eventually." She doesn't say she wants him on, but it seems she knows that this is how this sort of thing works. Trump needs Fox News. That's where his constituency gets its information, and appearances on the network are a huge way for him to reach potential voters. And Kelly needs Trump too. Despite what she might think of him — and you have to respect her for asking him difficult questions — Kelly benefits from the buzz he draws.
Well, it has to be just right. I think that will be a big moment. Don't you think that will be a big television moment?
So how much is this one-sided détente about closure and how much is it about future ratings bonanza from this "big television moment?" It's probably both. Trump and Kelly both win if they can spar again on prime time cable news. Kelly went on to say she wanted to "forge forward" and "not pour any more fuel on that fire." But maybe just enough fuel for viewers to tune in.


text:
Sengoku Basara: Samurai Heroes
Platform PS3, Wii Publisher Capcom Developer Capcom Release Date Oct 12, 2010
Capcom's Sengoku Basara 4 offers more samurai fighters, more flashy moves and a new time era
By kevingifford on Jul 03, 2013 07.03.13
Capcom revealed details on Sengoku Basara 4 in this week's issue of Famitsu magazine this week, the latest in their series of samurai-themed hack-and-slash titles and a direct sequel to the game...


text:
Saudi GP bosses deny 'sportswashing' nation's human rights record with 2021 F1 race after Amnesty International backlash
SAUDI GP bosses deny they want to 'sportswash' the country's human-rights record by paying to host a race next season.
Amnesty International criticised Formula One for adding the Grand Prix to form a 23-race calendar in 2021.
Prince Khalid Bin Sultan Al Faisal, president of the Saudi Arabian motorsport federation, hopes he can change people's minds.
He said: "I don't blame them, when you don't know a country, and when you have a certain image of a country.
"I remember myself when my parents used to tell me we're going to go to the US, especially to New York, I was frightened.
"I would think that I'm going to walk in the street and somebody will come and shoot me, because I'd never been there.
"I know why they're not excited about it, because of a lot of issues with the human rights, and because they've never been to Saudi.
"That's why, now for us opening up, and hopefully with people coming in Saudi Arabia, seeing the country, and then going back and reporting what they saw, this will maybe make people change their mind.
"This happened to us with Dakar, we had a lot of people...about 3,000 participants and drivers came.
"Most of them, they had the same impression, and they were not happy."
LEW AIN'T IT
Vettel claims Schumacher is F1's GOAT ahead of Hamilton despite seventh title
HAM FISTED
Ronnie snubs Hamilton from sport GOAT list amid calls for F1 star to be knighted
Former motorsport driver turned porn star Renee Gracie kisses ex-surfer Coffey
HELPFUL STEER
Mick Schumacher taking tips from F1 hero dad Michael who is following career
LEWK & LEARN
Lewis says doing more homework than ever won him 7th title ahead of knighthood
KEEPING COL
Inside Hamilton's Colorado Mountain retreat that is 'full of love and memories'
Prince Khalid added: "Even with Formula E, like BMW and other teams, they said, they didn't want to go to Saudi Arabia.
"But after they came to Saudi Arabia, and after they saw us and met us, they changed their perspective about Saudi Arabia.
"Part of the vision and part of opening up our country, we would like people to come and see who we really are. We don't have anything to hide.
"If we wanted to sportswash our image or something, then we will close our country because we will not let you come and see and meet with our people."
Amnesty International were critical that F1 had added the GP to form a 23-race calendar in 2021.
Prince Khalid said the matter had been discussed with F1 bosses but also stressed that the country does have a different culture.
He added: "We definitely had a conversation on that and I know, maybe this is a thing that a lot of people talk about with Saudi Arabia, but we are not like the other countries.
"We know that we are different. We have our culture. There are things that people can do in other places that they can't do here.
"But we respect our differences, and we are opening our country to anyone.
"We don't have any discriminations, so everybody can come. If you're a man or a woman, there is no segregation.
"Sport brings people together and unites them. So that's why we are hosting these events."
Formula One announce Saudi Arabia Grand Prix
Source https://www.thesun.co.uk/sport/13299543/saudi-arabia-gp-f1-sportswashing-deny/
Lockdown restrictions in Perth and Kinross to be extended until mid-February
Government adviser suggests schools could reopen in February
Bridgerton-inspired Scottish castle owners looking to home swap
Scots warned of 12 inches of snow as Storm Christoph to bring blizzards
DWP makes 'temporary' change to DLA online claim form - what you need to know
CCTV images of robber who held up garage on A38
West Dunbartonshire residents face lockdown until at least mid-February
Revenge attack on van in Glusburn was 'mistaken identity' Skipton court heard
Loved-up rescue dogs Bonnie and Clyde saved from life of abandonment
Win bed, breakfast and cocktails in a city centre hotel
Huge 'luxury' £100m student scheme to open this year
Risk of more snow as Storm Cristoph sweeps UK, Met Office warns
Good riddance! Boris Johnson turns back on Donald Trump with Nobel Prize snub


text:
package org.attoparser;

/**
 * Class containing utility methods for parsing elements (tags).
 *
 * @author Daniel Fernández
 * @since 2.0.0
 */
public final class ParsingElementMarkupUtil {

    private ParsingElementMarkupUtil() {
        super();
    }

    public static void parseStandaloneElement(
            final char[] buffer,
            final int offset, final int len,
            final int line, final int col,
            final IMarkupHandler markupHandler)
            throws ParseException {

        if (len < 4 || !isOpenElementStart(buffer, offset, offset + len) || !isElementEnd(buffer, (offset + len) - 2, offset + len, true)) {
            throw new ParseException(
                    "Could not parse as a well-formed standalone element: \"" + new String(buffer, offset, len) + "\"", line, col);
        }

        final int contentOffset = offset + 1;
        final int contentLen = len - 3;

        final int maxi = contentOffset + contentLen;

        final int[] locator = new int[] {line, col + 1};

        /*
         * Extract the element name first
         */

        final int elementNameEnd =
            ParsingMarkupUtil.findNextWhitespaceCharWildcard(buffer, contentOffset, maxi, true, locator);

        if (elementNameEnd == -1) {
            // The buffer only contains the element name

            markupHandler.handleStandaloneElementStart(
                    buffer, contentOffset, contentLen,
                    true, line, col);

            markupHandler.handleStandaloneElementEnd(
                    buffer, contentOffset, contentLen,
                    true, locator[0], locator[1]);

            return;

        }

        markupHandler.handleStandaloneElementStart(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                true, line, col);

        // This parseAttributeSequence will take care of calling handleInnerWhitespace when appropriate.
        ParsingAttributeSequenceUtil.parseAttributeSequence(
                buffer, elementNameEnd, maxi - elementNameEnd, locator[0], locator[1], markupHandler);

        // We need to forward the locator to the position corresponding with the element end (note we are discarding result)
        ParsingMarkupUtil.findNextStructureEndAvoidQuotes(buffer, elementNameEnd, maxi, locator);

        markupHandler.handleStandaloneElementEnd(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                true, locator[0], locator[1]);

    }

    public static void parseOpenElement(
            final char[] buffer,
            final int offset, final int len,
            final int line, final int col,
            final IMarkupHandler markupHandler)
            throws ParseException {

        if (len < 3 || !isOpenElementStart(buffer, offset, offset + len) || !isElementEnd(buffer, (offset + len) - 1, offset + len, false)) {
            throw new ParseException(
                    "Could not parse as a well-formed open element: \"" + new String(buffer, offset, len) + "\"", line, col);
        }

        final int contentOffset = offset + 1;
        final int contentLen = len - 2;

        final int maxi = contentOffset + contentLen;

        final int[] locator = new int[] {line, col + 1};

        /*
         * Extract the element name first
         */

        final int elementNameEnd =
                ParsingMarkupUtil.findNextWhitespaceCharWildcard(buffer, contentOffset, maxi, true, locator);

        if (elementNameEnd == -1) {
            // The buffer only contains the element name

            markupHandler.handleOpenElementStart(
                    buffer, contentOffset, contentLen,
                    line, col);

            markupHandler.handleOpenElementEnd(
                    buffer, contentOffset, contentLen,
                    locator[0], locator[1]);

            return;

        }

        markupHandler.handleOpenElementStart(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                line, col);

        // This parseAttributeSequence will take care of calling handleInnerWhitespace when appropriate.
        ParsingAttributeSequenceUtil.parseAttributeSequence(
                buffer, elementNameEnd, maxi - elementNameEnd, locator[0], locator[1], markupHandler);

        // We need to forward the locator to the position corresponding with the element end (note we are discarding result)
        ParsingMarkupUtil.findNextStructureEndAvoidQuotes(buffer, elementNameEnd, maxi, locator);

        markupHandler.handleOpenElementEnd(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                locator[0], locator[1]);

    }

    public static void parseCloseElement(
            final char[] buffer,
            final int offset, final int len,
            final int line, final int col,
            final IMarkupHandler markupHandler)
            throws ParseException {

        if (len < 4 || !isCloseElementStart(buffer, offset, offset + len) || !isElementEnd(buffer, (offset + len) - 1, offset + len, false)) {
            throw new ParseException(
                    "Could not parse as a well-formed close element: \"" + new String(buffer, offset, len) + "\"", line, col);
        }

        final int contentOffset = offset + 2;
        final int contentLen = len - 3;

        final int maxi = contentOffset + contentLen;

        final int[] locator = new int[] {line, col + 2};

        /*
         * Extract the element name first
         */

        final int elementNameEnd =
            ParsingMarkupUtil.findNextWhitespaceCharWildcard(buffer, contentOffset, maxi, true, locator);

        if (elementNameEnd == -1) {
            // The buffer only contains the element name

            markupHandler.handleCloseElementStart(
                    buffer, contentOffset, contentLen,
                    line, col);

            markupHandler.handleCloseElementEnd(
                    buffer, contentOffset, contentLen,
                    locator[0], locator[1]);

            return;

        }

        markupHandler.handleCloseElementStart(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                line, col);

        int currentArtifactLine = locator[0];
        int currentArtifactCol = locator[1];

        final int wsEnd =
            ParsingMarkupUtil.findNextNonWhitespaceCharWildcard(buffer, elementNameEnd, maxi, locator);

        if (wsEnd != -1) {
            // This is a close tag, so everything should be whitespace
            // until the end of the close tag
            throw new ParseException(
                    "Could not parse as a well-formed closing element " +
                    "\"</" + new String(buffer, contentOffset, contentLen) + ">\"" +
                    ": No attributes are allowed here", line, col);
        }

        markupHandler.handleInnerWhiteSpace(buffer, elementNameEnd, (maxi - elementNameEnd), currentArtifactLine, currentArtifactCol);

        markupHandler.handleCloseElementEnd(
                buffer, contentOffset, (elementNameEnd - contentOffset),
                locator[0], locator[1]);

    }

    static boolean isOpenElementStart(final char[] buffer, final int offset, final int maxi) {

        final int len = maxi - offset;

        return (len > 1 &&
                    buffer[offset] == '<' &&
                    isElementName(buffer, offset + 1, maxi));

    }

    static boolean isCloseElementStart(final char[] buffer, final int offset, final int maxi) {

        final int len = maxi - offset;

        return (len > 2 &&
                    buffer[offset] == '<' &&
                    buffer[offset + 1] == '/' &&
                    isElementName(buffer, offset + 2, maxi));

    }

    static boolean isElementEnd(final char[] buffer, final int offset, final int maxi, final boolean minimized) {

        final int len = maxi - offset;

        if (len < 1) {
            return false; // won't fit
        }

        if (minimized) {
            if (len < 2 || buffer[offset] != '/') {
                return false;
            }
            return buffer[offset + 1] == '>';
        }

        return buffer[offset] == '>';

    }

    private static boolean isElementName(final char[] buffer, final int offset, final int maxi) {

        final int len = maxi - offset;

        if (len > 1 && buffer[offset] == '!') {
            if (len > 8) {
                return (buffer[offset + 1] != '-' && buffer[offset + 1] != '!' &&
                        buffer[offset + 1] != '/' && buffer[offset + 1] != '?' &&
                        buffer[offset + 1] != '[' &&
                        !((buffer[offset + 1] == 'D' || buffer[offset + 1] == 'd') &&
                          (buffer[offset + 2] == 'O' || buffer[offset + 2] == 'o') &&
                          (buffer[offset + 3] == 'C' || buffer[offset + 3] == 'c') &&
                          (buffer[offset + 4] == 'T' || buffer[offset + 4] == 't') &&
                          (buffer[offset + 5] == 'Y' || buffer[offset + 5] == 'y') &&
                          (buffer[offset + 6] == 'P' || buffer[offset + 6] == 'p') &&
                          (buffer[offset + 7] == 'E' || buffer[offset + 7] == 'e') &&
                          (Character.isWhitespace(buffer[offset + 8]) || buffer[offset + 8] == '>')));
            }
            return (buffer[offset + 1] != '-' && buffer[offset + 1] != '!' &&
                    buffer[offset + 1] != '/' && buffer[offset + 1] != '?' &&
                    buffer[offset + 1] != '[' && !Character.isWhitespace(buffer[offset + 1]));
        }
        return (len > 0 &&
                buffer[offset] != '-' && buffer[offset] != '!' &&
                buffer[offset] != '/' && buffer[offset] != '?' &&
                buffer[offset] != '[' && !Character.isWhitespace(buffer[offset]));

    }

}