text:
import sys

from keystoneclient.common import cms
from oslo.utils import timeutils
import six

from keystone.assignment import controllers as assignment_controllers
from keystone.common import authorization
from keystone.common import controller
from keystone.common import dependency
from keystone.common import wsgi
from keystone import config
from keystone.contrib import federation
from keystone import exception
from keystone.i18n import _, _LI
from keystone.openstack.common import importutils
from keystone.openstack.common import jsonutils
from keystone.openstack.common import log

LOG = log.getLogger(__name__)

CONF = config.CONF

# registry of authentication methods
AUTH_METHODS = {}
AUTH_PLUGINS_LOADED = False

def load_auth_methods():
    global AUTH_PLUGINS_LOADED

    if AUTH_PLUGINS_LOADED:
        # Only try and load methods a single time.
        return
    # config.setup_authentication should be idempotent, call it to ensure we
    # have setup all the appropriate configuration options we may need.
    config.setup_authentication()
    for plugin in CONF.auth.methods:
        if '.' in plugin:
            # NOTE(morganfainberg): if '.' is in the plugin name, it should be
            # imported rather than used as a plugin identifier.
            plugin_class = plugin
            driver = importutils.import_object(plugin)
            if not hasattr(driver, 'method'):
                raise ValueError(_('Cannot load an auth-plugin by class-name '
                                   'without a "method" attribute defined: %s'),
                                 plugin_class)

            LOG.info(_LI('Loading auth-plugins by class-name is deprecated.'))
            plugin_name = driver.method
        else:
            plugin_name = plugin
            plugin_class = CONF.auth.get(plugin)
            driver = importutils.import_object(plugin_class)
        if plugin_name in AUTH_METHODS:
            raise ValueError(_('Auth plugin %(plugin)s is requesting '
                               'previously registered method %(method)s') %
                             {'plugin': plugin_class, 'method': driver.method})
        AUTH_METHODS[plugin_name] = driver
    AUTH_PLUGINS_LOADED = True

def get_auth_method(method_name):
    global AUTH_METHODS
    if method_name not in AUTH_METHODS:
        raise exception.AuthMethodNotSupported()
    return AUTH_METHODS[method_name]

class AuthContext(dict):
    """Retrofitting auth_context to reconcile identity attributes.

    The identity attributes must not have conflicting values among the
    auth plug-ins. The only exception is `expires_at`, which is set to its
    earliest value.

    """

    # identity attributes need to be reconciled among the auth plugins
    IDENTITY_ATTRIBUTES = frozenset(['user_id', 'project_id',
                                     'access_token_id', 'domain_id',
                                     'expires_at'])

    def __setitem__(self, key, val):
        if key in self.IDENTITY_ATTRIBUTES and key in self:
            existing_val = self[key]
            if key == 'expires_at':
                # special treatment for 'expires_at', we are going to take
                # the earliest expiration instead.
                if existing_val != val:
                    LOG.info(_LI('"expires_at" has conflicting values '
                                 '%(existing)s and %(new)s.  Will use the '
                                 'earliest value.'),
                             {'existing': existing_val, 'new': val})
                if existing_val is None or val is None:
                    val = existing_val or val
                else:
                    val = min(existing_val, val)
            elif existing_val != val:
                msg = _('Unable to reconcile identity attribute %(attribute)s '
                        'as it has conflicting values %(new)s and %(old)s') % (
                            {'attribute': key,
                             'new': val,
                             'old': existing_val})
                raise exception.Unauthorized(msg)
        return super(AuthContext, self).__setitem__(key, val)

# TODO(blk-u): this class doesn't use identity_api directly, but makes it
# available for consumers. Consumers should probably not be getting
# identity_api from this since it's available in global registry, then
# identity_api should be removed from this list.
@dependency.requires('assignment_api', 'identity_api', 'trust_api')
class AuthInfo(object):
    """Encapsulation of "auth" request."""

    @staticmethod
    def create(context, auth=None):
        auth_info = AuthInfo(context, auth=auth)
        auth_info._validate_and_normalize_auth_data()
        return auth_info

    def __init__(self, context, auth=None):
        self.context = context
        self.auth = auth
        self._scope_data = (None, None, None)
        # self._scope_data is (domain_id, project_id, trust_ref)
        # project scope: (None, project_id, None)
        # domain scope: (domain_id, None, None)
        # trust scope: (None, None, trust_ref)
        # unscoped: (None, None, None)

    def _assert_project_is_enabled(self, project_ref):
        # ensure the project is enabled
        try:
            self.assignment_api.assert_project_enabled(
                project_id=project_ref['id'],
                project=project_ref)
        except AssertionError as e:
            LOG.warning(e)
            six.reraise(exception.Unauthorized, exception.Unauthorized(e),
                        sys.exc_info()[2])

    def _assert_domain_is_enabled(self, domain_ref):
        try:
            self.assignment_api.assert_domain_enabled(
                domain_id=domain_ref['id'],
                domain=domain_ref)
        except AssertionError as e:
            LOG.warning(e)
            six.reraise(exception.Unauthorized, exception.Unauthorized(e),
                        sys.exc_info()[2])

    def _lookup_domain(self, domain_info):
        domain_id = domain_info.get('id')
        domain_name = domain_info.get('name')
        domain_ref = None
        if not domain_id and not domain_name:
            raise exception.ValidationError(attribute='id or name',
                                            target='domain')
        try:
            if domain_name:
                domain_ref = self.assignment_api.get_domain_by_name(
                    domain_name)
            else:
                domain_ref = self.assignment_api.get_domain(domain_id)
        except exception.DomainNotFound as e:
            LOG.exception(e)
            raise exception.Unauthorized(e)
        self._assert_domain_is_enabled(domain_ref)
        return domain_ref

    def _lookup_project(self, project_info):
        project_id = project_info.get('id')
        project_name = project_info.get('name')
        project_ref = None
        if not project_id and not project_name:
            raise exception.ValidationError(attribute='id or name',
                                            target='project')
        try:
            if project_name:
                if 'domain' not in project_info:
                    raise exception.ValidationError(attribute='domain',
                                                    target='project')
                domain_ref = self._lookup_domain(project_info['domain'])
                project_ref = self.assignment_api.get_project_by_name(
                    project_name, domain_ref['id'])
            else:
                project_ref = self.assignment_api.get_project(project_id)
                # NOTE(morganfainberg): The _lookup_domain method will raise
                # exception.Unauthorized if the domain isn't found or is
                # disabled.
                self._lookup_domain({'id': project_ref['domain_id']})
        except exception.ProjectNotFound as e:
            LOG.exception(e)
            raise exception.Unauthorized(e)
        self._assert_project_is_enabled(project_ref)
        return project_ref

    def _lookup_trust(self, trust_info):
        trust_id = trust_info.get('id')
        if not trust_id:
            raise exception.ValidationError(attribute='trust_id',
                                            target='trust')
        trust = self.trust_api.get_trust(trust_id)
        if not trust:
            raise exception.TrustNotFound(trust_id=trust_id)
        return trust

    def _validate_and_normalize_scope_data(self):
        """Validate and normalize scope data."""
        if 'scope' not in self.auth:
            return
        if sum(['project' in self.auth['scope'],
                'domain' in self.auth['scope'],
                'OS-TRUST:trust' in self.auth['scope']]) != 1:
            raise exception.ValidationError(
                attribute='project, domain, or OS-TRUST:trust',
                target='scope')

        if 'project' in self.auth['scope']:
            project_ref = self._lookup_project(self.auth['scope']['project'])
            self._scope_data = (None, project_ref['id'], None)
        elif 'domain' in self.auth['scope']:
            domain_ref = self._lookup_domain(self.auth['scope']['domain'])
            self._scope_data = (domain_ref['id'], None, None)
        elif 'OS-TRUST:trust' in self.auth['scope']:
            if not CONF.trust.enabled:
                raise exception.Forbidden('Trusts are disabled.')
            trust_ref = self._lookup_trust(
                self.auth['scope']['OS-TRUST:trust'])
            # TODO(ayoung): when trusts support domains, fill in domain data
            if trust_ref.get('project_id') is not None:
                project_ref = self._lookup_project(
                    {'id': trust_ref['project_id']})
                self._scope_data = (None, project_ref['id'], trust_ref)
            else:
                self._scope_data = (None, None, trust_ref)

    def _validate_auth_methods(self):
        if 'identity' not in self.auth:
            raise exception.ValidationError(attribute='identity',
                                            target='auth')

        # make sure auth methods are provided
        if 'methods' not in self.auth['identity']:
            raise exception.ValidationError(attribute='methods',
                                            target='identity')

        # make sure all the method data/payload are provided
        for method_name in self.get_method_names():
            if method_name not in self.auth['identity']:
                raise exception.ValidationError(attribute=method_name,
                                                target='identity')

        # make sure auth method is supported
        for method_name in self.get_method_names():
            if method_name not in AUTH_METHODS:
                raise exception.AuthMethodNotSupported()

    def _validate_and_normalize_auth_data(self):
        """Make sure "auth" is valid."""
        # make sure "auth" exist
        if not self.auth:
            raise exception.ValidationError(attribute='auth',
                                            target='request body')

        self._validate_auth_methods()
        self._validate_and_normalize_scope_data()

    def get_method_names(self):
        """Returns the identity method names.

        :returns: list of auth method names

        """
        # Sanitizes methods received in request's body
        # Filters out duplicates, while keeping elements' order.
        method_names = []
        for method in self.auth['identity']['methods']:
            if method not in method_names:
                method_names.append(method)
        return method_names

    def get_method_data(self, method):
        """Get the auth method payload.

        :returns: auth method payload

        """
        if method not in self.auth['identity']['methods']:
            raise exception.ValidationError(attribute=method,
                                            target='identity')
        return self.auth['identity'][method]

    def get_scope(self):
        """Get scope information.

        Verify and return the scoping information.

        :returns: (domain_id, project_id, trust_ref).
                   If scope to a project, (None, project_id, None)
                   will be returned.
                   If scoped to a domain, (domain_id, None, None)
                   will be returned.
                   If scoped to a trust, (None, project_id, trust_ref),
                   Will be returned, where the project_id comes from the
                   trust definition.
                   If unscoped, (None, None, None) will be returned.

        """
        return self._scope_data

    def set_scope(self, domain_id=None, project_id=None, trust=None):
        """Set scope information."""
        if domain_id and project_id:
            msg = _('Scoping to both domain and project is not allowed')
            raise ValueError(msg)
        if domain_id and trust:
            msg = _('Scoping to both domain and trust is not allowed')
            raise ValueError(msg)
        if project_id and trust:
            msg = _('Scoping to both project and trust is not allowed')
            raise ValueError(msg)
        self._scope_data = (domain_id, project_id, trust)

@dependency.requires('assignment_api', 'catalog_api', 'identity_api',
                     'token_provider_api', 'trust_api')
class Auth(controller.V3Controller):

    # Note(atiwari): From V3 auth controller code we are
    # calling protection() wrappers, so we need to setup
    # the member_name and  collection_name attributes of
    # auth controller code.
    # In the absence of these attributes, default 'entity'
    # string will be used to represent the target which is
    # generic. Policy can be defined using 'entity' but it
    # would not reflect the exact entity that is in context.
    # We are defining collection_name = 'tokens' and
    # member_name = 'token' to facilitate policy decisions.
    collection_name = 'tokens'
    member_name = 'token'

    def __init__(self, *args, **kw):
        super(Auth, self).__init__(*args, **kw)
        config.setup_authentication()

    def authenticate_for_token(self, context, auth=None):
        """Authenticate user and issue a token."""
        include_catalog = 'nocatalog' not in context['query_string']

        try:
            auth_info = AuthInfo.create(context, auth=auth)
            auth_context = AuthContext(extras={},
                                       method_names=[],
                                       bind={})
            self.authenticate(context, auth_info, auth_context)
            if auth_context.get('access_token_id'):
                auth_info.set_scope(None, auth_context['project_id'], None)
            self._check_and_set_default_scoping(auth_info, auth_context)
            (domain_id, project_id, trust) = auth_info.get_scope()

            method_names = auth_info.get_method_names()
            method_names += auth_context.get('method_names', [])
            # make sure the list is unique
            method_names = list(set(method_names))
            expires_at = auth_context.get('expires_at')
            # NOTE(morganfainberg): define this here so it is clear what the
            # argument is during the issue_v3_token provider call.
            metadata_ref = None

            token_audit_id = auth_context.get('audit_id')

            (token_id, token_data) = self.token_provider_api.issue_v3_token(
                auth_context['user_id'], method_names, expires_at, project_id,
                domain_id, auth_context, trust, metadata_ref, include_catalog,
                parent_audit_id=token_audit_id)

            # NOTE(wanghong): We consume a trust use only when we are using
            # trusts and have successfully issued a token.
            if trust:
                self.trust_api.consume_use(trust['id'])

            return render_token_data_response(token_id, token_data,
                                              created=True)
        except exception.TrustNotFound as e:
            raise exception.Unauthorized(e)

    def _check_and_set_default_scoping(self, auth_info, auth_context):
        (domain_id, project_id, trust) = auth_info.get_scope()
        if trust:
            project_id = trust['project_id']
        if domain_id or project_id or trust:
            # scope is specified
            return

        # Skip scoping when unscoped federated token is being issued
        if federation.IDENTITY_PROVIDER in auth_context:
            return

        # fill in default_project_id if it is available
        try:
            user_ref = self.identity_api.get_user(auth_context['user_id'])
        except exception.UserNotFound as e:
            LOG.exception(e)
            raise exception.Unauthorized(e)

        default_project_id = user_ref.get('default_project_id')
        if not default_project_id:
            # User has no default project. He shall get an unscoped token.
            return

        # make sure user's default project is legit before scoping to it
        try:
            default_project_ref = self.assignment_api.get_project(
                default_project_id)
            default_project_domain_ref = self.assignment_api.get_domain(
                default_project_ref['domain_id'])
            if (default_project_ref.get('enabled', True) and
                    default_project_domain_ref.get('enabled', True)):
                if self.assignment_api.get_roles_for_user_and_project(
                        user_ref['id'], default_project_id):
                    auth_info.set_scope(project_id=default_project_id)
                else:
                    msg = _("User %(user_id)s doesn't have access to"
                            " default project %(project_id)s. The token will"
                            " be unscoped rather than scoped to the project.")
                    LOG.warning(msg,
                                {'user_id': user_ref['id'],
                                 'project_id': default_project_id})
            else:
                msg = _("User %(user_id)s's default project %(project_id)s is"
                        " disabled. The token will be unscoped rather than"
                        " scoped to the project.")
                LOG.warning(msg,
                            {'user_id': user_ref['id'],
                             'project_id': default_project_id})
        except (exception.ProjectNotFound, exception.DomainNotFound):
            # default project or default project domain doesn't exist,
            # will issue unscoped token instead
            msg = _("User %(user_id)s's default project %(project_id)s not"
                    " found. The token will be unscoped rather than"
                    " scoped to the project.")
            LOG.warning(msg, {'user_id': user_ref['id'],
                              'project_id': default_project_id})

    def authenticate(self, context, auth_info, auth_context):
        """Authenticate user."""

        # The 'external' method allows any 'REMOTE_USER' based authentication
        # In some cases the server can set REMOTE_USER as '' instead of
        # dropping it, so this must be filtered out
        if context['environment'].get('REMOTE_USER'):
            try:
                external = get_auth_method('external')
                external.authenticate(context, auth_info, auth_context)
            except exception.AuthMethodNotSupported:
                # This will happen there is no 'external' plugin registered
                # and the container is performing authentication.
                # The 'kerberos'  and 'saml' methods will be used this way.
                # In those cases, it is correct to not register an
                # 'external' plugin;  if there is both an 'external' and a
                # 'kerberos' plugin, it would run the check on identity twice.
                pass
            except exception.Unauthorized:
                # If external fails then continue and attempt to determine
                # user identity using remaining auth methods
                pass

        # need to aggregate the results in case two or more methods
        # are specified
        auth_response = {'methods': []}
        for method_name in auth_info.get_method_names():
            method = get_auth_method(method_name)
            resp = method.authenticate(context,
                                       auth_info.get_method_data(method_name),
                                       auth_context)
            if resp:
                auth_response['methods'].append(method_name)
                auth_response[method_name] = resp

        if auth_response["methods"]:
            # authentication continuation required
            raise exception.AdditionalAuthRequired(auth_response)

        if 'user_id' not in auth_context:
            msg = _('User not found')
            raise exception.Unauthorized(msg)

    @controller.protected()
    def check_token(self, context):
        token_id = context.get('subject_token_id')
        token_data = self.token_provider_api.validate_v3_token(
            token_id)
        # NOTE(morganfainberg): The code in
        # ``keystone.common.wsgi.render_response`` will remove the content
        # body.
        return render_token_data_response(token_id, token_data)

    @controller.protected()
    def revoke_token(self, context):
        token_id = context.get('subject_token_id')
        return self.token_provider_api.revoke_token(token_id)

    @controller.protected()
    def validate_token(self, context):
        token_id = context.get('subject_token_id')
        include_catalog = 'nocatalog' not in context['query_string']
        token_data = self.token_provider_api.validate_v3_token(
            token_id)
        if not include_catalog and 'catalog' in token_data['token']:
            del token_data['token']['catalog']
        return render_token_data_response(token_id, token_data)

    @controller.protected()
    def revocation_list(self, context, auth=None):
        if not CONF.token.revoke_by_id:
            raise exception.Gone()
        tokens = self.token_provider_api.list_revoked_tokens()

        for t in tokens:
            expires = t['expires']
            if not (expires and isinstance(expires, six.text_type)):
                    t['expires'] = timeutils.isotime(expires)
        data = {'revoked': tokens}
        json_data = jsonutils.dumps(data)
        signed_text = cms.cms_sign_text(json_data,
                                        CONF.signing.certfile,
                                        CONF.signing.keyfile)

        return {'signed': signed_text}

    def get_auth_context(self, context):
        # TODO(dolphm): this method of accessing the auth context is terrible,
        # but context needs to be refactored to always have reasonable values.
        env_context = context.get('environment', {})
        return env_context.get(authorization.AUTH_CONTEXT_ENV, {})

    def _combine_lists_uniquely(self, a, b):
        # it's most likely that only one of these will be filled so avoid
        # the combination if possible.
        if a and b:
            return dict((x['id'], x) for x in a + b).values()
        else:
            return a or b

    @controller.protected()
    def get_auth_projects(self, context):
        auth_context = self.get_auth_context(context)

        user_id = auth_context.get('user_id')
        user_refs = []
        if user_id:
            try:
                user_refs = self.assignment_api.list_projects_for_user(user_id)
            except exception.UserNotFound:
                # federated users have an id but they don't link to anything
                pass

        group_ids = auth_context.get('group_ids')
        grp_refs = []
        if group_ids:
            grp_refs = self.assignment_api.list_projects_for_groups(group_ids)

        refs = self._combine_lists_uniquely(user_refs, grp_refs)
        return assignment_controllers.ProjectV3.wrap_collection(context, refs)

    @controller.protected()
    def get_auth_domains(self, context):
        auth_context = self.get_auth_context(context)

        user_id = auth_context.get('user_id')
        user_refs = []
        if user_id:
            try:
                user_refs = self.assignment_api.list_domains_for_user(user_id)
            except exception.UserNotFound:
                # federated users have an id but they don't link to anything
                pass

        group_ids = auth_context.get('group_ids')
        grp_refs = []
        if group_ids:
            grp_refs = self.assignment_api.list_domains_for_groups(group_ids)

        refs = self._combine_lists_uniquely(user_refs, grp_refs)
        return assignment_controllers.DomainV3.wrap_collection(context, refs)

    @controller.protected()
    def get_auth_catalog(self, context):
        auth_context = self.get_auth_context(context)
        user_id = auth_context.get('user_id')
        project_id = auth_context.get('project_id')

        if not project_id:
            raise exception.Forbidden(
                _('A project-scoped token is required to produce a service '
                  'catalog.'))

        # The V3Controller base methods mostly assume that you're returning
        # either a collection or a single element from a collection, neither of
        # which apply to the catalog. Because this is a special case, this
        # re-implements a tiny bit of work done by the base controller (such as
        # self-referential link building) to avoid overriding or refactoring
        # several private methods.
        return {
            'catalog': self.catalog_api.get_v3_catalog(user_id, project_id),
            'links': {'self': self.base_url(context, path='auth/catalog')}
        }

# FIXME(gyee): not sure if it belongs here or keystone.common. Park it here
# for now.
def render_token_data_response(token_id, token_data, created=False):
    """Render token data HTTP response.

    Stash token ID into the X-Subject-Token header.

    """
    headers = [('X-Subject-Token', token_id)]

    if created:
        status = (201, 'Created')
    else:
        status = (200, 'OK')

    return wsgi.render_response(body=token_data,
                                status=status, headers=headers)


text:
Up Hill, Into the Wind
Stuff wot I like.
Calendars.
October 10, 2012 · 11:10 am
Calendars – Flogs
Calendars – Flogs.
The current 2013 fixture list for Caythorpe CC
Filed under Cricket
Tagged as 2013, Caythorpe CC, Cricket, Notts Premier League
Simply Gone Bust
One of the benefits of having moved 'down south' is being able to watch the demise of Rangers from afar. I have no torch for either half of the so called Old Firm, although that term will have to be rethought. The less pleasant aspects of both clubs have spread throughout the country like Japanese Knotweed, choking off any chance of growth in support of clubs around Scotland.
Whilst there is no doubt something chastening for all clubs that one of the stature of Rangers can go to the wall, it's mixed with amusement and dollops of schadenfreude. They did after all bring it upon themselves.
Most amusing has been the strident tones with which Rangers fan base have maintained that somehow it's all the fault of Craig Whyte, a johnny-come-lately owner who purchased the club from Sir David Murray barely a year ago. Yes, he's been complicit. He wanted to make a fast buck, but, one look at the various charges laid at the clubs door should tell even the most rabid of the "Follow, Follow" brigade (and that's Blindly follow follow), that something has been amiss in the state of Denmark for some time.
In the early to mid 80's Rangers were not the club most are familiar with. They were a mid table side, playing to crowds of half the number they've seen in recent seasons. Aberdeen and Dundee United were the successful clubs in Scotland at the time, using youth policy and shrewd management from Alex Ferguson and Jim McLean to become respected in Europe. Enter David Murray, rebuffed in his attempts to buy his boyhood team of Ayr United, he successfully purchased Rangers. Installed Graeme Souness as player/manager and things would never be the same again for Scottish Football.
Rangers embarked on a spending spree. Established international players Chris Woods, Terry Butcher, Trevor Steven et al were persuaded north, trophies were once again piling up and, loyal fans flocking back. Club after club spent good money after bad enticing third and fourth rate European players to their squads in an effort to keep up. Fergus McCann at Celtic had to do away with the infamous biscuit tin. The thing is, sanity gradually took hold. Clubs began to cut their cloth, yes, even Celtic. Not however, Rangers. Blinded by the need to one up their hated rivals, new and more elaborate means were found to continue bringing in the mercenaries. The sense of entitlement amongst their fans only grew.
And now, the house of cards has come crashing down. The financials don't appear to have been wholly above board. Tax evasion, EBT's, double contracts. Systematic cheating to further tilt a playing field that was never level to begin with, Rangers enjoy significant advantages over the rest of the SPL, except Celtic. More TV money goes the way of the big two than does the rest of the SPL, the numbers required in a vote to change anything in the SPL were skewed to ensure nothing could go against the big two.
Outside of the financial wrong doing (alleged), it amounts to cheating on the field of play. By not paying certain things everyone else was paying, they could pay more on players. Thus bettering their squad further and probably winning more than they would have done had they played fair. Not for one second do I imagine it would have been a utopian ideal, Rangers may well have won all the trophies over the time frame they did anyway, but, we'll never know.
Has there been one word of remorse? From anyone connected with them? Err, no, just finger pointing and claims of a vendetta. The usual paranoid fantasies of Old Firm fans who believe everything is about and for them.
For any number of years now, both Rangers and Celtic have publicly claimed to be seeking entry to the English Premier League, for that way riches lie, and indeed Scottish clubs were reassured that the SPL would continue without them, for no club is bigger than the league. Suddenly, with the club facing the prospect of liquidation, it became, "Scottish football NEEDS us".
And so, they have been liquidated. Rangers are no more; instead there is The Rangers, a club with no history and at the moment no league to play in. The SPL will vote on July 4th on whether or not The Rangers should be allowed Rangers' SPL share and thus take their place in the SPL. This leads to further complications. Many Rangers fans point out that as The Rangers are a new club, with none of the history etc. of Rangers, they therefor should not be liable for any of the punishments to be meted out once the legal processes have taken place. This ignores a couple of things:
1.	If no punishment is to be made that sets up a precedent whereby any club can just walk away from it's debt and carry on as though nothing was amiss.
2.	It's a new club, therefor it should have to go through all the same application processes as any other new club would in order to gain league status.
The second of these is the most interesting to me. Assuming a vote is passed denying them access to the SPL, it seems to have been taken as read that the club will just enter the SFL in division three. This just glosses over the fact that there is a process to gaining entry to the SFL. Clubs like Cove Rangers and Spartans have tried and failed recently, and I'm sure there would be legal challenges should this be a mere fait accompli. There is no guarantee that SFL clubs would vote to allow them in anyway, quite apart from the due diligence angle, as Peterhead have already mentioned, why ruin the competition by allowing this club in. Once again turkeys, voting and Christmas spring to mind.
The new season fixture list was announced and it threw up some interesting discussion points. The SPL list contained "Club12" the designation given for whatever club takes Rangers place. Conspiracy theorists have been analysing the list since and the following points jump out:
1.	Celtic face Club12 on Boxing Day. It's normal at this time of year for there to be a Rangers v Celtic clash – is this a sign that The Rangers will be allowed in the SPL?
2.	Celtic have a home game on the same day as Club12 once, Dundee United have a home game on the same day as Club 12 nine times. – another sign The Rangers are coming? It's widely believed that Dundee are in pole position to take Rangers place, in this scenario that would require 9 games to be rescheduled on police advice. Does this make it more likely that The Rangers are Club12? I could be that Dunfermline get unrelegated!!
3.	Whilst the SPL have taken a simple route and can just replace Club 12 with whoever, the SFL will face a bit of a nightmare reshaping their fixture list should Dundee/Dunfermline be in the SPL and should The Rangers pitch up somewhere in the SFL. Another sign that The Rangers are expected to go to the SPL?
Who knows? It just gets more complex and more surprising by the day. Walter Smith appeared to lead a bid to take over The Rangers, however his white steed had a panic attack and bolted with him still on board just a few hours later. News of another bidding team has been reported in the last day or so too. To top this though, stories have begun to circulate of the new ownership at the club hatching a plan to purchase Bury, an ENGLISH League 1 side. Bury would then be moved wholesale to Glasgow, renamed as The Rangers and presto! Goodbye SPL, hello, well ok, League 1.
This smacks of yet more, "we're taking our ba' away" posturing, the big "we dinnae need you but you need us" grandiose arrogant scheme old Rangers were very fond of. The logic of it defies thought!
Worst case in Scotland would see them entering Div 3 of the SFL with the likelihood being that with the Rangers name and new financing they would cruise through to Div 1 in successive years. Year 3 would be a bit tougher but they should gain promotion to the SPL then. That would also be the end of the 3 year European ban. So Year 4, when they are again eligible for Europe, they are in the SPL and probably mounting a challenge for trophies and qualification for Euro competition.
Assuming the myriad logistical issues and footballing boards in England, Scotland, UEFA and FIFA can be overcome, there is no guarantee of anything in England for them. League 1 can be tough to get out of, ask Sheffield United!, and the Championship even harder. They could slog for seasons just to get a sniff of the EPL, and Europe a pipe dream long after the ban is lifted.
Sadly though all of this seems moot, despite numerous SPL clubs having made noises about 'sporting integrity' it seems they are paving the way for a vote that would allow The Rangers into the SPL. Kilmarnock being the worst offenders here, tripping over themselves to kiss Rangers buttocks at every opportunity. Recent boardroom shuffles at Aberdeen can be interpreted wither way, but many feel it clears the way for a yes vote. Rumours are also emerging of a "compromise deal" that would see The Rangers accepted to the SPL and then immediately relegated to Division 1.
Whatever happens, we do indeed live in interesting times.
Filed under Sport
Tagged as Aberdeen, Bury, David Murray, football, liquidation, Rangers, SFL, SPL, Walter Smith
Milking The Cash Cow
This post comes out of Twitter exchange with @LegsideLizzy, @ErikPetersen and myself on the subject of comments made by Muttiah Muralitharan on England's domestic Twenty20 cricket competition. I hope I don't misrepresent them in any way, and thank them for planting the seed in my head on a day when I had nothing better to do than end up thinking about this way to much.
The jist of the comments from Murali, which can be found here (the BBC website) are that the current T20 set up in England is "old fashioned". He advocates a move to franchise teams and even merging counties.
To my mind, these are separate and distinct possibilities and are mutually exclusive. Both have enticing pro's and both are fraught with potentially damaging cons, but both have the same end game, an English version of the IPL, with around 8 teams containing the cream of the county game and a half dozen of the world games top stars.
On the face of it, this would seem like a good thing, and indeed the model has been pretty successful around the world of the major cricketing nations. England however, may just be it's nemesis.
In no other of the major nations is cricket so firmly entrenched. None of the other countries have an equivalent to the County Championship consisting of 18 teams. None of the other nations has such a small window of optimum weather to play all their cricket in. A window which seems to be opening and closing more over a longer period, but leaving fewer days where play is possible.
So, what do we need to get an "EPL" up and running?
On the basis that any team owner, whether it be a merged county set up or a franchise, is going to want to maximise their gate money and associated concession sales, then it would make sense to host these games at the existing venues. There are international class grounds available in Durham, Leeds, Manchester, Birmingham, Nottingham, Cardiff, Bristol and Southampton with a further two in London. The issue here is that these grounds are in use by the resident counties, and also for international commitments. A merger of existing counties would bypass one of these problems, and the necessity for star players would also alleviate the second as there would have to be a time frame created for this tournament with no clashing international cricket being played.
One of the points put forward this morning would have been the potential, within a franchise based model, for minor county areas such as Cornwall to bid for a franchise. Whilst a laudable aim, the lack of facilities would be a stumbling block that would need time to overcome. An investment of that ilk would also likely need guarantees of usage beyond the short EPL season. Franchise owners will need to be able to negotiate use of these grounds. Opening up the potential for regular franchise movement as each owner looks to sign a sweetheart deal with a city eager for a piece of the pie.
This last is one of the reasons "franchise" is seen as a bad thing in the UK. Clubs in the UK have a history and a sense of place generally because the have grown up organically there. MK Dons are derided as "Franchise FC" because the parachuted in from elsewhere. Fans, set in their ways with their county loyalties are unlikely to take to a merged set up because of the tainting of their team by a rival, nor are the likely to have an affair with a franchise. The fear of it moving as ownership chase greener pastures of cash being just part of it. Yes, rules could be drawn up preventing that sort of cash grab, but, that would just make the investment even less attractive to any prospective owner.
Any league needs teams. Currently the T20 is made up of the 18 First Class Counties, split into 3 groups of six, each team playing ten games. There are then quarter finals, and a finals day where both semi-finals and final are played.
For any move toward an IPL model, 18 is too many. The talent pool is left thinner as the best players have to be spread between the clubs. Looking at the other world leagues, numbers range from 5 in Zimbabwe to 11 in Pakistan. Of the key competitions any prospective EPL would look to be modelling itself on, in South Africa they have 7 teams, Australia 8 and India 9.
The simplest thing to do would then be to follow Murali's lead and merge counties. This could conceivably cut the numbers to 9 or 8 with minimal fuss. A quick scan of the county cricket map could give:
Leeds – based on Yorkshire
Manchester – based on Lancashire
Durham – initially felt they could merge with Yorkshire, but as I had no-one merging with Lancashire, there's no way Yorkshire would've taken "help" if Lancashire weren't getting any!
Birmingham – taking in Warwickshire, Worcestershire and Gloucestershire
Cardiff – Glamorgan based
Southampton – joining Hampshire with Somerset and Sussex
Nottingham – joining Notts with Derbyshire, Leicestershire and Northants
North London – Middlesex and Essex
South London – Surrey and Kent
Nine teams all playing at current international venues! Wait, did I say "with minimal fuss"? Hmm, anyone who saw the kvetching from the FA's of Scotland, Wales and Northern Ireland over Team GB at the Olympics, knows this bird will fly about as well as the Dodo did.
So, we have to go to a franchise set up, right? Nine new sets of colours, nine city identities no doubt with an animal mascot bearing no resemblance to anything seen in that city. Sorry Superleague, but the only Rhino's ever to have been in Leeds are plastic and on the shelves in Toys'r'Us. At least the clubs can generate publicity by having a naming competition, just so long as the Durham Durhams is one of the teams.
The obvious source of players for any merged counties is the county squads themselves, augmented by the overseas stars. The main gripe against the current system is that only two overseas players are allowed, and no England, or by extension, touring team players are included. Merging could solve one of those problems, in that, the best of each counties squad would become available, long with the finance for multiple overseas players, up to a limit of five or six if the IPL model is followed. Getting the England etc players in would require a change in the calendar to make this happen. A fully franchised model would mean practically everyone being put into a put to be auctioned/drafted, which is fine for those selected, but what about those many who would be surplus to requirements? A county cricketer's lot is not an easy existence without making him surplus to requirements for a month in the middle of the season. None of the counties are going to want to play any form of cricket if the are shorn of their better players during this time period.
Administrators and ideas people love to talk of the potential of untapped wallets just waiting to be emptied into their laps, and there is no shortage of deluded people in these industries. One look at the "Apprentice" illustrates that. This idea does not rest on the "County Tragic" being enticed along, it's all about the new audience, the young, sexy, cash to burn professional types. Oh…..
On the face of it, having counties merge, pooling their T20 budgets and resources would appear to make sense. For many, the share of the profits would probably be higher than it currently is. The theoretical bigger gates garnered by them playing at the bigger grounds, the possibly increased TV money would all aid this. But would it? There is a potential for fans to stay away. They identify with their counties and are likely to vote on any dilution/pollution of their team by staying away.
Similarly, a franchise model may not bring the fans flocking. For reasons mentioned above they may struggle beyond the initial curiosity phase to attract an audience. The big ticket for franchisees is the TV deal. SKY are the existing broadcasters, but would have to renegotiate regardless of the model used. The change in number of games and format would see to that. They'd also be likely to have competition. ESPN have links to Indian broadcasters and given the IPL nature of this venture it would seem to make sense to capitalize on increased interest from the sub-continent by getting broadcast rights. Even little ITV4 who go a bundle on the IPL might look to dip a toe in.
However, this all relies on finding 9 men or women with money to burn on a cricket tournament. In the middle of a recession.
The final conundrum, is when to play it. The English domestic season is already a Dante-esque mish mash of little windows for it's various competitions, interspersed with International cricket, and regardless of how the teams are formed, this is going to be the single biggest stumbling block.
This years T20 contest runs from 12 June to 8th July, with quarter finals on 24th and 25th July and finals day 25th August. This won't work for either of the new models. In order to keep all the big name players around, the tournament will need to be structured so it starts and ends within a single timeframe.
The initially run of four and half weeks ought to be enough to get a reduced format tournament played. With 9 teams, each team would have 16 fixtures. Add in the knockout games and it's a 5 week window.
In that time frame, England play 3 ODI's and a T20 against the touring West Indians. They then spend roughly two weeks playing a bolted on series of 5 ODI's against Australia. They have a week off before starting a test series with South Africa.
There are very few fans, administrators or broadcasters who would have that program put on hold to allow players from England, West Indies, Australia or South Africa to play in a hit and giggle contest. I'd surmise most of the players would rather play in the international stuff too.
To my mind, the timing of this is the biggest stumbling block, as no matter which model is used, the clash with international cricket needs to be worked out. Something for greater minds than mine.
As indeed was this "article". Maybe someone can make sense of it, but I wrote it, and I can't.
Tagged as Cricket, muralitharan, t20
Some bad, mostly good
The three weeks following the home loss to Plumtree have seen a collection of largely positive results.
First up was a trip to Costa del Papplewick Hall, where having won the toss, skipper Hunt elected to bat first. Steve Allcoat starred with the bat, hitting an unbeaten 73. With backup from Mierkalns (35) and Bicknell (33) a total of 223 for 9 was posted. This felt maybe 20 or so runs short of par.
That assessment seemed bang on as Dowman (32), Vines (51), Nel (68) and Nelson (29) set about the chase. However, with Hindson and Muzaffar chipping away things began to slow down. Haines then struck twice in an over and it was nerves all round. Needing six off the final over, Papplewick were unable to get much, and requiring 2 from the final ball for a win, could get nothing and had to settle for the losing draw. A "burglary" indeed.
No matter the weather leading up to, or just after a game a Papplewick Hall, I always end up lobstered to thermidore proportions when we go there.
Just a week later, and what felt like a 20degree down shift in temperatures, the star-studded WI Cavaliers come to Caythorpe.
This lot are ridiculously loaded, Alex Tudor and Usman Afzaal both played test cricket for England. Bilal Shafayat has been around the county scene fro some time. A number of others have star performers at various clubs, and of course there is the legend that is Saqlain Mushtaq (208 test wickets, almost 1000 runs). Only weather can stop them winning the league. Toss lost and the hosts were inserted. The innings never really got going, Alex Tudor shaking things up with 4 wickets and a bruiser to the arm of Hunt. (Hunty hasn't played since). Thanks to the lower order digging in, marshalled well by an unbeaten 30 from Usman, the homeboys made it to 172 for 9.
Jim Hemmings struck first ball of the Cavs innings, but this only seemed to rile Bilal Shafayat, or he had an early dinner date, as he wasn't for hanging about. His 96not out coming from 91 balls and seeing Cavs home for the loss of 3 wickets in the 31st over. A chastening result, but not the first, or indeed last the Cavs will hand out.
Two days later and league leaders Cuckney came calling for a Holiday Monday fixture. With the start delayed by rain, the umpires elected to reduce the match to 48 overs per side. On winning the toss, the visitors chose to bat. A decision that looked suspect after a fine spell from Hemmings (3-27) reduced them to 46 for 4. Butler and Parkin righted the ship a little with a stand of 80, but this was the cue for Kafeel to enter and blow away the tail. His figures of 5 for 46 ending the innings on 155. Strangely that's pretty much a par score at Caythorpe first up this year.
The reply started slowly. Mierkalns out early and a painstaking 50 stand between Hawley and Bicknell saw the scoring rate hovering around 2 an over for long periods. The plan for later acceleration coming unstuck as both fell in quick succession along with Landa and stand-in skipper Allcoat. Hindson and Oldham added 50 together, and as Jimmy O reached 50 it was looking good. Entering the final over with 8 wanted, Oldham was run out off the second ball. 5 needed off 3, single to Muzaffar. Kafeel, new to the crease got 2 from his first ball, leaving 2 needed from the last ball. Boot on the other foot from the Papplewick game, but no worries. A cut for 4 delivered the win.
The most recent fixture was a visit to the Notts Sports Ground to take on the Academy, now top of the league after Monday's results. Acadamy captain, Parkin-Coates won the toss and invited Caythorpe to bat. Webster and Gamble then reduced the side to 66 for 6. Only Mierkalns causing any problems with 33. From this point there was more tail wagging than at Crufts, as Hindson (23) and Hemmings (37) added 61. Usman chipped in with 22 and Kafeel hit 17 from just 6 balls to close the innings on 185 for 8.
Overlooked by a legend
The Academy reply followed a similar pattern. Wickets falling regularly as batsmen got starts but couldn't go on. Aided by Usman taking 4for 38, the Academy were reduced to 90 for 8 and with 15 overs left outright victory looked there for the taking. Hutton (34*) and 16 year old Ben Kitt (28*) had other ideas, steering the home side in for a losing draw, as the closed 40 runs short.
Tagged as Caythorpe CC, Cricket
Swings and (Falling off the) Roundabouts
Very much a case of rescuing defeat from the evil clutches of victory last Saturday, as Plumtree left Caythorpe with the points.
Having lost the toss and been inserted, Caythorpe made a steady start moving to 70-2 before, Bicknell pulled up lame completing a second run. This meant a runner, though before the fun and games that usually entails, he holed out to cover. There then followed the "comedy" dismissal of Josh Meirkalns. Holding his pose to convince the umpire to turn down the l.b.w. appeal, he was out of his ground. The quick thinking Sam Storey had time to run in from point, whip off the bails and secure a run out. A dismissal only Josh could conjure up….
This led to a wickets falling in pairs with no one able to provide Hunt with enough support. The skipper last man out for a top scoring 36, with the total 152.
The feeling at tea was that this could be worth a few more than it looked as conditions weren't exactly summer.
Opening up with Hemmings and Haynes, the home side quickly blew away the top order. Plumtree reduced to 24-5. A patient partnership between captain Finney and keeper Stockdale took the score to 47, before Finney fell. Caythorpe still heavily favoured for the win. Rana joined Stockdale and took the total to 98 before becoming Haines' 4th victim. At this point the tally of 152 was to work against Caythorpe. With a required run rate of always around 3 there was no pressure on the batsmen to take risks. Picking up the singles, with the odd boundary and looking rarely troubled, with the exception one dropped catch (Hunty again the culprit), Matt Milnes joined Stockdale and saw the visitors home with 2 overs to spare. Stockdale finishing on 59 off 107balls.
Plenty for Caythorpe to think about then, going in to the trip to Papplewick and Linby on what looks set to be the warmest day of the season so far. Not hard, even for someone brought up playing cricket in Scotland, and despite the heater, the score box was bloody Baltic.
Tagged as Caythorpe CC, Cricket, NCB Premier League, Plumtree CC
Curtain Up – New Season starts now
Caythorpe Dig Deep in Kimberley
Week four of the Notts Premier League and at long last Caythorpe's season could begin. Having fallen short at Chesterfield in the National Cup six days previously, it was to the Private Ground at Kimberley attentions were turned.
Skipper Hunt won the toss and on a ground showing no ill effects from all the rain invited the home side to have first dig.
After six overs he may well have been regretting the decision. Birch, employing a "see ball, hit ball" tactic, aided by a generous helping of wides and no-balls, saw the score race to 57. Enter "The Dot Machine". Tim Haines' introduction to the attack started to slow things a little. James Hemmings inducing a snick from Birch, snaffled by Steve Allcoat applied a further brake on the scoring.
Darren Bicknell replaced Hemmings at the Pavilion End and together with Haines proceeded to start tying down the batsmen. The scoring rate continued to drop, and Ogrizovic was next to depart, bowled Haines having added 40 with Terry. With the score on 102-2 a big total still looked on the cards. Terry didn't last much longer, Bicknell picking him up, before Haines got to work. Patel, Sidhu, Riley and Wheatley came and went as the big man finished with 5 for 42 off his 15, reducing the Kimberley lineup to 148 for 7. Importantly for Kimberley, James Mann was still at the crease. He'd had a life, having been dropped when on 17, but with support from first Roberts then Wright, he was able to take the innings into the 50th over, striking three sixes on his way to an unbeaten 59. The run out of Adams ending the innings with 3 balls remaining. The total of 212 all out significantly fewer than had looked on the cards in the early part of the innings. Credit to the Caythorpe bowlers for sticking at it and dragging it back, whilst one or two of the batsmen may want their final strokes back.
Post tea, and Kimberley came out fired up to defend their score. Plenty of noise and chat in the field, backed up good opening spells from Wright and Roberts. Neither bowler giving anything away, as they made early inroads. Both Hawley and Landa making six before each was cleaned up.
With Kimberley seemingly back on top, Bicknell and Mierkalns came together. Bicknell using his experience to rotate the strike, both cashing in on the rare bad ball, and slowly a partnership began to develop. None of the change bowlers were given a chance to get into any rhythm as two and three over spells became the order of the day. Bicknell was first to his 50, followed shortly after by Mierkalns, who appeared to be in the mood and having hit back to back fours to go past 50 was promptly out, adjudged lbw to the returning Roberts. None the less the partnership of 118 looked to have laid the platform for victory. Allcoat joined Bicknell, taking the score to 174. Dominic Wheatley entered the fray for the hosts and struck with two wickets in his first over. Bicknell his first victim, offering a tame catch to Patel, James Oldham the second, lbw for 6.
Having been very quiet for several overs, the Kimberley fielders began to find their voices once more, Hunt as captain been encouraged to feel the nerves of the situation. He and Allcoat remained calm however slowly chipping away at the runs required until a pair of boundaries from Allcoat sealed the win with 15 balls remaining.
A great win to get the season underway, with both sides enjoying periods of the game where they looked favourites to win. Next up, the first home match of the campaign as Plumtree come to Caythorpe.
Scorecard is here.
Tagged as Caythorpe CC, Kimberley CC, NCB, Notts Premier League, Plumtree
@paulbab5 We bought American as they had the numbers. I don't feel we had "bad" tanks per se. Just prioritised diff… twitter.com/i/web/status/1… 1 day ago
@WhatLastsLasts Yup. She knows how to hold a room. Gallus as they say in Scotland. 1 day ago
@paulbab5 They touched on that in an early pod. Priority was defence of Britain in early war. That meant planes to… twitter.com/i/web/status/1… 1 day ago
RT @Official_MRLP: We will make the 'changing of the clocks' a weekly event. Clocks will be moved forward on a Monday morning to reduce the… 1 day ago
@WhatLastsLasts I don't know anyone that doesn't have a crush on her. 1 day ago
Free music - Socratic ME7
Ananyah.com
Cricket Betting Blog
Cricket with Balls
Edinburgh's friendliest cricket club
Karen230683
King Cricket
Leg Side Lizzy
Legsidefilth
Miss Field's Cricket Blog
My Spotify playlist
PsychoPuckLady
Sarah C's Cricket Pics
Swanning About
THE best Maple Leaf fan site bar none
UKhockeyfan
access rights Aerial Assault Angus Fraser BA BBC Big Brother BNP Bodeans Borders Boyle brasses Buckeye Caythorpe CC Channel 4 combo Copenhagen Cricket dirty Dogma dreams Edinburgh Endemol England ESCA Facebook followfriday Football Manager Guardian Hayek Independent Internet Jets Kensington Ken Stott London Maccy D's meat memory Michael Sheen Nandos nets Newcatle News of the World NFL Nick Griffin Notts Premier League Obama Ohio Olympics outdoor pc post prostitutes Quahog Question Time Ratho RHC Richard Hadlee Rooney Roseburn Scotland Sky snow stick stripper Swine Flu The Apprentice training Twitter unfit USB winter wordy work world cup
chappers67 on Milking The Cash Cow
Erik Petersen (@Erik… on Milking The Cash Cow
Ajithkumar Chandramo… on When Six Tribes Go To War
Up Hill, Into the Wind · Just another WordPress.com weblog

redpajama_set_name: RedPajamaCommonCrawl


Discussion in 'Samsung Fascinate Development' started by Cruefan, Aug 25, 2011.
C'mon people. Isnt there someone on these fourms that can help me with my question?
You need to do a lot of research. the question u asked has already been answered and you posted in the wrong section. Don't worry this happens to every newbie.
Yeah, if you can't find a good guide here, check xda, that's where I got all the info for modding my wife's fascinate the other day.


You can buy white diamonds Perfume on sale today and it can be shipped to you for a reasonable fee. We update our site daily so check back for more white diamonds by Elizabeth Taylor Perfume.
All our Perfumes are 100% original fragrances. We do not sell any immitations or knockoffs. You may purchase white diamonds Perfume by clicking on the order items button .
Join Our white diamonds Coupon List and get white diamonds for its lowest price.


text:
Q: Android DefaultHttpClient connection reuse I am using DefaultHttpClient for connection. What I would like to do is "keep checking if it's alive" and when timeed out, reconnect. How can I do that ? I tried that entity is not null the consumeContent. Is it not working for me.

A: One way to handle this is to set a HttpRequestRetryHandler and deal with the retry accordingly.
client.setHttpRequestRetryHandler(retryHandler);

You can also adjust the timeout via the HttpParams as noted here which may suffice depending on your exact needs; however building in retry behavior is a good approach either way.
final HttpParams httpParameters = yourHttpClient.getParams();

HttpConnectionParams.setConnectionTimeout(httpParameters, connectionTimeOutSec * 1000);
HttpConnectionParams.setSoTimeout        (httpParameters, socketTimeoutSec * 1000);

redpajama_set_name: RedPajamaStackExchange


India on Monday stepped up heat on the Kulbhushan Jadhav issue, with External Affairs Minister Sushma Swaraj complaining that Pakistan was yet to give a visa to his mother to meet the Indian national sentenced to death for alleged spying.
She also insisted that all Pakistani nationals seeking medical treatment in India should get their applications vetted by Islamabad's foreign affairs advisor Sartaj Aziz and wondered why he was not doing it.
"I have my sympathies for all Pakistan nationals seeking medical visa for their treatment in India," Sushma Swaraj tweeted.
"I am sure Mr.Sartaj Aziz also has consideration for the nationals of his country," she said.
"All that we require is his recommendation for the grant of medical visa to Pakistan nationals."
Sushma Swaraj said that she saw no reason why Aziz should hesitate to give his recommendation for nationals of his own country.
The Minister raised the issue of Jadhav and said she had personally written to Aziz regarding the visa to Avantika Jadhav who wanted to meet her son languishing in an unknown military prison in Pakistan.
"I wrote a personal letter to Mr. Sartaj Aziz for the grant of her visa to Pakistan. However, Mr. Aziz has not shown the courtesy even to acknowledge my letter," she said.
Jadhav was said to have been arrested from Pakistan's restive Balochistan province in March 3, 2016. Pakistan claimed that he was involved in spying and terror activities in Balochistan, a charge rejected by India. He was convicted in April by a Pakistani military court and sentenced to death.
In May this year, India moved the International Court of Justice at The Hague, which then stayed the execution pending a final decision by the court.
In May this year, India had said that only a letter of recommendation by Pakistan Foreign Affairs Advisor Aziz will enable a Pakistani national to get a medical visa for India.


text:
Now Reading: Bringing the Dead Home
Bringing the Dead Home
Thirty years after Congress passed the Native American Graves Protection and Repatriation Act, only a fraction of human remains held by Texas' museums and universities have been returned.
J.D. Reeves
By Amal Ahmed
Ramón Vásquez can't tell you exactly how many of his relatives have been dug up. He can't tell you how many are now stored in climate-controlled rooms at museums or universities. And he can't tell you how many more will be unearthed when shovels hit the ground at construction sites in and around San Antonio's historic colonial missions. Vásquez is a member of the Tap Pilam Coahuiltecan Nation, a tribe that still calls South Texas and Northern Mexico home. When Spanish colonizers arrived in the region in the 18th century and met the Coahuiltecan tribes, they didn't violently force them off their lands or kill them on sight—for the most part. Instead, the Spanish built missions like San Juan and Valero, more commonly known as the Alamo, and attempted to convert Indigenous communities to Catholicism. Some were then buried on the mission grounds as Catholics.
By the 20th century, archeology and anthropology students in Texas were taught that the Coahuiltecan were extinct. In fact, a popular university-level textbook published in 1961 and widely used for several decades stated that the tribes had "dwindled to almost nothingness" and been "destroyed by disease or absorbed into the Mexican population."
Yet the Coahuiltecan remain. The tribe has never been recognized by the federal government and the State of Texas doesn't have an official process to designate tribal recognition, leaving Vásquez and other tribal members in a legal limbo when it comes to repatriating the remains of their relatives. Under a federal law called the Native American Graves Protection and Repatriation Act (NAGPRA), passed in 1990, institutions such as museums and universities that receive any federal funding and hold Indigenous remains in their collections are required to repatriate them to the tribes they belong to. But while such institutions are required to work with federally recognized tribes, NAGPRA does not mandate they work with tribes without recognition. Therein lies the rub: In Texas, many of the remains belong to tribes that are not federally recognized, which means that federal law doesn't apply to them. People like Vásquez are left to the whim and goodwill of university and museum curators.
"It is kind of like if a scientist went and dug up your grandmother and put her in a repository—and then asked you to fund reburying her."
Vásquez is the executive director of American Indians at the Spanish Colonial Missions, an educational and advocacy nonprofit working to dispel the myth that the tribe has disappeared while pushing for the return of its ancestors' bones—whether dug up through archeological research excavations or, more recently, during construction projects. Vásquez says the work takes much of the organization's time. "It was never meant to be our job," he says. "But it sure did turn into that."
Thirty years after Congress passed NAGPRA, the vast majority of human remains haven't been returned. Instead, collections have been moved to climate-controlled facilities while institutions muddle through the process of identifying thousands of remains and tribes struggle to find the funding needed to repatriate and rebury their relatives. The NAGPRA office doesn't track the number of remains actually reburied, but of the nearly 200,000 remains held in federally funded collections nationally, only 40 percent have even gone through the process—a low standard indicating that the institutions that own the collection have, at the very least, attempted to consult with tribes to determine the cultural affiliation of said remains. In Texas, the proportion is lower: Just a quarter of the state's nearly 5,000 Indigenous remains have gone through the NAGPRA process. The Texas Archeological Research Laboratory (TARL) at the University of Texas at Austin, by far the state's largest archeological repository, holds the remains of 2,000 Indigenous people, the vast majority "culturally unaffiliated" with any tribe. To date, the remains of only two people have been returned from UT's collections.
Until Congress passed NAGPRA it was legal and, for the most part, academically acceptable for archeologists and anthropologists to excavate burial sites and conduct experiments on human bones, pottery, and funeral items, or to use them as teaching tools. "Native people were considered archeological objects, like pots," says Jackie Swift, a member of the Comanche and Fort Sill Apache tribes and the repatriation manager at the Smithsonian's National Museum of the American Indian. "In the 19th century, there was this epiphany, like, 'Oh no, the Indians are vanishing, so we need to take everything we can in order to preserve them in museums.'" This, despite the fact that the U.S. government engaged in ethnic cleansing and outright genocide to remove Indigenous communities from their homelands.
In the 1980s, archeologists were often hired by private developers for cultural resource management prior to construction projects, meaning that tribes to whom remains belonged may never have known that their ancestors had been dug up. NAGPRA provided the first legal pathway for Indigenous peoples to reclaim human remains held in these collections. The law required institutions to take human remains and funeral objects out of display cases or research labs and to create inventories of them. Tribal representatives could then access those inventories, make claims for repatriation, and finally rebury their dead. For the first few years, NAGPRA exclusively allowed federally recognized tribes to make repatriation claims but was later revised to allow others, like the Coahuiltecan, to submit claims when no federally recognized tribe claimed the remains.
Donate now to support independent, nonprofit journalism.
But ultimately, universities and museums have the final say on whether or not to engage in consultation with tribal nations. When remains are culturally unaffiliated—meaning that the curator of a collection can't definitively determine which tribe the remains should be returned to—progress comes to a virtual standstill. The lack of affiliation, whether it's because the remains are deemed too old or there's no concrete evidence, can be used as a reason to deny consultation—particularly with non-federally recognized tribes.
This July, the Texas Archeological Research Laboratory turned down a repatriation request from another Coahuiltecan community, the Miakan Garza Band, which claimed that UT's collections included several of their ancestors who lived in what is currently Hays County. Brian Roberts, the center's director, said that the band hadn't provided enough evidence. When the tribe appealed the decision to the university president's office, Carlos Martinez, the former chief of staff, wrote that "the law requires that certain standards be met, and, in this case, the facts simply cannot justify the requested repatriation. The law does not allow repatriation simply because a group is willing to rebury the remains." Then, after pressure from faculty, staff, and students, UT reversed course in late September and announced it would seek approval from the National Parks Service to transfer control of the remains to the tribe.
"UT, which has repatriated remains in the past, has sought all along to follow best practices and federal law," J.B. Bird, the university's spokesperson, said in a statement. "Consulting the Native American Graves and Repatriation Act Review Committee offers another way to do that."
Despite its flaws, NAGPRA is championed by Indigenous peoples as a crucial, if incomplete, first step toward undoing centuries of plunder. But it's been a slow process. The inventories, required after the law was passed, were not due until 1995, says Melanie O'Brien, the manager of the NAGPRA program, and "that was the extent of the proactive requirements on a museum [or university]."
Many institutions are still making up for decades of poor record-keeping on remains that ended up in their collections. Southern Methodist University in Dallas, for example, submitted its required inventories in 1995, only to discover in 2013 that some of the collections, which had been closed due to budget cuts or put on loan to other institutions, were never reported to the federal government. It took two more years to raise funding and complete the inventory and determine the cultural affiliation of the remains, says Sunday Eiselt, an anthropology professor who oversees SMU's repatriations.
Then there's the issue of where the remains came from. Some universities, like Texas A&M, have dedicated NAGPRA coordinators, typically professors, who work on determining cultural affiliation. "People do not randomly bury their dead; even today, burial grounds are sacred sites. They can tie you to a homeland and define your identity," says Heather Thakar, A&M's NAGPRA coordinator. It's her job to piece together the identity of the remains held at A&M. But in the past, some were donated to universities by private citizens who offered up little information. Fifty years ago, for example, a rancher donated the bones found on his land to A&M for research. No location as to where they were found was provided and no other information exists, making it nearly impossible to pin down any tribal affiliation. Carbon dating or DNA testing would destroy parts of those bones, so archeologists and tribal officials are usually hesitant to conduct such analyses. Without a sense of where the human remains were dug up or how old they might be, it's difficult to know which tribes must be consulted. In some cases, the funerary objects buried with the dead can provide clues, but those items often disappear to private collections or are sold in lucrative black markets.
"It's a mess. There's no two ways about it," Thakar says. "We were grave robbers."
Even when remains can be identified, it doesn't always mean that they can be reburied properly. In 2010, the anthropology department at Stephen F. Austin State University, in Nacogdoches, consulted with the Caddo Nation of Oklahoma and determined that all of the school's remains and funerary objects belonged to the tribe, having been excavated from burial mounds in Caddo homelands in East Texas. But today, those remains are still on shelves at the university, despite having been legally repatriated on paper.
"The Caddo let us know that they wanted to rebury the remains and the vessels, and their practice had been to rebury them as close to where they came from as possible," says Jerry Williams, a sociology professor at the university who was involved with the repatriation process. But the original burial mounds were in a public area, which could have become a target for looting yet again. A viable reburial option has yet to be worked out and would require funding for a new burial site or purchasing a plot in an existing historic cemetery. "That's one of the real weaknesses in NAGPRA," Williams says. "It is kind of like if a scientist went and dug up your grandmother and put her in a repository—and then asked you to fund reburying her."
In 2016, the Miakan Garza band successfully repatriated one set of human remains from Texas State University in San Marcos that had been unearthed during construction on campus. Initially, the remains were labeled culturally unaffiliated. But Maria Rocha and Mario Garza, the husband-and-wife team who run the nonprofit Indigenous Cultures Institute, say that their relatives have lived in the San Marcos region for thousands of years, leaving little doubt in their minds as to the affiliation of the remains.
But during the review process, tribal representatives from the Caddo Nation and the Mescalero Apache questioned why the Miakan Garza Band had seemingly sprung up overnight—Garza and Rocha founded the Indigenous Cultures Institute in 2006, but before that, there was virtually no record of the band having existed. "We have claimed that area for quite some time," Holly Houghten, the tribal historic preservation officer for the Mescalero Apache Tribe, said in a 2015 meeting. "It's documented in the historic record. There's treaties that are signed."
Pushback from federally recognized tribes leaves non-recognized tribes at a disadvantage, as they constantly have to prove their authenticity or attempt to meet federal standards for recognition—a process that can take 30 years or more. Institutions can also choose to write them off, reducing the number of tribes they must reach out to while also reinforcing colonial definitions of Indigeneity.
But Bryant Celestine, the Alabama-Coushatta Tribe's historic preservation officer, says that repatriation runs into the issue of tribal sovereignty. "The ultimate goal for us as a tribe is to try and get all human remains out of collections, because they are not artifacts," he says. "But [non-federally recognized tribes] have no right to insert themselves into government-to-government consultations." Celestine and other tribal historic preservation officers have often advocated against institutions working with non-federally recognized tribes, which is one of the reasons that the Tap Pilam were entirely locked out of discussions regarding human remains unearthed at the Alamo during renovations last year. According to the Alamo Trust, the nonprofit that manages the Alamo's operations, a third of the remains have been identified as "Coahuiltecan-speaking Indigenous" people, and a few more as "possibly" Coahuiltecan.
"People do not randomly bury their dead; even today, burial grounds are sacred sites. They can tie you to a homeland and define your identity."
However, no Coahuiltecan representatives were invited to participate in the Alamo Mission Archaeology Advisory Committee. Only federal tribes, like the Caddo, Alabama-Coushatta, Seminole, Cheyenne, and Arapaho, were asked to join. The remains at the Alamo do not fall under the jurisdiction of NAGPRA, since the Alamo Trust doesn't receive federal funding, but the organization said in a statement that it is consulting with the federal tribes "in the spirit of NAGPRA."
In February, Ramon Vásquez and the Tap Pilam sued the Alamo Trust as well as the city of San Antonio, the Texas Historical Commission, and the Texas General Land Office, which are all involved in redevelopment plans for the area. The lawsuit claims that excluding the Tap Pilam from repatriation consultations was discriminatory and denied them the right to perform religious reburial ceremonies for their ancestors.
"It's like you're saying, 'All these Indians are the same,'" Vásquez says. Not all of the federally recognized tribes involved with the advisory committee had historical ties to the Alamo or the wider San Antonio region, but some tribal representatives wrote to the Alamo Trust reiterating that they view the Tap Pilam as a "socially constructed group," which mean it does not have the same legal standing as federally recognized tribes. A federal judge dismissed the suit in late September.
The remains that have been unearthed at the Alamo are only a few hundred years old; Vásquez says they could even belong to his great-great-grandmother. "It's kind of upsetting that [the federally recognized tribes] would take the position that they have the sole authority over our people, when that recognition is a political act," he says. "It doesn't determine who's Indigenous."
Yet to date, the Tap Pilam have repatriated dozens of human remains, some through NAGPRA and some through channels like the Catholic Archdiocese, which oversees many of the historic Catholic burial grounds where Indigenous people were buried.
For all its flaws, NAGPRA does provide a pathway for repatriation that simply didn't exist 30 years ago. "NAGPRA is the floor, not the ceiling," says Shannon Keller O'Laughlin, an attorney and the executive director of the Association on American Indian Affairs. "There is no limitation set by NAGPRA—you can go above and beyond what it requires."
This month, the California Legislature passed a bill that would expand the right of non-federally recognized tribes to repatriate remains in the state. Since 2001, the state has had its own version of NAGPRA: State-funded institutions are required to create inventories and consult with California Indian tribes who seek to repatriate and rebury the remains of their ancestors. The state law was intended to account for the fact that many tribes in California lost their federal tribal status through the forced assimilation policies of the 20th century. It also covered state-held collections, which wouldn't have been covered by NAGPRA. The law expands the number of tribes that qualify for state recognition through the Native American Heritage Commission and require universities to hire a coordinator to consult with tribes.
In Texas, the state government has barely addressed tribal affairs since 1989, when the Legislature dissolved the Texas Indian Commission, ignoring recommendations from the state's Sunset Commission to restructure and strengthen the agency.
Recognizing tribes in Texas could go a long way in addressing long-standing inequities in issues like education, housing, and access to health care. At UT-Austin, faculty and students are now urging the administration to step up and engage with Native communities: In September, the Native American and Indigenous Studies Program presented a land acknowledgement to the UT's Faculty Council, which represents more than 3,700 professors and staff members. The proposal asks the university to recognize that the campus sits on stolen land and to commit more resources to Native American students. The program has also asked for UT to repatriate all the remains held at the Texas Archeological Research Laboratory.
Despite the bureaucracy that has held up repatriation for so many years, Indigenous people like Ramon Vásquez intend to keep doing the work. Vásquez doesn't want his son and grandson to have to repatriate and rebury their ancestors. He'd like to finish the task during his lifetime. The process is a constant reminder, he says, that even in death, Indigenous people are considered less than human.
"This has gotten so bad for our community that people are changing their wills, from being buried to being cremated," he says. "They don't ever want to be dug up."
Indigenous Affairs stories are produced with support from the Economic Hardship Reporting Project.
Correction: The original version of this story misstated the number of remains that had been repatriated by the Miakan Garza Band from Texas State University. The number is one, not six. We regret the error.
Read more from the Observer:
How We Got Here: Texas' health system has been underfunded, understaffed, and unprepared for years. Here, COVID-19 found the perfect place to spread.
The Forgotten Children of Texas: Each year, thousands of foster children in Texas are shuffled into little-known "treatment centers" where they are frequently neglected and abused. State officials have largely ignored allegations of wrongdoing and calls for reform.
The Anti-Indigenous Handbook: Across the globe, anti-Indigenous organizations and sympathizers work to undermine the collective rights of Indigenous peoples. This collection of reports reveals some of the most common attacks Indigenous communities face today.
Amal Ahmed is a general assignment reporter at the Texas Observer. Originally from Dallas, she has a journalism degree from Northwestern University and previously worked at The Atlantic and Texas Monthly. You can contact her at [email protected].
Read More: Indigenous Affairs
Popular Articles Now:
Announcing the Texas Observer's New Engagement Initiative
The Year Newspaper Unions Roared Back to Life in Texas


text:
Arthur Douglas (16 August 1902 – 27 June 1937) was an Irish cricketer and Rugby Union player.

Cricket

A right-handed batsman and right-arm fast-medium bowler, he made his debut for the Ireland cricket team in July 1925 against Scotland in a first-class match. He went on to play for Ireland on 13 occasions, his last match coming against the MCC at Lord's in August 1933.

Of his matches for Ireland, seven had first-class status. Six of these were against Scotland, the other was against Wales. In all matches for Ireland, he scored 343 runs at an average of 14.91, with a top score of 63 against Scotland in July 1928. He took 17 wickets at an average of 30.94, with best bowling figures of 4/35 against Scotland in June 1932.

Prior to his debut for the full Irish side, he represented a North of Ireland side against Wales in June 1924.

Rugby
A winger, he made his debut for the Ireland rugby union team against France in the 1923 Five Nations, scoring one try. He played against England and Scotland the following year, scoring a try against England. He returned to the side for the 1928 Five Nations, playing just one match against Scotland, without scoring.

See also
 List of Irish cricket and rugby union players

References

1902 births
1937 deaths
Irish cricketers
Irish rugby union players
Ireland international rugby union players
Cricketers from Belfast
Cricketers from Northern Ireland
Rugby union players from Belfast

redpajama_set_name: RedPajamaWikipedia


text:
Q: Skycons are not visible in my Javascript application The Skycons (animated Javascript icons) are not being displayed on my pen in codepen. They are being accessed but are not visible. Here is the link to my pen.
var skycons = new Skycons({"color": "pink"});

skycons.add("icon-animated", Skycons.CLEAR_DAY);

skycons.play();`


text:
Cycling Benefits
Best Dual Sport Bikes for Beginners
Schwinn Vantage Mens/Womens Sport Hybrid Bike—Best Dual Sport Bike for Beginners Overall
Royce Union RMY Mens 21-Speed Hybrid Bike—Most Comfortable Dual Sport Bike
Budget One
Tommaso La Forma Lightweight Hybrid Bike—Best Lightweight Dual Sport Bike
If you're a biker that likes to ride both on and off-road, or if you're an adventure-seeking cyclist, dual sport bikes might be just what you're looking for.
This is a new and fast-growing segment of the hybrid bike category and there are quite a few models on the market already. This article aims to select our top picks for dual sport bikes for beginners.
Our favorite dual sport bike models for beginners in 2020 are:
Sixthreezero EVRYjourney Steel Women's Hybrid Bike—Best Dual Sport Bike for Women
Retrospec Barron Comfort Hybrid Bike—Most Affordable Dual Sport Bike
How To Pick the Best Dual Sport Bike for Beginners
The first thing you have to do before buying a bicycle is consider what kind of biking you'll be doing.
An off-road bike such as a mountain bike, for example, doesn't ride well on the freeway, while a normal road bike should stay on paved roads. The focus of this review is dual sport bikes which offer the best of both worlds.
Are Dual Sport Bikes a Good Option for Beginners?
Off-road bicycles might seem like an option for advanced cyclists only, but dual sport bikes can definitely be a good pick for new bikers.
Dual sport bicycles are lightweight and quite easy to maneuver. They're also comfortable because of the upright riding position they typically offer.
This bike style is similar to other hybrid bikes in that they use suspension, but they're more suited for off-road travel than most hybrids. In general, dual sport bikes have bigger tires, and use disc brakes which makes them perfect for more technical trails.
What To Consider When Picking a Dual Sport Bike
The quality and the price of the bike is of course important when buying a bicycle. There are a few other things to consider.
Wheels and Bike Frame Size
The size of the wheels and frame largely determines the size of your bike. You'll match your height to the available manufacturer specs for the best fit.
If you're between 5'3" and 6'2", for example, a bike with 700c wheels would be appropriate. On another hand, a bike frame from 16 to 17 inches could fit an individual from around 5'5" to 5'8".
You want to be able to put both feet on the ground when standing over the frame. Your toes should touch the ground when seated on the bike and an adjustable seat helps with this customization.
Bike Weight
As a beginner, you want a bike that's stable enough so you feel confident, without weighing you down in the process.
This mainly comes down to the component materials. It might be a good idea to pick a bike that's more lightweight, since it's less to handle all-around.
Dual sport bikes usually weigh less than mountain bikes and might be heavier than many road bikes. In the hybrid category, you shouldn't push more than 30 pounds or 35 maximum, unless a heavier option has features you're craving.
The body of the bicycle consists mostly of the frame and this portion should include long-lasting materials. Depending on the type of riding you'll do most, you can match the appropriate materials accordingly.
Most bike frames are made from aluminum. It's a cost-effective and lightweight option. However, it's not as durable as others, like steel.
If you're interested in off-road travel, you might opt for a heavier alternative that can handle the rough nature of these rides. Are city streets more your thing, for a quick jaunt here and there? Aluminum would suit you fine.
Steel is heavier and more expensive. But these frames will usually hold up best for years to come, especially compared to other materials.
Some bikes take a beating and if yours is one of them, opting for steel, especially for challenging terrains and environments, could be appropriate.
Frames made from carbon fiber are the most expensive styles.
It's for a reason. Carbon fiber brings together the best of both worlds from the categories above, it's lightweight and strong. This makes the material resilient and suitable for a variety of rides.
It's probably not a necessary choice for beginners, but if you're looking to invest, opting for carbon fiber is a smart pick.
Again, this segment relies on the type of riding you'll be doing the most, whether that's a commute on pavement or weekend getaways in the forest.
For a happy-medium tire suited for different scenarios, look for:
Medium grip tread for traction.
Semi-slick for city rides.
Approximate 1.3 inches in width or above.
Usually, the dual sport bikes come with either V-brakes or disc brakes.
V-brakes are powerful rim brakes that are great for different kinds of terrain, but they also require that frame or fork mounts are attached to the bike. They're inexpensive and lightweight, but are easily contaminated by dirt.
Disc brakes are a step up and require less effort to handle. They're also great for off-road use. However, their performance can suffer in high-speed situations. Disc brakes are the heavier, more costly option here.
Climbing tough hills requires low gears. It's a common feature on mountain bikes for this reason, whereas road bikes usually feature higher gears for hitting top speeds.
This also means that greater gear options come with more to manage, but this is something that beginners can ease into. The most common setup on these hybrids is 21 speed, which offers you plenty.
Our Top 5 Best Dual Sport Bikes for Beginners: Reviews
Below are our top picks for the best dual sport bikes for beginners:
Our Overview
This bike comes from a well-reputed brand and is great for off-roading in particular. It weighs in at closer to 30 pounds and features loads of specs to contend with.
The aluminum frame and carbon fork pair together nicely, offering a lightweight model that still features some durability for the long haul.
There's a Schwinn soft tail suspension system that provides great comfort for the rider and the 21-speed drivetrain with trigger shifters offers precise use. However, the many gears make it slightly less ideal for urban-riding.
It comes with your standard 700c hybrid tires and double-wall rims on the wheels providing an added element of strength.
The bicycle features disc brakes, too, and a flat handlebar with extra grip for a comfortable riding position.
A reliable carbon fork.
Fender and rack mounts included.
21-speed drivetrain with trigger shifters for precision.
Three other sizes available, for larger individuals.
Radius disc brakes.
Doesn't perform as well in high-speed situations.
This 21-speed bike was made for smooth sailing.
It features an ergonomically designed saddle with dual springs and a front suspension fork with a Shimano drivetrain, all helping to ease operation and enhance comfort.
The slight-rise handlebar on this bike makes for an upright riding position, too. You'll find an appropriate grip level for added security.
This dual sport bike is equipped with alloy rim brakes and an aluminum frame that comes in multiple sizes, according to your height. It comes in a shiny metallic color, too, made to help the rider standout.
But there's one caveat to this bicycle…it's heavy. While the bike is suitable for beginners, 38 pounds for an intermediate or advanced cyclist might be frustrating.
The comfort features make it great for beginners.
SHIMANO drivetrain front suspension fork.
21 speeds.
A beautiful color.
It's heavy.
No kickstand included.
Tommaso La Forma Lightweight Hybrid Bike—Most Lightweight Dual Sport Bike
This Tommaso bike is sleek, appealing and the lightest option on our list, coming in at 25 pounds. The compact, aluminum frame helps with that and the carbon fiber suspension fork does, too.
The La Forma is decked out from head to toe with Shimano products, and this brand is known for quality bicycle components. This includes a Shimano groupset with 27 speeds in total, a higher number than many others. There's also Shimano Acera Rapid Fire shifters here and a clear display so you always know what gear you're in.
This bike is also comfortable to ride since it features flat handlebars and an upright geometry. You shouldn't have an issue packing your belongings, either, because it comes with pre-drilled holes for carrying mounts.
A big win is that this bike comes with a lifetime warranty on the frame and fork, as it well should for the price. Unfortunately, it's a more costly bike but given the components and features, we aren't surprised.
Lightest on our list.
Quality components and materials used.
Heads up display.
Comfortable sitting position.
Quite expensive.
The style of this bike leans towards "cruiser", which makes it a great starter bike for adult ladies who might appreciate a more simple machine.
It features a small 17.5 inch steel frame, offering strong construction paired with comfort and accessibility. The frame is also stooping and low to the ground which lets you get in and out easily. Wide handlebars add to the cruiser feel and help you achieve an easy, confident riding position.
The bike comes with just seven speeds, which is standard for this style. It's a suitable amount for laidback rides that don't require a lot of "get up and go" scenarios.
It's fitted with 2 inch semi-slick tires for absorbing impact while offering a smooth ride.
The downside? It's another heavy option at approximately 41 pounds. Considering the frame and stability features, this adds up.
If you're looking for a quality piece of equipment that'll be around a while, and you don't require too much speed or agility, the weight may not concern you.
Durable steel frame.
Attractive design and colors.
Comfortable to ride.
Rear rack included.
Not many gears.
Not as suited for off-road biking as the other options.
This is another attractive stepover hybrid model and comes in as the most affordable option on our list. It weighs around 36 pounds, placing it in the middle of our weight category.
It's built with an aluminum frame and fitted with a zoom suspension fork to absorb impact. The 700c tires are standard at this point but the double-wall rims are appreciated.
The tires are multi-surface and should be capable of properly dispersing any liquids out from under your tires. They feature a semi-slick tread offering low rolling resistance to boot.
You'll get 21 speeds to choose from, thanks to the Shimano brand and upright handlebars for added confidence and comfort.
Overall durability might be an issue with this bike, it's on a tight budget, after all. Take care of questionable terrains and follow maintenance protocols for the best results.
An affordable option.
Multi-surface tires for watery conditions.
Zoom suspension fork.
Stepover model is convenient.
A kickstand is included.
May not hold up as well as more expensive models.
The brake levers are on the small side.
In this article, we gave you options on affordable, comfortable and lightweight dual sport bikes, as well as one that's great for commuters. However, the winner of our roundup must be the Schwinn Vantage Mens/Womens Sport Hybrid Bike.
Specifically designed for beginners, this bike has everything that makes a dual sport bike a great option for bikers who like to travel on all types of terrain. It's equipped with disc brakes, a suspension fork, and handlebars that allow for an upright riding position. This is a textbook example of a good dual sport bike.
Our top pick offers high-performance in sport, lightweight design, efficiency on the road and comfort as well. This is definitely a great choice for anyone looking to get into dual sport bikes.
Best Road Bikes for Women
Best Bike Seat For Women
The Best Bike Pumps for Road Bikes in 2021: The Ultimate Buyer's Guide
Best Bikes for Girls
Ultimate Guide to the Best Bikes for Tall Guys
PrevPreviousBest Bikes for Girls
NextThe Best Bike Pumps for Road Bikes in 2021: The Ultimate Buyer's GuideNext
Amazon Site is a participant of the Amazon Services LLC Associates Program, an affiliate advertising program which is designed to provide an aid for the websites in earning an advertisement fees by means of advertising and linking to Amazon products.
Copyright 2020 | Pedal Lovers


text:
Strong First Half At Admiral Group
Admiral Group, the financial services intermediary, announces today a 30.5% increase in adjusted core profit for the six months ended 30 June 2004 to 45.3 million. Aggregate group turnover, comprising total premiums written, gross other income and allocated investment income, rose 30.2% to 269.3 million (2003 H1: 206.8 million).
This performance was underpinned by the rapid growth of elephant.co.uk, strong growth in premiums at Diamond, and growth of the Admiral brand. The result is based upon an excellent underwriting performance and ongoing success in selling ancillary products.
The highlights of the result include:
Adjusted core profit up 30.5% at 45.3 million
Aggregate group turnover up 30.2% at 269.3 million
Total premiums written up 30.3% at 233.3 million
Gross income from ancillary sales up 34.7% at 28.7 million
70% of policies internet originated (2003 H1: 52%)
Two-thirds of profit from intermediary sales
942,000 customers at 30 June 2004 (808,000 at 31 Dec 2003)
Commenting on the interim results, Henry Engelhardt, Chief Executive of Admiral, said: The growth in revenues and profit in the first half of 2004 underlines the strength of our business model and the continued effectiveness of our distribution strategy. We are delighted we have significantly increased our customer base, revenue and profit in the first six months, while at the same time generating very positive cash flow.
Core profit, stated before tax, amortisation, interest and dividends, amounted to 51.3 million (2003 H1: 33.9 million). Adjusting the result to remove the contribution from profit commission earned in 2003 but recognised in the six months to 30 June 2004, core profit increased 30.5% to 45.3 million (2003 H1: 34.7 million).
During the six months to 30 June 2004, the Group intermediated total premiums for itself and its underwriting partners worth 233.3 million (2003 H1: 179.0 million), driven mainly by substantial growth in sales originated from the internet. Admirals retained earned premiums, net of co-insurance and reinsurance, increased to 50.0 million (2003 H1: 35.4 million).*
Compared to the first half of 2003, Admiral has seen a significant increase in the proportion of revenue derived from intermediary business. Gross income from the sale of ancillary products on behalf of third parties rose to 28.7 million (2003 H1: 21.3 million).
The first half of 2004 saw a continued excellent underwriting performance on the underwriting result. Excluding claims handling expenses, the reported loss ratio and the combined ratio for the first half of 2004 were 63.9% and 77.5%, respectively.
Admiral is a strongly cash generative business which currently has limited need for capital to support its organic growth. The Groups balance sheet is conservatively managed and cash reserves have been built up over time. Accordingly, the Board of directors declared the payment of net exceptional interim dividends during the period totalling 52 million.
In April, Admiral announced its intention to seek a listing for the Groups ordinary shares on the London Stock Exchange in the Autumn of 2004, subject to market conditions. This remains the Groups intention.
* Admiral currently retains 25% of the underwriting risk on its motor insurance portfolio, with the remainder being borne by its co-insurance and reinsurance partners.