text:
'''Scroll View
===========

.. versionadded:: 1.0.4

The :class:`ScrollView` widget provides a scrollable/pannable viewport that is
clipped at the scrollview's bounding box.

Scrolling Behavior
------------------

The ScrollView accepts only one child and applies a viewport/window to
it according to the :attr:`ScrollView.scroll_x` and
:attr:`ScrollView.scroll_y` properties. Touches are analyzed to
determine if the user wants to scroll or control the child in some
other manner - you cannot do both at the same time. To determine if
interaction is a scrolling gesture, these properties are used:

    - :attr:`ScrollView.scroll_distance`: the minimum distance to travel,
         defaults to 20 pixels.
    - :attr:`ScrollView.scroll_timeout`: the maximum time period, defaults
         to 250 milliseconds.

If a touch travels :attr:`~ScrollView.scroll_distance` pixels within the
:attr:`~ScrollView.scroll_timeout` period, it is recognized as a scrolling
gesture and translation (scroll/pan) will begin. If the timeout occurs, the
touch down event is dispatched to the child instead (no translation).

The default value for those settings can be changed in the configuration file::

    [widgets]
    scroll_timeout = 250
    scroll_distance = 20

.. versionadded:: 1.1.1

    ScrollView now animates scrolling in Y when a mousewheel is used.

Limiting to the X or Y Axis
---------------------------

By default, the ScrollView allows scrolling in both the X and Y axes. You can
explicitly disable scrolling on an axis by setting
:attr:`ScrollView.do_scroll_x` or :attr:`ScrollView.do_scroll_y` to False.

Managing the Content Size and Position
--------------------------------------

ScrollView manages the position of its children similarly to a
RelativeLayout (see :mod:`~kivy.uix.relativelayout`) but not the size. You must
carefully specify the `size_hint` of your content to get the desired
scroll/pan effect.

By default, size_hint is (1, 1), so the content size will fit your ScrollView
exactly (you will have nothing to scroll). You must deactivate at least one of
the size_hint instructions (x or y) of the child to enable scrolling.

To scroll a :class:`GridLayout` on Y-axis/vertically, set the child's width
identical to that of the ScrollView (size_hint_x=1, default), and set the
size_hint_y property to None::

    layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
    # Make sure the height is such that there is something to scroll.
    layout.bind(minimum_height=layout.setter('height'))
    for i in range(30):
        btn = Button(text=str(i), size_hint_y=None, height=40)
        layout.add_widget(btn)
    root = ScrollView(size_hint=(None, None), size=(400, 400))
    root.add_widget(layout)

Overscroll Effects
------------------

.. versionadded:: 1.7.0

When scrolling would exceed the bounds of the :class:`ScrollView`, it
uses a :class:`~kivy.effects.scroll.ScrollEffect` to handle the
overscroll. These effects can perform actions like bouncing back,
changing opacity, or simply preventing scrolling beyond the normal
boundaries. Note that complex effects may perform many computations,
which can be slow on weaker hardware.

You can change what effect is being used by setting
:attr:`ScrollView.effect_cls` to any effect class. Current options
include:

    - :class:`~kivy.effects.scroll.ScrollEffect`: Does not allow
      scrolling beyond the :class:`ScrollView` boundaries.
    - :class:`~kivy.effects.dampedscroll.DampedScrollEffect`: The
      current default. Allows the user to scroll beyond the normal
      boundaries, but has the content spring back once the
      touch/click is released.
    - :class:`~kivy.effects.opacityscroll.OpacityScrollEffect`: Similar
      to the :class:`~kivy.effect.dampedscroll.DampedScrollEffect`, but
      also reduces opacity during overscroll.

You can also create your own scroll effect by subclassing one of these,
then pass it as the :attr:`~ScrollView.effect_cls` in the same way.

Alternatively, you can set :attr:`ScrollView.effect_x` and/or
:attr:`ScrollView.effect_y` to an *instance* of the effect you want to
use. This will override the default effect set in
:attr:`ScrollView.effect_cls`.

All the effects are located in the :mod:`kivy.effects`.

'''

__all__ = ('ScrollView', )

from functools import partial
from kivy.animation import Animation
from kivy.compat import string_types
from kivy.config import Config
from kivy.clock import Clock
from kivy.factory import Factory
from kivy.uix.stencilview import StencilView
from kivy.metrics import sp
from kivy.effects.dampedscroll import DampedScrollEffect
from kivy.properties import NumericProperty, BooleanProperty, AliasProperty, \
    ObjectProperty, ListProperty, ReferenceListProperty, OptionProperty

# When we are generating documentation, Config doesn't exist
_scroll_timeout = _scroll_distance = 0
if Config:
    _scroll_timeout = Config.getint('widgets', 'scroll_timeout')
    _scroll_distance = sp(Config.getint('widgets', 'scroll_distance'))

class ScrollView(StencilView):
    '''ScrollView class. See module documentation for more information.

    .. versionchanged:: 1.7.0
        `auto_scroll`, `scroll_friction`, `scroll_moves`, `scroll_stoptime' has
        been deprecated, use :attr:`effect_cls` instead.
    '''

    scroll_distance = NumericProperty(_scroll_distance)
    '''Distance to move before scrolling the :class:`ScrollView`, in pixels. As
    soon as the distance has been traveled, the :class:`ScrollView` will start
    to scroll, and no touch event will go to children.
    It is advisable that you base this value on the dpi of your target device's
    screen.

    :attr:`scroll_distance` is a :class:`~kivy.properties.NumericProperty` and
    defaults to 20 (pixels), according to the default value in user
    configuration.
    '''

    scroll_wheel_distance = NumericProperty(20)
    '''Distance to move when scrolling with a mouse wheel.
    It is advisable that you base this value on the dpi of your target device's
    screen.

    .. versionadded:: 1.8.0

    :attr:`scroll_wheel_distance` is a
    :class:`~kivy.properties.NumericProperty` , defaults to 20 pixels.
    '''

    scroll_timeout = NumericProperty(_scroll_timeout)
    '''Timeout allowed to trigger the :attr:`scroll_distance`, in milliseconds.
    If the user has not moved :attr:`scroll_distance` within the timeout,
    the scrolling will be disabled, and the touch event will go to the
    children.

    :attr:`scroll_timeout` is a :class:`~kivy.properties.NumericProperty` and
    defaults to 55 (milliseconds) according to the default value in user
    configuration.

    .. versionchanged:: 1.5.0
        Default value changed from 250 to 55.
    '''

    scroll_x = NumericProperty(0.)
    '''X scrolling value, between 0 and 1. If 0, the content's left side will
    touch the left side of the ScrollView. If 1, the content's right side will
    touch the right side.

    This property is controled by :class:`ScrollView` only if
    :attr:`do_scroll_x` is True.

    :attr:`scroll_x` is a :class:`~kivy.properties.NumericProperty` and
    defaults to 0.
    '''

    scroll_y = NumericProperty(1.)
    '''Y scrolling value, between 0 and 1. If 0, the content's bottom side will
    touch the bottom side of the ScrollView. If 1, the content's top side will
    touch the top side.

    This property is controled by :class:`ScrollView` only if
    :attr:`do_scroll_y` is True.

    :attr:`scroll_y` is a :class:`~kivy.properties.NumericProperty` and
    defaults to 1.
    '''

    do_scroll_x = BooleanProperty(True)
    '''Allow scroll on X axis.

    :attr:`do_scroll_x` is a :class:`~kivy.properties.BooleanProperty` and
    defaults to True.
    '''

    do_scroll_y = BooleanProperty(True)
    '''Allow scroll on Y axis.

    :attr:`do_scroll_y` is a :class:`~kivy.properties.BooleanProperty` and
    defaults to True.
    '''

    def _get_do_scroll(self):
        return (self.do_scroll_x, self.do_scroll_y)

    def _set_do_scroll(self, value):
        if type(value) in (list, tuple):
            self.do_scroll_x, self.do_scroll_y = value
        else:
            self.do_scroll_x = self.do_scroll_y = bool(value)
    do_scroll = AliasProperty(_get_do_scroll, _set_do_scroll,
                              bind=('do_scroll_x', 'do_scroll_y'))
    '''Allow scroll on X or Y axis.

    :attr:`do_scroll` is a :class:`~kivy.properties.AliasProperty` of
    (:attr:`do_scroll_x` + :attr:`do_scroll_y`)
    '''

    def _get_vbar(self):
        # must return (y, height) in %
        # calculate the viewport size / scrollview size %
        if self._viewport is None:
            return 0, 1.
        vh = self._viewport.height
        h = self.height
        if vh < h or vh == 0:
            return 0, 1.
        ph = max(0.01, h / float(vh))
        sy = min(1.0, max(0.0, self.scroll_y))
        py = (1. - ph) * sy
        return (py, ph)

    vbar = AliasProperty(_get_vbar, None, bind=(
        'scroll_y', '_viewport', 'viewport_size'))
    '''Return a tuple of (position, size) of the vertical scrolling bar.

    .. versionadded:: 1.2.0

    The position and size are normalized between 0-1, and represent a
    percentage of the current scrollview height. This property is used
    internally for drawing the little vertical bar when you're scrolling.

    :attr:`vbar` is a :class:`~kivy.properties.AliasProperty`, readonly.
    '''

    def _get_hbar(self):
        # must return (x, width) in %
        # calculate the viewport size / scrollview size %
        if self._viewport is None:
            return 0, 1.
        vw = self._viewport.width
        w = self.width
        if vw < w or vw == 0:
            return 0, 1.
        pw = max(0.01, w / float(vw))
        sx = min(1.0, max(0.0, self.scroll_x))
        px = (1. - pw) * sx
        return (px, pw)

    hbar = AliasProperty(_get_hbar, None, bind=(
        'scroll_x', '_viewport', 'viewport_size'))
    '''Return a tuple of (position, size) of the horizontal scrolling bar.

    .. versionadded:: 1.2.0

    The position and size are normalized between 0-1, and represent a
    percentage of the current scrollview height. This property is used
    internally for drawing the little horizontal bar when you're scrolling.

    :attr:`vbar` is a :class:`~kivy.properties.AliasProperty`, readonly.
    '''

    bar_color = ListProperty([.7, .7, .7, .9])
    '''Color of horizontal / vertical scroll bar, in RGBA format.

    .. versionadded:: 1.2.0

    :attr:`bar_color` is a :class:`~kivy.properties.ListProperty` and defaults
    to [.7, .7, .7, .9].
    '''

    bar_inactive_color = ListProperty([.7, .7, .7, .2])
    '''Color of horizontal / vertical scroll bar (in RGBA format), when no
    scroll is happening.

    .. versionadded:: 1.9.0

    :attr:`bar_inactive_color` is a
    :class:`~kivy.properties.ListProperty` and defaults to [.7, .7, .7, .2].
    '''

    bar_width = NumericProperty('2dp')
    '''Width of the horizontal / vertical scroll bar. The width is interpreted
    as a height for the horizontal bar.

    .. versionadded:: 1.2.0

    :attr:`bar_width` is a :class:`~kivy.properties.NumericProperty` and
    defaults to 2.
    '''

    bar_pos_x = OptionProperty('bottom', options=('top', 'bottom'))
    '''Which side of the ScrollView the horizontal scroll bar should go
    on. Possible values are 'top' and 'bottom'.

    .. versionadded:: 1.8.0

    :attr:`bar_pos_x` is an :class:`~kivy.properties.OptionProperty`,
    default to 'bottom'

    '''

    bar_pos_y = OptionProperty('right', options=('left', 'right'))
    '''Which side of the ScrollView the vertical scroll bar should go
    on. Possible values are 'left' and 'right'.

    .. versionadded:: 1.8.0

    :attr:`bar_pos_y` is an :class:`~kivy.properties.OptionProperty`,
    default to 'right'

    '''

    bar_pos = ReferenceListProperty(bar_pos_x, bar_pos_y)
    '''Which side of the scroll view to place each of the bars on.

    :attr:`bar_pos` is a :class:`~kivy.properties.ReferenceListProperty` of
    (:attr:`bar_pos_x`, :attr:`bar_pos_y`)
    '''

    bar_margin = NumericProperty(0)
    '''Margin between the bottom / right side of the scrollview when drawing
    the horizontal / vertical scroll bar.

    .. versionadded:: 1.2.0

    :attr:`bar_margin` is a :class:`~kivy.properties.NumericProperty`, default
    to 0
    '''

    effect_cls = ObjectProperty(DampedScrollEffect, allownone=True)
    '''Class effect to instanciate for X and Y axis.

    .. versionadded:: 1.7.0

    :attr:`effect_cls` is an :class:`~kivy.properties.ObjectProperty` and
    defaults to :class:`DampedScrollEffect`.

    .. versionchanged:: 1.8.0
        If you set a string, the :class:`~kivy.factory.Factory` will be used to
        resolve the class.

    '''

    effect_x = ObjectProperty(None, allownone=True)
    '''Effect to apply for the X axis. If None is set, an instance of
    :attr:`effect_cls` will be created.

    .. versionadded:: 1.7.0

    :attr:`effect_x` is an :class:`~kivy.properties.ObjectProperty` and
    defaults to None.
    '''

    effect_y = ObjectProperty(None, allownone=True)
    '''Effect to apply for the Y axis. If None is set, an instance of
    :attr:`effect_cls` will be created.

    .. versionadded:: 1.7.0

    :attr:`effect_y` is an :class:`~kivy.properties.ObjectProperty` and
    defaults to None, read-only.
    '''

    viewport_size = ListProperty([0, 0])
    '''(internal) Size of the internal viewport. This is the size of your only
    child in the scrollview.
    '''

    scroll_type = OptionProperty(['content'], options=(['content'], ['bars'],
                                 ['bars', 'content'], ['content', 'bars']))
    '''Sets the type of scrolling to use for the content of the scrollview.
    Available options are: ['content'], ['bars'], ['bars', 'content'].

    .. versionadded:: 1.8.0

    :attr:`scroll_type` is a :class:`~kivy.properties.OptionProperty`, defaults
    to ['content'].
    '''

    # private, for internal use only

    _viewport = ObjectProperty(None, allownone=True)
    _bar_color = ListProperty([0, 0, 0, 0])

    def _set_viewport_size(self, instance, value):
        self.viewport_size = value

    def on__viewport(self, instance, value):
        if value:
            value.bind(size=self._set_viewport_size)
            self.viewport_size = value.size

    def __init__(self, **kwargs):
        self._touch = None
        self._trigger_update_from_scroll = Clock.create_trigger(
            self.update_from_scroll, -1)
        # create a specific canvas for the viewport
        from kivy.graphics import PushMatrix, Translate, PopMatrix, Canvas
        self.canvas_viewport = Canvas()
        self.canvas = Canvas()
        with self.canvas_viewport.before:
            PushMatrix()
            self.g_translate = Translate(0, 0)
        with self.canvas_viewport.after:
            PopMatrix()

        super(ScrollView, self).__init__(**kwargs)

        self.register_event_type('on_scroll_start')
        self.register_event_type('on_scroll_move')
        self.register_event_type('on_scroll_stop')

        # now add the viewport canvas to our canvas
        self.canvas.add(self.canvas_viewport)

        effect_cls = self.effect_cls
        if isinstance(effect_cls, string_types):
            effect_cls = Factory.get(effect_cls)
        if self.effect_x is None and effect_cls is not None:
            self.effect_x = effect_cls(target_widget=self._viewport)
        if self.effect_y is None and effect_cls is not None:
            self.effect_y = effect_cls(target_widget=self._viewport)
        self.bind(
            width=self._update_effect_x_bounds,
            height=self._update_effect_y_bounds,
            viewport_size=self._update_effect_bounds,
            _viewport=self._update_effect_widget,
            scroll_x=self._trigger_update_from_scroll,
            scroll_y=self._trigger_update_from_scroll,
            pos=self._trigger_update_from_scroll,
            size=self._trigger_update_from_scroll)

        self._update_effect_widget()
        self._update_effect_x_bounds()
        self._update_effect_y_bounds()

    def on_effect_x(self, instance, value):
        if value:
            value.bind(scroll=self._update_effect_x)
            value.target_widget = self._viewport

    def on_effect_y(self, instance, value):
        if value:
            value.bind(scroll=self._update_effect_y)
            value.target_widget = self._viewport

    def on_effect_cls(self, instance, cls):
        if isinstance(cls, string_types):
            cls = Factory.get(cls)
        self.effect_x = cls(target_widget=self._viewport)
        self.effect_x.bind(scroll=self._update_effect_x)
        self.effect_y = cls(target_widget=self._viewport)
        self.effect_y.bind(scroll=self._update_effect_y)

    def _update_effect_widget(self, *args):
        if self.effect_x:
            self.effect_x.target_widget = self._viewport
        if self.effect_y:
            self.effect_y.target_widget = self._viewport

    def _update_effect_x_bounds(self, *args):
        if not self._viewport or not self.effect_x:
            return
        self.effect_x.min = -(self.viewport_size[0] - self.width)
        self.effect_x.max = 0
        self.effect_x.value = self.effect_x.min * self.scroll_x

    def _update_effect_y_bounds(self, *args):
        if not self._viewport or not self.effect_y:
            return
        self.effect_y.min = -(self.viewport_size[1] - self.height)
        self.effect_y.max = 0
        self.effect_y.value = self.effect_y.min * self.scroll_y

    def _update_effect_bounds(self, *args):
        if not self._viewport:
            return
        if self.effect_x:
            self._update_effect_x_bounds()
        if self.effect_y:
            self._update_effect_y_bounds()

    def _update_effect_x(self, *args):
        vp = self._viewport
        if not vp or not self.effect_x:
            return
        sw = vp.width - self.width
        if sw < 1:
            return
        sx = self.effect_x.scroll / float(sw)
        self.scroll_x = -sx
        self._trigger_update_from_scroll()

    def _update_effect_y(self, *args):
        vp = self._viewport
        if not vp or not self.effect_y:
            return
        sh = vp.height - self.height
        if sh < 1:
            return
        sy = self.effect_y.scroll / float(sh)
        self.scroll_y = -sy
        self._trigger_update_from_scroll()

    def to_local(self, x, y, **k):
        tx, ty = self.g_translate.xy
        return x - tx, y - ty

    def to_parent(self, x, y, **k):
        tx, ty = self.g_translate.xy
        return x + tx, y + ty

    def simulate_touch_down(self, touch):
        # at this point the touch is in parent coords
        touch.push()
        touch.apply_transform_2d(self.to_local)
        ret = super(ScrollView, self).on_touch_down(touch)
        touch.pop()
        return ret

    def on_touch_down(self, touch):
        if self.dispatch('on_scroll_start', touch):
            self._touch = touch
            touch.grab(self)
            return True

    def on_scroll_start(self, touch, check_children=True):
        if check_children:
            touch.push()
            touch.apply_transform_2d(self.to_local)
            if self.dispatch_children('on_scroll_start', touch):
                return True
            touch.pop()

        if not self.collide_point(*touch.pos):
            touch.ud[self._get_uid('svavoid')] = True
            return
        if self.disabled:
            return True
        if self._touch or (not (self.do_scroll_x or self.do_scroll_y)):
            return self.simulate_touch_down(touch)

        # handle mouse scrolling, only if the viewport size is bigger than the
        # scrollview size, and if the user allowed to do it
        vp = self._viewport
        if not vp:
            return True
        scroll_type = self.scroll_type
        ud = touch.ud
        scroll_bar = 'bars' in scroll_type

        # check if touch is in bar_x(horizontal) or bay_y(bertical)
        ud['in_bar_x'] = ud['in_bar_y'] = False
        width_scrollable = vp.width > self.width
        height_scrollable = vp.height > self.height
        bar_pos_x = self.bar_pos_x[0]
        bar_pos_y = self.bar_pos_y[0]

        d = {'b': True if touch.y < self.y + self.bar_width else False,
             't': True if touch.y > self.top - self.bar_width else False,
             'l': True if touch.x < self.x + self.bar_width else False,
             'r': True if touch.x > self.right - self.bar_width else False}
        if scroll_bar:
            if (width_scrollable and d[bar_pos_x]):
                ud['in_bar_x'] = True
            if (height_scrollable and d[bar_pos_y]):
                ud['in_bar_y'] = True

        if vp and 'button' in touch.profile and \
                touch.button.startswith('scroll'):
            btn = touch.button
            m = sp(self.scroll_wheel_distance)
            e = None

            if ((btn == 'scrolldown' and self.scroll_y >= 1) or
                (btn == 'scrollup' and self.scroll_y <= 0) or
                (btn == 'scrollleft' and self.scroll_x >= 1) or
                (btn == 'scrollright' and self.scroll_x <= 0)):
                return False

            if (self.effect_x and self.do_scroll_y and height_scrollable
                    and btn in ('scrolldown', 'scrollup')):
                e = self.effect_x if ud['in_bar_x'] else self.effect_y

            elif (self.effect_y and self.do_scroll_x and width_scrollable
                    and btn in ('scrollleft', 'scrollright')):
                e = self.effect_y if ud['in_bar_y'] else self.effect_x

            if e:
                if btn in ('scrolldown', 'scrollleft'):
                    e.value = max(e.value - m, e.min)
                    e.velocity = 0
                elif btn in ('scrollup', 'scrollright'):
                    e.value = min(e.value + m, e.max)
                    e.velocity = 0
                touch.ud[self._get_uid('svavoid')] = True
                e.trigger_velocity_update()
            return True

        # no mouse scrolling, so the user is going to drag the scrollview with
        # this touch.
        self._touch = touch
        uid = self._get_uid()

        ud[uid] = {
            'mode': 'unknown',
            'dx': 0,
            'dy': 0,
            'user_stopped': False,
            'frames': Clock.frames,
            'time': touch.time_start}

        if self.do_scroll_x and self.effect_x and not ud['in_bar_x']:
            self.effect_x.start(touch.x)
            self._scroll_x_mouse = self.scroll_x
        if self.do_scroll_y and self.effect_y and not ud['in_bar_y']:
            self.effect_y.start(touch.y)
            self._scroll_y_mouse = self.scroll_y

        if (ud.get('in_bar_x', False) or ud.get('in_bar_y', False)):
            return True
        if scroll_type == ['bars']:
            # touch is in parent, but _change_touch_mode expects window coords
            touch.push()
            touch.apply_transform_2d(self.to_local)
            touch.apply_transform_2d(self.to_window)
            self._change_touch_mode()
            touch.pop()
            return False
        else:
            Clock.schedule_once(self._change_touch_mode,
                                self.scroll_timeout / 1000.)
        return True

    def on_touch_move(self, touch):
        if self._touch is not touch:
            # touch is in parent
            touch.push()
            touch.apply_transform_2d(self.to_local)
            super(ScrollView, self).on_touch_move(touch)
            touch.pop()
            return self._get_uid() in touch.ud
        if touch.grab_current is not self:
            return True

        touch.ud['sv.handled'] = {'x': False, 'y': False}
        if self.dispatch('on_scroll_move', touch):
            return True

    def on_scroll_move(self, touch):
        if self._get_uid('svavoid') in touch.ud:
            return False

        touch.push()
        touch.apply_transform_2d(self.to_local)
        if self.dispatch_children('on_scroll_move', touch):
            return True
        touch.pop()

        rv = True

        uid = self._get_uid()
        if not uid in touch.ud:
            self._touch = False
            return self.on_scroll_start(touch, False)
        ud = touch.ud[uid]
        mode = ud['mode']

        # check if the minimum distance has been travelled
        if mode == 'unknown' or mode == 'scroll':
            if not touch.ud['sv.handled']['x'] and self.do_scroll_x \
                    and self.effect_x:
                width = self.width
                if touch.ud.get('in_bar_x', False):
                    dx = touch.dx / float(width - width * self.hbar[1])
                    self.scroll_x = min(max(self.scroll_x + dx, 0.), 1.)
                    self._trigger_update_from_scroll()
                else:
                    if self.scroll_type != ['bars']:
                        self.effect_x.update(touch.x)
                if self.scroll_x < 0 or self.scroll_x > 1:
                    rv = False
                else:
                    touch.ud['sv.handled']['x'] = True
            if not touch.ud['sv.handled']['y'] and self.do_scroll_y \
                    and self.effect_y:
                height = self.height
                if touch.ud.get('in_bar_y', False):
                    dy = touch.dy / float(height - height * self.vbar[1])
                    self.scroll_y = min(max(self.scroll_y + dy, 0.), 1.)
                    self._trigger_update_from_scroll()
                else:
                    if self.scroll_type != ['bars']:
                        self.effect_y.update(touch.y)
                if self.scroll_y < 0 or self.scroll_y > 1:
                    rv = False
                else:
                    touch.ud['sv.handled']['y'] = True

        if mode == 'unknown':
            ud['dx'] += abs(touch.dx)
            ud['dy'] += abs(touch.dy)
            if ud['dx'] > self.scroll_distance:
                if not self.do_scroll_x:
                    # touch is in parent, but _change expects window coords
                    touch.push()
                    touch.apply_transform_2d(self.to_local)
                    touch.apply_transform_2d(self.to_window)
                    self._change_touch_mode()
                    touch.pop()
                    return
                mode = 'scroll'

            if ud['dy'] > self.scroll_distance:
                if not self.do_scroll_y:
                    # touch is in parent, but _change expects window coords
                    touch.push()
                    touch.apply_transform_2d(self.to_local)
                    touch.apply_transform_2d(self.to_window)
                    self._change_touch_mode()
                    touch.pop()
                    return
                mode = 'scroll'
            ud['mode'] = mode

        if mode == 'scroll':
            ud['dt'] = touch.time_update - ud['time']
            ud['time'] = touch.time_update
            ud['user_stopped'] = True

        return rv

    def on_touch_up(self, touch):
        if self._touch is not touch and self.uid not in touch.ud:
            # touch is in parents
            touch.push()
            touch.apply_transform_2d(self.to_local)
            if super(ScrollView, self).on_touch_up(touch):
                return True
            touch.pop()
            return False

        if self.dispatch('on_scroll_stop', touch):
            touch.ungrab(self)
            return True

    def on_scroll_stop(self, touch, check_children=True):
        self._touch = None

        if check_children:
            touch.push()
            touch.apply_transform_2d(self.to_local)
            if self.dispatch_children('on_scroll_stop', touch):
                return True
            touch.pop()

        if self._get_uid('svavoid') in touch.ud:
            return
        if self._get_uid() not in touch.ud:
            return False

        self._touch = None
        uid = self._get_uid()
        ud = touch.ud[uid]
        if self.do_scroll_x and self.effect_x:
            if not touch.ud.get('in_bar_x', False) and\
                    self.scroll_type != ['bars']:
                self.effect_x.stop(touch.x)
        if self.do_scroll_y and self.effect_y and\
                self.scroll_type != ['bars']:
            if not touch.ud.get('in_bar_y', False):
                self.effect_y.stop(touch.y)
        if ud['mode'] == 'unknown':
            # we must do the click at least..
            # only send the click if it was not a click to stop
            # autoscrolling
            if not ud['user_stopped']:
                self.simulate_touch_down(touch)
            Clock.schedule_once(partial(self._do_touch_up, touch), .2)
        Clock.unschedule(self._update_effect_bounds)
        Clock.schedule_once(self._update_effect_bounds)

        # if we do mouse scrolling, always accept it
        if 'button' in touch.profile and touch.button.startswith('scroll'):
            return True

        return self._get_uid() in touch.ud

    def convert_distance_to_scroll(self, dx, dy):
        '''Convert a distance in pixels to a scroll distance, depending on the
        content size and the scrollview size.

        The result will be a tuple of scroll distance that can be added to
        :data:`scroll_x` and :data:`scroll_y`
        '''
        if not self._viewport:
            return 0, 0
        vp = self._viewport
        if vp.width > self.width:
            sw = vp.width - self.width
            sx = dx / float(sw)
        else:
            sx = 0
        if vp.height > self.height:
            sh = vp.height - self.height
            sy = dy / float(sh)
        else:
            sy = 1
        return sx, sy

    def update_from_scroll(self, *largs):
        '''Force the reposition of the content, according to current value of
        :attr:`scroll_x` and :attr:`scroll_y`.

        This method is automatically called when one of the :attr:`scroll_x`,
        :attr:`scroll_y`, :attr:`pos` or :attr:`size` properties change, or
        if the size of the content changes.
        '''
        if not self._viewport:
            return
        vp = self._viewport

        # update from size_hint
        if vp.size_hint_x is not None:
            vp.width = vp.size_hint_x * self.width
        if vp.size_hint_y is not None:
            vp.height = vp.size_hint_y * self.height

        if vp.width > self.width:
            sw = vp.width - self.width
            x = self.x - self.scroll_x * sw
        else:
            x = self.x
        if vp.height > self.height:
            sh = vp.height - self.height
            y = self.y - self.scroll_y * sh
        else:
            y = self.top - vp.height

        # from 1.8.0, we now use a matrix by default, instead of moving the
        # widget position behind. We set it here, but it will be a no-op most of
        # the time.
        vp.pos = 0, 0
        self.g_translate.xy = x, y

        # New in 1.2.0, show bar when scrolling happens and (changed in 1.9.0)
        # fade to bar_inactive_color when no scroll is happening.
        Clock.unschedule(self._bind_inactive_bar_color)
        self.unbind(bar_inactive_color=self._change_bar_color)
        Animation.stop_all(self, '_bar_color')
        self.bind(bar_color=self._change_bar_color)
        self._bar_color = self.bar_color
        Clock.schedule_once(self._bind_inactive_bar_color, .5)

    def _bind_inactive_bar_color(self, *l):
        self.unbind(bar_color=self._change_bar_color)
        self.bind(bar_inactive_color=self._change_bar_color)
        Animation(
            _bar_color=self.bar_inactive_color, d=.5, t='out_quart').start(self)

    def _change_bar_color(self, inst, value):
        self._bar_color = value

    #
    # Private
    #
    def add_widget(self, widget, index=0):
        if self._viewport:
            raise Exception('ScrollView accept only one widget')
        canvas = self.canvas
        self.canvas = self.canvas_viewport
        super(ScrollView, self).add_widget(widget, index)
        self.canvas = canvas
        self._viewport = widget
        widget.bind(size=self._trigger_update_from_scroll)
        self._trigger_update_from_scroll()

    def remove_widget(self, widget):
        canvas = self.canvas
        self.canvas = self.canvas_viewport
        super(ScrollView, self).remove_widget(widget)
        self.canvas = canvas
        if widget is self._viewport:
            self._viewport = None

    def _get_uid(self, prefix='sv'):
        return '{0}.{1}'.format(prefix, self.uid)

    def _change_touch_mode(self, *largs):
        if not self._touch:
            return
        uid = self._get_uid()
        touch = self._touch
        ud = touch.ud[uid]
        if ud['mode'] != 'unknown' or ud['user_stopped']:
            return
        diff_frames = Clock.frames - ud['frames']

        # in order to be able to scroll on very slow devices, let at least 3
        # frames displayed to accumulate some velocity. And then, change the
        # touch mode. Otherwise, we might never be able to compute velocity, and
        # no way to scroll it. See #1464 and #1499
        if diff_frames < 3:
            Clock.schedule_once(self._change_touch_mode, 0)
            return

        if self.do_scroll_x and self.effect_x:
            self.effect_x.cancel()
        if self.do_scroll_y and self.effect_y:
            self.effect_y.cancel()
        # XXX the next line was in the condition. But this stop
        # the possibily to "drag" an object out of the scrollview in the
        # non-used direction: if you have an horizontal scrollview, a
        # vertical gesture will not "stop" the scroll view to look for an
        # horizontal gesture, until the timeout is done.
        # and touch.dx + touch.dy == 0:
        touch.ungrab(self)
        self._touch = None
        # touch is in window coords
        touch.push()
        touch.apply_transform_2d(self.to_widget)
        touch.apply_transform_2d(self.to_parent)
        self.simulate_touch_down(touch)
        touch.pop()
        return

    def _do_touch_up(self, touch, *largs):
        # touch is in window coords
        touch.push()
        touch.apply_transform_2d(self.to_widget)
        super(ScrollView, self).on_touch_up(touch)
        touch.pop()
        # don't forget about grab event!
        for x in touch.grab_list[:]:
            touch.grab_list.remove(x)
            x = x()
            if not x:
                continue
            touch.grab_current = x
            # touch is in window coords
            touch.push()
            touch.apply_transform_2d(self.to_widget)
            super(ScrollView, self).on_touch_up(touch)
            touch.pop()
        touch.grab_current = None

if __name__ == '__main__':
    from kivy.app import App

    from kivy.uix.gridlayout import GridLayout
    from kivy.uix.button import Button

    class ScrollViewApp(App):

        def build(self):
            layout1 = GridLayout(cols=4, spacing=10, size_hint=(None, None))
            layout1.bind(minimum_height=layout1.setter('height'),
                         minimum_width=layout1.setter('width'))
            for i in range(40):
                btn = Button(text=str(i), size_hint=(None, None),
                             size=(200, 100))
                layout1.add_widget(btn)
            scrollview1 = ScrollView(bar_width='2dp')
            scrollview1.add_widget(layout1)

            layout2 = GridLayout(cols=4, spacing=10, size_hint=(None, None))
            layout2.bind(minimum_height=layout2.setter('height'),
                         minimum_width=layout2.setter('width'))
            for i in range(40):
                btn = Button(text=str(i), size_hint=(None, None),
                             size=(200, 100))
                layout2.add_widget(btn)
            scrollview2 = ScrollView(scroll_type=['bars'],
                                     bar_width='9dp',
                                     scroll_wheel_distance=100)
            scrollview2.add_widget(layout2)

            root = GridLayout(cols=2)
            root.add_widget(scrollview1)
            root.add_widget(scrollview2)
            return root

    ScrollViewApp().run()


Stocks Bull Market Swing Juncture?
The Mainstream media wants laws to restrict the free information market and thus by electioneering on behalf of the Conservative Party, News International is seeking favourable policies on both the state media and internet new media especially in advance of charging a fee for their currently free online content.
However at the end of the day this is a battle that the mainstream press cannot win as the New Media increasingly becomes more sophisticated which in many cases is already delivering better quality of content then the so called premium content pumped out by the mainstream press which usually tends to be a regurgitation of press releases as the analysis of Telegraphs coverage of UK house prices illustrates.
Gold is performing strongly. The Bull scenario remains in tact though a near term correction targeting $1060 seems likely.
Stocks continued their rally at the start of the week, with the S&P joining the Dow by busting the bear calls emanating form the October highs and achieving a Dow high for the week at 10,342, a touch away from the target zone.
Using mid prices of the target ranges gives a potential of +155 (10425) to the upside against -720 (9550) to the downside, therefore the potential risk far out weighs the reward as the quick analysis concluded following Mondays close, therefore for traders who are long it would be wise to bank profits, pending outcome of what looks like an imminent correction. Remember trading is risk/reward game, where the reward must always outweigh the risk to win in the long-run.
Looking wider a field, I see a series of international indices putting in a lower low during early November and now implying a lower high as well, this strengthens the view that 10,342 as a high potential of being a swing juncture and confirms long positions under these circumstances are risky and do require an immediate resumption in the up-trend to clear nearby buy triggers.
Dow Trading - The nearest SELL trigger is at 10160. The nearest confirming BUY triggers are at 10,310 and then importantly at 10,345. As mentioned earlier upside looks very limited where 10,345 would target 10,425 to 10,500. On the short side 10,160 first targeting 9950 to 9900.
The U.S. Dollar scenario remains on life support. The previously stated buy trigger of 77.50 remains unfilled. Now a nearer Buy trigger at 77.00 has been generated by recent price action.
How did Robert Prechter's 2009 Forecasts Perform ?
My recent article on Nouriel Roubini's 2009 track record resulted in a number of emails asking me to take a look at other popular analysts. However it is not something that I want to get into as Nouriel Roubini was a one off exercise for an example of why it is dangerous to have a perma-view in denial of the actual facts as observed in the market price action.
However, back in April 09 Robert Prechter made available virtually all of his key forecasts and analysis for 2009 for multiple markets in a 120 page ebook titled Global Market Perspective. The ebook is apparently STILL available! Which enables readers to make up their own minds against what has subsequently transpired during the past 6 months.
2. New and existing members now go to the ebook page and on the right hand side is the link Already a Club EWI Member? - Which will automatically download the ebook (I have tested this many, many times and it does work!).
Last week, I called a market top; and the Dow Jones industrial average proceeded to reel off a 3.2% gain. There are a couple of important observations to make about this market action.
First, the tape never lies so it's important to be flexible when the market moves in the direction that you do not expect. While I entered last week slightly net short, I had a trailing stop loss on my major short position TWM and as the market rallied, I was able to close that short position and still preserve some my profits from the preceding week.
4. If the Gold Price Explodes, Silver Will go SuperNova!
5. What Happened to the Stock Market Crash?
The big news of the week was the U.S. unemployment rate breaking above 10% to the highest rate in 26 years with all the expectations of the jobless recovery continuing well into 2010. Other news out of the U.S. came from the Fed confirming the view that U.S. Interest rates would be kept low for sometime.
6. Why is the Stock Market Rising When The Economic Recovery is Weak?
"Why" many ask, "is the stock market going up when the bond market is telling us the recovery will be tepid? Isn't there a disconnect?" And the answer is that there is, and this week good friend and fishing buddy Paul McCulley of PIMCO fame discusses that very topic with his usual insight and wit. He poses the conundrum that those expecting a "V" shaped recovery have pushed risk assets up quite high, and that the real risk to their position is that they in fact get a "V" shaped recovery. And yet, they could go higher and into bubble territory.
Almost all the excessive hedge fund de-leveraging is over. Banks have continued to hold 40 to 1 leveraged positions, because they cannot exit them without a major economic recovery without going bankrupt. Our government remains trapped in the same old bubble mentality in its activist control banking and policymaking having issued $1.9 trillion in additional debt over the past year. Banks and government still do not see the warning signals. Any sane businessman who views the continued leverage being used by Fannie, Freddie, Ginnie and the FHA has to cringe in horror, as leverage increases daily without end.
Seems like Déjà vu where virtually on every correction the mega perma-bears re-emerge to pronounce the demise of the bear market rally only to be beaten back down by the subsequent rally to a new high for the move as we witnessed today with the Dow closing above the previous mid October peak of 10,120, by closing at 10,226.
Dow hit 10425, whats next ?
Its not my intention to turn marketoracle into a short-term tradign signals site.
The Dow straight from the open triggered both longs that propelled the Dow to the target of 10,425.
SELL 1 - 10,335 REVERSE.
SELL 3 - 10,160 To Target 9950.


text:
Революционная улица () — улица в центре Минска.

Располагается между площадью Свободы и улицей Ленина с одной стороны, и улицей Городской Вал — с другой, пересекает улицу Комсомольскую. Нумерация домов — от площади Свободы. Ранее называлась Койдановской — по прежнему названию города Дзержинска (Койданово). В то же время, в Минске был ещё и Койдановский тракт. В XX веке переименована в честь Октябрьской революции.

XX век
В начале XX века на улице, расположенной возле центральной Соборной площади, располагался ряд известных зданий:
 Угол Соборной площади и Койдановской улицы, возле католического кафедрального собора. Здание снесено в 1950 году: административное здание с губернским казначейством и другими учреждениями,
 Угол Соборной площади и Койдановской улицы — мужское духовное училище,
 д. 3 — дом вице-губернатора,
 д. 5 — Министерство по чрезвычайным ситуациям,
 д. 6 — офтальмологическая клиника Каминского,
 д. 8 — банковский дом Г. Лившиц,
 д. 9 — гостиница Крюковского,
 д. 10 — хирургическая клиника А. Шапиро,
 д. 12—14 — электротехническое бюро и склад электротехнических принадлежностей,
 д. 13 — хирургическая клиника М. Шапиро,
 д. 11 — гостиница «Ново-Варшавская»,
 д. 15 — Институт белорусской культуры,
 д. 22 — гостиница «Ливадия»,
 д. 24 — женская гимназия Рейман,
 д. 28 — гостиница «Купеческая».

XXI век
В настоящее время во многих домах ведутся работы по «реконструкции с реставрацией» или «реконструкции с приспособлением», что инициаторы реконструкции объясняют крайне низким качеством строительных работ в конце XIX века.

По улице организовано одностороннее автомобильное движение. Ожидается, что после завершения работ улица станет пешеходной. Общественный транспорт по улице не проходит, однако поблизости проходит ряд маршрутов автобусов и троллейбусов, а также располагается станция метро Немига.

 д. 6 — Дом Гурвича,
 д. 4 — Дом Прушинской,
 д. 8 — Дом Шульмана,
 д. 10 — Дом Вендорфа, в котором расположен Музей истории города Минска,
 д. 13 — Дом Слиозберга,
 д. 14 — Дом Левина,
 д. 15 — Здание посольства Швеции,
 д. 22 — гостиница «Ливадия»,
 д. 24 — Дом Фогеля — Залкинда,
 д. 26 — Дом Фридмана,
 д. 28 — Дом Поляка,
 д. 32 — Дом Гальперина — Ивенского.

Примечания

Ссылки
 Революционная

Улицы Минска
Переименованные улицы Минска
Улицы Минска, названные в честь событий
Минск

redpajama_set_name: RedPajamaWikipedia


A while back, I wrote about the weirdest diaper changing experience I've ever had. Later I wrote another article on Arrow and her favorite baby toys. That post was written on her favorite toys, which are unfortunately the ones that could possibly kill her.
Never will be my intention is to not knock down parenthood in my stories. In fact, my goal has always been the opposite. I had hoped to convey in my writing that even despite the continual "keeping it real" moments, it's pretty great being a parent.
Well friends, that made me feel bad. As a parent, the last thing I would want to do is discourage others from having a family of their own. Clearly, this person had already decided previously they didn't want to have a family. I don't think my posts made that huge of a difference. But I worry if I had incindentally added a "tally mark" on their list of reasons why not to have kids, without conveying all the good stuff that comes along with motherhood.
I can understand a bit when someone doesn't want to have children, because I was somewhat like that in the before-children days. My situation was I liked kids enough that I thought I should have one or two, but I was terrified of everything about it. Having survived it, and still surviving it, (and enjoying it, some days) I thought I would share some of my fears back in the BC days, and my feelings now. Hopefully, we can erase those negative tally marks.
Just a few weeks ago, my own baby was caught stuffing her messy diaper in her face. My baby! Was eating poop! It was disgusting. Before I had a baby, I was so grossed at the prospect of changing diapers, wiping runny noses, and drooling. The drooling, especially, made me shudder.
So how did I overcome that? Well, fact is, I honestly just got used to it. Everyone does. And you probably get used to it fast. I did at least. In the newborn stages, you're in a bit of a survivor mode, so you'll do just about anything so you can get back to sleep. So if it means wiping a little bum that blasted a diaper, then so be it. That pillow is screaming your name.
If it's any comfort, babies are pretty tiny. Which means their first messes are tiny. I almost think it's nature's way of apologizing for making you feel like you've been thrust under a bus when you go home with a new baby. It's a slow exposure to getting used to changing those diapers.
Now that we've established that babies do gross things, let me tell you this as well. Babies also do really cool things. Watching them work that little brain of theirs is fascinating. I love to watch my little one figure out how to put her toy balls into a cup, and then pull them out. I can tell that she's learning about space and dimensions. Then there's the bigger exciting moments, like watching her learn to crawl or to grab a toy when it's extended to her.
Chauntel "Chaun" Jacobs is a pastries enthusiast, writer, and usually has her camera bag by her side. She doesn't mind eating cookies for breakfast, much to the chagrin of her health nut husband. By day, she alternates between writing, creating content, playing with a baby, and planning parties. By night, she is passed out in her bed in great hopes for a solid night's sleep. Chaun Jacobs is the author of the Hiccups and Pastries blog. Her most important treasures are her family. Chaun is most often found in an office, on set with a camera, or searching for snacks in the pantry.
Be the first to comment on "I understand why you're scared to have a baby – Chauntel Jacobs"


text:
On the Job: Jan Adamczyk
May 19, 2016 11:45 am by Ali Braboy | News Bureau Intern | 217-333-1085Campus Life
Jan Adamczyk, a senior library specialist, takes care of the the Slavic collection at the library and responds to questions about it.
Photo by L. Brian Stauffer
The Slavic collection at the U. of I. is the largest in Illinois, the Midwest and any state-supported U.S. university. Jan Adamczyk, a senior library specialist, takes care of the collection and responds to questions about it.
"People at Yale know that we have a great collection, but most people on campus don't," Adamczyk said.
Each workday, he works two jobs on campus because he has a split appointment.
He works with the Slavic Reference Service in the morning, and then he catalogues Slavic books in the afternoon. Both jobs are in the Main Library, with his mornings spent in the International and Area Studies Library and afternoons in the Central Access Management unit, where he catalogues Slavic books from Central and Eastern Europe and Russia.
With the reference service, he answers questions from the campus community, people from all corners of the United States as well as others from all over the world.
Where a question comes from doesn't matter to Adamczyk.
"A question is a question," he said. "That's the most satisfying part. If you can help someone out – a student or a senior researcher – sometimes they need this one last piece of information for their project or paper and if you can get it (for them), they're happy, and there's a good deal of satisfaction from this."
His reference job allows him to work with the public, and it can be very fast-paced. Cataloguing is much more focused, and accuracy is critical.
As a graduate teaching assistant in 1989, he worked for the department of Slavic languages and literatures. He then worked for the Slavic and East European Library and Slavic Reference Service – also as a graduate assistant. He has worked in his current position since 2002.
Originally from Poland, he came to the U.S. in 1981. He wife also is from Poland. He wishes he could visit friends and family still living in Poland more often. In his spare time, he enjoys reading, riding his bike and camping.
With the reference work, he and his co-workers are able to help patrons with a certain amount of skill and a little bit of luck, he said.
"The hardest thing is if you spend several days trying to research a question and you come up empty," he said. "There are certain things that can't be found out or can't be found out with what I have to work with."
Some questions are more fun than others, such as finding some obscure situations in history.
"You get to dive into interesting and fun stuff," such as the private lives of famous people, he said.
He and his co-workers sometimes get desperate phone calls from someone writing their dissertation, saying "My committee says I need this citation."
"You drop everything and try to help people out," Adamczyk said.
His jobs require a team effort, and each of his co-workers brings different skills and ideas on how to approach problems and questions. Outside of the referencing and cataloguing, he and his co-workers also put together LibGuides (online resource guides to help researchers), and they host webinars and give presentations to classes. Although most of his job is a solitary pursuit, in the afternoon, he still works with others to solve problems.
Adamczyk wants people to know that librarians perform many different tasks in their jobs, and they use many skills to get the job done.
"The general public doesn't really quite understand or appreciate just how varied the jobs of the library world are. Librarians don't just go around and shelve books or dust books," he said.

redpajama_set_name: RedPajamaCommonCrawl


The latest Dawn of War expansion shows flashes of genius but, like its new air units, never manages to take off.
Great new races; some fun single-player campaign missions; terrific art design.
A few game-killing bugs; air units add little; dull campaign maps; nonexistent campaign story.
Warhammer 40,000: Dawn of War was a revelation when first released back in 2004. It helped pioneer a new style of RTS in which base-building was minimized in favor of fast action, squad maneuvering and territorial control. Since then, the game has spawned two successful expansion packs (Winter Assault and Dark Crusade) and has served as inspiration for Relic's Company of Heroes, our 2006 PC Game of the Year. After a run like that, it might be expected that Dawn of War would fade into a well-deserved retirement. Such was not to be, however. Relic and THQ decided to trot the old warhorse out for one last race under the development of just-closed Iron Lore. The resulting expansion shows flashes of the old brilliance but ends up ultimately disappointing.
The strongest aspect of Soulstorm comes in the two new races Iron Lore added to the mix. The first, the Dark Eldar, are the Chaos-corrupted brethren of the original game's Eldar, who buttress their fragile units with quick movement and an assortment of spell powers designed to break enemy morale and reduce resistances. The other, the Sisters of Battle, are the distaff arm of the Imperium's Inquisition who use Space Marine-level equipment with Faith-created miracles to bring the Emperor's justice (punctuated by laser fire and flamethrowers) to the guilty and innocent alike.
Each of the new races has been crafted with an eye toward remaining visually true to the original Games Workshop tabletop game lore and translating those characteristics into a workable and enjoyable strategic doctrine. In both cases the Iron Lore team was spectacularly successful. Both look great, are fun to play with and also offer a completely different "feel" than any of the other races in the game. The Dark Eldar, for example, are beautifully rendered in ways that immediately suggest their moral decadence, all spiky armor, gothic curlicues and slave girls on floating transports. The Sisters, on the other hand, bring new meaning to the term "religious fundamentalist," with units that sport glowing halos, an end-game super unit that looks very much like an angel, and a melee walker that's nothing less than a martyr crucified on one of the loaders from "Aliens."
It isn't until one takes the new units into battle, though, that what the Iron Lore team has crafted can truly be appreciated. The Dark Eldar re-define the term "glass cannon" by being more fragile than even the Eldar but packing a pretty spectacular punch. Their strategic conceit is a special "soul essence" that they can harvest from fresh corpses on the battlefield. This third resource is then used to fuel special "soul powers" that drop a variety of effects onto the battlefield. The result is a very fast-moving army that can't really hack a stand-up fight but in the hands of a good micro-manager will carve up pretty much anything they're set against.
The Sisters of Battle, on the other hand, play a bit more like the Necron from Dark Crusade than the ostensibly allied Space Marines. They start slow and weak but with a decent supply of their special "Faith" resource and attached commander units they will roll over everything. Once players figure out all sorts of devious combinations of commanders and troopers, the Sisters start getting really fun. In our games, for example, the Confessor commander seemed to work quite well with the heavy melee Sisters Repentia units. His stun powers plus chainsaw-sword melee made for all sort of glorious mayhem on the battlefield.


It was so much fun drawing that first panel.
And as much as i feel it is a fine punchline, I'm torn between the lackadaisical comment on panel 1 or the giggle in panel 3 which make me laugh most.
So far, Dee's experienced more than a lots of people do over a lifetime. And her reaction to the ultimate trip? She's having fun!


According to a survey of social media behavior directed by Adweek, brands need to move beyond mobile to get more meaningful relationships with women. Social media behavior, digital consumption, especially visual content; consumer interaction with portable devices. This leads marketing professionals to optimize and optimize their mobile capabilities. Also experts; women prefer photography more than visual media like video or gif in terms of social media behaviors.
Why are a Branding Website Visiting More Through a Social Media Account and Application?
Why do women follow the brands on the social media?


London Gatwick Airport is located 47.5 km south of Central London and is London's second largest and busiest international airport, with the world's busiest single-use runway. Nearly 35 million people stream in and out of the airport each year. Charter airlines also prefer using the airport over Heathrow. What makes the airport unique among the London airports is that it represents each of the three main airline models - full service, no frills service as well as charters.
The airport has two terminals and each of these has shops and restaurants, multi-faith prayer rooms along with other useful facilities like lounges for business people, video games for children as well as facilities for baby changing and feeding. There is also a conference and business centre. London Gatwick Airport also has a number of on- as well as off-site hotels . There are plans to expand Gatwick, bringing in a third terminal and a second runway and this will allow Gatwick to handle even more passengers than Heathrow does.
Public transportation options at London Gatwick Airport are plentiful, and unless you have been clever and have arranged for an efficient private airport pick-up, you will need to spend time sorting out your transportation from the airport to your hotel.
The truth is, there are public transport inadequacies and over-crowdedness is just one; with people surging and pushing from behind, trying to make hasty exits. Not only that, sometimes low ridership in certain buses can mean waiting till the bus fills before it moves off. This is very frustrating, more so for business people who have time deadlines to adhere to.
The increase in traffic on the roads has resulted in more accidents and fatalities, and this is also partly because there are more and more unlicensed drivers on the road. Wouldn't you simply prefer to make use of a fully licensed and insured private driver and put all these ghastly public transport issues behind you and in the right frame of mind? Prompt Airport Cars are all about reasonably priced, trouble-free transportation, Cab Gatwick Service. They believe that your journey is as important as your destination.
The drivers of their luxury and well maintained cars are vetted, they know London Gatwick Airport like the back of their hands, they keep up to date with flight arrivals so that if you arrive late, they will still be there at no extra cost.
Prompt Airport Cars makes use of standard cars, 7-seaters and coaches to transport all kinds of people individually or in groups. Even if you have a whole sport team arriving at Gatwick Airport that needs to be transported, they have various size coaches that can adequately do the job in style. If you arrive at London Gatwick Airport and are a lucky traveller needing to reach your cruise ship, Prompt Airport Cars can handle all cruise transfers to different ports. They offer professional luxury taxi- and chauffeur services, and can be of service to you around the clock, working every day of the week and every day of the year.
A luxury private taxi or chauffeur service is the only reliable and fully accredited transportation you can count on to get you to your destination on time, in style and in safety. It is time to get to know Prompt Airport Cars and to enjoy peace of mind that you can drive assured that your journeys to and from London Gatwick Airport is as safe as possible. By going online and booking luxury private taxi services, you put yourself in the hands of a highly skilled team of professionals who provide a world-class and pleasurable driving experience.


text:
Details of security personnel working as domestic help sought
Lawmaker Rajendra Kumar KC, who is also a member of the Public Accounts Committee of the Parliament, today said the House panel had recently written to the Ministry of Home Affairs and Ministry of Defence to provide it the details of security personnel employed as domestic help for VIPs, and serving and former security officials.
"The nation never recruited police personnel and soldiers to work as domestic help.
According to a rough estimate, nearly 7,000 personnel of Nepali Army, Nepal Police and Armed Police Force work as domestic help for VIPs and serving and former security officials," he informed at a programme organised in the capital.
"No law allows them to be kept as domestic help and such a trend should end immediately. The Public Accounts Committee will soon direct the government to put an end to this practice.
They should be used only for the purpose they were recruited.
If VIPs and other officials have any security concern, they may contact the nearest police office for necessary security arrangements," KC added.
#Ministry of Home Affairs #Nepal Police #Public Accounts Committee #Nepali Army #Ministry of Defence


Ohio Measure to Legalize Marijuana | Is Marijuana Legal in Ohio?
Columbus Criminal Defense Blog /2015 /August /Do Ohioans Want to Legalize Marijuana?
On November 3, Ohio voters will get to weigh in on whether or not marijuana should be legalized. The measure, written by ResponsibleOhio, received 320,267 signatures from Ohio voters – enough to secure a spot on the impending ballot.
Secretary of State John Husted allowed ResponsibleOhio ten extra days to secure the signatures it needed – state law allows a ten day extension for organizations that come up short on signatures for ballot measures.
Legalizing marijuana would amend the Ohio constitution to allow adults over the age of 21 to use pot, allow individuals under 21 to use pot with parental consent, and regulate the growth of marijuana. If Ohioans approve of the measure, Ohio would become the fifth state in the U.S. to legalize marijuana.
While the measure did get enough signatures to appear on the November ballot, do Ohioans actually want marijuana to become legal? Public opinion of legalizing pot has changed drastically in recent years. According to a poll conducted last year, about 51 percent of respondents said that they support making adult marijuana possession in small quantities legal.
To garner support, ResponsibleOhio is focusing on promoting the many benefits of marijuana, such as its ability to treat Alzheimer's and other conditions like arthritis and epilepsy. The group also focuses on personal responsibility, comparing marijuana use to alcohol use – fine for adults when used responsibly.
Because of mandatory minimum sentences for drug crimes, many people are in prison right now because they were arrested for low-level, nonviolent marijuana offenses. According to the ACLU, in 2010, 52% of all drug arrests were for marijuana. In 2013, 88% of marijuana arrests were for possession only. That same year, 1.5 million people were arrested in the U.S. on nonviolent drug charges.
A drug bust for pot could mean losing your job or a number of other collateral consequences, such as loss of public benefits. Legalizing marijuana would drastically cut back on the bloated prison population, save money, and prevent people from being punished in a way that's disproportionate with the crime.
If you or someone you love has been arrested for a drug offense, The Koffel Law Firm can step in to help. We are passionate about treatment, rehabilitation, and fairness for all.


Our goal is to improve society today in order to build a better tomorrow for all.
ATN aims to unlock potential for employment and social prospects through education and training. The organisation was set up in July 1999 to address the educational disadvantage suffered by certain marginalised sections of the community.
provision of training and employment opportunities for people who are disadvantaged and less privileged in the labour market and community.
ATN is also running a number of courses at various locations across London, in collaborative partnership with a number of Colleges and other partners.
ATN has recently expanded into providing tuition in direct accordance with the National Curriculum. This enables ATN to diversify having years of experience in the adult education sector and now provide education for all ages ranging from primary, secondary to college.
Our programmes develop the skills and self-confidence that will give people of all ages from children to adults the best chance of succeeding in life.


text:
Thoughts on Family, Reading, and Ministry
NEW TESTAMENT 90
Lottie Moon (A Biographical Sketch): Smarter Than the Average Southern Bell
On January 31, 2012 January 30, 2012 By pastorjonathanIn Devotional, Missions
A year later Lottie was sent off to a boarding school entitled The Virginia Female Seminary at Botetourt Springs. The next year the school's title would change to the Hollins Institute. Lottie excelled in language studies at the school and in spite of a few lesser marks in other subjects; she gained a reputation for being a studious intellectual.[1]
Young Lottie Moon also had a lighter side. Late in the evening on March 31, 1955, Lottie snuck into the attic of the dormitory and navigated the rafters to the bell tower. She packed sheets and towels into the bell that was scheduled to ring out the daily regimen. The next day, April 1, 1955 the bell did not ring as scheduled and Lottie earned a place in school lore as an April fool's day prankster.[2]
In 1857 the Albemarle Female Institute opened in Charlottesville as a Female counterpart to the University of Virginia. Lottie was one of the first students in attendance and joined the university structure with a request to major in languages. She excelled in learning Greek and Latin and took many courses in more modern languages as well.[3]
Lottie earned a reputation as a prankster and developed a disposition against Christianity. In December of 1858 John A. Broadus, the pastor of the Charlottesville Church, lead a revival directed at the students in the area. She initially showed up to see "what that old fool had to say."[4] Yet engaged in a conversation with Broadus after the service and returned to her room to pray all night.[5] A group of students from the Albemarle Female Institute met early for prayer and prayed for Lottie's salvation early in the morning. To everyone's surprise Lottie showed up to the meeting. [6]
Lottie Moon made a public profession of faith on December 21, 1858 and was baptized the very next day. Lottie shared her testimony and stated that a barking dog had kept her up the night before. While she was lying there awake, her mind turned to considering the condition of her soul and she decided to give Christianity a fair investigation.[7]
Lottie continued to excel in her study of the languages. She became proficient in Greek, Latin, Italian, French and Spanish.[8] She stayed on one year after the required three years and ended up being one of the first women in the South to earn the equivalent of a MA degree. John Broadus noted that Lottie was "the most educated (or cultured) woman in the South."[9] Lottie completed her degree just a few short weeks before the first shots of the Civil War were fired and life in the South would never be the same.[10]
More Tomorrow.
[1] Allen. The New Lottie Moon Story, 23.
[2] Lawrence. 38.
[3] Ibid., 42-43.
[4] Sullivan, Chapter 1, Location 532. Kindle Electronic Edition.
[7] Allen. The New Lottie Moon Story, 35
[8] Ibid. 38-39.
[9] Ibid. 39.
[10] Sullivan, Chapter 1, Location 538. Kindle Electronic Edition.
biographical sketchBiographyInternational MissionsLottie MoonSingle WomanSouthern Baptist
Lottie Moon (A Biographical Sketch): Growing Up Lottie
Lottie Moon (A Biographical Sketch): From the Southern US to Northern China and Back Again
When Jesus asks you a question. (Matthew 22-24)
It's not what you do, it's what has been done for you (Matthew 19-21)
Would You Go After One Lost Sheep? (Matthew 16-18)
It's not what you do, it's what has been done for you (Matthew 19-21)
Philippians 4:8-9 (Devotional Thought)
What Was the Nature of the Persecution Mentioned in the Epistle to the Hebrews?
The Covenant with Levi Mentioned in Malachi
Categories Select Category About Jonathan (38) blogging (17) books (156) Christmas (1) dating (7) Devotional (341) discipleship (80) Facebook (1) Family (70) Fiction (5) History (5) Holiday (2) Judges (5) Just Thinking (26) Kingdom of God (14) leadership (45) Manhood (25) Ministry (55) Missions (11) Nehemiah (42) parenting (40) Prayer (15) Sermon (15) spiritual disciplines (31) student ministry (25) theology (5) Thursday Post (2) Time Management (6) Uncategorized (113) Video (18) Womanhood (12) worship (6)
When Jesus asks you a question. (Matthew 22-24) followjonathan.com/2021/01/15/whe… 21 hours ago
It's not what you do, it's what has been done for you (Matthew 19-21) followjonathan.com/2021/01/14/its… 1 day ago
Would You Go After One Lost Sheep? (Matthew 16-18) followjonathan.com/2021/01/13/wou… 2 days ago
Clean Hands or Clean Heart? (Matthew 13-15) followjonathan.com/2021/01/12/cle… 3 days ago
Judgement Day is Coming (Matthew 11-12) followjonathan.com/2021/01/11/jud… 4 days ago


The bangle should sit snug on your wrist and does not need to be opened and closed to be worn as this will cause the metal to become weak.
To determine a precise ring size the best method is to visit a local jeweller. Your fingers will be at their smallest in the morning and change throughout the day, depending on temperatures. The end of the day would be when your fingers are at their biggest so it is recommended to measure them at this time.


Many Americans are shocked to enter a European supermarket and find that eggs are stored outside of the fridge.
This is because authorities in most European countries say refrigerating eggs isn't necessary. But in the US, it is considered unsafe to store eggs at room temperature.
This leads some people to believe that Americans are overly cautious when it comes to egg storage, while others believe Europeans are too relaxed.
So who is right? As it turns out, both are.
Salmonella is a type of bacteria that lives in the intestines of many warm-blooded animals. It's perfectly safe when contained within the animal's intestinal tract, but it can cause serious illness if it enters the food supply.
An infection from Salmonella can cause unpleasant symptoms like vomiting and diarrhea and be especially dangerous — even fatal — for the very old, the very young or those with compromised immune systems ().
Common sources of Salmonella outbreaks are alfalfa sprouts, peanut butter, chicken and eggs. In the 1970s and 1980s, eggs were found to be responsible for 77% of Salmonella outbreaks in the US (, 3).
This prompted efforts to improve the safety of eggs, and the rates of infections have since decreased, although Salmonella outbreaks from eggs still occur (3).
An egg can be contaminated with Salmonella either externally, if bacteria penetrate the eggshell, or internally, if the hen itself carried Salmonella and the bacteria was transferred into the egg before the shell formed ().
How eggs are handled, stored and cooked is essential for preventing Salmonella outbreaks from contaminated eggs.
For example, storing eggs below 40°F (4°C) halts the growth of Salmonella, and cooking eggs to at least 160°F (71°C) kills any bacteria that is present.
While eggs aren't any different in the US and Europe, the way they're treated for Salmonella is. Therefore, whether your eggs need to be kept in the fridge or not really depends on how your country tackles Salmonella.
Bottom Line: Salmonella is a type of bacteria that is a common cause of foodborne illness. How countries treat eggs for Salmonella determines if they need to be refrigerated or not.
In the US, Salmonella is mostly treated externally. Before eggs are sold, they go through a sterilization process.
They are washed in hot, soapy water and sprayed with a disinfectant, killing any bacteria that might be on the shell (, ).
A handful of other countries, including Australia, Japan and Scandinavian countries, treat eggs the same way.
This method is highly effective at killing the bacteria found on egg shells. Unfortunately, it does nothing to kill bacteria that may already be present inside of the egg, which is often what makes people sick (, , ).
The washing process may also remove the cuticle of the egg, which is a thin layer on the eggshell that helps protect it.
If the cuticle is removed, any bacteria that come into contact with the egg after sterilization will more easily be able to penetrate the shell and contaminate the contents of the egg (, ).
While refrigeration does not kill bacteria, it reduces the likelihood of you becoming sick by keeping the number of bacteria limited. Refrigeration also makes it more difficult for bacteria to penetrate the eggshell (, ).
However, there is another important reason that eggs must be kept in the refrigerator in the US. To keep bacteria to a minimum, the FDA requires commercially sold eggs to be stored and transported below 45°F (7°C).
And once eggs have been refrigerated, they must always be kept refrigerated to prevent them from forming condensation if they warm up. The moisture makes it easier for bacteria to penetrate the eggshell.
So whether you are willing to take the risk of coming across a contaminated egg or not, the fact that eggs in the US are washed and refrigerated before purchase means they really should be kept that way.
Bottom Line: In the US and a few other countries, eggs are washed, sanitized and refrigerated quickly after being laid in order to minimize bacteria. Therefore, eggs must remain refrigerated.
Many European countries do not refrigerate their eggs, even though they experienced the same epidemic of Salmonella cases in the 1980s.
While the US chose to control Salmonella contamination through egg washing and refrigeration, many countries in Europe have chosen to improve sanitation and vaccinate hens against Salmonella, preventing infection in the first place (, ).
The UK is a shining example of this. After a mandatory campaign to vaccinate all egg-laying hens against the most common strain of Salmonella, the number of Salmonella cases in the country dropped to the lowest level in decades ().
Contrary to the US, washing and disinfecting eggs is illegal in the EU (Sweden and the Netherlands are exceptions) (14).
While this may seem unsanitary to Americans, the logic is that the egg cuticle and shell are left undamaged, functioning as a layer of defense against bacteria ().
In addition to the cuticle, egg whites also have natural defenses against bacteria, which can help protect the egg for up to three weeks (, ).
Therefore, it is considered unnecessary to refrigerate eggs.
In fact, the EU recommends that eggs be kept cool, but not refrigerated, in supermarkets in order to prevent eggs from warming up and forming that unwanted condensation during the trip home.
Because eggs in the EU are treated differently than in the US, it's fine to keep eggs out of the refrigerator as long as you plan to use them soon.
Bottom Line: In most European countries, Salmonella is kept under control with preventative measures like vaccination. It is usually illegal to wash eggs, so an egg's cuticle remains intact and they don't have to be refrigerated.
Even though you may not need to refrigerate your eggs, depending on where you live, you might want to.
This is because refrigeration can provide some benefits. However, it can also have drawbacks. Below are the pros and cons of egg refrigeration.
Storing your eggs in the refrigerator is the best way to keep bacteria under control.
As an added bonus, it also keeps eggs fresher for much longer than storing them at room temperature.
While a fresh egg stored at room temperature will start to decline in quality after a few days and need to be used within 1–3 weeks, eggs kept in the refrigerator will maintain quality and freshness for at least twice as long (, , 17).
Eggs can absorb odors and flavors from other foods in your fridge, such as freshly cut onions.
However, storing eggs in their carton and sealing foods with strong odors in airtight containers can prevent this from being a problem.
Surprisingly, where you store your eggs in the refrigerator can make a difference too.
Many people keep their eggs in the door of the refrigerator. However, this can subject them fluctuations in temperature every time you open the fridge, which could encourage bacterial growth and impair the egg's protective membrane ().
Therefore, keeping eggs on a shelf near the back of the refrigerator is best.
Lastly, some chefs claim that room-temperature eggs are the best for baking. Because of this, some suggest letting refrigerated eggs come to room temperature before using them.
If this is important to you, it is considered safe for eggs to be left at room temperature for up to two hours. However, you should be sure to cook them to a safe temperature afterward (18).
Bottom Line: Refrigeration keeps eggs fresh for more than twice as long as eggs kept at room temperature. But they must be stored properly to prevent taste and temperature changes.
It depends on where you live, since the way your country treats Salmonella determines whether eggs really need to be stored in the refrigerator or not.
In the US, fresh eggs need to be refrigerated. However, in many countries in Europe and around the world, it's fine to keep eggs at room temperature for a few weeks.
If you don't know whether the eggs you buy should be kept in the fridge or not, check with your local food safety authority to see what's recommended.
If you're still unsure, refrigeration is always the safest way to go.


Trade your RV at Parris RV Today!
Trying to sell your old RV, but not having much luck? Stop by Parris RV and sell your old RV to us! Our professional sales staff can take care of selling your RV for you! Its easy to start, just fill out the form below with all of the information that you know about your RV and we can start talking about what kind of deal we can make! Or, if you have any other questions about the process or any of our other services, you can contact us today.
What type of RV are you considering trading in?


text:
Will the Hindutva Government Let Supreme Court Function as an Independent Institution?
January 20, 2018 January 20, 2018 Urdu Media Monitor 3 Comments Featured, Hindutva, Indian judiciary, Supreme Court of India
By M Ghazali Khan
Following an unprecedented rebellion by four most senior judges of the Supreme Court of India against the Chief Justice, things are being described, business as usual and the rebellious judges have returned to their work.
According to the latest information Chief Justice Dipak Mishra had an half an hour long meeting with the rebellious judges.
'As you can see, the matter has been laid to rest and all court rooms in the Supreme Court are functioning normally,' Chairman of Bar Council of India (BCI), Manan Kumar Mishra, has assured.
This should be borne in mind that Mr Kumar is not only a BJP member but also a known Modi admirer who had earlier twitted that Modi was the reincarnation of Mahatma Gandhi's soul.
On 12 January 2018, the four judges had organised a press conference whereat making several allegations against the Chief Justice and going as far as saying that the manner in which he was running the Supreme Court posed a threat to the country's democracy. They emphasised that they were anguished to have to take this course.
Justice Chelameswar, who led the four-member team said, 'We don't want wise men saying 20 years from now that Justices Chelameswar, [Ranjan] Gogoi, [Madan B] Lokur and Kurian Joseph sold their souls and didn't do the right thing by our constitution.'
In a letter addressed to Chief Justice Misra, they accused him of assigning important cases selectively to benches 'with no rationale', implying thus that he had sought to influence the outcome.
They also expressed unhappiness with 'certain judicial orders' passed by the court, which they said 'adversely affected the overall functioning of the court'.
Citing a number of reasons of their grievances against Justice Misra, they made special reference to their requests to him for independent investigation into the mysterious death of a senior judge B H Loya, who was overseeing a case against ruling BJP's President and Prime Minister Narendra Modi's right-hand man Amit Shah.
During the anti-Muslim riots in Gujarat in 2002 under Narendra Modi as the Chief Minister, Amit Shah was the Home Minister of Gujarat. A leaked report by the British High Commission in India said that the carnage in Gujarat 'had all the hallmarks of ethnic cleansing.'
Amit Shah was arrested in 2010 for the extra-judicial killings of a petti criminal Sohrabuddin Sheikh and his wife Kauser Bi. Later he was released on bail but refused to appear before CBI (Central Bureau of Investigation) court hearing the case. The Judge, J T Utpat, who was hearing the case, was transferred and got replaced by Judge B H Loya.
Judge Loya then sent Amit Shah several orders to appear before the court but showing utter contempt he did not comply with even one of them. Lastly Judge Loya ordered Amit Shah to appear before the court on 31 October 2014. Despite being present in Mumbai Amit Shah defied court orders and did not appear. Judge Loya then issued a final deadline and asked Amit Shah to appear on 15 December 2014. However in extremely mysterious circumstances, the judge died on December 1, 2014. His family members and several of senior judges who have raised doubts and questions about the official narrative of Loya's death that he died of heart attack, have been demanding independent probe into the case.
The late Judge Loya's family told India's leading investigative magazine, The Caravan that the former Chief Justice of India, Mohit Shah, had offered a bribe of Rs 100 Crore (1 crore = 10 million) to Loya to rule in favour of Amit Shah.
The judge, M. B. Gosavi, who replaced Loya cleared Amit Shah of all the charges. Former Chief Justice P Sathasivam refused to accept an appeal against this decision and reopen the case. Soon after his retirement he was rewarded by being appointed as the Governor of Kerala. Justifying his acceptance of the Governorship h said, 'If I say no to this job (then), I have to do farming in my village. As a former Chief Justice of India I can have good relations with the state and the Centre and it will benefit the people of Kerala'.
There was a time when the Indian Supreme Court had as strong and as highly principled judges as the late Justice Hidayatullah.
After the sudden death of Zakir Hussain on 3 May 1969 the then Vice President V.V. Giri was installed as the acting President. Since he was going to contest the by-election for presidency he was in a dilemma whether to resign from the post of acting presidency or to quit as Vice President and then contest the election. So he contacted the Chief Justice of India Mr Hidayatullah. In his biography 'My Own Boswell' justice Hidayatullah writes that V.V. Giri contacted him and referring to his friendship with Mr Hidayatullah's father he made an informal remark and said that after resigning as acting President to be able to participate in the election for Presidency, he would make Hidayatullah as Acting President. But late Hidayatullah maintained a dignified posture and replied, 'You do what you want to do, the law will find its course itself.'
In this capacity V.V. Giri's second question was who should he address his resignation to. To this Justice Hidayatullah replied that to give advice did not come within the ambit of his duties as Chief Justice of India and he should contact Attorney General instead.
Relations between Supreme Court and the Central Government had started worsening as soon as the BJP Government came to power in 2014 when it refused to go by the recommendations of the collegiums of the Supreme Court in appointing former Solicitor General of India Gopal Subramaniam as Supreme Court Judge.
Relations between Supreme Court and the Central Government had started worsening as soon as the BJP Government came to power in 2014 when it refused to go by the recommendations of the collegiums of the Supreme Court in appointing former Solicitor General of India Gopal Subramaniam as Supreme Court Judge. Government's grudge and displeasure against Subramaniam were the reports he, as Supreme Court's amicus curie, had prepared against Amit Shah. Media reports suggested that this very collegium was forced to recommend the name of Uday Lalit, who had acted as Amit Shah's defence in the fake encounter of Sohrabuddin Sheikh and Tulsiram Prajapati that was readily approved by the government.
Attempts to manipulate probes by investigative agencies and influence the outcome of court cases by Indian governments is not new. However, as far as the Supreme Court is concerned, its judges have stood bravely before government pressures and have maintained exemplary transparency and independence by refusing to succumb to any political pressure whatsoever.
Marginalised and religious communities, particularly Muslims, who have to face worst discrimination almost in all departments, have until now expressed great confidence in the independence of the Supreme Court.
Even on the very day when, on 16 May 2014, the results of general elections declared Narendra Modi led BJP as the biggest winner, 11 Muslims from Gujarat, who had been awarded death sentences for Akshardham attack case and upheld by the Gujarat High Court, were honourably exonerated by the Supreme Court.
To cite yet another fresh example of impartiality and transparency of India's judiciary even in an atmosphere of today's anti-Muslim fervour encouraged by the Hindutva Government, this month a tribunal under the Prevention of Money Laundering Act restrained the Enforcement Directorate from taking possession of immovable assets that it has attached in connection with a money laundering case against televangelist Dr Zakir Naik. Criticising the agility and implying the partiality of the Directorate, the judge said, 'I can give you the names of 10 'babas' [Hindu priests] who have assets in excess of Rs 10,000 Crore each and who have criminal cases against them…Have you taken action against even one of them?…'
Only time will tell whether the brave judges taking a principled stand will be supported by fellow judges and lawyers in protecting the independence, sanctity and reputation of this hitherto highly respectable institution of India. The fact, however, is that if the filth of sectarian hatred is allowed to defile the sanctity of this great institution the worst victims of it will be religious minorities, specially the Muslims, and marginalised communities.
However, with the poison of Hindu supremacy spread by BJP led Government and with its members and sympathisers being elevated to key posts, the future of India's judiciary as an independent body does not look very bright. Government machinery is already working behind the scene to silence the family of late Judge Loya. At least they have succeeded in making his son Anju Loya hold a press conference in Mumbai and say the he had no doubt that his father died of heart attack. Although earlier in a handwritten letter to his family members and reproduced by The Caravan, describing Justice Mohit Shah's visit in February 2015 at the late judge's house, he had said, 'Today the Chief Justice of Maharashtra, Mr Mhhit Shah, came to meet us, after 2 ½ months of Dad's death. I could completely see the guilt on his face. I fear these politicians can harm any person from my family and I am also not powerful enough to face fight with them.'
Urdu version of this article appeared in several Urdu newspapers and news portals.
← Taj Mahal's Spiritual Message
UK Indian Diaspora Mark Republic Day by Protesting Against Hindutva Outside the High Commission →
3 thoughts on "Will the Hindutva Government Let Supreme Court Function as an Independent Institution?"
Mohammad Hassan
Even before the 4-noble judges spoke up, the environment in India had started eroding right in front of the IT-savvy digital India braggers, visitors to and from Google, Facebook, and Apple. None of these even questioned how come the chief of the Muslim genocide, aka, the then CM of Gujarat was left unscathed and selected few of the administration were penalized
as a token. Modi was not found guilty"personally" for those riots. Not only this "unbelievable" nonsense, he didn't even have the common sense to resign for the sake of moral responsibility. Arrogantly and belligerently he continued as CM. To the utter despise and shame of NRIs living outside India, the people of Gujarat continued electing Modi as their CM. And finally, in the 2014 general election, Modi had the audacity to self-nominate as PM on behalf of BJP. By this action, even before being elected he changed the Indian parliamentary system into an American presidential system. None raised, including the interpreter of the Constitution, viz., the Supreme Court of India. And 31/69 ratio the majority "subtly"gave the green light for Hindutva. Now we are hearing some rational "noises" here and there, the one from the esteemed 4 judges was one of them. Does it sound fair or just or nationalistic for India to you, the reader, not to me. Elsewhere (The Wire online) I have made the following comment. Will that make any difference? What I saw during the past week, I am sure the"majority" behind the "curtain" will re-vote for RSS-type stooges like PM Modi, CMUP, and the like in 2019, 2022, 2024. I find a change of heart among the majority of India, be they youthful or octogenarians. It is sad but true. Unless indians become sincere in their intention, honest in their action, ruthlessly honest and fair in execution. Worst is yet to come. Beware, my former
Co-countrymen. My Wire/Disqus comment for discussion was:
"I have a ?. Were these SC judges serving in 2002? At that time, the country of my birth declared PMNDM "so-called" not even "co-conspirator" a la GWB, president of my present residence who coined this phrase, in 2002, to win the midterm US Congress election that changed the democratic world forever and gave birth to what PMNDM is suffering from. I call it anti-Muslim agenda NOW and forever a la RSS. For Harvard guys, this is also called "Islamophobia" or "clash of civilizations". In that environment, the same SC declared Modi "not guilty". Later, under the most liberal Secy of State, US denies him the visa to enter the country. Hypocritically, however, allows Modi's financiers, supporters to hold a video (5K NRIs attending) conference for Modi @ MSG that was shamelessly attended by so-called NRIs, traveling the world on the US passport, including the countries in ME, Shia and Sunni alike, e.g., Muscat, Bahrain, KSA, UAE, among others. (Forthrightly, the selection has specific strategic reason behind it). I don't consider my readers "oxymorons" as PMO/RSS/BJP condones from the days of Haram(Ram)zada. This has changed the mindset in such a way that "majority has to win", ignoring the fact that Muslims ruled over India for over 800 years in the 20/80 ratios and gave India Taj as 1/7 wonder, its slave ruler gave GT road from Howrah to Peshawar. What did British India do in 200 years? Stole Kohinoor and other riches from here right under the eyes of the present majority and took it back home. RSS sided with them. So did Maharajas, Nawabs, Nizams, all feudal lords and following the English menace "divide and rule". Muslim kings/traders came to India to stay for good and burned their boats behind them and never sent any oil drop to ME, Central Asian nations, from where Babur came and is buried in Afghanistan. Historically, all the recently maligned "mogul kings", except Humayun, were born in India. They must be called Indians. Do we call Aryans (white pundits of J&K Germans?). To conclude, with due respect (Sadar Pranam) to you readers, India/Bharat/Hindustan is better off by being what it is, not what it wants others to call it. STOP being the Superpower, aspiring for a veto in SC (Security Council, UN, not Supreme Court of India). I have said enough to arouse your erudite thinking @ the moment. In replying, try to task yourself to be TASKED, where T=think, A=analyze, S=synthesize, K=know, EM=educate, and last but least D=develop anything you want, including the reply to my 2 cents worth of response. More if I hear substance. I am 80+. So, be kind to me, if you are a believer in ahimsa, love 2-legged animals. They gave birth to all humans, including you and me; plus, PMNDM, and UPCM whom I never saw (on TV) feeding his biological Mata. Yes, I did hear him touting emergency vans for "Cow mantas" while w/o oxygen innocent human children were suffocating to death in a city that he has represented over 1/3 of a century. Excuse me if my octogenarian mind/memory is failing me. I am consoled that later is better than never among 4 justices."
Pingback:IAMC Weekly News Roundup – January 22nd, 2018
Ahmad Rashid Shervani
Both, Mr M Ghazali Khan and Mr Mohammad Hassan, have placed incontrovertable facts before us and the opinions, feelings expressed by them are most valid, honest and sincere. However, the mischief (which both
have rightly condemned) is NOTHING new. It had been going on ever since I can remember. Since "Day One", we can say. There have been, roughly, about 500 communal riots every year since Independence. Almost invariably, the culprits were saved. In many cases the quilty were rewarded. And all this went on "right under the long noses of our "Super-Secularist" leaders. The current oppressors are declared communalists/fanatics/ fascists. We (at-least I) could not and did not even expect them to be any better. If anything, I expected them to be WORSE than they have yet revealed themselves as.
Unfortunately, even the best among us (such as Ghazali Saheb and Hassan Saheb) are NOT paying enough attention to our own (I mean our millat's) faults/blunders which are mainly responsible for landing us in the mess. Then how will we (I mean, our millat) try to get out of this mess. Just condemning "them" may give us some solace, may perhaps even be a kaar-e-thawaab, but it is NOT likely to benefit us (I mean, our millat).


text:
Swadlincote Hotels
Hotels in Swadlincote
photo by Noel Jackson
Top landmarks in Swadlincote
Catton HallReady for an education in local botany? Catton Hall should make your list of places to visit, located 5.2 mi (8.4 km) from central Swadlincote. Want to stretch your legs some more? Head to National Memorial Arboretum and Branston Water Park, both nearby.
Sharpe's Pottery MuseumIf museums are on your list of things to see in Swadlincote, then you might want to head to Sharpe's Pottery Museum. If you want to see more of the museums in Swadlincote, Claymills Victorian Pumping Station isn't far either.
Swadlincote Ski and Snowboard CentreSwadlincote Ski and Snowboard Centre is 2.6 mi (4.3 km) from central Swadlincote, why not stop by during your stay. If you have fun at Swadlincote Ski and Snowboard Centre, you'll love Twycross Zoo, which isn't far.
Find out more about Swadlincote
What's Swadlincote like?
Swadlincote is a welcoming city where you can spend time checking out the bars. Why not take time to see places like Donisthorpe Woodland Country Park and Saltersford Wood Country Park? In the surrounding area, popular sights include Twycross Zoo and National Memorial Arboretum.
Where are the best places to stay in Swadlincote?
Here are our travelers' top 2 places to stay in Swadlincote:
Bulls Head
3-star inn
• Free parking • Free WiFi • Restaurant • Indoor tennis court • An area shuttle
Best Western Appleby Park Hotel
Art Deco hotel in historical district
• Free parking • Free WiFi • Restaurant • Bar • Attentive staff
How to Get to Swadlincote
What are the closest airports to Swadlincote?
• Birmingham Airport (BHX), 20.6 mi (33.1 km) from central Swadlincote
• East Midlands (EMA), 11.9 mi (19.2 km) from central Swadlincote
• Nottingham (NQT), 24.1 mi (38.8 km) from central Swadlincote
Things to See and Do in Swadlincote
What is there to see in Swadlincote?
• Donisthorpe Woodland Country Park
• Saltersford Wood Country Park
What is there to do in Swadlincote?
• Swadlincote Ski and Snowboard Centre
• Sharpe's Pottery Museum
When is the best time to visit Swadlincote?
• Rainiest months: October, December, January, and November (average 3 inches of rainfall)