text:
Daily Edit
NUVO Magazine
Preview Subscribe
The warm days and cool nights of the growing season along the Loire give the wines—reds, rosés, and whites—lively natural acidity and low levels of alcohol. Photo by Marc Jauneaud.
Photo by Louis-Marie Blanchard.
Photo by Stevens Frémont.
Photo by Patrick Touchais.
Into the Loire Valley
Still and sparkling; white, red, and rosé; dry and sweet.
Writer Rod Phillips
View Entire Article
Think of French wine regions, and the Loire Valley is not one that is top of mind. Champagne is a household name (though more as a wine than a region), Bordeaux and Bourgogne are familiar to most wine-consuming people, with the Rhone valley, while trailing in recognition, is known to many. But the Loire Valley? As a region, it's little known, even though some of its wines are often highly prized by wine enthusiasts.
Perhaps that's the reason for the low profile of the Loire Valley: while some of its component appellations are well enough known, they're not identified as belonging to the broader Loire region, in the same way that Pomerol is known to be in Bordeaux and Meursault in Bourgogne. Indeed, a map of the Loire Valley region shows appellations—there are almost 80 in all, many very small and known only to serious wine geeks—strung out along the banks of the Loire. The river is France's longest, rising in the south of the country and running north before turning west and finally draining into the Atlantic. It's a tour de force, covering a distance of one thousand kilometres.
The Loire Valley wine region includes about half of that, the west-flowing section where the river is broad and lazy, and the wide valley provides the warmth that makes this northern region suitable for growing grapes. Location places its stamp on the wines here. The Loire marks the northern limit for commercial wine production in France, and grapes don't ripen as readily as they do only short distances farther south. But the warm days and cool nights of the growing season along the Loire give the wines—reds, rosés, and whites—lively natural acidity and low levels of alcohol, both characteristics that make them not only suitable for the Loire's regional cuisines, but versatile with many others, as well.
This is clear with Muscadet, the white wine produced at the Atlantic end of the valley, where many dishes are based on the catch from the ocean and the river. Made from the melon de Bourgogne grape variety, Muscadet is France's go-to wine for fish and seafood; you'd be hard-pressed, anywhere in France, to find a bistro serving fruits de mer that doesn't have a Muscadet or two on its list. Muscadet is often made in a fairly neutral style that sometimes comes across as bland, but generally delivers the right intensity of flavour and the vibrant acidity to pair with seafood and its customary squeeze of lemon. A variation is sur lie Muscadet, where the wine rests on its lees (yeast cells) for a year or more and takes on some more complexity in flavour and texture while retaining its essential vibrancy.+
The diversity of Loire wines extends beyond grape varieties to wine styles. What unites them is simple drinkability—the hallmark of Loire Valley wines.
In the last decade, some producers have moved from these bright and crisp styles—made in stainless steel tanks or, more traditionally, in glass or ceramic—and have started to age their Muscadets in oak barrels. The result is even more depth and complexity, and some aged Muscadets—six or seven years old—carry themselves very well. But aging relatively neutral wine in oak calls for a deft hand. Gilbert Chon, owner of Château de la Jousselinière, says he used to age all his Muscadet in oak, but it proved "too strong for the wine." He dialed it back so that only part of it ages in older barrels, and he is happier with the result, where the influence of the oak is "discreet, a little line" in the flavours.
Going inland from the Muscadet appellations (following the Loire against its current), dozens of small appellations grow a rich portfolio of grape varieties. They include whites like chenin blanc, chardonnay, and sauvignon blanc, and reds like cabernet franc, gamay, and pinot noir. And the diversity of Loire wines extends beyond grape varieties to wine styles: there are not only whites, reds, and rosés, but lively sparkling wines and luscious sweet wines, with the sugar reined in by clean acidity. What unites them in their diversity is simple drinkability, the hallmark of Loire Valley wines.
Chenin blanc is the key white grape in many of these appellations, and it's used for dry, off-dry, and sweeter whites, as well as for a sparkling wine, crémant de Loire, where it is sometimes blended with a little chardonnay or cabernet franc. All these styles are made in the Vouvray appellation, where Marc Brédif is one of the best-known producers. Marc Brédif's Brut Extrême, a sparkling wine made solely from chenin blanc, has no added dosage and is a flavour-rich, tight wine, with real finesse; the Réserve Privée chenin blanc is a substantial white that shows focused flavours and a texture that's linear and taut but that's surprisingly easy to drink. (Decanting it is recommended.)
Outside the Muscadet region, chenin blanc shines. Not only in Vouvray, but in the tiny Savennières appellation, chenin blanc is transformed into long-aging, dry whites that are often too taut and serious when young, but grow into themselves over years and decades of aging. One of the key producers, Domaine des Baumard, makes many austere chenins, such as their Clos du Papillon, but also others, like Clos de Saint-Yves, that are more approachable when they are younger.
A map of the Loire Valley region shows appellations—there are almost 80 in all, many very small and known only to serious wine geeks—strung out along the banks of the Loire.
Then there are the red wines of the Loire. Cabernet franc is the key red, and it stands out in appellations such as Chinon, Bourgueil, and St-Nicolas-de-Bourgueil. Chinon's Charles Joguet has planted almost all his vineyards in cabernet franc and makes it in a number of styles. Charles Joguet Clos du Chêne Vert 2009 comes from old vines and is notable for its velvety texture, supple tannins, and juiciness, while his Cuvée de la Cure is bigger in texture and flavour, though still finely balanced.
Beyond cabernet franc, there are many excellent reds made from other varieties. The broad Touraine region grows gamay, cabernet franc, cabernet sauvignon, malbec (known as cot here), and pinot noir. Malbec is a surprising find, if you think of dark, full-bodied, higher-alcohol wines from Cahors and Argentina. But in the Loire Valley there are lighter styles, like Domaine de la Renaudie's Cuvée Albert Denis, a well-integrated and balanced malbec from the Touraine region. It boasts a mere 12 per cent alcohol. Then, of course, there are red blends. Also from Touraine, Domaine des Corbillières makes a bright and juicy red from more-or-less equal parts of malbec, cabernet franc, and pinot noir.
At the easternmost end of the Loire Valley vineyards lie the regions that are home to sauvignon blanc. Sancerre stands out—literally, as the town is perched on the top of a hill, surrounded by its vineyards—and others make fine sauvignon blancs that carry the names of their less-known appellations. The sauvignon blanc variety is now more associated with New Zealand because of its success in the Marlborough region there, but there's no confusing the rich and pungent Marlborough style with the often understated flavours of the highly structured Loire versions. One major Sancerre producer, Henri Bourgeois, has opened a winery in Marlborough, and so straddles the two worlds of sauvignon blanc.
The wines of the Loire Valley are so diverse in variety and style that the region is a microcosm of the cool-climate wine world.
Across the river from Sancerre, Pouilly-sur-Loire produces one of France's great wines, Pouilly-Fumé. Fumé refers to the smoke-coloured bloom that covers the sauvignon grapes, and the wines tend to be a little aromatic, with fairly taut structure and that bright acidity. These are wines that are very versatile, but it's probably no coincidence that they go well with goat cheese, as several localities in the region—notably Chavignol in Sancerre—are famous for their crottins, small rounds of pungent chèvre cheese.
The wines of the Loire Valley are so diverse in variety and style that the region is a microcosm of the cool-climate wine world. A sparkling wine as an aperitif, a white for a seafood appetizer, a red to go with many meat dishes, a sweet wine to finish up… the Loire delivers them all in a range of qualities, from entry-level to the sublimely iconic. These are wines that tempt you to pour another glass, unlike many of the fruit-filled heavy-hitters of warm-climate wine regions. With so many consumers and wine writers complaining about overextracted wines and rising alcohol levels, these wines ought to be far more popular than they are. It's a complicated region in many ways, but that makes it all the more exciting: there are hundreds of gems waiting to be discovered.
Originally published August 2015.
Subscribe to NUVO
Château de la Jousselinière
Into Wine
©2020 NUVO. Privacy Policy.


All My Children: Cameron Mathison in Cheer Ads!
Soaps.com has learned that Cameron Mathison (Ryan Lavery, All My Children) has booked another sort of soap gig – he's starring in a new ad campaign being launched to promote Cheer laundry detergent!
Proctor and Gamble has announced that the new ad campaign was inspired by Daytime drama, and will be called "Brighten Bay." It will feature storylines and webisodes set in the fictional Brighten Bay community, and surrounding Mathison's character, Dr. Dan, who is touted as 'the bright spot in a dirty world'.
Soaps.com readers anxious to get a glimpse of the new campaign can log on at Brighten Bay to follow the story and enter contests! Congrats to Cameron!
Let Soaps.com know what you think of Cameron's soapy new job in the comment section below!


text:
from ..cg.kdtree import KDTree
from .weights import W
from .util import isKDTree, get_ids, get_points_array_from_shapefile, get_points_array
import copy
from warnings import warn as Warn
import numpy as np

__all__ = ["KNN", "Kernel", "DistanceBand"]
__author__ = "Sergio J. Rey <srey@asu.edu>, Levi John Wolf <levi.john.wolf@gmail.com>"

import pysal
import scipy.spatial
from pysal.common import KDTree
from pysal.weights import W, WSP
from pysal.weights.util import WSP2W
import scipy.stats
from scipy.spatial import distance_matrix
import scipy.sparse as sp
import numpy as np
from util import isKDTree

def knnW(data, k=2, p=2, ids=None, radius=None, distance_metric='euclidean'):
    """
    This is deprecated. Use the pysal.weights.KNN class instead.
    """
    #Warn('This function is deprecated. Please use pysal.weights.KNN', UserWarning)
    return KNN(data, k=k, p=p, ids=ids, radius=radius,
            distance_metric=distance_metric)

class KNN(W):
    """
    Creates nearest neighbor weights matrix based on k nearest
    neighbors.

    Parameters
    ----------
    kdtree      : object
                  PySAL KDTree or ArcKDTree where KDtree.data is array (n,k)
                  n observations on k characteristics used to measure
                  distances between the n objects
    k           : int
                  number of nearest neighbors
    p           : float
                  Minkowski p-norm distance metric parameter:
                  1<=p<=infinity
                  2: Euclidean distance
                  1: Manhattan distance
                  Ignored if the KDTree is an ArcKDTree
    ids         : list
                  identifiers to attach to each observation

    Returns
    -------

    w         : W
                instance
                Weights object with binary weights

    Examples
    --------
    >>> points = [(10, 10), (20, 10), (40, 10), (15, 20), (30, 20), (30, 30)]
    >>> kd = pysal.cg.kdtree.KDTree(np.array(points))
    >>> wnn2 = pysal.KNN(kd, 2)
    >>> [1,3] == wnn2.neighbors[0]
    True

    ids

    >>> wnn2 = KNN(kd,2)
    >>> wnn2[0]
    {1: 1.0, 3: 1.0}
    >>> wnn2[1]
    {0: 1.0, 3: 1.0}

    now with 1 rather than 0 offset

    >>> wnn2 = KNN(kd, 2, ids=range(1,7))
    >>> wnn2[1]
    {2: 1.0, 4: 1.0}
    >>> wnn2[2]
    {1: 1.0, 4: 1.0}
    >>> 0 in wnn2.neighbors
    False

    Notes
    -----

    Ties between neighbors of equal distance are arbitrarily broken.

    See Also
    --------
    :class:`pysal.weights.W`
    """
    def __init__(self, data, k=2, p=2, ids=None, radius=None, distance_metric='euclidean'):
        if isKDTree(data):
            self.kdtree = data
            self.data = data.data
        else:
            self.data = data
            self.kdtree = KDTree(data, radius=radius, distance_metric=distance_metric)
        self.k = k
        self.p = p
        this_nnq = self.kdtree.query(self.data, k=k+1, p=p)

        to_weight = this_nnq[1]
        if ids is None:
            ids = list(range(to_weight.shape[0]))

        neighbors = {}
        for i,row in enumerate(to_weight):
            row = row.tolist()
            row.remove(i)
            row = [ids[j] for j in row]
            focal = ids[i]
            neighbors[focal] = row
        W.__init__(self, neighbors, id_order=ids)

    @classmethod
    def from_shapefile(cls, filepath, **kwargs):
        """
        Nearest neighbor weights from a shapefile.

        Parameters
        ----------

        data       : string
                     shapefile containing attribute data.
        k          : int
                     number of nearest neighbors
        p          : float
                     Minkowski p-norm distance metric parameter:
                     1<=p<=infinity
                     2: Euclidean distance
                     1: Manhattan distance
        ids        : list
                     identifiers to attach to each observation
        radius     : float
                     If supplied arc_distances will be calculated
                     based on the given radius. p will be ignored.

        Returns
        -------

        w         : KNN
                    instance; Weights object with binary weights.

        Examples
        --------

        Polygon shapefile

        >>> wc=knnW_from_shapefile(pysal.examples.get_path("columbus.shp"))
        >>> "%.4f"%wc.pct_nonzero
        '4.0816'
        >>> set([2,1]) == set(wc.neighbors[0])
        True
        >>> wc3=pysal.knnW_from_shapefile(pysal.examples.get_path("columbus.shp"),k=3)
        >>> set(wc3.neighbors[0]) == set([2,1,3])
        True
        >>> set(wc3.neighbors[2]) == set([4,3,0])
        True

        1 offset rather than 0 offset

        >>> wc3_1=knnW_from_shapefile(pysal.examples.get_path("columbus.shp"),k=3,idVariable="POLYID")
        >>> set([4,3,2]) == set(wc3_1.neighbors[1])
        True
        >>> wc3_1.weights[2]
        [1.0, 1.0, 1.0]
        >>> set([4,1,8]) == set(wc3_1.neighbors[2])
        True

        Point shapefile

        >>> w=knnW_from_shapefile(pysal.examples.get_path("juvenile.shp"))
        >>> w.pct_nonzero
        1.1904761904761905
        >>> w1=knnW_from_shapefile(pysal.examples.get_path("juvenile.shp"),k=1)
        >>> "%.3f"%w1.pct_nonzero

        Notes
        -----

        Ties between neighbors of equal distance are arbitrarily broken.

        See Also
        --------
        :class:`pysal.weights.KNN`
        :class:`pysal.weights.W`
        """
        return cls(get_points_array_from_shapefile(filepath), **kwargs)

    @classmethod
    def from_array(cls, array, **kwargs):
        """
        Creates nearest neighbor weights matrix based on k nearest
        neighbors.

        Parameters
        ----------
        array       : np.ndarray
                      (n, k) array representing n observations on
                      k characteristics used to measure distances
                      between the n objects
        **kwargs    : keyword arguments, see Rook

        Returns
        -------
        w         : W
                    instance
                    Weights object with binary weights

        Examples
        --------
        >>> points = [(10, 10), (20, 10), (40, 10), (15, 20), (30, 20), (30, 30)]
        >>> wnn2 = pysal.KNN.from_array(points, 2)
        >>> [1,3] == wnn2.neighbors[0]
        True

        ids

        >>> wnn2 = KNN.from_array(points,2)
        >>> wnn2[0]
        {1: 1.0, 3: 1.0}
        >>> wnn2[1]
        {0: 1.0, 3: 1.0}

        now with 1 rather than 0 offset

        >>> wnn2 = KNN.from_array(points, 2, ids=range(1,7))
        >>> wnn2[1]
        {2: 1.0, 4: 1.0}
        >>> wnn2[2]
        {1: 1.0, 4: 1.0}
        >>> 0 in wnn2.neighbors
        False

        Notes
        -----

        Ties between neighbors of equal distance are arbitrarily broken.

        See Also
        --------
        :class: `pysal.weights.KNN`
        :class:`pysal.weights.W`
        """
        return cls(array, **kwargs)

    @classmethod
    def from_dataframe(cls, df, geom_col='geometry', ids=None, **kwargs):
        """
        Make KNN weights from a dataframe.

        Parameters
        ----------
        df      :   pandas.dataframe
                    a dataframe with a geometry column that can be used to
                    construct a W object
        geom_col :   string
                    column name of the geometry stored in df
        ids     :   string or iterable
                    if string, the column name of the indices from the dataframe
                    if iterable, a list of ids to use for the W
                    if None, df.index is used.

        See Also
        --------
        :class: `pysal.weights.KNN`
        :class:`pysal.weights.W`
        """
        pts = get_points_array(df[geom_col])
        if ids is None:
            ids = df.index.tolist()
        elif isinstance(ids, str):
            ids = df[ids].tolist()
        return cls(pts, ids=ids, **kwargs)

    def reweight(self, k=None, p=None, new_data=None, new_ids=None, inplace=True):
        """
        Redo K-Nearest Neighbor weights construction using given parameters

        Parameters
        ----------
        new_data    : np.ndarray
                      an array containing additional data to use in the KNN
                      weight
        new_ids     : list
                      a list aligned with new_data that provides the ids for
                      each new observation
        inplace     : bool
                      a flag denoting whether to modify the KNN object
                      in place or to return a new KNN object
        k           : int
                      number of nearest neighbors
        p           : float
                      Minkowski p-norm distance metric parameter:
                      1<=p<=infinity
                      2: Euclidean distance
                      1: Manhattan distance
                      Ignored if the KDTree is an ArcKDTree

        Returns
        -------
        A copy of the object using the new parameterization, or None if the
        object is reweighted in place.
        """
        if (new_data is not None):
            new_data = np.asarray(new_data).reshape(-1,2)
            data = np.vstack((self.data, new_data)).reshape(-1,2)
            if new_ids is not None:
                ids = copy.deepcopy(self.id_order)
                ids.extend(list(new_ids))
            else:
                ids = list(range(data.shape[0]))
        elif (new_data is None) and (new_ids is None):
            # If not, we can use the same kdtree we have
            data = self.kdtree
            ids = self.id_order
        elif (new_data is None) and (new_ids is not None):
            Warn('Remapping ids must be done using w.remap_ids')
        if k is None:
            k = self.k
        if p is None:
            p = self.p
        if inplace:
            self._reset()
            self.__init__(data, ids=ids, k=k, p=p)
        else:
            return KNN(data, ids=ids, k=k, p=p)

class Kernel(W):
    """
    Spatial weights based on kernel functions.

    Parameters
    ----------

    data        : array
                  (n,k) or KDTree where KDtree.data is array (n,k)
                  n observations on k characteristics used to measure
                  distances between the n objects
    bandwidth   : float
                  or array-like (optional)
                  the bandwidth :math:`h_i` for the kernel.
    fixed       : binary
                  If true then :math:`h_i=h \\forall i`. If false then
                  bandwidth is adaptive across observations.
    k           : int
                  the number of nearest neighbors to use for determining
                  bandwidth. For fixed bandwidth, :math:`h_i=max(dknn) \\forall i`
                  where :math:`dknn` is a vector of k-nearest neighbor
                  distances (the distance to the kth nearest neighbor for each
                  observation).  For adaptive bandwidths, :math:`h_i=dknn_i`
    diagonal    : boolean
                  If true, set diagonal weights = 1.0, if false (default),
                  diagonals weights are set to value according to kernel
                  function.
    function    : {'triangular','uniform','quadratic','quartic','gaussian'}
                  kernel function defined as follows with

                  .. math::

                      z_{i,j} = d_{i,j}/h_i

                  triangular

                  .. math::

                      K(z) = (1 - |z|) \ if |z| \le 1

                  uniform

                  .. math::

                      K(z) = 1/2 \ if |z| \le 1

                  quadratic

                  .. math::

                      K(z) = (3/4)(1-z^2) \ if |z| \le 1

                  quartic

                  .. math::

                      K(z) = (15/16)(1-z^2)^2 \ if |z| \le 1

                  gaussian

                  .. math::

                      K(z) = (2\pi)^{(-1/2)} exp(-z^2 / 2)

    eps         : float
                  adjustment to ensure knn distance range is closed on the
                  knnth observations

    Attributes
    ----------
    weights : dict
              Dictionary keyed by id with a list of weights for each neighbor

    neighbors : dict
                of lists of neighbors keyed by observation id

    bandwidth : array
                array of bandwidths

    Examples
    --------

    >>> points=[(10, 10), (20, 10), (40, 10), (15, 20), (30, 20), (30, 30)]
    >>> kw=Kernel(points)
    >>> kw.weights[0]
    [1.0, 0.500000049999995, 0.4409830615267465]
    >>> kw.neighbors[0]
    [0, 1, 3]
    >>> kw.bandwidth
    array([[ 20.000002],
           [ 20.000002],
           [ 20.000002],
           [ 20.000002],
           [ 20.000002],
           [ 20.000002]])
    >>> kw15=Kernel(points,bandwidth=15.0)
    >>> kw15[0]
    {0: 1.0, 1: 0.33333333333333337, 3: 0.2546440075000701}
    >>> kw15.neighbors[0]
    [0, 1, 3]
    >>> kw15.bandwidth
    array([[ 15.],
           [ 15.],
           [ 15.],
           [ 15.],
           [ 15.],
           [ 15.]])

    Adaptive bandwidths user specified

    >>> bw=[25.0,15.0,25.0,16.0,14.5,25.0]
    >>> kwa=Kernel(points,bandwidth=bw)
    >>> kwa.weights[0]
    [1.0, 0.6, 0.552786404500042, 0.10557280900008403]
    >>> kwa.neighbors[0]
    [0, 1, 3, 4]
    >>> kwa.bandwidth
    array([[ 25. ],
           [ 15. ],
           [ 25. ],
           [ 16. ],
           [ 14.5],
           [ 25. ]])

    Endogenous adaptive bandwidths

    >>> kwea=Kernel(points,fixed=False)
    >>> kwea.weights[0]
    [1.0, 0.10557289844279438, 9.99999900663795e-08]
    >>> kwea.neighbors[0]
    [0, 1, 3]
    >>> kwea.bandwidth
    array([[ 11.18034101],
           [ 11.18034101],
           [ 20.000002  ],
           [ 11.18034101],
           [ 14.14213704],
           [ 18.02775818]])

    Endogenous adaptive bandwidths with Gaussian kernel

    >>> kweag=Kernel(points,fixed=False,function='gaussian')
    >>> kweag.weights[0]
    [0.3989422804014327, 0.2674190291577696, 0.2419707487162134]
    >>> kweag.bandwidth
    array([[ 11.18034101],
           [ 11.18034101],
           [ 20.000002  ],
           [ 11.18034101],
           [ 14.14213704],
           [ 18.02775818]])

    Diagonals to 1.0

    >>> kq = Kernel(points,function='gaussian')
    >>> kq.weights
    {0: [0.3989422804014327, 0.35206533556593145, 0.3412334260702758], 1: [0.35206533556593145, 0.3989422804014327, 0.2419707487162134, 0.3412334260702758, 0.31069657591175387], 2: [0.2419707487162134, 0.3989422804014327, 0.31069657591175387], 3: [0.3412334260702758, 0.3412334260702758, 0.3989422804014327, 0.3011374490937829, 0.26575287272131043], 4: [0.31069657591175387, 0.31069657591175387, 0.3011374490937829, 0.3989422804014327, 0.35206533556593145], 5: [0.26575287272131043, 0.35206533556593145, 0.3989422804014327]}
    >>> kqd = Kernel(points, function='gaussian', diagonal=True)
    >>> kqd.weights
    {0: [1.0, 0.35206533556593145, 0.3412334260702758], 1: [0.35206533556593145, 1.0, 0.2419707487162134, 0.3412334260702758, 0.31069657591175387], 2: [0.2419707487162134, 1.0, 0.31069657591175387], 3: [0.3412334260702758, 0.3412334260702758, 1.0, 0.3011374490937829, 0.26575287272131043], 4: [0.31069657591175387, 0.31069657591175387, 0.3011374490937829, 1.0, 0.35206533556593145], 5: [0.26575287272131043, 0.35206533556593145, 1.0]}

    """
    def __init__(self, data, bandwidth=None, fixed=True, k=2,
                 function='triangular', eps=1.0000001, ids=None,
                 diagonal=False):
        if isKDTree(data):
            self.kdt = data
            self.data = self.kdt.data
            data = self.data
        else:
            self.data = data
            self.kdt = KDTree(self.data)
        self.k = k + 1
        self.function = function.lower()
        self.fixed = fixed
        self.eps = eps
        if bandwidth:
            try:
                bandwidth = np.array(bandwidth)
                bandwidth.shape = (len(bandwidth), 1)
            except:
                bandwidth = np.ones((len(data), 1), 'float') * bandwidth
            self.bandwidth = bandwidth
        else:
            self._set_bw()

        self._eval_kernel()
        neighbors, weights = self._k_to_W(ids)
        if diagonal:
            for i in neighbors:
                weights[i][neighbors[i].index(i)] = 1.0
        W.__init__(self, neighbors, weights, ids)

    @classmethod
    def from_shapefile(cls, filepath, idVariable=None,  **kwargs):
        """
        Kernel based weights from shapefile

        Arguments
        ---------
        shapefile   : string
                      shapefile name with shp suffix
        idVariable  : string
                      name of column in shapefile's DBF to use for ids

        Returns
        --------
        Kernel Weights Object

        See Also
        ---------
        :class:`pysal.weights.Kernel`
        :class:`pysal.weights.W`
        """
        points = get_points_array_from_shapefile(filepath)
        if idVariable is not None:
            ids = get_ids(filepath, idVariable)
        else:
            ids = None
        return cls.from_array(points, ids=ids, **kwargs)

    @classmethod
    def from_array(cls, array, **kwargs):
        """
        Construct a Kernel weights from an array. Supports all the same options
        as :class:`pysal.weights.Kernel`

        See Also
        --------
        :class:`pysal.weights.Kernel`
        :class:`pysal.weights.W`
        """
        return cls(array, **kwargs)

    @classmethod
    def from_dataframe(cls, df, geom_col='geometry', ids=None, **kwargs):
        """
        Make Kernel weights from a dataframe.

        Parameters
        ----------
        df      :   pandas.dataframe
                    a dataframe with a geometry column that can be used to
                    construct a W object
        geom_col :   string
                    column name of the geometry stored in df
        ids     :   string or iterable
                    if string, the column name of the indices from the dataframe
                    if iterable, a list of ids to use for the W
                    if None, df.index is used.

        See Also
        --------
        :class:`pysal.weights.Kernel`
        :class:`pysal.weights.W`
        """
        pts = get_points_array(df[geom_col])
        if ids is None:
            ids = df.index.tolist()
        elif isinstance(ids, str):
            ids = df[ids].tolist()
        return cls(pts, ids=ids, **kwargs)

    def _k_to_W(self, ids=None):
        allneighbors = {}
        weights = {}
        if ids:
            ids = np.array(ids)
        else:
            ids = np.arange(len(self.data))
        for i, neighbors in enumerate(self.kernel):
            if len(self.neigh[i]) == 0:
                allneighbors[ids[i]] = []
                weights[ids[i]] = []
            else:
                allneighbors[ids[i]] = list(ids[self.neigh[i]])
                weights[ids[i]] = self.kernel[i].tolist()
        return allneighbors, weights

    def _set_bw(self):
        dmat, neigh = self.kdt.query(self.data, k=self.k)
        if self.fixed:
            # use max knn distance as bandwidth
            bandwidth = dmat.max() * self.eps
            n = len(dmat)
            self.bandwidth = np.ones((n, 1), 'float') * bandwidth
        else:
            # use local max knn distance
            self.bandwidth = dmat.max(axis=1) * self.eps
            self.bandwidth.shape = (self.bandwidth.size, 1)
            # identify knn neighbors for each point
            nnq = self.kdt.query(self.data, k=self.k)
            self.neigh = nnq[1]

    def _eval_kernel(self):
        # get points within bandwidth distance of each point
        if not hasattr(self, 'neigh'):
            kdtq = self.kdt.query_ball_point
            neighbors = [kdtq(self.data[i], r=bwi[0]) for i,
                         bwi in enumerate(self.bandwidth)]
            self.neigh = neighbors
        # get distances for neighbors
        bw = self.bandwidth

        kdtq = self.kdt.query
        z = []
        for i, nids in enumerate(self.neigh):
            di, ni = kdtq(self.data[i], k=len(nids))
            if not isinstance(di, np.ndarray):
                di = np.asarray([di] * len(nids))
                ni = np.asarray([ni] * len(nids))
            zi = np.array([dict(zip(ni, di))[nid] for nid in nids]) / bw[i]
            z.append(zi)
        zs = z
        # functions follow Anselin and Rey (2010) table 5.4
        if self.function == 'triangular':
            self.kernel = [1 - zi for zi in zs]
        elif self.function == 'uniform':
            self.kernel = [np.ones(zi.shape) * 0.5 for zi in zs]
        elif self.function == 'quadratic':
            self.kernel = [(3. / 4) * (1 - zi ** 2) for zi in zs]
        elif self.function == 'quartic':
            self.kernel = [(15. / 16) * (1 - zi ** 2) ** 2 for zi in zs]
        elif self.function == 'gaussian':
            c = np.pi * 2
            c = c ** (-0.5)
            self.kernel = [c * np.exp(-(zi ** 2) / 2.) for zi in zs]
        else:
            print('Unsupported kernel function', self.function)

class DistanceBand(W):
    """
    Spatial weights based on distance band.

    Parameters
    ----------

    data        : array
                  (n,k) or KDTree where KDtree.data is array (n,k)
                  n observations on k characteristics used to measure
                  distances between the n objects
    threshold  : float
                 distance band
    p          : float
                 Minkowski p-norm distance metric parameter:
                 1<=p<=infinity
                 2: Euclidean distance
                 1: Manhattan distance
    binary     : boolean
                 If true w_{ij}=1 if d_{i,j}<=threshold, otherwise w_{i,j}=0
                 If false wij=dij^{alpha}
    alpha      : float
                 distance decay parameter for weight (default -1.0)
                 if alpha is positive the weights will not decline with
                 distance. If binary is True, alpha is ignored

    ids         : list
                  values to use for keys of the neighbors and weights dicts

    build_sp    : boolean
                  True to build sparse distance matrix and false to build dense
                  distance matrix; significant speed gains may be obtained
                  dending on the sparsity of the of distance_matrix and
                  threshold that is applied
    silent      : boolean
                  By default PySAL will print a warning if the
                  dataset contains any disconnected observations or
                  islands. To silence this warning set this
                  parameter to True.

    Attributes
    ----------
    weights : dict
              of neighbor weights keyed by observation id

    neighbors : dict
                of neighbors keyed by observation id

    Examples
    --------

    >>> points=[(10, 10), (20, 10), (40, 10), (15, 20), (30, 20), (30, 30)]
    >>> wcheck = pysal.W({0: [1, 3], 1: [0, 3], 2: [], 3: [0, 1], 4: [5], 5: [4]})
    WARNING: there is one disconnected observation (no neighbors)
    Island id:  [2]
    >>> w=DistanceBand(points,threshold=11.2)
    WARNING: there is one disconnected observation (no neighbors)
    Island id:  [2]
    >>> pysal.weights.util.neighbor_equality(w, wcheck)
    True
    >>> w=DistanceBand(points,threshold=14.2)
    >>> wcheck = pysal.W({0: [1, 3], 1: [0, 3, 4], 2: [4], 3: [1, 0], 4: [5, 2, 1], 5: [4]})
    >>> pysal.weights.util.neighbor_equality(w, wcheck)
    True

    inverse distance weights

    >>> w=DistanceBand(points,threshold=11.2,binary=False)
    WARNING: there is one disconnected observation (no neighbors)
    Island id:  [2]
    >>> w.weights[0]
    [0.10000000000000001, 0.089442719099991588]
    >>> w.neighbors[0]
    [1, 3]
    >>>

    gravity weights

    >>> w=DistanceBand(points,threshold=11.2,binary=False,alpha=-2.)
    WARNING: there is one disconnected observation (no neighbors)
    Island id:  [2]
    >>> w.weights[0]
    [0.01, 0.0079999999999999984]

    Notes
    -----

    This was initially implemented running scipy 0.8.0dev (in epd 6.1).
    earlier versions of scipy (0.7.0) have a logic bug in scipy/sparse/dok.py
    so serge changed line 221 of that file on sal-dev to fix the logic bug.

    """

    def __init__(self, data, threshold, p=2, alpha=-1.0, binary=True, ids=None,
            build_sp=True, silent=False):
        """Casting to floats is a work around for a bug in scipy.spatial.
        See detail in pysal issue #126.

        """
        if ids is not None:
            ids=list(ids)
        self.p = p
        self.threshold = threshold
        self.binary = binary
        self.alpha = alpha
        self.build_sp = build_sp
        self.silent = silent

        if isKDTree(data):
            self.kd = data
            self.data = self.kd.data
        else:
            if self.build_sp:
                try:
                    data = np.asarray(data)
                    if data.dtype.kind != 'f':
                        data = data.astype(float)
                    self.data = data
                    self.kd = KDTree(self.data)
                except:
                    raise ValueError("Could not make array from data")
            else:
                self.data = data
                self.kd = None
        self._band()
        neighbors, weights = self._distance_to_W(ids)
        W.__init__(self, neighbors, weights, ids, silent_island_warning=self.silent)

    @classmethod
    def from_shapefile(cls, filepath, threshold, idVariable=None, **kwargs):
        """
        Distance-band based weights from shapefile

        Arguments
        ---------
        shapefile   : string
                      shapefile name with shp suffix
        idVariable  : string
                      name of column in shapefile's DBF to use for ids

        Returns
        --------
        Kernel Weights Object

        See Also
        ---------
        :class: `pysal.weights.DistanceBand`
        :class: `pysal.weights.W`
        """
        points = get_points_array_from_shapefile(filepath)
        if idVariable is not None:
            ids = get_ids(filepath, idVariable)
        else:
            ids = None
        return cls.from_array(points, threshold, ids=ids, **kwargs)

    @classmethod
    def from_array(cls, array, threshold, **kwargs):
        """
        Construct a DistanceBand weights from an array. Supports all the same options
        as :class:`pysal.weights.DistanceBand`

        See Also
        --------
        :class:`pysal.weights.DistanceBand`
        :class:`pysal.weights.W`
        """
        return cls(array, threshold, **kwargs)

    @classmethod
    def from_dataframe(cls, df, threshold, geom_col='geometry', ids=None, **kwargs):
        """
        Make DistanceBand weights from a dataframe.

        Parameters
        ----------
        df      :   pandas.dataframe
                    a dataframe with a geometry column that can be used to
                    construct a W object
        geom_col :   string
                    column name of the geometry stored in df
        ids     :   string or iterable
                    if string, the column name of the indices from the dataframe
                    if iterable, a list of ids to use for the W
                    if None, df.index is used.

        See Also
        --------
        :class:`pysal.weights.DistanceBand`
        :class:`pysal.weights.W`
        """
        pts = get_points_array(df[geom_col])
        if ids is None:
            ids = df.index.tolist()
        elif isinstance(ids, str):
            ids = df[ids].tolist()
        else:
            ids = df.index.tolist()
        return cls(pts, threshold, ids=ids, **kwargs)

    def _band(self):
        """Find all pairs within threshold.

        """
        if self.build_sp:
            self.dmat = self.kd.sparse_distance_matrix(
                    self.kd, max_distance=self.threshold, p=self.p).tocsr()
        else:
            if str(self.kd).split('.')[-1][0:10] == 'Arc_KDTree':
            	raise TypeError('Unable to calculate dense arc distance matrix;'
            	        ' parameter "build_sp" must be set to True for arc'
            	        ' distance type weight')
            self.dmat = self._spdistance_matrix(self.data, self.data, self.threshold)

    def _distance_to_W(self, ids=None):
        if self.binary:
            self.dmat[self.dmat>0] = 1
            self.dmat.eliminate_zeros()
            tempW = WSP2W(WSP(self.dmat, id_order=ids), silent_island_warning=self.silent)
            neighbors = tempW.neighbors
            weight_keys = tempW.weights.keys()
            weight_vals = tempW.weights.values()
            weights = dict(zip(weight_keys, map(list, weight_vals)))
            return neighbors, weights
        else:
            weighted = self.dmat.power(self.alpha)
            weighted[weighted==np.inf] = 0
            weighted.eliminate_zeros()
            tempW = WSP2W(WSP(weighted, id_order=ids), silent_island_warning=self.silent)
            neighbors = tempW.neighbors
            weight_keys = tempW.weights.keys()
            weight_vals = tempW.weights.values()
            weights = dict(zip(weight_keys, map(list, weight_vals)))
            return neighbors, weights

    def _spdistance_matrix(self, x,y, threshold=None):
        dist = distance_matrix(x,y)
        if threshold is not None:
            zeros = dist > threshold
            dist[zeros] = 0
        return sp.csr_matrix(dist)

def _test():
    import doctest
    # the following line could be used to define an alternative to the '<BLANKLINE>' flag
    #doctest.BLANKLINE_MARKER = 'something better than <BLANKLINE>'
    start_suppress = np.get_printoptions()['suppress']
    np.set_printoptions(suppress=True)
    doctest.testmod()
    np.set_printoptions(suppress=start_suppress)

if __name__ == '__main__':
    _test()

redpajama_set_name: RedPajamaGithub


text:
STOP THE ABUSE
ROYAL HEART EVENTS
We encourage you to stand with us, together we can stop abuse
Dive Deeper!
UPCOMING | EVENTS
Root Out Child Abuse 5k:
NEW ORLEANS — April, 29, 2023
The Royal Hearts Foundation Hosts its 8th Annual Root Out Child Abuse 5k Family Fun Run to bring awareness to child abuse.
Buck town Harbor- The Royal Hearts Foundation invites New Orleans and surrounding Parishes to join them for their Eighth Annual "Root Out Child Abuse 5K Family Fun Run" on April 29, 2023 at the Buck town Harbor located at 325 Metairie Hammond Hwy Metairie, LA 70005. You may register for the walk at www.royalheartsfoundation.org or by contacting (504) 942-6111.
The goal of "Root Out Child Abuse" is to bring awareness to the war on our children. Oftentimes, Child abuse leaves victims ashamed and powerless. When kids are abused, they learn that people are not safe, and aggression is necessary. They navigate through life with stained glasses and taking away their innocence. This event is designed to shine the light on abuse and bring awareness to how our actions endanger children and what we can do to stop it. The Royal Hearts Foundation, a non-profit organization dedicated to preventing child abuse in all its forms through programs, services, public awareness, training and education, advocacy and networking and enhancing the quality of life for children and families.
ROCA will not only shine a light on abuse but also bridge the gap to all the heroes who work tirelessly to protect our families and bring healing to our young people. The Royal Hearts Foundation will connect victims to services and provide outreach programs such as Darkness 2 Light, Human Trafficking Awareness, Recognizing and Reporting Abuse as well as the Art of Core Diving- A healing initiative for victims of abuse geared to bring wholeness and healing right her in New Orleans and the surrounding communities to stop this growing epidemic.
On-Site Registration begins at 7:15 am. Pre-Race Activities begins as 8:00 am. The Race begins at 8:30 am. Local businesses will be on-site. Music by the Wut it Do Network. Food by Sponsors of the Royal Hearts Foundation
Address: P.O Box 2476, Gretna, Louisiana 70054
Email: Info@royalheartsfoundation.org
Powered by — Free websites and CRM

redpajama_set_name: RedPajamaCommonCrawl


Eight Leinster players have been included in the 18 man Ireland A squad named by Graham Shaw for the upcoming Junior Celtic Cup, to be played in Cookstown from July 2-4.
Speaking about the selection, Ireland's Senior men's coach Paul Revington said "It is crucial for Irish Hockey that this group of U-21 players are able to perform together at international level, and the 2010 Junior Celtic Cup arrives at just the right time for these players.
Corinthian's Brian Doherty captains the sideand is joined in the panel by Leinster U-21 players Stephen Cole, Jonathon Kane, Stu Loughrey, Davy Carson and Mark English. Stephen West and Shane O'Donoghue step up from last year's Ireland U-18s.


A general guidline is to hang the center point of the picture or grouping of picture at eye level. Some pictures are primarily viewed while standing, such as in a kitchen or hallway. Other artwork is viewed while sitting, such as in a family room. Hang pictures according to "sitting" or "standing" eye level.
Papakura Picture Framers has a wide range of Picture Hooks, Wallbuddies, and Hangman products, all suitable for small frames through to large heavy mirrors.
For advice on using the right products talk to the professionals.


text:
Le Groupe révolutionnaire communiste (en anglais : Revolutionary Communist Group, abrégé en RCG) est une organisation politique britannique d'extrême gauche, fondée en 1974. Il publie le journal Fight Racism! Fight Imperialism! tous les deux mois. Suivant les propres déclarations du groupe, il « existe pour défendre et développer une tendance anti-impérialiste au sein de la Grande-Bretagne, basé sur les intérêts à long terme de l'ensemble de la classe ouvrière et des opprimés internationalement ».

Histoire
Le groupe naît d'une scission du groupe Socialistes internationaux. Il a développé les analyses de Karl Marx, Friedrich Engels et Vladimir Lénine sur la théorie de l'aristocratie ouvrière, montrant son importance pour la politique en Grande-Bretagne, qui les a conduit à rejeter le Parti travailliste comme un parti impérialiste. Le RCG est très critique quant au rôle du Royaume-Uni en Irlande du Nord, et a participé dans le mouvement de solidarité avec libération nationale irlandaise, comme Sinn Féin et le « Comité de l'aide aux prisonniers ». Depuis lors le groupe a toujours soutenu les luttes des prisonniers, comme lors de l'émeute de Strangeways, une prison en Manchester. Dans les années 1980 le RCG joue un rôle de premier plan dans le mouvement anti-apartheid.

En 1995, le RCG a mis en place une campagne appelée « Rock Around the Blockade » en solidarité avec la Révolution cubaine, contre le blocus des États-Unis. Après le début de la seconde intifada en , le groupe organise des piquets réguliers à Marks & Spencer pour protester contre leur soutien à Israël.

En 2005 et 2006, le groupe a aidé à constituer des campagnes de soutien aux demandeurs d'asile et aux réfugiés. En 2010, la coalition conservateur-libéral-démocrate a annoncé des coupes dans les dépenses publiques de 81 milliards de £. En réponse, le journal du groupe Fight Racism! Fight Imperialism! annonce que le gouvernement a déclaré « lutte des classes » et il adopté le slogan « No cuts – full stop! ».

Notes et références

Articles connexes
 Parti communiste de Grande-Bretagne
 Parti communiste de Grande-Bretagne (marxiste-léniniste)
 Parti communiste britannique

Parti politique communiste au Royaume-Uni
Parti politique fondé en 1974
Parti politique au Royaume-Uni

redpajama_set_name: RedPajamaWikipedia


10th Yr. serving the wedding industry.
A + Better Business Bureau rating.
Last 7 Consecutive yrs. Couples' Choice Award.
Organza overlays are a beautiful way to add layers of delicate beauty and color to your event. Organza overlays will provide the splash of color to accent or bring everything together! Sheer, flowing, soft and available in a stunning array of brilliant colors. These overlays can be placed over any of our linens or several overlays can be stacked for a dramatic and opaque effect. We use only the highest quality fabric and manufactured in the U.S.A., not cheap imports. 2017 We celebrate our 10th year serving the wedding, event and hospitality industries. A + Better Business Bureau rated. We are also honored to have received the Couples' Choice Award, presented to only the top 5% of wedding businesses for the last 7 consecutive years.


text:
Donald Trump Held In Contempt In New York [Update]
The former president will be fined $10k a day until he complies with subpoena
Keith Reed
Former U.S. President Donald Trump speaks at a rally at The Farm at 95 on April 9, 2022 in Selma, North Carolina. Trump lost a battle to have civil contempt charges against him tossed out in an ongoing investigation in New York, and still faces multiple other probes.
Photo: Allison Joyce (Getty Images)
Updated Tuesday, April 26, 2022 at 11:30 a.m.
In the latest episode of Donald Trump Takes An L in Court, the ex-president was held in civil contempt by a judge in New York on Monday for failing to produce documents under a subpoena issued by state Attorney General Letitia James' office. Later the same day, the judge ordered a major commercial real estate firm to comply with a separate subpoena for records in the case.
Cushman & Wakefield, a Chicago-based firm that reported $9.4 billion in revenues in 2021, must turn over documents related to appraisals the company performed on properties owned by the Trump Organization, CNBC reported. It's unclear which properties information is being sought about, but Trump's company has developed, owns or markets properties across the United States and abroad.
James is investigating Trump and his company, the Trump Organization, for potential fraud for allegedly providing misleading financial statements to insurance companies, lenders and others. The subpoena addressed in court today was issued in December, but last week Trump's attorneys argued that Trump doesn't have any of what James is looking for in his possession. They made that same argument today, to no avail, as Judge Arther Engeron slapped Trump with a $10,000 per day fine until he complies with the subpoena.
Alina Habba, an attorney for Trump, said the former president does not believe he is above the law, but simply does not have the types of written communications that were sought by the subpoena, but that he produced hundreds of thousands of documents through his assistants. Habba said she herself searched Trump's hard copy calendars and physical file locations, and even interviewed her client in Florida.
"President Trump does not email. He does not text message. And he has no work computer at home or anywhere else," Habba said.
"I took it upon myself to get on a plane and flew down and asked him one by one if there was anything that he had on his person that he had not given me I would need that. And he did not," she said.
The judge asked why Trump didn't sign an affidavit swearing that he complied with the subpoena. Habba said that he would.
The Root's Danielle Belton Talks Biden's Gaffe, Trump's COVID-19 Inactions on MSNBC
Donald Trump Must Never Hold Public Office Again, Period
Cheat Sheet: What Does It Mean To Be Impeached?
Today's ruling was but the latest in a string of judicial proceedings that haven't gone so well for the former White House occupant, whose post-presidency spate of lawsuits and legal woes is seemingly picking up where his private businesses–which were often the subject of lawsuits–left off.
James' civil investigation parallels a criminal probe into Trump's business affairs out of the Manhattan district attorney's office. District Attorney Alvin Bragg said earlier this month that his investigation is ongoing despite the resignations–and criticism of Bragg's handling of the probe–of two top prosecutors.
Fulton County, Ga., District Attorney Fani Willis is leading a criminal investigation into whether Trump committed a crime when he called Georgia Secretary of State Brad Raffensperger in January 2021 asking him to "find" enough votes to tip Georgia's election tally in Trump's favor. Subsequent recounts confirmed that Trump had lost the state.
A House committee led by U.S. Rep. Bennie Thompson (D-Miss.) is investigating Trump and his associates' role in causing the Jan. 6th assault on the U.S. Capitol. So far the House has voted to hold two Trump allies, Peter Navarro and Dan Scavino Jr., in contempt of Congress for failing to turn over documents, a vote that could lead to criminal prosecution by the Justice Department. The House could still refer any other potential criminal evidence it finds to the Justice Department.
Last week, Trump's campaign was ordered to pay $1.3 million to former reality show star turned White House aide Omarosa Manigault Newman for legal fees. The campaign had sued Manigault Newman alleging that her 2018 book, "Unhinged: An Insider's Account of the Trump White House", violated a non-disclosure agreement. An arbitrator sided with Newman.
Criminal JusticeCrime


text:
Court of Appeals of New Mexico.
Jose Luis LOYA, Plaintiff,
Glen GUTIERREZ, Commissioned Officer of Santa Fe County, Defendant/Third?Party Plaintiff?Appellant,
County of Santa Fe, Third?Party Defendant?Appellee.
No. 32,405.
Nov. 13, 2013.
Appeal from the District Court of Santa Fe County, Barbara J. Vigil, District Judge.
Ray A. Padilla, Ray A. Padilla, P.C., Albuquerque, NM, for Appellant.
Michael Dickman, Law Office of Michael Dickman, Santa Fe, NM, for Appellee.
VANZI, Judge.
*1 {1} In this case, the issue before us is whether the County of Santa Fe (the County) has a duty to defend or indemnify a tribal police officer who, while exercising his authority as a commissioned County sheriff's deputy, unlawfully arrested a non-Indian person within the exterior boundaries of the Pueblo of Pojoaque (the Pueblo). The district court concluded that the County did not have a duty to defend and/or indemnify Officer Glen Gutierrez because he was not a "public employee" or "law enforcement officer" of a "governmental entity" as those terms are defined by the New Mexico Tort Claims Act (the TCA), NMSA 1978, ?? 41?4?1 to ?30 (1976, as amended through 2013). See ? 41?4?3. We agree with the district court and affirm.
{2} The parties do not dispute the facts. The essential allegations in the underlying complaint are that Appellant Officer Gutierrez, while on official duty for the Pueblo police department, made a traffic stop of Plaintiff Jose Luis Loya's vehicle. The stop occurred on U.S. Highway 84/285, a state-maintained road within the exterior boundaries of the Pueblo. At the time of the stop, Officer Gutierrez was dressed in his full tribal police uniform, displaying his tribal badge of office, and driving his tribally-issued police vehicle. In addition to acting under tribal law, Officer Gutierrez was also on duty as a duly commissioned Santa Fe County Deputy Sheriff, which gave him the authority to arrest, charge, and jail non-Indians, such as Loya, for violations of New Mexico state law.
{3} Ultimately, Officer Gutierrez, along with two other tribal officers, arrested Loya for reckless driving under NMSA 1978, Section 66?8?113 (1987) and took him to the tribal police department for processing. Loya was subsequently transported to the Santa Fe County jail and later prosecuted for the offense in the Santa Fe County Magistrate Court.
{4} As a result of the incident, Loya filed a complaint against Officer Gutierrez and brought claims against him under 42 U.S.C. ? 1983 (1996) for false arrest, malicious prosecution, and use of excessive force. In his answer to Loya's complaint, Officer Gutierrez filed a third-party declaratory judgment action against the County, stating that the County was required to defend and indemnify him in the matter. On cross-motions for summary judgment, and after hearing argument from the parties, the district court ruled that the County did not have a duty to defend and/or indemnify Officer Gutierrez. The court based its decision on the grounds that the issue was governed by the TCA and that to receive the benefit of the defense and indemnification provisions of the TCA, Officer Gutierrez had to be a "public employee" or "law enforcement officer" of a "governmental entity" as those terms are defined. The district court found that Officer Gutierrez was not a full-time or part-time salaried officer employed by the County, but rather, he was a police officer hired, trained, supervised, subject to discipline, and employed by the Pueblo. Further, the court found that the Pueblo is a sovereign Indian tribe that is not a "governmental entity" as defined by the TCA. Therefore, the district court ruled that the County had no duty to defend and/or indemnify Officer Gutierrez. This appeal timely followed.
*2 {5} "Summary judgment is appropriate where there are no genuine issues of material fact and the movant is entitled to judgment as a matter of law." Self v. United Parcel Serv., Inc., 1998?NMSC?046, ? 6, 126 N.M. 396, 970 P.2d 582.We review the grant of summary judgment under a de novo standard of review. Id.; City of Albuquerque v. BPLW Architects & Eng'rs, Inc., 2009?NMCA?081, ? 7, 146 N.M. 717, 213 P.3d 1146 (holding that "if no material issues of fact are in dispute and an appeal presents only a question of law, we apply de novo review").
{6} In addition, we review the district court's interpretation of the TCA as a question of law subject to de novo review. Am. Fed'n of State, Cnty. & Mun. Emps., Council 18 v. City of Albuquerque, 2013?NMCA?012, ? 6, 293 P.3d 943, cert. quashed, 2013?NMCERT?008, 309 P.3d 101. "In construing a statute, our charge is to determine and give effect to the Legislature's intent." Marbob Energy Corp. v. N.M. Oil Conservation Comm 'n, 2009?NMSC?013, ? 9, 146 N.M. 24, 206 P.3d 135. "In discerning the Legislature's intent, we are aided by classic canons of statutory construction, and we look first to the plain language of the statute, giving the words their ordinary meaning, unless the Legislature indicates a different one was intended." Id. (alteration, internal quotation marks, and citation omitted). "We will not depart from the plain wording of a statute, unless it is necessary to resolve an ambiguity, correct a mistake or an absurdity that the Legislature could not have intended, or to deal with an irreconcilable conflict among statutory provisions." Regents of Univ. of N.M. v. N.M. Fed'n of Teachers, 1998?NMSC?020, ? 28, 125 N.M. 401, 962 P.2d 1236.
The New Mexico Tort Claims Act
{7} The TCA is the primary vehicle by which the state may be held liable for injuries caused by the negligence of its employees. The TCA entitles public employees to a legal defense provided by his or her employer or the state when a plaintiff alleges that the employee committed certain enumerated torts for which immunity has been waived, or if the employee violated the plaintiff's constitutional rights. See ? 41?4?4(B). Similarly, a state employer must pay a judgment or a settlement entered against a public employee if the employee acted within the scope of his duties. See ? 41?4?4(D).
{8} In this case, Loya's lawsuit against Officer Gutierrez alleges only violations of federally protected constitutional rights under 42 U.S.C. ? 1983. See ? 41?4?4(A) (noting the state's immunity from tort liability and its exceptions). The parties agree that the question of whether the County must defend and/or indemnify Officer Gutierrez is governed by the TCA. Section 41?4?4(B) of the TCA requires that, unless an insurance carrier provides a defense, governmental entities shall provide a public employee a defense for:
(2) any violation of property rights or any rights, privileges or immunities secured by the constitution and laws of the United States ... when alleged to have been committed by the public employee while acting within the scope of his duty.
*3 Likewise, the governmental entity must provide indemnification to a public employee who has been sued for damages. Section 41?4?4(D) provides:
A governmental entity shall pay any settlement or any final judgment entered against a public employee for:
(2) a violation of property rights or any rights, privileges or immunities secured by the constitution and laws of the United States ... that occurred while the public employee was acting within the scope of his duty.
{9} At issue is whether Officer Gutierrez, acting in his capacity as a commissioned County Sheriff's Deputy, is a "public employee" of a "governmental entity" entitled to the defense and indemnification provisions above. See ? 41?4?4(B), (D). The TCA defines a "public employee," in pertinent part, as "an officer, employee or servant of a governmental entity, excluding independent contractors[.]" Section 41?4?3(F). This definition goes on to include fourteen categories of persons who are considered "public employees," including, as we discuss further below, "law enforcement officers" and those working "on behalf or in service of a governmental entity in any official capacity[.]" See ? 41?4?3(F)(2), (3). A "governmental entity" means the State of New Mexico and its agencies, or any local public body and its agencies. See ? 41?4?3(B), (C), (H). It does not include sovereign Indian pueblos and tribes.
{10} Here, Officer Gutierrez seeks the benefit of a defense and/or indemnification for claims involving the conduct of law enforcement officers. Officer Gutierrez concedes that he is not a "law enforcement officer" within the meaning of the TCA; however, he argues that he fits within another of the enumerated definitions of "public employee." For the reasons that follow, while we agree that Officer Gutierrez is not a "law enforcement officer" within the meaning and definitions of the TCA, we disagree that he meets any alternate definition of a "public employee."
Officer Gutierrez Is Not a "Law Enforcement Officer" of a "Governmental Entity"
{11} As we have noted, the County's obligation to provide Officer Gutierrez a defense and/or indemnification arises only if he is a "public employee" of a "governmental entity." FN1 And the TCA defines "public employee" to include law enforcement officers. Section 41?4?3(F)(2). In relevant part, Section 41?4?3(D) more precisely defines a "law enforcement officer" as
FN1. Under a similar factual scenario, this Court has previously held that the TCA's definition of "public employee" under Section 41?4?3(F) and "governmental entity" under Section 41?4?3(B) did not include a cross-deputized Navajo police officer who was sued after issuing a Navajo speeding ticket to a non-Indian on a state right of way through the Navajo Nation. Williams v. Bd. of Cnty. Comm 'rs of San Juan Cnty., 1998?NMCA?090, ?? 2, 26, 125 N.M. 445, 963 P.2d 522. Although Williams is arguably dispositive, it did not address any of the enumerated definitions raised by Officer Gutierrez on appeal. We therefore proceed to consider those arguments.
a full-time salaried public employee of a governmental entity, or a certified part-time salaried police officer employed by a governmental entity, whose principal duties under law are to hold in custody any person accused of a criminal offense, to maintain public order or to make arrests for crimes[.]
Our courts have construed this definition strictly. See, e.g., Silva v. State, 1987?NMSC?107, ? 17, 106 N.M. 472, 745 P.2d 380 (holding that the secretary of corrections is not a "law enforcement officer" under the TCA); Coyazo v. State, 1995?NMCA?056, ?? 14?19, 120 N.M. 47, 897 P.2d 234 (concluding that district attorneys and staff were not "law enforcement officers"); Dunn v. State ex rel. Taxation & Revenue Dep't, 1993?NMCA?059, ? 11, 116 N.M. 1, 859 P.2d 469 (holding that the director of the New Mexico Motor Vehicle Department, who has statutory authority to make arrests, was not a law enforcement officer because the "vast majority of [his] time and effort are involved in administrative matters" (internal quotation marks omitted)).
*4 {12} Here, Officer Gutierrez agrees that he does not meet the definition of "law enforcement officer" under Section 41?4?3(D). We nevertheless address this provision of the TCA because our analysis settles the present dispute with regard to the County's duty to defend and/or indemnify Officer Gutierrez. We start with the facts.
{13} Officer Gutierrez was on duty as a full-time Pueblo tribal law enforcement officer, acting in his capacity as a commissioned Deputy Sheriff for the County, when he made the traffic stop of Loya's vehicle in September 2009. At the time of the stop, Officer Gutierrez was dressed in his tribal police uniform, including wearing his tribal badge, and driving his tribally-issued police vehicle. Officer Gutierrez, assisted by two other tribal officers, ultimately arrested Loya for the misdemeanor crime of reckless driving under Section 66?8?113. Loya was taken to the tribal police department for processing and then transported to the Santa Fe County jail by another tribal officer.
{14} As a result of the stop and arrest, Loya brought a complaint under 42 U.S.C. ? 1983 against Officer Gutierrez, alleging that Officer Gutierrez "violently attacked [him]" during the incident leading to the arrest and that Officer Gutierrez pinned Loya by his neck to his vehicle and then kicked him, causing Loya to have neck spasms and injuries. The complaint also asserted that Officer Gutierrez was a law enforcement and commissioned officer for the County and that he was "acting under color of state law, in patrolling a state highway and enforcing state criminal statutes."
{15} The above facts establish that Officer Gutierrez was performing traditional law enforcement duties when he stopped and arrested Loya. Moreover, the claims against Officer Gutierrez?unreasonable seizure and deprivation of liberty, prosecution without probable cause, and excessive force?can only be understood to come within Section 41?4?12's waiver of immunity for "law enforcement officers." Section 41?4?12 provides:
The immunity granted pursuant to Subsection A of Section 41?4?4 ... does not apply to liability for personal injury, bodily injury, wrongful death or property damage resulting from assault, battery, false imprisonment, false arrest, malicious prosecution, abuse of process, libel, slander, defamation of character, violation of property rights or deprivation of any rights, privileges or immunities secured by the constitution and laws of the United States or New Mexico when caused by law enforcement officers while acting within the scope of their duties.
{16} Although Officer Gutierrez was exercising his authority as a commissioned County Sheriff's Deputy when he stopped and arrested Loya, the district court found?and Officer Gutierrez does not dispute?that he does not come within the TCA's definition of a "law enforcement officer" as that term is defined in Section 41?4?3(D). The district court found that Officer Gutierrez was neither a full-time nor part-time salaried officer employed by the County. The court further found that Officer Gutierrez was hired, trained, supervised, and subject to discipline by the Pueblo. In addition, Officer Gutierrez does not challenge the district court's finding that the Pueblo is a sovereign Indian tribe that is not a "governmental entity" as defined by the TCA. The district court therefore concluded that Officer Gutierrez was not a "law enforcement officer" within the plain language of the definition in the TCA. Accordingly, the TCA's employee defense and indemnification provisions were not available to him on this basis. Based on the undisputed facts, we affirm the district court's ruling in this regard.
Officer Gutierrez Is Not a "Public Employee" Under Section 41?4?3F(3)
*5 {17} As we have discussed above, Officer Gutierrez freely admits that he does not meet Section 41?4?3(D)'s definition of "law enforcement officer," yet he seeks the benefit of a defense and/or indemnification by contending that he instead fits within another definition of a public employee under the TCA. In particular, he argues that Section 41?4?3(F)(3) is applicable to any person that has "been authorized to exercise and who [does] exercise state law enforcement powers" regardless of whether he receives compensation. We disagree.
{18} Section 41?4?3(F)(3) includes as "public employees" those persons "acting on behalf or in service of a governmental entity in any official capacity, whether with or without compensation[.]" In construing a statute, we seek to achieve the intent of the Legislature. Grine v. Peabody Natural Res., 2006?NMSC?031, ? 17, 140 N.M. 30, 139 P.3d 190. "The first guiding principle in statutory construction dictates that we look to the wording of the statute and attempt to apply the plain meaning rule, recognizing that when a statute contains language which is clear and unambiguous, we must give effect to that language and refrain from further statutory interpretation." United Rentals Nw., Inc. v. Yearout Mech. Inc., 2010?NMSC?030, ? 9, 148 N.M. 426, 237 P.3d 728 (alteration, internal quotation marks, and citation omitted). We do not read a statute in such a way that "would lead to injustice, absurdity, or contradiction." Otero v. State, 1987?NMCA?054, ? 11, 105 N.M. 731, 737 P.2d 90.
{19} Accepting Officer Gutierrez's interpretation of Section 41?4?3(F)(3) would require us to expand the definition of "public employee" to include law enforcement officers acting within the scope of their police duties but who are not salaried employees of a governmental entity subject to the TCA. See ? 41?4?3(D). In essence, Officer Gutierrez is asking this Court to create two classes of law enforcement officers within the TCA's definitional section of "public employee"?one that is salaried and works for a governmental entity and one that is not. We decline to do so for several reasons. First, such an interpretation would go beyond the plain language of Section 41?4?3(F)(3). That section makes no mention of providing an alternate or different definition of "public employee" to include those persons exercising state law enforcement powers but who are not salaried employees of a "governmental entity." See id. Second, reading the statute to say that a police officer who fails to meet the definition of a "law enforcement officer" under Section 41?4?3(D) can then allege that his same conduct falls within another definition in order to trigger the duty to defend and indemnify is an illogical distinction that makes no sense. See Ramirez v. IBP Prepared Foods, 2001?NMCA?036, ? 16, 130 N.M. 559, 28 P.3d 1100 (stating that "[i]n interpreting a statute, we look to the statute as a whole [and] ... attempt to achieve internal consistency" (citation omitted)), superseded by statute on other grounds as stated in Baca v. Los Lunas Cmty. Programs, 2011?NMCA?008, 149 N.M. 198, 246 P.3d 1070. In other words, Officer Gutierrez cannot claim that he was acting in his capacity as a law enforcement officer yet disclaim that he must fit within the TCA's definition for conduct involving a law enforcement officer. Finally, if the New Mexico Legislature had intended to protect commissioned tribal officers discharging their duties under state law, it could readily have demonstrated such an intent by including language to that effect. See Starko, Inc. v. Presbyterian Health Plan, Inc., 2012?NMCA?053, ? 49, 276 P.3d 252 (noting that if the Legislature wanted to condition the applicability of a payment scheme on the dispensing of the lesser expensive, therapeutic equivalent drug, it would have included those terms within the statute), cert. granted, 2012?NMCERT?003, 293 P .3d 184. Indeed, our Legislature recently amended the TCA to include "certified part-time salaried police officer[s] employed by a governmental entity" within the definition of "law enforcement officer." Section 41?4?3(D). Thus, the Legislature could have?but did not?include non-salaried commissioned officers working on behalf or in the service of a governmental entity subject to the TCA.
*6 {20} Officer Gutierrez relies on several cases and statutes as support for his contention that he fits within the definition of Section 41?4?3(F)(3). However, none of these cases or statutes have any bearing on the issue on appeal. For example, he cites to Celaya v. Hall, 2004?NMSC?005, 135 N.M. 115, 85 P.3d 239, for the proposition that he, like the volunteer chaplain in that case, is an uncompensated person working "on behalf of or in service of a governmental entity." However, the issue in Celaya was not whether the police department's volunteer chaplain came within the definition of "law enforcement officer" under Section 41?4?3(F)(3). Instead, that case dealt with whether the chaplain, who had been given a vehicle by the Bernalillo County Sheriff's Department to drive to and from official functions, could be acting within the scope of his duties if he was driving to or from an official function when he ran over a teenager's foot in a Wal?Mart parking lot. Celaya, 2004?NMSC?005, ?? 1?3. Furthermore, in Celaya, the tort for which immunity was waived by the TCA came under the exception of negligent operation of a motor vehicle. See ? 41?4?5. In contrast, here, the only section of the TCA that waives immunity for the claims asserted against Officer Gutierrez is the law enforcement provision of Section 41?4?12, and he identifies no other exception. Consequently, Celaya has no bearing on this case.
{21} Officer Gutierrez also cites to 28 U.S.C. ? 2680(h) (2006) of the Federal Tort Claims Act (FTCA) to support his argument that he is a "public employee." We fail to see the relevance of the FTCA here when the statutory language defining a "public employee" under the various provisions of the TCA is clear and unambiguous. Further, the many federal cases cited by Officer Gutierrez are also not pertinent. The crux of those cases is not whether a tribal officer enforcing state law pursuant to a commission is a "law enforcement officer" entitled to a defense and/or indemnification under the TCA, but whether he may become a "state actor" for purposes of 42 U.S.C. ? 1983. See, e.g., Romero v. Peterson, No. CIV?89?128?JC, 1993 WL 375746, at *1?3 (10th Cir. Sept. 27,1993); Romero v. Peterson, 930 F.2d 1502, 1503?04 (10th Cir.1991); Hebert v. United States, 438 F.3d 483, 486?87 (5th Cir.2006); Ouart v. Fleming, No. CIV?08?1040?D, 2010 WL 1257827, at *3 (W.D.Okla. Mar. 26, 2010).
{22} There is no dispute that once commissioned as a sheriff's deputy, Officer Gutierrez was authorized to discharge all the law enforcement powers of a Santa Fe County sheriff, including with respect to the Motor Vehicle Code. We conclude however, that in this case, such a commission did not make Officer Gutierrez a "public employee" of the County but merely conferred upon him jurisdiction to act lawfully when enforcing state and local laws. Accordingly, the County has no duty to defend Officer Gutierrez in this lawsuit or indemnify him for tortious acts committed under color of his commission. We affirm the district court's decision.
*7 {23} We affirm the decision of the district court.
{24} IT IS SO ORDERED.
WE CONCUR: RODERICK T. KENNEDY, Chief Judge, and CYNTHIA A. FRY, Judge.


Romain Wacziarg, professor of Economics at the University of California at Los Angeles, presented on April 5 in Madrid his findings on this topic. The conference, titled Historical Barriers to the Wealth of Nations, was organized by the Navarra Center for International Development - the think tank of the Institute for Culture and Society of the University of Navarra - and the Fundación Ramón Areces, which hosted the event.
When looking back to history to find out the reasons underpinning why there are more and less developed countries there is one first step to take: "You have to know how far to pull the thread of time", said Wacziarg. According to his research, which he shared with more than 200 attendees, we must go beyond phenomena such as the Industrial Revolution in England or the colonization of America and Africa by European powers, since there are factors of the current development of countries that can be explained even from the first migrations and technological advances of human beings.
Not even putting together the whole human history since the first year of the modern era is enough to explain why there are rich and poor countries. There are different factors that unite or separate countries and create what Wacziarg calls "cultural distance" —mainly geographical, linguistic and genetic factors—. Sharing culture permeates positive values to countries that have historically been related, helping them to develop in a similar way. However, the cultural proximity also has a negative effect, since the researcher assures that wars and violence intensify among people of the same community and culture. "People fight more with each other than with people from distant cultures," Wacziarg added.
In spite of everything, these "historical barriers" are not definitive and can be overcome. To do so, which it is not easy, countries have to apply the correct policies by learning from the experiences of other nations and adapting whatever is necessary to push down the doors for innovation in their society. According to Wacziarg, the challenge is also to see the glass half empty or, as he sees it, half full.
Finally, the speaker explained that history has, at best, a 50% effective in determining the development of nations. "The other 50% is decided by societies with their capacity to evolve and leave the past behind", concluded Wacziarg.


With 25 years experience in the tile industry and hundreds of happy customers, we can guarantee your satisfaction.
Help you choose the most appropriate grout and colour. Furthermore, we keep a full selection in stock enabling you to see real samples laid onto your tiles just before grouting.
The adhesives, boards, levellers and grouts we use are guaranteed for the life of the installation.
Our grout is not only water resistant but also anti-bacterial, flexible and water repellent.
Matching silicone colours available for most colour grouts.
We have been using all these products for many years so we know their qualities.
As Tarka Tiling undertake large commercial projects, you can rest assured that we have comprehensive cover including £2million liability insurance.
Tarka Tiling expects all installations to last for the duration of their intended purpose. Our products are all guaranteed for life and if you buy tiles from us you have peace of mind knowing these are all high quality materials.
Tarka Tiling have many CSCS registered sub-contractors, have been SSIP acredited and over 25 years commercial tiling experience. please send us your tender details to chris@tarkatiling.co.uk and we will return a quote promptly.
No more dirty grout or mould growth months after spending all that time and money on the installation.
I specialise in high end installations with great attention to detail and of course all our installations are guaranteed for life and of the highest quality.
Get a tiling quote for your floor or bathroom. Local floor and wall tilers, Free quotes for Devon, Somerset and cornwall.
Bank transfers, cash or any card accepted.


dicembre « 2013 « Sistar S.a.s.
High-performance abrasive paper discs with velcro. Corundum abrasive, binder made with resin over glue, semi-open coating, paper weight F. Suitable for sanding with machine of all types of supports and for sanding of preparation products (putty, polyester primer). Areas of use: Wood, Industry, Boating, Car-Body, Metal, Fiberglass.
Very flexible abrasive paper roll, multi-purpose, high-performance, no velcro connection. Abrasive aluminum oxide, binder with double resin, semi-enclosed coating, paper weight latex CD. Suitable for hand sanding of all types of supports and for sanding dry and wet preparation product. Areas of use: Wood, Industry, Marine, Automotive, Plastic, Metal.
Clean cloths thick and very resistant for hard cleaning jobs, high absorbency to work better and faster. The structure HYDROKNIT is performed using water jets which allow to weld soft and absorbent paper fibers to the very resistant non-woven cloth made of polypropylene. During the preparation of the surface with solvents or during the cleaning of grease and oil, these thick and compact cloths give always good results.
Roll of paper in pure cellulose with 2 film, extra quality not recycled. Embossed honeycomb structure for better absorbency. It does not contain optical brighteners.


When it is thinking of humanity as a whole or human beings in general, the Hebrew Bible uses words such as bene 'adam and banim 'adam or sometimes just 'adam. Traditionally, those words have been translated into English Bibles as "children of men," "sons of men," "all mankind," or just "mankind." More recent translations have been trending toward "humankind" or "humanity." But back to the Hebrew, and their meaning as "humanity as a whole" in the wisdom literature. Two instances in Proverbs 8 are particularly noteworthy for understanding the wisdom norm of mutuality, and they raise urgent questions about why we may limit the reach of wisdom to some people but not to others.
Her appearance in these multicultural meeting places is significant, and "the gates" provide clues as to why. In the old-world Middle East, various city gates were established and respected places of authority where people of all sorts, including from different cultures, met to discuss or debate issues and situations or hammer out agreements amidst their competing interests. Somewhat analogous to today's public squares and civil courts, the gates were where merchants could conduct commerce, elders could hear and settle disputes, and judges could administer justice (see, e.g., the book of Joshua 20:4-6 and Ruth chapter 4). Kings might even meet with their subjects there.
At these places of authority amid mixed multitudes, wisdom says, "To you, gentle ones, I call; my voice is for all humankind [bene 'adam]." This is the compressed, literal way Kravitz and Olitzky translate Proverbs 8:4 in Misheli, their modern commentary on the book of Proverbs (p. 80). On other words, it doesn't matter who you are or where you came from, I, wisdom, am speaking to you. This is at one and the same time wisdom's affirmation of and participation in human mutuality as well as her protest against factionalism and sectarianism.
The text was certainly meant to communicate to ancient Israel that, even at the gates of a thoroughly monotheistic city such as Jerusalem, a wisdom-based way of reasoning provided a morally responsible means for peoples of different faiths not only to meet and greet but to hammer out cooperative and peaceable agreements across all sorts of otherwise perhaps unnegotiable boundaries.
All of this, of course, assumes that it would take persons (elders, counselors, judges, et al.) known for their wisdom to justly oversee such areas. Those who met to negotiate agreements would take that for granted. Apparently, the premium that was placed on this gave rise to the proverb: "Wisdom is too high for a fool; in the assembly at the gate he has nothing to say" (24:7).
Notice, too, that this is not about converting someone to your own faith before cooperative agreements can be reached. (The tragic histories of Christianity in seventeenth century Europe and Islam in the Middle East today disprove that principle anyway.) Instead, just as commercial and legal transactions take place today among all sorts of different people, the text indicates what we could call the internationality of wisdom – she is available to all humankind as they are, rather than, to use a Christian expression, what by the grace of God they may become.
I promised you that we would look at two instances in Proverbs 8 that are noteworthy for understanding the wisdom norm of mutuality, and that raise urgent questions about why we limit the reach of wisdom to some people but not to others. We'll look at the second instance in the next post.
Of all of life's certainties, Skillen concludes, "one in particular has proven very durable over the centuries, namely, that there is but one world" (pp. 128, 129, 146).
Whether one works in the field of international relations or locally, reliance on the wisdom norm of mutuality realistically enables cooperative and peaceable relations amid human diversity. It aids in building on common ground for common good, and in sustaining and increasing the effects of the good wherever they are already found to be repairing broken situations.
But why not just use standard language? Why not just say the "wisdom norm of commonality" (or commonness)? It's a fair question, and my answer is tentative, but I favor the word "mutual" because "common" can carry the suggestion that some areas of life are belief-neutral. So, for instance, a Muslim, a Jew, a Christian, and an atheist get together and say: Let's find some neutral ground where we can work together on a community project.
This common assumption – that there are patches of neutral ground – is also a common misunderstanding. For everyone stands ultimately somewhere. And that "ultimate somewhere" is religious ground, the ground of faith, even for those who do not consider themselves religious. There is no neutral ground. For instance, a theist believes that behind the material world an unseen God exists; an atheist believes that the material world is all that exists. These are irreconcilable differences of faith.
the "best engagements are between those who can say where they are coming from and then patiently try to communicate and discuss matters of importance" (p. 30).
The way I see it, "mutual" – as in human mutuality, or mutual good, or mutual ground, or the wisdom norm of mutuality – can draw attention (in a way that "common" cannot) to who we fully are as human beings, which includes our ultimate beliefs.
Maybe it's just silly hair splitting – you decide – but the more I get under the skin of the wisdom tradition, the more I see the agency of wisdom underlining what is mutual and not just what is common. If I say to you: "I hear that you still write your books on paper and with a pen. So do I," then we have books and paper and pens in common. But if you and I and several others are around the negotiating table and reach and sign an agreement, then our primary focus and aim has not been on what is common to us in the room (e.g., the table, paper, and pen) but on what is mutual (the signed agreement).
The previous two posts introduced the idea that paths of wisdom are paths of a special kind of peace called shalom. These paths have an (often overlooked) direction: social, political, and economic well-being, wholeness, flourishing. We also looked at shalom as what I call the wisdom norm of peaceableness, which should have particular appeal to those whose desires include working for the good of their communities amid its diversity. The next few posts will take this further by looking at the wisdom norm of human mutuality.
With the world today increasingly becoming pluralistically close-knit, it takes skill to be in each other's space without getting in each other's face. The agency of wisdom enables us to have that skill. But like all skills, it isn't developed overnight. In my own personal formation in this area, far from complete, the wisdom tradition's emphasis on shalom in the context of "human mutuality" has been a godsend in many ways, such as in helping me to shake off unpromising ways of thinking and replace them with a more wisdom-based worldview, and in discovering how to love my neighbor as myself.
What is human mutuality? I am grateful to John Peck, British philosopher and theologian, and a dear friend and mentor, who helped me to understand that the wisdom tradition directs our attention to the basic interests, concerns, and goals that are shared by the human family as a whole before distinctions are made about ethnicity, nationality, and religion or even about, as today we would put it, who is religious and who is "secular." This points to what I call the wisdom norm of mutuality.
Since time immemorial every person on the planet has participated in the same creation, held in common that bond of being human, shared the same basic concerns and interests, and desired and worked toward their fulfilment. Even beyond the most essential needs – water, food, shelter – all peoples everywhere, in any time, have desired that their children are raised safely and educated, that their societies are ordered and lawful, that poverty and hunger should be overcome, that the suffering of others should be eased, that opportunities to increase their well-being should not be denied to them, that justice prevail, and so on. Such shared basic concerns and interests have inspired billions of us to agree that there is common good to work toward achieving. People everywhere and in any time are constituted that way, believers and atheists alike. That is human mutuality. And wisdom lives and moves and has its being in it.
Call it common ground or common good or, simply, the commons, as some do. The shared concerns of everyday life and the decisions people will make in and about them as they live and work together is a central interest of the wisdom tradition. Work and wealth, family and neighbors, relationships and communication, politics and government, diplomacy and negotiations, rulers and the administration of justice, business and finance, prosperity and suffering, sickness and health, happiness and grief, social life and the law, the rich and the poor, the single and the married, parents and children, earning a living – such are subjects the wisdom literature finds as its objects – the stuff of human mutuality.


Industry involvement is one of the key elements in the success of the IFLA World Library and Information Congress 2017. Your presence and contributions enhance the overall value of the Congress. The International Federation of Library Associations and Institutions (IFLA) offers you the opportunity to become a sponsor of the WLIC 2017 Annual Congress, enabling you to raise the recognition of your company while promoting endeavours.
The IFLA World Library and Information Congress 2017 will provide sponsors and exhibitors with exposure and access to delegates who have the capacity to influence the selection of products and services within their organisations. The Congress also provides you with the opportunity to demonstrate your support and commitment internationally to the field of libraries and library services. Participating in our sponsorship programme will extend your visibility beyond the exhibition hall to achieve maximum exposure at the Congress.
The Exhibition and Sponsorship Ordering System (ESOS®) is an online system whereby companies can book exhibition space and sponsorship items. It is also possible to purchase services and items for exhibition space including furniture, technical equipment, decorations, installations and cleaning.
Further instructions on how to order in ESOS® as well as information about IFLA WLIC 2017 are included in the Sponsorship Prospectus, feel free to download the prospectus here.