text:
package org.apache.spark.sql.execution.datasources.parquet

import scala.collection.JavaConverters._

import org.apache.hadoop.conf.Configuration
import org.apache.parquet.schema._
import org.apache.parquet.schema.OriginalType._
import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName._
import org.apache.parquet.schema.Type.Repetition._

import org.apache.spark.sql.AnalysisException
import org.apache.spark.sql.internal.SQLConf
import org.apache.spark.sql.types._

/**
 * This converter class is used to convert Parquet [[MessageType]] to Spark SQL [[StructType]].
 *
 * Parquet format backwards-compatibility rules are respected when converting Parquet
 * [[MessageType]] schemas.
 *
 * @see https://github.com/apache/parquet-format/blob/master/LogicalTypes.md
 *
 * @param assumeBinaryIsString Whether unannotated BINARY fields should be assumed to be Spark SQL
 *        [[StringType]] fields.
 * @param assumeInt96IsTimestamp Whether unannotated INT96 fields should be assumed to be Spark SQL
 *        [[TimestampType]] fields.
 */
class ParquetToSparkSchemaConverter(
    assumeBinaryIsString: Boolean = SQLConf.PARQUET_BINARY_AS_STRING.defaultValue.get,
    assumeInt96IsTimestamp: Boolean = SQLConf.PARQUET_INT96_AS_TIMESTAMP.defaultValue.get) {

  def this(conf: SQLConf) = this(
    assumeBinaryIsString = conf.isParquetBinaryAsString,
    assumeInt96IsTimestamp = conf.isParquetINT96AsTimestamp)

  def this(conf: Configuration) = this(
    assumeBinaryIsString = conf.get(SQLConf.PARQUET_BINARY_AS_STRING.key).toBoolean,
    assumeInt96IsTimestamp = conf.get(SQLConf.PARQUET_INT96_AS_TIMESTAMP.key).toBoolean)

  /**
   * Converts Parquet [[MessageType]] `parquetSchema` to a Spark SQL [[StructType]].
   */
  def convert(parquetSchema: MessageType): StructType = convert(parquetSchema.asGroupType())

  private def convert(parquetSchema: GroupType): StructType = {
    val fields = parquetSchema.getFields.asScala.map { field =>
      field.getRepetition match {
        case OPTIONAL =>
          StructField(field.getName, convertField(field), nullable = true)

        case REQUIRED =>
          StructField(field.getName, convertField(field), nullable = false)

        case REPEATED =>
          // A repeated field that is neither contained by a `LIST`- or `MAP`-annotated group nor
          // annotated by `LIST` or `MAP` should be interpreted as a required list of required
          // elements where the element type is the type of the field.
          val arrayType = ArrayType(convertField(field), containsNull = false)
          StructField(field.getName, arrayType, nullable = false)
      }
    }

    StructType(fields)
  }

  /**
   * Converts a Parquet [[Type]] to a Spark SQL [[DataType]].
   */
  def convertField(parquetType: Type): DataType = parquetType match {
    case t: PrimitiveType => convertPrimitiveField(t)
    case t: GroupType => convertGroupField(t.asGroupType())
  }

  private def convertPrimitiveField(field: PrimitiveType): DataType = {
    val typeName = field.getPrimitiveTypeName
    val originalType = field.getOriginalType

    def typeString =
      if (originalType == null) s"$typeName" else s"$typeName ($originalType)"

    def typeNotSupported() =
      throw new AnalysisException(s"Parquet type not supported: $typeString")

    def typeNotImplemented() =
      throw new AnalysisException(s"Parquet type not yet supported: $typeString")

    def illegalType() =
      throw new AnalysisException(s"Illegal Parquet type: $typeString")

    // When maxPrecision = -1, we skip precision range check, and always respect the precision
    // specified in field.getDecimalMetadata.  This is useful when interpreting decimal types stored
    // as binaries with variable lengths.
    def makeDecimalType(maxPrecision: Int = -1): DecimalType = {
      val precision = field.getDecimalMetadata.getPrecision
      val scale = field.getDecimalMetadata.getScale

      ParquetSchemaConverter.checkConversionRequirement(
        maxPrecision == -1 || 1 <= precision && precision <= maxPrecision,
        s"Invalid decimal precision: $typeName cannot store $precision digits (max $maxPrecision)")

      DecimalType(precision, scale)
    }

    typeName match {
      case BOOLEAN => BooleanType

      case FLOAT => FloatType

      case DOUBLE => DoubleType

      case INT32 =>
        originalType match {
          case INT_8 => ByteType
          case INT_16 => ShortType
          case INT_32 | null => IntegerType
          case DATE => DateType
          case DECIMAL => makeDecimalType(Decimal.MAX_INT_DIGITS)
          case UINT_8 => typeNotSupported()
          case UINT_16 => typeNotSupported()
          case UINT_32 => typeNotSupported()
          case TIME_MILLIS => typeNotImplemented()
          case _ => illegalType()
        }

      case INT64 =>
        originalType match {
          case INT_64 | null => LongType
          case DECIMAL => makeDecimalType(Decimal.MAX_LONG_DIGITS)
          case UINT_64 => typeNotSupported()
          case TIMESTAMP_MICROS => TimestampType
          case TIMESTAMP_MILLIS => TimestampType
          case _ => illegalType()
        }

      case INT96 =>
        ParquetSchemaConverter.checkConversionRequirement(
          assumeInt96IsTimestamp,
          "INT96 is not supported unless it's interpreted as timestamp. " +
            s"Please try to set ${SQLConf.PARQUET_INT96_AS_TIMESTAMP.key} to true.")
        TimestampType

      case BINARY =>
        originalType match {
          case UTF8 | ENUM | JSON => StringType
          case null if assumeBinaryIsString => StringType
          case null => BinaryType
          case BSON => BinaryType
          case DECIMAL => makeDecimalType()
          case _ => illegalType()
        }

      case FIXED_LEN_BYTE_ARRAY =>
        originalType match {
          case DECIMAL => makeDecimalType(Decimal.maxPrecisionForBytes(field.getTypeLength))
          case INTERVAL => typeNotImplemented()
          case _ => illegalType()
        }

      case _ => illegalType()
    }
  }

  private def convertGroupField(field: GroupType): DataType = {
    Option(field.getOriginalType).fold(convert(field): DataType) {
      // A Parquet list is represented as a 3-level structure:
      //
      //   <list-repetition> group <name> (LIST) {
      //     repeated group list {
      //       <element-repetition> <element-type> element;
      //     }
      //   }
      //
      // However, according to the most recent Parquet format spec (not released yet up until
      // writing), some 2-level structures are also recognized for backwards-compatibility.  Thus,
      // we need to check whether the 2nd level or the 3rd level refers to list element type.
      //
      // See: https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#lists
      case LIST =>
        ParquetSchemaConverter.checkConversionRequirement(
          field.getFieldCount == 1, s"Invalid list type $field")

        val repeatedType = field.getType(0)
        ParquetSchemaConverter.checkConversionRequirement(
          repeatedType.isRepetition(REPEATED), s"Invalid list type $field")

        if (isElementType(repeatedType, field.getName)) {
          ArrayType(convertField(repeatedType), containsNull = false)
        } else {
          val elementType = repeatedType.asGroupType().getType(0)
          val optional = elementType.isRepetition(OPTIONAL)
          ArrayType(convertField(elementType), containsNull = optional)
        }

      // scalastyle:off
      // `MAP_KEY_VALUE` is for backwards-compatibility
      // See: https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#backward-compatibility-rules-1
      // scalastyle:on
      case MAP | MAP_KEY_VALUE =>
        ParquetSchemaConverter.checkConversionRequirement(
          field.getFieldCount == 1 && !field.getType(0).isPrimitive,
          s"Invalid map type: $field")

        val keyValueType = field.getType(0).asGroupType()
        ParquetSchemaConverter.checkConversionRequirement(
          keyValueType.isRepetition(REPEATED) && keyValueType.getFieldCount == 2,
          s"Invalid map type: $field")

        val keyType = keyValueType.getType(0)
        ParquetSchemaConverter.checkConversionRequirement(
          keyType.isPrimitive,
          s"Map key type is expected to be a primitive type, but found: $keyType")

        val valueType = keyValueType.getType(1)
        val valueOptional = valueType.isRepetition(OPTIONAL)
        MapType(
          convertField(keyType),
          convertField(valueType),
          valueContainsNull = valueOptional)

      case _ =>
        throw new AnalysisException(s"Unrecognized Parquet type: $field")
    }
  }

  // scalastyle:off
  // Here we implement Parquet LIST backwards-compatibility rules.
  // See: https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#backward-compatibility-rules
  // scalastyle:on
  private def isElementType(repeatedType: Type, parentName: String): Boolean = {
    {
      // For legacy 2-level list types with primitive element type, e.g.:
      //
      //    // ARRAY<INT> (nullable list, non-null elements)
      //    optional group my_list (LIST) {
      //      repeated int32 element;
      //    }
      //
      repeatedType.isPrimitive
    } || {
      // For legacy 2-level list types whose element type is a group type with 2 or more fields,
      // e.g.:
      //
      //    // ARRAY<STRUCT<str: STRING, num: INT>> (nullable list, non-null elements)
      //    optional group my_list (LIST) {
      //      repeated group element {
      //        required binary str (UTF8);
      //        required int32 num;
      //      };
      //    }
      //
      repeatedType.asGroupType().getFieldCount > 1
    } || {
      // For legacy 2-level list types generated by parquet-avro (Parquet version < 1.6.0), e.g.:
      //
      //    // ARRAY<STRUCT<str: STRING>> (nullable list, non-null elements)
      //    optional group my_list (LIST) {
      //      repeated group array {
      //        required binary str (UTF8);
      //      };
      //    }
      //
      repeatedType.getName == "array"
    } || {
      // For Parquet data generated by parquet-thrift, e.g.:
      //
      //    // ARRAY<STRUCT<str: STRING>> (nullable list, non-null elements)
      //    optional group my_list (LIST) {
      //      repeated group my_list_tuple {
      //        required binary str (UTF8);
      //      };
      //    }
      //
      repeatedType.getName == s"${parentName}_tuple"
    }
  }
}

/**
 * This converter class is used to convert Spark SQL [[StructType]] to Parquet [[MessageType]].
 *
 * @param writeLegacyParquetFormat Whether to use legacy Parquet format compatible with Spark 1.4
 *        and prior versions when converting a Catalyst [[StructType]] to a Parquet [[MessageType]].
 *        When set to false, use standard format defined in parquet-format spec.  This argument only
 *        affects Parquet write path.
 * @param outputTimestampType which parquet timestamp type to use when writing.
 */
class SparkToParquetSchemaConverter(
    writeLegacyParquetFormat: Boolean = SQLConf.PARQUET_WRITE_LEGACY_FORMAT.defaultValue.get,
    outputTimestampType: SQLConf.ParquetOutputTimestampType.Value =
      SQLConf.ParquetOutputTimestampType.INT96) {

  def this(conf: SQLConf) = this(
    writeLegacyParquetFormat = conf.writeLegacyParquetFormat,
    outputTimestampType = conf.parquetOutputTimestampType)

  def this(conf: Configuration) = this(
    writeLegacyParquetFormat = conf.get(SQLConf.PARQUET_WRITE_LEGACY_FORMAT.key).toBoolean,
    outputTimestampType = SQLConf.ParquetOutputTimestampType.withName(
      conf.get(SQLConf.PARQUET_OUTPUT_TIMESTAMP_TYPE.key)))

  /**
   * Converts a Spark SQL [[StructType]] to a Parquet [[MessageType]].
   */
  def convert(catalystSchema: StructType): MessageType = {
    Types
      .buildMessage()
      .addFields(catalystSchema.map(convertField): _*)
      .named(ParquetSchemaConverter.SPARK_PARQUET_SCHEMA_NAME)
  }

  /**
   * Converts a Spark SQL [[StructField]] to a Parquet [[Type]].
   */
  def convertField(field: StructField): Type = {
    convertField(field, if (field.nullable) OPTIONAL else REQUIRED)
  }

  private def convertField(field: StructField, repetition: Type.Repetition): Type = {
    ParquetSchemaConverter.checkFieldName(field.name)

    field.dataType match {
      // ===================
      // Simple atomic types
      // ===================

      case BooleanType =>
        Types.primitive(BOOLEAN, repetition).named(field.name)

      case ByteType =>
        Types.primitive(INT32, repetition).as(INT_8).named(field.name)

      case ShortType =>
        Types.primitive(INT32, repetition).as(INT_16).named(field.name)

      case IntegerType =>
        Types.primitive(INT32, repetition).named(field.name)

      case LongType =>
        Types.primitive(INT64, repetition).named(field.name)

      case FloatType =>
        Types.primitive(FLOAT, repetition).named(field.name)

      case DoubleType =>
        Types.primitive(DOUBLE, repetition).named(field.name)

      case StringType =>
        Types.primitive(BINARY, repetition).as(UTF8).named(field.name)

      case DateType =>
        Types.primitive(INT32, repetition).as(DATE).named(field.name)

      // NOTE: Spark SQL can write timestamp values to Parquet using INT96, TIMESTAMP_MICROS or
      // TIMESTAMP_MILLIS. TIMESTAMP_MICROS is recommended but INT96 is the default to keep the
      // behavior same as before.
      //
      // As stated in PARQUET-323, Parquet `INT96` was originally introduced to represent nanosecond
      // timestamp in Impala for some historical reasons.  It's not recommended to be used for any
      // other types and will probably be deprecated in some future version of parquet-format spec.
      // That's the reason why parquet-format spec only defines `TIMESTAMP_MILLIS` and
      // `TIMESTAMP_MICROS` which are both logical types annotating `INT64`.
      //
      // Originally, Spark SQL uses the same nanosecond timestamp type as Impala and Hive.  Starting
      // from Spark 1.5.0, we resort to a timestamp type with microsecond precision so that we can
      // store a timestamp into a `Long`.  This design decision is subject to change though, for
      // example, we may resort to nanosecond precision in the future.
      case TimestampType =>
        outputTimestampType match {
          case SQLConf.ParquetOutputTimestampType.INT96 =>
            Types.primitive(INT96, repetition).named(field.name)
          case SQLConf.ParquetOutputTimestampType.TIMESTAMP_MICROS =>
            Types.primitive(INT64, repetition).as(TIMESTAMP_MICROS).named(field.name)
          case SQLConf.ParquetOutputTimestampType.TIMESTAMP_MILLIS =>
            Types.primitive(INT64, repetition).as(TIMESTAMP_MILLIS).named(field.name)
        }

      case BinaryType =>
        Types.primitive(BINARY, repetition).named(field.name)

      // ======================
      // Decimals (legacy mode)
      // ======================

      // Spark 1.4.x and prior versions only support decimals with a maximum precision of 18 and
      // always store decimals in fixed-length byte arrays.  To keep compatibility with these older
      // versions, here we convert decimals with all precisions to `FIXED_LEN_BYTE_ARRAY` annotated
      // by `DECIMAL`.
      case DecimalType.Fixed(precision, scale) if writeLegacyParquetFormat =>
        Types
          .primitive(FIXED_LEN_BYTE_ARRAY, repetition)
          .as(DECIMAL)
          .precision(precision)
          .scale(scale)
          .length(Decimal.minBytesForPrecision(precision))
          .named(field.name)

      // ========================
      // Decimals (standard mode)
      // ========================

      // Uses INT32 for 1 <= precision <= 9
      case DecimalType.Fixed(precision, scale)
          if precision <= Decimal.MAX_INT_DIGITS && !writeLegacyParquetFormat =>
        Types
          .primitive(INT32, repetition)
          .as(DECIMAL)
          .precision(precision)
          .scale(scale)
          .named(field.name)

      // Uses INT64 for 1 <= precision <= 18
      case DecimalType.Fixed(precision, scale)
          if precision <= Decimal.MAX_LONG_DIGITS && !writeLegacyParquetFormat =>
        Types
          .primitive(INT64, repetition)
          .as(DECIMAL)
          .precision(precision)
          .scale(scale)
          .named(field.name)

      // Uses FIXED_LEN_BYTE_ARRAY for all other precisions
      case DecimalType.Fixed(precision, scale) if !writeLegacyParquetFormat =>
        Types
          .primitive(FIXED_LEN_BYTE_ARRAY, repetition)
          .as(DECIMAL)
          .precision(precision)
          .scale(scale)
          .length(Decimal.minBytesForPrecision(precision))
          .named(field.name)

      // ===================================
      // ArrayType and MapType (legacy mode)
      // ===================================

      // Spark 1.4.x and prior versions convert `ArrayType` with nullable elements into a 3-level
      // `LIST` structure.  This behavior is somewhat a hybrid of parquet-hive and parquet-avro
      // (1.6.0rc3): the 3-level structure is similar to parquet-hive while the 3rd level element
      // field name "array" is borrowed from parquet-avro.
      case ArrayType(elementType, nullable @ true) if writeLegacyParquetFormat =>
        // <list-repetition> group <name> (LIST) {
        //   optional group bag {
        //     repeated <element-type> array;
        //   }
        // }

        // This should not use `listOfElements` here because this new method checks if the
        // element name is `element` in the `GroupType` and throws an exception if not.
        // As mentioned above, Spark prior to 1.4.x writes `ArrayType` as `LIST` but with
        // `array` as its element name as below. Therefore, we build manually
        // the correct group type here via the builder. (See SPARK-16777)
        Types
          .buildGroup(repetition).as(LIST)
          .addField(Types
            .buildGroup(REPEATED)
            // "array" is the name chosen by parquet-hive (1.7.0 and prior version)
            .addField(convertField(StructField("array", elementType, nullable)))
            .named("bag"))
          .named(field.name)

      // Spark 1.4.x and prior versions convert ArrayType with non-nullable elements into a 2-level
      // LIST structure.  This behavior mimics parquet-avro (1.6.0rc3).  Note that this case is
      // covered by the backwards-compatibility rules implemented in `isElementType()`.
      case ArrayType(elementType, nullable @ false) if writeLegacyParquetFormat =>
        // <list-repetition> group <name> (LIST) {
        //   repeated <element-type> element;
        // }

        // Here too, we should not use `listOfElements`. (See SPARK-16777)
        Types
          .buildGroup(repetition).as(LIST)
          // "array" is the name chosen by parquet-avro (1.7.0 and prior version)
          .addField(convertField(StructField("array", elementType, nullable), REPEATED))
          .named(field.name)

      // Spark 1.4.x and prior versions convert MapType into a 3-level group annotated by
      // MAP_KEY_VALUE.  This is covered by `convertGroupField(field: GroupType): DataType`.
      case MapType(keyType, valueType, valueContainsNull) if writeLegacyParquetFormat =>
        // <map-repetition> group <name> (MAP) {
        //   repeated group map (MAP_KEY_VALUE) {
        //     required <key-type> key;
        //     <value-repetition> <value-type> value;
        //   }
        // }
        ConversionPatterns.mapType(
          repetition,
          field.name,
          convertField(StructField("key", keyType, nullable = false)),
          convertField(StructField("value", valueType, valueContainsNull)))

      // =====================================
      // ArrayType and MapType (standard mode)
      // =====================================

      case ArrayType(elementType, containsNull) if !writeLegacyParquetFormat =>
        // <list-repetition> group <name> (LIST) {
        //   repeated group list {
        //     <element-repetition> <element-type> element;
        //   }
        // }
        Types
          .buildGroup(repetition).as(LIST)
          .addField(
            Types.repeatedGroup()
              .addField(convertField(StructField("element", elementType, containsNull)))
              .named("list"))
          .named(field.name)

      case MapType(keyType, valueType, valueContainsNull) =>
        // <map-repetition> group <name> (MAP) {
        //   repeated group key_value {
        //     required <key-type> key;
        //     <value-repetition> <value-type> value;
        //   }
        // }
        Types
          .buildGroup(repetition).as(MAP)
          .addField(
            Types
              .repeatedGroup()
              .addField(convertField(StructField("key", keyType, nullable = false)))
              .addField(convertField(StructField("value", valueType, valueContainsNull)))
              .named("key_value"))
          .named(field.name)

      // ===========
      // Other types
      // ===========

      case StructType(fields) =>
        fields.foldLeft(Types.buildGroup(repetition)) { (builder, field) =>
          builder.addField(convertField(field))
        }.named(field.name)

      case udt: UserDefinedType[_] =>
        convertField(field.copy(dataType = udt.sqlType))

      case _ =>
        throw new AnalysisException(s"Unsupported data type ${field.dataType.catalogString}")
    }
  }
}

private[sql] object ParquetSchemaConverter {
  val SPARK_PARQUET_SCHEMA_NAME = "spark_schema"

  val EMPTY_MESSAGE: MessageType =
    Types.buildMessage().named(ParquetSchemaConverter.SPARK_PARQUET_SCHEMA_NAME)

  def checkFieldName(name: String): Unit = {
    // ,;{}()\n\t= and space are special characters in Parquet schema
    checkConversionRequirement(
      !name.matches(".*[ ,;{}()\n\t=].*"),
      s"""Attribute name "$name" contains invalid character(s) among " ,;{}()\\n\\t=".
         |Please use alias to rename it.
       """.stripMargin.split("\n").mkString(" ").trim)
  }

  def checkFieldNames(names: Seq[String]): Unit = {
    names.foreach(checkFieldName)
  }

  def checkConversionRequirement(f: => Boolean, message: String): Unit = {
    if (!f) {
      throw new AnalysisException(message)
    }
  }
}


text:
#ifndef __GTK_GESTURE_ZOOM_H__
#define __GTK_GESTURE_ZOOM_H__

#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

#include <gtk/gtkgesture.h>
#include <gtk/gtkwidget.h>

G_BEGIN_DECLS

#define GTK_TYPE_GESTURE_ZOOM         (gtk_gesture_zoom_get_type ())
#define GTK_GESTURE_ZOOM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_GESTURE_ZOOM, GtkGestureZoom))
#define GTK_GESTURE_ZOOM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_GESTURE_ZOOM, GtkGestureZoomClass))
#define GTK_IS_GESTURE_ZOOM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_GESTURE_ZOOM))
#define GTK_IS_GESTURE_ZOOM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_GESTURE_ZOOM))
#define GTK_GESTURE_ZOOM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_GESTURE_ZOOM, GtkGestureZoomClass))

typedef struct _GtkGestureZoom GtkGestureZoom;
typedef struct _GtkGestureZoomClass GtkGestureZoomClass;

GDK_AVAILABLE_IN_3_14
GType        gtk_gesture_zoom_get_type        (void) G_GNUC_CONST;

GDK_AVAILABLE_IN_3_14
GtkGesture * gtk_gesture_zoom_new             (GtkWidget      *widget);

GDK_AVAILABLE_IN_3_14
gdouble      gtk_gesture_zoom_get_scale_delta (GtkGestureZoom *gesture);

G_END_DECLS

#endif /* __GTK_GESTURE_ZOOM_H__ */

redpajama_set_name: RedPajamaGithub


text:
Miller: Let's get together and talk Oscars
Join me for a Feb. 8 chat at the Cape Cinema and/or Wednesday on "Life With Gwenn."
It's a new year, and it's time for … movie tidbits!
Let's hang out together
For the third year in a row, you're invited to join an Oscar discussion with me at the Cape Cinema in Dennis. With the Academy Awards night set for Feb. 9 this year, the get-together will be the day before, Feb. 8, a Saturday, from 10 a.m. to around noon. That's right, it begins at the crack of dawn – but if an incorrigible night owl like yours truly can make it to the theater by 10 a.m., I bet you can, too.
The past two events have been fun (well, for me at least; I hope for those who attended). It will mostly be a Q-and-A format, though this will be an opportunity for you to express your opinions on this year's films (or anything else movie-related).
Hope to see you then (and there).
Oh yeah, it's free.
Speaking of Oscars …
The Oscar nominations will be announced Monday.
If I had my way (which I won't; at least, not entirely), these would be the nominees:
Best picture: "1917," "The Souvenir," "Downton Abbey," "Once Upon a Time … in Hollywood," "Little Women," "Joker," "Waves," "Parasite," "Portrait of a Lady on Fire" and "Pain and Glory."
Best actor: Joaquin Phoenix, "Joker"; Antonio Banderas, "Pain and Glory"; Jonathan Pryce, "The Two Popes"; Daniel Craig, "Knives Out"; and Michael B. Jordan, "Just Mercy."
Best actress: Jessie Buckley, "Wild Rose"; Mary Kay Place, "Diane"; Lupita Nyong'o, "Us"; Renee Zellweger, "Judy"; Honor Swinton Byrne, "The Souvenir."
Best supporting actor: Tom Burke, "The Souvenir"; Brad Pitt, "Once Upon a Time … in Hollywood"; Sam Rockwell, "Jojo Rabbit"; Tim Blake Nelson, "Just Mercy"; Jamie Foxx, "Just Mercy."
Best supporting actress: Rebecca Ferguson, "Doctor Sleep"; Taylor Russell, "Waves"; Florence Pugh, "Little Women"; Adèle Haenel, "Portrait of a Lady on Fire"; Margot Robbie, "Bombshell."
Best director: Sam Mendes, "1917"; Joanna Hogg, "The Souvenir"; Quentin Tarantino, "Once Upon a Time … in Hollywood"; Greta Gerwig, "Little Women" and Todd Phillips, "Joker."
You're invited to join me and host Gwenn Friss on "Life With Gwenn" at noon Wednesday to talk about the nominations. The talk show broadcasts on Cape Cod Times' Facebook Live. Feel free to type in your comments and questions real-time (that's where the "Live" comes in) so we can discuss this year's crop of contenders.
Did you get a sense of depression at this year's Golden Globes?
The Globes usually seem like one big party. Not this year. Maybe it's because of concerns over the climate, including what's going on in Australia. Maybe it's what's going on in Iran, or the political climate in general. Whatever the reason, everyone at the Globes seemed unusually subdued – even host Ricky Gervais (though that didn't stop him from delivering one comic zinger after another).
Well, Will Ferrell was hilarious. Apparently mesmerized by co-presenter Pierce Brosnan, who was sporting a distinguished goatee, Ferrell blurted out: "My God, you are good looking!"
But the rest of the night was relatively subdued.
Still, the choices for winners were excellent. Among them: "1917" (drama), "Once Upon a Time … in Hollywood," Mendes as director, Phoenix as dramatic actor, Zellweger as dramatic actress, Pitt as supporting actor. And the tributes to Ellen Degeneres and Tom Hanks were moving – especially Kate McKinnon's emotional speech about gay icon Degeneres' effect on her life.
Writing for movies and more
Author-journalist-screenwriter Casey Sherman ("The Finest Hours," "Patriots Day") will hold a "Literary Weekend" Jan. 17-19 at Chatham Bars Inn. I'll be there for part of it.
During the weekend, Sherman will discuss such topics as screenwriting, filmmaking, publishing. There will be a writers workshop, along with eating, drinking, movie screenings and other events. Sherman also will review participants' manuscripts.
I'll be joining him at the writers workshop on Jan. 18 to discuss what I look for in a movie.
More info on the weekend: 800-527-4884 or www.ChathamBarsInn.com.
Tim Miller's reviews can be found at www.capecodtimes.com/entertainment. To follow him on Twitter, go to @TimMillerCritic.

redpajama_set_name: RedPajamaCommonCrawl


text:
import log from 'winston'
import build from './run-build'
import renderPug from './render-pug'

build()
  .then(renderPug)
  .catch(log.error)


>The Biden quote at the end is hilarious!
Ain't nuthin' hilarious about that story.
neither of whom would have been a good president had the worst happened.
proof, it wasn't good between 2000- 2006, and it sure ain't good now.
You're right, Mig.  I need to go skiing, knee pain or not.


text:
The Heroism of the Crowd: Flânerie at the Barnes Foundation
by Tom Csaszar
Person of the Crowd: The Contemporary Art of Flânerie at the Barnes Foundation
February 25 to May 22, 2017
Philadelphia, barnesfoundation.org
Pope.L, The Great White Way, 22 miles, 9 years, 1 street (Whitney version), 2001. Courtesy of the artist and Mitchell-Innes & Nash, NY
"The Person of the Crowd" is a large survey of 53 artists that has numerous successes and failures, leaning towards success. It is inherently unwieldy, stretching across five or six decades surveying installation, video, performance and conceptual works centered on the theme of the social and political context of modern urban life, crowds, political life, private lives in public, and communities. The exhibit includes work by seminal artists in these various fields as well as recent developments. Many of the works are shown dovetailed and overlapping each other in one large gallery, in a way that is for the most part a curatorial success, pulling into interactions with each other video works and conceptual sculptures sometimes shown dryly and remotely detached in the white and black boxes of other museums and galleries.
Several parts of the exhibit take place around the streets of Philadelphia including posters and billboards by Jenny Holzer and the Guerilla Girls, as well as performances by Wilmer Wilson, Ayana Evans, and a re-enactment of Tania Bruguera's Diplacement of 1998, an important work of recent political art resulting in Brugeura's arrest and detention in Cuba. The pieces in the gallery stretch from Robert Rauschenberg, Guy Debord, and Vito Acconci, to more recent artists such as Zhang Huan, Virgil Marti, and Papo Colo. If the viewer is familiar with art history, works such as Carolee Schneemann's Beatle Box, c. 1960s, and David Hammons Untitled (Speakers), 1986, provide a whiff of context to the more recent works. One of the failures of the show is that even with the judicious and informative labeling, some of this historical context is hard to grasp. On the other hand, a success of the show is that even slight pieces—slight in relation to the other later accomplishments of these two artists—are brought back to life by seeing them next to other likeminded works. A kind of visual and historical rewinding takes place in this exhibit which is hard at times to follow, but yields a more vivid experience of most of the individual works. Again this is not without some failures, but the successes often outweigh them.
Zhang Huan, My New York Performance, 2002 Biennial Exhibition, Whitney Museum of American Art, New York. Photo courtesy the artist
Along with the art of this period, "Person of the Crowd" weaves together two additional contexts in its consideration of contemporary flânerie: the history of the Barnes Foundation itself and the narrative provided by Walter Benjamin and others in regard to 19th century Parisian idlers, voyeurs, and observers in the crowd. The Barnes Foundation is a non-museum intended to be a visual demonstration of a self-proclaimed "objective" method of understanding art through plastic values that was developed by Albert Barnes and the longtime director, Violette de Mazia, and illustrated by many of the best works money could buy in the first half of the 20th Century, hung floor to ceiling and wall to wall. "Person of the Crowd" curiously displays works similarly, except the interactions of visual qualities reach across diverse mediums and speak more directly to social and political worlds.
Thom Collins, executive director and president of the Barnes Foundation, and curator of the exhibition, focuses in his wall text on Edgar Allen Poe's short story "The Man of the Crowd;" the poet, Charles Baudelaire; and the idea of someone who has the leisure time to wander through crowds in the city, such as the flâneur, or dandy, all of which figure prominently in Walter Benjamin's essay "The Paris of the Second Empire in Baudelaire."
The main collection of the Barnes Foundation carefully compares visual qualities of works in its "wall pictures" which for some are curatorially heavy-handed. Similar relationships occur in this exhibit. It is questionable if Jean Shin's found pieces of blue painted plywood construction site fencing from her 2016 "Surface Tension" series are seen best here running through the middle of the show rather than closer to the wall, as she has shown them before. Here Shin's series seems to be a room divider and backdrop for other works, even as they regain some original context as found fencing.
"Person of the Crowd" provides the rare pleasures of seeing Robert Rauschenberg's 1961 Second Time Painting (1961), next to Brett Day Windham's Rosary (2008-13), both of which examine the mystery of quotidian objects. Pope L.'s The Great White Way, 22 Miles, 9 Years, 1 Street (2003) contrasts vividly and starkly with Kimsooja's Beggar Woman – Cairo (2001). The efforts of performance and the engagement of the spectator are questioned by both. In a corresponding way, the narrative territories of many of these works, if read from the right angle, pleasurably enrich each other's various transitional states of social identity, as in the works of Jefferson Pinder, Papo Colo, Sanford Biggers, Kendell Geers, and Lynn Hershman Leeson. Likewise the rooms of the Barnes Foundation makes use of strategic comparisons that inverts relationships between performance pieces, say African masks, and narrative art, such as Picasso's and Matisse's paintings. Benjamin in Part II of his essay contrasts a hero or political figure that stands in the crowd with the heroism of the crowd. Pinder's Marathon (2001) and Biggers' Duchamp in the Congo (1997) leans more to what separates members from the crowd, but not without redefining a moving center of the crowd.
Wilmer Wilson IV, still from Channel, 2017. Photo by Allison McDaniel, courtesy of the artist.
Beyond the obvious social and political engagement that links the works of "Person of the Crowd" are their narrative complexities, narrative twists and turns, made evident in conjunction with formal, visual, and political weights. (This is in fact true of the Barnes Foundation's collection as a whole, but is rarely acknowledged by either its admirers or its detractors.) And part of this narrative complexity that cannot be overlooked is the diversity of voices and cultural outlooks present in this exhibit. (Ditto.) While including a nod to 19th century Paris, other connections and conversations are brought into a state of motion and play, maybe frenetic but not chaotic, which renders the works and their themes animated and in a state of transition.
Podcast of October's edition of The Review Panel
Radical Bodies at Grey Art Gallery
Volta Experiences A Surge
The Review Panel is this Tuesday, October 16
December 2007: Ben Davis, Lance Esplund, and Lilly Wei with moderator David Cohen
More articles by Tom Csaszar
Network as Artist: The Web as Creator of Aesthetic Experience Plugging in and Moving on: Okwui Enwezor's All the World's Futures Bright Matter: Shinique Smith in Boston
Podcast of October's edition of The Review PanelThe Review Panel is this Tuesday, October 16Radical Bodies at Grey Art GalleryVolta Experiences A SurgeZhang Huan at Pace WildensteinNew China New Art by Richard VineOctober 2008: Faye Hirsch, Joao Ribas, and Nick Stillman with moderator David CohenDecember 2007: Ben Davis, Lance Esplund, and Lilly Wei with moderator David Cohen


"In the center of a Mediterranean village we offer three very comfortable rooms and suites of rooms to suit all guests. Air conditioning, private swimming pool, quiet gardens in a charming 19th century "
"Manoir Les Gaillardoux 5star 18th Century French Manor House, , in Midi-Pyrenees ( Occitanie) , Southwest France."
"Appartements à louer pour un beau séjour à Toulouse / Apartments for rent for a nice stay in Toulouse"
"In Corsica, overlooking the Gulf of Porto, this campsite promises you unforgettable holidays thanks to shaded pitches, equipped bungalows, a diving club, its swimming pool and its fitness center. "
"Right in the heart of Belleville, an arty and cosmopolitan neighbourhood in the bubbling and central 11th district of Paris."
"Self Catering Cottage in Brittany, France, sleeps 6 + cot"
"Self-catering accommodation in Saint-Guénole, 80 m away from the sea"
"A beautiful self catering farmhouse with private pool on the Charente/Dordogne border near Chalais and Aubeterre sur Dronne SW France"
"The site consists of 25 chalets from 2 to 6 seats beneath the pine trees bordering the lake."
"Luxury Ski Chalet - Large Ski Chalet - Chalet sleeps 12 in French Alps"
"Chalet Bonjour-Tourelle offers some of the most spectacular views in Tignes"
"An 18th century French manor house in Burgundy, France with private swimming pool and extensive grounds, available for rent for holidays and vacations."
"Child friendly holidays in south west France. "
"Holiday cottage in Provence - Village House divided into two apartments for 2/4 people each. WiFi throughout"
"Lovely spacious gites in a converted stone barn set in twelve acres on the edge of this medieval village in the Lot Valley, Lot et Garonne."
"b and b at sea sight"
"Charming Bed & Breakfast and vacation rental in Avignon Provence"
"Set in the vineyards and close to the town of Cognac.Rooms set in a separate annex .Self sevice apartments .Pool bar and meals on request"
"Beautiful 1900s farmhouse in Fontaine Naves, in the heart of the French Alps. "
"The ecological house of serenity in Les Carroz d'Arâches ideal for families wkith kids"
"Visit Domaine de la Tour for superior holiday accommodation in Normandy. Our guest houses are superbly situated for exploring Normandy's many attractions."
"Small Chateau near Bergerac France"
"3 holiday lets with heated pool near Carcassonne"
"Our lovely semi-detached, self catering chalet is located in Isola 2000 in the Alpes du Sud. It is on the Chalets du Mercantour development overlooking the Chastillon valley. "
"3 Bedroom house with garden "
"Loire Valley country Cottage Sleeps 7+"
"In The heart of Sarlat, We offer you a cosy atmosphere of an apartment of big comfort with an outside terrace and an entrance on the same level."
"Two Hundred Year Old Restored Farmhouse with Large Garden"
"Large House and 2 Gites in a beautiful rural setting near the Deux Sevres/Vendee border. "
"Renovated barn with POOL in 'Cathar' area near Carcassonne/Mirepoix"
"Bed and Breakfast/Chambre d'hote Haute Vienne, Limousin"
"It is the resort's suitability to beginners and the range of inexpensive child facilities that really stand Morzine and Les Gets out from the crowd. The range of kids' clubs and ski gardens, as well as circuits of gentle runs for easy cruising, and hardly"
"This is a luxury self-catering vacation rental with swimming-pool, up to 12 people and located in Aveyron, France, near Toulouse."
"A Charming Self Catering Apartment to Rent in the centre of Dijon "
"Ecologic bed and breakfast near Saumur"
"2 self catering cottages with pool in the Dordogne - South France"
"First floor with balcony in heart of medieval centre"
"Self catering ski chalet - Les Arcs area. Large ski chalet for family. Ideal family ski chalet with proper self catering ski accommodation."
"We are a family run business with two self-catering apartments in the French Alps which we rent out to holiday makers"
"Just 4km from the tremendous medieval walled Cité de Carcassonne and close to a golf course a nice gite "Le Galamp" for 2 to 4 adults in the outbuildings of the magnificent Domaine de Maran."
"Elegant apartment in the heart of Dijon capital of Burgundy"
"Self catering for 5 persons"
"Next to the piste in Tignes Les Brevieres"
"Lake hire is for exclusive use, for groups of up to 8 anglers, on a drive and survive basis."
"Comfortable apartments in the Auvergne"
"A charming holiday house near Disneyland Paris Champagne and Vineyards country "
"A recently renovated 18th century charming cottage in normandy surrounded by the garden and the fields with 2 appartements suitable for 3 or 4 persons (total for all the cottage 7 persons)."
"Luxury Cottage for 2 to 8 People. For Holidays or Long Winter Lets."
"Charming rural detached property with pool"


text:
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2018 Mike Hummel

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>de.mhus.lib</groupId>
        <version>3.6.3-SNAPSHOT</version>
        <artifactId>mhus-karaf</artifactId>
    </parent>
    <groupId>de.mhus.example.mongo</groupId>
    <artifactId>mongo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
  <name>MHUS Mongo Tools</name>
  <description>Mongo Tools examples</description>
  <url>http://www.mhus.de</url>

    <properties>

    </properties>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <url>https://github.com/mhus/mhus-sop</url>
    <connection>scm:git:https://github.com/mhus/mhus-sop</connection>
  </scm>
  <developers>
    <developer>
      <id>mhu</id>
      <name>Mike Hummel</name>
      <email>mh@mhus.de</email>
      <url>http://www.mhus.de</url>
    </developer>
  </developers>

    <modules>
      <module>mhus-mongo-example1</module>
    </modules>

</project>


STANLEY SISK was booked on 8/4/2017 4:27:00 PM. SISK was arrested by WHITE COUNTY SHERIFF'S OFFICE in Cleveland, Georgia. SISK was 44 years old at the time of the arrest.
STANLEY SISK may not have been convicted of the charges or crimes listed and are presumed innocent until proven guilty. Please contact the WHITE COUNTY SHERIFF'S OFFICE for more information regarding arrest records.


We had a great day of weeding out!!! I LOVE THIS WEATHER!! It was perfect today - a little cloudy so that it wasn't too hot, a nice soft breeze, it was awesome! We got everything out of the outer compartments of the RV and sorted through it all. I also vacuumed out our car and realized the last time I remember doing that was Washington, DC! Yikes! It took me an hour and a half to do it! We must have had dirt on the floor from like 13 states! :-) Anyway, we ended up with 4 piles - 1 was a pile of things we will be taking to Lighthouse (it's like Goodwill), 1 pile of stuff we'll be taking to a friend's huge attic (we already have a few things in there), 1 small pile of stuff we'll be taking to our storage unit, and 1 pile of stuff we stuffed back into the compartments of the RV. We are planning on re-weighing ourselves tomorrow. We don't think we got rid of 2000 pounds, but we're hoping it will be around 1000 pounds! We still have stuff we could get rid of on the inside, but we'll have to do that later. Tomorrow will be dumping, getting LP, weighing ourselves, delivering our stuff to storage and Lighthouse, and getting ready to celebrate New Years! Yeehaw! I wish everyone a very Happy New Year!


text:
Q: Change gradle project directory, cannot use eclipse I have a gradle project I had imported into eclipse (it is the libgdx sample project "The Plane that couldn't fly good" here), and it runs fine.
Now I exited eclipse, moved the project directory elsewere, re-launched eclipse, and it complains it can not find the project files (fine, I moved them in other directory).
So I am trying to open the project from the new directory but I am unable to find a file to feed eclipse with (such as a .sln file for visual studio); I tried to re-import the project, but eclipse complains:

trunk.theplanethatcouldntflygood-android existing workspace project
  theplanethatcouldntflygood-android has the same name

So I am wondering if I am trying an impossible use case (NEVER change a gradle project directory) or I am missing something?

A: Delete the old project in Eclipse first and then import it again.

redpajama_set_name: RedPajamaStackExchange


Hey everyone! Happy second day of spring! As we march towards warmer days, here are some of our favorite beer stories from the past couple of weeks: The Big Short Short's Brewing Co., long opposed to distributing outside of Michigan, will now arrive in Chicago this spring. Click here.
Hey everyone! We hope that you are all gearing up for the St. Paddy's Day celebrations starting in Chicago on Saturday! It's going to be a wild, fun time in the windy city, with plenty of beer to drink.


text:
Q: Option Value as Link in jQuery Mobile I am implementing option value into a page and I want to use it as navigation menu with links to different pages. The code below does switch between pages but it immediately returns the pages to index.html As a result, you can see another page for a fraction of a second and then it comes back to the home page. Any thoughts on that, please?
My code is as followed:

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />

HOME

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

Home Page

ABOUT

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

About Page

SERVICES

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

Services Page, Services Page

A: Working example:

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />

HOME

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

Home Page

ABOUT

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

About Page

SERVICES

    <select name="select-custom-1" id="select-custom-1" data-native-menu="false">
        <option value="index.html">HOME</option>
        <option value="#about">ABOUT</option>
        <option value="#services">SERVICES</option>
    </select>

Services Page, Services Page

You need to use jQuery Mobile solution for page traversing:
$.mobile.changePage( url, { transition: "slide", changeHash: false });


Little Teddy got baptized on a warm sunny [winter] day earlier this month at the Serra Chapel in the San Juan Capistrano Mission. I love how the history whispers from the walls in that place; with two hundred years and countless moments sealed in every crack and crevice, the place just speaks to you.
Teddy's big sister was too cool for school and said 'no more pictures…' I can't blame her. It was a big day.


text:
ItalyHeritage ⇒ Traditions & Events ⇒ The goverment of Enrico Letta
Government of Enrico Letta
The new Italian government was announced Saturday, 27th April at 17:00. Under the leadership of Premier Enrico Letta, a 47-year-old from Pisa, this is the 62nd government of the Italian Republic, the first of the XVII Legislature after a stalemate of over two months.
Follow ItalyHeritage on Facebook
Christmastime traditions | Events by Region | Events by month | Carnival
The task of forming the government was entrusted to Enrico Letta by the President of the Republic Giorgio Napolitano on 24 April 2013, after having determined that the elections of February 24 and 25 had not given a clear majority. Letta succeded in mediating the differences and was supported by three parties: Democratic Party, Popolo delle Libertà and Scelta Civica. This is the government with most women so far, and the first to include an African American lady.
Enrico Letta
Enrico Letta (Pisa, 20 August 1966), a member of the Democratic Party, is the son of Anna Banchi and Giorgio Letta, a Maths Professor at the University of Pisa, a member of the Accademia Nazionale dei Lincei and the National Academy of Sciences. He is also the nephew of Gianni Letta (a political adversary to Enrico), one of the main collaborators of Silvio Berlusconi's center-right party in the "People of Freedom". The Letta family is originary from Aielli, a village near Avezzano, in the Province of L'Aquila.
He spent part of his childhood in Strasbourg where he attended the high school. He graduated in international political sciences at the University of Pisa. He obtained his PhD in European Community Law at the Scuola Superiore Sant'Anna of Pisa. He is married and has three children. On 24th April he went to receive his nomination from President Napolitano in his own family car, with a baby stroller in the back, which in a way set up a blueprint for a different style in Italian politics, plagued so far with scandals and privileges.
The Letta family
The Letta family, that gave so much prestige to the Marsica, is originary of Aielli. The ancestor, Luigi Letta, married Luisa Ranalletta, and they had eight children. A large family that was to meet a cruel fate. The terrible earthquake of the morning of January 13, 1915 that razed Avezzano to the ground, did not spare Aielli: the Letta house collapsed, Louisa and three daughters were killed. The other children were saved, because they were in a boarding school at Tivoli.
Among the survivors was also Vincenzo, who was then 12 years old. He graduated in law at the University of Rome, and began his training at the De Vincentiis law firm, in Avezzano. Between Vincenzo and the daughter of the De Vincentiis lawyer, Maria, it was love at first sight. The two got married in 1931 and gave birth their eight children: Luigi, Gianni, Giorgio, Maria Teresa, Corrado, Francesca Romana, Cesare and Adriana. [summarized from IlCentro, Abruzzo newspaper].
Wikipedia Page on the members of the new Government
Enrico Letta's official page


text:
by Matthew Lucas• Film• Featured• Streaming Scene
Shirkers | Sandi Tan
In 1992, a group of teenage cinephiles in Singapore set out to make a film, gathering their friends and neighbors to assert their country's place in the cinema world at large. That film, Shirkers, was written by aspiring filmmaker and critic Sandi Tan — whose friendship with a mysterious, married, middle-aged American ex-pat named Georges would have a lasting impact on her life. A film professor full of tall-tales and dubious motives, Georges eventually absconded with the complete footage, leaving Shirkers to become one of Singapore's great cinematic mysteries, a film-that-wasn't but that still rocked the island nation's almost nonexistent film industry. Then, 20 years later, Shirkers finally resurfaced, sending Tan on a quest to understand not only Georges's motives for stealing such a large part of her life away, but also what impact the making of the film had on the relationships between the cast and crew.
Through silent footage culled from the remnants of Shirkers (the audio didn't survive the years the film spent in the wilderness), interviews with various involved or interested parties, and often devastating bouts of very personal soul searching, Tan examines how a film that doesn't actually exist, per se, can still have such a presence. In the 2018 Shirkers — the documentary that takes the name of Tan's original film — cinema is an idea rather than a physical thing; it exists beyond the filmed image, is something intangible. Tan's love for cinema history is evident in every glimpsed frame from her ill-fated film, with moments that recall everything from the French New Wave to Steven Soderbergh — and her characters display an improbable kinship with the disaffected denizens of Wes Anderson's and Terry Zwigoff's work, despite neither filmmaker having possibly been able to see Shirkers.
Tan examines how a film that doesn't actually exist, per se, can still have such a presence.
At its heart, Tan's documentary is a quietly radical act of self-love and catharsis — an exorcism of childhood demons that is at once joyful and haunted. What began as an effort to craft a DIY coming-of-age film when it went into production decades ago has taken on a new sheen through the critical lens of considering the circumstances under which it was made. Shirkers, film and documentary, offers the autobiography of a young woman discovering her own identity, and reclaiming it from the man who stole it from her. And while Tan may be seen as too close to that narrative, she still eschews nostalgia, favoring a clear-eyed self-reflection that finds personal resonance in its meta-film approach.
You can currently stream Sandi Tan's Shirkers on Netflix.
2018NetflixSandi Tan
by Matthew Lucas
Jurassic World: Fallen Kingdom | J.A. Bayona
The Kamagasaki Cauldron War | Leo Sato
Credit: Film at Lincoln Center
The Killing of Two Lovers | Robert Machoian
Credit: Steve Price
Lily Topples the World | Jeremy Workman
Credit: Amazon Studios
Birds of Paradise | Sarah Adina Smith
Downhill | Nat Faxon & Jim Rash


text:
is a Japanese former swimmer who competed in the 1976 Summer Olympics. At the time of the Montreal Olympics, he was studying at Waseda University. He then got a job in Dentsu. He also served as the co-executive producer of the movie Real Onigokko (2008). He is currently the Deputy Director of Public Relations Bureau at the Tokyo Organising Committee of the Olympic and Paralympic Games.

References

1957 births
Living people
Japanese male medley swimmers
Japanese male freestyle swimmers
Olympic swimmers of Japan
Swimmers at the 1976 Summer Olympics
Asian Games medalists in swimming
Asian Games gold medalists for Japan
Asian Games silver medalists for Japan
Swimmers at the 1974 Asian Games
Swimmers at the 1978 Asian Games
Medalists at the 1974 Asian Games
Medalists at the 1978 Asian Games
20th-century Japanese people

redpajama_set_name: RedPajamaWikipedia


text:
Q: Arrayformula returning FALSE instead of specified value_if_false I have a formula that is returning FALSE values when the conditions are not met, rather than the "" blank cell that I specified. I'm pretty new to using formulas, so I'm wondering what I can do to get all these FALSE cells to display as blank instead.
Here's my formula:
=ARRAYFORMULA(if($B$2 = 'Inventory Form Responses'!$B$2:$B,if('Inventory Form Responses'!$E$2:$E <> "",B5-'Inventory Form Responses'!$E$2:$E,"")))

A: There are two IF formulas and hence requires two ""
 =ARRAYFORMULA(if($B$2 = 'Inventory Form Responses'!$B$2:$B,if('Inventory Form Responses'!$E$2:$E <> "",B5-'Inventory Form Responses'!$E$2:$E,""), ""))


A New iPad Always Helps!
Jovan, age 13, is courageously battling brain cancer. He wished for an ipad to take with to treatments to pass the time and to also keep up with his homework.
"I would like to say Thank You from the bottom of our heart's for granting Jovan his wish of an Apple Ipad and case! He was very happy and over excited to have it, he loves his gift.


Amer. |ˈroʊdblɑːk| Your browser does not support the audio element.
Brit. |ˈrəʊdblɒk| Your browser does not support the audio element.
That's the one roadblock to the plan.
The police have set up roadblocks to try and catch the two men.
The escaped prisoners ran the roadblock.
The police trapped the terrorists at a roadblock.


Can Children Sleep in the Same Bed as Parents?
Home » Authors » Can Children Sleep in the Same Bed as Parents?
Q: Some friends of ours share their king-sized bed with their two children. They say that families all over the world sleep in the same "family bed" that it's good for everyone. "Co-Sleeping" as they call it, still seems weird to me. Doesn't it interfere with mom and dad's relationship to sleep with the kids in the bed? It also seems pretty unsafe to me. What do you think?
A: Most pediatricians will probably tell you that your baby should get used to sleeping by him- or herself as soon after birth as possible. The reasoning is that in American culture we emphasize early independence, so babies should adapt quickly to being away from their parents-especially if both parents work and the children are in day care.
But there is another school of thought that maintains that babies should sleep in the same bed as their parents (an idea shared by about three quarters of the world's population). The rationale is that human evolution simply can't keep pace with the new demands our culture is placing on its children. "Proximity to parental sounds, smells, heat, and movement during the night is precisely what the human infant's immature system expects-and needs," says James McKenna, an anthropologist and sleep researcher.
So which approach is right? Well, given the wide divergence of expert opinions out there, it's a tough call-one you'll ultimately have to make on your own. My older daughter slept in a bassinet in our room for a month or so until we moved her into her own room. Our younger daughter, however, slept in bed with us for six months before moving to her own room. Neither of them had any trouble making the transition, or had any unusual sleep problems afterwards.
What about safety? Most adults-even while asleep-have a highly developed sense of where they are. After all, when was the last time you fell out of bed? So the risk of accidentally suffocating your baby is pretty slim.
How will the baby sleep? Despite what you might think, co-sleeping children tend to sleep more lightly than children who sleep alone (blankets rustling and parents turning over in bed wake them up). But light sleeping isn't necessarily a bad thing. In fact, there seems to be a correlation between lighter sleep and a lower incidence of SIDS (Sudden Infant Death Syndrome).
Sharing a bed with your infant not only affects your child, but it can also have a serious impact on you. You'll lose a lot of sexual spontaneity, and you may also lose some sleep. Even the soundest-sleeping kids generally wake up every three or four hours; 70 percent of them just look around for a few minutes and soothe themselves back to sleep. But if your baby is in the other 30 percent, he or she may wake up, see you, and want to play.
If you decide to share your bed with your child, do it because you and your partner want to, not because you feel you have to. You're not negligent or overindulgent parents for doing it, so don't be embarrassed by your choice. But remember: no waterbeds-a baby could roll between you and the mattress. Also, overly soft mattresses and pillows may pose a risk of suffocation.
If you decide that family sleeping isn't for you, don't feel guilty. You're not a bad or selfish parent for not wanting to do it. Teaching your children to be independent does not mean that you don't have a close bond with them. But don't feel like a failure if you allow an occasional exception, such as when a child is ill or has had a frightening experience.


text:
MP Bradford and MP Chagger announce supports for Canadian startups
Federal government doubles down on Canadian startups by investing $90M in intellectual property (IP) programs to help them grow and succe
KITCHENER, ONT., December 19, 2022 — Federal government doubles down on Canadian startups by investing $90M in intellectual property (IP) programs to help them grow and succeed.
Today, MP Bradford and MP Chagger announced approximately $38 million in funding for Communitech to help deliver the ElevateIP program. Budget 2021 announced the launch of ElevateIP, with a $90M investment over four years to help Business Accelerators and Incubators (BAIs) provide startups with access to professional intellectual property (IP) supports. ElevateIP leverages business networks across the country to enable Canadian startups to protect, strategically manage, and leverage their IP.
Following a nation-wide competitive call for proposals, the following five delivery partners have been selected to accelerate IP support for startups across Canada:
Springboard Atlantic Inc. – Supporting startups in Newfoundland, Nova Scotia, New Brunswick and Prince Edward Island
Mouvement des accélérateurs d'innovation du Québec (MAIN) – Supporting startups in Quebec
Communitech Corporation – Supporting startups in Ontario, Manitoba and Saskatchewan
The Governors of the University of Calgary, in support of Innovate Calgary & Lethbridge Economic Development – Supporting startups in Alberta
New Ventures BC Society – Supporting startups in British Columbia, Yukon, Nunavut and the Northwest Territories
ElevateIP will enable Canadian startups to better develop IP strategies and increase education and awareness of the critical nature of IP in the Canadian innovation ecosystem.
"Canadian startups are some of the most innovative and inventive in the world. That's why our government is committed to supporting them so they can better protect and manage their IP. Through this investment, we are enabling startups to better develop IP strategies for long-term growth. We will continue to do everything we can to see Canadian businesses succeed both at home and around the world."
– The Honourable François-Philippe Champagne, Minister of Innovation, Science and Industry
"Encouraging and protecting made-in-Canada IP is critically important for the prosperity of the entire country. Communitech has the experience and talent to play a lead role in helping the government execute its IP strategy. We are deeply grateful to Minister Champagne for providing the resources through Elevate IP necessary to help founders make the most of their IP assets and retain the benefits of Canadian innovation in Canada."
-Chris Albinson, President and CEO, Communitech
In Budget 2021, the government announced $90 million over 4 years starting in 2022-2023 to create ElevateIP.
This program will help Business Accelerators and Incubators (BAIs) provide the tools Canadian startups need to protect, strategically manage and leverage their IP.
To assist companies understand, protect and access IP, Innovation, Science and Economic Development Canada (ISED) launched a comprehensive National Intellectual Property Strategy intended to help businesses protect and capitalize on their IP through education and awareness initiatives, development of new IP tools, and legislative reform.
ElevateIP's nation-wide call for proposals closed June 28, 2022.
Communitech
ElevateIP (canada.ca)
Canada's Intellectual Property Strategy
Laurie Bouchard
Senior Manager, Communications
Office of the Minister of Innovation, Science and Industry
laurie.bouchard@ised-isde.gc.ca
Pratt Sureka (he/him)
Director, Public Affairs and Policy
prateek.sureka@communitech.ca


If you love travel independently, we offer your customized private tour.
other extras you may need.
introducing oversea travelers to Kyushu.
China, Finland and South Africa.
welcome you at the airport or designated place, and have a belief meeting before starting the tour.
areas of Kyushu as a tour guide and tour conductor.
Industrial field including Environment and Recycling & Waste treatment.


Welcome to our World of Warcraft encounter guide for Sisters of the Moon in Tomb of Sargeras. We will teach you everything you need to know to defeat the boss in every difficulty.
The other pages of our Sisters of the Moon guide can be accessed from the table of contents on the right.
The Sisters of the Moon are the fourth boss in the Tomb of Sargeras.
The fight against the Sisters of the Moon is a three phase encounter, with a different sister being the active boss in each phase. The other two sisters will be unassailable during this time but will still perform mechanics to watch out for. The Sisters of the Moon do share a health pool, however, and they will all go down together. The raid begins against Huntress Kasparian, who engages the raid until 70% health. Captain Yathae Moonstrike will then take over along with her ally Moontalon. Finally, at 40% health, Priestess Lunaspyre will battle the raid until the end.
Here is a preview of the LFR difficulty from the PTR.
When Huntress Kasparian is active, ensure Moon Glaive hits the maximum number of targets and clear the Discorporate debuff by triggering Astral Purge.
Pick up and tank Moontalon when it spawns while Captain Yathae Moonstrike is active.
When Priestess Lunaspyre is active, perform a taunt swap when you reach 5+ stacks of Lunar Fire.
Pay careful attention to the raid's health when Incorporeal Shot is happening.
Coordinate throughput healing cooldowns for Embrace of the Eclipse.
When Moontalon begins to spam Deathly Screech be ready to spam the tank and melee stack with healing.
Glaive Storm and Spectral Glaive can quickly chunk the raid and will require quick surgical healing.
Focus down Moontalon and quickly finish it when it falls below 25% to minimize damage from Deathly Screech.
Do as much damage as possible to the shielded target during Embrace of the Eclipse.
Trigger Astral Purge if your Umbra Suffusion or Lunar Suffusion stacks get too high, or you are targeted by a mechanic that deals damage matching your current suffusion.
Stand in line with the player targeted by Incorporeal Shot to split the damage.
Avoid any incidental damage from Twilight Glaive and Glaive Storm.
Trigger Astral Purge to clear Moon Burn.
Avoid the barrage triggered at the end of Lunar Beacon.
Positioning during this encounter is very flexible, as it is largely a personal responsibility encounter fixated on avoiding projectile based mechanics. During Incorporeal Shot the raid will want to stack as many members as possible in the line to split the damage. Otherwise, a clean spread throughout the room is most ideal to ensure minimal movement from projectiles targeting individuals.
We advise you to use Bloodlust/ Heroism/ Time Warp when Priestess Lunaspyre becomes active. This is the longest and most difficult phase of the fight and Bloodlust is very benefical to both damage and healing in this phase. This is not set in stone, however, and it can be used in whatever phase the group is struggling with the most. Using it on the pull is best for damage efficiency, and using it in the second phase can be helpful in eliminating Moontalon quickly.
09 Jul. 2017 (mythic page): Mythic page added.
27 May 2017 (abilities page): Guide added.
27 May 2017 (this page): Guide added.


text:
package com.blacklocus.jres.request.alias;

import com.blacklocus.jres.request.JresJsonRequest;
import com.blacklocus.jres.response.common.JresAcknowledgedReply;
import com.blacklocus.jres.response.common.JresErrorReplyException;
import com.blacklocus.jres.strings.JresPaths;
import org.apache.http.client.methods.HttpDelete;

/**
 * Delete Single Index Alias API
 *

 * This command will return successful even if the alias didn't exist. The index must still exist.
 *

 * Can throw {@link JresErrorReplyException}.
 */
public class JresDeleteAlias extends JresJsonRequest<JresAcknowledgedReply> {

    private final String index;
    private final String alias;

    /**
     * @param index the actual index
     * @param alias another name by which the actual index may be addressed
     */
    public JresDeleteAlias(String index, String alias) {
        super(JresAcknowledgedReply.class);
        this.index = index;
        this.alias = alias;
    }

    @Override
    public String getHttpMethod() {
        return HttpDelete.METHOD_NAME;
    }

    @Override
    public String getPath() {
        return JresPaths.slashedPath(index) + "_alias/" + alias;
    }

    @Override
    public Object getPayload() {
        return null;
    }

}


text:
Hostname: page-component-7ccbd9845f-s2vjv Total loading time: 0.465 Render date: 2023-01-27T09:32:17.588Z Has data issue: true Feature Flags: { "useRatesEcommerce": false } hasContentIssue true
>ESAIM: Mathematical Modelling and Numerical Analysis
>Volume 48 Issue 2: Multiscale problems and techniq...
>Sweeping preconditioners for elastic wave propagation...
ESAIM: Mathematical Modelling and Numerical Analysis
Sweeping preconditioners for elastic wave propagation with spectral element methods
Published online by Cambridge University Press: 20 February 2014
Paul Tsuji ,
Jack Poulson ,
Björn Engquist and
Lexing Ying
Paul Tsuji
Sandia National Laboratories, Org. 1442: Numerical Analysis and Applications, Livermore, CA 94550, USA.
Jack Poulson
Georgia Institute of Technology, School of Computational Science and Engineering, Atlanta, GA 30332, USA.
University of Texas at Austin, Department of Mathematics, Austin, TX 78712, USA.
Stanford University, Department of Mathematics, Stanford, CA 94305, USA.. lexing@math.stanford.edu
We present a parallel preconditioning method for the iterative solution of the time-harmonic elastic wave equation which makes use of higher-order spectral elements to reduce pollution error. In particular, the method leverages perfectly matched layer boundary conditions to efficiently approximate the Schur complement matrices of a block LDLT factorization. Both sequential and parallel versions of the algorithm are discussed and results for large-scale problems from exploration geophysics are presented.
Elastic waveseismic wavetime-harmonicfrequency domainspectral elementsparallel preconditioneriterative solversparse-directperfectly matched layersfull waveform inversion
ESAIM: Mathematical Modelling and Numerical Analysis , Volume 48 , Issue 2: Multiscale problems and techniques , March 2014 , pp. 433 - 447
DOI: https://doi.org/10.1051/m2an/2013114[Opens in a new window]
© EDP Sciences, SMAI, 2014
F. Aminzadeh, J. Brac and T. Kunz, 3-D Salt and Overthrust models. In SEG/EAGE 3-D Modeling Series 1. Tulsa, OK (1997).
Berenger, J.P., A perfectly matched layer for the absorption of electromagnetic waves. J. Comput. Phys. 114 (1994) 185–200. Google Scholar
Bramble, J. and Pasciak, J., A note on the existence and uniqueness of solutions of frequency domain elastic wave problems: a priori estimates in H 1. J. Math Anal. Appl. 345 (2008) 396–404. Google Scholar
Chew, W.C. and Weedon, W.H., A 3D perfectly matched medium from modified Maxwell's equations with stretched coordinates. Microwave Optical Tech. Lett. 7 (1994) 599–604. Google Scholar
J. Choi, J.J. Dongarra, R. Pozo and D.W. Walker, ScaLAPACK: A scalable linear algebra library for distributed memory concurrent computers, in Proc. of the Fourth Symposium on the Frontiers of Massively Parallel Computation, IEEE Comput. Soc. Press(1992) 120–127.
Engquist, B. and Ying, L., Sweeping preconditioner for the Helmholtz equation: hierarchical matrix representation. Commun. Pure Appl. Math. 64 (2011) 697–735. Google Scholar
Engquist, B. and Ying, L., Sweeping preconditioner for the Helmholtz equation: moving perfectly matched layers. Multiscale Model. Simul. 9 (2011) 686–710. Google Scholar
Erlangga, Y.A., Vuik, C. and Oosterlee, C.W., On a class of preconditioners for solving the Helmholtz equation. Appl. Numer. Math. 50 (2004) 409–425. Google Scholar
O.G. Ernst and M.J. Gander, Why it is difficult to solve Helmholtz problems with classical iterative methods, in vol. 83 of Numerical Analysis of Multiscale Problems. Edited by I. Graham, T. Hou, O. Lakkis and R. Scheichl. Springer-Verlag (2011) 325–361.
Grasedyck, L. and Hackbusch, W., Construction and arithmetics of ℋ-matrices. Computing 70 (2003) 295–334. Google Scholar
Gupta, A., Karypis, G. and Kumar, V., A highly scalable parallel algorithm for sparse matrix factorization. IEEE Transactions on Parallel and Distributed Systems 8 (1997) 502–520. Google Scholar
A. Gupta, S. Koric and T. George, Sparse matrix factorization on massively parallel computers, in Proc. of the Conference on High Performance Computing, Networking, Storage and Analysis. Portland, OR (2009).
Harari, I. and Albocher, U., Studies of FE/PML for exterior problems of time-harmonic elastic waves. Comput. Methods Appl. Mech. Eng. 195 (2006) 3854–3879. Google Scholar
T. Hughes, The finite element method: linear static and dynamic finite element analysis. Prentice-Hall, Inc. (1987).
G. Karniadakis, Spectral/hp element methods for CFD. Oxford University Press (1999).
Komatitsch, D. and Tromp, J., Introduction to the spectral element method for three-dimensional seismic wave propagation. Geophys. J. Int. 139 (1999) 806–822. Google Scholar
Liu, J.. The multifrontal method for sparse matrix solution: theory and practice. SIAM Review 34 (1992) 82–109. Google Scholar
Patera, A., A spectral element method for fluid dynamics: laminar flow in a channel expansion. J. Comput. Phys. 54 (1984) 468–488. Google Scholar
J. Poulson, B. Engquist, S. Li and L. Ying, A parallel sweeping preconditioner for heterogeneous 3D Helmholtz equations e-prints ArXiv (2012).
Poulson, J., Marker, B., van de Geijn, R.A., Hammond, J.R. and Romero, N.A., Elemental: A new framework for distributed memory dense matrix computations. ACM Trans. Math. Software 39.
Raghavan, P., Efficient parallel sparse triangular solution with selective inversion. Parallel Proc. Lett. 8 (1998) 29–40. Google Scholar
Saad, Y. and Schultz, M.H., A generalized minimum residual algorithm for solving nonsymmetric linear systems. SIAM J. Sci. Stat. Comput. 7 (1986) 856–869. Google Scholar
Schreiber, R., A new implementation of sparse Gaussian elimination. ACM Trans. Math. Software 8 (1982) 256–276. Google Scholar
Tsuji, P., Engquist, B. and Ying, L., A sweeping preconditioner for time-harmonic Maxwell's equations with finite elements. J. Comput. Phys. 231 (2012) 3770–3783. Google Scholar
Tsuji, P. and Ying, L., A sweeping preconditioner for Yee's finite difference approximation of time-harmonic Maxwell's equations. Frontiers of Mathematics in China 7 (2012) 347–363. Google Scholar
Paul Tsuji (a1), Jack Poulson (a2), Björn Engquist (a3) and Lexing Ying (a4)
DOI: https://doi.org/10.1051/m2an/2013114


There are many Lake Tahoe attractions to explore all year long. We have compiled some popular activities here to make a Lake Tahoe vacation guide, and these are just a few ideas that might be fun for you and your family. Take some time to really check out this information, as you will find it very extensive. Also included is some general information for your reference.
Enjoy this quick Lake Tahoe vacation guide, and we hope you use it time and time again in the future!
Have a great time while visiting our beautiful Lake Tahoe!
After visiting Lake Tahoe attractions, get back home safely.
Whether you are looking to see art at the local community college or at a village center, you will see some unique works at these art galleries.
Ride through paradise and get muddy with friends and family.
Cool water and warm sunny days. Bring that sunscreen, we are closer to the sun up here in these mountains!
Bring in the cooler seasons with carriage and sleigh rides through picturesque scenery.
Try your luck at the Lake Tahoe casinos. Also includes wonderful dining and entertainment options!
There are many dining options in the South Lake Tahoe area beyond this favorites list. For your enjoyment we have listed some well rounded choices.
When emergency strikes, be prepared with a list of resources.
Enjoy the finest in plays and musicals. No matter the genre, Lake Tahoe has plays of all kinds!
You can`t leave Lake Tahoe without catching that Mackinaw or learning the art and science of fly fishing. Did I hear Golden Trout?
Lake Tahoe and the Carson Valley offer world class golf. Not to worry any time of the day with our great weather enables you to pick your tee time.
Get a good perspective on how it was like when the pioneers first saw Lake Tahoe. Horseback riding is a great way to embrace the environment and enjoy the history of the area along with our clean air and great vistas.
Because Lake Tahoe is considered the Jewel of the Sierra, we treasure its beauty and preserve as much space for the public. Each of these parks are special and unique.
The Lake Tahoe Basin offers a variety of rock climbing experiences that range from mild to moderate to extreme. You can climb the multi-pitch classics on clean granite and you can test your strength and endurance working out on sport routes. There is lots of great rock climbing opportunities just minutes from South Lake Tahoe. Experienced climbers may want to visit one of several local sport shops to get detailed information about climbing routes. Beginners will be able to more quickly build their skills and confidence by following the lead of an experienced climbing guide on their first few outings.
Tahoe is home to any kind of snow sport available. Enjoy Alpine skiing and boarding, Nordic or Cross Country skiing, Skijouring, sledding, ice skating and snowmobiling.
Try infamous California wines and more from this list of vintners and wineries.


text:
Commercial Representation
Hiring & PEO
From Startups to Movers and Shakers: New Zealand Business Successes
by Legal Team New Zealand | Sep 9, 2019
New Zealand's business climate brings about the ideal conditions for commercial success. The South Pacific island nation houses a productive, motivated workforce, easy market access and a pro-investment government declared by Prime Minister Jacinda Ardern as "open for business."
New Zealand outshines many others in the region with its robust economy, dynamic set of economic strengths, repeated demonstration of leading innovative thought, and global connections.
Its multicultural, 'melting pot' demographics, reputable universities and innovative cities support progress driven by diverse values and perspectives. We explore some of New Zealand's longstanding and emerging business successes to come out of its vibrant business environment.
Startups in New Zealand – Economy Overview
Insulated from the 2008 global financial crisis, this self-sufficient economy sports ongoing positive growth. For the year ended March 2019, GDP showed a 2.7% increase, driven by goods-producing industries.
As number one in the world for ease of doing business, it's no surprise the country is also nurturing a growing startup ecosystem. Some companies emerging from the South Pacific country's commercial environment have experienced significant success in their field, setting good examples for those who follow.
Kiwi influencers
Rocket Lab was founded in Auckland, New Zealand in 2006 by Peter Beck. He received seed investment from a fellow New Zealand entrepreneur, Mark Rocket. Rocket Lab was established as a small satellite launch company, working as a provider to service micro space launches. The business' objective was to achieve 'high-frequency, low-cost launches.'
The company was reportedly the first in the private sector in the Southern Hemisphere to access space, doing so with its Ātea suborbital sounding rocket in 2009. This rocket weighed only 60 kilograms and was successfully launched in 30 November.
Rocket Lab was reportedly the first in the private sector in the Southern Hemisphere to access space, doing so with its Ātea suborbital sounding rocket in 2009.
Since its beginnings, Rocket Lab has evolved into a billion-dollar business, drawing in around 270 inspired staff members. Its goal to democratise space has attracted investors such as Data Collective, Lockheed Martin, Bessemer Ventures, and Khosla Ventures. Rocket Lab has played a vital role in disrupting the space industry, and continues to do so with initiatives such as developing reusable rocket parts.
Robotics Plus
According to the Robotics Plus story, the forward-thinking Tauranga agritech company emerged to address "growing challenges in the primary industry globally such as: labour shortages, sustainability for growers, pollination gaps and yield security."
Robotics Plus was established as a startup by founders Steve Saunders and Alistair Scarfe. The startup aimed to develop automation, robotics, mechanisation and sensor-based technologies to optimise New Zealand's primary industries. With an economy heavily reliant on agricultural outputs, the country is well-primed for technological disruption to improve yields and sustainable management.
Leading products to come out of Robotics Plus include a kiwifruit robotic arm that can skilfully sense and pick the soft fruits from the vine. Global Pac Technologies have struck a deal with the Kiwi innovator to distribute its similarly-designed apple packers worldwide.
Now this company has seized global attention, major investments are rolling in. Japanese giant Yamaha has invested around US$10 million into Robotics Plus to develop their next leading inventions: an Unmanned Ground Vehicle (UGV) and yet-undisclosed forestry project.
Abel Software
Abel software sprouted up in the New Zealand market in 1996 with an aim to deliver state-of-the-art business management systems to small- and medium-sized companies. Based in Auckland, this small business garnered international attention through one of its clients, New Zealand Towel Supply, in 2002. Their client base now stretches over marine, manufacturing, engineering, financial service, food production, furniture, wholesale, distribution, and apparel sectors.
World-class Enterprise Resource Planning tools, used effectively by larger companies, was made accessible to smaller businesses, and Abel's popularity continues to grow among big and small commercial actors. Founder and Managing Director Allan Baird is now driving the internationally renowned business towards reaching a value of NZ$500 million within the next 35-40 years.
In a short space of time, ethical fashion label Deadly Ponies has partnered with nearly 40 global stockists from all over the world, plus another 29 all over New Zealand.
New Zealand Designer Liam Bowden founded leather accessory label Deadly Ponies in 2005. In a short space of time, this ethical fashion label has collected an enviable set of global stockists from all over the world. Its flagship Auckland and Wellington stores reach to two of the country's biggest cities, and the brand's signature leather handbags now command up to NZ$1200 each.
Deadly Ponies focusses on small-scale production of the highest quality, building a fanbase for its careful craftsmanship. Nearly 40 retail stores across Australia, Malaysia and the United Kingdom stock these covetable accessories, as well as an additional 29 stores in New Zealand.
Being a highly responsive market for new business, New Zealand is ready to welcome startups into the fold. Market experts have identified that New Zealand's startup ecosystem is still relatively young, especially when compared to some elements of environments in Australia's startup scene.
However, the South Pacific island nation ranks 15 in the world for its startup Output Growth Index, which measures the growth of these businesses' outputs. Additionally, it places 19 in the world for Early-Stage Funding per Startup.
These are good indicators of what's to come: though still in its infancy, startup conditions are clearly favourable in the crucial initial phases of business development. And thanks to New Zealand's extensive global connections, the country places second in the world for its market reach to customers in other regions.
Moving into New Zealand's active startup scene empowers entrepreneurs and business to stake their claim in their market of choice, and join ranks with the country's major international startup successes. Getting started now gives those early-movers the opportunity to shape and develop the startup environment and key connectivity pipelines to international partners.
Find your niche in New Zealand
New Zealand sets the stage for startup success, fostering powerful international connections and spearheading innovation in key sectors.
If you're looking to expand or startup in the New Zealand market, we recommend you seek guidance during the process.
At Biz Latin Hub, we expect a bright future ahead for the country's startups – particularly in technological innovation. We aim to help businesses get where they need to be and stay compliant the whole way there. Our market entry and back-office services are customizable to suit your specific needs.
The country is open for those investors and entrepreneurs on the lookout for new opportunities, and now is the right time to get started.
Reach out to our team of experts today via email at [email protected] for personalized support on your journey.
Receive the latest news and advice about expanding your business globally.
Subscribe to our newsletter to receive the latest business news and advice about entity formation, legal entity compliance, accounting, back office and fiscal requirements.
Marketing permission: By submitting this form, I give my consent for Biz Latin Hub to be in contact with me via email using the information that I have provided in this form and for the purpose of providing me updates about doing business, entity formation, legal entity compliance, accounting, back office services, PEO and/or for marketing purposes.
What to expect: If you wish to withdraw your consent and stop hearing from us, please simply click the unsubscribe link at the bottom of any email that we send or contact us at [email protected]. We value and respect your personal data and will do the utmost to protect it. To view our privacy policy, please visit the Biz Latin Hub website. By submitting this form, you agree that we may process and use your information in accordance with the stated terms and conditions.
Industry Expert Q&A
Copyright 2020, Biz Latin Hub Group
Share this post with a friend or colleague!
This site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies. I agreeRead more


Pleasure to pain. Hero to zero. Great to awful.
Pick your set of antonyms. Any number of them describe the paradox that is A.J. Feeley.
One moment, visions of dominance. The next, disaster.
So what did the Dolphins get for their second round draft pick? Did they get a guy who is still learning to play the pro game, a raw talent that will mature into a force? Or, did they get a guy who just flat out can't play, a bust?
It has been very tough for team insiders to evaluate Feeley objectively. After all, he is trying to learn behind a lousy offensive line and is without the support of a meaningful running game. It can't be helpful that the offensive coaching staff isn't exactly working in harmony.
Not exactly a quality learning environment!
First and foremost, recognize that we must lump Feeley in with the other league rookies who are playing, guys like Ben Roethlisberger and Eli Manning.
The reason is simple. While Feeley has been in the league longer than a true rookie and has prior NFL game experience, he has actually played less football than guys like Roethlisberger and Manning have since high school.
Now, when evaluating a quarterback, there are two things that must be scrutinized: the mental and the physical.
Physically, Feeley has erased any doubts or questions about his ability. The guy has a quality NFL arm with the quickest release we've seen in these parts since a guy named Marino used to toss it. He can make any throw and, what's more, he can make the difficult throws that few other NFL quarterbacks can.
Case in point: the 15 yard TD pass he threw to Randy McMichael on third down and 15 against the 49ers. That was one of the best passes you'll ever see, a decisive and highly accurate laser shot through two defenders with no room to spare. Money!
While Feeley does not have the mobility of a Jay Fiedler, he has shown that he is mobile enough to evade the rush and gain yards. Witness his 7 yard sneak for a TD against the Seahawks, a tough play for any QB to make inside the red zone against a good defense.
From a toughness perspective, can there be any doubt that Feeley is up to the task?
Example: In the first quarter against the 49ers, Feeley gets the middle finger on his throwing hand bent out of joint. A troop of trainers hold him while one jerks the thing back into it's place, a gruesome sight for sure. Not be deterred, Feeley trots back out onto the field on the very next play, and fires a 25 yard TD pass to Chris Chambers.
You think that sent a message to his teammates, the coaches, and the fans?
You bet it did. With an exclamation point.
Mentally, the story is quite different for Feeley. Truly, he is the classic example of a guy who hasn't played a lot of football. One wonders if he is really ready to sit in the big chair.
Perhaps it is Feeley's competitive spirit, his desire to prove to everyone that he was worth trading for. Or, perhaps it is the desperation every Dolphin feels to get a win. But you get the feeling that many of Feeley's mistakes could have been avoided by him not pressing or forcing as much.
Then again, Mike Holmgren had to practically beg a young Matt Hasselbeck to make mistakes so that he would learn.
The rest of Feeley's situation is academic. Defensive coordinators know all about Feeley's novice condition and, as expected, are doing what they must to give the young student more to think about than he is ready for in terms of disguised coverages and blitz packages.
Understandably, Feeley has been surprised and astonished many times with the outcomes from decisions he has made.
Field maturity in a QB is knowing what to do and when to do it. Perhaps no other quality makes or breaks a QB more. This is what the Dolphins mean when they talk about Feeley's learning process. This is where the jury is truly out on Feeley. Does he have the mental acumen to win in the NFL?
Other mental attributes include things like leadership and huddle presence. Feeley seems to have these qualities. Like the great ones, he will not hesitate to hold his teammates (and himself) accountable.
I won't get into Feeley's stats here because, quite frankly, they are not important. What is important is that the Dolphins see as much of him as they can so that they can determine whether or not the guy is a keeper.
At the end of the season, the Dolphin brain trust will have an important decision to make. They'll have to judge whether or not Feeley will mature into what they need in a championship-caliber quarterback.
Right now, the returns are mixed. Lets see how the final four games turn out before we decide.


text:
Nvidia reports $2.58 billion in Q2 revenue as AI and graphics demand strengthens
Dean Takahashi@deantak	 August 15, 2019 1:41 PM
Jensen Huang shows off the Nvidia GeForce RTX 2080 Ti.
Image Credit: Nvidia
Nvidia reported earnings and revenues that beat analysts' expectations as demand for graphics and artificial intelligence chips picked up in the second fiscal quarter.
Nvidia reported revenues of $2.58 billion, down from $3.12 billion a year ago, for the second fiscal quarter, which ended July 31. Non-GAAP earnings per share were $1.24, compared with $1.94 a share a year ago. In after-hours trading, Nvidia's stock was up 5% to $159 a share.
Analysts expected Nvidia to post revenues of $2.55 billion in the second quarter. The company was expected to report non-GAAP earnings per share of $1.15, down 40% from a year ago.
"We achieved sequential growth across our platforms," said Jensen Huang, Nvidia CEO, in a statement. "Real-time ray tracing is the most important graphics innovation in a decade. Adoption has reached a tipping point, with Nvidia RTX leading the way. Nvidia accelerated computing momentum continues to build as the industry races to enable the next frontier in artificial intelligence, conversational AI, as well as autonomous systems like self-driving vehicles and delivery robots."
Above: Nvidia's version of the moon landing.
For the past few quarters, Nvidia has had some lumpy results. Last quarter, Huang said that a slowdown in datacenter chip sales hurt revenues. Before that, it was slow adoption of its RTX architecture for graphics processing units (GPUs). RTX enables real-time ray tracing, but it has taken some time for game developers to implement it and for gamers to appreciate it. Nvidia also had some bumps related to a positive benefit from the growth of GPU use for cryptocurrency mining and then a negative impact when that bubble collapsed.
Nvidia said it expects its acquisition of Mellanox Technologies to close later this year, and the regulatory process is progressing as expected. For the third fiscal quarter, Nvidia expects $2.9 billion in revenues, plus or minus 2%, and non-GAAP gross profit margins of 62.5%.
During the quarter, Nvidia beefed up its GPU lineup with GeForce RTX 2060 Super, GeForce RTX 2070 Super, and GeForce RTX 2080 Super products. New support for real-time ray tracing is coming in with support announced for Call of Duty: Modern Warfare, Cyberpunk 2077, Watch Dogs: Legion, and Wolfenstein: Youngblood.
Meanwhile, laptop makers announced 27 new RTX Studio laptops during the quarter.
Above: Nvidia CEO Jensen Huang and Lars Stenqvist, Volvo Group chief technology officer.
The results were weaker than the second fiscal quarter a year ago, but they bounced back from a weak first fiscal quarter.
GPU business revenue was $2.10 billion, down 21% from a year earlier and up 4% sequentially. Tegra processor business revenue — which includes automotive, SOC modules for gaming platforms, and embedded edge AI platforms — was $475 million, up 2% from a year ago and up 140% sequentially.
From a market-platforms perspective, Gaming revenue was $1.31 billion, down 27% from a year ago and up 24% sequentially. The year-on-year decrease reflects a decline in shipments of gaming desktop GPUs and SOC modules for gaming platforms, partially offset by growth in gaming notebook GPUs.
The sequential increase reflects growth from SOC modules for gaming platforms, gaming notebook GPUs, and GeForce RTX Super gaming GPUs.
Professional visualization revenue was $291 million, up 4% from a year earlier and up 9% sequentially. The year-on-year and sequential growth reflects strength across mobile workstation products.
Data Center revenue was $655 million, down 14% from a year ago and up 3% sequentially. The year-on-year decline reflects lower hyperscale revenue. The sequential increase was due to enterprise revenue growth driven by expanding AI workloads.
Automotive revenue was a record $209 million, up 30% from a year earlier and up 26% sequentially. The year-on-year and sequential growth was primarily driven by a development services agreement in the second quarter of fiscal 2020. The growth in revenue also reflected AI cockpit solutions and other autonomous vehicle development agreements.
OEM and other revenue was $111 million, down 4% from a year ago and up 12% sequentially. The sequential increase was primarily due to growth in shipments of embedded edge AI products.