Greenleaf Recycling Limited are a North East based green waste recycling centre that produces a soil conditioner product.
When they contacted Smartspeed they were interested in achieving PAS 100, a recognised standard for producing high quality composts and soil conditioners, which is required if you want to sell your composted products.
Although Smartspeed are not compost experts, PAS 100 is a quality management system (QMS) like ISO9001 and requires an organised approach to process management, somethingthat we certainly do know about!
Analysis and simplification of the existing composting process.
Gap analysis against the PAS 100 and Compost Quality Protocol (CQP) standard to devise a project plan for implementation.
Defined daily routines required for optimum process management of the site.
Guided Greenleaf through the accreditation process.
Led the environmental permit and planning permission application activities.
Establishing of a robust QMS.
Achievement of PAS 100 / CQP standard.
Reduction in composting process lead time.


text:
Diamonds of Namibia
Namibia is renowned for diamonds that occur along the Orange River and onshore and offshore along the coastline. Namibian diamonds were transported via the Orange River into the Atlantic Ocean and distributed north by currents. Diamonds occur as placers within raised and "drowned" beach terraces, gullies in the bedrock, and deposits in wind corridors.
Diamonds have been mined in Namibia since 1908, when railway worker Zacharias Lewala found a stone that would change the course of history of Africa/Namibia, and of alluvial mining.
The stone was a diamond, and shortly after he handed it to his supervisor, a frenzied diamond rush to the desert sands near Luderitz took place which resulted in the mining of seven million carats for colonial Germany until World War I in 1914.
Namibia is one of the world's largest producers of gem quality diamonds, with about 95% of diamonds produced being gem quality.
The major diamond producing company in Namibia is Namdeb Diamond Corporation, jointly owned by the Namibian government and De Beers, which produced 1.76 million carats in 2013, up 6 percent on 2012.
Other companies mining diamonds include Sakawe Mining Corporation (Samincor) and Diamond Fields Namibia.
Marine diamond mining began in the 1960s off the coast of southern Namibia. Namibia is the world's fifth largest diamond producer by value with an average per carat value of US$276.
Namibia's marine diamond production has now surpassed traditional land based production.
Marine mining as deep as 140m has brought Namibia the distinction of being the leading marine mineral mining country in the world. Over the years, the various areas combined have produced around 95 million carats, including around 12 million from deep water marine mining.
Diamonds continue to dominate Namibia's economy. They account for more than 40 percent of export revenue and more than five percent of GDP.
Labels: Diamonds of Namibia
115 carat diamond leads at Christies New York
The Patiala Necklace
Jewels shine at Christie's Geneva
Purple pyrope-almandine garnets
Dior High Jewellery
The French Crown Jewels
Oregon Sunstone - 'Plush Diamonds'
Mellerio
Rockefeller Emerald - $5.5m
'Princie Pink' at center of legal battle
12.11 carat fancy intense blue makes $15.9m

redpajama_set_name: RedPajamaCommonCrawl


Mahishasura Mardini Stotram or Mahishasur Maridhini Sloka is a very popular devotional stotra of Goddess Durga written by Guru Adi Sankaracharya (Sri Sri Sri Shankara Bhagavatpadacharya). This devotionalverse is addressed to Goddess Mahisasura Mardini, the Goddess who killed Demon Mahishasura. Mahisasura Mardini is the fierce form of Goddess Durga Maa (an incarnation of Goddess Parvathi), where Durga Maa is depicted with 10 arms who rides in a lion or tiger and carrying weapons and assumes symbolic hand gestures or mudras.
Who does good to her family.
Who is the daughter of a mountain.
And who is the slayer of Mahishasura.
Who punishes those who are undisciplined.
As you are most merciful on the oppressed.


Have Gravel - Will Travel!
Text, graphics, and HTML code are protected by US and International Copyright Laws, and may not be copied, reprinted, published, translated, hosted, or otherwise distributed by any means without explicit permission of Wheel Dog Trucking and/or North Star Multimedia and/or the respective manufacturers they represent. Each violation could result in a $100,000.00 fine per offense prosecuted in an Alaska Court of Law.
What State am I located in?
Alaska has no plants poisonous to the touch. Poison ivy and poison oak are found in all other states.


text:
Home / Opinion / Event Reviews / Helloween – Brixton academy, London – 14th November 2017
Helloween – Brixton academy, London – 14th November 2017
Ant May November 18, 2017	Event Reviews Comments Off on Helloween – Brixton academy, London – 14th November 2017 587 Views
Tonight's Helloween gig was due to be something special. It's part of their Pumpkins reunited tour which sees the current Helloween lineup joined by former members Kai Hansen and Michael Kiske. For many fans this was their first chance to see Helloween with these two members. There was certainly a lot of excitement ahead of the gig even from the often jaded press who are largely of an age to have grown up listening to the classic Helloween albums such as Keeper of the seven keys, with Michael Kiske on vocals. The increased interest means the band are playign Brixton academy instead of The Forum where they've played on their last few visits to London, and while the venue isn't sold out but it's certainly busy.
With so much excitement and anticipation ahead of the gig, could they really live up to expectations? Well the short answer is that they didn't just meet expectations, they exceeded them – this was the best Helloween show I've seen and has to be one of my top gigs of the year.
The show was brilliantly structured, starting off with both Andi Derris and Michael Kiske performing together, then as the show went on, each of them had several songs where they were the only one on vocals, Kai Hansen took a turn on vocals (he was of course the original vocalist), and for some then Kiske and Derris teamed up again.
During regular short breaks as the band or singers went off stage, we got Helloween animations on the screen at the back of the stage which worked surprisingly well.
While I really enjoy seeing Helloween with Andi Derris on vocals and think he's a great frontman for the band, I grew up listening to Kiske era Helloween, so hearing those songs live with him on vocals was a really special experience. Hearing some of the songs with both of them together on vocals – that was something I'd never expected ever to hear so that just made the night even more special.
This was an incredible show – I'd got high expectations before the show and they easily exceeded them – a truly special night.
Halloween (with Michael Kiske & Andi Deris)
Dr. Stein (with Michael Kiske & Andi Deris)
I'm Alive (with Michael Kiske)
If I Could Fly (with Andi Deris)
Are You Metal? (with Andi Deris)
Kids of the Century (with Michael Kiske)
Waiting for the Thunder (with Andi Deris)
Perfect Gentleman (with Andi Deris)
Starlight / Ride the Sky / Judas (with Kai Hansen)
Heavy Metal (Is the Law) (with Kai Hansen)
Forever and One (Neverland) (with Michael Kiske & Andi Deris)
A Tale That Wasn't Right (with Michael Kiske & Andi Deris)
I Can (with Andi Deris)
Drum Solo (Dani Löble & Ingo 'battle')
Livin' Ain't No Crime (with Michael Kiske) (partial)
A Little Time (with Michael Kiske)
Why? (with Michael Kiske & Andi Deris)
Sole Survivor (with Andi Deris)
Power (with Andi Deris)
How Many Tears (with Andi Deris & Kai Hansen)
Eagle Fly Free (with Michael Kiske)
Keeper of the Seven Keys (with Michael Kiske & Andi Deris)
Encore 2:
Future World (with Michael Kiske)
I Want Out (with Michael Kiske & Andi Deris)
[flickrapi user="planet mosh" get="photoset" id="72157689748530785″ size="z" count="100″]
Tags Andi Derris helloween kai hansen michael kiske Pumkins united
About Ant May
I spend half my life at gigs or festivals and the other half writing the reviews and editing photos, and somehow find time for a full time job too. Who needs sleep - I've got coffee.
Previous Unleash the archers – Craufurd arms, Milton Keynes – 8th November 2017
Next Von Hertzen Brothers – Garage, London – 16th November 2017
Helloween to release live album and DVD/Blu-Ray 'United Alive' on Oct 4th
Avantasia – Moonglow
LAST UNION Release 'Most Beautiful Day' Music Video


text:
Poetry to the Earth
POETRY TO THE EARTH:
The Arts and Crafts
Movement in Deerfield
Poetry to the Earth, written by Curator of Memorial Hall Museum, Suzanne Flynt, chronicles the extraordinary story of how Arts and Crafts transformed this western Massachusetts farming village into a leading crafts center.
Inspired by colonial furniture and textiles in Memorial Hall, women worked alongside their neighbors to learn crafts, set up shops in their front parlors, and exhibit their work locally and nationally. Deerfield's fabled history and rural surroundings created an ideal environment for the Arts and Crafts, a movement that encouraged a return to hand craftsmanship, simplicity of design, and honesty of materials.
In 1896, the Deerfield Society of Blue and White Needlework was formed, followed in 1901 by the founding of the Deerfield Society of Arts and Crafts.
Poetry to the Earth is replete with compelling stories of individual crafters and richly illustrated with their embroidery, weaving, netting, metalwork, furniture, pottery, basketry, decorative painting, and photography.
Written by Suzanne Flynt, Curator of Memorial Hall Museum, with the foreword contributed by Wendy Kaplan, Curator of Decorative Arts and Design, Los Angeles County Museum of Art, Poetry to the Earth is published by Hard Press Editions in association with Hudson Hills Press and the Pocumtuck Valley Memorial Association. Available NOW.
Hard cover, 12″ x 9″, 240 pages long, 345 photographs, $60.


Get the latest real estate statistics for your community - average prices, days on market, showing activity, etc. Feel free to reach out with any questions or if you need additional information for one of these communities or any other. I am always happy to assist and, of course, happy to help you open your next door. Contact Lisa.


You most likely know already that activities raisingourkids connectdottodot 057hardconnectdots is one of the top topics on the internet nowadays. According to data we had from google adwords, activities raisingourkids connectdottodot 057hardconnectdots has incredibly search online web engine. We feel that activities raisingourkids connectdottodot 057hardconnectdots give new ideas or references for audience.
We have found numerous references concerning activities raisingourkids connectdottodot 057hardconnectdots but we feel this is the best. I we do hope you would also acknowledge our opinion. This picture has been posted by our team and is in category tags page. Youre able to download this image by hitting the save link or right click the pic and select save.
We sincerely hope that whatever we share with you could be useful. If you want, you are able to promote this content to your companion, family, online community, or you can also book mark this page.


text:
Sjökalla är en by i Hamrånge socken i Gävle kommun. SCB har för bebyggelsen i byn och en mindre bebyggelse inom byn Bergs ägor väster om själva byn, avgränsat och namnsatt småorten Berg och Sjökalla.

Sjökalla är en av de mindre byarna i Hamrånge socken och troligtvis yngre än grannbyarna Fors och Bergby.

Byn, som 1541 skrivs Siökarle och 1542 Siökalff, omfattade 2 mantal, 1560 tillkom ett tredje mantal.

Bynamnet Sjökalla skall troligen tolkas som 'sjökarlarnas' by. Någon sjö finns numera inte vid byn, men fram till 1700-talet lär där ha funnits en sjö eller grund havsvik som bidragit till att byborna benämnts 'sjökarlar'. Denna numera oldade lågmark heter Flan.

I byn finns ett antal gravar från vikingatiden.

Noter

Orter i Gävle kommun
Småorter i Sverige
Hamrånge

redpajama_set_name: RedPajamaWikipedia


Should the minimum driving age be raised?
What are some forms of support?
Do you believe that younger children should never be given homework?
Consequently, the first reason I think that children should not have homework is it will make their social lives worse.
If students have too much homework, they may not have time to enjoy their lives, causing/making their social skills worse, which is a strong ingredient for success.
Some say that giving children no homework makes them lazy, but I think too much homework kills a child's interest.
I have a personal experience that can illustrate this point. When I was 8 years old I was given too much homework in math and I have never enjoyed math since then. This proves that homework can kill interest.


text:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>me.kongbomb</groupId>
	<artifactId>judgesubmit</artifactId>
	<version>1.7-SNAPSHOT</version>
	<name>judgesubmit</name>
	<packaging>jar</packaging>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<compileSource>1.6</compileSource>
		<compileTarget>1.6</compileTarget>
	</properties>

	<build>
		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<debug>true</debug>
					<encoding>UTF-8</encoding>
					<source>${compileSource}</source>
					<target>${compileTarget}</target>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.4</version>
				<executions>
					<execution>
						<id>jar-with-dependencies</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<descriptorRefs>
								<descriptorRef>jar-with-dependencies</descriptorRef>
							</descriptorRefs>
							<archive>
								<manifest>
									<mainClass>org.psjava.judgesubmit.Console</mainClass>
								</manifest>
							</archive>
						</configuration>
					</execution>
					<execution>
						<id>dist</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>src/main/assembly/dist.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>
				</executions>
			</plugin>

		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>org.puredevteam</groupId>
			<artifactId>httpclient</artifactId>
			<version>0.1.0</version>
		</dependency>
		<dependency>
			<groupId>com.abbajoa</groupId>
			<artifactId>codecombine</artifactId>
			<version>1.0.4</version>
		</dependency>
		<dependency>
			<groupId>org.psjava</groupId>
			<artifactId>psjava</artifactId>
			<version>0.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20131018</version>
		</dependency>
		<dependency>
			<groupId>commons-cli</groupId>
			<artifactId>commons-cli</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.1</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.5</version>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>com.google.code.javaparser</groupId>
            <artifactId>javaparser</artifactId>
            <version>1.0.8</version>
		</dependency>
	</dependencies>
</project>

redpajama_set_name: RedPajamaGithub


text:
Brexit caused food price hike in the UK, report says
Coronavirus pandemic not to blame for 6 percent increase, according to research.
Trade barriers caused by Brexit caused a price hike in the U.K. | Tolga Akmen/AFP via Getty Images
April 27, 2022 10:51 am CET
LONDON — New trade barriers as a result of Brexit have caused a 6 percent increase in food prices in the U.K., according to researchers.
A new report from the U.K. in a Changing Europe think tank said the hike was not down to the coronavirus pandemic. The findings pile pressure on U.K. Prime Minister Boris Johnson, who led the pro-Brexit campaign and is now grappling with a cost of living crisis.
The so-called trade and cooperation agreement (TCA) struck between Britain and the EU has led to checks on goods going from the U.K. to the bloc from the start of 2021 — as well as increased paperwork for traders.
According to the report, the increase in trade barriers led to a 6 percent increase in food prices between the end of 2019 and September 2021, in comparison with the years before December 2019.
Products which make up a larger share of EU imports, such as fresh pork, tomatoes and jams, were more affected than those making up a smaller share of EU imports, such as tuna and exotic fruits like pineapple, the researchers added.
"Covid-19 is ruled out as a factor to price changes, as key events in the pandemic are not obviously correlated with the changes and, furthermore, we are able to control for economy-wide macro-impacts such as national lockdowns," the report said.
It follows research from the London School of Economics (LSE) published this week that found Brexit resulted in "major disruption" to U.K. trade with the EU. It said the new relationship led to a "sudden and persistent" 25 percent fall in U.K. imports from the EU relative to the rest of the world.
The decline in U.K. exports to the EU was smaller and short-lived, the LSE researchers said. "Nevertheless, there was a sharp drop in the number of trade relationships between UK exporters and EU importers, which suggests that the introduction of the TCA caused many UK firms to stop exporting to the EU," they added.
More from ... Emilio Casalicchio
Brexit Cooperation Exports Imports Pork Research Research and Development Trade U.K. trade
US VP Harris headed to Munich conference before Ukraine war's 1-year mark


text:
Q: Eclipse export .jar with referenced libraries I've added a few libraries to my project as external jars, one being HikariCP (https://github.com/brettwooldridge/HikariCP) however when I run my jar I'm given these errors
java.lang.NoClassDefFoundError: com/zaxxer/hikari/HikariDataSource

and
Caused by: java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource

I've tried to bundle these libraries by exporting the project as a "Runnable Jar file" and ticked "Package required libraries into generated jar", however the same errors still persist.
I don't currently have my project set up with Maven, as I've never had the reason to use it (until now?) I've heard this is easy to accomplish via Maven however I was wondering if there's another workaround without it.

A: Try running after including .classpath file in the jar file.
You can include the .classpath file from the jardesc in eclipse.

A: Unpack libs. Next Alt-Enter => Java Build Path => Libraries =>
1. Remove packed library
2. Click "Add External Class Folder"
3. Select your folder with library(-es)
4. Click OK
5. Enjoy :)

redpajama_set_name: RedPajamaStackExchange


text:
Frijns fastest in season six opening session
Robin Frijns tops the opening session of the 2019-20 Formula E championship.
It was a stop-start first free practice session ahead of the Diriyah E-Prix, with a long red-flag period brought out when Brendon Hartley hit the wall at turn 14.
The Dragon Racing driver lost control of his car after running over the disintegrating track at the corner, which has recently been resurfaced to aid draining.
Frijns jumped to the top of the times with his final lap of the session, managing to set a quick final sector after yellow flags in the sector were cleared.
The Virgin Racing driver set a 1m16.137s lap, more than a second quicker than the next quickest driver.
Nico Mueller took second quickest ahead of the second Virgin of Sam Bird and Mercedes' Stoffel Vandoorne.
Ma Qing Hua brought out the first red flag of the season when he came to a stop on track within the opening 15 minutes. The NIO driver lost grip and hit the wall, damaging the front and rear of the car. He tried to limp back to the pits but was forced to stop on track.
Despite the early incident, Ma wasn't last on the timings. That honour went to Mahindra's Pascal Wehrlein, who suffered multiple technical problems during the opening session.
Wehrlein came to a stop three times, the first coinciding with the Full Course Yellow test in the opening minutes. Every time, he was able to get going under his own power but lost valuable track time. The yellow flags that covered the stranded Mahindra in the final minutes of the session ruined many drivers' qualifying simulations, with only Frijns managing to get a lap under complete green flag conditions.
Sebastien Buemi topped the times early in the session but dropped down the order after the qualifying runs. He ended FP1 fifth quickest, ahead of Antonio Felix Da Costa and Mitch Evans.
Daniel Abt and Nyck de Vries both ended the session under investigation for speeding in the pit lane. They finished eighth and ninth respectively, with Lucas Di Grassi rounding out the top 10.
2019 Diriyah E-Prix Envision Virgin Racing Robin Frijns
Bird sets the pace in second Diriyah practice
Venturi Announce New Title Sponsor
Dubourg takes pole for Isola race 1


Outdoor AED Cabinet without Audible Alarm or Strobe Light. This sturdy fiberglass surface-mount cabinet is ideal for outdoor applications. Water resistant and dust resistant! Will not rust! Inside tank dimensions: 13.875"H x 13.875"W x 9"D. Shipping weight 13 lbs.


text:
<?php namespace Underscore;

// Returns an instance of __ for OO-style calls
function __($item=null) {
  $__ = new __;
  if(func_num_args() > 0) $__->_wrapped = $item;
  return $__;
}

// Underscore.php
class Underscore {

  // Start the chain
  private $_chained = false; // Are we in a chain?
  public function chain($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);

    $__ = (isset($this) && isset($this->_chained) && $this->_chained) ? $this : __($item);
    $__->_chained = true;
    return $__;
  }

  // End the chain
  public function value() {
    return (isset($this)) ? $this->_wrapped : null;
  }

  // Invoke the iterator on each item in the collection
  public function each($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    if(is_null($collection)) return self::_wrap(null);

    $collection = (array) self::_collection($collection);
    if(count($collection) === 0) return self::_wrap(null);

    foreach($collection as $k=>$v) {
      call_user_func($iterator, $v, $k, $collection);
    }
    return self::_wrap(null);
  }

  // Return an array of values by mapping each item through the iterator
  // map alias: collect
  public function collect($collection=null, $iterator=null) { return self::map($collection, $iterator); }
  public function map($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    if(is_null($collection)) return self::_wrap(array());

    $collection = (array) self::_collection($collection);
    if(count($collection) === 0) self::_wrap(array());

    $return = array();
    foreach($collection as $k=>$v) {
      $return[] = call_user_func($iterator, $v, $k, $collection);
    }
    return self::_wrap($return);
  }

  // Reduce a collection to a single value
  // reduce aliases: foldl, inject
  public function foldl($collection=null, $iterator=null, $memo=null) { return self::reduce($collection, $iterator, $memo); }
  public function inject($collection=null, $iterator=null, $memo=null) { return self::reduce($collection, $iterator, $memo); }
  public function reduce($collection=null, $iterator=null, $memo=null) {
    list($collection, $iterator, $memo) = self::_wrapArgs(func_get_args(), 3);

    if(!is_object($collection) && !is_array($collection)) {
      if(is_null($memo)) throw new Exception('Invalid object');
      else return self::_wrap($memo);
    }

    return self::_wrap(array_reduce($collection, $iterator, $memo));
  }

  // Right-associative version of reduce
  // reduceRight alias: foldr
  public function foldr($collection=null, $iterator=null, $memo=null) { return self::reduceRight($collection, $iterator, $memo); }
  public function reduceRight($collection=null, $iterator=null, $memo=null) {
    list($collection, $iterator, $memo) = self::_wrapArgs(func_get_args(), 3);

    if(!is_object($collection) && !is_array($collection)) {
      if(is_null($memo)) throw new Exception('Invalid object');
      else return self::_wrap($memo);
    }

    krsort($collection);

    $__ = new self;
    return self::_wrap($__->reduce($collection, $iterator, $memo));
  }

  // Extract an array of values for a given property
  public function pluck($collection=null, $key=null) {
    list($collection, $key) = self::_wrapArgs(func_get_args(), 2);

    $collection = (array) self::_collection($collection);

    $return = array();
    foreach($collection as $item) {
      foreach($item as $k=>$v) {
        if($k === $key) $return[] = $v;
      }
    }
    return self::_wrap($return);
  }

  // Does the collection contain this value?
  // includ alias: contains
  public function contains($collection=null, $val=null) { return self::includ($collection, $val); }
  public function includ($collection=null, $val=null) {
    list($collection, $val) = self::_wrapArgs(func_get_args(), 2);

    $collection = (array) self::_collection($collection);

    return self::_wrap((array_search($val, $collection, true) !== false));
  }

  // Invoke the named function over each item in the collection, optionally passing arguments to the function
  public function invoke($collection=null, $function_name=null, $arguments=null) {
    $args = self::_wrapArgs(func_get_args(), 2);
    $__ = new self;
    list($collection, $function_name) = $__->first($args, 2);
    $arguments = $__->rest(func_get_args(), 2);

    // If passed an array or string, return an array
    // If passed an object, return an object
    $is_obj = is_object($collection);
    $result = (empty($arguments)) ? array_map($function_name, (array) $collection) : array_map($function_name, (array) $collection, $arguments);
    if($is_obj) $result = (object) $result;

    return self::_wrap($result);
  }

  // Does any values in the collection meet the iterator's truth test?
  // any alias: some
  public function some($collection=null, $iterator=null) { return self::any($collection, $iterator); }
  public function any($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $__ = new self;
    if(!is_null($iterator)) $collection = $__->map($collection, $iterator);
    if(count($collection) === 0) return self::_wrap(false);

    return self::_wrap(is_int(array_search(true, $collection, false)));
  }

  // Do all values in the collection meet the iterator's truth test?
  // all alias: every
  public function every($collection=null, $iterator=null) { return self::all($collection, $iterator); }
  public function all($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $__ = new self;
    if(!is_null($iterator)) $collection = $__->map($collection, $iterator);
    $collection = (array) $collection;
    if(count($collection) === 0) return true;

    return self::_wrap(is_bool(array_search(false, $collection, false)));
  }

  // Return an array of values that pass the truth iterator test
  // filter alias: select
  public function select($collection=null, $iterator=null) { return self::filter($collection, $iterator); }
  public function filter($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $return = array();
    foreach($collection as $val) {
      if(call_user_func($iterator, $val)) $return[] = $val;
    }
    return self::_wrap($return);
  }

  // Return an array where the items failing the truth test are removed
  public function reject($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $return = array();
    foreach($collection as $val) {
      if(!call_user_func($iterator, $val)) $return[] = $val;
    }
    return self::_wrap($return);
  }

  // Return the value of the first item passing the truth iterator test
  // find alias: detect
  public function detect($collection=null, $iterator=null) { return self::find($collection, $iterator); }
  public function find($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    foreach($collection as $val) {
      if(call_user_func($iterator, $val)) return $val;
    }
    return self::_wrap(false);
  }

  // How many items are in this collection?
  public function size($collection=null) {
    list($collection) = self::_wrapArgs(func_get_args(), 1);

    $collection = self::_collection($collection);

    return self::_wrap(count((array) $collection));
  }

  // Get the first element of an array. Passing n returns the first n elements.
  // first alias: head
  public function head($collection=null, $n=null) { return self::first($collection, $n); }
  public function first($collection=null, $n=null) {
    list($collection, $n) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    if($n === 0) return self::_wrap(array());
    if(is_null($n)) return self::_wrap(current(array_splice($collection, 0, 1, true)));
    return self::_wrap(array_splice($collection, 0, $n, true));
  }

  // Get the rest of the array elements. Passing n returns from that index onward.
  public function tail($collection=null, $index=null) { return self::rest($collection, $index); }
  public function rest($collection=null, $index=null) {
    list($collection, $index) = self::_wrapArgs(func_get_args(), 2);
    if(is_null($index)) $index = 1;

    $collection = self::_collection($collection);

    return self::_wrap(array_splice($collection, $index));
  }

  // Return everything but the last array element. Passing n excludes the last n elements.
  public function initial($collection=null, $n=null) {
    list($collection, $n) = self::_wrapArgs(func_get_args(), 2);

    $collection = (array) self::_collection($collection);

    if(is_null($n)) $n = 1;
    $first_index = count($collection) - $n;
    $__ = new self;
    return self::_wrap($__->first($collection, $first_index));
  }

  // Get the last element from an array. Passing n returns the last n elements.
  public function last($collection=null, $n=null) {
    list($collection, $n) = self::_wrapArgs(func_get_args(), 2);
    $collection = self::_collection($collection);

    if($n === 0) $result = array();
    elseif($n === 1 || is_null($n)) $result = array_pop($collection);
    else {
      $__ = new self;
      $result = $__->rest($collection, -$n);
    }

    return self::_wrap($result);
  }

  // Return a copy of the array with falsy values removed
  public function compact($collection=null) {
    list($collection) = self::_wrapArgs(func_get_args(), 1);

    $collection = self::_collection($collection);

    $__ = new self;
    return self::_wrap($__->select($collection, function($val) {
      return (bool) $val;
    }));
  }

  // Flattens a multidimensional array
  public function flatten($collection=null, $shallow=null) {
    list($collection, $shallow) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $return = array();
    if(count($collection) > 0) {
      foreach($collection as $item) {
        if(is_array($item)) {
          $__ = new self;
          $return = array_merge($return, ($shallow) ? $item : $__->flatten($item));
        }
        else $return[] = $item;
      }
    }
    return self::_wrap($return);
  }

  // Returns a copy of the array with all instances of val removed
  public function without($collection=null, $val=null) {
    $args = self::_wrapArgs(func_get_args(), 1);
    $collection = $args[0];
    $collection = self::_collection($collection);

    $num_args = count($args);
    if($num_args === 1) return self::_wrap($collection);
    if(count($collection) === 0) return self::_wrap($collection);

    $__ = new self;
    $removes = $__->rest($args);
    foreach($removes as $remove) {
      $remove_keys = array_keys($collection, $remove, true);
      if(count($remove_keys) > 0) {
        foreach($remove_keys as $key) {
          unset($collection[$key]);
        }
      }
    }
    return self::_wrap($collection);
  }

  // Return an array of the unique values
  // uniq alias: unique
  public function unique($collection=null, $is_sorted=null, $iterator=null) { return self::uniq($collection, $is_sorted, $iterator); }
  public function uniq($collection=null, $is_sorted=null, $iterator=null) {
    list($collection, $is_sorted, $iterator) = self::_wrapArgs(func_get_args(), 3);

    $collection = self::_collection($collection);

    $return = array();
    if(count($collection) === 0) return self::_wrap($return);

    $calculated = array();
    foreach($collection as $item) {
      $val = (!is_null($iterator)) ? $iterator($item) : $item;
      if(is_bool(array_search($val, $calculated, true))) {
        $calculated[] = $val;
        $return[] = $item;
      }
    }

    return self::_wrap($return);
  }

  // Returns an array containing the intersection of all the arrays
  public function intersection($array=null) {
    $arrays = self::_wrapArgs(func_get_args(), 1);

    if(count($arrays) === 1) return self::_wrap($array);

    $__ = new self;
    $return = $__->first($arrays);
    foreach($__->rest($arrays) as $next) {
      if(!$__->isArray($next)) $next = str_split((string) $next);

      $return = array_intersect($return, $next);
    }

    return self::_wrap(array_values($return));
  }

  // Merge together multiple arrays
  public function union($array=null) {
    $arrays = self::_wrapArgs(func_get_args(), 1);

    if(count($arrays) === 1) return self::_wrap($array);

    $__ = new self;
    return self::_wrap($__->flatten(array_values(array_unique(call_user_func_array('array_merge', $arrays)))));
  }

  // Get the difference between two arrays
  public function difference($array_one=null, $array_two=null) {
    $arrays = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(array_values(call_user_func_array('array_diff', $arrays)));
  }

  // Get the index of the first match
  public function indexOf($collection=null, $item=null) {
    list($collection, $item) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    $key = array_search($item, $collection, true);
    return self::_wrap((is_bool($key)) ? -1 : $key);
  }

  // Get the index of the last match
  public function lastIndexOf($collection=null, $item=null) {
    list($collection, $item) = self::_wrapArgs(func_get_args(), 2);

    $collection = self::_collection($collection);

    krsort($collection);
    $__ = new self;
    return self::_wrap($__->indexOf($collection, $item));
  }

  // Returns an array of integers from start to stop (exclusive) by step
  public function range($stop=null) {
    $args = self::_wrapArgs(func_get_args(), 1);

    $__ = new self;
    $args = $__->reject($args, function($val) {
      return is_null($val);
    });

    $num_args = count($args);
    switch($num_args) {
      case 1:
        list($start, $stop, $step) = array(0, $args[0], 1);
        break;
      case 2:
        list($start, $stop, $step) = array($args[0], $args[1], 1);
        if($stop < $start) return self::_wrap(array());
        break;
      default:
        list($start, $stop, $step) = array($args[0], $args[1], $args[2]);
        if($step > 0 && $step > $stop) return self::_wrap(array($start));
    }
    $results = range($start, $stop, $step);

    // Switch inclusive to exclusive
    if($step > 0 && $__->last($results) >= $stop) array_pop($results);
    elseif($step < 0 && $__->last($results) <= $stop) array_pop($results);

    return self::_wrap($results);
  }

  // Merges arrays
  public function zip($array=null) {
    $arrays = self::_wrapArgs(func_get_args());
    $num_arrays = count($arrays);
    if($num_arrays === 1) return self::_wrap($array);

    $__ = new self;
    $num_return_arrays = $__->max($__->map($arrays, function($array) {
      return count($array);
    }));
    $return_arrays = $__->range($num_return_arrays);
    foreach($return_arrays as $k=>$v) {
      if(!is_array($return_arrays[$k])) $return_arrays[$k] = array();

      foreach($arrays as $a=>$array) {
        $return_arrays[$k][$a] = array_key_exists($k, $array) ? $array[$k] : null;
      }
    }

    return self::_wrap($return_arrays);
  }

  // Get the max value in the collection
  public function max($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    if(is_null($iterator)) return self::_wrap(max($collection));

    $results = array();
    foreach($collection as $k=>$item) {
      $results[$k] = $iterator($item);
    }
    arsort($results);
    $__ = new self;
    $first_key = $__->first(array_keys($results));
    return $collection[$first_key];
  }

  // Get the min value in the collection
  public function min($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    if(is_null($iterator)) return self::_wrap(min($collection));

    $results = array();
    foreach($collection as $k=>$item) {
      $results[$k] = $iterator($item);
    }
    asort($results);
    $__ = new self;
    $first_key = $__->first(array_keys($results));
    return self::_wrap($collection[$first_key]);
  }

  // Sort the collection by return values from the iterator
  public function sortBy($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $results = array();
    foreach($collection as $k=>$item) {
      $results[$k] = $iterator($item);
    }
    asort($results);
    foreach($results as $k=>$v) {
      $results[$k] = $collection[$k];
    }
    return self::_wrap(array_values($results));
  }

  // Group the collection by return values from the iterator
  public function groupBy($collection=null, $iterator=null) {
    list($collection, $iterator) = self::_wrapArgs(func_get_args(), 2);

    $result = array();
    $collection = (array) $collection;
    foreach($collection as $k=>$v) {
      $key = (is_callable($iterator)) ? $iterator($v, $k) : $v[$iterator];
      if(!array_key_exists($key, $result)) $result[$key] = array();
      $result[$key][] = $v;
    }
    return $result;
  }

  // Returns the index at which the value should be inserted into the sorted collection
  public function sortedIndex($collection=null, $value=null, $iterator=null) {
    list($collection, $value, $iterator) = self::_wrapArgs(func_get_args(), 3);

    $collection = (array) self::_collection($collection);
    $__ = new self;

    $calculated_value = (!is_null($iterator)) ? $iterator($value) : $value;

    while(count($collection) > 1) {
      $midpoint = floor(count($collection) / 2);
      $midpoint_values = array_slice($collection, $midpoint, 1);
      $midpoint_value = $midpoint_values[0];
      $midpoint_calculated_value = (!is_null($iterator)) ? $iterator($midpoint_value) : $midpoint_value;

      $collection = ($calculated_value < $midpoint_calculated_value) ? array_slice($collection, 0, $midpoint, true) : array_slice($collection, $midpoint, null, true);
    }
    $keys = array_keys($collection);

    return self::_wrap(current($keys) + 1);
  }

  // Shuffle the array
  public function shuffle($collection=null) {
    list($collection) = self::_wrapArgs(func_get_args(), 1);

    $collection = (array) self::_collection($collection);
    shuffle($collection);

    return self::_wrap($collection);
  }

  // Return the collection as an array
  public function toArray($collection=null) {
    return (array) $collection;
  }

  // Get the collection's keys
  public function keys($collection=null) {
    list($collection) = self::_wrapArgs(func_get_args(), 1);

    if(!is_object($collection) && !is_array($collection)) throw new Exception('Invalid object');

    return self::_wrap(array_keys((array) $collection));
  }

  // Get the collection's values
  public function values($collection=null) {
    list($collection) = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(array_values((array) $collection));
  }

  // Copy all properties from the source objects into the destination object
  public function extend($object=null) {
    $args = self::_wrapArgs(func_get_args(), 1);

    $num_args = func_num_args();
    if($num_args === 1) return $object;

    $is_object = is_object($object);
    $array = (array) $object;
    $__ = new self;
    $extensions = $__->rest(func_get_args());
    foreach($extensions as $extension) {
      $extension = (array) $extension;
      $array = array_merge($array, $extension);
    }
    return self::_wrap(($is_object) ? (object) $array : $array);
  }

  // Returns the object with any missing values filled in using the defaults.
  public function defaults($object=null) {
    $args = self::_wrapArgs(func_get_args(), 1);
    list($object) = $args;

    $num_args = count($args);
    if($num_args === 1) return $object;

    $is_object = is_object($object);
    $array = (array) $object;
    $__ = new self;
    $extensions = $__->rest($args);
    foreach($extensions as $extension) {
      $extension = (array) $extension;
      $array = array_merge($extension, $array);
    }
    return self::_wrap(($is_object) ? (object) $array : $array);
  }

  // Get the names of functions available to the object
  // functions alias: methods
  public function methods($object=null) { return self::functions($object); }
  public function functions($object=null) {
    list($object) = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(get_class_methods(get_class($object)));
  }

  // Returns a shallow copy of the object
  public function clon(&$object=null) {
    list($object) = self::_wrapArgs(func_get_args(), 1);

    $clone = null;
    if(is_array($object)) $clone = (array) clone (object) $object;
    elseif(!is_object($object)) $clone = $object;
    elseif(!$clone) $clone = clone $object;

    // shallow copy object
    if(is_object($clone) && count($clone) > 0) {
      foreach($clone as $k=>$v) {
        if(is_array($v) || is_object($v)) $clone->$k =& $object->$k;
      }
    }

    // shallow copy array
    elseif(is_array($clone) && count($clone) > 0) {
      foreach($clone as $k=>$v) {
        if(is_array($v) || is_object($v)) $clone[$k] =& $object[$k];
      }
    }
    return self::_wrap($clone);
  }

  // Invokes the interceptor on the object, then returns the object
  public function tap($object=null, $interceptor=null) {
    list($object, $interceptor) = self::_wrapArgs(func_get_args(), 2);

    $interceptor($object);
    return self::_wrap($object);
  }

  // Does the given key exist?
  public function has($collection=null, $key=null) {
    list($collection, $key) = self::_wrapArgs(func_get_args(), 2);

    $collection = (array) self::_collection($collection);

    return self::_wrap(array_key_exists($key, $collection));
  }

  // Are these items equal?
  public function isEqual($a=null, $b=null) {
    list($a, $b) = self::_wrapArgs(func_get_args(), 2);

    if(isset($this) && isset($this->_chained) && $this->_chained) $a =& $this;

    if($a === $b) return self::_wrap(true);
    if(gettype($a) !== gettype($b)) return self::_wrap(false);
    if(is_callable($a) !== is_callable($b)) return self::_wrap(false);

    if($a == $b) return self::_wrap(true);

    // Objects and arrays compared by values
    if(is_object($a) || is_array($a)) {

      // Do either implement isEqual()?
      if(is_object($a) && isset($a->isEqual)) return self::_wrap($a->isEqual($b));
      if(is_object($b) && isset($b->isEqual)) return self::_wrap($b->isEqual($a));
      if(is_array($a) && array_key_exists('isEqual', $a)) return self::_wrap($a['isEqual']($b));
      if(is_array($b) && array_key_exists('isEqual', $b)) return self::_wrap($b['isEqual']($a));

      if(count($a) !== count($b)) return self::_wrap(false);

      $__ = new self;
      $keys_equal = $__->isEqual($__->keys($a), $__->keys($b));
      $values_equal = $__->isEqual($__->values($a), $__->values($b));
      return self::_wrap($keys_equal && $values_equal);
    }

    return self::_wrap(false);
  }

  // Is this item empty?
  public function isEmpty($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(is_array($item) || is_object($item)) ? !((bool) count((array) $item)) : (!(bool) $item);
  }

  // Is this item an object?
  public function isObject($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_object($item));
  }

  // Is this item an array?
  public function isArray($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_array($item));
  }

  // Is this item a string?
  public function isString($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_string($item));
  }

  // Is this item a number?
  public function isNumber($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap((is_int($item) || is_float($item)) && !is_nan($item) && !is_infinite($item));
  }

  // Is this item a bool?
  public function isBoolean($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_bool($item));
  }

  // Is this item a function (by type, not by name)?
  public function isFunction($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_object($item) && is_callable($item));
  }

  // Is this item an instance of DateTime?
  public function isDate($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_object($item) && get_class($item) === 'DateTime');
  }

  // Is this item a NaN value?
  public function isNaN($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);
    return self::_wrap(is_nan($item));
  }

  // Returns the same value passed as the argument
  public function identity() {
    $args = self::_wrapArgs(func_get_args(), 1);

    if(is_array($args)) return self::_wrap($args[0]);

    return self::_wrap(function($x) {
      return $x;
    });
  }

  // Generate a globally unique id, optionally prefixed
  public $_uniqueId = -1;
  public function uniqueId($prefix=null) {
    list($prefix) = self::_wrapArgs(func_get_args(), 1);

    $_instance = self::getInstance();
    $_instance->_uniqueId++;

    return (is_null($prefix)) ? self::_wrap($_instance->_uniqueId) : self::_wrap($prefix . $_instance->_uniqueId);
  }

  // Invokes the iterator n times
  public function times($n=null, $iterator=null) {
    list($n, $iterator) = self::_wrapArgs(func_get_args(), 2);
    if(is_null($n)) $n = 0;

    for($i=0; $i<$n; $i++) $iterator($i);
    return self::_wrap(null);
  }

  // Extend the class with your own functions
  private $_mixins = array();
  public function mixin($functions=null) {
    list($functions) = self::_wrapArgs(func_get_args(), 1);

    $mixins =& self::getInstance()->_mixins;
    foreach($functions as $name=>$function) {
      $mixins[$name] = $function;
    }
    return self::_wrap(null);
  }

  // Allows extending methods in static context
  public static function __callStatic($name, $arguments) {
    $mixins =& self::getInstance()->_mixins;
    return call_user_func_array($mixins[$name], $arguments);
  }

  // Allows extending methods in non-static context
  public function __call($name, $arguments) {
    $mixins =& self::getInstance()->_mixins;
    $arguments = self::_wrapArgs($arguments);
    return call_user_func_array($mixins[$name], $arguments);
  }

  // Temporary PHP open and close tags used within templates
  // Allows for normal processing of templates even when
  // the developer uses PHP open or close tags for interpolation or evaluation
  const TEMPLATE_OPEN_TAG = '760e7dab2836853c63805033e514668301fa9c47';
  const TEMPLATE_CLOSE_TAG= 'd228a8fa36bd7db108b01eddfb03a30899987a2b';

  const TEMPLATE_DEFAULT_EVALUATE   = '/<%([\s\S]+?)%>/';
  const TEMPLATE_DEFAULT_INTERPOLATE= '/<%=([\s\S]+?)%>/';
  const TEMPLATE_DEFAULT_ESCAPE     = '/<%-([\s\S]+?)%>/';
  public $_template_settings = array(
    'evaluate'    => self::TEMPLATE_DEFAULT_EVALUATE,
    'interpolate' => self::TEMPLATE_DEFAULT_INTERPOLATE,
    'escape'      => self::TEMPLATE_DEFAULT_ESCAPE
  );

  // Set template settings
  public function templateSettings($settings=null) {
    $_template_settings =& self::getInstance()->_template_settings;

    if(is_null($settings)) {
      $_template_settings = array(
        'evaluate'    => self::TEMPLATE_DEFAULT_EVALUATE,
        'interpolate' => self::TEMPLATE_DEFAULT_INTERPOLATE,
        'escape'      => self::TEMPLATE_DEFAULT_ESCAPE
      );
      return true;
    }

    foreach($settings as $k=>$v) {
      if(!array_key_exists($k, $_template_settings)) continue;

      $_template_settings[$k] = $v;
    }
    return true;
  }

  // Compile templates into functions that can be evaluated for rendering
  public function template($code=null, $context=null) {
    list($code, $context) = self::_wrapArgs(func_get_args(), 2);

    $class_name = __CLASS__;

    $return = self::_wrap(function($context=null) use ($code, $class_name) {
      $ts = $class_name::getInstance()->_template_settings;

      // Wrap escaped, interpolated, and evaluated blocks inside PHP tags
      extract((array) $context);
      preg_match_all($ts['escape'], $code, $vars, PREG_SET_ORDER);
      if(count($vars) > 0) {
        foreach($vars as $var) {
          $echo = $class_name::TEMPLATE_OPEN_TAG . ' echo htmlentities(' . trim($var[1]) . '); ' . $class_name::TEMPLATE_CLOSE_TAG;
          $code = str_replace($var[0], $echo, $code);
        }
      }
      preg_match_all($ts['interpolate'], $code, $vars, PREG_SET_ORDER);
      if(count($vars) > 0) {
        foreach($vars as $var) {
          $echo = $class_name::TEMPLATE_OPEN_TAG . ' echo ' . trim($var[1]) . '; ' . $class_name::TEMPLATE_CLOSE_TAG;
          $code = str_replace($var[0], $echo, $code);
        }
      }
      preg_match_all($ts['evaluate'], $code, $vars, PREG_SET_ORDER);
      if(count($vars) > 0) {
        foreach($vars as $var) {
          $echo = $class_name::TEMPLATE_OPEN_TAG . trim($var[1]) . $class_name::TEMPLATE_CLOSE_TAG;
          $code = str_replace($var[0], $echo, $code);
        }
      }
      $code = str_replace($class_name::TEMPLATE_OPEN_TAG, '<?php ', $code);
      $code = str_replace($class_name::TEMPLATE_CLOSE_TAG, '?>', $code);

      // Use the output buffer to grab the return value
      $code = 'ob_start(); extract($context); ?>' . $code . '<?php return ob_get_clean();';

      $func = create_function('$context', $code);
      return $func((array) $context);
    });

    // Return function or call function depending on context
    return self::_wrap(((isset($this) && isset($this->_wrapped) && $this->_wrapped) || !is_null($context)) ? $return($context) : $return);
  }

  // Escape
  public function escape($item=null) {
    list($item) = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(htmlentities($item));
  }

  // Memoizes a function by caching the computed result.
  public $_memoized = array();
  public function memoize($function=null, $hashFunction=null) {
    list($function, $hashFunction) = self::_wrapArgs(func_get_args(), 2);

    $_instance = (isset($this) && isset($this->_wrapped)) ? $this : self::getInstance();

    return self::_wrap(function() use ($function, &$_instance, $hashFunction) {

      // Generate a key based on hashFunction
      $args = func_get_args();
      if(is_null($hashFunction)) $hashFunction = function($function, $args) {

        // Try using var_export to identify the function
        return md5(join('_', array(
          var_export($function, true),
          var_export($args, true)
        )));
      };
      $key = $hashFunction($function, $args);

      if(!array_key_exists($key, $_instance->_memoized)) {
        $_instance->_memoized[$key] = call_user_func_array($function, $args);
      }
      return $_instance->_memoized[$key];
    });
  }

  // Throttles a function so that it can only be called once every wait milliseconds
  public $_throttled = array();
  public function throttle($function=null, $wait=null) {
    list($function, $wait) = self::_wrapArgs(func_get_args(), 2);

    $_instance = (isset($this) && isset($this->_wrapped)) ? $this : self::getInstance();

    return self::_wrap(function() use ($function, $wait, &$_instance) {

      // Try using var_export to identify the function
      $key = md5(join('', array(
        var_export($function, true),
        $wait
      )));

      $microtime = microtime(true);
      $ready_to_call = (!array_key_exists($key, $_instance->_throttled) || $microtime >= $_instance->_throttled[$key]);
      if($ready_to_call) {
        $next_callable_time = $microtime + ($wait / 1000);
        $_instance->_throttled[$key] = $next_callable_time;
        return call_user_func_array($function, func_get_args());
      }
    });
  }

  // Creates a version of the function that can only be called once
  public $_onced = array();
  public function once($function=null) {
    list($function) = self::_wrapArgs(func_get_args(), 1);

    $_instance = (isset($this) && isset($this->_wrapped)) ? $this : self::getInstance();

    return self::_wrap(function() use ($function, &$_instance) {

      // Try using var_export to identify the function
      $key = md5(var_export($function, true));
      if(!array_key_exists($key, $_instance->_onced)) {
        $_instance->_onced[$key] = call_user_func_array($function, func_get_args());
      }

      return $_instance->_onced[$key];
    });
  }

  // Wraps the function inside the wrapper function, passing it as the first argument
  public function wrap($function=null, $wrapper=null) {
    list($function, $wrapper) = self::_wrapArgs(func_get_args(), 2);

    return self::_wrap(function() use ($wrapper, $function) {
      $args = array_merge(array($function), func_get_args());
      return call_user_func_array($wrapper, $args);
    });
  }

  // Returns the composition of the functions
  public function compose() {
    $functions = self::_wrapArgs(func_get_args(), 1);

    return self::_wrap(function() use ($functions) {
      $args = func_get_args();
      foreach($functions as $function) {
        $args[0] = call_user_func_array($function, $args);
      }
      return $args[0];
    });
  }

  // Creates a version of the function that will only run after being called count times
  public $_aftered = array();
  public function after($count=null, $function=null) {
    list($count, $function) = self::_wrapArgs(func_get_args(), 2);

    $_instance = (isset($this) && isset($this->_wrapped)) ? $this : self::getInstance();
    $key = md5(mt_rand());

    $func = function() use ($function, &$_instance, $count, $key) {
      if(!array_key_exists($key, $_instance->_aftered)) $_instance->_aftered[$key] = 0;
      $_instance->_aftered[$key] += 1;

      if($_instance->_aftered[$key] >= $count) return call_user_func_array($function, func_get_args());
    };
    return self::_wrap(($count) ? $func : $func());
  }

  // Singleton
  private static $_instance;
  public function getInstance() {
    if(!isset(self::$_instance)) {
      $c = __CLASS__;
      self::$_instance = new $c;
    }
    return self::$_instance;
  }

  // All methods should wrap their returns within _wrap
  // because this function understands both OO-style and functional calls
  public $_wrapped; // Value passed from one chained method to the next
  private function _wrap($val) {
    if(isset($this) && isset($this->_chained) && $this->_chained) {
      $this->_wrapped = $val;
      return $this;
    }
    return $val;
  }

  // All methods should get their arguments from _wrapArgs
  // because this function understands both OO-style and functional calls
  private function _wrapArgs($caller_args, $num_args=null) {
    $num_args = (is_null($num_args)) ? count($caller_args) - 1 : $num_args;

    $filled_args = array();
    if(isset($this) && isset($this->_wrapped)) {
      $filled_args[] =& $this->_wrapped;
    }
    if(count($caller_args) > 0) {
      foreach($caller_args as $k=>$v) {
        $filled_args[] = $v;
      }
    }

    return array_pad($filled_args, $num_args, null);
  }

  // Get a collection in a way that supports strings
  private function _collection($collection) {
    return (!is_array($collection) && !is_object($collection)) ? str_split((string) $collection) : $collection;
  }
}


text:
Our Deeper Task
Published in The Catholic Thing on June 25, 2020
By Stephen P. White
A spirit of Gnosticism has been sweeping our nation. It proclaims that a person is whoever or whatever that person claims to be. At the same time, a similar spirit (or is it the same spirit?) strives to wring from America a forced confession: that this country's "true identity" can and must only be found in the very worst version of itself. We are expected to believe – indeed, to profess – that the identity of an individual is infinitely malleable and plastic, but that the nation's identity was irrevocably set in stone in 1619 (when, according to the New York Times' 1619 Project, the first slaves arrived and the country was, on that basis, founded).
There are those who cannot sin, and those who can never be forgiven.
This perversion arises from, and affects, how we Americans address the most basic political question: How ought we to order our lives together? Looking around these days, I am not sure most of us even understand the question. Our arguments on that question run up against the increasingly evident fact that there exists among us no fundamental agreement about who and what we are. Our malignant politics are a consequence of our deep confusion about human nature.
This is, to understate things, a very big problem. To deny the existence of human nature is to abandon the firmest foundation of justice. How can I know what is due to you if I am agnostic about what you are? All we are left with is a view of justice as a mere function of power: rule of the stronger. Needless to say, this is a strange view of justice upon which to assert, let alone defend, the rights of minorities. It's even flimsier grounds upon which to judge historical oppression. It is, however, useful – if one aspires to tyranny and domination.
You don't need a well-developed theory of justice to be appalled or outraged by real injustices – for example, by police brutality or the killing of George Floyd. But you need it to see clearly what has brought our communities and country to this state of affairs. To discern legitimate grievances amidst the clamor of an angry mob. To have the wisdom to see what might actually serve justice and peace. For this, a politics that has eschewed nature and truth (and so with it, justice and reason) is at an utter loss.
What we are left with instead is what Mary Eberstadt has described as the primal scream of identity politics: which, even when it is an authentic response to real injustice, is as destructive as it is ineffectual. And it is a problem that afflicts, albeit in different ways and to differing degrees, both sides of our political divide.
The Church offers an alternative account of human nature – one that allows ample room for both justice and mercy – which could help lift us out of the mire of our broken politics. But this vision is radical, and we Christians are often too timid to proclaim it in full.
It is too easy, for example, to insist that a return to traditional moral values would result in a more humane politics. Surely this is true in a tautological sense: people would act better if they were more virtuous. The remedy to our current predicament is not, at least not in the first instance, to be found in a reassertion of Christian morality for the simple reason that people have rejected the very account of human nature from which Christian morality depends for its coherence.
To a people that rejects – or is ignorant of – the Christian vision of the human person, the Church's moral teachings appear as "a disjointed multitude of doctrines to be imposed insistently," as Pope Francis has pointed out.
Pope Benedict XVI took up this same idea in Deus Caritas Est, where he wrote, "Being Christian is not the result of an ethical choice or a lofty idea, but the encounter with an event, a person, which gives life a new horizon and a decisive direction."
This theme is found also in the writings of Pope John Paul II, who was constantly quoting the Second Vatican Council's insistence that "only in the mystery of the incarnate Word does the mystery of man take on light."
The Polish Pope saw this as a corrective to those who, in the name of the Catholic social teaching, would reduce the mission of the Church to a search for worldly justice:
[The Church] proclaims God and his mystery of salvation in Christ to every human being, and for that very reason reveals man to himself. In this light, and only in this light, does it concern itself with everything else: the human rights of the individual, and in particular of the "working class," the family and education, the duties of the State, the ordering of national and international society, economic life, culture, war and peace, and respect for life from the moment of conception until death. (Emphasis added.)
The spirit of today would have us believe that we can make ourselves in our own image. It is an old lie, bereft of hope, but no less potent for that. It is a lie that makes our common life all but impossible. And it is a lie that leads souls to perdition.
We need the Church now, as ever, to help remind us of who we are: We are created by God, and made for God. We are sons and daughters of the Father. We are the ones for whom God himself, though we were still sinners, suffered and died. And we are the ones for whom His Resurrection is an offer of the promise of eternal life.
We Christians are the ones who must show the world – a world as undeserving as we are – that there is a still more excellent way. This task is likely to grow more difficult in the years to come.
But not less important.
*Image: Landscape with the Fall of Icarus, a copy of a lost original by Pieter Bruegel the Elder, c. 1560 [Royal Museums of Fine Arts of Belgium]. In his 1938 poem, "Musée des Beaux Arts" (as the museum was then known), W.H. Auden wrote in the last stanza:
In Breughel's Icarus, for instance: how everything turns away
Quite leisurely from the disaster; the ploughman may
Have heard the splash, the forsaken cry,
But for him it was not an important failure; the sun shone
As it had to on the white legs disappearing into the green
Water; and the expensive delicate ship that must have seen
© 2020 The Catholic Thing.
Stephen P. White is executive director of The Catholic Project at The Catholic University of America and a fellow in Catholic Studies at the Ethics and Public Policy Center.
McCarthyism Is Back. This Time, It's Woke.
O.J. and Us
Mona Charen
Our Catholic President
Are you enjoying this article? Share with a Friend!
Always see the latest from Stephen P. White and other EPPC Scholars. Sign up for EPPC Briefly!


text:
package com.netflix.raigad.monitoring;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.netflix.raigad.configuration.IConfiguration;
import com.netflix.raigad.scheduler.SimpleTimer;
import com.netflix.raigad.scheduler.Task;
import com.netflix.raigad.scheduler.TaskTimer;
import com.netflix.raigad.utils.ESTransportClient;
import com.netflix.raigad.utils.ElasticsearchProcessMonitor;
import com.netflix.servo.annotations.DataSourceType;
import com.netflix.servo.annotations.Monitor;
import com.netflix.servo.monitor.Monitors;
import org.elasticsearch.action.admin.cluster.node.stats.NodeStats;
import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsResponse;
import org.elasticsearch.monitor.network.NetworkStats;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.atomic.AtomicReference;

@Singleton
public class NetworkStatsMonitor extends Task
{
	private static final Logger logger = LoggerFactory.getLogger(NetworkStatsMonitor.class);
    public static final String METRIC_NAME = "Elasticsearch_FsMonitor";
    private final Elasticsearch_NetworkStatsReporter networkStatsReporter;

    @Inject
    public NetworkStatsMonitor(IConfiguration config)
    {
        super(config);
        networkStatsReporter = new Elasticsearch_NetworkStatsReporter();
    		Monitors.registerObject(networkStatsReporter);
    }

  	@Override
	public void execute() throws Exception {

		// If Elasticsearch is started then only start the monitoring
		if (!ElasticsearchProcessMonitor.isElasticsearchRunning()) {
			String exceptionMsg = "Elasticsearch is not yet started, check back again later";
			logger.info(exceptionMsg);
			return;
		}

  		NetworkStatsBean networkStatsBean = new NetworkStatsBean();
  		try
  		{
  			NodesStatsResponse ndsStatsResponse = ESTransportClient.getNodesStatsResponse(config);
  			NetworkStats networkStats = null;
  			NodeStats ndStat = null;
  			if (ndsStatsResponse.getNodes().length > 0) {
  				ndStat = ndsStatsResponse.getAt(0);
            }
			if (ndStat == null) {
				logger.info("NodeStats is null,hence returning (No NetworkStats).");
				return;
			}
			networkStats = ndStat.getNetwork();
			if (networkStats == null) {
				logger.info("NetworkStats is null,hence returning (No NetworkStats).");
				return;
			}

			networkStatsBean.activeOpens = networkStats.getTcp().getActiveOpens();
			networkStatsBean.passiveOpens = networkStats.getTcp().getPassiveOpens();
			networkStatsBean.attemptFails = networkStats.getTcp().getAttemptFails();
			networkStatsBean.estabResets = networkStats.getTcp().getEstabResets();
			networkStatsBean.currEstab = networkStats.getTcp().getCurrEstab();
			networkStatsBean.inSegs = networkStats.getTcp().getInSegs();
			networkStatsBean.outSegs = networkStats.getTcp().getOutSegs();
			networkStatsBean.retransSegs = networkStats.getTcp().getRetransSegs();
			networkStatsBean.inErrs = networkStats.getTcp().getInErrs();
			networkStatsBean.outRsts = networkStats.getTcp().getOutRsts();
  		}
  		catch(Exception e)
  		{
  			logger.warn("failed to load Network stats data", e);
  		}

  		networkStatsReporter.networkStatsBean.set(networkStatsBean);
	}

    public class Elasticsearch_NetworkStatsReporter
    {
        private final AtomicReference<NetworkStatsBean> networkStatsBean;

        public Elasticsearch_NetworkStatsReporter()
        {
        		networkStatsBean = new AtomicReference<NetworkStatsBean>(new NetworkStatsBean());
        }

        @Monitor(name ="active_opens", type=DataSourceType.GAUGE)
        public long getActiveOpens()
        {
            return networkStatsBean.get().activeOpens;
        }

        @Monitor(name ="passive_opens", type=DataSourceType.GAUGE)
        public long getPassiveOpens()
        {
            return networkStatsBean.get().passiveOpens;
        }
        @Monitor(name ="attempt_fails", type=DataSourceType.GAUGE)
        public long getAttemptFails()
        {
            return networkStatsBean.get().attemptFails;
        }
        @Monitor(name ="estab_resets", type=DataSourceType.GAUGE)
        public long geEstabResets()
        {
            return networkStatsBean.get().estabResets;
        }
        @Monitor(name ="curr_estab", type=DataSourceType.GAUGE)
        public long getCurrEstab()
        {
            return networkStatsBean.get().currEstab;
        }
        @Monitor(name ="in_segs", type=DataSourceType.GAUGE)
        public long getInSegs()
        {
            return networkStatsBean.get().inSegs;
        }
        @Monitor(name ="out_segs", type=DataSourceType.GAUGE)
        public long getOutSegs()
        {
            return networkStatsBean.get().outSegs;
        }
        @Monitor(name ="retrans_segs", type=DataSourceType.GAUGE)
        public double getRetransSegs()
        {
            return networkStatsBean.get().retransSegs;
        }
        @Monitor(name ="in_errs", type=DataSourceType.GAUGE)
        public double getInErrs()
        {
            return networkStatsBean.get().inErrs;
        }
        @Monitor(name ="outRsts", type=DataSourceType.GAUGE)
        public double getOutRsts()
        {
            return networkStatsBean.get().outRsts;
        }
    }

    private static class NetworkStatsBean
    {
        private long activeOpens;
        private long passiveOpens;
        private long attemptFails;
        private long estabResets;
        private long currEstab;
        private long inSegs;
        private long outSegs;
        private long retransSegs;
        private long inErrs;
        private long outRsts;

    }

	public static TaskTimer getTimer(String name)
	{
		return new SimpleTimer(name, 60 * 1000);
	}

	@Override
	public String getName()
	{
		return METRIC_NAME;
	}

}


Well, that was disappointing. . . . I mean the dinner I just made. I haven't made a meal in, well, I can't even remember, so I was looking forward to getting in the kitchen and reconnecting with my inner domestic goddess. Well, she must have been hungover after a big night or something because she totally left me high and dry. Or more like high and hungry.
I've been wanting to make a quinoa, garbanzo, and spinach salad with smoked paprika dressing for weeks now. And tonight was finally going to be the night. I realize now as I read over the title of the recipe that my life has taken a sad turn for the worst if that dish was getting me excited. At best it's a healthy vegetarian salad you'd get from Whole Foods—nutritious but not something you take pleasure in eating. And sadly, that's exactly what it was like. After about four forkfuls I dumped it out and grabbed some turkey jerky from the pantry. You can take the girl out of the South but you can't take the South out of the girl. . . .
Anyway, I started fantasizing about this Swiss chard and mushroom lasagna kissed with white truffle oil I made about a month ago. It was so dang good. I would've paid a thousand dollars to have had just four forkfuls of that deliciousness. It's definitely a vegetarian meal you don't want to miss—unlike the garbanzo bean quinoa salad. It was the perfect balance of richness and earthiness. So satisfying and almost "meaty." Certainly not something you'd find sitting in between the vegan egg salad or tofu farro wrap. No, this is the kind of dish the most diehard meat and potato man would savor and ask for seconds. I promise.
I did make it for the only hunter I know in Santa Barbara, my neighbor. Although he was born and raised in Californian, I think he would make a good honorary Southerner. Nothing cracks me up more than when he's defeathering ducks in his driveway after a successful outing while drinking bourbon. It's about as common as seeing a McCain-Palin sticker on someone's car in town. Anyway, he helped me with a house issue so I made him this lasagna as a thank you.
I love a good lasagna but wanted something lighter and fresher than your traditional meat lasagna in red sauce. I sampled as I was cooking and it smelled so good and tasted even better. As I started to assemble the dish, I realized it was too good to part with! So I called an audible and divided the lasagna into two smaller pans: one for me and one for my neighbor. Lasagna is something that typically can feed an Army so I was a little embarrassed to give him what was obviously only half a pan. It'd be like giving someone half a cake. But I hoped he'd forget all about my tackiness once he tasted it.
The base was a beautiful combination of carrots, criminis, onions and chard. I added kale because I had it and thought it would work well with the chard. The béchamel sauce was lighter than some I've sampled, still having the body required but was more subtly nuanced with notes of nutmeg and cloves. There was lovely, melty Fontina cheese added to the mix for nuttiness. And with no bake noodles the end product tasted more homemade—and you weren't getting bites where there was nothing but noodle.
My neighbor is still singing the praises of that meal, which is excellent for me because I'm worthless when it comes to dealing with house issues. I just noticed today my gutter is starting to fall off on one side of my house so it may be time to whip up another batch of the Swiss chard and mushroom lasagna . . . . .
Bring milk and bay leaf to a simmer in medium saucepan; remove from heat. Melt butter in heavy large saucepan over medium-low heat. Add flour and whisk to blend. Cook 2 minutes, whisking almost constantly (do not let roux brown). Gradually whisk milk with bay leaf into roux. Add 1/2 tsp coarse salt, nutmeg and cloves and bring to a simmer. Cook until sauce thickens enough to coat spoon, whisking often, about 3 minutes. Remove bay leaf. Note: Sauce can be made one day ahead. Press plastic wrap directly onto surface and chill. Remove plastic wrap and rewarm before using, whisking to smooth.
Blanch chard and kale in a large pot of boiling salted water 1 minute. Drain, pressing out all water, then chop coarsely. Heat 2 Tbsp oil in heavy medium skillet over medium-high heat. Add onion, carrots, half of garlic and crushed red pepper. Saute until tender, about 4 minutes. Mix in chard and kale and season to taste with coarse salt and freshly ground pepper.
Heat remaining 2 Tbsp oil in heavy large nonstick skillet over medium-high heat. Add mushrooms and remaining garlic. Saute until mushrooms are brown and tender, about 8 minutes. Mix in nutmeg and season with salt and pepper.
Brush 13x9x2-in glass baking dish with oil to coat. Spread 3 Tbsp béchamel sauce thinly over bottom of dish. Arrange 3 noodles in dish to cover bottom. Spread half of chard mixture over pasta. Drop half of ricotta over in dollops and spread in even layer. Sprinkle with half of Fontina, then 4 Tbsp Parmesan; spread 3/4 cup béchamel over. Repeat layering with 3 noodles, remaining chard mixture, ricotta, Fontina, Parmesan, and 3/4 cup béchamel. Cover with remaining 3 noodles and remaining béchamel. Note: Can be made 2 hours ahead. Cover with foil and let stand at room temperature.
Preheat over to 400 degrees and bake lasagna covered for 30 minutes. Uncover and bake until heated through and top is golden brown, maybe 20-30 minutes longer. Let stand 15 minutes and sprinkle with a little bit of white truffle oil before serving.


Are you attending MER Conference 2019? We are! And we can't wait to connect with you. Follow the link to register, then, be sure to schedule a 1:1 meeting with us to discuss your pain points and learn more about managing electronic records.
You may not realize that Zasio is known for both top-shelf software tools and in-depth consulting services. Do you lack confidence that you've found and properly applied all of the data privacy laws that might be required? We can solve that! Need an effective way to apply retention to cloud-based document repositories? Zasio has you covered there too. Stop by and let us know what issues you're facing.
1:1 Appointment space is limited – schedule yours today by emailing michelle.lynch@zasio.com!
MER delivers the very latest insights to eRIM decision-makers and influencers inspiring confidence to lead change in your organization.
The 27th annual MER Conference is a 2-½ day immersive event focused on the LEGAL, TECHNICAL and OPERATIONAL aspects of managing electronic records in an ever-changing environment. Carefully designed to be a collaborative learning experience, it regularly delivers on an intentional focus: empowering leaders with insights, connections, and resources to effectively lead IG and eRIM solutions that support business objectives.


text:
Q: Does the integral test work on higher dimensions? The integral test of convergence states that, if $f:[1,+\infty)\to[0,+\infty)$ is a monotonically decreasing nonnegative function, then the series $\sum_1^\infty f(n)$ converges iff $\int_1^\infty f(n) dn$ is finite.
Is the high-dimensional generalization also true? That is, given $f:[1,+\infty)^N \to[0,+\infty)$, and $f(\dotsc,n_i,\dotsc) \ge f(\dotsc,n_i+\epsilon,\dotsc)$ for all $1\le i\le N$ and $n_i\in[1,+\infty)$ and $\epsilon>0$, then the sum
$$ \sum_{n_1=1}^\infty  \cdots \sum_{n_N=1}^\infty f(n_1,\dotsc,n_N) $$
converges iff the multiple integral
$$ \int_1^\infty \cdots \int_1^\infty f(n_1,\dotsc,n_N) dn_1 \dotsm dn_N $$
is finite.
(This is just for checking if my answer over physics.SE is reasonable.)

A: It isn't true in general, but the direction you used in your physics.SE answer is.  That is, if the sum converges, then the integral does too.  The decreasing hypothesis implies that the maximum value of $f$ on the cube $[n_1,n_1+1]\times\cdots\times[n_N,n_N+1]$ is $f(n_1,\ldots,n_N)$, so that the integral over that cube is less than or equal to $f(n_1,\ldots,n_N)$.  Adding up the integrals over all such cubes yields the result.
The problem with the other direction is that the function may drop off to zero in some directions rapidly enough to make the integral converge, while staying too big in another direction for the sum to converge.  For example, $N=2$, $f(x,y)=1$ if $x=1$, $f(x,y)=0$ otherwise.
With an additional "shift" you can go from integral convergence to sum convergence.  The decreasing hypothesis also implies that the minimum value of $f$ on the cube $[n_1,n_1+1]\times\cdots\times[n_N,n_N+1]$ is $f(n_1+1,\ldots,n_N+1)$, so that the integral over that cube is greater than or equal to $f(n_1+1,\ldots,n_N+1)$.  By adding up the integrals over all such cubes, this implies that
$$
\sum_{n_1=2}^\infty  \cdots \sum_{n_N=2}^\infty f(n_1,\ldots,n_N)
\leq
\int_1^\infty \cdots \int_1^\infty f(x_1,\ldots,x_N) dx_1 \dotsm dx_N.
$$


Beautiful! Love the colors of the cards you've picked (and that love you to the moon and back one is AWESOME). Perfect with the pictures!
Thanks! I was going to use the love you to the moon one on my son's page, but all the colors of the other cards were too feminine. LOL!
I love this! Beautiful photos and perfect choice of colors and cards. One of my favorite collections!
Thanks @AlyDosdall! It was a fun page. I'm thinking of doing another one with the same collection!
Ok, so these pics are from 2010 but at least they were from May! I loved the idea of using the cards as a grid background. This was a fun, easy page.


text:
The Dark Corner
December 15, 2007 May 31, 2020 / Colin McGuigan	/ 4 Comments
I feel all dead inside. I'm backed up in a dark corner….and I don't know who's hitting me.
Those words are uttered by desperate private eye Brad Galt (Mark Stevens). He's talking about the one lead that he'd hoped would get him out of a frame-up for murder; the one lead that's just turned out to be another dead end. But those same words also go a long way towards defining the essence of Film Noir.
Contrary to popular belief, there weren't all that many Noirs of the classic period that featured a private detective as the hero, however, Henry Hathaway's 1946 movie does. Galt is a New York P.I. who was double-crossed by his ex-partner. When the partner turns up in town and the police call around to warn Galt not to cause any trouble, you can be sure just what's coming. Or can you?
The slightly convoluted plot introduces us to a cast of characters who are rarely what they first appear to be. Clifton Webb is a wealthy gallery owner, reminiscent of his earlier Waldo Lydecker in Laura. Cathy Downs is his trophy wife. William Bendix (one of the screen's most memorable heavies) is…a heavy. Kurt Kreuger is Galt's ex-partner and Lucille Ball is his ever faithful secretary. By the end of the movie we get to see all these characters for what they really are, and the ride there is never a displeasing one. Hathaway directs tightly on location and keeps everything moving along like an old pro. The interiors are all well shot by Joe MacDonald – lots of inky black shadows, silhouettes, figures framed in windows and so on.
So, have I any criticisms to make? Well, there's Lucy! I have to confess that I have never been a fan of Miss Ball. Even as a youngster her TV shows irritated the hell out of me, now that I'm all grown up I find her even less appealing. While I watched this film, I found myself thinking that almost any other actress would have preferable in the role of the resourceful girl friday.
Nevertheless, I consider this to be a highly entertaining entry in the Fox Noir line. The R1 transfer is very good (it's also available in R2 and I assume the image should be the same) and well worth picking up if you're a fan of vintage noir/crime/mystery movies.
The Last Hard Men
December 10, 2007 August 4, 2017 / Colin McGuigan	/ 13 Comments
Sometimes the title of a movie is almost prophetic; James Coburn and Charlton Heston were probably among the last real tough guy actors. But everything must change and be replaced, and that's the underlying theme of this 1976 end-of-the-trail western.
In the early years of the 20th century Zack Provo (Coburn), along with a half dozen others, escapes from a chain gang and goes on the run. News of the breakout reaches retired lawman Sam Burgade (Heston) who realises that Provo will come gunning for him. It was Burgade who ran Provo to ground and he knows that old scores will have to be settled. With the abduction of Burgade's daughter (Barbara Hershey), the chase is on – ending only after an orgy of sub-Peckinpah slow motion violence.
The movie was directed by Andrew V. McLaglen and, like most of his work, promises more than it ultimately delivers. McLaglen, an apprentice of John Ford, always knew how to film a landscape and offers some pleasing images here. The main problem is that he seems to be trying to remake Big Jake in the style of Peckinpah, and it never really comes off. However, we've seen all this before, and seen it done better. Heston tosses out some lines about how the times are changing, but it doesn't feel like it has any real conviction. Jerry Goldsmith provides a rousing score but again there's nothing original – it is the same one he produced for 100 Rifles a few years before. All in all, not a bad movie but not a great one either. If you're a western fan, or a Heston or Coburn completist like me, you'll want to check it out – just don't expect too much.
The film is widely available in continental Europe, though not in the UK yet, from Fox. The transfer is a solid one, with a sharp anamorphic scope image and strong, bright colours.
Garden of Evil
December 5, 2007 January 4, 2021 / Colin McGuigan	/ 9 Comments
Look at her! Taking four men like us to a mountain of gold.
So says Richard Widmark's Fisk, and in so doing he about sums up the plot of the movie. In a nutshell, a desperate woman (Susan Hayward) hires four men (Widmark, Gary Cooper, Cameron Mitchell and Victor Mendoza), who are all hanging around a dead-end Mexican town, to accompany her into the badlands on a mission of mercy; her husband is lying trapped in a mine deep in Apache country. What follows is an adventure tale that ties in some weighty themes such as, loyalty, greed, lust and infidelity. There are also some fairly explicit religious-moral allusions with the only features visible in a lava covered town being the church steeple and the entrance to the gold mine. Why, there's even a crucifixion!
However, the film is never heavy-going and there is more than enough action to satisfy genre fans. The climactic chase and battle with the Apache is especially well-handled by veteran director Henry Hathaway. In fact, the whole thing moves along at a good pace and, at a little over an hour and a half, never outstays its welcome.
I love these early scope films from Fox, and this a great looking picture. Hathaway makes fine use of the widescreen process to show off the Mexican locations; some of the photography on the high mountain pass is simply stunning. The score is a bit of an unexpected one, by Bernard Herrmann no less. Herrmann, being Hitchcock's composer of choice, is not a name you'd automatically associate with westerns. Nevertheless, the combination of soaring and ominous tones fits the mood of this movie perfectly.
There is, though, one very odd aspect to this film. Now, I won't claim to be highly knowledgable of American Indians but the Apache we see here are the strangest looking bunch I've ever come across – surely the Apache never had Mohican haircuts!
That aside, I highly recommend this movie. How can you not love a western with Gary Cooper and Richard Widmark. I think both men give excellent performances, although I may be a little biased since I'm a huge fan of Coop. He gets to deliver the last line of the film while squinting into the sunset –
The garden of evil – if the earth was made of gold, I guess men would die for a handful of dirt.
The October Man
December 2, 2007 July 11, 2019 / Colin McGuigan	/ 6 Comments
British attempts at producing film noir have traditionally been regarded as a notch down from their Hollywood counterparts. There is, sometimes, that sense of the genteel that the harder-edged Hollywood movies don't suffer from. However, when BritNoir is at its best it's more than capable of competing with productions from across the pond. The Third Man, The Fallen Idol, It Always Rains on Sunday, Brighton Rock, for example, are all films that belong in the front rank of noir. The October Man (1947) may not be quite in the same league as those other titles but it's not far off.
When you see a film boasting a script by Eric Ambler, you know you're on fairly safe ground. Ambler was, first and foremost, a novelist and gave us some of the best espionage/mystery fiction of the last century. I would strongly urge anyone unfamiliar with his writing to seek it out, although I believe a good deal of it has shamefully fallen out of print. His script here contains those staples of any good noir, namely murder, guilt and psychological imbalance.
The story concerns Jim Ackalnd (John Mills) who we see in the opening scenes riding a bus and knotting his handkerchief into the shape of a rabbit for the amusement of the small girl seated next to him. The child – played by Mills' own daughter Juliet – is the daughter of some friends, and Jim is accompanying her back home. As the bus makes its way along a country road in torrential rain, a brake failure causes a fatal accident at a level crossing. This results in the death of the child and Mills spends a year in hospital with a fractured skull and brain damage. As Jim is released from hospital we learn that he remains racked with guilt and has already attempted suicide. He moves into a rundown boarding house peopled by an assortment of fine British character actors including a poisonous Joyce Carey, Catherine Lacey as the put upon manageress, and Edward Chapman (who should be recognizable as Mr Grimsdale from numerous Norman Wisdom movies). He also makes the acquaintance of model Kay Walsh, of which more later.
Jim's life seems to be getting back on track and a romance with Joan Greenwood helps give him some renewed hope for the future. However, things are about to go pear-shaped – this is the world of noir after all. The model turns up dead in a park and a cheque from Jim is found close to the body; worse still he was out walking alone when the crime took place. This, combined with some malicious gossip from the other residents, leads the police to suspect Jim – and Jim to query his own sanity. With the psychological pressure mounting and distrust surrounding him, it falls to Jim to try to find the real killer before the net closes around him.
Roy Ward Baker provides his usual solid, unfussy direction but the real star is the cinematography. Erwin Hillier lays the noir atmosphere on thick, with lots of smoke, fog, deep shadows and harsh white lighting to pin the focus on the hapless Jim. John Mills plays the role perfectly as the quiet and essentially decent man driven to the very limit. Mills was ideal casting for this kind of part and would reprise it a few years later in the similarily themed The Long Memory. In fact, the acting is uniformly strong throughout and the scenes in the boarding house are memorable.
So, where does the weakness lie? Perhaps surprisingly, the fault is with Amblers script. I always feel that this kind of movie benefits enormously from creating suspicions in the viewers mind about the hero. In this case, we are never really in any doubt that Mills is innocent, moreover, the identity of the real killer is fairly obvious right from the off. Personally, I also found the repeated use of the knotted handkerchief motif – used to point up the mental strain of Jim – a little tiresome towards the end.
Generally though, this is one of the better examples of BritNoir and I would certainly recommend it to any fan of suspense/noir. The film is currently unavailable on DVD anywhere, save grey market copies, as far as I know. I believe the rights may currently reside with Optimum/Network/ITV in R2, all of whom have released some little known gems in the past. I very much hope they get around to this one soon.


text:
The Swim England Awards support the Swim England Learn to Swim Programme, an all-inclusive programme which takes the non-swimmer from first splash to developing confidence and competence in the water.
Swim England Awards play an important role in learn to swim programmes in the UK and internationally. Almost two million certificates and badges have been awarded, making it one of most successful schemes in the world.
Rewarding your learners success with Awards is great for their motivation and offers a wealth of encouragement and support to learners, as well as their teachers and coaches.
Our experts have put together some special offer bundles, 20% saving on the individual prices - which gives you 25 awards for the price of 20.
Each bundle consists of the LTS stage Award and its complimentary awards.
Learn to Swim 1 Award Bundle
£82.00 (£98.40 inc Vat)
Learn to Swim 10 Award Bundle
PreSchool Awards 2 Bundle (Duckling, ICan)


The increasing demand for high quality data and comparisons of detailed differences between configurations means that data quality and repeatability must be maintained for all forms of testing. To achieve this objective, it is essential to have a very thorough understanding of the quality of flow in a tunnel and to be able to monitor and attain very high standards of repeatability of data measurement.
A reference databank of flow angularity measurements, formed from all models tested, which enables values computed for new, similar models to be verified.
A reference model to provide a means of demonstrating repeatability, not just of data measurement, but also of the complete wind tunnel testing process.
A centreline calibration probe to measure longitudinal Mach number distributions in the wind tunnel.
A rotating flow survey rig fitted with alternative probes to measure flow angularity and unsteadiness.
From the measurements made in the ARA transonic wind tunnel using the centre-line calibration probe and the rotating flow survey rig, the set of statements given below can be made regarding flow uniformity throughout the working section.


text:
La Chrysalide et le Papillon d'or, známý také pod názvy La Chrysalide et le Papillon či Le Brahmane et le Papillon, je francouzský němý film z roku 1901. Režisérem je Georges Méliès (1861–1938). Film trvá zhruba dvě minuty.

Děj
Bráhman přivolá pomocí hraní na svou flétnu velkou housenku, kterou vloží do kukly. Z ní vyletí motýlí žena, do které se zamiluje. Chytí ji do přikrývky, čímž ji promění v arabskou princeznu, která ho za pokračující obtěžování přemění ve velkou housenku.

Externí odkazy

Francouzské černobílé filmy
Francouzské němé filmy
Filmy z roku 1901
Krátké filmy


Ландшафтный дизайн. Благоустройство и озеленение.
1.Besides painting and gardening, I'm no good to Claude Monet.
Injurious distance should not stop my way, For then despite of space I would be brought, From limits far remote, where thou dost stay.
Ландшафтный дизайн.Проектирование . Авторский надзор.
Ready to work and be creative in any country.
The Golden Trezzini Awards. Supported by Consulate General of Switzerland in St. Petersburg.
The best implemented landscaping and landscape design project in the Landscape as art category.